diff -x.info* -rc2P gsl-1.3/AUTHORS gsl-1.4/AUTHORS *** gsl-1.3/AUTHORS Sun Oct 6 21:46:23 2002 --- gsl-1.4/AUTHORS Tue Jul 22 15:20:10 2003 *************** *** 22,23 **** --- 22,24 ---- Tuomo Keskitalo (tuomo.keskitalo@iki.fi) - multidimensional minimization Ivo Alxneit (ivo.alxneit@psi.ch) - multidimensional minimization + Jason H. Stover (jason@sakla.net) - cumulative distribution functions \ No newline at end of file diff -x.info* -rc2P gsl-1.3/BUGS gsl-1.4/BUGS *** gsl-1.3/BUGS Fri Dec 13 12:02:03 2002 --- gsl-1.4/BUGS Tue Aug 12 11:12:05 2003 *************** *** 37,56 **** ---------------------------------------------------------------------- - BUG#3 -- gsl_sf_bessel_Jn fails for large argument - - From: Rodolphe Conan - To: gsl list - Subject: Re: Bessel function bug or limitation? - Date: Tue, 09 Apr 2002 09:52:19 +0100 - - Rodolphe Conan writes: - > cout << "besselj(2,15000)=" << gsl_sf_bessel_Jn(2,15000) << endl; - > and obtained: - > gsl: bessel.c:531: ERROR: error - > Abort (core dumped) - - One of the continued fraction computations is breaking down - - ---------------------------------------------------------------------- BUG#4 -- gsl_linalg_solve_symm_cyc_tridiag() crashes --- 37,40 ---- *************** *** 79,119 **** ---------------------------------------------------------------------- - BUG#7 -- gsl_sf_coupling_3j loses accuracy for large arguments - - From: Filip Floegel - Subject: gsl_sf_coupling_3j - Date: Wed, 2 Oct 2002 17:45:52 +0200 - - gsl_sf_coupling_3j doesn't work properly for large - angular mementa like j1=j2=j3=40 m1=m2=m3=0 !!! - - gsl_sf_coupling_3j_e(80,80,80,0,0,0,&result) - - which correspond to j1=j2=j3=40 m1=m2=m3=0 - - gives me: - - result.val = 0.0625 - result.err = 0.172766 - - mathematica gives me: - - N[ThreeJSymbol[{40,0},{40,0},{40,0}]] = 0.0149685 - - my guess is that gamma.c which is used for calculating fractional - numbers probably diverges for large integers. - - Note from Serge Winitzki : - - The package "matpack" (www.matpack.de) includes many special functions, - also the 3j symbols. They refer to some quite complicated numerical - methods using recursion relations to get the right answers for large - momenta, and to 1975-1976 papers by Schulten and Gordon for the - description of the algorithms. The papers can be downloaded for free at - http://www.ks.uiuc.edu/Publications/Papers/ - - - ---------------------------------------------------------------------- - BUG#8 -- inexact coefficients in rk8pd.c --- 63,66 ---- *************** *** 171,192 **** ---------------------------------------------------------------------- - - BUG#9 -- problem with multimin example - - From: Thomas Kunert - To: gsl-discuss@sources.redhat.com - Subject: Re: multimin example - - The example for multimin doesn't give me the expected output but a much - worse result. Any idea about the reason? I have gsl 1.2 on Mandrake 8.2. - - 1 4.99629 6.99072 687.84780 - 2 4.98886 6.97215 683.55456 - 3 4.97400 6.93501 675.01278 - 4 4.94429 6.86073 658.10798 - - It's true that there is a problem there, but I don't know why. - - ---------------------------------------------------------------------- BUG#10 -- gsl_sf_fermi_dirac_int error estimates --- 118,121 ---- *************** *** 296,297 **** --- 225,285 ---- ---------------------------------------------------------------------- + + BUG#13 -- gsl_diff functions don't handle large arguments + + The step size in the gsl_diff functions is fixed, and so does not work + for large arguments due to loss of precision. + + > From: eknecronzontas + > Subject: Unusual behaviour in gsl_diff_central? + > Date: Tue, 1 Apr 2003 06:36:38 -0800 (PST) + > + > Hello! + > + > I notice that gsl_diff_central seems to fail + > for large values of the function argument (see code + > below). (I am using gsl 1.3 on Redhat 6.2.) I would + > expect it to return a non-zero value in this case, + > but it returns zero, in spite of trying to evaluate + > the function at x=NaN. + > Am I missing something here? + > + > Thanks, + > Andrew Steiner + > + > double testfun(double x, void *pa) { + > return sin(x); + > } + > + > int main(void) { + > void *vp=0; + > int val; + > double res, err; + > + > gsl_function *gslfunc=new gsl_function; + > gslfunc->function=testfun; + > gslfunc->params=vp; + > + > cout.setf(ios::scientific); + > cout.precision(10); + > + > val=gsl_diff_central(gslfunc,1.0e5,&res,&err); + > cout << val << " " << res << " " << err << " " << + > cos(1.0e5) << endl; + > val=gsl_diff_central(gslfunc,1.0e10,&res,&err); + > cout << val << " " << res << " " << err << " " << + > cos(1.0e10) << endl; + > + > return 0; + > + > } + + ---------------------------------------------------------------------- + BUG#14 -- qagil + + The extrapolation used in qags gives negative results when integrating + the small tails of probability distributions using qagil, even though + each individual term in the sequence is positive and increasing (!). + This is a feature of the original quadpack and appears to be due to + the extrapolation algorithm, which should probably be tweaked to avoid + this undesirable behavior. diff -x.info* -rc2P gsl-1.3/ChangeLog gsl-1.4/ChangeLog *** gsl-1.3/ChangeLog Sun Dec 15 14:32:51 2002 --- gsl-1.4/ChangeLog Tue Jun 17 21:05:10 2003 *************** *** 1,2 **** --- 1,28 ---- + 2003-06-17 Brian Gough + + * configure.ac: converted configure.in to autoconf 2.5x, involved + extensive renaming macros of HAVE_... to HAVE_DECL_.. and changing + usage from #ifdef HAVE to #if HAVE + + 2003-06-16 Brian Gough + + * gsl/Makefile.am (header-links): added a test for the existing + file to avoid spurious error messages when making the symlinks + + 2003-06-12 Brian Gough + + * configure.in: Tidying up, removed old test for bug in gcc 2.95 + on PPC, removed OS/2 warning, removed references to clock function + since benchmark programs are not shipped + + 2003-03-06 Brian Gough + + * gsl_types.h: changed from internal macro _DLL to GSL_DLL + + 2003-02-09 Brian Gough + + * configure.in: added [] quotes in AC_TRY_COMPILE to protect + nested macros + 2002-11-24 Brian Gough diff -x.info* -rc2P gsl-1.3/INSTALL gsl-1.4/INSTALL *** gsl-1.3/INSTALL Mon Dec 9 21:19:59 2002 --- gsl-1.4/INSTALL Tue Aug 12 13:34:54 2003 *************** *** 21,26 **** ./configure --disable-shared ! This is recommended if you encounter problems building the library, ! because some platforms do not support shared libraries. For notes about problems with specific platforms and compilers see the --- 21,26 ---- ./configure --disable-shared ! If you encounter problems building the library try using the above ! option, because some platforms do not support shared libraries. For notes about problems with specific platforms and compilers see the *************** *** 89,92 **** --- 89,105 ---- meantime compile without -g instead if you need to reduce the file size. + 4) The configure script can fail with a segmentation fault on bash-2.01 + + $ ./configure + Segmentation fault + + This is due to a bug in bash, related to the MAIL environment + variable. To work around it use + + $ unset ENV MAIL MAILPATH + $ ./configure + + which should avoid the problem. + Hints for AIX ============= *************** *** 145,149 **** configuration option: ! CFLAGS="-Ae -O" ./configure --- 158,164 ---- configuration option: ! CFLAGS="-Ae" ./configure ! ! To switch on optimization use CFLAGS="-Ae -O". *************** *** 153,169 **** For the Pentium 4 with GCC-3.2 the flags, ! CFLAGS="-O2 -march=pentium4 -mfpmath=sse -msse2" ! increase performance by 33% (reported by Sam Halliday ) Hints for IRIX (SGI) ==================== ! The library should be compiled with the following option, ! ! -OPT:IEEE_NaN_inf=ON ! ! to ensure correct IEEE arithmetic. The tests in sys/ will fail ! without this option. The older deprecated option -OPT:IEEE_comparisons=ON will also work. --- 168,184 ---- For the Pentium 4 with GCC-3.2 the flags, ! CFLAGS="-O2 -march=pentium4 -mfpmath=sse -msse -msse2" ! ! increase performance (as reported by Sam Halliday ). ! Note that P3 machines can also use the above CFLAGS, if the "-msse2" ! is removed and "pentium4" is changed to "pentium3". Hints for IRIX (SGI) ==================== ! The library should be compiled with the CFLAGS option ! -OPT:IEEE_NaN_inf=ON to ensure correct IEEE arithmetic. The tests in ! sys/ will fail without this option. The older deprecated option -OPT:IEEE_comparisons=ON will also work. *************** *** 225,229 **** =========================== ! With Microsoft Visual C++, see the directory msvc/ in the CVS repository. Hints for OpenBSD --- 240,246 ---- =========================== ! A separate version of the library is available for Microsoft Visual ! C++. See the website http://sources.redhat.com/gsl/ or the directory ! msvc/ in the CVS repository. Hints for OpenBSD *************** *** 252,257 **** compiling correctly (e.g. the test program in the blas directory gives a segmentation fault when run). This problem is fixed in recent ! versions of GCC. GSL now includes an autoconf test which detects the ! problem. Hints for Solaris --- 269,273 ---- compiling correctly (e.g. the test program in the blas directory gives a segmentation fault when run). This problem is fixed in recent ! versions of GCC. Hints for Solaris diff -x.info* -rc2P gsl-1.3/Makefile.am gsl-1.4/Makefile.am *** gsl-1.3/Makefile.am Thu Jul 18 18:49:40 2002 --- gsl-1.4/Makefile.am Tue Jul 29 19:50:29 2003 *************** *** 3,9 **** # AUTOMAKE_OPTIONS = readme-alpha ! SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit statistics siman sum integration interpolation histogram ode-initval roots multiroots min multimin monte ntuple diff doc ! SUBLIBS = block/libgslblock.la blas/libgslblas.la complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la eigen/libgsleigen.la err/libgslerr.la fft/libgslfft.la fit/libgslfit.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multifit/libgslmultifit.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ntuple/libgslntuple.la ode-initval/libgslodeiv.la permutation/libgslpermutation.la combination/libgslcombination.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la test/libgsltest.la utils/libutils.la vector/libgslvector.la pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h --- 3,9 ---- # AUTOMAKE_OPTIONS = readme-alpha ! SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit statistics siman sum integration interpolation histogram ode-initval roots multiroots min multimin monte ntuple diff cdf doc ! SUBLIBS = block/libgslblock.la blas/libgslblas.la complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la eigen/libgsleigen.la err/libgslerr.la fft/libgslfft.la fit/libgslfit.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multifit/libgslmultifit.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ntuple/libgslntuple.la ode-initval/libgslodeiv.la permutation/libgslpermutation.la combination/libgslcombination.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la test/libgsltest.la utils/libutils.la vector/libgslvector.la cdf/libgslcdf.la pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h *************** *** 14,18 **** pkgconfig_DATA= gsl.pc ! EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.in THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh lib_LTLIBRARIES = libgsl.la --- 14,18 ---- pkgconfig_DATA= gsl.pc ! EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.ac THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh lib_LTLIBRARIES = libgsl.la diff -x.info* -rc2P gsl-1.3/Makefile.in gsl-1.4/Makefile.in *** gsl-1.3/Makefile.in Wed Dec 18 22:36:20 2002 --- gsl-1.4/Makefile.in Thu Aug 14 12:28:36 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,57 **** # PARTICULAR PURPOSE. ! # AUTOMAKE_OPTIONS = readme-alpha ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = . ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,35 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ ! # AUTOMAKE_OPTIONS = readme-alpha srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 60,71 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 38,60 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 73,93 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit statistics siman sum integration interpolation histogram ode-initval roots multiroots min multimin monte ntuple diff doc ! SUBLIBS = block/libgslblock.la blas/libgslblas.la complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la eigen/libgsleigen.la err/libgslerr.la fft/libgslfft.la fit/libgslfit.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multifit/libgslmultifit.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ntuple/libgslntuple.la ode-initval/libgslodeiv.la permutation/libgslpermutation.la combination/libgslcombination.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la test/libgsltest.la utils/libutils.la vector/libgslvector.la pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h --- 62,150 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ ! SUBDIRS = gsl utils sys test err const complex cheb block vector matrix permutation combination sort ieee-utils cblas blas linalg eigen specfunc dht qrng rng randist fft poly fit multifit statistics siman sum integration interpolation histogram ode-initval roots multiroots min multimin monte ntuple diff cdf doc ! SUBLIBS = block/libgslblock.la blas/libgslblas.la complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la diff/libgsldiff.la eigen/libgsleigen.la err/libgslerr.la fft/libgslfft.la fit/libgslfit.la histogram/libgslhistogram.la ieee-utils/libgslieeeutils.la integration/libgslintegration.la interpolation/libgslinterpolation.la linalg/libgsllinalg.la matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la multifit/libgslmultifit.la multimin/libgslmultimin.la multiroots/libgslmultiroots.la ntuple/libgslntuple.la ode-initval/libgslodeiv.la permutation/libgslpermutation.la combination/libgslcombination.la poly/libgslpoly.la qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la test/libgsltest.la utils/libutils.la vector/libgslvector.la cdf/libgslcdf.la pkginclude_HEADERS = gsl_math.h gsl_pow_int.h gsl_nan.h gsl_machine.h gsl_mode.h gsl_precision.h gsl_types.h gsl_version.h *************** *** 98,102 **** pkgconfig_DATA = gsl.pc ! EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.in THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh lib_LTLIBRARIES = libgsl.la --- 155,159 ---- pkgconfig_DATA = gsl.pc ! EXTRA_DIST = autogen.sh gsl-config.in gsl.pc.in configure.ac THANKS BUGS gsl.spec.in gsl.m4 test_gsl_histogram.sh lib_LTLIBRARIES = libgsl.la *************** *** 119,246 **** check_SCRIPTS = test_gsl_histogram.sh TESTS = test_gsl_histogram.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h ! CONFIG_CLEAN_FILES = gsl-config gsl.pc gsl_version.h gsl.spec ! LTLIBRARIES = $(lib_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgsl_la_DEPENDENCIES = block/libgslblock.la blas/libgslblas.la \ ! complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la \ ! diff/libgsldiff.la eigen/libgsleigen.la err/libgslerr.la \ ! fft/libgslfft.la fit/libgslfit.la histogram/libgslhistogram.la \ ! ieee-utils/libgslieeeutils.la integration/libgslintegration.la \ ! interpolation/libgslinterpolation.la linalg/libgsllinalg.la \ ! matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la \ ! multifit/libgslmultifit.la multimin/libgslmultimin.la \ ! multiroots/libgslmultiroots.la ntuple/libgslntuple.la \ ! ode-initval/libgslodeiv.la permutation/libgslpermutation.la \ ! combination/libgslcombination.la poly/libgslpoly.la qrng/libgslqrng.la \ ! randist/libgslrandist.la rng/libgslrng.la roots/libgslroots.la \ ! siman/libgslsiman.la sort/libgslsort.la specfunc/libgslspecfunc.la \ ! statistics/libgslstatistics.la sum/libgslsum.la sys/libgslsys.la \ ! test/libgsltest.la utils/libutils.la vector/libgslvector.la ! libgsl_la_OBJECTS = version.lo ! bin_PROGRAMS = gsl-randist$(EXEEXT) gsl-histogram$(EXEEXT) ! PROGRAMS = $(bin_PROGRAMS) ! ! gsl_randist_OBJECTS = gsl-randist.$(OBJEXT) ! gsl_randist_DEPENDENCIES = libgsl.la cblas/libgslcblas.la ! gsl_randist_LDFLAGS = ! gsl_histogram_OBJECTS = gsl-histogram.$(OBJEXT) ! gsl_histogram_DEPENDENCIES = libgsl.la cblas/libgslcblas.la ! gsl_histogram_LDFLAGS = ! SCRIPTS = $(bin_SCRIPTS) ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! DATA = $(m4data_DATA) $(pkgconfig_DATA) ! ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = README ./stamp-h.in AUTHORS COPYING ChangeLog INSTALL \ ! Makefile.am Makefile.in NEWS THANKS TODO acconfig.h aclocal.m4 \ ! config.guess config.h.in config.sub configure configure.in \ ! gsl-config.in gsl.pc.in gsl.spec.in gsl_version.h.in install-sh \ ! ltmain.sh mdate-sh missing mkinstalldirs ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar ! GZIP_ENV = --best ! SOURCES = $(libgsl_la_SOURCES) $(gsl_randist_SOURCES) $(gsl_histogram_SOURCES) ! OBJECTS = $(libgsl_la_OBJECTS) $(gsl_randist_OBJECTS) $(gsl_histogram_OBJECTS) - all: all-redirect .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in ! cd $(srcdir) && $(ACLOCAL) ! config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck ! $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) ! config.h: stamp-h ! @if test ! -f $@; then \ ! rm -f stamp-h; \ ! $(MAKE) stamp-h; \ ! else :; fi ! stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES= CONFIG_HEADERS=config.h \ ! $(SHELL) ./config.status ! @echo timestamp > stamp-h 2> /dev/null ! $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in @if test ! -f $@; then \ ! rm -f $(srcdir)/stamp-h.in; \ ! $(MAKE) $(srcdir)/stamp-h.in; \ else :; fi - $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h - cd $(top_srcdir) && $(AUTOHEADER) - @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null ! mostlyclean-hdr: ! clean-hdr: distclean-hdr: ! -rm -f config.h ! ! maintainer-clean-hdr: gsl-config: $(top_builddir)/config.status gsl-config.in ! cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status gsl.pc: $(top_builddir)/config.status gsl.pc.in ! cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status gsl_version.h: $(top_builddir)/config.status gsl_version.h.in ! cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status gsl.spec: $(top_builddir)/config.status gsl.spec.in ! cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-libLTLIBRARIES: ! ! clean-libLTLIBRARIES: ! -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ! ! distclean-libLTLIBRARIES: ! ! maintainer-clean-libLTLIBRARIES: ! install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) --- 176,296 ---- check_SCRIPTS = test_gsl_histogram.sh TESTS = test_gsl_histogram.sh + subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h ! CONFIG_CLEAN_FILES = gsl-config gsl.pc gsl_version.h gsl.spec ! LTLIBRARIES = $(lib_LTLIBRARIES) ! libgsl_la_DEPENDENCIES = block/libgslblock.la blas/libgslblas.la \ ! complex/libgslcomplex.la cheb/libgslcheb.la dht/libgsldht.la \ ! diff/libgsldiff.la eigen/libgsleigen.la err/libgslerr.la \ ! fft/libgslfft.la fit/libgslfit.la histogram/libgslhistogram.la \ ! ieee-utils/libgslieeeutils.la integration/libgslintegration.la \ ! interpolation/libgslinterpolation.la linalg/libgsllinalg.la \ ! matrix/libgslmatrix.la min/libgslmin.la monte/libgslmonte.la \ ! multifit/libgslmultifit.la multimin/libgslmultimin.la \ ! multiroots/libgslmultiroots.la ntuple/libgslntuple.la \ ! ode-initval/libgslodeiv.la permutation/libgslpermutation.la \ ! combination/libgslcombination.la poly/libgslpoly.la \ ! qrng/libgslqrng.la randist/libgslrandist.la rng/libgslrng.la \ ! roots/libgslroots.la siman/libgslsiman.la sort/libgslsort.la \ ! specfunc/libgslspecfunc.la statistics/libgslstatistics.la \ ! sum/libgslsum.la sys/libgslsys.la test/libgsltest.la \ ! utils/libutils.la vector/libgslvector.la cdf/libgslcdf.la ! am_libgsl_la_OBJECTS = version.lo ! libgsl_la_OBJECTS = $(am_libgsl_la_OBJECTS) ! bin_PROGRAMS = gsl-randist$(EXEEXT) gsl-histogram$(EXEEXT) ! PROGRAMS = $(bin_PROGRAMS) ! ! am_gsl_histogram_OBJECTS = gsl-histogram.$(OBJEXT) ! gsl_histogram_OBJECTS = $(am_gsl_histogram_OBJECTS) ! gsl_histogram_DEPENDENCIES = libgsl.la cblas/libgslcblas.la ! gsl_histogram_LDFLAGS = ! am_gsl_randist_OBJECTS = gsl-randist.$(OBJEXT) ! gsl_randist_OBJECTS = $(am_gsl_randist_OBJECTS) ! gsl_randist_DEPENDENCIES = libgsl.la cblas/libgslcblas.la ! gsl_randist_LDFLAGS = ! SCRIPTS = $(bin_SCRIPTS) ! ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I. ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgsl_la_SOURCES) $(gsl_histogram_SOURCES) \ ! $(gsl_randist_SOURCES) ! DATA = $(m4data_DATA) $(pkgconfig_DATA) ! ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! ! RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ ! ps-recursive install-info-recursive uninstall-info-recursive \ ! all-recursive install-data-recursive install-exec-recursive \ ! installdirs-recursive install-recursive uninstall-recursive \ ! check-recursive installcheck-recursive ! DIST_COMMON = README $(noinst_HEADERS) $(pkginclude_HEADERS) AUTHORS \ ! COPYING ChangeLog INSTALL Makefile.am Makefile.in NEWS THANKS \ ! TODO acconfig.h aclocal.m4 config.guess config.h.in config.sub \ ! configure configure.ac depcomp gsl-config.in gsl.pc.in \ ! gsl.spec.in gsl_version.h.in install-sh ltmain.sh mdate-sh \ ! missing mkinstalldirs ! DIST_SUBDIRS = $(SUBDIRS) ! SOURCES = $(libgsl_la_SOURCES) $(gsl_histogram_SOURCES) $(gsl_randist_SOURCES) ! all: config.h ! $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ! configure.lineno ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) ! $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck ! $(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.ac ! cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) ! ! config.h: stamp-h1 @if test ! -f $@; then \ ! rm -f stamp-h1; \ ! $(MAKE) stamp-h1; \ else :; fi ! stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status ! @rm -f stamp-h1 ! cd $(top_builddir) && $(SHELL) ./config.status config.h ! $(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.ac $(ACLOCAL_M4) $(top_srcdir)/acconfig.h ! cd $(top_srcdir) && $(AUTOHEADER) ! touch $(srcdir)/config.h.in distclean-hdr: ! -rm -f config.h stamp-h1 gsl-config: $(top_builddir)/config.status gsl-config.in ! cd $(top_builddir) && $(SHELL) ./config.status $@ gsl.pc: $(top_builddir)/config.status gsl.pc.in ! cd $(top_builddir) && $(SHELL) ./config.status $@ gsl_version.h: $(top_builddir)/config.status gsl_version.h.in ! cd $(top_builddir) && $(SHELL) ./config.status $@ gsl.spec: $(top_builddir)/config.status gsl.spec.in ! cd $(top_builddir) && $(SHELL) ./config.status $@ ! libLTLIBRARIES_INSTALL = $(INSTALL) install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) *************** *** 248,253 **** @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ ! echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ ! $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ else :; fi; \ done --- 298,304 ---- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ ! $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ else :; fi; \ done *************** *** 255,325 **** uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) ! list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< ! ! mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: ! ! distclean-compile: ! -rm -f *.tab.c ! ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! ! mostlyclean-libtool: ! -rm -f *.lo ! ! clean-libtool: ! -rm -rf .libs _libs ! ! distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgsl.la: $(libgsl_la_OBJECTS) $(libgsl_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgsl_la_LDFLAGS) $(libgsl_la_OBJECTS) $(libgsl_la_LIBADD) $(LIBS) ! ! mostlyclean-binPROGRAMS: ! ! clean-binPROGRAMS: ! -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) ! ! distclean-binPROGRAMS: ! ! maintainer-clean-binPROGRAMS: ! install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ ! if test -f $$p; then \ ! echo " $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ ! $(LIBTOOL) --mode=install $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ else :; fi; \ done --- 306,337 ---- uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) ! @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! p="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ ! $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done ! clean-libLTLIBRARIES: ! -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ! @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ! test "$$dir" = "$$p" && dir=.; \ ! echo "rm -f \"$${dir}/so_locations\""; \ ! rm -f "$${dir}/so_locations"; \ ! done ! libgsl.la: $(libgsl_la_OBJECTS) $(libgsl_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libgsl_la_LDFLAGS) $(libgsl_la_OBJECTS) $(libgsl_la_LIBADD) $(LIBS) ! binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_PROGRAMS)'; for p in $$list; do \ ! p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! if test -f $$p \ ! || test -f $$p1 \ ! ; then \ ! f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ ! echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ ! $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ else :; fi; \ done *************** *** 327,412 **** uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) ! list='$(bin_PROGRAMS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ done ! gsl-randist$(EXEEXT): $(gsl_randist_OBJECTS) $(gsl_randist_DEPENDENCIES) ! @rm -f gsl-randist$(EXEEXT) ! $(LINK) $(gsl_randist_LDFLAGS) $(gsl_randist_OBJECTS) $(gsl_randist_LDADD) $(LIBS) ! ! gsl-histogram$(EXEEXT): $(gsl_histogram_OBJECTS) $(gsl_histogram_DEPENDENCIES) @rm -f gsl-histogram$(EXEEXT) $(LINK) $(gsl_histogram_LDFLAGS) $(gsl_histogram_OBJECTS) $(gsl_histogram_LDADD) $(LIBS) ! install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_SCRIPTS)'; for p in $$list; do \ ! if test -f $$p; then \ ! echo " $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ ! $(INSTALL_SCRIPT) $$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ ! else if test -f $(srcdir)/$$p; then \ ! echo " $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`"; \ ! $(INSTALL_SCRIPT) $(srcdir)/$$p $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ ! else :; fi; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) ! list='$(bin_SCRIPTS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(bindir)/`echo $$p|sed '$(transform)'`; \ done install-m4dataDATA: $(m4data_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(m4datadir) @list='$(m4data_DATA)'; for p in $$list; do \ ! if test -f $(srcdir)/$$p; then \ ! echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(m4datadir)/$$p"; \ ! $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(m4datadir)/$$p; \ ! else if test -f $$p; then \ ! echo " $(INSTALL_DATA) $$p $(DESTDIR)$(m4datadir)/$$p"; \ ! $(INSTALL_DATA) $$p $(DESTDIR)$(m4datadir)/$$p; \ ! fi; fi; \ done uninstall-m4dataDATA: @$(NORMAL_UNINSTALL) ! list='$(m4data_DATA)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(m4datadir)/$$p; \ done ! install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir) @list='$(pkgconfig_DATA)'; for p in $$list; do \ ! if test -f $(srcdir)/$$p; then \ ! echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p"; \ ! $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkgconfigdir)/$$p; \ ! else if test -f $$p; then \ ! echo " $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p"; \ ! $(INSTALL_DATA) $$p $(DESTDIR)$(pkgconfigdir)/$$p; \ ! fi; fi; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) ! list='$(pkgconfig_DATA)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgconfigdir)/$$p; \ done ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done --- 339,458 ---- uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) ! @list='$(bin_PROGRAMS)'; for p in $$list; do \ ! f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ ! echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ ! rm -f $(DESTDIR)$(bindir)/$$f; \ done ! clean-binPROGRAMS: ! @list='$(bin_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! gsl-histogram$(EXEEXT): $(gsl_histogram_OBJECTS) $(gsl_histogram_DEPENDENCIES) @rm -f gsl-histogram$(EXEEXT) $(LINK) $(gsl_histogram_LDFLAGS) $(gsl_histogram_OBJECTS) $(gsl_histogram_LDADD) $(LIBS) ! gsl-randist$(EXEEXT): $(gsl_randist_OBJECTS) $(gsl_randist_DEPENDENCIES) ! @rm -f gsl-randist$(EXEEXT) ! $(LINK) $(gsl_randist_LDFLAGS) $(gsl_randist_OBJECTS) $(gsl_randist_LDADD) $(LIBS) ! binSCRIPT_INSTALL = $(INSTALL_SCRIPT) install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(bindir) @list='$(bin_SCRIPTS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! if test -f $$d$$p; then \ ! f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f"; \ ! $(binSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(bindir)/$$f; \ ! else :; fi; \ done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) ! @list='$(bin_SCRIPTS)'; for p in $$list; do \ ! f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ ! echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ ! rm -f $(DESTDIR)$(bindir)/$$f; \ done + mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + + distclean-compile: + -rm -f *.tab.c + + .c.o: + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + + .c.obj: + $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + + .c.lo: + $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs + + distclean-libtool: + -rm -f libtool + uninstall-info-am: + m4dataDATA_INSTALL = $(INSTALL_DATA) install-m4dataDATA: $(m4data_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(m4datadir) @list='$(m4data_DATA)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f"; \ ! $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f; \ done uninstall-m4dataDATA: @$(NORMAL_UNINSTALL) ! @list='$(m4data_DATA)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(m4datadir)/$$f"; \ ! rm -f $(DESTDIR)$(m4datadir)/$$f; \ done ! pkgconfigDATA_INSTALL = $(INSTALL_DATA) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgconfigdir) @list='$(pkgconfig_DATA)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f"; \ ! $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) ! @list='$(pkgconfig_DATA)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgconfigdir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgconfigdir)/$$f; \ done ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done *************** *** 417,427 **** # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. ! ! @SET_MAKE@ ! ! all-recursive install-data-recursive install-exec-recursive \ ! installdirs-recursive install-recursive uninstall-recursive \ ! check-recursive installcheck-recursive info-recursive dvi-recursive: ! @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ --- 463,468 ---- # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. ! $(RECURSIVE_TARGETS): ! @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ *************** *** 443,453 **** mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: ! @set fnord $(MAKEFLAGS); amf=$$2; \ dot_seen=no; \ ! rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ ! rev="$$subdir $$rev"; \ ! test "$$subdir" != "." || dot_seen=yes; \ done; \ ! test "$$dot_seen" = "no" && rev=". $$rev"; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ --- 484,499 ---- mostlyclean-recursive clean-recursive distclean-recursive \ maintainer-clean-recursive: ! @set fnord $$MAKEFLAGS; amf=$$2; \ dot_seen=no; \ ! case "$@" in \ ! distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ ! *) list='$(SUBDIRS)' ;; \ ! esac; \ ! rev=''; for subdir in $$list; do \ ! if test "$$subdir" = "."; then :; else \ ! rev="$$subdir $$rev"; \ ! fi; \ done; \ ! rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ *************** *** 465,627 **** test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ ! if test "$$subdir" = .; then :; else \ ! test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ ! fi; \ done; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) - top_distdir = $(distdir) ! # This target untars the dist file and tries a VPATH configuration. Then ! # it guarantees that the distribution is self-contained by making another ! # tarfile. ! distcheck: dist ! -rm -rf $(distdir) ! GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz ! mkdir $(distdir)/=build ! mkdir $(distdir)/=inst ! dc_install_base=`cd $(distdir)/=inst && pwd`; \ ! cd $(distdir)/=build \ ! && ../configure --srcdir=.. --prefix=$$dc_install_base \ ! && $(MAKE) $(AM_MAKEFLAGS) \ ! && $(MAKE) $(AM_MAKEFLAGS) dvi \ ! && $(MAKE) $(AM_MAKEFLAGS) check \ ! && $(MAKE) $(AM_MAKEFLAGS) install \ ! && $(MAKE) $(AM_MAKEFLAGS) installcheck \ ! && $(MAKE) $(AM_MAKEFLAGS) dist ! -rm -rf $(distdir) ! @banner="$(distdir).tar.gz is ready for distribution"; \ ! dashes=`echo "$$banner" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! echo "$$dashes" ! dist: distdir ! -chmod -R a+r $(distdir) ! GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) ! -rm -rf $(distdir) ! dist-all: distdir ! -chmod -R a+r $(distdir) ! GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) ! -rm -rf $(distdir) distdir: $(DISTFILES) ! -rm -rf $(distdir) mkdir $(distdir) ! -chmod 777 $(distdir) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done ! for subdir in $(SUBDIRS); do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ ! chmod 777 $(distdir)/$$subdir; \ ! (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ || exit 1; \ fi; \ done ! check-TESTS: $(TESTS) ! @failed=0; all=0; \ ! srcdir=$(srcdir); export srcdir; \ ! for tst in $(TESTS); do \ ! if test -f $$tst; then dir=.; \ ! else dir="$(srcdir)"; fi; \ ! if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ ! all=`expr $$all + 1`; \ ! echo "PASS: $$tst"; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="$$failed of $$all tests failed"; \ ! fi; \ ! dashes=`echo "$$banner" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0 ! info-am: ! info: info-recursive ! dvi-am: ! dvi: dvi-recursive check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive ! installcheck-am: ! installcheck: installcheck-recursive ! all-recursive-am: config.h ! $(MAKE) $(AM_MAKEFLAGS) all-recursive ! install-exec-am: install-libLTLIBRARIES install-binPROGRAMS \ ! install-binSCRIPTS ! install-exec: install-exec-recursive ! install-data-am: install-m4dataDATA install-pkgconfigDATA \ ! install-pkgincludeHEADERS install-data: install-data-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-recursive - uninstall-am: uninstall-libLTLIBRARIES uninstall-binPROGRAMS \ - uninstall-binSCRIPTS uninstall-m4dataDATA \ - uninstall-pkgconfigDATA uninstall-pkgincludeHEADERS - uninstall: uninstall-recursive - all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ - $(HEADERS) config.h - all-redirect: all-recursive-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: installdirs-recursive - installdirs-am: - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) \ - $(DESTDIR)$(bindir) $(DESTDIR)$(m4datadir) \ - $(DESTDIR)$(pkgconfigdir) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 511,808 ---- test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done + ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ + if (etags --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + else \ + include_option=--include; \ + fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ ! if test "$$subdir" = .; then :; else \ ! test -f $$subdir/TAGS && \ ! tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ ! fi; \ done; \ ! list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + top_distdir = . distdir = $(PACKAGE)-$(VERSION) ! am__remove_distdir = \ ! { test ! -d $(distdir) \ ! || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ ! && rm -fr $(distdir); }; } ! ! GZIP_ENV = --best ! distuninstallcheck_listfiles = find . -type f -print ! distcleancheck_listfiles = find . -type f -print ! distdir: $(DISTFILES) ! $(am__remove_distdir) mkdir $(distdir) ! $(mkinstalldirs) $(distdir)/. ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done ! list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ || exit 1; \ ! (cd $$subdir && \ ! $(MAKE) $(AM_MAKEFLAGS) \ ! top_distdir="$(top_distdir)" \ ! distdir=../$(distdir)/$$subdir \ ! distdir) \ || exit 1; \ fi; \ done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) + dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + + dist dist-all: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) ! # This target untars the dist file and tries a VPATH configuration. Then ! # it guarantees that the distribution is self-contained by making another ! # tarfile. ! distcheck: dist ! $(am__remove_distdir) ! GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ! chmod -R a-w $(distdir); chmod a+w $(distdir) ! mkdir $(distdir)/_build ! mkdir $(distdir)/_inst ! chmod a-w $(distdir) ! dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ ! && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ ! && cd $(distdir)/_build \ ! && ../configure --srcdir=.. --prefix="$$dc_install_base" \ ! $(DISTCHECK_CONFIGURE_FLAGS) \ ! && $(MAKE) $(AM_MAKEFLAGS) \ ! && $(MAKE) $(AM_MAKEFLAGS) dvi \ ! && $(MAKE) $(AM_MAKEFLAGS) check \ ! && $(MAKE) $(AM_MAKEFLAGS) install \ ! && $(MAKE) $(AM_MAKEFLAGS) installcheck \ ! && $(MAKE) $(AM_MAKEFLAGS) uninstall \ ! && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ ! distuninstallcheck \ ! && chmod -R a-w "$$dc_install_base" \ ! && ({ \ ! (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ ! && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ ! && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ ! && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ ! distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ ! } || { rm -rf "$$dc_destdir"; exit 1; }) \ ! && rm -rf "$$dc_destdir" \ ! && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ ! && rm -f $(distdir).tar.gz \ ! && $(MAKE) $(AM_MAKEFLAGS) distcleancheck ! $(am__remove_distdir) ! @echo "$(distdir).tar.gz is ready for distribution" | \ ! sed 'h;s/./=/g;p;x;p;x' ! distuninstallcheck: ! @cd $(distuninstallcheck_dir) \ ! && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ ! || { echo "ERROR: files left after uninstall:" ; \ ! if test -n "$(DESTDIR)"; then \ ! echo " (check DESTDIR support)"; \ ! fi ; \ ! $(distuninstallcheck_listfiles) ; \ ! exit 1; } >&2 ! distcleancheck: distclean ! @if test '$(srcdir)' = . ; then \ ! echo "ERROR: distcleancheck can only run from a VPATH build" ; \ ! exit 1 ; \ ! fi ! @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ ! || { echo "ERROR: files left in build directory after distclean:" ; \ ! $(distcleancheck_listfiles) ; \ ! exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-recursive ! all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ ! $(HEADERS) config.h ! install-binPROGRAMS: install-libLTLIBRARIES ! installdirs: installdirs-recursive ! installdirs-am: ! $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir) $(DESTDIR)$(m4datadir) $(DESTDIR)$(pkgconfigdir) $(DESTDIR)$(pkgincludedir) ! install: install-recursive ! install-exec: install-exec-recursive install-data: install-data-recursive + uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-recursive + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 630,692 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-hdr mostlyclean-libLTLIBRARIES \ ! mostlyclean-compile mostlyclean-libtool \ ! mostlyclean-binPROGRAMS mostlyclean-tags \ ! mostlyclean-generic ! mostlyclean: mostlyclean-recursive ! clean-am: clean-hdr clean-libLTLIBRARIES clean-compile clean-libtool \ ! clean-binPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-recursive ! distclean-am: distclean-hdr distclean-libLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-binPROGRAMS distclean-tags \ ! distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-recursive ! -rm -f config.status ! maintainer-clean-am: maintainer-clean-hdr \ ! maintainer-clean-libLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-binPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-recursive ! -rm -f config.status ! .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ ! mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ ! clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ ! uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ ! distclean-compile clean-compile maintainer-clean-compile \ ! mostlyclean-libtool distclean-libtool clean-libtool \ ! maintainer-clean-libtool mostlyclean-binPROGRAMS distclean-binPROGRAMS \ ! clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \ ! install-binPROGRAMS uninstall-binSCRIPTS install-binSCRIPTS \ ! uninstall-m4dataDATA install-m4dataDATA uninstall-pkgconfigDATA \ ! install-pkgconfigDATA uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS install-data-recursive \ ! uninstall-data-recursive install-exec-recursive \ ! uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ ! all-recursive check-recursive installcheck-recursive info-recursive \ ! dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ ! maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ ! distclean-tags clean-tags maintainer-clean-tags distdir check-TESTS \ ! info-am info dvi-am dvi check check-am installcheck-am installcheck \ ! all-recursive-am install-exec-am install-exec install-data-am \ ! install-data install-am install uninstall-am uninstall all-redirect \ ! all-am all installdirs-am installdirs mostlyclean-generic \ ! distclean-generic clean-generic maintainer-clean-generic clean \ ! mostlyclean distclean maintainer-clean --- 811,896 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-recursive ! clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \ ! clean-libtool mostlyclean-am ! distclean: distclean-recursive ! -rm -f $(am__CONFIG_DISTCLEAN_FILES) ! distclean-am: clean-am distclean-compile distclean-generic distclean-hdr \ ! distclean-libtool distclean-tags ! dvi: dvi-recursive ! dvi-am: ! info: info-recursive ! info-am: ! ! install-data-am: install-m4dataDATA install-pkgconfigDATA \ ! install-pkgincludeHEADERS ! ! install-exec-am: install-binPROGRAMS install-binSCRIPTS \ ! install-libLTLIBRARIES ! ! install-info: install-info-recursive ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-recursive ! -rm -f $(am__CONFIG_DISTCLEAN_FILES) ! -rm -rf autom4te.cache ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-recursive ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! pdf: pdf-recursive ! ! pdf-am: ! ! ps: ps-recursive ! ! ps-am: ! ! uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ ! uninstall-info-am uninstall-libLTLIBRARIES uninstall-m4dataDATA \ ! uninstall-pkgconfigDATA uninstall-pkgincludeHEADERS ! ! uninstall-info: uninstall-info-recursive ! ! .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-TESTS \ ! check-am clean clean-binPROGRAMS clean-generic \ ! clean-libLTLIBRARIES clean-libtool clean-recursive ctags \ ! ctags-recursive dist dist-all dist-gzip distcheck distclean \ ! distclean-compile distclean-generic distclean-hdr \ ! distclean-libtool distclean-recursive distclean-tags \ ! distcleancheck distdir distuninstallcheck dvi dvi-am \ ! dvi-recursive info info-am info-recursive install install-am \ ! install-binPROGRAMS install-binSCRIPTS install-data \ ! install-data-am install-data-recursive install-exec \ ! install-exec-am install-exec-recursive install-info \ ! install-info-am install-info-recursive install-libLTLIBRARIES \ ! install-m4dataDATA install-man install-pkgconfigDATA \ ! install-pkgincludeHEADERS install-recursive install-strip \ ! installcheck installcheck-am installdirs installdirs-am \ ! installdirs-recursive maintainer-clean maintainer-clean-generic \ ! maintainer-clean-recursive mostlyclean mostlyclean-compile \ ! mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ ! pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ ! tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \ ! uninstall-binSCRIPTS uninstall-info-am uninstall-info-recursive \ ! uninstall-libLTLIBRARIES uninstall-m4dataDATA \ ! uninstall-pkgconfigDATA uninstall-pkgincludeHEADERS \ ! uninstall-recursive *************** *** 696,700 **** #main_SOURCES = version.c env.c #main_LDADD = libgsl.la - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 900,903 ---- diff -x.info* -rc2P gsl-1.3/NEWS gsl-1.4/NEWS *** gsl-1.3/NEWS Sun Dec 15 19:23:34 2002 --- gsl-1.4/NEWS Sat Aug 2 16:15:12 2003 *************** *** 1,3 **** ! * What is new in gsl-1.3: ** Changed interface for gsl_sf_coupling_6j...(...). The old functions --- 1,98 ---- ! * What is new in gsl-1.4: ! ! ** Added cumulative distribution functions and their inverses for the ! continuous random distributions including: gaussian, lognormal, gamma, ! beta, cauchy, laplace, chisq, exponential, gumbel, weibull, ! F-distribution, t-distribution, logistic, pareto and rayleigh. ! ! ** Added faster binomial random variates using the TPE rejection ! algorithm, in the function gsl_randist_binomial_tpe. ! ! ** Added new functions gsl_rng_fwrite and gsl_rnd_fread for storing ! the state of random number generators in a file. ! ! ** Added a new function gsl_combination_memcpy() ! ! ** Corrected values of electrical constants in CGS units. To take ! account of different electrical systems of units the values are now ! prefixed by GSL_CONST_MKSA (for the SI Metre, Kilogram, Second, Ampere ! system) or GSL_CONST_CGSM (for the Centimetre, Gram, Second, Magnetic ! system with the Gauss as the fundamental unit of magnetic field ! strength). The previous GSL_CONST_MKS and GSL_CONST_CGS prefixes have ! been removed, as have the permeability and permittivity constants in ! the CGS system since this uses different defining equations. ! ! ** Fixed bugs in the random number generators gsl_rng_fishman18, ! gsl_rng_fishman2x, and gsl_rng_knuthran2 which caused them to return ! incorrect results. Minor corrections were made to the parameters in ! the other Knuth generators borosh13, coveyou, fishman20, lecuyer21, ! and waterman14. ! ! ** Fixed a missing transpose bug in the gsl_linalg_QR_QRsolve ! and gsl_linalg_QRPT_QRsolve routines which were computing the ! solution to Q^T R x = b instead of Q R x = b. ! ! ** Fixed gsl_sf_gammainv to return zero instead of a domain ! error for arguments corresponding to singularities in gamma. ! ! ** Fixed a bug in the simplex minimization algorithm which ! caused it to fail to find the second highest point correctly ! when searching the set of simplex points. ! ! ** Fixed a bug in the conjugate gradient minimizers conjugate_pr, ! conjugate_fr and vector_bgfs which caused the search ! directions to be updated incorrectly. ! ! ** Fixed a bug in gsl_sf_psi_1_int(1) which caused it to ! return the incorrect sign for psi(1,1). ! ! ** Fixed the simulated annealing routine gsl_siman_solve to use the ! parameter iters_fixed_T for the number of iterations at fixed ! temperature instead of n_tries. ! ! ** Fixed a bug in gsl_combination_valid which caused it to return the ! incorrect status. ! ! ** Fixed a bug in gsl_permutation_canonical_to_linear which caused the ! output to always be zero, and the input permutation to be incorrectly ! replaced by the output. ! ! ** Fixed a bug is gsl_ran_discrete which could cause uninitialised ! data to be returned for some distributions. ! ! ** Fixed the dependencies for gsl_chebyshev.h to include gsl_math.h. ! ! ** Fixed a bug in gsl_complex_arccsc_real which caused it to return ! the incorrect sign for the imaginary part when -110. ! ! ** Improved the accuracy of gsl_sf_coupling_3j for large arguments. ! ! ** Improved the performance of gsl_sf_choose(m,n) by separating the ! calculations for small and large arguments. ! ! ** On platforms without IEEE comparisons gsl_{isnan,isinf,finite} will ! fall back to the system versions of isnan, isinf and finite if ! available. ! ! ** gsl_linalg_householder_hv now uses BLAS routines internally ! ! ** The script configure.in is now compatible with autoconf-2.50 and ! later. ! ! ** Reduced the memory usage of the multifit algorithms from MxM to MxN ! for large M by performing the QR decomposition of the Jacobian ! in-place. ! ! ** IEEE modes now use the C99 fenv.h functions when platform spectific ! functions are not available. ! ! * What was new in gsl-1.3: ** Changed interface for gsl_sf_coupling_6j...(...). The old functions diff -x.info* -rc2P gsl-1.3/README gsl-1.4/README *** gsl-1.3/README Sat Oct 5 19:37:54 2002 --- gsl-1.4/README Wed Apr 9 11:53:18 2003 *************** *** 42,49 **** bookstores. The publication details are, ! GNU Scientific Library Reference Manual, M. Galassi et al, ! ISBN 095416170X ! (600 pages, paperback). Reporting Bugs --- 42,49 ---- bookstores. The publication details are, ! GNU Scientific Library Reference Manual - Second Edition, M. Galassi et al, ! ISBN 0954161734 ! (620 pages, paperback). Reporting Bugs diff -x.info* -rc2P gsl-1.3/THANKS gsl-1.4/THANKS *** gsl-1.3/THANKS Tue Dec 10 19:56:24 2002 --- gsl-1.4/THANKS Tue Aug 12 19:55:30 2003 *************** *** 61,65 **** * Steve Robbins patch to work around FP_RND ! problems on Tru64, testing and other patches. * John Fisher testing on powerpc linux --- 61,66 ---- * Steve Robbins patch to work around FP_RND ! problems on Tru64, testing and other patches., bug fix for nm_simplex ! algorithm. * John Fisher testing on powerpc linux *************** *** 100,104 **** * Achim Gaedke for bug reports and suggestions, additional histogram code, PyGSL python interface, 2d ! histogram statistics * Eric Rose for bug report and useful tip on casting --- 101,105 ---- * Achim Gaedke for bug reports and suggestions, additional histogram code, PyGSL python interface, 2d ! histogram statistics, bug fixes for simulated annealing * Eric Rose for bug report and useful tip on casting *************** *** 150,154 **** * for bug report ! * "Christian T. Steigies" for documentation bug report * Atakan Gurkan for bug reports and patches for the --- 151,155 ---- * for bug report ! * Christian T. Steigies for documentation bug report * Atakan Gurkan for bug reports and patches for the *************** *** 182,189 **** * Gene Carter build shared libraries on MacOS X ! * "Fabian Jakobs" fixed a bug in gsl_linalg_bidiag_unpack_B, and documentation bug-fix for blas ! * "Gavin Crooks" documentation bug fix, dirichlet distribution, multinomial distribution --- 183,190 ---- * Gene Carter build shared libraries on MacOS X ! * Fabian Jakobs fixed a bug in gsl_linalg_bidiag_unpack_B, and documentation bug-fix for blas ! * Gavin Crooks documentation bug fix, dirichlet distribution, multinomial distribution *************** *** 208,209 **** --- 209,264 ---- * Jerome Houdayer bug report for taus seeding + + * Conrad Curry bug and documentation reports + + * Erik Schnetter documentation bug reports + + * Maarten De Munck bug fix for vector/matrix get + + * Axel Hutt bug fix for QAWC integration + + * Martin Jansche bug reports + + * Gregory Soyez documentation bug report + + * Attilio Rivoldini bug report for CBLAS tests + + * W.M. Vissers bug report for + gsl_complex_arccsc_real + + * Paolo Redaelli bug report for chebyshev + functions + + * Andrew Howard bug report for gsl_ran_discrete + + * Heiko Bauke bug reports and patches + for random number generators + + * Vincent Sacksteder bug reports for MSVC7 + + * Peter Verveer improvement to memory + usage of MINPACK routines + + * Mario Pernici bug fix for + gsl_combination_valid and new function gsl_permutation_memcpy, + doc fix for bessel functions, bug fix for gsl_sf_psi_1_int, + bug report for gsl_permutation_canonical_to_linear, linalg + QRPT bug reports and fixes, and many other corrections. + + * Fabio Brugnara provided a much-needed bug + fix for the conjugate gradient algorithm multidimensional + minimisers. + + * Krzysztof Pachucki bug report for gsl_sf_hypergU_int + + * Carsten Svaneborg documentation bug report + + * Liguo Song documentation bug report + + * Carlo Ferrigno bug report for CGS units + + * Giulio Bottazzi documentation bug reports + + * Olaf Lenz rng frwite/fread + + * Jamie Lokier for testing diff -x.info* -rc2P gsl-1.3/TODO gsl-1.4/TODO *** gsl-1.3/TODO Tue Nov 5 17:08:04 2002 --- gsl-1.4/TODO Tue Aug 12 11:13:45 2003 *************** *** 8,12 **** * Fix error terms in implicit ODE solvers rk2imp, rk4imp, gear1, gear2. ! * Improve accuracy of coupling constant functions for large J (BUG#7) * PyGSL -- python bindings for GSL, see http://pygsl.sf.net/ --- 8,14 ---- * Fix error terms in implicit ODE solvers rk2imp, rk4imp, gear1, gear2. ! * Generate the examples in the manual directly from example .c ! files (these will also make a nice 'quick check' of programs ! that can be compiled against the installed library) * PyGSL -- python bindings for GSL, see http://pygsl.sf.net/ *************** *** 33,36 **** --- 35,40 ---- * Complex Bessel Functions + * Incomplete gamma functions 6.5.2 or 6.5.3 in Abramowitz & Stegun + * Additional volunteers with access to a good library to get copies of papers for other developers. *************** *** 47,59 **** * Fresnel Integrals ("Juergen J. Zach" ) ! * Cumulative Distribution functions for the random distributions ! (Jason Hooper Stover ) Other tasks: - - * Fix build problems which occur with -ansi (and similar options) - where BSD extensions like hypot(), log1p() are found by the - configure script in the system math library but without any - prototypes in the include files. * Remove use of long double internally, e.g. as an accumulator in --- 51,57 ---- * Fresnel Integrals ("Juergen J. Zach" ) ! * Cumulative Distribution functions for discrete random distributions Other tasks: * Remove use of long double internally, e.g. as an accumulator in diff -x.info* -rc2P gsl-1.3/acconfig.h gsl-1.4/acconfig.h *** gsl-1.3/acconfig.h Fri Sep 6 14:00:37 2002 --- gsl-1.4/acconfig.h Tue Aug 5 15:15:10 2003 *************** *** 1,3 **** --- 1,7 ---- @BOTTOM@ + + /* Defined if this is an official release */ + #undef RELEASED + /* Define if you have inline */ #undef HAVE_INLINE *************** *** 6,34 **** #undef HIDE_INLINE_STATIC - /* Define if you have the ansi CLOCKS_PER_SEC clock rate */ - #undef HAVE_CLOCKS_PER_SEC - - /* Defined if configure has guessed a missing ansi CLOCKS_PER_SEC clock rate */ - #undef HAVE_GUESSED_CLOCKS_PER_SEC - - /* Use configure's best guess for CLOCKS_PER_SEC if it is unknown */ - #ifndef HAVE_CLOCKS_PER_SEC - #define CLOCKS_PER_SEC HAVE_GUESSED_CLOCKS_PER_SEC - #endif - /* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */ #undef HAVE_EXIT_SUCCESS_AND_FAILURE /* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ ! #ifndef HAVE_EXIT_SUCCESS_AND_FAILURE #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif /* Define one of these if you have a known IEEE arithmetic interface */ ! #undef HAVE_SPARCLINUX_IEEE_INTERFACE ! #undef HAVE_M68KLINUX_IEEE_INTERFACE ! #undef HAVE_PPCLINUX_IEEE_INTERFACE ! #undef HAVE_X86LINUX_IEEE_INTERFACE #undef HAVE_SUNOS4_IEEE_INTERFACE #undef HAVE_SOLARIS_IEEE_INTERFACE --- 10,30 ---- #undef HIDE_INLINE_STATIC /* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */ #undef HAVE_EXIT_SUCCESS_AND_FAILURE /* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ ! #if !HAVE_EXIT_SUCCESS_AND_FAILURE #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif + /* Define this if printf can handle %Lf for long double */ + #undef HAVE_PRINTF_LONGDOUBLE + /* Define one of these if you have a known IEEE arithmetic interface */ ! #undef HAVE_GNUSPARC_IEEE_INTERFACE ! #undef HAVE_GNUM68K_IEEE_INTERFACE ! #undef HAVE_GNUPPC_IEEE_INTERFACE ! #undef HAVE_GNUX86_IEEE_INTERFACE #undef HAVE_SUNOS4_IEEE_INTERFACE #undef HAVE_SOLARIS_IEEE_INTERFACE *************** *** 44,51 **** #undef HAVE_DARWIN_IEEE_INTERFACE ! /* Define this if we need to include /usr/include/float.h explicitly ! in order to get FP_RND_RN and related macros. This is known to be ! a problem on some Compaq Tru64 unix systems when compiled with GCC. */ ! #undef FIND_FP_RND_IN_USR_INCLUDE_FLOAT_H /* Define a rounding function which moves extended precision values --- 40,48 ---- #undef HAVE_DARWIN_IEEE_INTERFACE ! /* Define this is IEEE comparisons work correctly (e.g. NaN != NaN) */ ! #undef HAVE_IEEE_COMPARISONS ! ! /* Define this is IEEE denormalized numbers are available */ ! #undef HAVE_IEEE_DENORMALS /* Define a rounding function which moves extended precision values *************** *** 65,69 **** #undef HAVE_EXTENDED_PRECISION_REGISTERS ! #ifdef HAVE_EXTENDED_PRECISION_REGISTERS #define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) #else --- 62,66 ---- #undef HAVE_EXTENDED_PRECISION_REGISTERS ! #if HAVE_EXTENDED_PRECISION_REGISTERS #define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) #else *************** *** 71,128 **** #endif - /* Define this if printf can handle %Lf for long double */ - #undef HAVE_PRINTF_LONGDOUBLE - - /* Define this is IEEE comparisons work correctly (e.g. NaN != NaN) */ - #undef HAVE_IEEE_COMPARISONS - - /* Define this is IEEE denormalized numbers are available */ - #undef HAVE_IEEE_DENORMALS - /* Substitute gsl functions for missing system functions */ ! #ifndef HAVE_HYPOT #define hypot gsl_hypot #endif ! #ifndef HAVE_LOG1P #define log1p gsl_log1p #endif ! #ifndef HAVE_EXPM1 #define expm1 gsl_expm1 #endif ! #ifndef HAVE_ACOSH #define acosh gsl_acosh #endif ! #ifndef HAVE_ASINH #define asinh gsl_asinh #endif ! #ifndef HAVE_ATANH #define atanh gsl_atanh #endif ! #ifndef HAVE_ISINF ! #define isinf gsl_isinf ! #endif ! ! #ifndef HAVE_ISNAN ! #define isnan gsl_isnan ! #endif ! ! #ifndef HAVE_LDEXP #define ldexp gsl_ldexp #endif ! #ifndef HAVE_FREXP #define frexp gsl_frexp #endif ! #ifndef HAVE_FINITE ! #ifdef HAVE_ISFINITE #define finite isfinite #else --- 68,111 ---- #endif /* Substitute gsl functions for missing system functions */ ! #if !HAVE_DECL_HYPOT #define hypot gsl_hypot #endif ! #if !HAVE_DECL_LOG1P #define log1p gsl_log1p #endif ! #if !HAVE_DECL_EXPM1 #define expm1 gsl_expm1 #endif ! #if !HAVE_DECL_ACOSH #define acosh gsl_acosh #endif ! #if !HAVE_DECL_ASINH #define asinh gsl_asinh #endif ! #if !HAVE_DECL_ATANH #define atanh gsl_atanh #endif ! #if !HAVE_DECL_LDEXP #define ldexp gsl_ldexp #endif ! #if !HAVE_DECL_FREXP #define frexp gsl_frexp #endif + #if !HAVE_DECL_ISINF + #define isinf gsl_isinf + #endif ! #if !HAVE_DECL_FINITE ! #if HAVE_DECL_ISFINITE #define finite isfinite #else *************** *** 131,134 **** --- 114,121 ---- #endif + #if !HAVE_DECL_ISNAN + #define isnan gsl_isnan + #endif + #ifdef __GNUC__ #define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0); *************** *** 137,141 **** #endif ! #ifndef GSL_RANGE_CHECK_ON ! #define GSL_RANGE_CHECK_OFF /* turn off range checking by default */ #endif --- 124,128 ---- #endif ! #if defined(GSL_RANGE_CHECK_OFF) || !defined(GSL_RANGE_CHECK) ! #define GSL_RANGE_CHECK 0 /* turn off range checking by default */ #endif diff -x.info* -rc2P gsl-1.3/aclocal.m4 gsl-1.4/aclocal.m4 *** gsl-1.3/aclocal.m4 Wed Dec 18 22:31:49 2002 --- gsl-1.4/aclocal.m4 Thu Aug 14 12:28:27 2003 *************** *** 1,46 **** ! dnl aclocal.m4 generated automatically by aclocal 1.4-p5 ! ! dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. ! dnl This file is free software; the Free Software Foundation ! dnl gives unlimited permission to copy and/or distribute it, ! dnl with or without modifications, as long as this notice is preserved. ! ! dnl This program is distributed in the hope that it will be useful, ! dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without ! dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A ! dnl PARTICULAR PURPOSE. ! ! # Do all the work for Automake. This macro actually does too much -- ! # some checks are only needed if your package does certain things. ! # But this isn't really a big deal. ! ! # serial 1 ! ! dnl Usage: ! dnl AM_INIT_AUTOMAKE(package,version, [no-define]) AC_DEFUN([AM_INIT_AUTOMAKE], ! [AC_REQUIRE([AC_PROG_INSTALL]) ! PACKAGE=[$1] ! AC_SUBST(PACKAGE) ! VERSION=[$2] ! AC_SUBST(VERSION) ! dnl test to see if srcdir already configured ! if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ! ifelse([$3],, ! AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ! AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) ! AC_REQUIRE([AM_SANITY_CHECK]) ! AC_REQUIRE([AC_ARG_PROGRAM]) ! dnl FIXME This is truly gross. ! missing_dir=`cd $ac_aux_dir && pwd` ! AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) ! AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) ! AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) ! AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) ! AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) ! AC_REQUIRE([AC_PROG_MAKE_SET])]) # --- 1,212 ---- ! # generated automatically by aclocal 1.7.5 -*- Autoconf -*- + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 + # Free Software Foundation, Inc. + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY, to the extent permitted by law; without + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + + # Do all the work for Automake. -*- Autoconf -*- + + # This macro actually does too much some checks are only needed if + # your package does certain things. But this isn't really a big deal. + + # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + # Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + + # serial 10 + + AC_PREREQ([2.54]) + + # Autoconf 2.50 wants to disallow AM_ names. We explicitly allow + # the ones we care about. + m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) + # AM_INIT_AUTOMAKE([OPTIONS]) + # ----------------------------------------------- + # The call with PACKAGE and VERSION arguments is the old style + # call (pre autoconf-2.50), which is being phased out. PACKAGE + # and VERSION should now be passed to AC_INIT and removed from + # the call to AM_INIT_AUTOMAKE. + # We support both call styles for the transition. After + # the next Automake release, Autoconf can make the AC_INIT + # arguments mandatory, and then we can depend on a new Autoconf + # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], ! [AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ! AC_REQUIRE([AC_PROG_INSTALL])dnl ! # test to see if srcdir already configured ! if test "`cd $srcdir && pwd`" != "`pwd`" && ! test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi ! ! # test whether we have cygpath ! if test -z "$CYGPATH_W"; then ! if (cygpath --version) >/dev/null 2>/dev/null; then ! CYGPATH_W='cygpath -w' ! else ! CYGPATH_W=echo ! fi ! fi ! AC_SUBST([CYGPATH_W]) ! ! # Define the identity of the package. ! dnl Distinguish between old-style and new-style calls. ! m4_ifval([$2], ! [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ! AC_SUBST([PACKAGE], [$1])dnl ! AC_SUBST([VERSION], [$2])], ! [_AM_SET_OPTIONS([$1])dnl ! AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ! AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ! ! _AM_IF_OPTION([no-define],, ! [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ! AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ! ! # Some tools Automake needs. ! AC_REQUIRE([AM_SANITY_CHECK])dnl ! AC_REQUIRE([AC_ARG_PROGRAM])dnl ! AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ! AM_MISSING_PROG(AUTOCONF, autoconf) ! AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ! AM_MISSING_PROG(AUTOHEADER, autoheader) ! AM_MISSING_PROG(MAKEINFO, makeinfo) ! AM_MISSING_PROG(AMTAR, tar) ! AM_PROG_INSTALL_SH ! AM_PROG_INSTALL_STRIP ! # We need awk for the "check" target. The system "awk" is bad on ! # some platforms. ! AC_REQUIRE([AC_PROG_AWK])dnl ! AC_REQUIRE([AC_PROG_MAKE_SET])dnl ! AC_REQUIRE([AM_SET_LEADING_DOT])dnl ! ! _AM_IF_OPTION([no-dependencies],, ! [AC_PROVIDE_IFELSE([AC_PROG_CC], ! [_AM_DEPENDENCIES(CC)], ! [define([AC_PROG_CC], ! defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ! AC_PROVIDE_IFELSE([AC_PROG_CXX], ! [_AM_DEPENDENCIES(CXX)], ! [define([AC_PROG_CXX], ! defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ! ]) ! ]) ! ! ! # When config.status generates a header, we must update the stamp-h file. ! # This file resides in the same directory as the config header ! # that is generated. The stamp files are numbered to have different names. ! ! # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ! # loop where config.status creates the headers, so we can generate ! # our stamp files there. ! AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ! [# Compute $1's index in $config_headers. ! _am_stamp_count=1 ! for _am_header in $config_headers :; do ! case $_am_header in ! $1 | $1:* ) ! break ;; ! * ) ! _am_stamp_count=`expr $_am_stamp_count + 1` ;; ! esac ! done ! echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ! ! # Copyright 2002 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! ! # AM_AUTOMAKE_VERSION(VERSION) ! # ---------------------------- ! # Automake X.Y traces this macro to ensure aclocal.m4 has been ! # generated from the m4 files accompanying Automake X.Y. ! AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) ! ! # AM_SET_CURRENT_AUTOMAKE_VERSION ! # ------------------------------- ! # Call AM_AUTOMAKE_VERSION so it can be traced. ! # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. ! AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], ! [AM_AUTOMAKE_VERSION([1.7.5])]) ! ! # Helper functions for option handling. -*- Autoconf -*- ! ! # Copyright 2001, 2002 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 2 ! ! # _AM_MANGLE_OPTION(NAME) ! # ----------------------- ! AC_DEFUN([_AM_MANGLE_OPTION], ! [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ! ! # _AM_SET_OPTION(NAME) ! # ------------------------------ ! # Set option NAME. Presently that only means defining a flag for this option. ! AC_DEFUN([_AM_SET_OPTION], ! [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ! ! # _AM_SET_OPTIONS(OPTIONS) ! # ---------------------------------- ! # OPTIONS is a space-separated list of Automake options. ! AC_DEFUN([_AM_SET_OPTIONS], ! [AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ! ! # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ! # ------------------------------------------- ! # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ! AC_DEFUN([_AM_IF_OPTION], ! [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # *************** *** 48,56 **** # AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 ! echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a --- 214,243 ---- # + # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + + # serial 3 + + # AM_SANITY_CHECK + # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 ! echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a *************** *** 59,69 **** # directory). if ( ! set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` ! if test "[$]*" = "X"; then # -L didn't work. ! set X `ls -t $srcdir/configure conftestfile` fi ! if test "[$]*" != "X $srcdir/configure conftestfile" \ ! && test "[$]*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen --- 246,257 ---- # directory). if ( ! set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ! if test "$[*]" = "X"; then # -L didn't work. ! set X `ls -t $srcdir/configure conftest.file` fi ! rm -f conftest.file ! if test "$[*]" != "X $srcdir/configure conftest.file" \ ! && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen *************** *** 75,79 **** fi ! test "[$]2" = conftestfile ) then --- 263,267 ---- fi ! test "$[2]" = conftest.file ) then *************** *** 84,133 **** Check your system clock]) fi - rm -f conftest* AC_MSG_RESULT(yes)]) ! dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) ! dnl The program must properly implement --version. AC_DEFUN([AM_MISSING_PROG], ! [AC_MSG_CHECKING(for working $2) ! # Run test in a subshell; some versions of sh will print an error if ! # an executable is not found, even if stderr is redirected. ! # Redirect stdin to placate older versions of autoconf. Sigh. ! if ($2 --version) < /dev/null > /dev/null 2>&1; then ! $1=$2 ! AC_MSG_RESULT(found) else ! $1="$3/missing $2" ! AC_MSG_RESULT(missing) fi ! AC_SUBST($1)]) - # Like AC_CONFIG_HEADER, but automatically create stamp file. ! AC_DEFUN([AM_CONFIG_HEADER], ! [AC_PREREQ([2.12]) ! AC_CONFIG_HEADER([$1]) ! dnl When config.status generates a header, we must update the stamp-h file. ! dnl This file resides in the same directory as the config header ! dnl that is generated. We must strip everything past the first ":", ! dnl and everything past the last "/". ! AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl ! ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, ! <>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, ! <>; do ! case " <<$>>CONFIG_HEADERS " in ! *" <<$>>am_file "*<<)>> ! echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx ! ;; ! esac ! am_indx=`expr "<<$>>am_indx" + 1` ! done<<>>dnl>>) ! changequote([,]))]) # Add --enable-maintainer-mode option to configure. # From Jim Meyering ! # serial 1 AC_DEFUN([AM_MAINTAINER_MODE], --- 272,869 ---- Check your system clock]) fi AC_MSG_RESULT(yes)]) ! # -*- Autoconf -*- ! ! ! # Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 3 ! ! # AM_MISSING_PROG(NAME, PROGRAM) ! # ------------------------------ AC_DEFUN([AM_MISSING_PROG], ! [AC_REQUIRE([AM_MISSING_HAS_RUN]) ! $1=${$1-"${am_missing_run}$2"} ! AC_SUBST($1)]) ! ! ! # AM_MISSING_HAS_RUN ! # ------------------ ! # Define MISSING if not defined so far and test if it supports --run. ! # If it does, set am_missing_run to use it, otherwise, to nothing. ! AC_DEFUN([AM_MISSING_HAS_RUN], ! [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ! # Use eval to expand $SHELL ! if eval "$MISSING --run true"; then ! am_missing_run="$MISSING --run " else ! am_missing_run= ! AC_MSG_WARN([`missing' script is too old or missing]) fi ! ]) ! ! # AM_AUX_DIR_EXPAND ! ! # Copyright 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ! # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to ! # `$srcdir', `$srcdir/..', or `$srcdir/../..'. ! # ! # Of course, Automake must honor this variable whenever it calls a ! # tool from the auxiliary directory. The problem is that $srcdir (and ! # therefore $ac_aux_dir as well) can be either absolute or relative, ! # depending on how configure is run. This is pretty annoying, since ! # it makes $ac_aux_dir quite unusable in subdirectories: in the top ! # source directory, any form will work fine, but in subdirectories a ! # relative path needs to be adjusted first. ! # ! # $ac_aux_dir/missing ! # fails when called from a subdirectory if $ac_aux_dir is relative ! # $top_srcdir/$ac_aux_dir/missing ! # fails if $ac_aux_dir is absolute, ! # fails when called from a subdirectory in a VPATH build with ! # a relative $ac_aux_dir ! # ! # The reason of the latter failure is that $top_srcdir and $ac_aux_dir ! # are both prefixed by $srcdir. In an in-source build this is usually ! # harmless because $srcdir is `.', but things will broke when you ! # start a VPATH build or use an absolute $srcdir. ! # ! # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ! # iff we strip the leading $srcdir from $ac_aux_dir. That would be: ! # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ! # and then we would define $MISSING as ! # MISSING="\${SHELL} $am_aux_dir/missing" ! # This will work as long as MISSING is not called from configure, because ! # unfortunately $(top_srcdir) has no meaning in configure. ! # However there are other variables, like CC, which are often used in ! # configure, and could therefore not use this "fixed" $ac_aux_dir. ! # ! # Another solution, used here, is to always expand $ac_aux_dir to an ! # absolute PATH. The drawback is that using absolute paths prevent a ! # configured tree to be moved without reconfiguration. ! ! # Rely on autoconf to set up CDPATH properly. ! AC_PREREQ([2.50]) ! ! AC_DEFUN([AM_AUX_DIR_EXPAND], [ ! # expand $ac_aux_dir to an absolute path ! am_aux_dir=`cd $ac_aux_dir && pwd` ! ]) ! ! # AM_PROG_INSTALL_SH ! # ------------------ ! # Define $install_sh. ! ! # Copyright 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! AC_DEFUN([AM_PROG_INSTALL_SH], ! [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ! install_sh=${install_sh-"$am_aux_dir/install-sh"} ! AC_SUBST(install_sh)]) ! ! # AM_PROG_INSTALL_STRIP ! ! # Copyright 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # One issue with vendor `install' (even GNU) is that you can't ! # specify the program used to strip binaries. This is especially ! # annoying in cross-compiling environments, where the build's strip ! # is unlikely to handle the host's binaries. ! # Fortunately install-sh will honor a STRIPPROG variable, so we ! # always use install-sh in `make install-strip', and initialize ! # STRIPPROG with the value of the STRIP variable (set by the user). ! AC_DEFUN([AM_PROG_INSTALL_STRIP], ! [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ! # Installed binaries are usually stripped using `strip' when the user ! # run `make install-strip'. However `strip' might not be the right ! # tool to use in cross-compilation environments, therefore Automake ! # will honor the `STRIP' environment variable to overrule this program. ! dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ! if test "$cross_compiling" != no; then ! AC_CHECK_TOOL([STRIP], [strip], :) ! fi ! INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ! AC_SUBST([INSTALL_STRIP_PROGRAM])]) ! ! # -*- Autoconf -*- ! # Copyright (C) 2003 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 1 ! ! # Check whether the underlying file-system supports filenames ! # with a leading dot. For instance MS-DOS doesn't. ! AC_DEFUN([AM_SET_LEADING_DOT], ! [rm -rf .tst 2>/dev/null ! mkdir .tst 2>/dev/null ! if test -d .tst; then ! am__leading_dot=. ! else ! am__leading_dot=_ ! fi ! rmdir .tst 2>/dev/null ! AC_SUBST([am__leading_dot])]) ! ! # serial 5 -*- Autoconf -*- ! ! # Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! ! # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be ! # written in clear, in which case automake, when reading aclocal.m4, ! # will think it sees a *use*, and therefore will trigger all it's ! # C support machinery. Also note that it means that autoscan, seeing ! # CC etc. in the Makefile, will ask for an AC_PROG_CC use... ! ! # _AM_DEPENDENCIES(NAME) ! # ---------------------- ! # See how the compiler implements dependency checking. ! # NAME is "CC", "CXX", "GCJ", or "OBJC". ! # We try a few techniques and use that to set a single cache variable. ! # ! # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was ! # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular ! # dependency, and given that the user is not expected to run this macro, ! # just rely on AC_PROG_CC. ! AC_DEFUN([_AM_DEPENDENCIES], ! [AC_REQUIRE([AM_SET_DEPDIR])dnl ! AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl ! AC_REQUIRE([AM_MAKE_INCLUDE])dnl ! AC_REQUIRE([AM_DEP_TRACK])dnl ! ! ifelse([$1], CC, [depcc="$CC" am_compiler_list=], ! [$1], CXX, [depcc="$CXX" am_compiler_list=], ! [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], ! [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], ! [depcc="$$1" am_compiler_list=]) ! ! AC_CACHE_CHECK([dependency style of $depcc], ! [am_cv_$1_dependencies_compiler_type], ! [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then ! # We make a subdir and do the tests there. Otherwise we can end up ! # making bogus files that we don't know about and never remove. For ! # instance it was reported that on HP-UX the gcc test will end up ! # making a dummy file named `D' -- because `-MD' means `put the output ! # in D'. ! mkdir conftest.dir ! # Copy depcomp to subdir because otherwise we won't find it if we're ! # using a relative directory. ! cp "$am_depcomp" conftest.dir ! cd conftest.dir ! ! am_cv_$1_dependencies_compiler_type=none ! if test "$am_compiler_list" = ""; then ! am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` ! fi ! for depmode in $am_compiler_list; do ! # We need to recreate these files for each test, as the compiler may ! # overwrite some of them when testing with obscure command lines. ! # This happens at least with the AIX C compiler. ! echo '#include "conftest.h"' > conftest.c ! echo 'int i;' > conftest.h ! echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf ! ! case $depmode in ! nosideeffect) ! # after this tag, mechanisms are not by side-effect, so they'll ! # only be used when explicitly requested ! if test "x$enable_dependency_tracking" = xyes; then ! continue ! else ! break ! fi ! ;; ! none) break ;; ! esac ! # We check with `-c' and `-o' for the sake of the "dashmstdout" ! # mode. It turns out that the SunPro C++ compiler does not properly ! # handle `-M -o', and we need to detect this. ! if depmode=$depmode \ ! source=conftest.c object=conftest.o \ ! depfile=conftest.Po tmpdepfile=conftest.TPo \ ! $SHELL ./depcomp $depcc -c -o conftest.o conftest.c \ ! >/dev/null 2>conftest.err && ! grep conftest.h conftest.Po > /dev/null 2>&1 && ! ${MAKE-make} -s -f confmf > /dev/null 2>&1; then ! # icc doesn't choke on unknown options, it will just issue warnings ! # (even with -Werror). So we grep stderr for any message ! # that says an option was ignored. ! if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else ! am_cv_$1_dependencies_compiler_type=$depmode ! break ! fi ! fi ! done ! ! cd .. ! rm -rf conftest.dir ! else ! am_cv_$1_dependencies_compiler_type=none ! fi ! ]) ! AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) ! AM_CONDITIONAL([am__fastdep$1], [ ! test "x$enable_dependency_tracking" != xno \ ! && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ! ]) ! ! ! # AM_SET_DEPDIR ! # ------------- ! # Choose a directory name for dependency files. ! # This macro is AC_REQUIREd in _AM_DEPENDENCIES ! AC_DEFUN([AM_SET_DEPDIR], ! [AC_REQUIRE([AM_SET_LEADING_DOT])dnl ! AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ! ]) ! ! ! # AM_DEP_TRACK ! # ------------ ! AC_DEFUN([AM_DEP_TRACK], ! [AC_ARG_ENABLE(dependency-tracking, ! [ --disable-dependency-tracking Speeds up one-time builds ! --enable-dependency-tracking Do not reject slow dependency extractors]) ! if test "x$enable_dependency_tracking" != xno; then ! am_depcomp="$ac_aux_dir/depcomp" ! AMDEPBACKSLASH='\' ! fi ! AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) ! AC_SUBST([AMDEPBACKSLASH]) ! ]) ! ! # Generate code to set up dependency tracking. -*- Autoconf -*- ! ! # Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! #serial 2 ! ! # _AM_OUTPUT_DEPENDENCY_COMMANDS ! # ------------------------------ ! AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], ! [for mf in $CONFIG_FILES; do ! # Strip MF so we end up with the name of the file. ! mf=`echo "$mf" | sed -e 's/:.*$//'` ! # Check whether this is an Automake generated Makefile or not. ! # We used to match only the files named `Makefile.in', but ! # some people rename them; so instead we look at the file content. ! # Grep'ing the first line is not enough: some people post-process ! # each Makefile.in and add a new line on top of each file to say so. ! # So let's grep whole file. ! if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then ! dirpart=`AS_DIRNAME("$mf")` ! else ! continue ! fi ! grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue ! # Extract the definition of DEP_FILES from the Makefile without ! # running `make'. ! DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ! test -z "$DEPDIR" && continue ! # When using ansi2knr, U may be empty or an underscore; expand it ! U=`sed -n -e '/^U = / s///p' < "$mf"` ! test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" ! # We invoke sed twice because it is the simplest approach to ! # changing $(DEPDIR) to its actual value in the expansion. ! for file in `sed -n -e ' ! /^DEP_FILES = .*\\\\$/ { ! s/^DEP_FILES = // ! :loop ! s/\\\\$// ! p ! n ! /\\\\$/ b loop ! p ! } ! /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ! sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do ! # Make sure the directory exists. ! test -f "$dirpart/$file" && continue ! fdir=`AS_DIRNAME(["$file"])` ! AS_MKDIR_P([$dirpart/$fdir]) ! # echo "creating $dirpart/$file" ! echo '# dummy' > "$dirpart/$file" ! done ! done ! ])# _AM_OUTPUT_DEPENDENCY_COMMANDS ! ! ! # AM_OUTPUT_DEPENDENCY_COMMANDS ! # ----------------------------- ! # This macro should only be invoked once -- use via AC_REQUIRE. ! # ! # This code is only required when automatic dependency tracking ! # is enabled. FIXME. This creates each `.P' file that we will ! # need in order to bootstrap the dependency handling code. ! AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], ! [AC_CONFIG_COMMANDS([depfiles], ! [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], ! [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ! ]) ! ! # Check to see how 'make' treats includes. -*- Autoconf -*- ! ! # Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 2 ! ! # AM_MAKE_INCLUDE() ! # ----------------- ! # Check to see how make treats includes. ! AC_DEFUN([AM_MAKE_INCLUDE], ! [am_make=${MAKE-make} ! cat > confinc << 'END' ! am__doit: ! @echo done ! .PHONY: am__doit ! END ! # If we don't find an include directive, just comment out the code. ! AC_MSG_CHECKING([for style of include used by $am_make]) ! am__include="#" ! am__quote= ! _am_result=none ! # First try GNU make style include. ! echo "include confinc" > confmf ! # We grep out `Entering directory' and `Leaving directory' ! # messages which can occur if `w' ends up in MAKEFLAGS. ! # In particular we don't look at `^make:' because GNU make might ! # be invoked under some other name (usually "gmake"), in which ! # case it prints its new name instead of `make'. ! if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ! am__include=include ! am__quote= ! _am_result=GNU ! fi ! # Now try BSD make style include. ! if test "$am__include" = "#"; then ! echo '.include "confinc"' > confmf ! if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ! am__include=.include ! am__quote="\"" ! _am_result=BSD ! fi ! fi ! AC_SUBST([am__include]) ! AC_SUBST([am__quote]) ! AC_MSG_RESULT([$_am_result]) ! rm -f confinc confmf ! ]) ! ! # AM_CONDITIONAL -*- Autoconf -*- ! ! # Copyright 1997, 2000, 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 5 ! ! AC_PREREQ(2.52) ! ! # AM_CONDITIONAL(NAME, SHELL-CONDITION) ! # ------------------------------------- ! # Define a conditional. ! AC_DEFUN([AM_CONDITIONAL], ! [ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ! [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ! AC_SUBST([$1_TRUE]) ! AC_SUBST([$1_FALSE]) ! if $2; then ! $1_TRUE= ! $1_FALSE='#' ! else ! $1_TRUE='#' ! $1_FALSE= ! fi ! AC_CONFIG_COMMANDS_PRE( ! [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ! AC_MSG_ERROR([conditional "$1" was never defined. ! Usually this means the macro was only invoked conditionally.]) ! fi])]) ! ! # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- ! ! # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! AC_PREREQ([2.52]) ! ! # serial 6 ! ! # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. ! AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Add --enable-maintainer-mode option to configure. # From Jim Meyering ! # Copyright 1996, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. ! ! # This program is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2, or (at your option) ! # any later version. ! ! # This program is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! ! # You should have received a copy of the GNU General Public License ! # along with this program; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ! # 02111-1307, USA. ! ! # serial 2 AC_DEFUN([AM_MAINTAINER_MODE], *************** *** 139,144 **** USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) ! AC_MSG_RESULT($USE_MAINTAINER_MODE) ! AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl --- 875,880 ---- USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) ! AC_MSG_RESULT([$USE_MAINTAINER_MODE]) ! AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl *************** *** 146,161 **** ) ! # Define a conditional. ! ! AC_DEFUN([AM_CONDITIONAL], ! [AC_SUBST($1_TRUE) ! AC_SUBST($1_FALSE) ! if $2; then ! $1_TRUE= ! $1_FALSE='#' ! else ! $1_TRUE='#' ! $1_FALSE= ! fi]) # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- --- 882,886 ---- ) ! AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- diff -x.info* -rc2P gsl-1.3/blas/Makefile.in gsl-1.4/blas/Makefile.in *** gsl-1.3/blas/Makefile.in Wed Dec 18 22:38:07 2002 --- gsl-1.4/blas/Makefile.in Thu Aug 14 12:30:36 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslblas.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslblas.la *************** *** 92,178 **** libgslblas_la_SOURCES = blas.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslblas_la_LDFLAGS = ! libgslblas_la_LIBADD = ! libgslblas_la_OBJECTS = blas.lo ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslblas_la_SOURCES) - OBJECTS = $(libgslblas_la_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps blas/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 148,215 ---- libgslblas_la_SOURCES = blas.c + subdir = blas + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslblas_la_LDFLAGS = ! libgslblas_la_LIBADD = ! am_libgslblas_la_OBJECTS = blas.lo ! libgslblas_la_OBJECTS = $(am_libgslblas_la_OBJECTS) ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslblas_la_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO SOURCES = $(libgslblas_la_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu blas/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ ! dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ! test "$$dir" = "$$p" && dir=.; \ ! echo "rm -f \"$${dir}/so_locations\""; \ ! rm -f "$${dir}/so_locations"; \ ! done ! libgslblas.la: $(libgslblas_la_OBJECTS) $(libgslblas_la_DEPENDENCIES) ! $(LINK) $(libgslblas_la_LDFLAGS) $(libgslblas_la_OBJECTS) $(libgslblas_la_LIBADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 183,279 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslblas.la: $(libgslblas_la_OBJECTS) $(libgslblas_la_DEPENDENCIES) ! $(LINK) $(libgslblas_la_LDFLAGS) $(libgslblas_la_OBJECTS) $(libgslblas_la_LIBADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! ! subdir = blas distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 220,349 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 282,327 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-tags \ ! mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-tags clean-generic mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-tags distclean-generic \ ! clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-tags maintainer-clean-generic \ ! distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ ! check-am installcheck-am installcheck install-exec-am install-exec \ ! install-data-am install-data install-am install uninstall-am uninstall \ ! all-redirect all-am all installdirs mostlyclean-generic \ ! distclean-generic clean-generic maintainer-clean-generic clean \ ! mostlyclean distclean maintainer-clean --- 352,418 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ ! mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ! clean-libtool clean-noinstLTLIBRARIES ctags distclean \ ! distclean-compile distclean-generic distclean-libtool \ ! distclean-tags distdir dvi dvi-am info info-am install \ ! install-am install-data install-data-am install-exec \ ! install-exec-am install-info install-info-am install-man \ ! install-pkgincludeHEADERS install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-compile \ ! mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ! tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS *************** *** 330,334 **** #test_LDADD = libgslblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la #test_SOURCES = test_blas_raw.c test_cases.c test_cases.h - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 421,424 ---- diff -x.info* -rc2P gsl-1.3/blas/blas.c gsl-1.4/blas/blas.c *** gsl-1.3/blas/blas.c Mon Mar 18 19:38:44 2002 --- gsl-1.4/blas/blas.c Fri Jul 25 15:18:07 2003 *************** *** 44,54 **** int gsl_blas_sdsdot (float alpha, const gsl_vector_float * X, ! const gsl_vector_float * Y, float *result) { if (X->size == Y->size) { *result = ! cblas_sdsdot (INT (X->size), alpha, X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 44,54 ---- int gsl_blas_sdsdot (float alpha, const gsl_vector_float * X, ! const gsl_vector_float * Y, float *result) { if (X->size == Y->size) { *result = ! cblas_sdsdot (INT (X->size), alpha, X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 61,71 **** int gsl_blas_dsdot (const gsl_vector_float * X, const gsl_vector_float * Y, ! double *result) { if (X->size == Y->size) { *result = ! cblas_dsdot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 61,71 ---- int gsl_blas_dsdot (const gsl_vector_float * X, const gsl_vector_float * Y, ! double *result) { if (X->size == Y->size) { *result = ! cblas_dsdot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 78,88 **** int gsl_blas_sdot (const gsl_vector_float * X, const gsl_vector_float * Y, ! float *result) { if (X->size == Y->size) { *result = ! cblas_sdot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 78,88 ---- int gsl_blas_sdot (const gsl_vector_float * X, const gsl_vector_float * Y, ! float *result) { if (X->size == Y->size) { *result = ! cblas_sdot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 99,104 **** { *result = ! cblas_ddot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 99,104 ---- { *result = ! cblas_ddot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 112,121 **** int gsl_blas_cdotu (const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, gsl_complex_float * dotu) { if (X->size == Y->size) { cblas_cdotu_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotu)); return GSL_SUCCESS; } --- 112,121 ---- int gsl_blas_cdotu (const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, gsl_complex_float * dotu) { if (X->size == Y->size) { cblas_cdotu_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotu)); return GSL_SUCCESS; } *************** *** 129,138 **** int gsl_blas_cdotc (const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, gsl_complex_float * dotc) { if (X->size == Y->size) { cblas_cdotc_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotc)); return GSL_SUCCESS; } --- 129,138 ---- int gsl_blas_cdotc (const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, gsl_complex_float * dotc) { if (X->size == Y->size) { cblas_cdotc_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotc)); return GSL_SUCCESS; } *************** *** 146,155 **** int gsl_blas_zdotu (const gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_complex * dotu) { if (X->size == Y->size) { cblas_zdotu_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotu)); return GSL_SUCCESS; } --- 146,155 ---- int gsl_blas_zdotu (const gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_complex * dotu) { if (X->size == Y->size) { cblas_zdotu_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotu)); return GSL_SUCCESS; } *************** *** 163,172 **** int gsl_blas_zdotc (const gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_complex * dotc) { if (X->size == Y->size) { cblas_zdotc_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotc)); return GSL_SUCCESS; } --- 163,172 ---- int gsl_blas_zdotc (const gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_complex * dotc) { if (X->size == Y->size) { cblas_zdotc_sub (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), GSL_COMPLEX_P (dotc)); return GSL_SUCCESS; } *************** *** 264,268 **** { cblas_sswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 264,268 ---- { cblas_sswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 279,283 **** { cblas_dswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 279,283 ---- { cblas_dswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 294,298 **** { cblas_cswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 294,298 ---- { cblas_cswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 309,313 **** { cblas_zswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 309,313 ---- { cblas_zswap (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 327,331 **** { cblas_scopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 327,331 ---- { cblas_scopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 342,346 **** { cblas_dcopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 342,346 ---- { cblas_dcopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 353,362 **** int gsl_blas_ccopy (const gsl_vector_complex_float * X, ! gsl_vector_complex_float * Y) { if (X->size == Y->size) { cblas_ccopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 353,362 ---- int gsl_blas_ccopy (const gsl_vector_complex_float * X, ! gsl_vector_complex_float * Y) { if (X->size == Y->size) { cblas_ccopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 373,377 **** { cblas_zcopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 373,377 ---- { cblas_zcopy (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 391,395 **** { cblas_saxpy (INT (X->size), alpha, X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 391,395 ---- { cblas_saxpy (INT (X->size), alpha, X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 406,410 **** { cblas_daxpy (INT (X->size), alpha, X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 406,410 ---- { cblas_daxpy (INT (X->size), alpha, X->data, INT (X->stride), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 417,427 **** int gsl_blas_caxpy (const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! gsl_vector_complex_float * Y) { if (X->size == Y->size) { cblas_caxpy (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride)); return GSL_SUCCESS; } --- 417,427 ---- int gsl_blas_caxpy (const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! gsl_vector_complex_float * Y) { if (X->size == Y->size) { cblas_caxpy (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride)); return GSL_SUCCESS; } *************** *** 434,443 **** int gsl_blas_zaxpy (const gsl_complex alpha, const gsl_vector_complex * X, ! gsl_vector_complex * Y) { if (X->size == Y->size) { cblas_zaxpy (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride)); return GSL_SUCCESS; } --- 434,443 ---- int gsl_blas_zaxpy (const gsl_complex alpha, const gsl_vector_complex * X, ! gsl_vector_complex * Y) { if (X->size == Y->size) { cblas_zaxpy (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride)); return GSL_SUCCESS; } *************** *** 472,476 **** { cblas_srot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), c, s); return GSL_SUCCESS; } --- 472,476 ---- { cblas_srot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), c, s); return GSL_SUCCESS; } *************** *** 487,491 **** { cblas_drot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), c, s); return GSL_SUCCESS; } --- 487,491 ---- { cblas_drot (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), c, s); return GSL_SUCCESS; } *************** *** 522,526 **** { cblas_srotm (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), P); return GSL_SUCCESS; } --- 522,526 ---- { cblas_srotm (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), P); return GSL_SUCCESS; } *************** *** 537,541 **** { cblas_drotm (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), P); return GSL_SUCCESS; } --- 537,541 ---- { cblas_drotm (INT (X->size), X->data, INT (X->stride), Y->data, ! INT (Y->stride), P); return GSL_SUCCESS; } *************** *** 565,569 **** { cblas_cscal (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride)); } --- 565,569 ---- { cblas_cscal (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride)); } *************** *** 572,576 **** { cblas_zscal (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride)); } --- 572,576 ---- { cblas_zscal (INT (X->size), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride)); } *************** *** 596,601 **** int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA, float alpha, ! const gsl_matrix_float * A, const gsl_vector_float * X, ! float beta, gsl_vector_float * Y) { const size_t M = A->size1; --- 596,601 ---- int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TransA, float alpha, ! const gsl_matrix_float * A, const gsl_vector_float * X, ! float beta, gsl_vector_float * Y) { const size_t M = A->size1; *************** *** 606,611 **** { cblas_sgemv (CblasRowMajor, TransA, INT (M), INT (N), alpha, A->data, ! INT (A->tda), X->data, INT (X->stride), beta, Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 606,611 ---- { cblas_sgemv (CblasRowMajor, TransA, INT (M), INT (N), alpha, A->data, ! INT (A->tda), X->data, INT (X->stride), beta, Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 619,623 **** int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA, double alpha, const gsl_matrix * A, ! const gsl_vector * X, double beta, gsl_vector * Y) { const size_t M = A->size1; --- 619,623 ---- int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TransA, double alpha, const gsl_matrix * A, ! const gsl_vector * X, double beta, gsl_vector * Y) { const size_t M = A->size1; *************** *** 628,633 **** { cblas_dgemv (CblasRowMajor, TransA, INT (M), INT (N), alpha, A->data, ! INT (A->tda), X->data, INT (X->stride), beta, Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 628,633 ---- { cblas_dgemv (CblasRowMajor, TransA, INT (M), INT (N), alpha, A->data, ! INT (A->tda), X->data, INT (X->stride), beta, Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 641,647 **** int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_vector_complex_float * X, ! const gsl_complex_float beta, gsl_vector_complex_float * Y) { const size_t M = A->size1; --- 641,647 ---- int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_vector_complex_float * X, ! const gsl_complex_float beta, gsl_vector_complex_float * Y) { const size_t M = A->size1; *************** *** 653,659 **** { cblas_cgemv (CblasRowMajor, TransA, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), X->data, ! INT (X->stride), GSL_COMPLEX_P (&beta), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 653,659 ---- { cblas_cgemv (CblasRowMajor, TransA, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), X->data, ! INT (X->stride), GSL_COMPLEX_P (&beta), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 667,672 **** int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex alpha, ! const gsl_matrix_complex * A, const gsl_vector_complex * X, ! const gsl_complex beta, gsl_vector_complex * Y) { const size_t M = A->size1; --- 667,672 ---- int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TransA, const gsl_complex alpha, ! const gsl_matrix_complex * A, const gsl_vector_complex * X, ! const gsl_complex beta, gsl_vector_complex * Y) { const size_t M = A->size1; *************** *** 678,684 **** { cblas_zgemv (CblasRowMajor, TransA, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), X->data, ! INT (X->stride), GSL_COMPLEX_P (&beta), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } --- 678,684 ---- { cblas_zgemv (CblasRowMajor, TransA, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), X->data, ! INT (X->stride), GSL_COMPLEX_P (&beta), Y->data, ! INT (Y->stride)); return GSL_SUCCESS; } *************** *** 695,701 **** int gsl_blas_chemv (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_vector_complex_float * X, ! const gsl_complex_float beta, gsl_vector_complex_float * Y) { const size_t M = A->size1; --- 695,701 ---- int gsl_blas_chemv (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_vector_complex_float * X, ! const gsl_complex_float beta, gsl_vector_complex_float * Y) { const size_t M = A->size1; *************** *** 712,717 **** cblas_chemv (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), A->data, ! INT (A->tda), X->data, INT (X->stride), GSL_COMPLEX_P (&beta), ! Y->data, INT (Y->stride)); return GSL_SUCCESS; } --- 712,717 ---- cblas_chemv (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), A->data, ! INT (A->tda), X->data, INT (X->stride), GSL_COMPLEX_P (&beta), ! Y->data, INT (Y->stride)); return GSL_SUCCESS; } *************** *** 719,724 **** int gsl_blas_zhemv (CBLAS_UPLO_t Uplo, const gsl_complex alpha, ! const gsl_matrix_complex * A, const gsl_vector_complex * X, ! const gsl_complex beta, gsl_vector_complex * Y) { const size_t M = A->size1; --- 719,724 ---- int gsl_blas_zhemv (CBLAS_UPLO_t Uplo, const gsl_complex alpha, ! const gsl_matrix_complex * A, const gsl_vector_complex * X, ! const gsl_complex beta, gsl_vector_complex * Y) { const size_t M = A->size1; *************** *** 735,740 **** cblas_zhemv (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), A->data, ! INT (A->tda), X->data, INT (X->stride), GSL_COMPLEX_P (&beta), ! Y->data, INT (Y->stride)); return GSL_SUCCESS; } --- 735,740 ---- cblas_zhemv (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), A->data, ! INT (A->tda), X->data, INT (X->stride), GSL_COMPLEX_P (&beta), ! Y->data, INT (Y->stride)); return GSL_SUCCESS; } *************** *** 745,749 **** int gsl_blas_ssymv (CBLAS_UPLO_t Uplo, float alpha, const gsl_matrix_float * A, ! const gsl_vector_float * X, float beta, gsl_vector_float * Y) { const size_t M = A->size1; --- 745,749 ---- int gsl_blas_ssymv (CBLAS_UPLO_t Uplo, float alpha, const gsl_matrix_float * A, ! const gsl_vector_float * X, float beta, gsl_vector_float * Y) { const size_t M = A->size1; *************** *** 760,764 **** cblas_ssymv (CblasRowMajor, Uplo, INT (N), alpha, A->data, INT (A->tda), ! X->data, INT (X->stride), beta, Y->data, INT (Y->stride)); return GSL_SUCCESS; } --- 760,764 ---- cblas_ssymv (CblasRowMajor, Uplo, INT (N), alpha, A->data, INT (A->tda), ! X->data, INT (X->stride), beta, Y->data, INT (Y->stride)); return GSL_SUCCESS; } *************** *** 766,770 **** int gsl_blas_dsymv (CBLAS_UPLO_t Uplo, double alpha, const gsl_matrix * A, ! const gsl_vector * X, double beta, gsl_vector * Y) { const size_t M = A->size1; --- 766,770 ---- int gsl_blas_dsymv (CBLAS_UPLO_t Uplo, double alpha, const gsl_matrix * A, ! const gsl_vector * X, double beta, gsl_vector * Y) { const size_t M = A->size1; *************** *** 781,785 **** cblas_dsymv (CblasRowMajor, Uplo, INT (N), alpha, A->data, INT (A->tda), ! X->data, INT (X->stride), beta, Y->data, INT (Y->stride)); return GSL_SUCCESS; } --- 781,785 ---- cblas_dsymv (CblasRowMajor, Uplo, INT (N), alpha, A->data, INT (A->tda), ! X->data, INT (X->stride), beta, Y->data, INT (Y->stride)); return GSL_SUCCESS; } *************** *** 790,795 **** int gsl_blas_strmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_float * A, ! gsl_vector_float * X) { const size_t M = A->size1; --- 790,795 ---- int gsl_blas_strmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_float * A, ! gsl_vector_float * X) { const size_t M = A->size1; *************** *** 806,810 **** cblas_strmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 806,810 ---- cblas_strmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 813,817 **** int gsl_blas_dtrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * X) { const size_t M = A->size1; --- 813,817 ---- int gsl_blas_dtrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * X) { const size_t M = A->size1; *************** *** 828,832 **** cblas_dtrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 828,832 ---- cblas_dtrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 835,840 **** int gsl_blas_ctrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, ! gsl_vector_complex_float * X) { const size_t M = A->size1; --- 835,840 ---- int gsl_blas_ctrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, ! gsl_vector_complex_float * X) { const size_t M = A->size1; *************** *** 851,855 **** cblas_ctrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 851,855 ---- cblas_ctrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 858,863 **** int gsl_blas_ztrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, ! gsl_vector_complex * X) { const size_t M = A->size1; --- 858,863 ---- int gsl_blas_ztrmv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, ! gsl_vector_complex * X) { const size_t M = A->size1; *************** *** 874,878 **** cblas_ztrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 874,878 ---- cblas_ztrmv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 883,888 **** int gsl_blas_strsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_float * A, ! gsl_vector_float * X) { const size_t M = A->size1; --- 883,888 ---- int gsl_blas_strsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_float * A, ! gsl_vector_float * X) { const size_t M = A->size1; *************** *** 899,903 **** cblas_strsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 899,903 ---- cblas_strsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 906,910 **** int gsl_blas_dtrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * X) { const size_t M = A->size1; --- 906,910 ---- int gsl_blas_dtrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix * A, gsl_vector * X) { const size_t M = A->size1; *************** *** 921,925 **** cblas_dtrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 921,925 ---- cblas_dtrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 928,933 **** int gsl_blas_ctrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, ! gsl_vector_complex_float * X) { const size_t M = A->size1; --- 928,933 ---- int gsl_blas_ctrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex_float * A, ! gsl_vector_complex_float * X) { const size_t M = A->size1; *************** *** 944,948 **** cblas_ctrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 944,948 ---- cblas_ctrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 951,956 **** int gsl_blas_ztrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, ! gsl_vector_complex * X) { const size_t M = A->size1; --- 951,956 ---- int gsl_blas_ztrsv (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t TransA, ! CBLAS_DIAG_t Diag, const gsl_matrix_complex * A, ! gsl_vector_complex * X) { const size_t M = A->size1; *************** *** 967,971 **** cblas_ztrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } --- 967,971 ---- cblas_ztrsv (CblasRowMajor, Uplo, TransA, Diag, INT (N), A->data, ! INT (A->tda), X->data, INT (X->stride)); return GSL_SUCCESS; } *************** *** 976,980 **** int gsl_blas_sger (float alpha, const gsl_vector_float * X, ! const gsl_vector_float * Y, gsl_matrix_float * A) { const size_t M = A->size1; --- 976,980 ---- int gsl_blas_sger (float alpha, const gsl_vector_float * X, ! const gsl_vector_float * Y, gsl_matrix_float * A) { const size_t M = A->size1; *************** *** 984,989 **** { cblas_sger (CblasRowMajor, INT (M), INT (N), alpha, X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } --- 984,989 ---- { cblas_sger (CblasRowMajor, INT (M), INT (N), alpha, X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } *************** *** 997,1001 **** int gsl_blas_dger (double alpha, const gsl_vector * X, const gsl_vector * Y, ! gsl_matrix * A) { const size_t M = A->size1; --- 997,1001 ---- int gsl_blas_dger (double alpha, const gsl_vector * X, const gsl_vector * Y, ! gsl_matrix * A) { const size_t M = A->size1; *************** *** 1005,1010 **** { cblas_dger (CblasRowMajor, INT (M), INT (N), alpha, X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } --- 1005,1010 ---- { cblas_dger (CblasRowMajor, INT (M), INT (N), alpha, X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } *************** *** 1020,1026 **** int gsl_blas_cgeru (const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; --- 1020,1026 ---- int gsl_blas_cgeru (const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; *************** *** 1030,1035 **** { cblas_cgeru (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1030,1035 ---- { cblas_cgeru (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1042,1046 **** int gsl_blas_zgeru (const gsl_complex alpha, const gsl_vector_complex * X, ! const gsl_vector_complex * Y, gsl_matrix_complex * A) { const size_t M = A->size1; --- 1042,1046 ---- int gsl_blas_zgeru (const gsl_complex alpha, const gsl_vector_complex * X, ! const gsl_vector_complex * Y, gsl_matrix_complex * A) { const size_t M = A->size1; *************** *** 1050,1055 **** { cblas_zgeru (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1050,1055 ---- { cblas_zgeru (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1065,1071 **** int gsl_blas_cgerc (const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; --- 1065,1071 ---- int gsl_blas_cgerc (const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; *************** *** 1075,1080 **** { cblas_cgerc (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1075,1080 ---- { cblas_cgerc (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1088,1092 **** int gsl_blas_zgerc (const gsl_complex alpha, const gsl_vector_complex * X, ! const gsl_vector_complex * Y, gsl_matrix_complex * A) { const size_t M = A->size1; --- 1088,1092 ---- int gsl_blas_zgerc (const gsl_complex alpha, const gsl_vector_complex * X, ! const gsl_vector_complex * Y, gsl_matrix_complex * A) { const size_t M = A->size1; *************** *** 1096,1101 **** { cblas_zgerc (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1096,1101 ---- { cblas_zgerc (CblasRowMajor, INT (M), INT (N), GSL_COMPLEX_P (&alpha), ! X->data, INT (X->stride), Y->data, INT (Y->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1110,1115 **** int gsl_blas_cher (CBLAS_UPLO_t Uplo, float alpha, ! const gsl_vector_complex_float * X, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; --- 1110,1115 ---- int gsl_blas_cher (CBLAS_UPLO_t Uplo, float alpha, ! const gsl_vector_complex_float * X, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; *************** *** 1126,1130 **** cblas_cher (CblasRowMajor, Uplo, INT (M), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1126,1130 ---- cblas_cher (CblasRowMajor, Uplo, INT (M), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1133,1137 **** int gsl_blas_zher (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector_complex * X, ! gsl_matrix_complex * A) { const size_t M = A->size1; --- 1133,1137 ---- int gsl_blas_zher (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector_complex * X, ! gsl_matrix_complex * A) { const size_t M = A->size1; *************** *** 1148,1152 **** cblas_zher (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1148,1152 ---- cblas_zher (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1157,1163 **** int gsl_blas_cher2 (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; --- 1157,1163 ---- int gsl_blas_cher2 (CBLAS_UPLO_t Uplo, const gsl_complex_float alpha, ! const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, ! gsl_matrix_complex_float * A) { const size_t M = A->size1; *************** *** 1174,1179 **** cblas_cher2 (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } --- 1174,1179 ---- cblas_cher2 (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } *************** *** 1182,1187 **** int gsl_blas_zher2 (CBLAS_UPLO_t Uplo, const gsl_complex alpha, ! const gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_matrix_complex * A) { const size_t M = A->size1; --- 1182,1187 ---- int gsl_blas_zher2 (CBLAS_UPLO_t Uplo, const gsl_complex alpha, ! const gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_matrix_complex * A) { const size_t M = A->size1; *************** *** 1198,1203 **** cblas_zher2 (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } --- 1198,1203 ---- cblas_zher2 (CblasRowMajor, Uplo, INT (N), GSL_COMPLEX_P (&alpha), X->data, ! INT (X->stride), Y->data, INT (Y->stride), A->data, ! INT (A->tda)); return GSL_SUCCESS; } *************** *** 1208,1212 **** int gsl_blas_ssyr (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * X, ! gsl_matrix_float * A) { const size_t M = A->size1; --- 1208,1212 ---- int gsl_blas_ssyr (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * X, ! gsl_matrix_float * A) { const size_t M = A->size1; *************** *** 1223,1227 **** cblas_ssyr (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1223,1227 ---- cblas_ssyr (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1230,1234 **** int gsl_blas_dsyr (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * X, ! gsl_matrix * A) { const size_t M = A->size1; --- 1230,1234 ---- int gsl_blas_dsyr (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * X, ! gsl_matrix * A) { const size_t M = A->size1; *************** *** 1245,1249 **** cblas_dsyr (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1245,1249 ---- cblas_dsyr (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1254,1258 **** int gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * X, ! const gsl_vector_float * Y, gsl_matrix_float * A) { const size_t M = A->size1; --- 1254,1258 ---- int gsl_blas_ssyr2 (CBLAS_UPLO_t Uplo, float alpha, const gsl_vector_float * X, ! const gsl_vector_float * Y, gsl_matrix_float * A) { const size_t M = A->size1; *************** *** 1269,1273 **** cblas_ssyr2 (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! Y->data, INT (Y->stride), A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1269,1273 ---- cblas_ssyr2 (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! Y->data, INT (Y->stride), A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1276,1280 **** int gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * X, ! const gsl_vector * Y, gsl_matrix * A) { const size_t M = A->size1; --- 1276,1280 ---- int gsl_blas_dsyr2 (CBLAS_UPLO_t Uplo, double alpha, const gsl_vector * X, ! const gsl_vector * Y, gsl_matrix * A) { const size_t M = A->size1; *************** *** 1291,1295 **** cblas_dsyr2 (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! Y->data, INT (Y->stride), A->data, INT (A->tda)); return GSL_SUCCESS; } --- 1291,1295 ---- cblas_dsyr2 (CblasRowMajor, Uplo, INT (N), alpha, X->data, INT (X->stride), ! Y->data, INT (Y->stride), A->data, INT (A->tda)); return GSL_SUCCESS; } *************** *** 1307,1312 **** int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! float alpha, const gsl_matrix_float * A, ! const gsl_matrix_float * B, float beta, gsl_matrix_float * C) { const size_t M = C->size1; --- 1307,1312 ---- int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! float alpha, const gsl_matrix_float * A, ! const gsl_matrix_float * B, float beta, gsl_matrix_float * C) { const size_t M = C->size1; *************** *** 1317,1325 **** const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_sgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1317,1325 ---- const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_sgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1333,1338 **** int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! double alpha, const gsl_matrix * A, const gsl_matrix * B, ! double beta, gsl_matrix * C) { const size_t M = C->size1; --- 1333,1338 ---- int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! double alpha, const gsl_matrix * A, const gsl_matrix * B, ! double beta, gsl_matrix * C) { const size_t M = C->size1; *************** *** 1343,1351 **** const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_dgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1343,1351 ---- const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_dgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1359,1366 **** int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1359,1366 ---- int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1371,1380 **** const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_cgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1371,1380 ---- const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_cgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1388,1394 **** int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; --- 1388,1394 ---- int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TransA, CBLAS_TRANSPOSE_t TransB, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1399,1408 **** const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_zgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1399,1408 ---- const size_t NB = (TransB == CblasNoTrans) ? B->size2 : B->size1; ! if (M == MA && N == NB && NA == MB) /* [MxN] = [MAxNA][MBxNB] */ { cblas_zgemm (CblasRowMajor, TransA, TransB, INT (M), INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1418,1423 **** int gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, float alpha, ! const gsl_matrix_float * A, const gsl_matrix_float * B, ! float beta, gsl_matrix_float * C) { const size_t M = C->size1; --- 1418,1423 ---- int gsl_blas_ssymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, float alpha, ! const gsl_matrix_float * A, const gsl_matrix_float * B, ! float beta, gsl_matrix_float * C) { const size_t M = C->size1; *************** *** 1437,1442 **** { cblas_ssymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), alpha, ! A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1437,1442 ---- { cblas_ssymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), alpha, ! A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1451,1456 **** int gsl_blas_dsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, double alpha, ! const gsl_matrix * A, const gsl_matrix * B, double beta, ! gsl_matrix * C) { const size_t M = C->size1; --- 1451,1456 ---- int gsl_blas_dsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, double alpha, ! const gsl_matrix * A, const gsl_matrix * B, double beta, ! gsl_matrix * C) { const size_t M = C->size1; *************** *** 1470,1475 **** { cblas_dsymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), alpha, ! A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1470,1475 ---- { cblas_dsymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), alpha, ! A->data, INT (A->tda), B->data, INT (B->tda), beta, ! C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1483,1490 **** int gsl_blas_csymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1483,1490 ---- int gsl_blas_csymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1504,1510 **** { cblas_csymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1504,1510 ---- { cblas_csymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1517,1523 **** int gsl_blas_zsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; --- 1517,1523 ---- int gsl_blas_zsymm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1537,1543 **** { cblas_zsymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1537,1543 ---- { cblas_zsymm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1553,1560 **** int gsl_blas_chemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1553,1560 ---- int gsl_blas_chemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1574,1580 **** { cblas_chemm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1574,1580 ---- { cblas_chemm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1589,1595 **** int gsl_blas_zhemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; --- 1589,1595 ---- int gsl_blas_zhemm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1609,1615 **** { cblas_zhemm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1609,1615 ---- { cblas_zhemm (CblasRowMajor, Side, Uplo, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1624,1628 **** int gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, ! const gsl_matrix_float * A, float beta, gsl_matrix_float * C) { const size_t M = C->size1; --- 1624,1628 ---- int gsl_blas_ssyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, ! const gsl_matrix_float * A, float beta, gsl_matrix_float * C) { const size_t M = C->size1; *************** *** 1640,1644 **** cblas_ssyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1640,1644 ---- cblas_ssyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1647,1651 **** int gsl_blas_dsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, ! const gsl_matrix * A, double beta, gsl_matrix * C) { const size_t M = C->size1; --- 1647,1651 ---- int gsl_blas_dsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, ! const gsl_matrix * A, double beta, gsl_matrix * C) { const size_t M = C->size1; *************** *** 1663,1667 **** cblas_dsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; --- 1663,1667 ---- cblas_dsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; *************** *** 1671,1677 **** int gsl_blas_csyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1671,1677 ---- int gsl_blas_csyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1689,1694 **** cblas_csyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (MA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), ! GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1689,1694 ---- cblas_csyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (MA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), ! GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1697,1702 **** int gsl_blas_zsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_complex beta, gsl_matrix_complex * C) { const size_t M = C->size1; --- 1697,1702 ---- int gsl_blas_zsyrk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_complex beta, gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1714,1719 **** cblas_zsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), ! GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1714,1719 ---- cblas_zsyrk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), ! GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1723,1728 **** int gsl_blas_cherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, ! const gsl_matrix_complex_float * A, float beta, ! gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1723,1728 ---- int gsl_blas_cherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, ! const gsl_matrix_complex_float * A, float beta, ! gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1740,1744 **** cblas_cherk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1740,1744 ---- cblas_cherk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1747,1752 **** int gsl_blas_zherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, ! const gsl_matrix_complex * A, double beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; --- 1747,1752 ---- int gsl_blas_zherk (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, ! const gsl_matrix_complex * A, double beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1764,1768 **** cblas_zherk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1764,1768 ---- cblas_zherk (CblasRowMajor, Uplo, Trans, INT (N), INT (K), alpha, A->data, ! INT (A->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1772,1777 **** int gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, ! const gsl_matrix_float * A, const gsl_matrix_float * B, ! float beta, gsl_matrix_float * C) { const size_t M = C->size1; --- 1772,1777 ---- int gsl_blas_ssyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, float alpha, ! const gsl_matrix_float * A, const gsl_matrix_float * B, ! float beta, gsl_matrix_float * C) { const size_t M = C->size1; *************** *** 1792,1797 **** cblas_ssyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), alpha, A->data, ! INT (A->tda), B->data, INT (B->tda), beta, C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1792,1797 ---- cblas_ssyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), alpha, A->data, ! INT (A->tda), B->data, INT (B->tda), beta, C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1800,1805 **** int gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, ! const gsl_matrix * A, const gsl_matrix * B, double beta, ! gsl_matrix * C) { const size_t M = C->size1; --- 1800,1805 ---- int gsl_blas_dsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, double alpha, ! const gsl_matrix * A, const gsl_matrix * B, double beta, ! gsl_matrix * C) { const size_t M = C->size1; *************** *** 1820,1825 **** cblas_dsyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), alpha, A->data, ! INT (A->tda), B->data, INT (B->tda), beta, C->data, ! INT (C->tda)); return GSL_SUCCESS; } --- 1820,1825 ---- cblas_dsyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), alpha, A->data, ! INT (A->tda), B->data, INT (B->tda), beta, C->data, ! INT (C->tda)); return GSL_SUCCESS; } *************** *** 1828,1835 **** int gsl_blas_csyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1828,1835 ---- int gsl_blas_csyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, ! const gsl_complex_float beta, gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1850,1855 **** cblas_csyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1850,1855 ---- cblas_csyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1859,1865 **** int gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; --- 1859,1865 ---- int gsl_blas_zsyr2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1880,1885 **** cblas_zsyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } --- 1880,1885 ---- cblas_zsyr2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), GSL_COMPLEX_P (&beta), C->data, INT (C->tda)); return GSL_SUCCESS; } *************** *** 1889,1896 **** int gsl_blas_cher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, float beta, ! gsl_matrix_complex_float * C) { const size_t M = C->size1; --- 1889,1896 ---- int gsl_blas_cher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! const gsl_matrix_complex_float * B, float beta, ! gsl_matrix_complex_float * C) { const size_t M = C->size1; *************** *** 1911,1916 **** cblas_cher2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; --- 1911,1916 ---- cblas_cher2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; *************** *** 1920,1926 **** int gsl_blas_zher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, double beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; --- 1920,1926 ---- int gsl_blas_zher2k (CBLAS_UPLO_t Uplo, CBLAS_TRANSPOSE_t Trans, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, double beta, ! gsl_matrix_complex * C) { const size_t M = C->size1; *************** *** 1941,1946 **** cblas_zher2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; --- 1941,1946 ---- cblas_zher2k (CblasRowMajor, Uplo, Trans, INT (N), INT (NA), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda), beta, C->data, INT (C->tda)); return GSL_SUCCESS; *************** *** 1951,1956 **** int gsl_blas_strmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, ! const gsl_matrix_float * A, gsl_matrix_float * B) { const size_t M = B->size1; --- 1951,1956 ---- int gsl_blas_strmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, ! const gsl_matrix_float * A, gsl_matrix_float * B) { const size_t M = B->size1; *************** *** 1967,1971 **** { cblas_strmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } --- 1967,1971 ---- { cblas_strmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } *************** *** 1979,1984 **** int gsl_blas_dtrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, ! const gsl_matrix * A, gsl_matrix * B) { const size_t M = B->size1; --- 1979,1984 ---- int gsl_blas_dtrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, ! const gsl_matrix * A, gsl_matrix * B) { const size_t M = B->size1; *************** *** 1995,1999 **** { cblas_dtrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } --- 1995,1999 ---- { cblas_dtrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } *************** *** 2007,2014 **** int gsl_blas_ctrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! gsl_matrix_complex_float * B) { const size_t M = B->size1; --- 2007,2014 ---- int gsl_blas_ctrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! gsl_matrix_complex_float * B) { const size_t M = B->size1; *************** *** 2025,2030 **** { cblas_ctrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } --- 2025,2030 ---- { cblas_ctrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } *************** *** 2038,2044 **** int gsl_blas_ztrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! gsl_matrix_complex * B) { const size_t M = B->size1; --- 2038,2044 ---- int gsl_blas_ztrmm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! gsl_matrix_complex * B) { const size_t M = B->size1; *************** *** 2055,2060 **** { cblas_ztrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } --- 2055,2060 ---- { cblas_ztrmm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } *************** *** 2070,2075 **** int gsl_blas_strsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, ! const gsl_matrix_float * A, gsl_matrix_float * B) { const size_t M = B->size1; --- 2070,2075 ---- int gsl_blas_strsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, float alpha, ! const gsl_matrix_float * A, gsl_matrix_float * B) { const size_t M = B->size1; *************** *** 2086,2090 **** { cblas_strsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } --- 2086,2090 ---- { cblas_strsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } *************** *** 2098,2103 **** int gsl_blas_dtrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, ! const gsl_matrix * A, gsl_matrix * B) { const size_t M = B->size1; --- 2098,2103 ---- int gsl_blas_dtrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, double alpha, ! const gsl_matrix * A, gsl_matrix * B) { const size_t M = B->size1; *************** *** 2114,2118 **** { cblas_dtrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } --- 2114,2118 ---- { cblas_dtrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! alpha, A->data, INT (A->tda), B->data, INT (B->tda)); return GSL_SUCCESS; } *************** *** 2126,2133 **** int gsl_blas_ctrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! gsl_matrix_complex_float * B) { const size_t M = B->size1; --- 2126,2133 ---- int gsl_blas_ctrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex_float alpha, ! const gsl_matrix_complex_float * A, ! gsl_matrix_complex_float * B) { const size_t M = B->size1; *************** *** 2144,2149 **** { cblas_ctrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } --- 2144,2149 ---- { cblas_ctrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } *************** *** 2157,2163 **** int gsl_blas_ztrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! gsl_matrix_complex * B) { const size_t M = B->size1; --- 2157,2163 ---- int gsl_blas_ztrsm (CBLAS_SIDE_t Side, CBLAS_UPLO_t Uplo, ! CBLAS_TRANSPOSE_t TransA, CBLAS_DIAG_t Diag, ! const gsl_complex alpha, const gsl_matrix_complex * A, ! gsl_matrix_complex * B) { const size_t M = B->size1; *************** *** 2174,2179 **** { cblas_ztrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } --- 2174,2179 ---- { cblas_ztrsm (CblasRowMajor, Side, Uplo, TransA, Diag, INT (M), INT (N), ! GSL_COMPLEX_P (&alpha), A->data, INT (A->tda), B->data, ! INT (B->tda)); return GSL_SUCCESS; } diff -x.info* -rc2P gsl-1.3/blas/gsl_blas.h gsl-1.4/blas/gsl_blas.h *** gsl-1.3/blas/gsl_blas.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/blas/gsl_blas.h Fri Jul 25 15:18:17 2003 *************** *** 61,71 **** int gsl_blas_sdot (const gsl_vector_float * X, const gsl_vector_float * Y, ! float * result ! ); int gsl_blas_ddot (const gsl_vector * X, const gsl_vector * Y, ! double * result ! ); --- 61,71 ---- int gsl_blas_sdot (const gsl_vector_float * X, const gsl_vector_float * Y, ! float * result ! ); int gsl_blas_ddot (const gsl_vector * X, const gsl_vector * Y, ! double * result ! ); diff -x.info* -rc2P gsl-1.3/block/Makefile.am gsl-1.4/block/Makefile.am *** gsl-1.3/block/Makefile.am Wed Jun 6 17:10:10 2001 --- gsl-1.4/block/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 3,7 **** check_PROGRAMS = test ! pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h INCLUDES= -I$(top_builddir) -I$(top_srcdir) --- 3,7 ---- check_PROGRAMS = test ! pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h gsl_check_range.h INCLUDES= -I$(top_builddir) -I$(top_srcdir) *************** *** 9,13 **** TESTS = test ! test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 9,13 ---- TESTS = test ! test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/block/Makefile.in gsl-1.4/block/Makefile.in *** gsl-1.3/block/Makefile.in Wed Dec 18 22:37:07 2002 --- gsl-1.4/block/Makefile.in Thu Aug 14 12:31:04 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,93 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslblock.la check_PROGRAMS = test ! pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h INCLUDES = -I$(top_builddir) -I$(top_srcdir) --- 60,149 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslblock.la check_PROGRAMS = test ! pkginclude_HEADERS = gsl_block.h gsl_block_char.h gsl_block_complex.h gsl_block_complex_double.h gsl_block_complex_float.h gsl_block_complex_long_double.h gsl_block_double.h gsl_block_float.h gsl_block_int.h gsl_block_long.h gsl_block_long_double.h gsl_block_short.h gsl_block_uchar.h gsl_block_uint.h gsl_block_ulong.h gsl_block_ushort.h gsl_check_range.h INCLUDES = -I$(top_builddir) -I$(top_srcdir) *************** *** 95,99 **** TESTS = test ! test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 151,155 ---- TESTS = test ! test_LDADD = libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c *************** *** 104,195 **** libgslblock_la_SOURCES = init.c file.c block.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslblock_la_LDFLAGS = ! libgslblock_la_LIBADD = ! libgslblock_la_OBJECTS = init.lo file.lo block.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslblock_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps block/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 160,244 ---- libgslblock_la_SOURCES = init.c file.c block.c + subdir = block + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslblock_la_LDFLAGS = ! libgslblock_la_LIBADD = ! am_libgslblock_la_OBJECTS = init.lo file.lo block.lo ! libgslblock_la_OBJECTS = $(am_libgslblock_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in SOURCES = $(libgslblock_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu block/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslblock.la: $(libgslblock_la_OBJECTS) $(libgslblock_la_DEPENDENCIES) + $(LINK) $(libgslblock_la_LDFLAGS) $(libgslblock_la_OBJECTS) $(libgslblock_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 200,336 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslblock.la: $(libgslblock_la_OBJECTS) $(libgslblock_la_DEPENDENCIES) ! $(LINK) $(libgslblock_la_LDFLAGS) $(libgslblock_la_OBJECTS) $(libgslblock_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = block distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 249,453 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 340,389 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 457,523 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/block/fprintf_source.c gsl-1.4/block/fprintf_source.c *** gsl-1.3/block/fprintf_source.c Wed Apr 18 21:52:21 2001 --- gsl-1.4/block/fprintf_source.c Fri Jul 25 15:18:07 2003 *************** *** 18,22 **** */ ! #if !(defined(USES_LONGDOUBLE) && !defined(HAVE_PRINTF_LONGDOUBLE)) int --- 18,22 ---- */ ! #if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) int *************** *** 35,63 **** for (k = 0; k < MULTIPLICITY; k++) ! { ! if (k > 0) ! { ! status = putc (' ', stream); ! ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! } ! status = fprintf (stream, ! format, ! data[MULTIPLICITY * i + k]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } --- 35,63 ---- for (k = 0; k < MULTIPLICITY; k++) ! { ! if (k > 0) ! { ! status = putc (' ', stream); ! ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! } ! status = fprintf (stream, ! format, ! data[MULTIPLICITY * i + k]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } *************** *** 78,94 **** int k; for (k = 0; k < MULTIPLICITY; k++) ! { ATOMIC_IO tmp ; ! int status = fscanf (stream, IN_FORMAT, &tmp) ; data [MULTIPLICITY * i + k] = tmp; ! if (status != 1) { GSL_ERROR ("fscanf failed", GSL_EFAILED); } ! } } --- 78,94 ---- int k; for (k = 0; k < MULTIPLICITY; k++) ! { ATOMIC_IO tmp ; ! int status = fscanf (stream, IN_FORMAT, &tmp) ; data [MULTIPLICITY * i + k] = tmp; ! if (status != 1) { GSL_ERROR ("fscanf failed", GSL_EFAILED); } ! } } *************** *** 112,140 **** for (k = 0; k < MULTIPLICITY; k++) ! { ! if (k > 0) ! { ! status = putc (' ', stream); ! ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! } ! status = fprintf (stream, ! format, ! data[MULTIPLICITY * i * stride + k]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } --- 112,140 ---- for (k = 0; k < MULTIPLICITY; k++) ! { ! if (k > 0) ! { ! status = putc (' ', stream); ! ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! } ! status = fprintf (stream, ! format, ! data[MULTIPLICITY * i * stride + k]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } *************** *** 154,167 **** int k; for (k = 0; k < MULTIPLICITY; k++) ! { ATOMIC_IO tmp; ! int status = fscanf (stream, IN_FORMAT, &tmp) ; data [MULTIPLICITY * i * stride + k] = tmp; ! if (status != 1) ! GSL_ERROR ("fscanf failed", GSL_EFAILED); ! } } --- 154,167 ---- int k; for (k = 0; k < MULTIPLICITY; k++) ! { ATOMIC_IO tmp; ! int status = fscanf (stream, IN_FORMAT, &tmp) ; data [MULTIPLICITY * i * stride + k] = tmp; ! if (status != 1) ! GSL_ERROR ("fscanf failed", GSL_EFAILED); ! } } diff -x.info* -rc2P gsl-1.3/block/fwrite_source.c gsl-1.4/block/fwrite_source.c *** gsl-1.3/block/fwrite_source.c Wed Apr 18 21:52:21 2001 --- gsl-1.4/block/fwrite_source.c Fri Jul 25 15:18:07 2003 *************** *** 61,67 **** if (items != n) ! { ! GSL_ERROR ("fread failed", GSL_EFAILED); ! } } else --- 61,67 ---- if (items != n) ! { ! GSL_ERROR ("fread failed", GSL_EFAILED); ! } } else *************** *** 70,81 **** for (i = 0; i < n; i++) ! { ! size_t item = fread (data + MULTIPLICITY * i * stride, ! MULTIPLICITY * sizeof (ATOMIC), 1, stream); ! if (item != 1) ! { ! GSL_ERROR ("fread failed", GSL_EFAILED); ! } ! } } --- 70,81 ---- for (i = 0; i < n; i++) ! { ! size_t item = fread (data + MULTIPLICITY * i * stride, ! MULTIPLICITY * sizeof (ATOMIC), 1, stream); ! if (item != 1) ! { ! GSL_ERROR ("fread failed", GSL_EFAILED); ! } ! } } *************** *** 93,99 **** if (items != n) ! { ! GSL_ERROR ("fwrite failed", GSL_EFAILED); ! } } else --- 93,99 ---- if (items != n) ! { ! GSL_ERROR ("fwrite failed", GSL_EFAILED); ! } } else *************** *** 102,114 **** for (i = 0; i < n; i++) ! { ! size_t item = fwrite (data + MULTIPLICITY * i * stride, ! MULTIPLICITY * sizeof (ATOMIC), ! 1, stream); ! if (item != 1) ! { ! GSL_ERROR ("fwrite failed", GSL_EFAILED); ! } ! } } --- 102,114 ---- for (i = 0; i < n; i++) ! { ! size_t item = fwrite (data + MULTIPLICITY * i * stride, ! MULTIPLICITY * sizeof (ATOMIC), ! 1, stream); ! if (item != 1) ! { ! GSL_ERROR ("fwrite failed", GSL_EFAILED); ! } ! } } diff -x.info* -rc2P gsl-1.3/block/gsl_block_complex.h gsl-1.4/block/gsl_block_complex.h *** gsl-1.3/block/gsl_block_complex.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/block/gsl_block_complex.h Fri Jul 25 15:18:17 2003 *************** *** 5,12 **** #define GSL_BLOCK_IMAG(z, i) ((z)->data[2*(i) + 1]) ! #ifdef GSL_RANGE_CHECK_OFF ! #define GSL_BLOCK_COMPLEX(zv, i) (GSL_COMPLEX_AT((zv),(i))) ! #else #define GSL_BLOCK_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i)))) #endif --- 5,12 ---- #define GSL_BLOCK_IMAG(z, i) ((z)->data[2*(i) + 1]) ! #if GSL_RANGE_CHECK #define GSL_BLOCK_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i)))) + #else + #define GSL_BLOCK_COMPLEX(zv, i) (GSL_COMPLEX_AT((zv),(i))) #endif diff -x.info* -rc2P gsl-1.3/block/gsl_check_range.h gsl-1.4/block/gsl_check_range.h *** gsl-1.3/block/gsl_check_range.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/block/gsl_check_range.h Fri Jul 25 15:18:17 2003 *************** *** 0 **** --- 1,42 ---- + /* vector/gsl_check_range.h + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #ifndef __GSL_CHECK_RANGE_H__ + #define __GSL_CHECK_RANGE_H__ + + #include + #include + + #undef __BEGIN_DECLS + #undef __END_DECLS + #ifdef __cplusplus + # define __BEGIN_DECLS extern "C" { + # define __END_DECLS } + #else + # define __BEGIN_DECLS /* empty */ + # define __END_DECLS /* empty */ + #endif + + __BEGIN_DECLS + + GSL_VAR int gsl_check_range; + + __END_DECLS + + #endif /* __GSL_CHECK_RANGE_H__ */ diff -x.info* -rc2P gsl-1.3/block/init_source.c gsl-1.4/block/init_source.c *** gsl-1.3/block/init_source.c Wed Apr 18 21:52:21 2001 --- gsl-1.4/block/init_source.c Fri Jul 25 15:18:07 2003 *************** *** 26,30 **** { GSL_ERROR_VAL ("block length n must be positive integer", ! GSL_EINVAL, 0); } --- 26,30 ---- { GSL_ERROR_VAL ("block length n must be positive integer", ! GSL_EINVAL, 0); } *************** *** 34,38 **** { GSL_ERROR_VAL ("failed to allocate space for block struct", ! GSL_ENOMEM, 0); } --- 34,38 ---- { GSL_ERROR_VAL ("failed to allocate space for block struct", ! GSL_ENOMEM, 0); } *************** *** 41,48 **** if (b->data == 0) { ! free (b); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for block data", ! GSL_ENOMEM, 0); } --- 41,48 ---- if (b->data == 0) { ! free (b); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for block data", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/block/test.c gsl-1.4/block/test.c *** gsl-1.3/block/test.c Tue Jun 26 11:41:09 2001 --- gsl-1.4/block/test.c Fri Jul 25 15:18:07 2003 *************** *** 38,42 **** #include "templates_on.h" #include "test_complex_source.c" ! #ifdef HAVE_PRINTF_LONGDOUBLE #include "test_complex_io.c" #endif --- 38,42 ---- #include "templates_on.h" #include "test_complex_source.c" ! #if HAVE_PRINTF_LONGDOUBLE #include "test_complex_io.c" #endif *************** *** 62,66 **** #include "templates_on.h" #include "test_source.c" ! #ifdef HAVE_PRINTF_LONGDOUBLE #include "test_io.c" #endif --- 62,66 ---- #include "templates_on.h" #include "test_source.c" ! #if HAVE_PRINTF_LONGDOUBLE #include "test_io.c" #endif *************** *** 139,143 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); int --- 139,143 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); int *************** *** 163,167 **** test_text (); test_float_text (); ! #ifdef HAVE_PRINTF_LONGDOUBLE test_long_double_text (); #endif --- 163,167 ---- test_text (); test_float_text (); ! #if HAVE_PRINTF_LONGDOUBLE test_long_double_text (); #endif *************** *** 176,180 **** test_complex_text (); test_complex_float_text (); ! #ifdef HAVE_PRINTF_LONGDOUBLE test_complex_long_double_text (); #endif --- 176,180 ---- test_complex_text (); test_complex_float_text (); ! #if HAVE_PRINTF_LONGDOUBLE test_complex_long_double_text (); #endif *************** *** 194,199 **** test_complex_float_binary (); test_complex_long_double_binary (); - - gsl_warnings_off = 1; gsl_set_error_handler (&my_error_handler); --- 194,197 ---- diff -x.info* -rc2P gsl-1.3/block/test_complex_io.c gsl-1.4/block/test_complex_io.c *** gsl-1.3/block/test_complex_io.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/block/test_complex_io.c Fri Jul 25 15:18:07 2003 *************** *** 32,36 **** for (i = 0; i < N; i++) { ! v->data[2*i] = (ATOMIC)i ; v->data[2*i + 1] = (ATOMIC)(10*i + 1) ; }; --- 32,36 ---- for (i = 0; i < N; i++) { ! v->data[2*i] = (ATOMIC)i ; v->data[2*i + 1] = (ATOMIC)(10*i + 1) ; }; *************** *** 53,58 **** for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) i || w->data[2 * i + 1] != (ATOMIC) (10*i + 1)) ! status = 1; }; fclose (f); --- 53,58 ---- for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) i || w->data[2 * i + 1] != (ATOMIC) (10*i + 1)) ! status = 1; }; fclose (f); diff -x.info* -rc2P gsl-1.3/block/test_complex_source.c gsl-1.4/block/test_complex_source.c *** gsl-1.3/block/test_complex_source.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/block/test_complex_source.c Fri Jul 25 15:18:07 2003 *************** *** 40,44 **** gsl_test (size != N, NAME (gsl_block) "_size returns valid size"); ! FUNCTION (gsl_block, free) (b); /* free whatever is in v */ b = FUNCTION (gsl_block, calloc) (N); --- 40,44 ---- gsl_test (size != N, NAME (gsl_block) "_size returns valid size"); ! FUNCTION (gsl_block, free) (b); /* free whatever is in v */ b = FUNCTION (gsl_block, calloc) (N); *************** *** 58,62 **** { if (b->data[2 * i] != 0.0 || b->data[2 * i + 1] != 0.0) ! status = 1; }; --- 58,62 ---- { if (b->data[2 * i] != 0.0 || b->data[2 * i + 1] != 0.0) ! status = 1; }; *************** *** 78,82 **** for (i = 0; i < N; i++) { ! v->data[2*i] = (ATOMIC)(N - i); v->data[2*i + 1] = (ATOMIC)(10*(N-i) + 1); }; --- 78,82 ---- for (i = 0; i < N; i++) { ! v->data[2*i] = (ATOMIC)(N - i); v->data[2*i + 1] = (ATOMIC)(10*(N-i) + 1); }; *************** *** 99,104 **** for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) (N - i) || w->data[2 * i + 1] != (ATOMIC) (10*(N - i) + 1)) ! status = 1; }; fclose (f); --- 99,104 ---- for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) (N - i) || w->data[2 * i + 1] != (ATOMIC) (10*(N - i) + 1)) ! status = 1; }; fclose (f); diff -x.info* -rc2P gsl-1.3/block/test_io.c gsl-1.4/block/test_io.c *** gsl-1.3/block/test_io.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/block/test_io.c Fri Jul 25 15:18:07 2003 *************** *** 32,36 **** for (i = 0; i < N; i++) { ! v->data[i] = (ATOMIC) i; }; --- 32,36 ---- for (i = 0; i < N; i++) { ! v->data[i] = (ATOMIC) i; }; *************** *** 52,57 **** for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) i) ! status = 1; }; --- 52,57 ---- for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) i) ! status = 1; }; diff -x.info* -rc2P gsl-1.3/block/test_source.c gsl-1.4/block/test_source.c *** gsl-1.3/block/test_source.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/block/test_source.c Fri Jul 25 15:18:07 2003 *************** *** 41,45 **** ! FUNCTION (gsl_block, free) (v); /* free whatever is in v */ v = FUNCTION (gsl_block, calloc) (N); --- 41,45 ---- ! FUNCTION (gsl_block, free) (v); /* free whatever is in v */ v = FUNCTION (gsl_block, calloc) (N); *************** *** 59,68 **** { if (v->data[i] != 0.0) ! status = 1; }; gsl_test (status, NAME (gsl_block) "_calloc initializes array to zero"); ! FUNCTION (gsl_block, free) (v); /* free whatever is in v */ } --- 59,68 ---- { if (v->data[i] != 0.0) ! status = 1; }; gsl_test (status, NAME (gsl_block) "_calloc initializes array to zero"); ! FUNCTION (gsl_block, free) (v); /* free whatever is in v */ } *************** *** 80,84 **** for (i = 0; i < N; i++) { ! v->data[i] = (ATOMIC)(N - i); }; --- 80,84 ---- for (i = 0; i < N; i++) { ! v->data[i] = (ATOMIC)(N - i); }; *************** *** 101,106 **** for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) (N - i)) ! status = 1; }; --- 101,106 ---- for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) (N - i)) ! status = 1; }; diff -x.info* -rc2P gsl-1.3/cblas/ChangeLog gsl-1.4/cblas/ChangeLog *** gsl-1.3/cblas/ChangeLog Tue Feb 19 20:50:36 2002 --- gsl-1.4/cblas/ChangeLog Tue Jan 21 21:54:43 2003 *************** *** 1,2 **** --- 1,6 ---- + 2003-01-21 Brian Gough + + * test.m: skip trans=113 for complex matrix on SYRK tests. + Tue Feb 19 20:50:27 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/cblas/Makefile.in gsl-1.4/cblas/Makefile.in *** gsl-1.3/cblas/Makefile.in Wed Dec 18 22:37:56 2002 --- gsl-1.4/cblas/Makefile.in Thu Aug 14 12:30:40 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! lib_LTLIBRARIES = libgslcblas.la libgslcblas_la_LDFLAGS = -version-info $(GSL_LT_CBLAS_VERSION) --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ lib_LTLIBRARIES = libgslcblas.la libgslcblas_la_LDFLAGS = -version-info $(GSL_LT_CBLAS_VERSION) *************** *** 101,191 **** test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(lib_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslcblas_la_LIBADD = ! libgslcblas_la_OBJECTS = sasum.lo saxpy.lo scasum.lo scnrm2.lo scopy.lo \ ! sdot.lo sdsdot.lo sgbmv.lo sgemm.lo sgemv.lo sger.lo snrm2.lo srot.lo \ ! srotg.lo srotm.lo srotmg.lo ssbmv.lo sscal.lo sspmv.lo sspr.lo sspr2.lo \ ! sswap.lo ssymm.lo ssymv.lo ssyr.lo ssyr2.lo ssyr2k.lo ssyrk.lo stbmv.lo \ ! stbsv.lo stpmv.lo stpsv.lo strmm.lo strmv.lo strsm.lo strsv.lo dasum.lo \ ! daxpy.lo dcopy.lo ddot.lo dgbmv.lo dgemm.lo dgemv.lo dger.lo dnrm2.lo \ ! drot.lo drotg.lo drotm.lo drotmg.lo dsbmv.lo dscal.lo dsdot.lo dspmv.lo \ ! dspr.lo dspr2.lo dswap.lo dsymm.lo dsymv.lo dsyr.lo dsyr2.lo dsyr2k.lo \ ! dsyrk.lo dtbmv.lo dtbsv.lo dtpmv.lo dtpsv.lo dtrmm.lo dtrmv.lo dtrsm.lo \ ! dtrsv.lo dzasum.lo dznrm2.lo caxpy.lo ccopy.lo cdotc_sub.lo \ ! cdotu_sub.lo cgbmv.lo cgemm.lo cgemv.lo cgerc.lo cgeru.lo chbmv.lo \ ! chemm.lo chemv.lo cher.lo cher2.lo cher2k.lo cherk.lo chpmv.lo chpr.lo \ ! chpr2.lo cscal.lo csscal.lo cswap.lo csymm.lo csyr2k.lo csyrk.lo \ ! ctbmv.lo ctbsv.lo ctpmv.lo ctpsv.lo ctrmm.lo ctrmv.lo ctrsm.lo ctrsv.lo \ ! zaxpy.lo zcopy.lo zdotc_sub.lo zdotu_sub.lo zdscal.lo zgbmv.lo zgemm.lo \ ! zgemv.lo zgerc.lo zgeru.lo zhbmv.lo zhemm.lo zhemv.lo zher.lo zher2.lo \ ! zher2k.lo zherk.lo zhpmv.lo zhpr.lo zhpr2.lo zscal.lo zswap.lo zsymm.lo \ ! zsyr2k.lo zsyrk.lo ztbmv.lo ztbsv.lo ztpmv.lo ztpsv.lo ztrmm.lo \ ! ztrmv.lo ztrsm.lo ztrsv.lo icamax.lo idamax.lo isamax.lo izamax.lo \ ! xerbla.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) test_amax.$(OBJEXT) test_asum.$(OBJEXT) \ ! test_axpy.$(OBJEXT) test_copy.$(OBJEXT) test_dot.$(OBJEXT) \ ! test_gbmv.$(OBJEXT) test_gemm.$(OBJEXT) test_gemv.$(OBJEXT) \ ! test_ger.$(OBJEXT) test_hbmv.$(OBJEXT) test_hemm.$(OBJEXT) \ ! test_hemv.$(OBJEXT) test_her.$(OBJEXT) test_her2.$(OBJEXT) \ ! test_her2k.$(OBJEXT) test_herk.$(OBJEXT) test_hpmv.$(OBJEXT) \ ! test_hpr.$(OBJEXT) test_hpr2.$(OBJEXT) test_nrm2.$(OBJEXT) \ ! test_rot.$(OBJEXT) test_rotg.$(OBJEXT) test_rotm.$(OBJEXT) \ ! test_rotmg.$(OBJEXT) test_sbmv.$(OBJEXT) test_scal.$(OBJEXT) \ ! test_spmv.$(OBJEXT) test_spr.$(OBJEXT) test_spr2.$(OBJEXT) \ ! test_swap.$(OBJEXT) test_symm.$(OBJEXT) test_symv.$(OBJEXT) \ ! test_syr.$(OBJEXT) test_syr2.$(OBJEXT) test_syr2k.$(OBJEXT) \ ! test_syrk.$(OBJEXT) test_tbmv.$(OBJEXT) test_tbsv.$(OBJEXT) \ ! test_tpmv.$(OBJEXT) test_tpsv.$(OBJEXT) test_trmm.$(OBJEXT) \ ! test_trmv.$(OBJEXT) test_trsm.$(OBJEXT) test_trsv.$(OBJEXT) ! test_DEPENDENCIES = libgslcblas.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslcblas_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps cblas/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-libLTLIBRARIES: ! ! clean-libLTLIBRARIES: ! -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ! ! distclean-libLTLIBRARIES: ! ! maintainer-clean-libLTLIBRARIES: ! install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) --- 157,239 ---- test_LDADD = libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la test_SOURCES = test.c test_amax.c test_asum.c test_axpy.c test_copy.c test_dot.c test_gbmv.c test_gemm.c test_gemv.c test_ger.c test_hbmv.c test_hemm.c test_hemv.c test_her.c test_her2.c test_her2k.c test_herk.c test_hpmv.c test_hpr.c test_hpr2.c test_nrm2.c test_rot.c test_rotg.c test_rotm.c test_rotmg.c test_sbmv.c test_scal.c test_spmv.c test_spr.c test_spr2.c test_swap.c test_symm.c test_symv.c test_syr.c test_syr2.c test_syr2k.c test_syrk.c test_tbmv.c test_tbsv.c test_tpmv.c test_tpsv.c test_trmm.c test_trmv.c test_trsm.c test_trsv.c + subdir = cblas + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(lib_LTLIBRARIES) ! ! libgslcblas_la_LIBADD = ! am_libgslcblas_la_OBJECTS = sasum.lo saxpy.lo scasum.lo scnrm2.lo \ ! scopy.lo sdot.lo sdsdot.lo sgbmv.lo sgemm.lo sgemv.lo sger.lo \ ! snrm2.lo srot.lo srotg.lo srotm.lo srotmg.lo ssbmv.lo sscal.lo \ ! sspmv.lo sspr.lo sspr2.lo sswap.lo ssymm.lo ssymv.lo ssyr.lo \ ! ssyr2.lo ssyr2k.lo ssyrk.lo stbmv.lo stbsv.lo stpmv.lo stpsv.lo \ ! strmm.lo strmv.lo strsm.lo strsv.lo dasum.lo daxpy.lo dcopy.lo \ ! ddot.lo dgbmv.lo dgemm.lo dgemv.lo dger.lo dnrm2.lo drot.lo \ ! drotg.lo drotm.lo drotmg.lo dsbmv.lo dscal.lo dsdot.lo dspmv.lo \ ! dspr.lo dspr2.lo dswap.lo dsymm.lo dsymv.lo dsyr.lo dsyr2.lo \ ! dsyr2k.lo dsyrk.lo dtbmv.lo dtbsv.lo dtpmv.lo dtpsv.lo dtrmm.lo \ ! dtrmv.lo dtrsm.lo dtrsv.lo dzasum.lo dznrm2.lo caxpy.lo \ ! ccopy.lo cdotc_sub.lo cdotu_sub.lo cgbmv.lo cgemm.lo cgemv.lo \ ! cgerc.lo cgeru.lo chbmv.lo chemm.lo chemv.lo cher.lo cher2.lo \ ! cher2k.lo cherk.lo chpmv.lo chpr.lo chpr2.lo cscal.lo csscal.lo \ ! cswap.lo csymm.lo csyr2k.lo csyrk.lo ctbmv.lo ctbsv.lo ctpmv.lo \ ! ctpsv.lo ctrmm.lo ctrmv.lo ctrsm.lo ctrsv.lo zaxpy.lo zcopy.lo \ ! zdotc_sub.lo zdotu_sub.lo zdscal.lo zgbmv.lo zgemm.lo zgemv.lo \ ! zgerc.lo zgeru.lo zhbmv.lo zhemm.lo zhemv.lo zher.lo zher2.lo \ ! zher2k.lo zherk.lo zhpmv.lo zhpr.lo zhpr2.lo zscal.lo zswap.lo \ ! zsymm.lo zsyr2k.lo zsyrk.lo ztbmv.lo ztbsv.lo ztpmv.lo ztpsv.lo \ ! ztrmm.lo ztrmv.lo ztrsm.lo ztrsv.lo icamax.lo idamax.lo \ ! isamax.lo izamax.lo xerbla.lo ! libgslcblas_la_OBJECTS = $(am_libgslcblas_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test_amax.$(OBJEXT) test_asum.$(OBJEXT) \ ! test_axpy.$(OBJEXT) test_copy.$(OBJEXT) test_dot.$(OBJEXT) \ ! test_gbmv.$(OBJEXT) test_gemm.$(OBJEXT) test_gemv.$(OBJEXT) \ ! test_ger.$(OBJEXT) test_hbmv.$(OBJEXT) test_hemm.$(OBJEXT) \ ! test_hemv.$(OBJEXT) test_her.$(OBJEXT) test_her2.$(OBJEXT) \ ! test_her2k.$(OBJEXT) test_herk.$(OBJEXT) test_hpmv.$(OBJEXT) \ ! test_hpr.$(OBJEXT) test_hpr2.$(OBJEXT) test_nrm2.$(OBJEXT) \ ! test_rot.$(OBJEXT) test_rotg.$(OBJEXT) test_rotm.$(OBJEXT) \ ! test_rotmg.$(OBJEXT) test_sbmv.$(OBJEXT) test_scal.$(OBJEXT) \ ! test_spmv.$(OBJEXT) test_spr.$(OBJEXT) test_spr2.$(OBJEXT) \ ! test_swap.$(OBJEXT) test_symm.$(OBJEXT) test_symv.$(OBJEXT) \ ! test_syr.$(OBJEXT) test_syr2.$(OBJEXT) test_syr2k.$(OBJEXT) \ ! test_syrk.$(OBJEXT) test_tbmv.$(OBJEXT) test_tbsv.$(OBJEXT) \ ! test_tpmv.$(OBJEXT) test_tpsv.$(OBJEXT) test_trmm.$(OBJEXT) \ ! test_trmv.$(OBJEXT) test_trsm.$(OBJEXT) test_trsv.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslcblas.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslcblas_la_SOURCES) $(test_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu cblas/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! libLTLIBRARIES_INSTALL = $(INSTALL) install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) *************** *** 193,198 **** @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ ! echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ ! $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ else :; fi; \ done --- 241,247 ---- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ ! $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ else :; fi; \ done *************** *** 200,240 **** uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) ! list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 249,293 ---- uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) ! @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! p="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ ! $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done ! clean-libLTLIBRARIES: ! -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ! @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ! test "$$dir" = "$$p" && dir=.; \ ! echo "rm -f \"$${dir}/so_locations\""; \ ! rm -f "$${dir}/so_locations"; \ ! done ! libgslcblas.la: $(libgslcblas_la_OBJECTS) $(libgslcblas_la_DEPENDENCIES) ! $(LINK) -rpath $(libdir) $(libgslcblas_la_LDFLAGS) $(libgslcblas_la_OBJECTS) $(libgslcblas_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 245,381 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslcblas.la: $(libgslcblas_la_OBJECTS) $(libgslcblas_la_DEPENDENCIES) ! $(LINK) -rpath $(libdir) $(libgslcblas_la_LDFLAGS) $(libgslcblas_la_OBJECTS) $(libgslcblas_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = cblas distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: install-libLTLIBRARIES ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 298,502 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 384,434 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-libLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-libLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-libLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-libLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ ! clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ ! uninstall-libLTLIBRARIES install-libLTLIBRARIES mostlyclean-compile \ ! distclean-compile clean-compile maintainer-clean-compile \ ! mostlyclean-libtool distclean-libtool clean-libtool \ ! maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 505,573 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ ! clean-libtool mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: install-libLTLIBRARIES ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-libLTLIBRARIES install-man \ + install-pkgincludeHEADERS install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-info-am \ + uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/cblas/caxpy.c gsl-1.4/cblas/caxpy.c *** gsl-1.3/cblas/caxpy.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/caxpy.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_caxpy (const int N, const void *alpha, const void *X, const int incX, ! void *Y, const int incY) { #define BASE float --- 5,9 ---- void cblas_caxpy (const int N, const void *alpha, const void *X, const int incX, ! void *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ccopy.c gsl-1.4/cblas/ccopy.c *** gsl-1.3/cblas/ccopy.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/ccopy.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_ccopy (const int N, const void *X, const int incX, void *Y, ! const int incY) { #define BASE float --- 5,9 ---- void cblas_ccopy (const int N, const void *X, const int incX, void *Y, ! const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cdotc_sub.c gsl-1.4/cblas/cdotc_sub.c *** gsl-1.3/cblas/cdotc_sub.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cdotc_sub.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_cdotc_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE float --- 5,9 ---- void cblas_cdotc_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cdotu_sub.c gsl-1.4/cblas/cdotu_sub.c *** gsl-1.3/cblas/cdotu_sub.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cdotu_sub.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_cdotu_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE float --- 5,9 ---- void cblas_cdotu_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cgbmv.c gsl-1.4/cblas/cgbmv.c *** gsl-1.3/cblas/cgbmv.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cgbmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_cgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const void *alpha, const void *A, const int lda, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE float --- 5,11 ---- void cblas_cgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const void *alpha, const void *A, const int lda, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cgemm.c gsl-1.4/cblas/cgemm.c *** gsl-1.3/cblas/cgemm.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cgemm.c Fri Jul 25 15:18:07 2003 *************** *** 5,12 **** void cblas_cgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const void *alpha, const void *A, const int lda, ! const void *B, const int ldb, const void *beta, void *C, ! const int ldc) { #define BASE float --- 5,12 ---- void cblas_cgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const void *alpha, const void *A, const int lda, ! const void *B, const int ldb, const void *beta, void *C, ! const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cgemv.c gsl-1.4/cblas/cgemv.c *** gsl-1.3/cblas/cgemv.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cgemv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_cgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE float --- 5,11 ---- void cblas_cgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cgerc.c gsl-1.4/cblas/cgerc.c *** gsl-1.3/cblas/cgerc.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cgerc.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_cgerc (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_cgerc (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cgeru.c gsl-1.4/cblas/cgeru.c *** gsl-1.3/cblas/cgeru.c Mon Nov 19 21:35:25 2001 --- gsl-1.4/cblas/cgeru.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_cgeru (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_cgeru (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/chbmv.c gsl-1.4/cblas/chbmv.c *** gsl-1.3/cblas/chbmv.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/chbmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_chbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE float --- 5,11 ---- void cblas_chbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/chemm.c gsl-1.4/cblas/chemm.c *** gsl-1.3/cblas/chemm.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/chemm.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_chemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_chemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/chemv.c gsl-1.4/cblas/chemv.c *** gsl-1.3/cblas/chemv.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/chemv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_chemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *A, const int lda, ! const void *X, const int incX, const void *beta, void *Y, ! const int incY) { #define BASE float --- 5,11 ---- void cblas_chemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *A, const int lda, ! const void *X, const int incX, const void *beta, void *Y, ! const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cher.c gsl-1.4/cblas/cher.c *** gsl-1.3/cblas/cher.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/cher.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_cher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const void *X, const int incX, ! void *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_cher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const void *X, const int incX, ! void *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cher2.c gsl-1.4/cblas/cher2.c *** gsl-1.3/cblas/cher2.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/cher2.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_cher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_cher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cher2k.c gsl-1.4/cblas/cher2k.c *** gsl-1.3/cblas/cher2k.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/cher2k.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_cher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const float beta, void *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_cher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const float beta, void *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/cherk.c gsl-1.4/cblas/cherk.c *** gsl-1.3/cblas/cherk.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/cherk.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_cherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const float alpha, const void *A, const int lda, ! const float beta, void *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_cherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const float alpha, const void *A, const int lda, ! const float beta, void *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/chpmv.c gsl-1.4/cblas/chpmv.c *** gsl-1.3/cblas/chpmv.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/chpmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_chpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *Ap, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE float --- 5,10 ---- void cblas_chpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *Ap, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/chpr.c gsl-1.4/cblas/chpr.c *** gsl-1.3/cblas/chpr.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/chpr.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_chpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const void *X, const int incX, ! void *Ap) { #define BASE float --- 5,10 ---- void cblas_chpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const void *X, const int incX, ! void *Ap) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/chpr2.c gsl-1.4/cblas/chpr2.c *** gsl-1.3/cblas/chpr2.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/chpr2.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_chpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *Ap) { #define BASE float --- 5,10 ---- void cblas_chpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *Ap) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/csymm.c gsl-1.4/cblas/csymm.c *** gsl-1.3/cblas/csymm.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/csymm.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_csymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_csymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/csyr2k.c gsl-1.4/cblas/csyr2k.c *** gsl-1.3/cblas/csyr2k.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/csyr2k.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_csyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_csyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/csyrk.c gsl-1.4/cblas/csyrk.c *** gsl-1.3/cblas/csyrk.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/csyrk.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_csyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, ! const void *beta, void *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_csyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, ! const void *beta, void *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctbmv.c gsl-1.4/cblas/ctbmv.c *** gsl-1.3/cblas/ctbmv.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/ctbmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_ctbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE float --- 5,11 ---- void cblas_ctbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctbsv.c gsl-1.4/cblas/ctbsv.c *** gsl-1.3/cblas/ctbsv.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/ctbsv.c Fri Jul 25 15:18:07 2003 *************** *** 7,13 **** void cblas_ctbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE float --- 7,13 ---- void cblas_ctbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctpmv.c gsl-1.4/cblas/ctpmv.c *** gsl-1.3/cblas/ctpmv.c Mon Nov 19 21:35:24 2001 --- gsl-1.4/cblas/ctpmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_ctpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE float --- 5,10 ---- void cblas_ctpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctpsv.c gsl-1.4/cblas/ctpsv.c *** gsl-1.3/cblas/ctpsv.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/ctpsv.c Fri Jul 25 15:18:07 2003 *************** *** 7,12 **** void cblas_ctpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE float --- 7,12 ---- void cblas_ctpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctrmm.c gsl-1.4/cblas/ctrmm.c *** gsl-1.3/cblas/ctrmm.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/ctrmm.c Fri Jul 25 15:18:07 2003 *************** *** 5,12 **** void cblas_ctrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE float --- 5,12 ---- void cblas_ctrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctrmv.c gsl-1.4/cblas/ctrmv.c *** gsl-1.3/cblas/ctrmv.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/ctrmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_ctrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE float --- 5,11 ---- void cblas_ctrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctrsm.c gsl-1.4/cblas/ctrsm.c *** gsl-1.3/cblas/ctrsm.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/ctrsm.c Fri Jul 25 15:18:07 2003 *************** *** 7,14 **** void cblas_ctrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE float --- 7,14 ---- void cblas_ctrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ctrsv.c gsl-1.4/cblas/ctrsv.c *** gsl-1.3/cblas/ctrsv.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/ctrsv.c Fri Jul 25 15:18:07 2003 *************** *** 7,13 **** void cblas_ctrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE float --- 7,13 ---- void cblas_ctrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/daxpy.c gsl-1.4/cblas/daxpy.c *** gsl-1.3/cblas/daxpy.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/daxpy.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_daxpy (const int N, const double alpha, const double *X, const int incX, ! double *Y, const int incY) { #define BASE double --- 5,9 ---- void cblas_daxpy (const int N, const double alpha, const double *X, const int incX, ! double *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dcopy.c gsl-1.4/cblas/dcopy.c *** gsl-1.3/cblas/dcopy.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/dcopy.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_dcopy (const int N, const double *X, const int incX, double *Y, ! const int incY) { #define BASE double --- 5,9 ---- void cblas_dcopy (const int N, const double *X, const int incX, double *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ddot.c gsl-1.4/cblas/ddot.c *** gsl-1.3/cblas/ddot.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/ddot.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** double cblas_ddot (const int N, const double *X, const int incX, const double *Y, ! const int incY) { #define INIT_VAL 0.0 --- 5,9 ---- double cblas_ddot (const int N, const double *X, const int incX, const double *Y, ! const int incY) { #define INIT_VAL 0.0 diff -x.info* -rc2P gsl-1.3/cblas/dgbmv.c gsl-1.4/cblas/dgbmv.c *** gsl-1.3/cblas/dgbmv.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/dgbmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,12 **** void cblas_dgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const double alpha, const double *A, const int lda, ! const double *X, const int incX, const double beta, double *Y, ! const int incY) { #define BASE double --- 5,12 ---- void cblas_dgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const double alpha, const double *A, const int lda, ! const double *X, const int incX, const double beta, double *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dgemm.c gsl-1.4/cblas/dgemm.c *** gsl-1.3/cblas/dgemm.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/dgemm.c Fri Jul 25 15:18:07 2003 *************** *** 5,12 **** void cblas_dgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const double alpha, const double *A, const int lda, ! const double *B, const int ldb, const double beta, double *C, ! const int ldc) { #define BASE double --- 5,12 ---- void cblas_dgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const double alpha, const double *A, const int lda, ! const double *B, const int ldb, const double beta, double *C, ! const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dgemv.c gsl-1.4/cblas/dgemv.c *** gsl-1.3/cblas/dgemv.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/dgemv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_dgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const double alpha, const double *A, ! const int lda, const double *X, const int incX, ! const double beta, double *Y, const int incY) { #define BASE double --- 5,11 ---- void cblas_dgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const double alpha, const double *A, ! const int lda, const double *X, const int incX, ! const double beta, double *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dger.c gsl-1.4/cblas/dger.c *** gsl-1.3/cblas/dger.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/dger.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_dger (const enum CBLAS_ORDER order, const int M, const int N, ! const double alpha, const double *X, const int incX, ! const double *Y, const int incY, double *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_dger (const enum CBLAS_ORDER order, const int M, const int N, ! const double alpha, const double *X, const int incX, ! const double *Y, const int incY, double *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/drot.c gsl-1.4/cblas/drot.c *** gsl-1.3/cblas/drot.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/drot.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_drot (const int N, double *X, const int incX, double *Y, const int incY, ! const double c, const double s) { #define BASE double --- 5,9 ---- void cblas_drot (const int N, double *X, const int incX, double *Y, const int incY, ! const double c, const double s) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/drotm.c gsl-1.4/cblas/drotm.c *** gsl-1.3/cblas/drotm.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/drotm.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_drotm (const int N, double *X, const int incX, double *Y, ! const int incY, const double *P) { #define BASE double --- 5,9 ---- void cblas_drotm (const int N, double *X, const int incX, double *Y, ! const int incY, const double *P) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsbmv.c gsl-1.4/cblas/dsbmv.c *** gsl-1.3/cblas/dsbmv.c Mon Nov 19 21:35:23 2001 --- gsl-1.4/cblas/dsbmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_dsbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const double alpha, const double *A, ! const int lda, const double *X, const int incX, ! const double beta, double *Y, const int incY) { #define BASE double --- 5,11 ---- void cblas_dsbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const double alpha, const double *A, ! const int lda, const double *X, const int incX, ! const double beta, double *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsdot.c gsl-1.4/cblas/dsdot.c *** gsl-1.3/cblas/dsdot.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsdot.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** double cblas_dsdot (const int N, const float *X, const int incX, const float *Y, ! const int incY) { #define INIT_VAL 0.0 --- 5,9 ---- double cblas_dsdot (const int N, const float *X, const int incX, const float *Y, ! const int incY) { #define INIT_VAL 0.0 diff -x.info* -rc2P gsl-1.3/cblas/dspmv.c gsl-1.4/cblas/dspmv.c *** gsl-1.3/cblas/dspmv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dspmv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_dspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *Ap, ! const double *X, const int incX, const double beta, double *Y, ! const int incY) { #define BASE double --- 5,11 ---- void cblas_dspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *Ap, ! const double *X, const int incX, const double beta, double *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dspr.c gsl-1.4/cblas/dspr.c *** gsl-1.3/cblas/dspr.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dspr.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_dspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! double *Ap) { #define BASE double --- 5,10 ---- void cblas_dspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! double *Ap) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dspr2.c gsl-1.4/cblas/dspr2.c *** gsl-1.3/cblas/dspr2.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dspr2.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_dspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! const double *Y, const int incY, double *Ap) { #define BASE double --- 5,10 ---- void cblas_dspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! const double *Y, const int incY, double *Ap) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dswap.c gsl-1.4/cblas/dswap.c *** gsl-1.3/cblas/dswap.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dswap.c Fri Jul 25 15:18:07 2003 *************** *** 5,9 **** void cblas_dswap (const int N, double *X, const int incX, double *Y, ! const int incY) { #define BASE double --- 5,9 ---- void cblas_dswap (const int N, double *X, const int incX, double *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsymm.c gsl-1.4/cblas/dsymm.c *** gsl-1.3/cblas/dsymm.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsymm.c Fri Jul 25 15:18:07 2003 *************** *** 5,12 **** void cblas_dsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const double alpha, const double *A, const int lda, ! const double *B, const int ldb, const double beta, double *C, ! const int ldc) { #define BASE double --- 5,12 ---- void cblas_dsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const double alpha, const double *A, const int lda, ! const double *B, const int ldb, const double beta, double *C, ! const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsymv.c gsl-1.4/cblas/dsymv.c *** gsl-1.3/cblas/dsymv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsymv.c Fri Jul 25 15:18:07 2003 *************** *** 5,11 **** void cblas_dsymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *A, const int lda, ! const double *X, const int incX, const double beta, double *Y, ! const int incY) { #define BASE double --- 5,11 ---- void cblas_dsymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *A, const int lda, ! const double *X, const int incX, const double beta, double *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsyr.c gsl-1.4/cblas/dsyr.c *** gsl-1.3/cblas/dsyr.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsyr.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_dsyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! double *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_dsyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! double *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsyr2.c gsl-1.4/cblas/dsyr2.c *** gsl-1.3/cblas/dsyr2.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsyr2.c Fri Jul 25 15:18:07 2003 *************** *** 5,10 **** void cblas_dsyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! const double *Y, const int incY, double *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_dsyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const double *X, const int incX, ! const double *Y, const int incY, double *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsyr2k.c gsl-1.4/cblas/dsyr2k.c *** gsl-1.3/cblas/dsyr2k.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsyr2k.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_dsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const double alpha, const double *A, const int lda, ! const double *B, const int ldb, const double beta, double *C, ! const int ldc) { #define BASE double --- 5,12 ---- void cblas_dsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const double alpha, const double *A, const int lda, ! const double *B, const int ldb, const double beta, double *C, ! const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dsyrk.c gsl-1.4/cblas/dsyrk.c *** gsl-1.3/cblas/dsyrk.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dsyrk.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_dsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const double alpha, const double *A, const int lda, ! const double beta, double *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_dsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const double alpha, const double *A, const int lda, ! const double beta, double *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtbmv.c gsl-1.4/cblas/dtbmv.c *** gsl-1.3/cblas/dtbmv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtbmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_dtbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const double *A, const int lda, ! double *X, const int incX) { #define BASE double --- 5,11 ---- void cblas_dtbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const double *A, const int lda, ! double *X, const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtbsv.c gsl-1.4/cblas/dtbsv.c *** gsl-1.3/cblas/dtbsv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtbsv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_dtbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const double *A, const int lda, ! double *X, const int incX) { #define BASE double --- 5,11 ---- void cblas_dtbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const double *A, const int lda, ! double *X, const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtpmv.c gsl-1.4/cblas/dtpmv.c *** gsl-1.3/cblas/dtpmv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtpmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_dtpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *Ap, double *X, const int incX) { #define BASE double --- 5,10 ---- void cblas_dtpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *Ap, double *X, const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtpsv.c gsl-1.4/cblas/dtpsv.c *** gsl-1.3/cblas/dtpsv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtpsv.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_dtpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *Ap, double *X, const int incX) { #define BASE double --- 5,10 ---- void cblas_dtpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *Ap, double *X, const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtrmm.c gsl-1.4/cblas/dtrmm.c *** gsl-1.3/cblas/dtrmm.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtrmm.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_dtrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const double alpha, const double *A, const int lda, double *B, ! const int ldb) { #define BASE double --- 5,12 ---- void cblas_dtrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const double alpha, const double *A, const int lda, double *B, ! const int ldb) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtrmv.c gsl-1.4/cblas/dtrmv.c *** gsl-1.3/cblas/dtrmv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtrmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_dtrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *A, const int lda, double *X, ! const int incX) { #define BASE double --- 5,11 ---- void cblas_dtrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *A, const int lda, double *X, ! const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtrsm.c gsl-1.4/cblas/dtrsm.c *** gsl-1.3/cblas/dtrsm.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtrsm.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_dtrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const double alpha, const double *A, const int lda, double *B, ! const int ldb) { #define BASE double --- 5,12 ---- void cblas_dtrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const double alpha, const double *A, const int lda, double *B, ! const int ldb) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/dtrsv.c gsl-1.4/cblas/dtrsv.c *** gsl-1.3/cblas/dtrsv.c Mon Nov 19 21:35:22 2001 --- gsl-1.4/cblas/dtrsv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_dtrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *A, const int lda, double *X, ! const int incX) { #define BASE double --- 5,11 ---- void cblas_dtrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const double *A, const int lda, double *X, ! const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/saxpy.c gsl-1.4/cblas/saxpy.c *** gsl-1.3/cblas/saxpy.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/saxpy.c Fri Jul 25 15:18:08 2003 *************** *** 5,9 **** void cblas_saxpy (const int N, const float alpha, const float *X, const int incX, ! float *Y, const int incY) { #define BASE float --- 5,9 ---- void cblas_saxpy (const int N, const float alpha, const float *X, const int incX, ! float *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/scopy.c gsl-1.4/cblas/scopy.c *** gsl-1.3/cblas/scopy.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/scopy.c Fri Jul 25 15:18:08 2003 *************** *** 5,9 **** void cblas_scopy (const int N, const float *X, const int incX, float *Y, ! const int incY) { #define BASE float --- 5,9 ---- void cblas_scopy (const int N, const float *X, const int incX, float *Y, ! const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sdot.c gsl-1.4/cblas/sdot.c *** gsl-1.3/cblas/sdot.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/sdot.c Fri Jul 25 15:18:08 2003 *************** *** 5,9 **** float cblas_sdot (const int N, const float *X, const int incX, const float *Y, ! const int incY) { #define INIT_VAL 0.0 --- 5,9 ---- float cblas_sdot (const int N, const float *X, const int incX, const float *Y, ! const int incY) { #define INIT_VAL 0.0 diff -x.info* -rc2P gsl-1.3/cblas/sdsdot.c gsl-1.4/cblas/sdsdot.c *** gsl-1.3/cblas/sdsdot.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/sdsdot.c Fri Jul 25 15:18:08 2003 *************** *** 5,9 **** float cblas_sdsdot (const int N, const float alpha, const float *X, const int incX, ! const float *Y, const int incY) { #define INIT_VAL alpha --- 5,9 ---- float cblas_sdsdot (const int N, const float alpha, const float *X, const int incX, ! const float *Y, const int incY) { #define INIT_VAL alpha diff -x.info* -rc2P gsl-1.3/cblas/sgbmv.c gsl-1.4/cblas/sgbmv.c *** gsl-1.3/cblas/sgbmv.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/sgbmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_sgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const float alpha, const float *A, const int lda, const float *X, ! const int incX, const float beta, float *Y, const int incY) { #define BASE float --- 5,11 ---- void cblas_sgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const float alpha, const float *A, const int lda, const float *X, ! const int incX, const float beta, float *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sgemm.c gsl-1.4/cblas/sgemm.c *** gsl-1.3/cblas/sgemm.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/sgemm.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const float alpha, const float *A, const int lda, ! const float *B, const int ldb, const float beta, float *C, ! const int ldc) { #define BASE float --- 5,12 ---- void cblas_sgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const float alpha, const float *A, const int lda, ! const float *B, const int ldb, const float beta, float *C, ! const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sgemv.c gsl-1.4/cblas/sgemv.c *** gsl-1.3/cblas/sgemv.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/sgemv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const float alpha, const float *A, ! const int lda, const float *X, const int incX, const float beta, ! float *Y, const int incY) { #define BASE float --- 5,11 ---- void cblas_sgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const float alpha, const float *A, ! const int lda, const float *X, const int incX, const float beta, ! float *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sger.c gsl-1.4/cblas/sger.c *** gsl-1.3/cblas/sger.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/sger.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_sger (const enum CBLAS_ORDER order, const int M, const int N, ! const float alpha, const float *X, const int incX, const float *Y, ! const int incY, float *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_sger (const enum CBLAS_ORDER order, const int M, const int N, ! const float alpha, const float *X, const int incX, const float *Y, ! const int incY, float *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/source_gbmv_c.h gsl-1.4/cblas/source_gbmv_c.h *** gsl-1.3/cblas/source_gbmv_c.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_gbmv_c.h Fri Jul 25 15:18:17 2003 *************** *** 82,93 **** INDEX ix = OFFSET(lenX, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); ! const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); ! dotR += A_real * x_real - A_imag * x_imag; ! dotI += A_real * x_imag + A_imag * x_real; ! ix += incX; } --- 82,93 ---- INDEX ix = OFFSET(lenX, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); ! const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); ! dotR += A_real * x_real - A_imag * x_imag; ! dotI += A_real * x_imag + A_imag * x_real; ! ix += incX; } *************** *** 97,101 **** } } else if ((order == CblasRowMajor && TransA == CblasTrans) ! || (order == CblasColMajor && TransA == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX ix = OFFSET(lenX, incX); --- 97,101 ---- } } else if ((order == CblasRowMajor && TransA == CblasTrans) ! || (order == CblasColMajor && TransA == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX ix = OFFSET(lenX, incX); *************** *** 106,119 **** BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; if (!(tmpR == 0.0 && tmpI == 0.0)) { ! const INDEX i_min = (j > U ? j - U : 0); ! const INDEX i_max = GSL_MIN(lenY, j + L + 1); ! INDEX iy = OFFSET(lenY, incY) + i_min * incY; ! for (i = i_min; i < i_max; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); ! const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); ! REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; ! IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; ! iy += incY; ! } } ix += incX; --- 106,119 ---- BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; if (!(tmpR == 0.0 && tmpI == 0.0)) { ! const INDEX i_min = (j > U ? j - U : 0); ! const INDEX i_max = GSL_MIN(lenY, j + L + 1); ! INDEX iy = OFFSET(lenY, incY) + i_min * incY; ! for (i = i_min; i < i_max; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); ! const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); ! REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; ! IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; ! iy += incY; ! } } ix += incX; *************** *** 128,141 **** BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; if (!(tmpR == 0.0 && tmpI == 0.0)) { ! const INDEX i_min = (j > U ? j - U : 0); ! const INDEX i_max = GSL_MIN(lenY, j + L + 1); ! INDEX iy = OFFSET(lenY, incY) + i_min * incY; ! for (i = i_min; i < i_max; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); ! const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); ! REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; ! IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; ! iy += incY; ! } } ix += incX; --- 128,141 ---- BASE tmpI = alpha_real * x_imag + alpha_imag * x_real; if (!(tmpR == 0.0 && tmpI == 0.0)) { ! const INDEX i_min = (j > U ? j - U : 0); ! const INDEX i_max = GSL_MIN(lenY, j + L + 1); ! INDEX iy = OFFSET(lenY, incY) + i_min * incY; ! for (i = i_min; i < i_max; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + (U + i - j)); ! const BASE A_imag = CONST_IMAG(A, lda * j + (U + i - j)); ! REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; ! IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; ! iy += incY; ! } } ix += incX; *************** *** 151,162 **** INDEX ix = OFFSET(lenX, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); ! const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); ! dotR += A_real * x_real - (-A_imag) * x_imag; ! dotI += A_real * x_imag + (-A_imag) * x_real; ! ix += incX; } --- 151,162 ---- INDEX ix = OFFSET(lenX, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + (L + j - i)); ! const BASE A_imag = CONST_IMAG(A, lda * i + (L + j - i)); ! dotR += A_real * x_real - (-A_imag) * x_imag; ! dotI += A_real * x_imag + (-A_imag) * x_real; ! ix += incX; } diff -x.info* -rc2P gsl-1.3/cblas/source_gbmv_r.h gsl-1.4/cblas/source_gbmv_r.h *** gsl-1.3/cblas/source_gbmv_r.h Fri Apr 27 18:32:26 2001 --- gsl-1.4/cblas/source_gbmv_r.h Fri Jul 25 15:18:17 2003 *************** *** 70,75 **** INDEX jx = OFFSET(lenX, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[(L - i + j) + i * lda]; ! jx += incX; } Y[iy] += alpha * temp; --- 70,75 ---- INDEX jx = OFFSET(lenX, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[(L - i + j) + i * lda]; ! jx += incX; } Y[iy] += alpha * temp; *************** *** 77,81 **** } } else if ((order == CblasRowMajor && Trans == CblasTrans) ! || (order == CblasColMajor && Trans == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX jx = OFFSET(lenX, incX); --- 77,81 ---- } } else if ((order == CblasRowMajor && Trans == CblasTrans) ! || (order == CblasColMajor && Trans == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX jx = OFFSET(lenX, incX); *************** *** 83,93 **** const BASE temp = alpha * X[jx]; if (temp != 0.0) { ! const INDEX i_min = (j > U ? j - U : 0); ! const INDEX i_max = GSL_MIN(lenY, j + L + 1); ! INDEX iy = OFFSET(lenY, incY) + i_min * incY; ! for (i = i_min; i < i_max; i++) { ! Y[iy] += temp * A[lda * j + (U + i - j)]; ! iy += incY; ! } } jx += incX; --- 83,93 ---- const BASE temp = alpha * X[jx]; if (temp != 0.0) { ! const INDEX i_min = (j > U ? j - U : 0); ! const INDEX i_max = GSL_MIN(lenY, j + L + 1); ! INDEX iy = OFFSET(lenY, incY) + i_min * incY; ! for (i = i_min; i < i_max; i++) { ! Y[iy] += temp * A[lda * j + (U + i - j)]; ! iy += incY; ! } } jx += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_gemm_c.h gsl-1.4/cblas/source_gemm_c.h *** gsl-1.3/cblas/source_gemm_c.h Fri Apr 27 19:06:44 2001 --- gsl-1.4/cblas/source_gemm_c.h Fri Jul 25 15:18:17 2003 *************** *** 38,46 **** n1 = M; n2 = N; ! F = A; ldf = lda; conjF = (TransA == CblasConjTrans) ? -1 : 1; TransF = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; ! G = B; ldg = ldb; conjG = (TransB == CblasConjTrans) ? -1 : 1; --- 38,46 ---- n1 = M; n2 = N; ! F = (const BASE *)A; ldf = lda; conjF = (TransA == CblasConjTrans) ? -1 : 1; TransF = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; ! G = (const BASE *)B; ldg = ldb; conjG = (TransB == CblasConjTrans) ? -1 : 1; *************** *** 49,57 **** n1 = N; n2 = M; ! F = B; ldf = ldb; conjF = (TransB == CblasConjTrans) ? -1 : 1; TransF = (TransB == CblasNoTrans) ? CblasNoTrans : CblasTrans; ! G = A; ldg = lda; conjG = (TransA == CblasConjTrans) ? -1 : 1; --- 49,57 ---- n1 = N; n2 = M; ! F = (const BASE *)B; ldf = ldb; conjF = (TransB == CblasConjTrans) ? -1 : 1; TransF = (TransB == CblasNoTrans) ? CblasNoTrans : CblasTrans; ! G = (const BASE *)A; ldg = lda; conjG = (TransA == CblasConjTrans) ? -1 : 1; *************** *** 63,68 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; } } --- 63,68 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; } } *************** *** 70,77 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; } } --- 70,77 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; } } *************** *** 87,102 **** for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE Fik_real = CONST_REAL(F, ldf * i + k); ! const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); ! const BASE temp_real = alpha_real * Fik_real - alpha_imag * Fik_imag; ! const BASE temp_imag = alpha_real * Fik_imag + alpha_imag * Fik_real; ! if (!(temp_real == 0.0 && temp_imag == 0.0)) { ! for (j = 0; j < n2; j++) { ! const BASE Gkj_real = CONST_REAL(G, ldg * k + j); ! const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); ! REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; ! IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; ! } ! } } } --- 87,102 ---- for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE Fik_real = CONST_REAL(F, ldf * i + k); ! const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); ! const BASE temp_real = alpha_real * Fik_real - alpha_imag * Fik_imag; ! const BASE temp_imag = alpha_real * Fik_imag + alpha_imag * Fik_real; ! if (!(temp_real == 0.0 && temp_imag == 0.0)) { ! for (j = 0; j < n2; j++) { ! const BASE Gkj_real = CONST_REAL(G, ldg * k + j); ! const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); ! REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; ! IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; ! } ! } } } *************** *** 108,123 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Fik_real = CONST_REAL(F, ldf * i + k); ! const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); ! const BASE Gjk_real = CONST_REAL(G, ldg * j + k); ! const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); ! temp_real += Fik_real * Gjk_real - Fik_imag * Gjk_imag; ! temp_imag += Fik_real * Gjk_imag + Fik_imag * Gjk_real; ! } ! REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 108,123 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Fik_real = CONST_REAL(F, ldf * i + k); ! const BASE Fik_imag = conjF * CONST_IMAG(F, ldf * i + k); ! const BASE Gjk_real = CONST_REAL(G, ldg * j + k); ! const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); ! temp_real += Fik_real * Gjk_real - Fik_imag * Gjk_imag; ! temp_imag += Fik_real * Gjk_imag + Fik_imag * Gjk_real; ! } ! REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 127,142 **** for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE Fki_real = CONST_REAL(F, ldf * k + i); ! const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); ! const BASE temp_real = alpha_real * Fki_real - alpha_imag * Fki_imag; ! const BASE temp_imag = alpha_real * Fki_imag + alpha_imag * Fki_real; ! if (!(temp_real == 0.0 && temp_imag == 0.0)) { ! for (j = 0; j < n2; j++) { ! const BASE Gkj_real = CONST_REAL(G, ldg * k + j); ! const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); ! REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; ! IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; ! } ! } } } --- 127,142 ---- for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE Fki_real = CONST_REAL(F, ldf * k + i); ! const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); ! const BASE temp_real = alpha_real * Fki_real - alpha_imag * Fki_imag; ! const BASE temp_imag = alpha_real * Fki_imag + alpha_imag * Fki_real; ! if (!(temp_real == 0.0 && temp_imag == 0.0)) { ! for (j = 0; j < n2; j++) { ! const BASE Gkj_real = CONST_REAL(G, ldg * k + j); ! const BASE Gkj_imag = conjG * CONST_IMAG(G, ldg * k + j); ! REAL(C, ldc * i + j) += temp_real * Gkj_real - temp_imag * Gkj_imag; ! IMAG(C, ldc * i + j) += temp_real * Gkj_imag + temp_imag * Gkj_real; ! } ! } } } *************** *** 146,162 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Fki_real = CONST_REAL(F, ldf * k + i); ! const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); ! const BASE Gjk_real = CONST_REAL(G, ldg * j + k); ! const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); ! ! temp_real += Fki_real * Gjk_real - Fki_imag * Gjk_imag; ! temp_imag += Fki_real * Gjk_imag + Fki_imag * Gjk_real; ! } ! REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 146,162 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Fki_real = CONST_REAL(F, ldf * k + i); ! const BASE Fki_imag = conjF * CONST_IMAG(F, ldf * k + i); ! const BASE Gjk_real = CONST_REAL(G, ldg * j + k); ! const BASE Gjk_imag = conjG * CONST_IMAG(G, ldg * j + k); ! ! temp_real += Fki_real * Gjk_real - Fki_imag * Gjk_imag; ! temp_imag += Fki_real * Gjk_imag + Fki_imag * Gjk_real; ! } ! REAL(C, ldc * i + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, ldc * i + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } diff -x.info* -rc2P gsl-1.3/cblas/source_gemm_r.h gsl-1.4/cblas/source_gemm_r.h *** gsl-1.3/cblas/source_gemm_r.h Fri Apr 27 18:32:25 2001 --- gsl-1.4/cblas/source_gemm_r.h Fri Jul 25 15:18:17 2003 *************** *** 52,56 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] = 0.0; } } --- 52,56 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] = 0.0; } } *************** *** 58,62 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] *= beta; } } --- 58,62 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] *= beta; } } *************** *** 72,81 **** for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE temp = alpha * F[ldf * i + k]; ! if (temp != 0.0) { ! for (j = 0; j < n2; j++) { ! C[ldc * i + j] += temp * G[ldg * k + j]; ! } ! } } } --- 72,81 ---- for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE temp = alpha * F[ldf * i + k]; ! if (temp != 0.0) { ! for (j = 0; j < n2; j++) { ! C[ldc * i + j] += temp * G[ldg * k + j]; ! } ! } } } *************** *** 87,95 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += F[ldf * i + k] * G[ldg * j + k]; ! } ! C[ldc * i + j] += alpha * temp; } } --- 87,95 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += F[ldf * i + k] * G[ldg * j + k]; ! } ! C[ldc * i + j] += alpha * temp; } } *************** *** 99,108 **** for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE temp = alpha * F[ldf * k + i]; ! if (temp != 0.0) { ! for (j = 0; j < n2; j++) { ! C[ldc * i + j] += temp * G[ldg * k + j]; ! } ! } } } --- 99,108 ---- for (k = 0; k < K; k++) { for (i = 0; i < n1; i++) { ! const BASE temp = alpha * F[ldf * k + i]; ! if (temp != 0.0) { ! for (j = 0; j < n2; j++) { ! C[ldc * i + j] += temp * G[ldg * k + j]; ! } ! } } } *************** *** 112,120 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += F[ldf * k + i] * G[ldg * j + k]; ! } ! C[ldc * i + j] += alpha * temp; } } --- 112,120 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += F[ldf * k + i] * G[ldg * j + k]; ! } ! C[ldc * i + j] += alpha * temp; } } diff -x.info* -rc2P gsl-1.3/cblas/source_gemv_c.h gsl-1.4/cblas/source_gemv_c.h *** gsl-1.3/cblas/source_gemv_c.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_gemv_c.h Fri Jul 25 15:18:17 2003 *************** *** 77,88 **** INDEX ix = OFFSET(lenX, incX); for (j = 0; j < lenX; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = CONST_IMAG(A, lda * i + j); ! dotR += A_real * x_real - A_imag * x_imag; ! dotI += A_real * x_imag + A_imag * x_real; ! ix += incX; } --- 77,88 ---- INDEX ix = OFFSET(lenX, incX); for (j = 0; j < lenX; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = CONST_IMAG(A, lda * i + j); ! dotR += A_real * x_real - A_imag * x_imag; ! dotI += A_real * x_imag + A_imag * x_real; ! ix += incX; } *************** *** 92,96 **** } } else if ((order == CblasRowMajor && TransA == CblasTrans) ! || (order == CblasColMajor && TransA == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX ix = OFFSET(lenX, incX); --- 92,96 ---- } } else if ((order == CblasRowMajor && TransA == CblasTrans) ! || (order == CblasColMajor && TransA == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX ix = OFFSET(lenX, incX); *************** *** 103,111 **** INDEX iy = OFFSET(lenY, incY); for (i = 0; i < lenY; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = CONST_IMAG(A, lda * j + i); ! REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; ! IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; ! iy += incY; } ix += incX; --- 103,111 ---- INDEX iy = OFFSET(lenY, incY); for (i = 0; i < lenY; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = CONST_IMAG(A, lda * j + i); ! REAL(Y, iy) += A_real * tmpR - A_imag * tmpI; ! IMAG(Y, iy) += A_real * tmpI + A_imag * tmpR; ! iy += incY; } ix += incX; *************** *** 122,130 **** INDEX iy = OFFSET(lenY, incY); for (i = 0; i < lenY; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = CONST_IMAG(A, lda * j + i); ! REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; ! IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; ! iy += incY; } ix += incX; --- 122,130 ---- INDEX iy = OFFSET(lenY, incY); for (i = 0; i < lenY; i++) { ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = CONST_IMAG(A, lda * j + i); ! REAL(Y, iy) += A_real * tmpR - (-A_imag) * tmpI; ! IMAG(Y, iy) += A_real * tmpI + (-A_imag) * tmpR; ! iy += incY; } ix += incX; *************** *** 138,149 **** INDEX ix = OFFSET(lenX, incX); for (j = 0; j < lenX; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = CONST_IMAG(A, lda * i + j); ! dotR += A_real * x_real - (-A_imag) * x_imag; ! dotI += A_real * x_imag + (-A_imag) * x_real; ! ix += incX; } --- 138,149 ---- INDEX ix = OFFSET(lenX, incX); for (j = 0; j < lenX; j++) { ! const BASE x_real = CONST_REAL(X, ix); ! const BASE x_imag = CONST_IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = CONST_IMAG(A, lda * i + j); ! dotR += A_real * x_real - (-A_imag) * x_imag; ! dotI += A_real * x_imag + (-A_imag) * x_real; ! ix += incX; } diff -x.info* -rc2P gsl-1.3/cblas/source_gemv_r.h gsl-1.4/cblas/source_gemv_r.h *** gsl-1.3/cblas/source_gemv_r.h Fri Apr 27 18:32:25 2001 --- gsl-1.4/cblas/source_gemv_r.h Fri Jul 25 15:18:17 2003 *************** *** 64,69 **** INDEX ix = OFFSET(lenX, incX); for (j = 0; j < lenX; j++) { ! temp += X[ix] * A[lda * i + j]; ! ix += incX; } Y[iy] += alpha * temp; --- 64,69 ---- INDEX ix = OFFSET(lenX, incX); for (j = 0; j < lenX; j++) { ! temp += X[ix] * A[lda * i + j]; ! ix += incX; } Y[iy] += alpha * temp; *************** *** 71,75 **** } } else if ((order == CblasRowMajor && Trans == CblasTrans) ! || (order == CblasColMajor && Trans == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX ix = OFFSET(lenX, incX); --- 71,75 ---- } } else if ((order == CblasRowMajor && Trans == CblasTrans) ! || (order == CblasColMajor && Trans == CblasNoTrans)) { /* form y := alpha*A'*x + y */ INDEX ix = OFFSET(lenX, incX); *************** *** 77,85 **** const BASE temp = alpha * X[ix]; if (temp != 0.0) { ! INDEX iy = OFFSET(lenY, incY); ! for (i = 0; i < lenY; i++) { ! Y[iy] += temp * A[lda * j + i]; ! iy += incY; ! } } ix += incX; --- 77,85 ---- const BASE temp = alpha * X[ix]; if (temp != 0.0) { ! INDEX iy = OFFSET(lenY, incY); ! for (i = 0; i < lenY; i++) { ! Y[iy] += temp * A[lda * j + i]; ! iy += incY; ! } } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_ger.h gsl-1.4/cblas/source_ger.h *** gsl-1.3/cblas/source_ger.h Fri Apr 27 18:32:25 2001 --- gsl-1.4/cblas/source_ger.h Fri Jul 25 15:18:17 2003 *************** *** 27,32 **** INDEX jy = OFFSET(N, incY); for (j = 0; j < N; j++) { ! A[lda * i + j] += Y[jy] * tmp; ! jy += incY; } ix += incX; --- 27,32 ---- INDEX jy = OFFSET(N, incY); for (j = 0; j < N; j++) { ! A[lda * i + j] += Y[jy] * tmp; ! jy += incY; } ix += incX; *************** *** 38,43 **** INDEX ix = OFFSET(M, incX); for (i = 0; i < M; i++) { ! A[i + lda * j] += X[ix] * tmp; ! ix += incX; } jy += incY; --- 38,43 ---- INDEX ix = OFFSET(M, incX); for (i = 0; i < M; i++) { ! A[i + lda * j] += X[ix] * tmp; ! ix += incX; } jy += incY; diff -x.info* -rc2P gsl-1.3/cblas/source_gerc.h gsl-1.4/cblas/source_gerc.h *** gsl-1.3/cblas/source_gerc.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_gerc.h Fri Jul 25 15:18:17 2003 *************** *** 33,41 **** INDEX jy = OFFSET(N, incY); for (j = 0; j < N; j++) { ! const BASE Y_real = CONST_REAL(Y, jy); ! const BASE Y_imag = -CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; ! IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; ! jy += incY; } ix += incX; --- 33,41 ---- INDEX jy = OFFSET(N, incY); for (j = 0; j < N; j++) { ! const BASE Y_real = CONST_REAL(Y, jy); ! const BASE Y_imag = -CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; ! IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; ! jy += incY; } ix += incX; *************** *** 50,58 **** INDEX ix = OFFSET(M, incX); for (i = 0; i < M; i++) { ! const BASE X_real = CONST_REAL(X, ix); ! const BASE X_imag = CONST_IMAG(X, ix); ! REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; ! ix += incX; } jy += incY; --- 50,58 ---- INDEX ix = OFFSET(M, incX); for (i = 0; i < M; i++) { ! const BASE X_real = CONST_REAL(X, ix); ! const BASE X_imag = CONST_IMAG(X, ix); ! REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; ! ix += incX; } jy += incY; diff -x.info* -rc2P gsl-1.3/cblas/source_geru.h gsl-1.4/cblas/source_geru.h *** gsl-1.3/cblas/source_geru.h Fri Apr 27 19:10:35 2001 --- gsl-1.4/cblas/source_geru.h Fri Jul 25 15:18:17 2003 *************** *** 32,40 **** INDEX jy = OFFSET(N, incY); for (j = 0; j < N; j++) { ! const BASE Y_real = CONST_REAL(Y, jy); ! const BASE Y_imag = CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; ! IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; ! jy += incY; } ix += incX; --- 32,40 ---- INDEX jy = OFFSET(N, incY); for (j = 0; j < N; j++) { ! const BASE Y_real = CONST_REAL(Y, jy); ! const BASE Y_imag = CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += Y_real * tmp_real - Y_imag * tmp_imag; ! IMAG(A, lda * i + j) += Y_imag * tmp_real + Y_real * tmp_imag; ! jy += incY; } ix += incX; *************** *** 49,57 **** INDEX ix = OFFSET(M, incX); for (i = 0; i < M; i++) { ! const BASE X_real = CONST_REAL(X, ix); ! const BASE X_imag = CONST_IMAG(X, ix); ! REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; ! ix += incX; } jy += incY; --- 49,57 ---- INDEX ix = OFFSET(M, incX); for (i = 0; i < M; i++) { ! const BASE X_real = CONST_REAL(X, ix); ! const BASE X_imag = CONST_IMAG(X, ix); ! REAL(A, i + lda * j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, i + lda * j) += X_imag * tmp_real + X_real * tmp_imag; ! ix += incX; } jy += incY; diff -x.info* -rc2P gsl-1.3/cblas/source_hbmv.h gsl-1.4/cblas/source_hbmv.h *** gsl-1.3/cblas/source_hbmv.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_hbmv.h Fri Jul 25 15:18:17 2003 *************** *** 81,94 **** IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); ! BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; --- 81,94 ---- IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); ! BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; *************** *** 98,102 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); --- 98,102 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); *************** *** 114,134 **** for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, i * lda + (K - i + j)); ! BASE Aij_imag = conj * CONST_IMAG(A, i * lda + (K - i + j)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } { ! BASE Aii_real = CONST_REAL(A, lda * i + K); ! /* Aii_imag is zero */ ! REAL(Y, iy) += temp1_real * Aii_real; ! IMAG(Y, iy) += temp1_imag * Aii_real; } --- 114,134 ---- for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, i * lda + (K - i + j)); ! BASE Aij_imag = conj * CONST_IMAG(A, i * lda + (K - i + j)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } { ! BASE Aii_real = CONST_REAL(A, lda * i + K); ! /* Aii_imag is zero */ ! REAL(Y, iy) += temp1_real * Aii_real; ! IMAG(Y, iy) += temp1_imag * Aii_real; } diff -x.info* -rc2P gsl-1.3/cblas/source_hemm.h gsl-1.4/cblas/source_hemm.h *** gsl-1.3/cblas/source_hemm.h Fri Apr 27 19:15:34 2001 --- gsl-1.4/cblas/source_hemm.h Fri Jul 25 15:18:17 2003 *************** *** 49,54 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; } } --- 49,54 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; } } *************** *** 56,63 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; } } --- 56,63 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; } } *************** *** 73,100 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! /* const BASE Aii_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Aii_real; ! IMAG(C, i * ldc + j) += temp1_imag * Aii_real; ! } ! for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 73,100 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! /* const BASE Aii_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Aii_real; ! IMAG(C, i * ldc + j) += temp1_imag * Aii_real; ! } ! for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } *************** *** 106,133 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! /* const BASE Aii_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Aii_real; ! IMAG(C, i * ldc + j) += temp1_imag * Aii_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 106,133 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - (-Aik_imag) * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + (-Aik_imag) * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! /* const BASE Aii_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Aii_real; ! IMAG(C, i * ldc + j) += temp1_imag * Aii_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } *************** *** 139,166 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! /* const BASE Ajj_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Ajj_real; ! IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; ! } ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); ! temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 139,166 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! /* const BASE Ajj_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Ajj_real; ! IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; ! } ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); ! temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } *************** *** 172,199 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); ! temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; ! } ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! /* const BASE Ajj_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Ajj_real; ! IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 172,199 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * (-Ajk_imag); ! temp2_imag += Bik_real * (-Ajk_imag) + Bik_imag * Ajk_real; ! } ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! /* const BASE Ajj_imag = 0.0; */ ! REAL(C, i * ldc + j) += temp1_real * Ajj_real; ! IMAG(C, i * ldc + j) += temp1_imag * Ajj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } diff -x.info* -rc2P gsl-1.3/cblas/source_hemv.h gsl-1.4/cblas/source_hemv.h *** gsl-1.3/cblas/source_hemv.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_hemv.h Fri Jul 25 15:18:17 2003 *************** *** 78,91 **** IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, lda * i + j); ! BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; --- 78,91 ---- IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, lda * i + j); ! BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; *************** *** 95,99 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; INDEX iy = OFFSET(N, incY) + (N - 1) * incY; --- 95,99 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; INDEX iy = OFFSET(N, incY) + (N - 1) * incY; *************** *** 115,128 **** for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, lda * i + j); ! BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; --- 115,128 ---- for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(A, lda * i + j); ! BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; diff -x.info* -rc2P gsl-1.3/cblas/source_her.h gsl-1.4/cblas/source_her.h *** gsl-1.3/cblas/source_her.h Fri Apr 27 19:19:00 2001 --- gsl-1.4/cblas/source_her.h Fri Jul 25 15:18:17 2003 *************** *** 34,55 **** { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + i) = 0; ! jx += incX; } for (j = i + 1; j < N; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 34,55 ---- { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + i) = 0; ! jx += incX; } for (j = i + 1; j < N; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 58,74 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + i) = 0; ! jx += incX; } --- 58,74 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + j) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + j) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(A, lda * i + i) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(A, lda * i + i) = 0; ! jx += incX; } diff -x.info* -rc2P gsl-1.3/cblas/source_her2.h gsl-1.4/cblas/source_her2.h *** gsl-1.3/cblas/source_her2.h Fri Apr 27 19:19:52 2001 --- gsl-1.4/cblas/source_her2.h Fri Jul 25 15:18:17 2003 *************** *** 54,68 **** for (j = i + 1; j < N; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(A, lda * i + j) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } ix += incX; --- 54,68 ---- for (j = i + 1; j < N; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(A, lda * i + j) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } ix += incX; *************** *** 70,74 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); --- 70,74 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); *************** *** 91,105 **** for (j = 0; j < i; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(A, lda * i + j) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } --- 91,105 ---- for (j = 0; j < i; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(A, lda * i + j) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(A, lda * i + j) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } diff -x.info* -rc2P gsl-1.3/cblas/source_her2k.h gsl-1.4/cblas/source_her2k.h *** gsl-1.3/cblas/source_her2k.h Fri Apr 27 19:23:08 2001 --- gsl-1.4/cblas/source_her2k.h Fri Jul 25 15:18:17 2003 *************** *** 34,38 **** uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; trans = (Trans == CblasNoTrans) ? CblasConjTrans : CblasNoTrans; ! alpha_imag *= -1; /* conjugate alpha */ } --- 34,38 ---- uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; trans = (Trans == CblasNoTrans) ? CblasConjTrans : CblasNoTrans; ! alpha_imag *= -1; /* conjugate alpha */ } *************** *** 42,56 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } --- 42,56 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } *************** *** 58,76 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0.0; ! for (j = i + 1; j < N; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j < i; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0.0; } } --- 58,76 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0.0; ! for (j = i + 1; j < N; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j < i; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0.0; } } *************** *** 90,139 **** /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ { ! BASE temp_real = 0.0; ! /* BASE temp_imag = 0.0; */ ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; ! } ! REAL(C, i * ldc + i) += 2 * temp_real; ! IMAG(C, i * ldc + i) = 0.0; } /* Cij += alpha Aik conj(Bjk) + conj(alpha) Bik conj(Ajk) */ for (j = i + 1; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! /* temp2 = alpha * Ajk */ ! const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; ! const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! ! /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ ! temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) ! + (Bik_real * temp2_real + Bik_imag * temp2_imag)); ! temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) ! + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); ! } ! REAL(C, i * ldc + j) += temp_real; ! IMAG(C, i * ldc + j) += temp_imag; } } --- 90,139 ---- /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ { ! BASE temp_real = 0.0; ! /* BASE temp_imag = 0.0; */ ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; ! } ! REAL(C, i * ldc + i) += 2 * temp_real; ! IMAG(C, i * ldc + i) = 0.0; } /* Cij += alpha Aik conj(Bjk) + conj(alpha) Bik conj(Ajk) */ for (j = i + 1; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! /* temp2 = alpha * Ajk */ ! const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; ! const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! ! /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ ! temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) ! + (Bik_real * temp2_real + Bik_imag * temp2_imag)); ! temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) ! + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); ! } ! REAL(C, i * ldc + j) += temp_real; ! IMAG(C, i * ldc + j) += temp_imag; } } *************** *** 143,174 **** for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! /* temp1 = alpha * conj(Aki) */ ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); ! BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; ! /* temp2 = conj(alpha) * conj(Bki) */ ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); ! ! /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ ! { ! REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); ! IMAG(C, i * lda + i) = 0.0; ! } ! ! for (j = i + 1; j < N; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } } } --- 143,174 ---- for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! /* temp1 = alpha * conj(Aki) */ ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); ! BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; ! /* temp2 = conj(alpha) * conj(Bki) */ ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); ! ! /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ ! { ! REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); ! IMAG(C, i * lda + i) = 0.0; ! } ! ! for (j = i + 1; j < N; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } } } *************** *** 181,230 **** for (j = 0; j < i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! /* temp2 = alpha * Ajk */ ! const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; ! const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! ! /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ ! temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) ! + (Bik_real * temp2_real + Bik_imag * temp2_imag)); ! temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) ! + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); ! } ! REAL(C, i * ldc + j) += temp_real; ! IMAG(C, i * ldc + j) += temp_imag; } /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ { ! BASE temp_real = 0.0; ! /* BASE temp_imag = 0.0; */ ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; ! } ! REAL(C, i * ldc + i) += 2 * temp_real; ! IMAG(C, i * ldc + i) = 0.0; } } --- 181,230 ---- for (j = 0; j < i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! /* temp2 = alpha * Ajk */ ! const BASE temp2_real = alpha_real * Ajk_real - alpha_imag * Ajk_imag; ! const BASE temp2_imag = alpha_real * Ajk_imag + alpha_imag * Ajk_real; ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! ! /* Cij += alpha * Aik * conj(Bjk) + conj(alpha) * Bik * conj(Ajk) */ ! temp_real += ((temp1_real * Bjk_real + temp1_imag * Bjk_imag) ! + (Bik_real * temp2_real + Bik_imag * temp2_imag)); ! temp_imag += ((temp1_real * (-Bjk_imag) + temp1_imag * Bjk_real) ! + (Bik_real * (-temp2_imag) + Bik_imag * temp2_real)); ! } ! REAL(C, i * ldc + j) += temp_real; ! IMAG(C, i * ldc + j) += temp_imag; } /* Cii += alpha Aik conj(Bik) + conj(alpha) Bik conj(Aik) */ { ! BASE temp_real = 0.0; ! /* BASE temp_imag = 0.0; */ ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! /* temp1 = alpha * Aik */ ! const BASE temp1_real = alpha_real * Aik_real - alpha_imag * Aik_imag; ! const BASE temp1_imag = alpha_real * Aik_imag + alpha_imag * Aik_real; ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! temp_real += temp1_real * Bik_real + temp1_imag * Bik_imag; ! } ! REAL(C, i * ldc + i) += 2 * temp_real; ! IMAG(C, i * ldc + i) = 0.0; } } *************** *** 234,265 **** for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! /* temp1 = alpha * conj(Aki) */ ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); ! BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; ! /* temp2 = conj(alpha) * conj(Bki) */ ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); ! ! for (j = 0; j < i; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } ! ! /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ ! { ! REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); ! IMAG(C, i * lda + i) = 0.0; ! } } } --- 234,265 ---- for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! /* temp1 = alpha * conj(Aki) */ ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * (-Aki_imag); ! BASE temp1_imag = alpha_real * (-Aki_imag) + alpha_imag * Aki_real; ! /* temp2 = conj(alpha) * conj(Bki) */ ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = -(alpha_real * Bki_imag + alpha_imag * Bki_real); ! ! for (j = 0; j < i; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! /* Cij += alpha * conj(Aki) * Bkj + conj(alpha) * conj(Bki) * Akj */ ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } ! ! /* Cii += alpha * conj(Aki) * Bki + conj(alpha) * conj(Bki) * Aki */ ! { ! REAL(C, i * lda + i) += 2 * (temp1_real * Bki_real - temp1_imag * Bki_imag); ! IMAG(C, i * lda + i) = 0.0; ! } } } diff -x.info* -rc2P gsl-1.3/cblas/source_herk.h gsl-1.4/cblas/source_herk.h *** gsl-1.3/cblas/source_herk.h Fri Apr 27 19:24:26 2001 --- gsl-1.4/cblas/source_herk.h Fri Jul 25 15:18:17 2003 *************** *** 37,51 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } --- 37,51 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } *************** *** 53,71 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0; ! for (j = i + 1; j < N; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j < i; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0; } } --- 53,71 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0; ! for (j = i + 1; j < N; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j < i; j++) { ! REAL(C, ldc * i + j) *= beta; ! IMAG(C, ldc * i + j) *= beta; ! } ! REAL(C, ldc * i + i) *= beta; ! IMAG(C, ldc * i + i) = 0; } } *************** *** 84,99 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } --- 84,99 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } *************** *** 103,118 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } --- 103,118 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } *************** *** 122,137 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } --- 122,137 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = -CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } *************** *** 141,156 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } --- 141,156 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = -CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha * temp_real; ! IMAG(C, i * ldc + j) += alpha * temp_imag; } } diff -x.info* -rc2P gsl-1.3/cblas/source_hpmv.h gsl-1.4/cblas/source_hpmv.h *** gsl-1.3/cblas/source_hpmv.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_hpmv.h Fri Jul 25 15:18:17 2003 *************** *** 79,92 **** IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); ! BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; --- 79,92 ---- IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); ! BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; *************** *** 96,100 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); --- 96,100 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); *************** *** 116,129 **** IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); ! BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; --- 116,129 ---- IMAG(Y, iy) += temp1_imag * Aii_real; for (j = j_min; j < j_max; j++) { ! BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); ! BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); ! REAL(Y, jy) += temp1_real * Aij_real - temp1_imag * (-Aij_imag); ! IMAG(Y, jy) += temp1_real * (-Aij_imag) + temp1_imag * Aij_real; ! x_real = CONST_REAL(X, jx); ! x_imag = CONST_IMAG(X, jx); ! temp2_real += x_real * Aij_real - x_imag * Aij_imag; ! temp2_imag += x_real * Aij_imag + x_imag * Aij_real; ! jx += incX; ! jy += incY; } REAL(Y, iy) += alpha_real * temp2_real - alpha_imag * temp2_imag; diff -x.info* -rc2P gsl-1.3/cblas/source_hpr.h gsl-1.4/cblas/source_hpr.h *** gsl-1.3/cblas/source_hpr.h Fri Apr 27 19:27:21 2001 --- gsl-1.4/cblas/source_hpr.h Fri Jul 25 15:18:17 2003 *************** *** 34,55 **** { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPUP(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPUP(N, i, i)) = 0; ! jx += incX; } for (j = i + 1; j < N; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPUP(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPUP(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 34,55 ---- { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPUP(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPUP(N, i, i)) = 0; ! jx += incX; } for (j = i + 1; j < N; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPUP(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPUP(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 58,74 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPLO(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPLO(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPLO(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPLO(N, i, i)) = 0; ! jx += incX; } --- 58,74 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPLO(N, i, j)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPLO(N, i, j)) += X_imag * tmp_real + X_real * tmp_imag; ! jx += incX; } { ! const BASE X_real = CONST_REAL(X, jx); ! const BASE X_imag = -conj * CONST_IMAG(X, jx); ! REAL(Ap, TPLO(N, i, i)) += X_real * tmp_real - X_imag * tmp_imag; ! IMAG(Ap, TPLO(N, i, i)) = 0; ! jx += incX; } diff -x.info* -rc2P gsl-1.3/cblas/source_hpr2.h gsl-1.4/cblas/source_hpr2.h *** gsl-1.3/cblas/source_hpr2.h Fri Apr 27 19:28:03 2001 --- gsl-1.4/cblas/source_hpr2.h Fri Jul 25 15:18:17 2003 *************** *** 54,68 **** for (j = i + 1; j < N; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(Ap, TPUP(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(Ap, TPUP(N, i, j)) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } ix += incX; --- 54,68 ---- for (j = i + 1; j < N; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(Ap, TPUP(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(Ap, TPUP(N, i, j)) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } ix += incX; *************** *** 70,74 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); --- 70,74 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); *************** *** 91,105 **** for (j = 0; j < i; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(Ap, TPLO(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(Ap, TPLO(N, i, j)) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } --- 91,105 ---- for (j = 0; j < i; j++) { ! const BASE Xj_real = CONST_REAL(X, jx); ! const BASE Xj_imag = CONST_IMAG(X, jx); ! const BASE Yj_real = CONST_REAL(Y, jy); ! const BASE Yj_imag = CONST_IMAG(Y, jy); ! REAL(Ap, TPLO(N, i, j)) += ((tmp1_real * Yj_real + tmp1_imag * Yj_imag) ! + (tmp2_real * Xj_real + tmp2_imag * Xj_imag)); ! IMAG(Ap, TPLO(N, i, j)) += ! conj * ((tmp1_imag * Yj_real - tmp1_real * Yj_imag) + ! (tmp2_imag * Xj_real - tmp2_real * Xj_imag)); ! jx += incX; ! jy += incY; } diff -x.info* -rc2P gsl-1.3/cblas/source_nrm2_c.h gsl-1.4/cblas/source_nrm2_c.h *** gsl-1.3/cblas/source_nrm2_c.h Fri Apr 27 18:46:05 2001 --- gsl-1.4/cblas/source_nrm2_c.h Fri Jul 25 15:18:17 2003 *************** *** 36,43 **** if (scale < ax) { ! ssq = 1.0 + ssq * (scale / ax) * (scale / ax); ! scale = ax; } else { ! ssq += (ax / scale) * (ax / scale); } } --- 36,43 ---- if (scale < ax) { ! ssq = 1.0 + ssq * (scale / ax) * (scale / ax); ! scale = ax; } else { ! ssq += (ax / scale) * (ax / scale); } } *************** *** 47,54 **** if (scale < ay) { ! ssq = 1.0 + ssq * (scale / ay) * (scale / ay); ! scale = ay; } else { ! ssq += (ay / scale) * (ay / scale); } } --- 47,54 ---- if (scale < ay) { ! ssq = 1.0 + ssq * (scale / ay) * (scale / ay); ! scale = ay; } else { ! ssq += (ay / scale) * (ay / scale); } } diff -x.info* -rc2P gsl-1.3/cblas/source_nrm2_r.h gsl-1.4/cblas/source_nrm2_r.h *** gsl-1.3/cblas/source_nrm2_r.h Fri Apr 27 18:32:25 2001 --- gsl-1.4/cblas/source_nrm2_r.h Fri Jul 25 15:18:17 2003 *************** *** 37,44 **** if (scale < ax) { ! ssq = 1.0 + ssq * (scale / ax) * (scale / ax); ! scale = ax; } else { ! ssq += (ax / scale) * (ax / scale); } } --- 37,44 ---- if (scale < ax) { ! ssq = 1.0 + ssq * (scale / ax) * (scale / ax); ! scale = ax; } else { ! ssq += (ax / scale) * (ax / scale); } } diff -x.info* -rc2P gsl-1.3/cblas/source_rotmg.h gsl-1.4/cblas/source_rotmg.h *** gsl-1.3/cblas/source_rotmg.h Fri Apr 27 18:55:10 2001 --- gsl-1.4/cblas/source_rotmg.h Fri Jul 25 15:18:17 2003 *************** *** 40,44 **** if (D2 * y == 0.0) { ! P[0] = -2; /* case of H = I, page 315 */ return; } --- 40,44 ---- if (D2 * y == 0.0) { ! P[0] = -2; /* case of H = I, page 315 */ return; } *************** *** 59,63 **** u = 1 - h21 * h12; ! if (u <= 0.0) { /* the case u <= 0 is rejected */ P[0] = -1; P[1] = 0; --- 59,63 ---- u = 1 - h21 * h12; ! if (u <= 0.0) { /* the case u <= 0 is rejected */ P[0] = -1; P[1] = 0; diff -x.info* -rc2P gsl-1.3/cblas/source_sbmv.h gsl-1.4/cblas/source_sbmv.h *** gsl-1.3/cblas/source_sbmv.h Fri Apr 27 18:32:25 2001 --- gsl-1.4/cblas/source_sbmv.h Fri Jul 25 15:18:17 2003 *************** *** 61,69 **** Y[iy] += tmp1 * A[0 + i * lda]; for (j = j_min; j < j_max; j++) { ! BASE Aij = A[(j - i) + i * lda]; ! Y[jy] += tmp1 * Aij; ! tmp2 += Aij * X[jx]; ! jx += incX; ! jy += incY; } Y[iy] += alpha * tmp2; --- 61,69 ---- Y[iy] += tmp1 * A[0 + i * lda]; for (j = j_min; j < j_max; j++) { ! BASE Aij = A[(j - i) + i * lda]; ! Y[jy] += tmp1 * Aij; ! tmp2 += Aij * X[jx]; ! jx += incX; ! jy += incY; } Y[iy] += alpha * tmp2; *************** *** 72,76 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); --- 72,76 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); *************** *** 84,92 **** INDEX jy = OFFSET(N, incY) + j_min * incY; for (j = j_min; j < j_max; j++) { ! BASE Aij = A[(K - i + j) + i * lda]; ! Y[jy] += tmp1 * Aij; ! tmp2 += Aij * X[jx]; ! jx += incX; ! jy += incY; } Y[iy] += tmp1 * A[K + i * lda] + alpha * tmp2; --- 84,92 ---- INDEX jy = OFFSET(N, incY) + j_min * incY; for (j = j_min; j < j_max; j++) { ! BASE Aij = A[(K - i + j) + i * lda]; ! Y[jy] += tmp1 * Aij; ! tmp2 += Aij * X[jx]; ! jx += incX; ! jy += incY; } Y[iy] += tmp1 * A[K + i * lda] + alpha * tmp2; diff -x.info* -rc2P gsl-1.3/cblas/source_spmv.h gsl-1.4/cblas/source_spmv.h *** gsl-1.3/cblas/source_spmv.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_spmv.h Fri Jul 25 15:18:17 2003 *************** *** 60,68 **** for (j = j_min; j < j_max; j++) { ! const BASE apk = Ap[TPUP(N, i, j)]; ! Y[jy] += tmp1 * apk; ! tmp2 += apk * X[jx]; ! jy += incY; ! jx += incX; } Y[iy] += alpha * tmp2; --- 60,68 ---- for (j = j_min; j < j_max; j++) { ! const BASE apk = Ap[TPUP(N, i, j)]; ! Y[jy] += tmp1 * apk; ! tmp2 += apk * X[jx]; ! jy += incY; ! jx += incX; } Y[iy] += alpha * tmp2; *************** *** 71,75 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); --- 71,75 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); *************** *** 86,94 **** for (j = j_min; j < j_max; j++) { ! const BASE apk = Ap[TPLO(N, i, j)]; ! Y[jy] += tmp1 * apk; ! tmp2 += apk * X[jx]; ! jy += incY; ! jx += incX; } Y[iy] += alpha * tmp2; --- 86,94 ---- for (j = j_min; j < j_max; j++) { ! const BASE apk = Ap[TPLO(N, i, j)]; ! Y[jy] += tmp1 * apk; ! tmp2 += apk * X[jx]; ! jy += incY; ! jx += incX; } Y[iy] += alpha * tmp2; diff -x.info* -rc2P gsl-1.3/cblas/source_spr.h gsl-1.4/cblas/source_spr.h *** gsl-1.3/cblas/source_spr.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_spr.h Fri Jul 25 15:18:17 2003 *************** *** 34,44 **** INDEX jx = ix; for (j = i; j < N; j++) { ! Ap[TPUP(N, i, j)] += X[jx] * tmp; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 34,44 ---- INDEX jx = ix; for (j = i; j < N; j++) { ! Ap[TPUP(N, i, j)] += X[jx] * tmp; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 46,51 **** INDEX jx = OFFSET(N, incX); for (j = 0; j <= i; j++) { ! Ap[TPLO(N, i, j)] += X[jx] * tmp; ! jx += incX; } ix += incX; --- 46,51 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j <= i; j++) { ! Ap[TPLO(N, i, j)] += X[jx] * tmp; ! jx += incX; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_spr2.h gsl-1.4/cblas/source_spr2.h *** gsl-1.3/cblas/source_spr2.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_spr2.h Fri Jul 25 15:18:17 2003 *************** *** 37,43 **** INDEX jy = iy; for (j = i; j < N; j++) { ! Ap[TPUP(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; --- 37,43 ---- INDEX jy = iy; for (j = i; j < N; j++) { ! Ap[TPUP(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; *************** *** 45,49 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); --- 45,49 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); *************** *** 54,60 **** INDEX jy = OFFSET(N, incY); for (j = 0; j <= i; j++) { ! Ap[TPLO(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; --- 54,60 ---- INDEX jy = OFFSET(N, incY); for (j = 0; j <= i; j++) { ! Ap[TPLO(N, i, j)] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_symm_c.h gsl-1.4/cblas/source_symm_c.h *** gsl-1.3/cblas/source_symm_c.h Fri Apr 27 19:29:31 2001 --- gsl-1.4/cblas/source_symm_c.h Fri Jul 25 15:18:17 2003 *************** *** 48,53 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; } } --- 48,53 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; } } *************** *** 55,62 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; } } --- 55,62 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; } } *************** *** 72,99 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = CONST_IMAG(A, i * lda + i); ! REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; ! IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; ! } ! for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 72,99 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = CONST_IMAG(A, i * lda + i); ! REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; ! IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; ! } ! for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } *************** *** 105,132 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = CONST_IMAG(A, i * lda + i); ! REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; ! IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 105,132 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = CONST_REAL(B, ldb * k + j); ! const BASE Bkj_imag = CONST_IMAG(B, ldb * k + j); ! REAL(C, k * ldc + j) += Aik_real * temp1_real - Aik_imag * temp1_imag; ! IMAG(C, k * ldc + j) += Aik_real * temp1_imag + Aik_imag * temp1_real; ! temp2_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp2_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = CONST_IMAG(A, i * lda + i); ! REAL(C, i * ldc + j) += temp1_real * Aii_real - temp1_imag * Aii_imag; ! IMAG(C, i * ldc + j) += temp1_real * Aii_imag + temp1_imag * Aii_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } *************** *** 138,165 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); ! REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; ! IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; ! } ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; ! temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 138,165 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); ! REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; ! IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; ! } ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; ! temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } *************** *** 171,198 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; ! temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; ! } ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); ! REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; ! IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } --- 171,198 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE Bij_real = CONST_REAL(B, ldb * i + j); ! const BASE Bij_imag = CONST_IMAG(B, ldb * i + j); ! const BASE temp1_real = alpha_real * Bij_real - alpha_imag * Bij_imag; ! const BASE temp1_imag = alpha_real * Bij_imag + alpha_imag * Bij_real; ! BASE temp2_real = 0.0; ! BASE temp2_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = CONST_REAL(B, ldb * i + k); ! const BASE Bik_imag = CONST_IMAG(B, ldb * i + k); ! REAL(C, i * ldc + k) += temp1_real * Ajk_real - temp1_imag * Ajk_imag; ! IMAG(C, i * ldc + k) += temp1_real * Ajk_imag + temp1_imag * Ajk_real; ! temp2_real += Bik_real * Ajk_real - Bik_imag * Ajk_imag; ! temp2_imag += Bik_real * Ajk_imag + Bik_imag * Ajk_real; ! } ! { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = CONST_IMAG(A, j * lda + j); ! REAL(C, i * ldc + j) += temp1_real * Ajj_real - temp1_imag * Ajj_imag; ! IMAG(C, i * ldc + j) += temp1_real * Ajj_imag + temp1_imag * Ajj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp2_real - alpha_imag * temp2_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp2_imag + alpha_imag * temp2_real; } } diff -x.info* -rc2P gsl-1.3/cblas/source_symm_r.h gsl-1.4/cblas/source_symm_r.h *** gsl-1.3/cblas/source_symm_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_symm_r.h Fri Jul 25 15:18:17 2003 *************** *** 42,46 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] = 0.0; } } --- 42,46 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] = 0.0; } } *************** *** 48,52 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] *= beta; } } --- 48,52 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! C[ldc * i + j] *= beta; } } *************** *** 62,74 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! C[i * ldc + j] += temp1 * A[i * lda + i]; ! for (k = i + 1; k < n1; k++) { ! const BASE Aik = A[i * lda + k]; ! C[k * ldc + j] += Aik * temp1; ! temp2 += Aik * B[ldb * k + j]; ! } ! C[i * ldc + j] += alpha * temp2; } } --- 62,74 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! C[i * ldc + j] += temp1 * A[i * lda + i]; ! for (k = i + 1; k < n1; k++) { ! const BASE Aik = A[i * lda + k]; ! C[k * ldc + j] += Aik * temp1; ! temp2 += Aik * B[ldb * k + j]; ! } ! C[i * ldc + j] += alpha * temp2; } } *************** *** 80,91 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik = A[i * lda + k]; ! C[k * ldc + j] += Aik * temp1; ! temp2 += Aik * B[ldb * k + j]; ! } ! C[i * ldc + j] += temp1 * A[i * lda + i] + alpha * temp2; } } --- 80,91 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik = A[i * lda + k]; ! C[k * ldc + j] += Aik * temp1; ! temp2 += Aik * B[ldb * k + j]; ! } ! C[i * ldc + j] += temp1 * A[i * lda + i] + alpha * temp2; } } *************** *** 97,109 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! C[i * ldc + j] += temp1 * A[j * lda + j]; ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk = A[j * lda + k]; ! C[i * ldc + k] += temp1 * Ajk; ! temp2 += B[ldb * i + k] * Ajk; ! } ! C[i * ldc + j] += alpha * temp2; } } --- 97,109 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! C[i * ldc + j] += temp1 * A[j * lda + j]; ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk = A[j * lda + k]; ! C[i * ldc + k] += temp1 * Ajk; ! temp2 += B[ldb * i + k] * Ajk; ! } ! C[i * ldc + j] += alpha * temp2; } } *************** *** 115,126 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk = A[j * lda + k]; ! C[i * ldc + k] += temp1 * Ajk; ! temp2 += B[ldb * i + k] * Ajk; ! } ! C[i * ldc + j] += temp1 * A[j * lda + j] + alpha * temp2; } } --- 115,126 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! const BASE temp1 = alpha * B[ldb * i + j]; ! BASE temp2 = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk = A[j * lda + k]; ! C[i * ldc + k] += temp1 * Ajk; ! temp2 += B[ldb * i + k] * Ajk; ! } ! C[i * ldc + j] += temp1 * A[j * lda + j] + alpha * temp2; } } diff -x.info* -rc2P gsl-1.3/cblas/source_symv.h gsl-1.4/cblas/source_symv.h *** gsl-1.3/cblas/source_symv.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_symv.h Fri Jul 25 15:18:17 2003 *************** *** 57,64 **** Y[iy] += temp1 * A[lda * i + i]; for (j = j_min; j < j_max; j++) { ! Y[jy] += temp1 * A[lda * i + j]; ! temp2 += X[jx] * A[lda * i + j]; ! jx += incX; ! jy += incY; } Y[iy] += alpha * temp2; --- 57,64 ---- Y[iy] += temp1 * A[lda * i + i]; for (j = j_min; j < j_max; j++) { ! Y[jy] += temp1 * A[lda * i + j]; ! temp2 += X[jx] * A[lda * i + j]; ! jx += incX; ! jy += incY; } Y[iy] += alpha * temp2; *************** *** 67,71 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; INDEX iy = OFFSET(N, incY) + (N - 1) * incY; --- 67,71 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; INDEX iy = OFFSET(N, incY) + (N - 1) * incY; *************** *** 79,86 **** Y[iy] += temp1 * A[lda * i + i]; for (j = j_min; j < j_max; j++) { ! Y[jy] += temp1 * A[lda * i + j]; ! temp2 += X[jx] * A[lda * i + j]; ! jx += incX; ! jy += incY; } Y[iy] += alpha * temp2; --- 79,86 ---- Y[iy] += temp1 * A[lda * i + i]; for (j = j_min; j < j_max; j++) { ! Y[jy] += temp1 * A[lda * i + j]; ! temp2 += X[jx] * A[lda * i + j]; ! jx += incX; ! jy += incY; } Y[iy] += alpha * temp2; diff -x.info* -rc2P gsl-1.3/cblas/source_syr.h gsl-1.4/cblas/source_syr.h *** gsl-1.3/cblas/source_syr.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_syr.h Fri Jul 25 15:18:17 2003 *************** *** 34,44 **** INDEX jx = ix; for (j = i; j < N; j++) { ! A[lda * i + j] += X[jx] * tmp; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 34,44 ---- INDEX jx = ix; for (j = i; j < N; j++) { ! A[lda * i + j] += X[jx] * tmp; ! jx += incX; } ix += incX; } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 46,51 **** INDEX jx = OFFSET(N, incX); for (j = 0; j <= i; j++) { ! A[lda * i + j] += X[jx] * tmp; ! jx += incX; } ix += incX; --- 46,51 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j <= i; j++) { ! A[lda * i + j] += X[jx] * tmp; ! jx += incX; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_syr2.h gsl-1.4/cblas/source_syr2.h *** gsl-1.3/cblas/source_syr2.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_syr2.h Fri Jul 25 15:18:17 2003 *************** *** 37,43 **** INDEX jy = iy; for (j = i; j < N; j++) { ! A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; --- 37,43 ---- INDEX jy = iy; for (j = i; j < N; j++) { ! A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; *************** *** 45,49 **** } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); --- 45,49 ---- } } else if ((order == CblasRowMajor && Uplo == CblasLower) ! || (order == CblasColMajor && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); INDEX iy = OFFSET(N, incY); *************** *** 54,60 **** INDEX jy = OFFSET(N, incY); for (j = 0; j <= i; j++) { ! A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; --- 54,60 ---- INDEX jy = OFFSET(N, incY); for (j = 0; j <= i; j++) { ! A[lda * i + j] += tmp1 * Y[jy] + tmp2 * X[jx]; ! jx += incX; ! jy += incY; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_syr2k_c.h gsl-1.4/cblas/source_syr2k_c.h *** gsl-1.3/cblas/source_syr2k_c.h Fri Apr 27 19:31:25 2001 --- gsl-1.4/cblas/source_syr2k_c.h Fri Jul 25 15:18:17 2003 *************** *** 44,58 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } --- 44,58 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } *************** *** 60,78 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } --- 60,78 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } *************** *** 87,108 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) ! + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); ! temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) ! + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 87,108 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) ! + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); ! temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) ! + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 112,133 **** for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; ! BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; ! for (j = i; j < N; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } } } --- 112,133 ---- for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; ! BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; ! for (j = i; j < N; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } } } *************** *** 138,159 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) ! + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); ! temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) ! + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 138,159 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Bik_real = CONST_REAL(B, i * ldb + k); ! const BASE Bik_imag = CONST_IMAG(B, i * ldb + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! const BASE Bjk_real = CONST_REAL(B, j * ldb + k); ! const BASE Bjk_imag = CONST_IMAG(B, j * ldb + k); ! temp_real += ((Aik_real * Bjk_real - Aik_imag * Bjk_imag) ! + (Bik_real * Ajk_real - Bik_imag * Ajk_imag)); ! temp_imag += ((Aik_real * Bjk_imag + Aik_imag * Bjk_real) ! + (Bik_real * Ajk_imag + Bik_imag * Ajk_real)); ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 163,184 **** for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; ! BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; ! for (j = 0; j <= i; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } } } --- 163,184 ---- for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE Aki_real = CONST_REAL(A, k * lda + i); ! BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! BASE Bki_real = CONST_REAL(B, k * ldb + i); ! BASE Bki_imag = CONST_IMAG(B, k * ldb + i); ! BASE temp1_real = alpha_real * Aki_real - alpha_imag * Aki_imag; ! BASE temp1_imag = alpha_real * Aki_imag + alpha_imag * Aki_real; ! BASE temp2_real = alpha_real * Bki_real - alpha_imag * Bki_imag; ! BASE temp2_imag = alpha_real * Bki_imag + alpha_imag * Bki_real; ! for (j = 0; j <= i; j++) { ! BASE Akj_real = CONST_REAL(A, k * lda + j); ! BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! BASE Bkj_real = CONST_REAL(B, k * ldb + j); ! BASE Bkj_imag = CONST_IMAG(B, k * ldb + j); ! REAL(C, i * lda + j) += (temp1_real * Bkj_real - temp1_imag * Bkj_imag) ! + (temp2_real * Akj_real - temp2_imag * Akj_imag); ! IMAG(C, i * lda + j) += (temp1_real * Bkj_imag + temp1_imag * Bkj_real) ! + (temp2_real * Akj_imag + temp2_imag * Akj_real); ! } } } diff -x.info* -rc2P gsl-1.3/cblas/source_syr2k_r.h gsl-1.4/cblas/source_syr2k_r.h *** gsl-1.3/cblas/source_syr2k_r.h Fri Apr 27 18:53:09 2001 --- gsl-1.4/cblas/source_syr2k_r.h Fri Jul 25 15:18:17 2003 *************** *** 42,54 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] = 0.0; ! } } } --- 42,54 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] = 0.0; ! } } } *************** *** 56,68 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] *= beta; ! } } } --- 56,68 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] *= beta; ! } } } *************** *** 76,85 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += (A[i * lda + k] * B[j * ldb + k] ! + B[i * ldb + k] * A[j * lda + k]); ! } ! C[i * ldc + j] += alpha * temp; } } --- 76,85 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += (A[i * lda + k] * B[j * ldb + k] ! + B[i * ldb + k] * A[j * lda + k]); ! } ! C[i * ldc + j] += alpha * temp; } } *************** *** 89,97 **** for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE temp1 = alpha * A[k * lda + i]; ! BASE temp2 = alpha * B[k * ldb + i]; ! for (j = i; j < N; j++) { ! C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; ! } } } --- 89,97 ---- for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE temp1 = alpha * A[k * lda + i]; ! BASE temp2 = alpha * B[k * ldb + i]; ! for (j = i; j < N; j++) { ! C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; ! } } } *************** *** 102,111 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += (A[i * lda + k] * B[j * ldb + k] ! + B[i * ldb + k] * A[j * lda + k]); ! } ! C[i * ldc + j] += alpha * temp; } } --- 102,111 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += (A[i * lda + k] * B[j * ldb + k] ! + B[i * ldb + k] * A[j * lda + k]); ! } ! C[i * ldc + j] += alpha * temp; } } *************** *** 115,123 **** for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE temp1 = alpha * A[k * lda + i]; ! BASE temp2 = alpha * B[k * ldb + i]; ! for (j = 0; j <= i; j++) { ! C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; ! } } } --- 115,123 ---- for (k = 0; k < K; k++) { for (i = 0; i < N; i++) { ! BASE temp1 = alpha * A[k * lda + i]; ! BASE temp2 = alpha * B[k * ldb + i]; ! for (j = 0; j <= i; j++) { ! C[i * lda + j] += temp1 * B[k * ldb + j] + temp2 * A[k * lda + j]; ! } } } diff -x.info* -rc2P gsl-1.3/cblas/source_syrk_c.h gsl-1.4/cblas/source_syrk_c.h *** gsl-1.3/cblas/source_syrk_c.h Fri Apr 27 19:32:14 2001 --- gsl-1.4/cblas/source_syrk_c.h Fri Jul 25 15:18:17 2003 *************** *** 45,59 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } --- 45,59 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! REAL(C, ldc * i + j) = 0.0; ! IMAG(C, ldc * i + j) = 0.0; ! } } } *************** *** 61,79 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } --- 61,79 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! const BASE Cij_real = REAL(C, ldc * i + j); ! const BASE Cij_imag = IMAG(C, ldc * i + j); ! REAL(C, ldc * i + j) = beta_real * Cij_real - beta_imag * Cij_imag; ! IMAG(C, ldc * i + j) = beta_real * Cij_imag + beta_imag * Cij_real; ! } } } *************** *** 87,102 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 87,102 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 106,121 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 106,121 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 125,140 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 125,140 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = CONST_IMAG(A, i * lda + k); ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = CONST_IMAG(A, j * lda + k); ! temp_real += Aik_real * Ajk_real - Aik_imag * Ajk_imag; ! temp_imag += Aik_real * Ajk_imag + Aik_imag * Ajk_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 144,159 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } --- 144,159 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < K; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = CONST_IMAG(A, k * lda + i); ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = CONST_IMAG(A, k * lda + j); ! temp_real += Aki_real * Akj_real - Aki_imag * Akj_imag; ! temp_imag += Aki_real * Akj_imag + Aki_imag * Akj_real; ! } ! REAL(C, i * ldc + j) += alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(C, i * ldc + j) += alpha_real * temp_imag + alpha_imag * temp_real; } } diff -x.info* -rc2P gsl-1.3/cblas/source_syrk_r.h gsl-1.4/cblas/source_syrk_r.h *** gsl-1.3/cblas/source_syrk_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_syrk_r.h Fri Jul 25 15:18:17 2003 *************** *** 42,54 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] = 0.0; ! } } } --- 42,54 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] = 0.0; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] = 0.0; ! } } } *************** *** 56,68 **** if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] *= beta; ! } } } --- 56,68 ---- if (uplo == CblasUpper) { for (i = 0; i < N; i++) { ! for (j = i; j < N; j++) { ! C[ldc * i + j] *= beta; ! } } } else { for (i = 0; i < N; i++) { ! for (j = 0; j <= i; j++) { ! C[ldc * i + j] *= beta; ! } } } *************** *** 76,84 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[i * lda + k] * A[j * lda + k]; ! } ! C[i * ldc + j] += alpha * temp; } } --- 76,84 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[i * lda + k] * A[j * lda + k]; ! } ! C[i * ldc + j] += alpha * temp; } } *************** *** 88,96 **** for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[k * lda + i] * A[k * lda + j]; ! } ! C[i * ldc + j] += alpha * temp; } } --- 88,96 ---- for (i = 0; i < N; i++) { for (j = i; j < N; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[k * lda + i] * A[k * lda + j]; ! } ! C[i * ldc + j] += alpha * temp; } } *************** *** 100,108 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[i * lda + k] * A[j * lda + k]; ! } ! C[i * ldc + j] += alpha * temp; } } --- 100,108 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[i * lda + k] * A[j * lda + k]; ! } ! C[i * ldc + j] += alpha * temp; } } *************** *** 112,120 **** for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[k * lda + i] * A[k * lda + j]; ! } ! C[i * ldc + j] += alpha * temp; } } --- 112,120 ---- for (i = 0; i < N; i++) { for (j = 0; j <= i; j++) { ! BASE temp = 0.0; ! for (k = 0; k < K; k++) { ! temp += A[k * lda + i] * A[k * lda + j]; ! } ! C[i * ldc + j] += alpha * temp; } } diff -x.info* -rc2P gsl-1.3/cblas/source_tbmv_c.h gsl-1.4/cblas/source_tbmv_c.h *** gsl-1.3/cblas/source_tbmv_c.h Fri Apr 27 19:34:24 2001 --- gsl-1.4/cblas/source_tbmv_c.h Fri Jul 25 15:18:17 2003 *************** *** 37,69 **** INDEX jx = OFFSET(N, incX) + incX * j_min; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + (j - i)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + (j - i)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + 0); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; ! for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ BASE temp_r = 0.0; BASE temp_i = 0.0; --- 37,69 ---- INDEX jx = OFFSET(N, incX) + incX * j_min; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + (j - i)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + (j - i)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + 0); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; ! for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ BASE temp_r = 0.0; BASE temp_i = 0.0; *************** *** 72,105 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + (K - i + j)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + (K - i + j)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + K); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ INDEX ix = OFFSET(N, incX) + (N - 1) * incX; ! for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ BASE temp_r = 0.0; BASE temp_i = 0.0; --- 72,105 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + (K - i + j)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + (K - i + j)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + K); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ INDEX ix = OFFSET(N, incX) + (N - 1) * incX; ! for (i = N; i > 0 && i--;) { /* N-1 ... 0 */ BASE temp_r = 0.0; BASE temp_i = 0.0; *************** *** 108,137 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + (i - j)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + (i - j)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + 0); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 108,137 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + (i - j)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + (i - j)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + 0); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + 0); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 142,166 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + (K - j + i)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + (K - j + i)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + K); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; --- 142,166 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + (K - j + i)); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + (K - j + i)); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + K); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + K); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_tbmv_r.h gsl-1.4/cblas/source_tbmv_r.h *** gsl-1.3/cblas/source_tbmv_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_tbmv_r.h Fri Jul 25 15:18:17 2003 *************** *** 38,43 **** for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + (j - i)]; ! jx += incX; } --- 38,43 ---- for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + (j - i)]; ! jx += incX; } *************** *** 46,50 **** } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; --- 46,50 ---- } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; *************** *** 55,60 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + (K - i + j)]; ! jx += incX; } X[ix] = temp; --- 55,60 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + (K - i + j)]; ! jx += incX; } X[ix] = temp; *************** *** 63,67 **** } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ INDEX ix = OFFSET(N, incX) + (N - 1) * incX; --- 63,67 ---- } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ INDEX ix = OFFSET(N, incX) + (N - 1) * incX; *************** *** 73,88 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + (i - j)]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + 0]; } else { ! X[ix] += temp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); --- 73,88 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + (i - j)]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + 0]; } else { ! X[ix] += temp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); *************** *** 93,103 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + (K - j + i)]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + K]; } else { ! X[ix] += temp; } ix += incX; --- 93,103 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + (K - j + i)]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + K]; } else { ! X[ix] += temp; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_tbsv_c.h gsl-1.4/cblas/source_tbsv_c.h *** gsl-1.3/cblas/source_tbsv_c.h Wed May 2 13:14:34 2001 --- gsl-1.4/cblas/source_tbsv_c.h Fri Jul 25 15:18:17 2003 *************** *** 41,64 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + 0); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + 0); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; --- 41,64 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + (j - i)); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (j - i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + 0); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + 0); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; *************** *** 66,70 **** } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ --- 66,70 ---- } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ *************** *** 78,105 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + (K + j - i)); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (K + j - i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + K); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + K); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ --- 78,105 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + (K + j - i)); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + (K + j - i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + K); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + K); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ *************** *** 115,142 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, (i - j) + lda * j); ! const BASE Aij_imag = conj * CONST_IMAG(A, (i - j) + lda * j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, 0 + lda * i); ! const BASE a_imag = conj * CONST_IMAG(A, 0 + lda * i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ --- 115,142 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, (i - j) + lda * j); ! const BASE Aij_imag = conj * CONST_IMAG(A, (i - j) + lda * j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, 0 + lda * i); ! const BASE a_imag = conj * CONST_IMAG(A, 0 + lda * i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ *************** *** 151,174 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, (K + i - j) + lda * j); ! const BASE Aij_imag = conj * CONST_IMAG(A, (K + i - j) + lda * j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, K + lda * i); ! const BASE a_imag = conj * CONST_IMAG(A, K + lda * i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; --- 151,174 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij_real = CONST_REAL(A, (K + i - j) + lda * j); ! const BASE Aij_imag = conj * CONST_IMAG(A, (K + i - j) + lda * j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, K + lda * i); ! const BASE a_imag = conj * CONST_IMAG(A, K + lda * i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; diff -x.info* -rc2P gsl-1.3/cblas/source_tbsv_r.h gsl-1.4/cblas/source_tbsv_r.h *** gsl-1.3/cblas/source_tbsv_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_tbsv_r.h Fri Jul 25 15:18:17 2003 *************** *** 38,54 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij = A[lda * i + (j - i)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + 0]; } else { ! X[ix] = tmp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ --- 38,54 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij = A[lda * i + (j - i)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + 0]; } else { ! X[ix] = tmp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ *************** *** 61,77 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij = A[lda * i + (K + j - i)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + K]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ --- 61,77 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aij = A[lda * i + (K + j - i)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + K]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ *************** *** 85,101 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aji = A[(i - j) + lda * j]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[0 + lda * i]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ --- 85,101 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aji = A[(i - j) + lda * j]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[0 + lda * i]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ *************** *** 107,118 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aji = A[(K + i - j) + lda * j]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[K + lda * i]; } else { ! X[ix] = tmp; } ix -= incX; --- 107,118 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! const BASE Aji = A[(K + i - j) + lda * j]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[K + lda * i]; } else { ! X[ix] = tmp; } ix -= incX; diff -x.info* -rc2P gsl-1.3/cblas/source_tpmv_c.h gsl-1.4/cblas/source_tpmv_c.h *** gsl-1.3/cblas/source_tpmv_c.h Fri Apr 27 19:43:20 2001 --- gsl-1.4/cblas/source_tpmv_c.h Fri Jul 25 15:18:17 2003 *************** *** 36,46 **** BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } --- 36,46 ---- BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } *************** *** 63,67 **** } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + incX * (N - 1); --- 63,67 ---- } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + incX * (N - 1); *************** *** 72,82 **** BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } --- 72,82 ---- BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } *************** *** 99,103 **** } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ --- 99,103 ---- } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ *************** *** 109,119 **** BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } { --- 109,119 ---- BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } { *************** *** 135,139 **** } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); --- 135,139 ---- } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); *************** *** 144,154 **** BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } { --- 144,154 ---- BASE temp_i; if (nonunit) { ! BASE x_real = REAL(X, ix); ! BASE x_imag = IMAG(X, ix); ! temp_r = Aii_real * x_real - Aii_imag * x_imag; ! temp_i = Aii_real * x_imag + Aii_imag * x_real; } else { ! temp_r = REAL(X, ix); ! temp_i = IMAG(X, ix); } { diff -x.info* -rc2P gsl-1.3/cblas/source_tpmv_r.h gsl-1.4/cblas/source_tpmv_r.h *** gsl-1.3/cblas/source_tpmv_r.h Fri Apr 27 18:57:20 2001 --- gsl-1.4/cblas/source_tpmv_r.h Fri Jul 25 15:18:17 2003 *************** *** 36,42 **** INDEX jx = OFFSET(N, incX) + (i + 1) * incX; for (j = i + 1; j < N; j++) { ! atmp = Ap[TPUP(N, i, j)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; --- 36,42 ---- INDEX jx = OFFSET(N, incX) + (i + 1) * incX; for (j = i + 1; j < N; j++) { ! atmp = Ap[TPUP(N, i, j)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; *************** *** 44,48 **** } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; --- 44,48 ---- } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; *************** *** 52,58 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! atmp = Ap[TPLO(N, i, j)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; --- 52,58 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! atmp = Ap[TPLO(N, i, j)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; *************** *** 60,64 **** } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ --- 60,64 ---- } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ *************** *** 69,75 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! atmp = Ap[TPUP(N, j, i)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; --- 69,75 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! atmp = Ap[TPUP(N, j, i)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; *************** *** 77,81 **** } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); --- 77,81 ---- } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); *************** *** 85,91 **** INDEX jx = OFFSET(N, incX) + (i + 1) * incX; for (j = i + 1; j < N; j++) { ! atmp = Ap[TPLO(N, j, i)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; --- 85,91 ---- INDEX jx = OFFSET(N, incX) + (i + 1) * incX; for (j = i + 1; j < N; j++) { ! atmp = Ap[TPLO(N, j, i)]; ! temp += atmp * X[jx]; ! jx += incX; } X[ix] = temp; diff -x.info* -rc2P gsl-1.3/cblas/source_tpsv_c.h gsl-1.4/cblas/source_tpsv_c.h *** gsl-1.3/cblas/source_tpsv_c.h Wed May 2 13:14:34 2001 --- gsl-1.4/cblas/source_tpsv_c.h Fri Jul 25 15:18:17 2003 *************** *** 53,76 **** INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; --- 53,76 ---- INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPUP(N, i, j)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, i, j)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; *************** *** 78,82 **** } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ --- 78,82 ---- } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ *************** *** 102,129 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ --- 102,129 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPLO(N, i, j)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, i, j)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ *************** *** 151,178 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPUP(N, j, i)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, j, i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ --- 151,178 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPUP(N, j, i)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPUP(N, j, i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPUP(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPUP(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ *************** *** 199,222 **** INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPLO(N, j, i)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, j, i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; --- 199,222 ---- INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(Ap, TPLO(N, j, i)); ! const BASE Aij_imag = conj * CONST_IMAG(Ap, TPLO(N, j, i)); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(Ap, TPLO(N, i, i)); ! const BASE a_imag = conj * CONST_IMAG(Ap, TPLO(N, i, i)); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; diff -x.info* -rc2P gsl-1.3/cblas/source_tpsv_r.h gsl-1.4/cblas/source_tpsv_r.h *** gsl-1.3/cblas/source_tpsv_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_tpsv_r.h Fri Jul 25 15:18:17 2003 *************** *** 40,56 **** INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij = Ap[TPUP(N, i, j)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPUP(N, i, i)]; } else { ! X[ix] = tmp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ --- 40,56 ---- INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij = Ap[TPUP(N, i, j)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPUP(N, i, i)]; } else { ! X[ix] = tmp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ *************** *** 64,80 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij = Ap[TPLO(N, i, j)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPLO(N, i, j)]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ --- 64,80 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij = Ap[TPLO(N, i, j)]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPLO(N, i, j)]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ *************** *** 90,106 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aji = Ap[TPUP(N, j, i)]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPUP(N, i, i)]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ --- 90,106 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aji = Ap[TPUP(N, j, i)]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPUP(N, i, i)]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ *************** *** 114,125 **** INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aji = Ap[TPLO(N, j, i)]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPLO(N, i, i)]; } else { ! X[ix] = tmp; } ix -= incX; --- 114,125 ---- INDEX jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aji = Ap[TPLO(N, j, i)]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / Ap[TPLO(N, i, i)]; } else { ! X[ix] = tmp; } ix -= incX; diff -x.info* -rc2P gsl-1.3/cblas/source_trmm_c.h gsl-1.4/cblas/source_trmm_c.h *** gsl-1.3/cblas/source_trmm_c.h Fri Apr 27 19:48:40 2001 --- gsl-1.4/cblas/source_trmm_c.h Fri Jul 25 15:18:17 2003 *************** *** 37,43 **** n1 = N; n2 = M; ! side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ ! uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ ! trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ } --- 37,43 ---- n1 = N; n2 = M; ! side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ ! uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ ! trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ } *************** *** 48,77 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 48,77 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 83,112 **** for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; ! temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; ! } ! ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 83,112 ---- for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; ! temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; ! } ! ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 119,148 **** for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 119,148 ---- for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aik_real * Bkj_real - Aik_imag * Bkj_imag; ! temp_imag += Aik_real * Bkj_imag + Aik_imag * Bkj_real; ! } ! ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag += Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 156,185 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = i + 1; k < n1; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; ! temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 156,185 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, i * lda + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, i * lda + i); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Aii_real * Bij_real - Aii_imag * Bij_imag; ! temp_imag = Aii_real * Bij_imag + Aii_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = i + 1; k < n1; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! const BASE Bkj_real = REAL(B, k * ldb + j); ! const BASE Bkj_imag = IMAG(B, k * ldb + j); ! temp_real += Aki_real * Bkj_real - Aki_imag * Bkj_imag; ! temp_imag += Aki_real * Bkj_imag + Aki_imag * Bkj_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 191,220 **** for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; ! temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; ! } ! ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 191,220 ---- for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; ! temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; ! } ! ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 226,255 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; ! temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 226,255 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; ! temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 261,290 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = j + 1; k < n2; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; ! temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 261,290 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real = Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag = Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real = REAL(B, i * ldb + j); ! temp_imag = IMAG(B, i * ldb + j); ! } ! ! for (k = j + 1; k < n2; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Akj_real * Bik_real - Akj_imag * Bik_imag; ! temp_imag += Akj_real * Bik_imag + Akj_imag * Bik_real; ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } *************** *** 296,325 **** for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; ! temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; ! } ! ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } --- 296,325 ---- for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp_real = 0.0; ! BASE temp_imag = 0.0; ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! const BASE Bik_real = REAL(B, i * ldb + k); ! const BASE Bik_imag = IMAG(B, i * ldb + k); ! temp_real += Ajk_real * Bik_real - Ajk_imag * Bik_imag; ! temp_imag += Ajk_real * Bik_imag + Ajk_imag * Bik_real; ! } ! ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, j * lda + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, j * lda + j); ! const BASE Bij_real = REAL(B, i * ldb + j); ! const BASE Bij_imag = IMAG(B, i * ldb + j); ! temp_real += Ajj_real * Bij_real - Ajj_imag * Bij_imag; ! temp_imag += Ajj_real * Bij_imag + Ajj_imag * Bij_real; ! } else { ! temp_real += REAL(B, i * ldb + j); ! temp_imag += IMAG(B, i * ldb + j); ! } ! REAL(B, ldb * i + j) = alpha_real * temp_real - alpha_imag * temp_imag; ! IMAG(B, ldb * i + j) = alpha_real * temp_imag + alpha_imag * temp_real; } } diff -x.info* -rc2P gsl-1.3/cblas/source_trmm_r.h gsl-1.4/cblas/source_trmm_r.h *** gsl-1.3/cblas/source_trmm_r.h Wed May 2 13:36:58 2001 --- gsl-1.4/cblas/source_trmm_r.h Fri Jul 25 15:18:17 2003 *************** *** 44,60 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! ! for (k = i + 1; k < n1; k++) { ! temp += A[lda * i + k] * B[k * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 44,60 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! ! for (k = i + 1; k < n1; k++) { ! temp += A[lda * i + k] * B[k * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 66,82 **** for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < i; k++) { ! temp += A[lda * k + i] * B[k * ldb + j]; ! } ! ! if (nonunit) { ! temp += A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 66,82 ---- for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < i; k++) { ! temp += A[lda * k + i] * B[k * ldb + j]; ! } ! ! if (nonunit) { ! temp += A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 89,105 **** for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < i; k++) { ! temp += A[lda * i + k] * B[k * ldb + j]; ! } ! ! if (nonunit) { ! temp += A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 89,105 ---- for (i = n1; i > 0 && i--;) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! for (k = 0; k < i; k++) { ! temp += A[lda * i + k] * B[k * ldb + j]; ! } ! ! if (nonunit) { ! temp += A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 113,129 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! ! for (k = i + 1; k < n1; k++) { ! temp += A[lda * k + i] * B[k * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 113,129 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[i * lda + i] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! ! for (k = i + 1; k < n1; k++) { ! temp += A[lda * k + i] * B[k * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 135,151 **** for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp = 0.0; ! for (k = 0; k < j; k++) { ! temp += A[lda * k + j] * B[i * ldb + k]; ! } ! ! if (nonunit) { ! temp += A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 135,151 ---- for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp = 0.0; ! for (k = 0; k < j; k++) { ! temp += A[lda * k + j] * B[i * ldb + k]; ! } ! ! if (nonunit) { ! temp += A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 157,173 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! ! for (k = j + 1; k < n2; k++) { ! temp += A[lda * j + k] * B[i * ldb + k]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 157,173 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! ! for (k = j + 1; k < n2; k++) { ! temp += A[lda * j + k] * B[i * ldb + k]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 179,196 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! for (k = j + 1; k < n2; k++) { ! temp += A[lda * k + j] * B[i * ldb + k]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 179,196 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! BASE temp = 0.0; ! if (nonunit) { ! temp = A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp = B[i * ldb + j]; ! } ! for (k = j + 1; k < n2; k++) { ! temp += A[lda * k + j] * B[i * ldb + k]; ! } ! B[ldb * i + j] = alpha * temp; } } *************** *** 202,218 **** for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp = 0.0; ! for (k = 0; k < j; k++) { ! temp += A[lda * j + k] * B[i * ldb + k]; ! } ! ! if (nonunit) { ! temp += A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } --- 202,218 ---- for (i = 0; i < n1; i++) { for (j = n2; j > 0 && j--;) { ! BASE temp = 0.0; ! for (k = 0; k < j; k++) { ! temp += A[lda * j + k] * B[i * ldb + k]; ! } ! ! if (nonunit) { ! temp += A[j * lda + j] * B[i * ldb + j]; ! } else { ! temp += B[i * ldb + j]; ! } ! B[ldb * i + j] = alpha * temp; } } diff -x.info* -rc2P gsl-1.3/cblas/source_trmv_c.h gsl-1.4/cblas/source_trmv_c.h *** gsl-1.3/cblas/source_trmv_c.h Fri Apr 27 19:49:29 2001 --- gsl-1.4/cblas/source_trmv_c.h Fri Jul 25 15:18:17 2003 *************** *** 36,65 **** INDEX jx = OFFSET(N, incX) + incX * j_min; for (j = j_min; j < N; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; --- 36,65 ---- INDEX jx = OFFSET(N, incX) + incX * j_min; for (j = j_min; j < N; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; *************** *** 71,100 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ --- 71,100 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * i + j); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + j); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ *************** *** 106,130 **** INDEX jx = OFFSET(N, incX); for (j = 0; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; --- 106,130 ---- INDEX jx = OFFSET(N, incX); for (j = 0; j < j_max; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix -= incX; *************** *** 132,136 **** } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 132,136 ---- } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 140,164 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < N; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; --- 140,164 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < N; j++) { ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! const BASE A_real = CONST_REAL(A, lda * j + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * j + i); ! temp_r += A_real * x_real - A_imag * x_imag; ! temp_i += A_real * x_imag + A_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE x_real = REAL(X, ix); ! const BASE x_imag = IMAG(X, ix); ! const BASE A_real = CONST_REAL(A, lda * i + i); ! const BASE A_imag = conj * CONST_IMAG(A, lda * i + i); ! REAL(X, ix) = temp_r + (A_real * x_real - A_imag * x_imag); ! IMAG(X, ix) = temp_i + (A_real * x_imag + A_imag * x_real); } else { ! REAL(X, ix) += temp_r; ! IMAG(X, ix) += temp_i; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_trmv_r.h gsl-1.4/cblas/source_trmv_r.h *** gsl-1.3/cblas/source_trmv_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_trmv_r.h Fri Jul 25 15:18:17 2003 *************** *** 34,49 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + j]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; for (i = N; i > 0 && i--;) { --- 34,49 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + j]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX) + (N - 1) * incX; for (i = N; i > 0 && i--;) { *************** *** 53,68 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + j]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ INDEX ix = OFFSET(N, incX) + (N - 1) * incX; --- 53,68 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * i + j]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := A'*x */ INDEX ix = OFFSET(N, incX) + (N - 1) * incX; *************** *** 73,88 **** INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + i]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { --- 73,88 ---- INDEX jx = OFFSET(N, incX) + j_min * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + i]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { INDEX ix = OFFSET(N, incX); for (i = 0; i < N; i++) { *************** *** 92,102 **** INDEX jx = OFFSET(N, incX) + (i + 1) * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + i]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix += incX; --- 92,102 ---- INDEX jx = OFFSET(N, incX) + (i + 1) * incX; for (j = j_min; j < j_max; j++) { ! temp += X[jx] * A[lda * j + i]; ! jx += incX; } if (nonunit) { ! X[ix] = temp + X[ix] * A[lda * i + i]; } else { ! X[ix] += temp; } ix += incX; diff -x.info* -rc2P gsl-1.3/cblas/source_trsm_c.h gsl-1.4/cblas/source_trsm_c.h *** gsl-1.3/cblas/source_trsm_c.h Wed May 2 13:14:34 2001 --- gsl-1.4/cblas/source_trsm_c.h Fri Jul 25 15:18:17 2003 *************** *** 38,44 **** n1 = N; n2 = M; ! side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ ! uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ ! trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ } --- 38,44 ---- n1 = N; n2 = M; ! side = (Side == CblasLeft) ? CblasRight : CblasLeft; /* exchanged */ ! uplo = (Uplo == CblasUpper) ? CblasLower : CblasUpper; /* exchanged */ ! trans = (TransA == CblasNoTrans) ? CblasNoTrans : CblasTrans; /* same */ } *************** *** 49,58 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 49,58 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 60,86 **** for (i = n1; i > 0 && i--;) { if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = 0; k < i; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; ! } } } --- 60,86 ---- for (i = n1; i > 0 && i--;) { if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = 0; k < i; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; ! } } } *************** *** 92,101 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 92,101 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 104,130 **** if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; ! } } } --- 104,130 ---- if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; ! } } } *************** *** 136,145 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 136,145 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 148,174 **** if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; ! } } } --- 148,174 ---- if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aki_real = CONST_REAL(A, k * lda + i); ! const BASE Aki_imag = conj * CONST_IMAG(A, k * lda + i); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aki_real * Bij_real - Aki_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aki_real * Bij_imag + Aki_imag * Bij_real; ! } } } *************** *** 181,190 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 181,190 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 192,218 **** for (i = n1; i > 0 && i--;) { if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; ! } } } --- 192,218 ---- for (i = n1; i > 0 && i--;) { if (nonunit) { ! const BASE Aii_real = CONST_REAL(A, lda * i + i); ! const BASE Aii_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(Aii_real, Aii_imag); ! const BASE a_real = Aii_real / s; ! const BASE a_imag = Aii_imag / s; ! ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } } for (k = 0; k < i; k++) { ! const BASE Aik_real = CONST_REAL(A, i * lda + k); ! const BASE Aik_imag = conj * CONST_IMAG(A, i * lda + k); ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * k + j) -= Aik_real * Bij_real - Aik_imag * Bij_imag; ! IMAG(B, ldb * k + j) -= Aik_real * Bij_imag + Aik_imag * Bij_real; ! } } } *************** *** 224,233 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 224,233 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 235,260 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; ! } ! } } } --- 235,260 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! for (k = j + 1; k < n2; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; ! } ! } } } *************** *** 266,275 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 266,275 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 278,303 **** for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! for (k = 0; k < j; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; ! } ! } } } --- 278,303 ---- for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! for (k = 0; k < j; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; ! } ! } } } *************** *** 310,319 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 310,319 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 322,347 **** for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; ! } ! } } } --- 322,347 ---- for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! for (k = 0; k < j; k++) { ! const BASE Ajk_real = CONST_REAL(A, j * lda + k); ! const BASE Ajk_imag = conj * CONST_IMAG(A, j * lda + k); ! REAL(B, ldb * i + k) -= Ajk_real * Bij_real - Ajk_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Ajk_real * Bij_imag + Ajk_imag * Bij_real; ! } ! } } } *************** *** 354,363 **** if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } --- 354,363 ---- if (!(alpha_real == 1.0 && alpha_imag == 0.0)) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = alpha_real * Bij_real - alpha_imag * Bij_imag; ! IMAG(B, ldb * i + j) = alpha_real * Bij_imag + alpha_imag * Bij_real; ! } } } *************** *** 365,391 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! ! for (k = j + 1; k < n2; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; ! } ! } } } --- 365,391 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! const BASE Ajj_real = CONST_REAL(A, lda * j + j); ! const BASE Ajj_imag = conj * CONST_IMAG(A, lda * j + j); ! const BASE s = xhypot(Ajj_real, Ajj_imag); ! const BASE a_real = Ajj_real / s; ! const BASE a_imag = Ajj_imag / s; ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! REAL(B, ldb * i + j) = (Bij_real * a_real + Bij_imag * a_imag) / s; ! IMAG(B, ldb * i + j) = (Bij_imag * a_real - Bij_real * a_imag) / s; ! } ! ! { ! const BASE Bij_real = REAL(B, ldb * i + j); ! const BASE Bij_imag = IMAG(B, ldb * i + j); ! ! for (k = j + 1; k < n2; k++) { ! const BASE Akj_real = CONST_REAL(A, k * lda + j); ! const BASE Akj_imag = conj * CONST_IMAG(A, k * lda + j); ! REAL(B, ldb * i + k) -= Akj_real * Bij_real - Akj_imag * Bij_imag; ! IMAG(B, ldb * i + k) -= Akj_real * Bij_imag + Akj_imag * Bij_real; ! } ! } } } diff -x.info* -rc2P gsl-1.3/cblas/source_trsm_r.h gsl-1.4/cblas/source_trsm_r.h *** gsl-1.3/cblas/source_trsm_r.h Fri Apr 27 18:32:24 2001 --- gsl-1.4/cblas/source_trsm_r.h Fri Jul 25 15:18:17 2003 *************** *** 44,50 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 44,50 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 52,66 **** for (i = n1; i > 0 && i--;) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = 0; k < i; k++) { ! const BASE Aki = A[k * lda + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aki * B[ldb * i + j]; ! } } } --- 52,66 ---- for (i = n1; i > 0 && i--;) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = 0; k < i; k++) { ! const BASE Aki = A[k * lda + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aki * B[ldb * i + j]; ! } } } *************** *** 72,78 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 72,78 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 80,94 **** for (i = 0; i < n1; i++) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aik = A[i * lda + k]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aik * B[ldb * i + j]; ! } } } --- 80,94 ---- for (i = 0; i < n1; i++) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aik = A[i * lda + k]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aik * B[ldb * i + j]; ! } } } *************** *** 101,107 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 101,107 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 109,123 **** for (i = 0; i < n1; i++) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aki = A[k * lda + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aki * B[ldb * i + j]; ! } } } --- 109,123 ---- for (i = 0; i < n1; i++) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = i + 1; k < n1; k++) { ! const BASE Aki = A[k * lda + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aki * B[ldb * i + j]; ! } } } *************** *** 130,136 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 130,136 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 138,152 **** for (i = n1; i > 0 && i--;) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = 0; k < i; k++) { ! const BASE Aik = A[i * lda + k]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aik * B[ldb * i + j]; ! } } } --- 138,152 ---- for (i = n1; i > 0 && i--;) { if (nonunit) { ! BASE Aii = A[lda * i + i]; ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] /= Aii; ! } } for (k = 0; k < i; k++) { ! const BASE Aik = A[i * lda + k]; ! for (j = 0; j < n2; j++) { ! B[ldb * k + j] -= Aik * B[ldb * i + j]; ! } } } *************** *** 158,164 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 158,164 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 166,180 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = j + 1; k < n2; k++) { ! B[ldb * i + k] -= A[j * lda + k] * Bij; ! } ! } } } --- 166,180 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = j + 1; k < n2; k++) { ! B[ldb * i + k] -= A[j * lda + k] * Bij; ! } ! } } } *************** *** 186,192 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 186,192 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 195,209 **** for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = 0; k < j; k++) { ! B[ldb * i + k] -= A[k * lda + j] * Bij; ! } ! } } } --- 195,209 ---- for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = 0; k < j; k++) { ! B[ldb * i + k] -= A[k * lda + j] * Bij; ! } ! } } } *************** *** 216,222 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 216,222 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 225,239 **** for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = 0; k < j; k++) { ! B[ldb * i + k] -= A[j * lda + k] * Bij; ! } ! } } } --- 225,239 ---- for (j = n2; j > 0 && j--;) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = 0; k < j; k++) { ! B[ldb * i + k] -= A[j * lda + k] * Bij; ! } ! } } } *************** *** 246,252 **** if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } --- 246,252 ---- if (alpha != 1.0) { for (i = 0; i < n1; i++) { ! for (j = 0; j < n2; j++) { ! B[ldb * i + j] *= alpha; ! } } } *************** *** 254,268 **** for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = j + 1; k < n2; k++) { ! B[ldb * i + k] -= A[k * lda + j] * Bij; ! } ! } } } --- 254,268 ---- for (i = 0; i < n1; i++) { for (j = 0; j < n2; j++) { ! if (nonunit) { ! BASE Ajj = A[lda * j + j]; ! B[ldb * i + j] /= Ajj; ! } ! ! { ! BASE Bij = B[ldb * i + j]; ! for (k = j + 1; k < n2; k++) { ! B[ldb * i + k] -= A[k * lda + j] * Bij; ! } ! } } } diff -x.info* -rc2P gsl-1.3/cblas/source_trsv_c.h gsl-1.4/cblas/source_trsv_c.h *** gsl-1.3/cblas/source_trsv_c.h Wed May 2 13:14:19 2001 --- gsl-1.4/cblas/source_trsv_c.h Fri Jul 25 15:18:17 2003 *************** *** 54,77 **** jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + j); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; --- 54,77 ---- jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + j); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; *************** *** 79,83 **** } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ --- 79,83 ---- } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ *************** *** 103,130 **** jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + j); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ --- 103,130 ---- jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * i + j); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * i + j); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ *************** *** 152,179 **** jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * j + i); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ --- 152,179 ---- jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * j + i); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ *************** *** 200,223 **** jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * j + i); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; --- 200,223 ---- jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij_real = CONST_REAL(A, lda * j + i); ! const BASE Aij_imag = conj * CONST_IMAG(A, lda * j + i); ! const BASE x_real = REAL(X, jx); ! const BASE x_imag = IMAG(X, jx); ! tmp_real -= Aij_real * x_real - Aij_imag * x_imag; ! tmp_imag -= Aij_real * x_imag + Aij_imag * x_real; ! jx += incX; } if (nonunit) { ! const BASE a_real = CONST_REAL(A, lda * i + i); ! const BASE a_imag = conj * CONST_IMAG(A, lda * i + i); ! const BASE s = xhypot(a_real, a_imag); ! const BASE b_real = a_real / s; ! const BASE b_imag = a_imag / s; ! REAL(X, ix) = (tmp_real * b_real + tmp_imag * b_imag) / s; ! IMAG(X, ix) = (tmp_imag * b_real - tmp_real * b_imag) / s; } else { ! REAL(X, ix) = tmp_real; ! IMAG(X, ix) = tmp_imag; } ix -= incX; diff -x.info* -rc2P gsl-1.3/cblas/source_trsv_r.h gsl-1.4/cblas/source_trsv_r.h *** gsl-1.3/cblas/source_trsv_r.h Fri Apr 27 18:32:22 2001 --- gsl-1.4/cblas/source_trsv_r.h Fri Jul 25 15:18:17 2003 *************** *** 41,57 **** jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij = A[lda * i + j]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ --- 41,57 ---- jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aij = A[lda * i + j]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix -= incX; } } else if ((order == CblasRowMajor && Trans == CblasNoTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasTrans && Uplo == CblasUpper)) { /* forward substitution */ *************** *** 65,81 **** jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij = A[lda * i + j]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ --- 65,81 ---- jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aij = A[lda * i + j]; ! tmp -= Aij * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasUpper) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasLower)) { /* form x := inv( A' )*x */ *************** *** 91,107 **** jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aji = A[lda * j + i]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ --- 91,107 ---- jx = OFFSET(N, incX); for (j = 0; j < i; j++) { ! const BASE Aji = A[lda * j + i]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix += incX; } } else if ((order == CblasRowMajor && Trans == CblasTrans && Uplo == CblasLower) ! || (order == CblasColMajor && Trans == CblasNoTrans && Uplo == CblasUpper)) { /* backsubstitution */ *************** *** 115,126 **** jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aji = A[lda * j + i]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix -= incX; --- 115,126 ---- jx = ix + incX; for (j = i + 1; j < N; j++) { ! const BASE Aji = A[lda * j + i]; ! tmp -= Aji * X[jx]; ! jx += incX; } if (nonunit) { ! X[ix] = tmp / A[lda * i + i]; } else { ! X[ix] = tmp; } ix -= incX; diff -x.info* -rc2P gsl-1.3/cblas/srot.c gsl-1.4/cblas/srot.c *** gsl-1.3/cblas/srot.c Mon Nov 19 21:35:21 2001 --- gsl-1.4/cblas/srot.c Fri Jul 25 15:18:08 2003 *************** *** 5,9 **** void cblas_srot (const int N, float *X, const int incX, float *Y, const int incY, ! const float c, const float s) { #define BASE float --- 5,9 ---- void cblas_srot (const int N, float *X, const int incX, float *Y, const int incY, ! const float c, const float s) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/srotm.c gsl-1.4/cblas/srotm.c *** gsl-1.3/cblas/srotm.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/srotm.c Fri Jul 25 15:18:08 2003 *************** *** 5,9 **** void cblas_srotm (const int N, float *X, const int incX, float *Y, const int incY, ! const float *P) { #define BASE float --- 5,9 ---- void cblas_srotm (const int N, float *X, const int incX, float *Y, const int incY, ! const float *P) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ssbmv.c gsl-1.4/cblas/ssbmv.c *** gsl-1.3/cblas/ssbmv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssbmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_ssbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const float alpha, const float *A, ! const int lda, const float *X, const int incX, const float beta, ! float *Y, const int incY) { #define BASE float --- 5,11 ---- void cblas_ssbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const float alpha, const float *A, ! const int lda, const float *X, const int incX, const float beta, ! float *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sspmv.c gsl-1.4/cblas/sspmv.c *** gsl-1.3/cblas/sspmv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/sspmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_sspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *Ap, const float *X, ! const int incX, const float beta, float *Y, const int incY) { #define BASE float --- 5,10 ---- void cblas_sspmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *Ap, const float *X, ! const int incX, const float beta, float *Y, const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sspr.c gsl-1.4/cblas/sspr.c *** gsl-1.3/cblas/sspr.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/sspr.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_sspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! float *Ap) { #define BASE float --- 5,10 ---- void cblas_sspr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! float *Ap) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/sspr2.c gsl-1.4/cblas/sspr2.c *** gsl-1.3/cblas/sspr2.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/sspr2.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_sspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! const float *Y, const int incY, float *Ap) { #define BASE double --- 5,10 ---- void cblas_sspr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! const float *Y, const int incY, float *Ap) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ssymm.c gsl-1.4/cblas/ssymm.c *** gsl-1.3/cblas/ssymm.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssymm.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_ssymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const float alpha, const float *A, const int lda, const float *B, ! const int ldb, const float beta, float *C, const int ldc) { #define BASE float --- 5,11 ---- void cblas_ssymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const float alpha, const float *A, const int lda, const float *B, ! const int ldb, const float beta, float *C, const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ssymv.c gsl-1.4/cblas/ssymv.c *** gsl-1.3/cblas/ssymv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssymv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_ssymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *A, const int lda, ! const float *X, const int incX, const float beta, float *Y, ! const int incY) { #define BASE float --- 5,11 ---- void cblas_ssymv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *A, const int lda, ! const float *X, const int incX, const float beta, float *Y, ! const int incY) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ssyr.c gsl-1.4/cblas/ssyr.c *** gsl-1.3/cblas/ssyr.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssyr.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_ssyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! float *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_ssyr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! float *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ssyr2.c gsl-1.4/cblas/ssyr2.c *** gsl-1.3/cblas/ssyr2.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssyr2.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_ssyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! const float *Y, const int incY, float *A, const int lda) { #define BASE float --- 5,10 ---- void cblas_ssyr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const float alpha, const float *X, const int incX, ! const float *Y, const int incY, float *A, const int lda) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ssyr2k.c gsl-1.4/cblas/ssyr2k.c *** gsl-1.3/cblas/ssyr2k.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssyr2k.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_ssyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const float alpha, const float *A, const int lda, ! const float *B, const int ldb, const float beta, float *C, ! const int ldc) { #define BASE float --- 5,12 ---- void cblas_ssyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const float alpha, const float *A, const int lda, ! const float *B, const int ldb, const float beta, float *C, ! const int ldc) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/ssyrk.c gsl-1.4/cblas/ssyrk.c *** gsl-1.3/cblas/ssyrk.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/ssyrk.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_ssyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const float alpha, const float *A, const int lda, const float beta, float *C, const int ldc) { --- 5,10 ---- void cblas_ssyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const float alpha, const float *A, const int lda, const float beta, float *C, const int ldc) { diff -x.info* -rc2P gsl-1.3/cblas/stbmv.c gsl-1.4/cblas/stbmv.c *** gsl-1.3/cblas/stbmv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/stbmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_stbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const float *A, const int lda, ! float *X, const int incX) { #define BASE float --- 5,11 ---- void cblas_stbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const float *A, const int lda, ! float *X, const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/stbsv.c gsl-1.4/cblas/stbsv.c *** gsl-1.3/cblas/stbsv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/stbsv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_stbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const float *A, const int lda, ! float *X, const int incX) { #define BASE float --- 5,11 ---- void cblas_stbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const float *A, const int lda, ! float *X, const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/stpmv.c gsl-1.4/cblas/stpmv.c *** gsl-1.3/cblas/stpmv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/stpmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_stpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *Ap, float *X, const int incX) { #define BASE float --- 5,10 ---- void cblas_stpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *Ap, float *X, const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/stpsv.c gsl-1.4/cblas/stpsv.c *** gsl-1.3/cblas/stpsv.c Mon Nov 19 21:35:20 2001 --- gsl-1.4/cblas/stpsv.c Fri Jul 25 15:18:08 2003 *************** *** 5,10 **** void cblas_stpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *Ap, float *X, const int incX) { #define BASE float --- 5,10 ---- void cblas_stpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *Ap, float *X, const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/strmm.c gsl-1.4/cblas/strmm.c *** gsl-1.3/cblas/strmm.c Mon Nov 19 21:35:19 2001 --- gsl-1.4/cblas/strmm.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_strmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const float alpha, const float *A, const int lda, float *B, ! const int ldb) { #define BASE float --- 5,12 ---- void cblas_strmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const float alpha, const float *A, const int lda, float *B, ! const int ldb) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/strmv.c gsl-1.4/cblas/strmv.c *** gsl-1.3/cblas/strmv.c Mon Nov 19 21:35:19 2001 --- gsl-1.4/cblas/strmv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_strmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *A, const int lda, float *X, ! const int incX) { #define BASE float --- 5,11 ---- void cblas_strmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *A, const int lda, float *X, ! const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/strsm.c gsl-1.4/cblas/strsm.c *** gsl-1.3/cblas/strsm.c Mon Nov 19 21:35:19 2001 --- gsl-1.4/cblas/strsm.c Fri Jul 25 15:18:08 2003 *************** *** 5,12 **** void cblas_strsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const float alpha, const float *A, const int lda, float *B, ! const int ldb) { #define BASE float --- 5,12 ---- void cblas_strsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const float alpha, const float *A, const int lda, float *B, ! const int ldb) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/strsv.c gsl-1.4/cblas/strsv.c *** gsl-1.3/cblas/strsv.c Mon Nov 19 21:35:19 2001 --- gsl-1.4/cblas/strsv.c Fri Jul 25 15:18:08 2003 *************** *** 5,11 **** void cblas_strsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *A, const int lda, float *X, ! const int incX) { #define BASE float --- 5,11 ---- void cblas_strsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const float *A, const int lda, float *X, ! const int incX) { #define BASE float diff -x.info* -rc2P gsl-1.3/cblas/test_her2k.c gsl-1.4/cblas/test_her2k.c *** gsl-1.3/cblas/test_her2k.c Mon Nov 19 21:35:18 2001 --- gsl-1.4/cblas/test_her2k.c Fri Jul 25 15:18:08 2003 *************** *** 15,33 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta = 0.1f; ! float A[] = { 0.531f, 0.721f, -0.848f, 0.826f }; int lda = 2; ! float B[] = { -0.711f, -0.2f, -0.92f, -0.676f }; int ldb = 2; ! float C[] = { -0.447f, 0.701f }; int ldc = 1; ! float C_expected[] = { 0.30322f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1654) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1654) imag"); }; }; --- 15,33 ---- int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = -0.3f; ! float A[] = { 0.178f, 0.545f, -0.491f, 0.979f }; int lda = 2; ! float B[] = { -0.665f, -0.531f, -0.4f, 0.227f }; int ldb = 2; ! float C[] = { 0.115f, -0.193f }; int ldc = 1; ! float C_expected[] = { -0.056236f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1646) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1646) imag"); }; }; *************** *** 41,59 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta = 0.1f; ! float A[] = { 0.68f, 0.079f, 0.837f, -0.814f }; int lda = 2; ! float B[] = { -0.986f, 0.024f, 0.584f, -0.248f }; int ldb = 2; ! float C[] = { 0.477f, -0.551f }; int ldc = 1; ! float C_expected[] = { 0.120103f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1655) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1655) imag"); }; }; --- 41,59 ---- int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = -0.3f; ! float A[] = { -0.808f, 0.447f, 0.145f, -0.226f }; int lda = 2; ! float B[] = { -0.413f, 0.904f, -0.585f, 0.717f }; int ldb = 2; ! float C[] = { -0.725f, -0.244f }; int ldc = 1; ! float C_expected[] = { -0.76435f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1647) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1647) imag"); }; }; *************** *** 67,85 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta = 0.1f; ! float A[] = { 0.354f, -0.63f, -0.85f, 0.426f }; int lda = 1; ! float B[] = { 0.787f, -0.228f, -0.568f, 0.83f }; int ldb = 1; ! float C[] = { 0.428f, -0.388f }; int ldc = 1; ! float C_expected[] = { 0.0331132f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1656) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1656) imag"); }; }; --- 67,85 ---- int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = -0.3f; ! float A[] = { 0.337f, -0.737f, -0.993f, 0.69f }; int lda = 1; ! float B[] = { -0.39f, -0.836f, -0.32f, 0.368f }; int ldb = 1; ! float C[] = { 0.844f, -0.763f }; int ldc = 1; ! float C_expected[] = { -2.36596f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1648) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1648) imag"); }; }; *************** *** 93,111 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta = 0.1f; ! float A[] = { -0.49f, 0.224f, -0.606f, 0.46f }; int lda = 1; ! float B[] = { -0.191f, -0.815f, 0.464f, 0.066f }; int ldb = 1; ! float C[] = { 0.302f, 0.023f }; int ldc = 1; ! float C_expected[] = { 0.0679396f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1657) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1657) imag"); }; }; --- 93,111 ---- int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = -0.3f; ! float A[] = { 0.386f, -0.465f, 0.719f, -0.378f }; int lda = 1; ! float B[] = { 0.099f, -0.879f, 0.864f, 0.141f }; int ldb = 1; ! float C[] = { -0.599f, -0.47f }; int ldc = 1; ! float C_expected[] = { -1.85003f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1649) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1649) imag"); }; }; *************** *** 119,137 **** int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = 0.0f; ! float A[] = { 0.943f, 0.075f, 0.15f, -0.141f }; int lda = 1; ! float B[] = { -0.962f, 0.422f, -0.592f, -0.789f }; int ldb = 1; ! float C[] = { 0.728f, 0.601f }; int ldc = 1; ! float C_expected[] = { 1.70613f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1658) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1658) imag"); }; }; --- 119,137 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 1.0f}; ! float beta = -1.0f; ! float A[] = { 0.128f, 0.431f, -0.26f, 0.75f }; int lda = 1; ! float B[] = { 0.276f, 0.058f, 0.904f, -0.116f }; int ldb = 1; ! float C[] = { 0.914f, -0.262f }; int ldc = 1; ! float C_expected[] = { 0.604744f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1650) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1650) imag"); }; }; *************** *** 145,163 **** int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = 0.0f; ! float A[] = { -0.93f, -0.386f, 0.565f, 0.141f }; int lda = 1; ! float B[] = { -0.801f, 0.022f, 0.558f, -0.932f }; int ldb = 1; ! float C[] = { 0.068f, 0.501f }; int ldc = 1; ! float C_expected[] = { -1.84059f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1659) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1659) imag"); }; }; --- 145,163 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 1.0f}; ! float beta = -1.0f; ! float A[] = { 0.72f, 0.783f, -0.737f, 0.375f }; int lda = 1; ! float B[] = { 0.531f, 0.167f, 0.203f, -0.221f }; int ldb = 1; ! float C[] = { 0.618f, 0.392f }; int ldc = 1; ! float C_expected[] = { -0.200438f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1651) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1651) imag"); }; }; *************** *** 171,189 **** int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = 0.0f; ! float A[] = { -0.383f, 0.124f, 0.458f, -0.221f }; int lda = 2; ! float B[] = { -0.107f, 0.199f, 0.18f, 0.122f }; int ldb = 2; ! float C[] = { 0.896f, -0.874f }; int ldc = 1; ! float C_expected[] = { -0.24227f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1660) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1660) imag"); }; }; --- 171,189 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 1.0f}; ! float beta = -1.0f; ! float A[] = { -0.372f, -0.735f, -0.711f, 0.051f }; int lda = 2; ! float B[] = { 0.257f, 0.097f, 0.338f, -0.484f }; int ldb = 2; ! float C[] = { -0.142f, -0.197f }; int ldc = 1; ! float C_expected[] = { -0.817394f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1652) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1652) imag"); }; }; *************** *** 197,215 **** int N = 1; int K = 2; ! float alpha[2] = {-1.0f, 0.0f}; ! float beta = 0.0f; ! float A[] = { 0.131f, 0.692f, 0.533f, -0.672f }; int lda = 2; ! float B[] = { -0.435f, -0.453f, 0.195f, -0.579f }; int ldb = 2; ! float C[] = { -0.547f, 0.736f }; int ldc = 1; ! float C_expected[] = { -0.245124f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1661) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1661) imag"); }; }; --- 197,215 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 1.0f}; ! float beta = -1.0f; ! float A[] = { 0.1f, -0.878f, 0.28f, -0.381f }; int lda = 2; ! float B[] = { -0.208f, 0.309f, -0.276f, 0.123f }; int ldb = 2; ! float C[] = { 0.483f, -0.541f }; int ldc = 1; ! float C_expected[] = { -0.03812f, 0.0f }; cblas_cher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cher2k(case 1653) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cher2k(case 1653) imag"); }; }; *************** *** 223,241 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; ! double beta = 0.1; ! double A[] = { 0.972, -0.353, 0.712, -0.53 }; int lda = 2; ! double B[] = { 0.787, -0.379, 0.889, 0.901 }; int ldb = 2; ! double C[] = { 0.002, 0.266 }; int ldc = 1; ! double C_expected[] = { -0.4278924, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1662) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1662) imag"); }; }; --- 223,241 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta = 1; ! double A[] = { 0.515, -0.034, 0.067, 0.66 }; int lda = 2; ! double B[] = { 0.408, -0.85, -0.945, -0.799 }; int ldb = 2; ! double C[] = { -0.918, -0.985 }; int ldc = 1; ! double C_expected[] = { -1.62127, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1654) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1654) imag"); }; }; *************** *** 249,267 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; ! double beta = 0.1; ! double A[] = { -0.36, 0.192, 0.539, 0.198 }; int lda = 2; ! double B[] = { -0.673, 0.781, 0.792, 0.335 }; int ldb = 2; ! double C[] = { 0.719, -0.339 }; int ldc = 1; ! double C_expected[] = { -0.485009, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1663) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1663) imag"); }; }; --- 249,267 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta = 1; ! double A[] = { -0.009, 0.495, -0.008, -0.973 }; int lda = 2; ! double B[] = { -0.239, -0.373, -0.032, -0.539 }; int ldb = 2; ! double C[] = { 0.443, -0.245 }; int ldc = 1; ! double C_expected[] = { 1.127438, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1655) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1655) imag"); }; }; *************** *** 275,293 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; ! double beta = 0.1; ! double A[] = { -0.143, 0.456, 0.677, -0.522 }; int lda = 1; ! double B[] = { 0.851, 0.196, 0.586, 0.64 }; int ldb = 1; ! double C[] = { 0.617, 0.118 }; int ldc = 1; ! double C_expected[] = { 0.1081226, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1664) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1664) imag"); }; }; --- 275,293 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta = 1; ! double A[] = { 0.531, 0.721, -0.848, 0.826 }; int lda = 1; ! double B[] = { -0.711, -0.2, -0.92, -0.676 }; int ldb = 1; ! double C[] = { -0.447, 0.701 }; int ldc = 1; ! double C_expected[] = { -1.046914, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1656) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1656) imag"); }; }; *************** *** 301,319 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; ! double beta = 0.1; ! double A[] = { 0.801, 0.91, 0.376, -0.006 }; int lda = 1; ! double B[] = { -0.613, -0.758, -0.966, 0.194 }; int ldb = 1; ! double C[] = { -0.723, -0.765 }; int ldc = 1; ! double C_expected[] = { 0.8583678, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1665) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1665) imag"); }; }; --- 301,319 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta = 1; ! double A[] = { 0.68, 0.079, 0.837, -0.814 }; int lda = 1; ! double B[] = { -0.986, 0.024, 0.584, -0.248 }; int ldb = 1; ! double C[] = { 0.477, -0.551 }; int ldc = 1; ! double C_expected[] = { 0.521192, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1657) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1657) imag"); }; }; *************** *** 327,345 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta = 0.1; ! double A[] = { -0.359, 0.913, 0.738, -0.227 }; int lda = 1; ! double B[] = { 0.787, 0.745, 0.036, -0.606 }; int ldb = 1; ! double C[] = { -0.652, -0.281 }; int ldc = 1; ! double C_expected[] = { -0.1172608, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1666) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1666) imag"); }; }; --- 327,345 ---- int N = 1; int K = 2; ! double alpha[2] = {-1, 0}; double beta = 0.1; ! double A[] = { -0.63, 0.787, 0.426, -0.568 }; int lda = 1; ! double B[] = { -0.228, 0.302, 0.83, 0.023 }; int ldb = 1; ! double C[] = { 0.354, -0.85 }; int ldc = 1; ! double C_expected[] = { -1.40826, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1658) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1658) imag"); }; }; *************** *** 353,371 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta = 0.1; ! double A[] = { -0.933, 0.598, 0.952, 0.25 }; int lda = 1; ! double B[] = { -0.508, -0.461, -0.727, 0.162 }; int ldb = 1; ! double C[] = { 0.215, 0.943 }; int ldc = 1; ! double C_expected[] = { 0.0795166, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1667) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1667) imag"); }; }; --- 353,371 ---- int N = 1; int K = 2; ! double alpha[2] = {-1, 0}; double beta = 0.1; ! double A[] = { 0.224, -0.191, 0.46, 0.464 }; int lda = 1; ! double B[] = { -0.815, 0.634, 0.066, -0.873 }; int ldb = 1; ! double C[] = { -0.49, -0.606 }; int ldc = 1; ! double C_expected[] = { 1.307732, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1659) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1659) imag"); }; }; *************** *** 379,397 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta = 0.1; ! double A[] = { -0.735, 0.372, -0.251, -0.168 }; int lda = 2; ! double B[] = { 0.217, 0.863, -0.179, -0.057 }; int ldb = 2; ! double C[] = { 0.579, -0.305 }; int ldc = 1; ! double C_expected[] = { 0.0744312, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1668) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1668) imag"); }; }; --- 379,397 ---- int N = 1; int K = 2; ! double alpha[2] = {-1, 0}; double beta = 0.1; ! double A[] = { 0.943, 0.075, 0.15, -0.141 }; int lda = 2; ! double B[] = { -0.962, 0.422, -0.592, -0.789 }; int ldb = 2; ! double C[] = { 0.728, 0.601 }; int ldc = 1; ! double C_expected[] = { 1.778934, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1660) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1660) imag"); }; }; *************** *** 405,423 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta = 0.1; ! double A[] = { -0.587, -0.994, -0.625, 0.681 }; int lda = 2; ! double B[] = { -0.577, -0.014, -0.434, 0.204 }; int ldb = 2; ! double C[] = { 0.256, 0.093 }; int ldc = 1; ! double C_expected[] = { -0.3526202, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1669) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1669) imag"); }; }; --- 405,423 ---- int N = 1; int K = 2; ! double alpha[2] = {-1, 0}; double beta = 0.1; ! double A[] = { -0.93, -0.386, 0.565, 0.141 }; int lda = 2; ! double B[] = { -0.801, 0.022, 0.558, -0.932 }; int ldb = 2; ! double C[] = { 0.068, 0.501 }; int ldc = 1; ! double C_expected[] = { -1.833792, 0.0 }; cblas_zher2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zher2k(case 1661) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zher2k(case 1661) imag"); }; }; diff -x.info* -rc2P gsl-1.3/cblas/test_herk.c gsl-1.4/cblas/test_herk.c *** gsl-1.3/cblas/test_herk.c Mon Nov 19 21:35:18 2001 --- gsl-1.4/cblas/test_herk.c Fri Jul 25 15:18:08 2003 *************** *** 15,31 **** int N = 2; int K = 1; ! float alpha = 1.0f; ! float beta = 1.0f; ! float A[] = { 0.934f, 0.664f, 0.426f, 0.263f }; int lda = 1; ! float C[] = { 0.251f, -0.97f, 0.76f, -0.349f, 0.152f, -0.899f, -0.17f, 0.707f }; int ldc = 2; ! float C_expected[] = { 1.56425f, 0.0f, 1.33252f, -0.311778f, 0.152f, -0.899f, 0.080645f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1606) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1606) imag"); }; }; --- 15,31 ---- int N = 2; int K = 1; ! float alpha = 0.0f; ! float beta = 0.1f; ! float A[] = { -0.617f, 0.179f, -0.626f, 0.334f }; int lda = 1; ! float C[] = { 0.346f, -0.903f, 0.022f, -0.839f, -0.715f, 0.049f, -0.338f, 0.149f }; int ldc = 2; ! float C_expected[] = { 0.0346f, 0.0f, 0.0022f, -0.0839f, -0.715f, 0.049f, -0.0338f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1598) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1598) imag"); }; }; *************** *** 39,55 **** int N = 2; int K = 1; ! float alpha = 1.0f; ! float beta = 1.0f; ! float A[] = { 0.16f, 0.464f, -0.623f, 0.776f }; int lda = 2; ! float C[] = { 0.771f, -0.449f, 0.776f, 0.112f, -0.134f, 0.317f, 0.547f, -0.551f }; int ldc = 2; ! float C_expected[] = { 1.0119f, 0.0f, 0.776f, 0.112f, 0.126384f, -0.096232f, 1.5373f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1607) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1607) imag"); }; }; --- 39,55 ---- int N = 2; int K = 1; ! float alpha = 0.0f; ! float beta = 0.1f; ! float A[] = { -0.356f, -0.308f, 0.493f, -0.351f }; int lda = 2; ! float C[] = { -0.898f, -0.905f, 0.002f, -0.219f, 0.881f, 0.879f, 0.275f, -0.351f }; int ldc = 2; ! float C_expected[] = { -0.0898f, 0.0f, 0.002f, -0.219f, 0.0881f, 0.0879f, 0.0275f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1599) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1599) imag"); }; }; *************** *** 65,79 **** float alpha = 0.1f; float beta = 1.0f; ! float A[] = { 0.787f, 0.057f, -0.49f, 0.47f }; int lda = 2; ! float C[] = { -0.758f, 0.912f, 0.992f, -0.356f, 0.584f, 0.806f, 0.965f, 0.674f }; int ldc = 2; ! float C_expected[] = { -0.695738f, 0.0f, 0.956116f, -0.316218f, 0.584f, 0.806f, 1.0111f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1608) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1608) imag"); }; }; --- 65,79 ---- float alpha = 0.1f; float beta = 1.0f; ! float A[] = { -0.103f, -0.951f, -0.601f, -0.041f }; int lda = 2; ! float C[] = { -0.918f, -0.018f, 0.991f, -0.789f, -0.698f, -0.067f, 0.956f, -0.599f }; int ldc = 2; ! float C_expected[] = { -0.826499f, 0.0f, 1.00109f, -0.845733f, -0.698f, -0.067f, 0.992288f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1600) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1600) imag"); }; }; *************** *** 89,103 **** float alpha = 0.1f; float beta = 1.0f; ! float A[] = { 0.961f, -0.384f, 0.165f, 0.395f }; int lda = 1; ! float C[] = { -0.186f, 0.404f, -0.873f, 0.09f, -0.451f, -0.972f, -0.203f, -0.304f }; int ldc = 2; ! float C_expected[] = { -0.0789023f, 0.0f, -0.873f, 0.09f, -0.450312f, -0.927704f, -0.184675f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1609) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1609) imag"); }; }; --- 89,103 ---- float alpha = 0.1f; float beta = 1.0f; ! float A[] = { -0.237f, 0.925f, -0.904f, -0.091f }; int lda = 1; ! float C[] = { -0.572f, 0.915f, 0.398f, 0.222f, 0.016f, 0.288f, -0.078f, -0.507f }; int ldc = 2; ! float C_expected[] = { -0.480821f, 0.0f, 0.398f, 0.222f, 0.0290073f, 0.373777f, 0.0045497f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1601) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1601) imag"); }; }; *************** *** 111,127 **** int N = 2; int K = 1; ! float alpha = 0.0f; ! float beta = -0.3f; ! float A[] = { 0.04f, 0.608f, 0.21f, -0.44f }; int lda = 1; ! float C[] = { 0.285f, -0.943f, 0.581f, -0.56f, 0.112f, 0.529f, 0.16f, -0.913f }; int ldc = 2; ! float C_expected[] = { -0.0855f, 0.0f, 0.581f, -0.56f, -0.0336f, -0.1587f, -0.048f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1610) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1610) imag"); }; }; --- 111,127 ---- int N = 2; int K = 1; ! float alpha = -0.3f; ! float beta = 0.0f; ! float A[] = { 0.963f, -0.23f, -0.435f, 0.289f }; int lda = 1; ! float C[] = { 0.282f, -0.272f, -0.516f, -0.594f, -0.001f, 0.155f, -0.39f, -0.354f }; int ldc = 2; ! float C_expected[] = { -0.294081f, 0.0f, -0.516f, -0.594f, 0.145613f, -0.0534771f, -0.0818238f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1602) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1602) imag"); }; }; *************** *** 135,151 **** int N = 2; int K = 1; ! float alpha = 0.0f; ! float beta = -0.3f; ! float A[] = { -0.984f, -0.398f, -0.379f, 0.919f }; int lda = 2; ! float C[] = { -0.44f, -0.087f, 0.156f, -0.945f, -0.943f, -0.355f, 0.577f, 0.053f }; int ldc = 2; ! float C_expected[] = { 0.132f, 0.0f, -0.0468f, 0.2835f, -0.943f, -0.355f, -0.1731f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1611) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1611) imag"); }; }; --- 135,151 ---- int N = 2; int K = 1; ! float alpha = -0.3f; ! float beta = 0.0f; ! float A[] = { 0.674f, 0.1f, -0.098f, 0.552f }; int lda = 2; ! float C[] = { 0.089f, -0.523f, -0.551f, 0.618f, 0.67f, 0.247f, 0.975f, -0.714f }; int ldc = 2; ! float C_expected[] = { -0.139283f, 0.0f, 0.0032556f, -0.114554f, 0.67f, 0.247f, -0.0942924f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1603) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1603) imag"); }; }; *************** *** 160,175 **** int K = 1; float alpha = 1.0f; ! float beta = -1.0f; ! float A[] = { 0.269f, -0.428f, -0.029f, 0.964f }; int lda = 2; ! float C[] = { 0.473f, -0.932f, -0.689f, -0.072f, -0.952f, -0.862f, 0.001f, 0.282f }; int ldc = 2; ! float C_expected[] = { -0.217455f, 0.0f, -0.689f, -0.072f, 0.531607f, 0.615096f, 0.929137f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1612) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1612) imag"); }; }; --- 160,175 ---- int K = 1; float alpha = 1.0f; ! float beta = 0.1f; ! float A[] = { 0.033f, -0.864f, 0.168f, 0.524f }; int lda = 2; ! float C[] = { 0.788f, 0.016f, -0.436f, 0.749f, -0.89f, -0.87f, 0.421f, -0.203f }; int ldc = 2; ! float C_expected[] = { 0.826385f, 0.0f, -0.436f, 0.749f, -0.536192f, -0.249444f, 0.3449f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1604) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1604) imag"); }; }; *************** *** 184,199 **** int K = 1; float alpha = 1.0f; ! float beta = -1.0f; ! float A[] = { -0.303f, -0.037f, -0.411f, -0.243f }; int lda = 1; ! float C[] = { 0.652f, -0.227f, -0.849f, 0.87f, -0.051f, -0.535f, 0.418f, -0.681f }; int ldc = 2; ! float C_expected[] = { -0.558822f, 0.0f, 0.982524f, -0.928422f, -0.051f, -0.535f, -0.19003f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1613) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1613) imag"); }; }; --- 184,199 ---- int K = 1; float alpha = 1.0f; ! float beta = 0.1f; ! float A[] = { 0.957f, -0.079f, 0.935f, 0.232f }; int lda = 1; ! float C[] = { -0.744f, -0.061f, 0.195f, -0.574f, 0.551f, 0.478f, -0.337f, 0.1f }; int ldc = 2; ! float C_expected[] = { 0.84769f, 0.0f, 0.895967f, -0.353289f, 0.551f, 0.478f, 0.894349f, 0.0f }; cblas_cherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "cherk(case 1605) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "cherk(case 1605) imag"); }; }; *************** *** 207,223 **** int N = 2; int K = 1; ! double alpha = 0.1; double beta = 1; ! double A[] = { -0.384, -0.851, 0.518, 0.492 }; int lda = 1; ! double C[] = { -0.117, -0.194, -0.915, 0.069, 0.445, 0.089, 0.213, -0.889 }; int ldc = 2; ! double C_expected[] = { -0.0298343, 0.0, -0.9767604, 0.043811, 0.445, 0.089, 0.2640388, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1614) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1614) imag"); }; }; --- 207,223 ---- int N = 2; int K = 1; ! double alpha = 1; double beta = 1; ! double A[] = { 0.934, 0.664, 0.426, 0.263 }; int lda = 1; ! double C[] = { 0.251, -0.97, 0.76, -0.349, 0.152, -0.899, -0.17, 0.707 }; int ldc = 2; ! double C_expected[] = { 1.564252, 0.0, 1.332516, -0.311778, 0.152, -0.899, 0.080645, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1606) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1606) imag"); }; }; *************** *** 231,247 **** int N = 2; int K = 1; ! double alpha = 0.1; double beta = 1; ! double A[] = { 0.13, 0.236, 0.788, 0.629 }; int lda = 2; ! double C[] = { 0.021, -0.376, -0.804, 0.689, -0.912, 0.21, -0.581, 0.406 }; int ldc = 2; ! double C_expected[] = { 0.0282596, 0.0, -0.804, 0.689, -0.8869116, 0.2204198, -0.4793415, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1615) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1615) imag"); }; }; --- 231,247 ---- int N = 2; int K = 1; ! double alpha = 1; double beta = 1; ! double A[] = { 0.16, 0.464, -0.623, 0.776 }; int lda = 2; ! double C[] = { 0.771, -0.449, 0.776, 0.112, -0.134, 0.317, 0.547, -0.551 }; int ldc = 2; ! double C_expected[] = { 1.011896, 0.0, 0.776, 0.112, 0.126384, -0.096232, 1.537305, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1607) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1607) imag"); }; }; *************** *** 255,271 **** int N = 2; int K = 1; ! double alpha = 0; double beta = 1; ! double A[] = { 0.593, 0.846, -0.144, 0.128 }; int lda = 2; ! double C[] = { 0.02, 0.313, 0.222, 0.301, 0.412, -0.645, -0.411, -0.02 }; int ldc = 2; ! double C_expected[] = { 0.02, 0.313, 0.222, 0.301, 0.412, -0.645, -0.411, -0.02 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1616) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1616) imag"); }; }; --- 255,271 ---- int N = 2; int K = 1; ! double alpha = 0.1; double beta = 1; ! double A[] = { 0.787, 0.057, -0.49, 0.47 }; int lda = 2; ! double C[] = { -0.758, 0.912, 0.992, -0.356, 0.584, 0.806, 0.965, 0.674 }; int ldc = 2; ! double C_expected[] = { -0.6957382, 0.0, 0.956116, -0.316218, 0.584, 0.806, 1.0111, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1608) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1608) imag"); }; }; *************** *** 279,295 **** int N = 2; int K = 1; ! double alpha = 0; double beta = 1; ! double A[] = { 0.857, 0.994, -0.933, 0.069 }; int lda = 1; ! double C[] = { 0.253, -0.521, 0.937, -0.73, 0.24, 0.177, -0.27, -0.225 }; int ldc = 2; ! double C_expected[] = { 0.253, -0.521, 0.937, -0.73, 0.24, 0.177, -0.27, -0.225 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1617) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1617) imag"); }; }; --- 279,295 ---- int N = 2; int K = 1; ! double alpha = 0.1; double beta = 1; ! double A[] = { 0.961, -0.384, 0.165, 0.395 }; int lda = 1; ! double C[] = { -0.186, 0.404, -0.873, 0.09, -0.451, -0.972, -0.203, -0.304 }; int ldc = 2; ! double C_expected[] = { -0.0789023, 0.0, -0.873, 0.09, -0.4503115, -0.9277045, -0.184675, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1609) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1609) imag"); }; }; *************** *** 304,319 **** int K = 1; double alpha = 0; ! double beta = 1; ! double A[] = { -0.343, -0.433, -0.381, -0.087 }; int lda = 1; ! double C[] = { -0.695, 0.911, 0.719, -0.074, -0.621, -0.256, 0.216, -0.889 }; int ldc = 2; ! double C_expected[] = { -0.695, 0.911, 0.719, -0.074, -0.621, -0.256, 0.216, -0.889 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1618) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1618) imag"); }; }; --- 304,319 ---- int K = 1; double alpha = 0; ! double beta = -0.3; ! double A[] = { 0.04, 0.608, 0.21, -0.44 }; int lda = 1; ! double C[] = { 0.285, -0.943, 0.581, -0.56, 0.112, 0.529, 0.16, -0.913 }; int ldc = 2; ! double C_expected[] = { -0.0855, 0.0, 0.581, -0.56, -0.0336, -0.1587, -0.048, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1610) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1610) imag"); }; }; *************** *** 328,343 **** int K = 1; double alpha = 0; ! double beta = 1; ! double A[] = { -0.887, 0.557, -0.43, 0.912 }; int lda = 2; ! double C[] = { -0.083, 0.219, 0.417, 0.817, -0.294, -0.683, -0.633, 0.831 }; int ldc = 2; ! double C_expected[] = { -0.083, 0.219, 0.417, 0.817, -0.294, -0.683, -0.633, 0.831 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1619) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1619) imag"); }; }; --- 328,343 ---- int K = 1; double alpha = 0; ! double beta = -0.3; ! double A[] = { -0.984, -0.398, -0.379, 0.919 }; int lda = 2; ! double C[] = { -0.44, -0.087, 0.156, -0.945, -0.943, -0.355, 0.577, 0.053 }; int ldc = 2; ! double C_expected[] = { 0.132, 0.0, -0.0468, 0.2835, -0.943, -0.355, -0.1731, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1611) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1611) imag"); }; }; *************** *** 351,367 **** int N = 2; int K = 1; ! double alpha = -0.3; double beta = -1; ! double A[] = { -0.531, 0.187, -0.777, -0.329 }; int lda = 2; ! double C[] = { -0.173, 0.833, 0.155, -0.52, -0.99, 0.28, 0.455, 0.481 }; int ldc = 2; ! double C_expected[] = { 0.077921, 0.0, 0.155, -0.52, 0.8846808, -0.1840006, -0.668591, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1620) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1620) imag"); }; }; --- 351,367 ---- int N = 2; int K = 1; ! double alpha = 1; double beta = -1; ! double A[] = { 0.269, -0.428, -0.029, 0.964 }; int lda = 2; ! double C[] = { 0.473, -0.932, -0.689, -0.072, -0.952, -0.862, 0.001, 0.282 }; int ldc = 2; ! double C_expected[] = { -0.217455, 0.0, -0.689, -0.072, 0.531607, 0.615096, 0.929137, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1612) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1612) imag"); }; }; *************** *** 375,391 **** int N = 2; int K = 1; ! double alpha = -0.3; double beta = -1; ! double A[] = { -0.287, 0.068, 0.917, -0.449 }; int lda = 1; ! double C[] = { -0.248, -0.608, -0.124, -0.718, -0.037, -0.115, 0.998, -0.551 }; int ldc = 2; ! double C_expected[] = { 0.2219021, 0.0, 0.2121133, 0.7379521, -0.037, -0.115, -1.310747, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1621) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1621) imag"); }; }; --- 375,391 ---- int N = 2; int K = 1; ! double alpha = 1; double beta = -1; ! double A[] = { -0.303, -0.037, -0.411, -0.243 }; int lda = 1; ! double C[] = { 0.652, -0.227, -0.849, 0.87, -0.051, -0.535, 0.418, -0.681 }; int ldc = 2; ! double C_expected[] = { -0.558822, 0.0, 0.982524, -0.928422, -0.051, -0.535, -0.19003, 0.0 }; cblas_zherk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zherk(case 1613) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zherk(case 1613) imag"); }; }; diff -x.info* -rc2P gsl-1.3/cblas/test_syr2k.c gsl-1.4/cblas/test_syr2k.c *** gsl-1.3/cblas/test_syr2k.c Mon Nov 19 21:35:17 2001 --- gsl-1.4/cblas/test_syr2k.c Fri Jul 25 15:18:09 2003 *************** *** 15,32 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.1f; ! float A[] = { -0.635f, 0.805f }; int lda = 2; ! float B[] = { 0.773f, 0.375f }; int ldb = 2; ! float C[] = { 0.616f }; int ldc = 1; ! float C_expected[] = { 0.174988f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1622)"); } }; --- 15,32 ---- int N = 1; int K = 2; ! float alpha = 0.1f; ! float beta = 1.0f; ! float A[] = { -0.915f, 0.445f }; int lda = 2; ! float B[] = { 0.213f, -0.194f }; int ldb = 2; ! float C[] = { -0.117f }; int ldc = 1; ! float C_expected[] = { -0.173245f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1614)"); } }; *************** *** 40,57 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.1f; ! float A[] = { -0.396f, -0.131f }; int lda = 2; ! float B[] = { -0.603f, -0.288f }; int ldb = 2; ! float C[] = { -0.434f }; int ldc = 1; ! float C_expected[] = { -0.20931f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1623)"); } }; --- 40,57 ---- int N = 1; int K = 2; ! float alpha = 0.1f; ! float beta = 1.0f; ! float A[] = { 0.089f, -0.889f }; int lda = 2; ! float B[] = { -0.384f, 0.518f }; int ldb = 2; ! float C[] = { 0.069f }; int ldc = 1; ! float C_expected[] = { -0.0299356f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1615)"); } }; *************** *** 65,82 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.1f; ! float A[] = { -0.085f, -0.444f }; int lda = 1; ! float B[] = { 0.936f, 0.752f }; int ldb = 1; ! float C[] = { -0.64f }; int ldc = 1; ! float C_expected[] = { 0.184069f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1624)"); } }; --- 65,82 ---- int N = 1; int K = 2; ! float alpha = 0.1f; ! float beta = 1.0f; ! float A[] = { 0.492f, 0.021f }; int lda = 1; ! float B[] = { -0.804f, -0.912f }; int ldb = 1; ! float C[] = { -0.851f }; int ldc = 1; ! float C_expected[] = { -0.933944f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1616)"); } }; *************** *** 90,107 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.1f; ! float A[] = { 0.655f, 0.45f }; int lda = 1; ! float B[] = { 0.16f, -0.747f }; int ldb = 1; ! float C[] = { 0.576f }; int ldc = 1; ! float C_expected[] = { 0.19641f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1625)"); } }; --- 90,107 ---- int N = 1; int K = 2; ! float alpha = 0.1f; ! float beta = 1.0f; ! float A[] = { -0.376f, 0.689f }; int lda = 1; ! float B[] = { 0.21f, 0.406f }; int ldb = 1; ! float C[] = { -0.581f }; int ldc = 1; ! float C_expected[] = { -0.540845f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1617)"); } }; *************** *** 115,132 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.0f; ! float A[] = { 0.259f, -0.334f }; int lda = 1; ! float B[] = { -0.911f, -0.426f }; int ldb = 1; ! float C[] = { 0.432f }; int ldc = 1; ! float C_expected[] = { 0.056199f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1626)"); } }; --- 115,132 ---- int N = 1; int K = 2; ! float alpha = 1.0f; ! float beta = -0.3f; ! float A[] = { 0.629f, -0.883f }; int lda = 1; ! float B[] = { -0.165f, 0.02f }; int ldb = 1; ! float C[] = { 0.236f }; int ldc = 1; ! float C_expected[] = { -0.31369f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1618)"); } }; *************** *** 140,157 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.0f; ! float A[] = { -0.765f, 0.7f }; int lda = 1; ! float B[] = { 0.487f, 0.768f }; int ldb = 1; ! float C[] = { 0.836f }; int ldc = 1; ! float C_expected[] = { -0.099027f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1627)"); } }; --- 140,157 ---- int N = 1; int K = 2; ! float alpha = 1.0f; ! float beta = -0.3f; ! float A[] = { 0.412f, -0.411f }; int lda = 1; ! float B[] = { 0.313f, 0.301f }; int ldb = 1; ! float C[] = { 0.222f }; int ldc = 1; ! float C_expected[] = { -0.05611f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1619)"); } }; *************** *** 165,182 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.0f; ! float A[] = { -0.584f, 0.056f }; int lda = 2; ! float B[] = { 0.928f, -0.101f }; int ldb = 2; ! float C[] = { -0.529f }; int ldc = 1; ! float C_expected[] = { 0.328565f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1628)"); } }; --- 165,182 ---- int N = 1; int K = 2; ! float alpha = 1.0f; ! float beta = -0.3f; ! float A[] = { -0.02f, 0.593f }; int lda = 2; ! float B[] = { -0.144f, 0.846f }; int ldb = 2; ! float C[] = { -0.645f }; int ldc = 1; ! float C_expected[] = { 1.20262f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1620)"); } }; *************** *** 190,207 **** int N = 1; int K = 2; ! float alpha = -0.3f; ! float beta = 0.0f; ! float A[] = { 0.25f, 0.8f }; int lda = 2; ! float B[] = { 0.489f, -0.642f }; int ldb = 2; ! float C[] = { 0.322f }; int ldc = 1; ! float C_expected[] = { 0.23481f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1629)"); } }; --- 190,207 ---- int N = 1; int K = 2; ! float alpha = 1.0f; ! float beta = -0.3f; ! float A[] = { 0.253f, 0.937f }; int lda = 2; ! float B[] = { 0.24f, -0.27f }; int ldb = 2; ! float C[] = { 0.128f }; int ldc = 1; ! float C_expected[] = { -0.42294f }; cblas_ssyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], flteps, "ssyr2k(case 1621)"); } }; *************** *** 215,232 **** int N = 1; int K = 2; ! double alpha = 0; double beta = 0; ! double A[] = { 0.591, 0.21 }; int lda = 2; ! double B[] = { -0.718, -0.579 }; int ldb = 2; ! double C[] = { -0.856 }; int ldc = 1; ! double C_expected[] = { -0.0 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1630)"); } }; --- 215,232 ---- int N = 1; int K = 2; ! double alpha = 0.1; double beta = 0; ! double A[] = { -0.225, 0.857 }; int lda = 2; ! double B[] = { -0.933, 0.994 }; int ldb = 2; ! double C[] = { 0.177 }; int ldc = 1; ! double C_expected[] = { 0.2123566 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1622)"); } }; *************** *** 240,257 **** int N = 1; int K = 2; ! double alpha = 0; double beta = 0; ! double A[] = { -0.971, -0.824 }; int lda = 2; ! double B[] = { -0.227, 0.457 }; int ldb = 2; ! double C[] = { 0.521 }; int ldc = 1; ! double C_expected[] = { 0.0 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1631)"); } }; --- 240,257 ---- int N = 1; int K = 2; ! double alpha = 0.1; double beta = 0; ! double A[] = { -0.955, 0.112 }; int lda = 2; ! double B[] = { -0.695, 0.719 }; int ldb = 2; ! double C[] = { 0.069 }; int ldc = 1; ! double C_expected[] = { 0.1488506 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1623)"); } }; *************** *** 265,282 **** int N = 1; int K = 2; ! double alpha = 0; double beta = 0; ! double A[] = { -0.274, 0.583 }; int lda = 1; ! double B[] = { 0.668, -0.83 }; int ldb = 1; ! double C[] = { 0.907 }; int ldc = 1; ! double C_expected[] = { 0.0 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1632)"); } }; --- 265,282 ---- int N = 1; int K = 2; ! double alpha = 0.1; double beta = 0; ! double A[] = { 0.216, 0.911 }; int lda = 1; ! double B[] = { -0.074, -0.256 }; int ldb = 1; ! double C[] = { -0.621 }; int ldc = 1; ! double C_expected[] = { -0.04984 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1624)"); } }; *************** *** 290,307 **** int N = 1; int K = 2; ! double alpha = 0; double beta = 0; ! double A[] = { -0.512, -0.436 }; int lda = 1; ! double B[] = { -0.443, -0.259 }; int ldb = 1; ! double C[] = { -0.667 }; int ldc = 1; ! double C_expected[] = { 0.0 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1633)"); } }; --- 290,307 ---- int N = 1; int K = 2; ! double alpha = 0.1; double beta = 0; ! double A[] = { -0.343, -0.381 }; int lda = 1; ! double B[] = { -0.433, -0.087 }; int ldb = 1; ! double C[] = { -0.889 }; int ldc = 1; ! double C_expected[] = { 0.0363332 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1625)"); } }; *************** *** 315,332 **** int N = 1; int K = 2; ! double alpha = -0.3; ! double beta = 0; ! double A[] = { 0.741, -0.341 }; int lda = 1; ! double B[] = { 0.743, -0.315 }; int ldb = 1; ! double C[] = { -0.776 }; int ldc = 1; ! double C_expected[] = { -0.3947868 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1634)"); } }; --- 315,332 ---- int N = 1; int K = 2; ! double alpha = 1; ! double beta = -1; ! double A[] = { -0.633, 0.219 }; int lda = 1; ! double B[] = { 0.817, -0.683 }; int ldb = 1; ! double C[] = { -0.294 }; int ldc = 1; ! double C_expected[] = { -1.039476 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1626)"); } }; *************** *** 340,357 **** int N = 1; int K = 2; ! double alpha = -0.3; ! double beta = 0; ! double A[] = { 0.03, 0.175 }; int lda = 1; ! double B[] = { -0.832, 0.291 }; int ldb = 1; ! double C[] = { 0.281 }; int ldc = 1; ! double C_expected[] = { -0.015579 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1635)"); } }; --- 340,357 ---- int N = 1; int K = 2; ! double alpha = 1; ! double beta = -1; ! double A[] = { -0.887, -0.43 }; int lda = 1; ! double B[] = { 0.557, 0.912 }; int ldb = 1; ! double C[] = { 0.831 }; int ldc = 1; ! double C_expected[] = { -2.603438 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1627)"); } }; *************** *** 365,382 **** int N = 1; int K = 2; ! double alpha = -0.3; ! double beta = 0; ! double A[] = { 0.476, 0.496 }; int lda = 2; ! double B[] = { -0.626, -0.159 }; int ldb = 2; ! double C[] = { -0.964 }; int ldc = 1; ! double C_expected[] = { 0.226104 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1636)"); } }; --- 365,382 ---- int N = 1; int K = 2; ! double alpha = 1; ! double beta = -1; ! double A[] = { 0.397, -0.173 }; int lda = 2; ! double B[] = { 0.155, -0.99 }; int ldb = 2; ! double C[] = { 0.621 }; int ldc = 1; ! double C_expected[] = { -0.15539 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1628)"); } }; *************** *** 390,407 **** int N = 1; int K = 2; ! double alpha = -0.3; ! double beta = 0; ! double A[] = { -0.489, 0.611 }; int lda = 2; ! double B[] = { -0.285, -0.673 }; int ldb = 2; ! double C[] = { -0.11 }; int ldc = 1; ! double C_expected[] = { 0.1631028 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1637)"); } }; --- 390,407 ---- int N = 1; int K = 2; ! double alpha = 1; ! double beta = -1; ! double A[] = { 0.833, -0.52 }; int lda = 2; ! double B[] = { 0.28, 0.481 }; int ldb = 2; ! double C[] = { 0.455 }; int ldc = 1; ! double C_expected[] = { -0.48876 }; cblas_dsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[i], C_expected[i], dbleps, "dsyr2k(case 1629)"); } }; *************** *** 415,433 **** int N = 1; int K = 2; ! float alpha[2] = {1.0f, 0.0f}; ! float beta[2] = {0.0f, 0.1f}; ! float A[] = { 0.796f, 0.872f, -0.919f, 0.748f }; int lda = 2; ! float B[] = { -0.945f, 0.915f, -0.252f, -0.276f }; int ldb = 2; ! float C[] = { 0.07f, -0.957f }; int ldc = 1; ! float C_expected[] = { -2.12843f, -0.054104f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1638) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1638) imag"); }; }; --- 415,433 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { -0.248f, -0.037f, -0.124f, 0.998f }; int lda = 2; ! float B[] = { -0.608f, -0.115f, -0.718f, -0.551f }; int ldb = 2; ! float C[] = { 0.187f, -0.329f }; int ldc = 1; ! float C_expected[] = { 0.119445f, 0.157092f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1630) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1630) imag"); }; }; *************** *** 441,459 **** int N = 1; int K = 2; ! float alpha[2] = {1.0f, 0.0f}; ! float beta[2] = {0.0f, 0.1f}; ! float A[] = { 0.984f, 0.526f, 0.284f, 0.806f }; int lda = 2; ! float B[] = { -0.509f, -0.178f, 0.188f, -0.221f }; int ldb = 2; ! float C[] = { -0.388f, 0.795f }; int ldc = 1; ! float C_expected[] = { -0.43092f, -0.747044f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1639) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1639) imag"); }; }; --- 441,459 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { 0.068f, 0.751f, -0.449f, -0.598f }; int lda = 2; ! float B[] = { 0.616f, 0.805f, -0.635f, 0.773f }; int ldb = 2; ! float C[] = { -0.287f, 0.917f }; int ldc = 1; ! float C_expected[] = { -0.110002f, 0.0369404f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1631) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1631) imag"); }; }; *************** *** 467,485 **** int N = 1; int K = 2; ! float alpha[2] = {1.0f, 0.0f}; ! float beta[2] = {0.0f, 0.1f}; ! float A[] = { -0.16f, 0.628f, -0.06f, -0.645f }; int lda = 1; ! float B[] = { 0.846f, 0.545f, 0.032f, 0.493f }; int ldb = 1; ! float C[] = { -0.041f, -0.621f }; int ldc = 1; ! float C_expected[] = { -0.26101f, 0.783636f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1640) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1640) imag"); }; }; --- 467,485 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { -0.396f, -0.603f, -0.131f, -0.288f }; int lda = 1; ! float B[] = { -0.64f, -0.444f, -0.085f, 0.936f }; int ldb = 1; ! float C[] = { 0.375f, -0.434f }; int ldc = 1; ! float C_expected[] = { -0.0927216f, 0.0532822f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1632) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1632) imag"); }; }; *************** *** 493,511 **** int N = 1; int K = 2; ! float alpha[2] = {1.0f, 0.0f}; ! float beta[2] = {0.0f, 0.1f}; ! float A[] = { -0.478f, -0.556f, 0.519f, 0.177f }; int lda = 1; ! float B[] = { -0.946f, 0.423f, -0.859f, 0.736f }; int ldb = 1; ! float C[] = { -0.54f, -0.035f }; int ldc = 1; ! float C_expected[] = { 0.226066f, 1.05345f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1641) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1641) imag"); }; }; --- 493,511 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { 0.655f, 0.16f, 0.45f, -0.747f }; int lda = 1; ! float B[] = { 0.923f, 0.432f, -0.986f, 0.259f }; int ldb = 1; ! float C[] = { 0.752f, 0.576f }; int ldc = 1; ! float C_expected[] = { -0.256746f, 0.0570436f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1633) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1633) imag"); }; }; *************** *** 519,537 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.0f}; ! float beta[2] = {1.0f, 0.0f}; ! float A[] = { -0.582f, 0.09f, -0.176f, 0.784f }; int lda = 1; ! float B[] = { 0.687f, -0.859f, 0.945f, 0.756f }; int ldb = 1; ! float C[] = { -0.663f, -0.186f }; int ldc = 1; ! float C_expected[] = { -0.663f, -0.186f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1642) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1642) imag"); }; }; --- 519,537 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { -0.765f, 0.487f, 0.7f, 0.768f }; int lda = 1; ! float B[] = { -0.529f, 0.056f, -0.584f, 0.928f }; int ldb = 1; ! float C[] = { -0.426f, 0.836f }; int ldc = 1; ! float C_expected[] = { 0.019875f, -0.148818f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1634) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1634) imag"); }; }; *************** *** 545,563 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.0f}; ! float beta[2] = {1.0f, 0.0f}; ! float A[] = { 0.231f, -0.452f, -0.112f, -0.837f }; int lda = 1; ! float B[] = { -0.258f, 0.464f, -0.224f, 0.893f }; int ldb = 1; ! float C[] = { -0.448f, 0.046f }; int ldc = 1; ! float C_expected[] = { -0.448f, 0.046f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1643) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1643) imag"); }; }; --- 545,563 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { 0.25f, 0.489f, 0.8f, -0.642f }; int lda = 1; ! float B[] = { -0.732f, -0.856f, -0.654f, 0.591f }; int ldb = 1; ! float C[] = { -0.101f, 0.322f }; int ldc = 1; ! float C_expected[] = { -0.064144f, 0.0183612f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1635) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1635) imag"); }; }; *************** *** 571,589 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.0f}; ! float beta[2] = {1.0f, 0.0f}; ! float A[] = { 0.115f, 0.178f, -0.193f, -0.491f }; int lda = 2; ! float B[] = { 0.545f, -0.665f, 0.979f, -0.4f }; int ldb = 2; ! float C[] = { 0.522f, 0.712f }; int ldc = 1; ! float C_expected[] = { 0.522f, 0.712f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1644) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1644) imag"); }; }; --- 571,589 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { -0.579f, -0.971f, 0.521f, -0.824f }; int lda = 2; ! float B[] = { -0.227f, 0.907f, 0.457f, -0.274f }; int ldb = 2; ! float C[] = { 0.21f, -0.718f }; int ldc = 1; ! float C_expected[] = { 0.164812f, 0.20489f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1636) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1636) imag"); }; }; *************** *** 597,615 **** int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.0f}; ! float beta[2] = {1.0f, 0.0f}; ! float A[] = { -0.725f, -0.808f, -0.244f, 0.145f }; int lda = 2; ! float B[] = { 0.447f, -0.413f, -0.226f, -0.585f }; int ldb = 2; ! float C[] = { -0.531f, 0.227f }; int ldc = 1; ! float C_expected[] = { -0.531f, 0.227f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1645) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1645) imag"); }; }; --- 597,615 ---- int N = 1; int K = 2; ! float alpha[2] = {0.0f, 0.1f}; ! float beta[2] = {0.0f, 0.0f}; ! float A[] = { -0.83f, -0.512f, -0.667f, -0.436f }; int lda = 2; ! float B[] = { -0.443f, 0.82f, -0.259f, -0.618f }; int ldb = 2; ! float C[] = { 0.583f, 0.668f }; int ldc = 1; ! float C_expected[] = { -0.0142692f, 0.138167f }; cblas_csyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyr2k(case 1637) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyr2k(case 1637) imag"); }; }; *************** *** 623,641 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {-0.3, 0.1}; ! double A[] = { 0.337, -0.737, -0.993, 0.69 }; int lda = 2; ! double B[] = { -0.39, -0.836, -0.32, 0.368 }; int ldb = 2; ! double C[] = { 0.844, -0.763 }; int ldc = 1; ! double C_expected[] = { 0.3494384, 0.5248712 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1646) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1646) imag"); }; }; --- 623,641 ---- int N = 1; int K = 2; ! double alpha[2] = {0, 0}; double beta[2] = {-0.3, 0.1}; ! double A[] = { -0.315, 0.03, 0.281, 0.175 }; int lda = 2; ! double B[] = { -0.832, -0.964, 0.291, 0.476 }; int ldb = 2; ! double C[] = { -0.341, 0.743 }; int ldc = 1; ! double C_expected[] = { 0.028, -0.257 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1638) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1638) imag"); }; }; *************** *** 649,667 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {-0.3, 0.1}; ! double A[] = { 0.386, -0.465, 0.719, -0.378 }; int lda = 2; ! double B[] = { 0.099, -0.879, 0.864, 0.141 }; int ldb = 2; ! double C[] = { -0.599, -0.47 }; int ldc = 1; ! double C_expected[] = { 0.1664126, 0.5082238 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1647) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1647) imag"); }; }; --- 649,667 ---- int N = 1; int K = 2; ! double alpha[2] = {0, 0}; double beta[2] = {-0.3, 0.1}; ! double A[] = { -0.159, -0.489, -0.11, 0.611 }; int lda = 2; ! double B[] = { -0.285, -0.048, -0.673, -0.492 }; int ldb = 2; ! double C[] = { 0.496, -0.626 }; int ldc = 1; ! double C_expected[] = { -0.0862, 0.2374 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1639) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1639) imag"); }; }; *************** *** 675,693 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {-0.3, 0.1}; ! double A[] = { 0.914, 0.128, -0.262, -0.26 }; int lda = 1; ! double B[] = { 0.431, 0.276, 0.75, 0.904 }; int ldb = 1; ! double C[] = { 0.287, 0.537 }; int ldc = 1; ! double C_expected[] = { -0.3532044, 0.0216788 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1648) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1648) imag"); }; }; --- 675,693 ---- int N = 1; int K = 2; ! double alpha[2] = {0, 0}; double beta[2] = {-0.3, 0.1}; ! double A[] = { 0.796, 0.872, -0.919, 0.748 }; int lda = 1; ! double B[] = { -0.945, 0.915, -0.252, -0.276 }; int ldb = 1; ! double C[] = { 0.07, -0.957 }; int ldc = 1; ! double C_expected[] = { 0.0747, 0.2941 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1640) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1640) imag"); }; }; *************** *** 701,719 **** int N = 1; int K = 2; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {-0.3, 0.1}; ! double A[] = { 0.618, 0.72, 0.392, -0.737 }; int lda = 1; ! double B[] = { 0.783, 0.531, 0.375, 0.203 }; int ldb = 1; ! double C[] = { 0.058, -0.116 }; int ldc = 1; ! double C_expected[] = { -0.3837348, -0.2968344 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1649) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1649) imag"); }; }; --- 701,719 ---- int N = 1; int K = 2; ! double alpha[2] = {0, 0}; double beta[2] = {-0.3, 0.1}; ! double A[] = { 0.984, 0.526, 0.284, 0.806 }; int lda = 1; ! double B[] = { -0.509, -0.178, 0.188, -0.221 }; int ldb = 1; ! double C[] = { -0.388, 0.795 }; int ldc = 1; ! double C_expected[] = { 0.0369, -0.2773 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1641) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1641) imag"); }; }; *************** *** 727,745 **** int N = 1; int K = 2; ! double alpha[2] = {0, 1}; ! double beta[2] = {1, 0}; ! double A[] = { -0.372, -0.735, -0.711, 0.051 }; int lda = 1; ! double B[] = { 0.257, 0.097, 0.338, -0.484 }; int ldb = 1; ! double C[] = { -0.142, -0.197 }; int ldc = 1; ! double C_expected[] = { -0.414766, -0.676886 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1650) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1650) imag"); }; }; --- 727,745 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta[2] = {0, 0.1}; ! double A[] = { 0.628, 0.846, -0.645, 0.032 }; int lda = 1; ! double B[] = { 0.545, -0.54, 0.493, -0.035 }; int ldb = 1; ! double C[] = { -0.16, -0.06 }; int ldc = 1; ! double C_expected[] = { 0.97047, 0.304602 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1642) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1642) imag"); }; }; *************** *** 753,771 **** int N = 1; int K = 2; ! double alpha[2] = {0, 1}; ! double beta[2] = {1, 0}; ! double A[] = { 0.1, -0.878, 0.28, -0.381 }; int lda = 1; ! double B[] = { -0.208, 0.309, -0.276, 0.123 }; int ldb = 1; ! double C[] = { 0.483, -0.541 }; int ldc = 1; ! double C_expected[] = { -0.22324, -0.10083 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1651) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1651) imag"); }; }; --- 753,771 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta[2] = {0, 0.1}; ! double A[] = { -0.556, -0.946, 0.177, -0.859 }; int lda = 1; ! double B[] = { 0.423, -0.91, 0.736, -0.251 }; int ldb = 1; ! double C[] = { -0.478, 0.519 }; int ldc = 1; ! double C_expected[] = { -2.41467, -1.189498 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1643) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1643) imag"); }; }; *************** *** 779,797 **** int N = 1; int K = 2; ! double alpha[2] = {0, 1}; ! double beta[2] = {1, 0}; ! double A[] = { -0.918, 0.515, -0.985, 0.067 }; int lda = 2; ! double B[] = { -0.034, 0.408, 0.66, -0.945 }; int ldb = 2; ! double C[] = { -0.063, -0.018 }; int ldc = 1; ! double C_expected[] = { -1.228982, -1.549386 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1652) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1652) imag"); }; }; --- 779,797 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta[2] = {0, 0.1}; ! double A[] = { -0.582, 0.09, -0.176, 0.784 }; int lda = 2; ! double B[] = { 0.687, -0.859, 0.945, 0.756 }; int ldb = 2; ! double C[] = { -0.663, -0.186 }; int ldc = 1; ! double C_expected[] = { -2.144496, 2.272884 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1644) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1644) imag"); }; }; *************** *** 805,823 **** int N = 1; int K = 2; ! double alpha[2] = {0, 1}; ! double beta[2] = {1, 0}; ! double A[] = { 0.443, -0.009, -0.245, -0.008 }; int lda = 2; ! double B[] = { 0.495, -0.239, -0.973, -0.032 }; int ldb = 2; ! double C[] = { -0.85, -0.799 }; int ldc = 1; ! double C_expected[] = { -0.660584, 0.111526 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1653) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1653) imag"); }; }; --- 805,823 ---- int N = 1; int K = 2; ! double alpha[2] = {1, 0}; ! double beta[2] = {0, 0.1}; ! double A[] = { 0.231, -0.452, -0.112, -0.837 }; int lda = 2; ! double B[] = { -0.258, 0.464, -0.224, 0.893 }; int ldb = 2; ! double C[] = { -0.448, 0.046 }; int ldc = 1; ! double C_expected[] = { 1.840718, 0.577744 }; cblas_zsyr2k(order, uplo, trans, N, K, alpha, A, lda, B, ldb, beta, C, ldc); { int i; for (i = 0; i < 1; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyr2k(case 1645) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyr2k(case 1645) imag"); }; }; diff -x.info* -rc2P gsl-1.3/cblas/test_syrk.c gsl-1.4/cblas/test_syrk.c *** gsl-1.3/cblas/test_syrk.c Mon Nov 19 21:35:16 2001 --- gsl-1.4/cblas/test_syrk.c Fri Jul 25 15:18:09 2003 *************** *** 475,480 **** { int order = 101; ! int uplo = 121; ! int trans = 113; int N = 2; int K = 1; --- 475,480 ---- { int order = 101; ! int uplo = 122; ! int trans = 111; int N = 2; int K = 1; *************** *** 482,489 **** float beta[2] = {0.0f, 1.0f}; float A[] = { 0.784f, -0.281f, -0.88f, 0.479f }; ! int lda = 2; float C[] = { 0.491f, 0.531f, 0.805f, -0.097f, 0.728f, 0.674f, -0.705f, -0.754f }; int ldc = 2; ! float C_expected[] = { 0.004695f, 0.050392f, -0.458321f, 1.42782f, 0.728f, 0.674f, 1.29896f, -1.54804f }; cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { --- 482,489 ---- float beta[2] = {0.0f, 1.0f}; float A[] = { 0.784f, -0.281f, -0.88f, 0.479f }; ! int lda = 1; float C[] = { 0.491f, 0.531f, 0.805f, -0.097f, 0.728f, 0.674f, -0.705f, -0.754f }; int ldc = 2; ! float C_expected[] = { 0.004695f, 0.050392f, 0.805f, -0.097f, -1.22932f, 1.35082f, 1.29896f, -1.54804f }; cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { *************** *** 499,504 **** { int order = 102; ! int uplo = 121; ! int trans = 113; int N = 2; int K = 1; --- 499,504 ---- { int order = 102; ! int uplo = 122; ! int trans = 111; int N = 2; int K = 1; *************** *** 506,513 **** float beta[2] = {0.0f, 1.0f}; float A[] = { 0.272f, -0.146f, 0.155f, 0.038f }; ! int lda = 1; float C[] = { 0.533f, -0.41f, -0.904f, 0.301f, -0.836f, 0.57f, -0.374f, -0.293f }; int ldc = 2; ! float C_expected[] = { 0.462668f, 0.453576f, -0.904f, 0.301f, -0.522292f, -0.848294f, 0.315581f, -0.36222f }; cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { --- 506,513 ---- float beta[2] = {0.0f, 1.0f}; float A[] = { 0.272f, -0.146f, 0.155f, 0.038f }; ! int lda = 2; float C[] = { 0.533f, -0.41f, -0.904f, 0.301f, -0.836f, 0.57f, -0.374f, -0.293f }; int ldc = 2; ! float C_expected[] = { 0.462668f, 0.453576f, -0.253292f, -0.916294f, -0.836f, 0.57f, 0.315581f, -0.36222f }; cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { *************** *** 524,528 **** int order = 101; int uplo = 122; ! int trans = 111; int N = 2; int K = 1; --- 524,528 ---- int order = 101; int uplo = 122; ! int trans = 112; int N = 2; int K = 1; *************** *** 530,534 **** float beta[2] = {-1.0f, 0.0f}; float A[] = { -0.055f, -0.127f, -0.896f, -0.625f }; ! int lda = 1; float C[] = { -0.619f, 0.511f, -0.877f, 0.557f, -0.801f, -0.437f, -0.922f, 0.332f }; int ldc = 2; --- 530,534 ---- float beta[2] = {-1.0f, 0.0f}; float A[] = { -0.055f, -0.127f, -0.896f, -0.625f }; ! int lda = 2; float C[] = { -0.619f, 0.511f, -0.877f, 0.557f, -0.801f, -0.437f, -0.922f, 0.332f }; int ldc = 2; *************** *** 548,552 **** int order = 102; int uplo = 122; ! int trans = 111; int N = 2; int K = 1; --- 548,552 ---- int order = 102; int uplo = 122; ! int trans = 112; int N = 2; int K = 1; *************** *** 554,558 **** float beta[2] = {-1.0f, 0.0f}; float A[] = { -0.528f, 0.759f, -0.079f, 0.952f }; ! int lda = 2; float C[] = { 0.775f, 0.855f, 0.786f, 0.525f, 0.85f, 0.044f, 0.658f, 0.947f }; int ldc = 2; --- 554,558 ---- float beta[2] = {-1.0f, 0.0f}; float A[] = { -0.528f, 0.759f, -0.079f, 0.952f }; ! int lda = 1; float C[] = { 0.775f, 0.855f, 0.786f, 0.525f, 0.85f, 0.044f, 0.658f, 0.947f }; int ldc = 2; *************** *** 571,687 **** { int order = 101; - int uplo = 122; - int trans = 112; - int N = 2; - int K = 1; - float alpha[2] = {1.0f, 0.0f}; - float beta[2] = {1.0f, 0.0f}; - float A[] = { -0.049f, -0.687f, -0.434f, 0.294f }; - int lda = 2; - float C[] = { 0.937f, -0.113f, 0.796f, 0.293f, 0.876f, -0.199f, -0.757f, -0.103f }; - int ldc = 2; - float C_expected[] = { 0.467432f, -0.045674f, 0.796f, 0.293f, 1.09924f, 0.084752f, -0.65508f, -0.358192f }; - cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); - { - int i; - for (i = 0; i < 4; i++) { - gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1590) real"); - gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1590) imag"); - }; - }; - }; - - - { - int order = 102; - int uplo = 122; - int trans = 112; - int N = 2; - int K = 1; - float alpha[2] = {1.0f, 0.0f}; - float beta[2] = {1.0f, 0.0f}; - float A[] = { 0.359f, -0.364f, 0.926f, -0.69f }; - int lda = 1; - float C[] = { 0.306f, 0.249f, 0.28f, 0.229f, 0.866f, 0.092f, 0.886f, -0.283f }; - int ldc = 2; - float C_expected[] = { 0.302385f, -0.012352f, 0.361274f, -0.355774f, 0.866f, 0.092f, 1.26738f, -1.56088f }; - cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); - { - int i; - for (i = 0; i < 4; i++) { - gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1591) real"); - gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1591) imag"); - }; - }; - }; - - - { - int order = 101; - int uplo = 122; - int trans = 113; - int N = 2; - int K = 1; - float alpha[2] = {-0.3f, 0.1f}; - float beta[2] = {0.0f, 0.0f}; - float A[] = { 0.607f, 0.555f, -0.85f, 0.831f }; - int lda = 2; - float C[] = { 0.069f, 0.368f, 0.551f, -0.912f, -0.243f, -0.063f, -0.924f, 0.192f }; - int ldc = 2; - float C_expected[] = { -0.0855042f, -0.196089f, 0.551f, -0.912f, 0.28988f, -0.107516f, 0.131688f, 0.427004f }; - cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); - { - int i; - for (i = 0; i < 4; i++) { - gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1592) real"); - gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1592) imag"); - }; - }; - }; - - - { - int order = 102; - int uplo = 122; - int trans = 113; - int N = 2; - int K = 1; - float alpha[2] = {-0.3f, 0.1f}; - float beta[2] = {0.0f, 0.0f}; - float A[] = { 0.427f, 0.86f, -0.136f, 0.002f }; - int lda = 1; - float C[] = { 0.398f, -0.47f, 0.011f, -0.547f, -0.106f, 0.016f, 0.681f, 0.246f }; - int ldc = 2; - float C_expected[] = { 0.0937373f, -0.276059f, 0.0295482f, 0.0288526f, -0.106f, 0.016f, -0.0054932f, 0.0020124f }; - cblas_csyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); - { - int i; - for (i = 0; i < 4; i++) { - gsl_test_rel(C[2*i], C_expected[2*i], flteps, "csyrk(case 1593) real"); - gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "csyrk(case 1593) imag"); - }; - }; - }; - - - { - int order = 101; int uplo = 121; int trans = 111; int N = 2; int K = 1; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {1, 0}; ! double A[] = { 0.718, 0.023, 0.355, -0.492 }; int lda = 1; ! double C[] = { -0.637, -0.727, -0.475, -0.776, 0.802, -0.55, -0.837, 0.222 }; int ldc = 2; ! double C_expected[] = { -0.7948013, -0.6854089, -0.5203527, -0.6458521, 0.802, -0.55, -0.7672563, 0.3151921 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1594) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1594) imag"); }; }; --- 571,591 ---- { int order = 101; int uplo = 121; int trans = 111; int N = 2; int K = 1; ! double alpha[2] = {1, 0}; double beta[2] = {1, 0}; ! double A[] = { -0.049, -0.687, -0.434, 0.294 }; int lda = 1; ! double C[] = { 0.937, -0.113, 0.796, 0.293, 0.876, -0.199, -0.757, -0.103 }; int ldc = 2; ! double C_expected[] = { 0.467432, -0.045674, 1.019244, 0.576752, 0.876, -0.199, -0.65508, -0.358192 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1590) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1590) imag"); }; }; *************** *** 695,711 **** int N = 2; int K = 1; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {1, 0}; ! double A[] = { 0.209, 0.139, -0.202, -0.223 }; int lda = 2; ! double C[] = { -0.695, 0.524, 0.212, -0.88, -0.752, 0.291, 0.684, -0.124 }; int ldc = 2; ! double C_expected[] = { -0.7081182, 0.5090054, 0.212, -0.88, -0.7411652, 0.3122834, 0.6776683, -0.1519201 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1595) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1595) imag"); }; }; --- 599,615 ---- int N = 2; int K = 1; ! double alpha[2] = {1, 0}; double beta[2] = {1, 0}; ! double A[] = { 0.359, -0.364, 0.926, -0.69 }; int lda = 2; ! double C[] = { 0.306, 0.249, 0.28, 0.229, 0.866, 0.092, 0.886, -0.283 }; int ldc = 2; ! double C_expected[] = { 0.302385, -0.012352, 0.28, 0.229, 0.947274, -0.492774, 1.267376, -1.56088 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1591) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1591) imag"); }; }; *************** *** 720,735 **** int K = 1; double alpha[2] = {-0.3, 0.1}; ! double beta[2] = {1, 0}; ! double A[] = { -0.365, -0.624, 0.632, 0.348 }; int lda = 2; ! double C[] = { 0.877, 0.927, -0.377, 0.967, 0.008, 0.292, -0.779, 0.794 }; int ldc = 2; ! double C_expected[] = { 0.9082933, 0.7647289, -0.3208028, 1.1220636, 0.008, 0.292, -0.9064832, 0.6898704 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1596) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1596) imag"); }; }; --- 624,639 ---- int K = 1; double alpha[2] = {-0.3, 0.1}; ! double beta[2] = {0, 0}; ! double A[] = { 0.607, 0.555, -0.85, 0.831 }; int lda = 2; ! double C[] = { 0.069, 0.368, 0.551, -0.912, -0.243, -0.063, -0.924, 0.192 }; int ldc = 2; ! double C_expected[] = { -0.0855042, -0.1960886, 0.2898798, -0.1075156, -0.243, -0.063, 0.1316883, 0.4270039 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1592) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1592) imag"); }; }; *************** *** 744,807 **** int K = 1; double alpha[2] = {-0.3, 0.1}; ! double beta[2] = {1, 0}; ! double A[] = { -0.067, -0.586, 0.208, 0.331 }; ! int lda = 1; ! double C[] = { 0.584, -0.454, 0.93, 0.782, 0.489, -0.278, 0.081, -0.919 }; ! int ldc = 2; ! double C_expected[] = { 0.6778197, -0.5114479, 0.93, 0.782, 0.4493975, -0.2167775, 0.0871195, -0.9669385 }; ! cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); ! { ! int i; ! for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1597) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1597) imag"); ! }; ! }; ! }; ! ! ! { ! int order = 101; ! int uplo = 121; ! int trans = 113; ! int N = 2; ! int K = 1; ! double alpha[2] = {0, 0.1}; ! double beta[2] = {0, 0.1}; ! double A[] = { -0.617, 0.179, -0.626, 0.334 }; ! int lda = 2; ! double C[] = { 0.346, -0.903, 0.022, -0.839, -0.715, 0.049, -0.338, 0.149 }; ! int ldc = 2; ! double C_expected[] = { 0.1123886, 0.0694648, 0.1157132, 0.0348456, -0.715, 0.049, 0.0269168, -0.005768 }; ! cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); ! { ! int i; ! for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1598) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1598) imag"); ! }; ! }; ! }; ! ! ! { ! int order = 102; ! int uplo = 121; ! int trans = 113; ! int N = 2; ! int K = 1; ! double alpha[2] = {0, 0.1}; ! double beta[2] = {0, 0.1}; ! double A[] = { -0.356, -0.308, 0.493, -0.351 }; int lda = 1; ! double C[] = { -0.898, -0.905, 0.002, -0.219, 0.881, 0.879, 0.275, -0.351 }; int ldc = 2; ! double C_expected[] = { 0.0685704, -0.0866128, 0.002, -0.219, -0.0852112, 0.0597384, 0.0697086, 0.0394848 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1599) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1599) imag"); }; }; --- 648,663 ---- int K = 1; double alpha[2] = {-0.3, 0.1}; ! double beta[2] = {0, 0}; ! double A[] = { 0.427, 0.86, -0.136, 0.002 }; int lda = 1; ! double C[] = { 0.398, -0.47, 0.011, -0.547, -0.106, 0.016, 0.681, 0.246 }; int ldc = 2; ! double C_expected[] = { 0.0937373, -0.2760591, 0.011, -0.547, 0.0295482, 0.0288526, -0.0054932, 0.0020124 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1593) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1593) imag"); }; }; *************** *** 815,831 **** int N = 2; int K = 1; ! double alpha[2] = {0, 0.1}; double beta[2] = {1, 0}; ! double A[] = { -0.103, -0.951, -0.601, -0.041 }; int lda = 1; ! double C[] = { -0.918, -0.018, 0.991, -0.789, -0.698, -0.067, 0.956, -0.599 }; int ldc = 2; ! double C_expected[] = { -0.9375906, -0.1073792, 0.991, -0.789, -0.7555774, -0.0647088, 0.9510718, -0.563048 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1600) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1600) imag"); }; }; --- 671,687 ---- int N = 2; int K = 1; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {1, 0}; ! double A[] = { 0.718, 0.023, 0.355, -0.492 }; int lda = 1; ! double C[] = { -0.637, -0.727, -0.475, -0.776, 0.802, -0.55, -0.837, 0.222 }; int ldc = 2; ! double C_expected[] = { -0.7948013, -0.6854089, -0.475, -0.776, 0.7566473, -0.4198521, -0.7672563, 0.3151921 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1594) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1594) imag"); }; }; *************** *** 839,855 **** int N = 2; int K = 1; ! double alpha[2] = {0, 0.1}; double beta[2] = {1, 0}; ! double A[] = { -0.237, 0.925, -0.904, -0.091 }; int lda = 2; ! double C[] = { -0.572, 0.915, 0.398, 0.222, 0.016, 0.288, -0.078, -0.507 }; int ldc = 2; ! double C_expected[] = { -0.528155, 0.8350544, 0.4794633, 0.2518423, 0.016, 0.288, -0.0944528, -0.4261065 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1601) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1601) imag"); }; }; --- 695,711 ---- int N = 2; int K = 1; ! double alpha[2] = {-0.3, 0.1}; double beta[2] = {1, 0}; ! double A[] = { 0.209, 0.139, -0.202, -0.223 }; int lda = 2; ! double C[] = { -0.695, 0.524, 0.212, -0.88, -0.752, 0.291, 0.684, -0.124 }; int ldc = 2; ! double C_expected[] = { -0.7081182, 0.5090054, 0.2228348, -0.8587166, -0.752, 0.291, 0.6776683, -0.1519201 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1595) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1595) imag"); }; }; *************** *** 864,879 **** int K = 1; double alpha[2] = {-0.3, 0.1}; ! double beta[2] = {0, 0}; ! double A[] = { 0.963, -0.23, -0.435, 0.289 }; int lda = 2; ! double C[] = { 0.282, -0.272, -0.516, -0.594, -0.001, 0.155, -0.39, -0.354 }; int ldc = 2; ! double C_expected[] = { -0.2180427, 0.2203409, -0.516, -0.594, 0.0678948, -0.1487506, -0.0065682, 0.0859994 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1602) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1602) imag"); }; }; --- 720,735 ---- int K = 1; double alpha[2] = {-0.3, 0.1}; ! double beta[2] = {1, 0}; ! double A[] = { -0.365, -0.624, 0.632, 0.348 }; int lda = 2; ! double C[] = { 0.877, 0.927, -0.377, 0.967, 0.008, 0.292, -0.779, 0.794 }; int ldc = 2; ! double C_expected[] = { 0.9082933, 0.7647289, -0.377, 0.967, 0.0641972, 0.4470636, -0.9064832, 0.6898704 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1596) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1596) imag"); }; }; *************** *** 888,951 **** int K = 1; double alpha[2] = {-0.3, 0.1}; - double beta[2] = {0, 0}; - double A[] = { 0.674, 0.1, -0.098, 0.552 }; - int lda = 1; - double C[] = { 0.089, -0.523, -0.551, 0.618, 0.67, 0.247, 0.975, -0.714 }; - int ldc = 2; - double C_expected[] = { -0.1467628, 0.0039876, 0.0001508, -0.1207996, 0.67, 0.247, 0.0993492, 0.0029476 }; - cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); - { - int i; - for (i = 0; i < 4; i++) { - gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1603) real"); - gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1603) imag"); - }; - }; - }; - - - { - int order = 101; - int uplo = 122; - int trans = 113; - int N = 2; - int K = 1; - double alpha[2] = {0, 1}; - double beta[2] = {1, 0}; - double A[] = { 0.033, -0.864, 0.168, 0.524 }; - int lda = 2; - double C[] = { 0.788, 0.016, -0.436, 0.749, -0.89, -0.87, 0.421, -0.203 }; - int ldc = 2; - double C_expected[] = { 0.845024, -0.729407, -0.436, 0.749, -0.76214, -0.41172, 0.244936, -0.449352 }; - cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); - { - int i; - for (i = 0; i < 4; i++) { - gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1604) real"); - gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1604) imag"); - }; - }; - }; - - - { - int order = 102; - int uplo = 122; - int trans = 113; - int N = 2; - int K = 1; - double alpha[2] = {0, 1}; double beta[2] = {1, 0}; ! double A[] = { 0.957, -0.079, 0.935, 0.232 }; int lda = 1; ! double C[] = { -0.744, -0.061, 0.195, -0.574, 0.551, 0.478, -0.337, 0.1 }; int ldc = 2; ! double C_expected[] = { -0.592794, 0.848608, 0.046841, 0.339123, 0.551, 0.478, -0.77084, 0.920401 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1605) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1605) imag"); }; }; --- 744,759 ---- int K = 1; double alpha[2] = {-0.3, 0.1}; double beta[2] = {1, 0}; ! double A[] = { -0.067, -0.586, 0.208, 0.331 }; int lda = 1; ! double C[] = { 0.584, -0.454, 0.93, 0.782, 0.489, -0.278, 0.081, -0.919 }; int ldc = 2; ! double C_expected[] = { 0.6778197, -0.5114479, 0.8903975, 0.8432225, 0.489, -0.278, 0.0871195, -0.9669385 }; cblas_zsyrk(order, uplo, trans, N, K, alpha, A, lda, beta, C, ldc); { int i; for (i = 0; i < 4; i++) { ! gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zsyrk(case 1597) real"); ! gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zsyrk(case 1597) imag"); }; }; diff -x.info* -rc2P gsl-1.3/cblas/test_trmm.c gsl-1.4/cblas/test_trmm.c *** gsl-1.3/cblas/test_trmm.c Mon Nov 19 21:35:16 2001 --- gsl-1.4/cblas/test_trmm.c Fri Jul 25 15:18:09 2003 *************** *** 17,31 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.565f, 0.967f, -0.969f, 0.184f }; int lda = 2; ! float B[] = { 0.842f, -0.918f, -0.748f, -0.859f, -0.463f, 0.292f }; int ldb = 3; ! float B_expected[] = { -0.354923f, -0.966391f, -0.140256f, -0.158056f, -0.085192f, 0.053728f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1670)"); } }; --- 17,31 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.18f, 0.199f, 0.122f, -0.547f }; int lda = 2; ! float B[] = { -0.874f, -0.383f, 0.458f, 0.124f, -0.221f, -0.107f }; int ldb = 3; ! float B_expected[] = { 0.0397932f, 0.0338757f, -0.0183441f, 0.0203484f, -0.0362661f, -0.0175587f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1662)"); } }; *************** *** 41,55 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.748f, 0.548f, 0.245f, 0.761f }; int lda = 2; ! float B[] = { 0.349f, -0.552f, -0.682f, -0.71f, 0.475f, -0.59f }; int ldb = 3; ! float B_expected[] = { -0.04008f, -0.2917f, -1.00532f, -0.71f, 0.475f, -0.59f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1671)"); } }; --- 41,55 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.195f, -0.453f, -0.579f, 0.697f }; int lda = 2; ! float B[] = { 0.736f, 0.131f, 0.533f, 0.692f, -0.672f, -0.435f }; int ldb = 3; ! float B_expected[] = { -0.126757f, -0.130625f, -0.219017f, -0.2076f, 0.2016f, 0.1305f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1663)"); } }; *************** *** 65,79 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.788f, 0.617f, -0.998f, -0.97f }; int lda = 2; ! float B[] = { -0.4f, 0.773f, 0.074f, -0.388f, 0.825f, -0.608f }; int ldb = 3; ! float B_expected[] = { -0.3152f, 0.609124f, 0.058312f, 0.77556f, -1.5717f, 0.515908f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1672)"); } }; --- 65,79 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.53f, 0.787f, 0.889f, -0.379f }; int lda = 2; ! float B[] = { -0.355f, 0.002f, 0.266f, 0.972f, 0.712f, -0.353f }; int ldb = 3; ! float B_expected[] = { -0.056445f, 3.18e-04f, 0.042294f, 0.205195f, 0.080421f, -0.111078f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1664)"); } }; *************** *** 89,103 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.01f, 0.387f, -0.953f, -0.374f }; int lda = 2; ! float B[] = { 0.364f, 0.09f, 0.588f, -0.263f, 0.584f, 0.463f }; int ldb = 3; ! float B_expected[] = { 0.364f, 0.09f, 0.588f, -0.609892f, 0.49823f, -0.097364f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1673)"); } }; --- 89,103 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.198f, -0.673f, 0.792f, 0.781f }; int lda = 2; ! float B[] = { 0.901f, 0.719f, -0.339f, -0.36f, 0.539f, 0.192f }; int ldb = 3; ! float B_expected[] = { -0.2703f, -0.2157f, 0.1017f, -0.106078f, -0.332534f, 0.0229464f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1665)"); } }; *************** *** 113,127 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.586f, -0.426f, 0.765f, -0.239f }; int lda = 2; ! float B[] = { -0.673f, -0.724f, 0.217f, -0.672f, -0.378f, -0.005f }; int ldb = 2; ! float B_expected[] = { -0.159482f, 0.173036f, -0.641242f, 0.160608f, 0.217683f, 0.001195f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1674)"); } }; --- 113,127 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.522f, 0.851f, 0.586f, 0.196f }; int lda = 2; ! float B[] = { 0.335f, 0.617f, 0.118f, -0.143f, 0.677f, 0.456f }; int ldb = 2; ! float B_expected[] = { -0.0560076f, -0.0362796f, 0.0436182f, 0.0084084f, 0.0258534f, -0.0268128f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1666)"); } }; *************** *** 137,151 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.668f, 0.962f, 0.515f, 0.292f }; int lda = 2; ! float B[] = { -0.145f, -0.337f, 0.718f, -0.866f, -0.454f, -0.439f }; int ldb = 2; ! float B_expected[] = { -0.318555f, -0.337f, 0.27201f, -0.866f, -0.680085f, -0.439f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1675)"); } }; --- 137,151 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.006f, -0.613f, -0.966f, -0.758f }; int lda = 2; ! float B[] = { 0.64f, -0.723f, -0.765f, 0.801f, 0.376f, 0.91f }; int ldb = 2; ! float B_expected[] = { -0.401525f, 0.2169f, 0.46163f, -0.2403f, 0.150918f, -0.273f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1667)"); } }; *************** *** 161,175 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.125f, -0.676f, 0.181f, 0.741f }; int lda = 2; ! float B[] = { 0.354f, -0.366f, 0.455f, 0.134f, -0.564f, -0.303f }; int ldb = 2; ! float B_expected[] = { -0.04425f, -0.51051f, -0.056875f, -0.208286f, 0.0705f, 0.156741f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1676)"); } }; --- 161,175 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.738f, 0.913f, -0.227f, 0.787f }; int lda = 2; ! float B[] = { 0.194f, 0.988f, -0.274f, -0.652f, -0.281f, -0.359f }; int ldb = 2; ! float B_expected[] = { -0.0429516f, -0.286403f, 0.0606636f, 0.228986f, 0.0622134f, 0.161726f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1668)"); } }; *************** *** 185,199 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.162f, 0.542f, -0.839f, -0.935f }; int lda = 2; ! float B[] = { 0.216f, 0.766f, -0.228f, -0.097f, 0.205f, 0.875f }; int ldb = 2; ! float B_expected[] = { 0.216f, 0.883072f, -0.228f, -0.220576f, 0.205f, 0.98611f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1677)"); } }; --- 185,199 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.952f, 0.598f, 0.25f, -0.508f }; int lda = 2; ! float B[] = { 0.036f, 0.745f, -0.606f, 0.215f, 0.943f, -0.933f }; int ldb = 2; ! float B_expected[] = { -0.0108f, -0.229958f, 0.1818f, 0.0442164f, -0.2829f, 0.110726f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1669)"); } }; *************** *** 209,223 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.353f, -0.854f, -0.502f, 0.591f, -0.934f, -0.729f, 0.063f, 0.352f, 0.126f }; int lda = 3; ! float B[] = { 0.2f, -0.626f, -0.694f, -0.889f, -0.251f, -0.42f }; int ldb = 3; ! float B_expected[] = { -0.0706f, 0.413884f, 0.26851f, 0.313817f, 0.99364f, 0.576337f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1678)"); } }; --- 209,223 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.251f, 0.372f, -0.168f, 0.217f, -0.179f, 0.863f, -0.057f, 0.256f, 0.093f }; int lda = 3; ! float B[] = { -0.727f, -0.461f, 0.162f, 0.579f, -0.305f, -0.735f }; int ldb = 3; ! float B_expected[] = { -0.0547431f, 0.0563775f, 0.0781923f, 0.0435987f, -0.0809949f, 0.128653f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1670)"); } }; *************** *** 233,247 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.864f, -0.046f, -0.755f, 0.12f, 0.525f, 0.917f, 0.571f, -0.098f, -0.226f }; int lda = 3; ! float B[] = { -0.905f, -0.296f, -0.927f, -0.813f, 0.624f, -0.366f }; int ldb = 3; ! float B_expected[] = { -0.905f, -0.25437f, -0.515157f, -0.813f, 0.661398f, 0.820023f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1679)"); } }; --- 233,247 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.014f, 0.204f, 0.163f, 0.842f, -0.918f, -0.748f, -0.859f, -0.463f, 0.292f }; int lda = 3; ! float B[] = { -0.587f, -0.625f, -0.994f, 0.681f, -0.577f, -0.434f }; int ldb = 3; ! float B_expected[] = { 0.1761f, 0.223424f, 0.186654f, -0.2043f, 0.131423f, -0.0325797f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1671)"); } }; *************** *** 257,271 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.69f, -0.927f, -0.281f, -0.918f, -0.527f, -0.652f, -0.393f, -0.954f, 0.651f }; int lda = 3; ! float B[] = { -0.587f, 0.788f, -0.629f, -0.444f, 0.515f, 0.081f }; int ldb = 3; ! float B_expected[] = { -0.071157f, 0.18479f, -0.409479f, -0.198243f, -0.348679f, 0.052731f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1680)"); } }; --- 257,271 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.682f, -0.71f, 0.475f, -0.59f, -0.748f, 0.548f, 0.245f, 0.761f, -0.4f }; int lda = 3; ! float B[] = { 0.565f, 0.967f, -0.969f, 0.184f, 0.349f, -0.552f }; int ldb = 3; ! float B_expected[] = { 0.357979f, 0.438217f, -0.11628f, 0.139991f, 0.204337f, -0.06624f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1672)"); } }; *************** *** 281,295 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.082f, -0.077f, 0.811f, 0.852f, 0.224f, 0.443f, -0.509f, 0.171f, 0.986f }; int lda = 3; ! float B[] = { -0.982f, 0.388f, -0.493f, -0.497f, -0.605f, 0.433f }; int ldb = 3; ! float B_expected[] = { -0.400487f, 0.303697f, -0.493f, -1.23286f, -0.530957f, 0.433f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1681)"); } }; --- 281,295 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.617f, -0.998f, -0.97f, 0.364f, 0.09f, 0.588f, -0.263f, 0.584f, 0.463f }; int lda = 3; ! float B[] = { 0.773f, 0.074f, -0.388f, 0.825f, -0.608f, 0.788f }; int ldb = 3; ! float B_expected[] = { -0.270594f, 0.0457776f, 0.1164f, -0.118933f, 0.0443424f, -0.2364f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1673)"); } }; *************** *** 305,319 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.97f, -0.666f, 0.066f, -0.176f, 0.402f, 0.286f, -0.703f, 0.962f, 0.912f }; int lda = 3; ! float B[] = { -0.644f, -0.97f, 0.814f, -0.777f, 0.812f, 0.254f }; int ldb = 2; ! float B_expected[] = { -0.62468f, -0.9409f, 0.440572f, -0.141634f, 1.97634f, 0.166084f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1682)"); } }; --- 305,319 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.217f, -0.672f, -0.378f, -0.005f, -0.586f, -0.426f, 0.765f, -0.239f, -0.145f }; int lda = 3; ! float B[] = { 0.01f, 0.387f, -0.953f, -0.374f, -0.673f, -0.724f }; int ldb = 2; ! float B_expected[] = { -6.51e-04f, -0.0251937f, -0.167522f, -0.0651687f, -0.0999006f, -0.147126f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1674)"); } }; *************** *** 329,343 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.714f, 0.468f, 0.859f, -0.547f, 0.076f, 0.542f, 0.512f, -0.987f, -0.167f }; int lda = 3; ! float B[] = { -0.238f, -0.336f, 0.402f, 0.945f, -0.242f, -0.062f }; int ldb = 2; ! float B_expected[] = { -0.238f, -0.336f, 0.532186f, 1.12879f, -0.76063f, -1.16675f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1683)"); } }; --- 329,343 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.962f, 0.515f, 0.292f, 0.354f, -0.366f, 0.455f, 0.134f, -0.564f, -0.303f }; int lda = 3; ! float B[] = { -0.337f, 0.718f, -0.866f, -0.454f, -0.439f, -0.668f }; int ldb = 2; ! float B_expected[] = { 0.1011f, -0.2154f, 0.295589f, 0.0599484f, -0.0012798f, 0.0947196f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1675)"); } }; *************** *** 353,367 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.723f, 0.041f, 0.333f, -0.682f, 0.193f, 0.581f, 0.963f, -0.757f, 0.396f }; int lda = 3; ! float B[] = { 0.047f, -0.701f, -0.25f, -0.779f, 0.435f, 0.612f }; int ldb = 2; ! float B_expected[] = { 0.100624f, 0.67868f, 0.204485f, 0.205225f, 0.17226f, 0.242352f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1684)"); } }; --- 353,367 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.228f, -0.097f, 0.205f, 0.875f, -0.162f, 0.542f, -0.839f, -0.935f, 0.2f }; int lda = 3; ! float B[] = { -0.125f, -0.676f, 0.181f, 0.741f, 0.216f, 0.766f }; int ldb = 2; ! float B_expected[] = { -0.0165669f, -0.0717843f, -0.026325f, -0.088539f, -0.01296f, -0.04596f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1676)"); } }; *************** *** 377,391 **** int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.13f, 0.511f, -0.544f, 0.938f, -0.126f, -0.873f, 0.118f, -0.75f, 0.674f }; int lda = 3; ! float B[] = { -0.927f, -0.558f, -0.289f, -0.66f, 0.83f, 0.363f }; int ldb = 2; ! float B_expected[] = { -1.5262f, -1.09273f, -1.01359f, -0.976899f, 0.83f, 0.363f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1685)"); } }; --- 377,391 ---- int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.854f, -0.502f, 0.591f, -0.934f, -0.729f, 0.063f, 0.352f, 0.126f, -0.905f }; int lda = 3; ! float B[] = { -0.626f, -0.694f, -0.889f, -0.251f, -0.42f, -0.353f }; int ldb = 2; ! float B_expected[] = { 0.128383f, 0.232986f, 0.274638f, 0.0819717f, 0.126f, 0.1059f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1677)"); } }; *************** *** 402,415 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.625f, -0.123f, -0.48f, -0.088f }; int lda = 2; ! float B[] = { 0.376f, -0.46f, -0.813f, 0.419f, 0.792f, 0.226f }; int ldb = 3; ! float B_expected[] = { -0.0235f, 0.02875f, 0.0508125f, -0.008312f, -0.0013116f, 0.0080111f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1686)"); } }; --- 402,415 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.755f, 0.12f, 0.525f, 0.917f }; int lda = 2; ! float B[] = { -0.927f, -0.813f, 0.624f, -0.366f, -0.864f, -0.046f }; int ldb = 3; ! float B_expected[] = { 0.0699885f, 0.0613815f, -0.047112f, -0.0446862f, -0.0889848f, 0.0032698f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1678)"); } }; *************** *** 426,439 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.038f, -0.105f, -0.946f, 0.474f }; int lda = 2; ! float B[] = { -0.757f, 0.974f, -0.045f, -0.809f, 0.654f, 0.611f }; int ldb = 3; ! float B_expected[] = { -0.0757f, 0.0974f, -0.0045f, -0.0729515f, 0.055173f, 0.0615725f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1687)"); } }; --- 426,439 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.444f, 0.515f, 0.081f, -0.69f }; int lda = 2; ! float B[] = { 0.571f, -0.098f, -0.226f, -0.587f, 0.788f, -0.629f }; int ldb = 3; ! float B_expected[] = { 0.0571f, -0.0098f, -0.0226f, -0.0292935f, 0.073753f, -0.074539f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1679)"); } }; *************** *** 450,463 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.328f, 0.713f, 0.781f, 0.084f }; int lda = 2; ! float B[] = { -0.097f, 0.442f, -0.563f, 0.065f, -0.18f, 0.63f }; int ldb = 3; ! float B_expected[] = { 0.0082581f, -0.0285556f, 0.0676694f, 5.46e-04f, -0.001512f, 0.005292f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1688)"); } }; --- 450,463 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.954f, 0.651f, -0.982f, 0.388f }; int lda = 2; ! float B[] = { -0.927f, -0.281f, -0.918f, -0.527f, -0.652f, -0.393f }; int ldb = 3; ! float B_expected[] = { 0.140187f, 0.0908338f, 0.12617f, -0.0204476f, -0.0252976f, -0.0152484f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1680)"); } }; *************** *** 474,487 **** int N = 3; float alpha = 0.1f; ! float A[] = { 0.261f, -0.659f, -0.536f, 0.694f }; int lda = 2; ! float B[] = { -0.498f, 0.692f, 0.125f, 0.706f, -0.118f, -0.907f }; int ldb = 3; ! float B_expected[] = { -0.0876416f, 0.0755248f, 0.0611152f, 0.0706f, -0.0118f, -0.0907f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1689)"); } }; --- 474,487 ---- int N = 3; float alpha = 0.1f; ! float A[] = { 0.811f, 0.852f, 0.224f, 0.443f }; int lda = 2; ! float B[] = { -0.493f, -0.497f, -0.605f, 0.433f, -0.082f, -0.077f }; int ldb = 3; ! float B_expected[] = { -0.0396008f, -0.0515368f, -0.0622248f, 0.0433f, -0.0082f, -0.0077f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1681)"); } }; *************** *** 498,511 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.669f, 0.416f, 0.761f, -0.359f }; int lda = 2; ! float B[] = { -0.305f, -0.675f, -0.442f, 0.566f, 0.064f, 0.962f }; int ldb = 2; ! float B_expected[] = { 0.0204045f, 0.001022f, 0.0295698f, -0.0539556f, -0.0042816f, -0.0296654f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1690)"); } }; --- 498,511 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.777f, 0.812f, 0.254f, 0.97f }; int lda = 2; ! float B[] = { -0.509f, 0.171f, 0.986f, -0.644f, -0.97f, 0.814f }; int ldb = 2; ! float B_expected[] = { 0.0395493f, 0.0036584f, -0.0766122f, -0.0374236f, 0.075369f, 0.05432f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1682)"); } }; *************** *** 522,535 **** int N = 3; float alpha = 0.1f; ! float A[] = { 0.565f, 0.386f, 0.643f, -0.028f }; int lda = 2; ! float B[] = { 0.863f, -0.241f, 0.766f, 0.656f, -0.977f, 0.274f }; int ldb = 2; ! float B_expected[] = { 0.0863f, 0.0313909f, 0.0766f, 0.114854f, -0.0977f, -0.0354211f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1691)"); } }; --- 522,535 ---- int N = 3; float alpha = 0.1f; ! float A[] = { 0.962f, 0.912f, -0.238f, -0.336f }; int lda = 2; ! float B[] = { -0.666f, 0.066f, -0.176f, 0.402f, 0.286f, -0.703f }; int ldb = 2; ! float B_expected[] = { -0.0666f, 0.0224508f, -0.0176f, 0.0443888f, 0.0286f, -0.0771068f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1683)"); } }; *************** *** 546,559 **** int N = 3; float alpha = 0.1f; ! float A[] = { 0.116f, 0.534f, 0.043f, 0.73f }; int lda = 2; ! float B[] = { -0.758f, -0.63f, -0.043f, 0.666f, -0.088f, 0.382f }; int ldb = 2; ! float B_expected[] = { -0.0424348f, -0.04599f, 0.0350656f, 0.048618f, 0.019378f, 0.027886f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1692)"); } }; --- 546,559 ---- int N = 3; float alpha = 0.1f; ! float A[] = { 0.859f, -0.547f, 0.076f, 0.542f }; int lda = 2; ! float B[] = { 0.402f, 0.945f, -0.242f, -0.062f, 0.714f, 0.468f }; int ldb = 2; ! float B_expected[] = { -0.0171597f, 0.051219f, -0.0173964f, -0.0033604f, 0.035733f, 0.0253656f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1684)"); } }; *************** *** 570,583 **** int N = 3; float alpha = 0.1f; ! float A[] = { 0.48f, -0.63f, -0.786f, -0.437f }; int lda = 2; ! float B[] = { 0.945f, 0.528f, -0.855f, -0.587f, 0.062f, 0.372f }; int ldb = 2; ! float B_expected[] = { 0.061236f, 0.0528f, -0.048519f, -0.0587f, -0.017236f, 0.0372f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1693)"); } }; --- 570,583 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.779f, 0.435f, 0.612f, -0.723f }; int lda = 2; ! float B[] = { 0.512f, -0.987f, -0.167f, 0.047f, -0.701f, -0.25f }; int ldb = 2; ! float B_expected[] = { 0.0082655f, -0.0987f, -0.0146555f, 0.0047f, -0.080975f, -0.025f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1685)"); } }; *************** *** 594,607 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.822f, -0.068f, 0.119f, -0.244f, -0.05f, 0.685f, 0.752f, -0.059f, -0.935f }; int lda = 3; ! float B[] = { -0.431f, -0.753f, -0.319f, 0.164f, 0.979f, 0.885f }; int ldb = 3; ! float B_expected[] = { 0.0367525f, -0.0180865f, 0.0298265f, -0.0096065f, 0.0557275f, -0.0827475f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1694)"); } }; --- 594,607 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.757f, 0.396f, -0.927f, -0.558f, -0.289f, -0.66f, 0.83f, 0.363f, -0.13f }; int lda = 3; ! float B[] = { 0.041f, 0.333f, -0.682f, 0.193f, 0.581f, 0.963f }; int ldb = 3; ! float B_expected[] = { 0.0733045f, 0.0353883f, 0.008866f, -0.0808726f, -0.0803489f, -0.012519f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1686)"); } }; *************** *** 618,631 **** int N = 3; float alpha = 0.1f; ! float A[] = { 0.97f, -0.408f, 0.174f, -0.308f, 0.997f, -0.484f, 0.322f, -0.183f, 0.849f }; int lda = 3; ! float B[] = { -0.571f, 0.696f, -0.256f, -0.178f, 0.098f, 0.004f }; int ldb = 3; ! float B_expected[] = { -0.0899512f, 0.0819904f, -0.0256f, -0.0217288f, 0.0096064f, 4.0e-04f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1695)"); } }; --- 618,631 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.75f, 0.674f, -0.576f, 0.376f, -0.46f, -0.813f, 0.419f, 0.792f, 0.226f }; int lda = 3; ! float B[] = { 0.511f, -0.544f, 0.938f, -0.126f, -0.873f, 0.118f }; int ldb = 3; ! float B_expected[] = { -0.0395944f, -0.130659f, 0.0938f, -0.078237f, -0.0968934f, 0.0118f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1687)"); } }; *************** *** 642,655 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.831f, 0.73f, 0.407f, 0.721f, 0.086f, -0.294f, 0.941f, -0.656f, -0.066f }; int lda = 3; ! float B[] = { -0.051f, -0.343f, -0.98f, 0.722f, -0.372f, 0.466f }; int ldb = 3; ! float B_expected[] = { 0.0042381f, -0.0066269f, 0.0241697f, -0.0599982f, 0.048857f, 0.0892678f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1696)"); } }; --- 642,655 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.045f, -0.809f, 0.654f, 0.611f, -0.038f, -0.105f, -0.946f, 0.474f, -0.097f }; int lda = 3; ! float B[] = { -0.625f, -0.123f, -0.48f, -0.088f, -0.757f, 0.974f }; int ldb = 3; ! float B_expected[] = { 0.0028125f, -0.0377201f, 0.0579508f, 3.96e-04f, -0.0025002f, -0.0370048f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1688)"); } }; *************** *** 666,679 **** int N = 3; float alpha = 0.1f; ! float A[] = { 0.472f, 0.137f, -0.341f, 0.386f, -0.578f, 0.863f, -0.415f, -0.547f, -0.023f }; int lda = 3; ! float B[] = { 0.582f, 0.141f, -0.306f, -0.047f, -0.162f, -0.784f }; int ldb = 3; ! float B_expected[] = { 0.0582f, 0.0365652f, -0.0624657f, -0.0047f, -0.0180142f, -0.0675881f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1697)"); } }; --- 666,679 ---- int N = 3; float alpha = 0.1f; ! float A[] = { 0.713f, 0.781f, 0.084f, -0.498f, 0.692f, 0.125f, 0.706f, -0.118f, -0.907f }; int lda = 3; ! float B[] = { 0.442f, -0.563f, 0.065f, -0.18f, 0.63f, -0.328f }; int ldb = 3; ! float B_expected[] = { 0.0442f, -0.0783116f, 0.0443486f, -0.018f, 0.071964f, -0.052942f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1689)"); } }; *************** *** 690,703 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.775f, 0.762f, -0.038f, -0.8f, 0.626f, -0.701f, 0.639f, 0.239f, 0.34f }; int lda = 3; ! float B[] = { 0.42f, 0.917f, 0.485f, 0.844f, -0.832f, 0.179f }; int ldb = 2; ! float B_expected[] = { -0.124515f, -0.127149f, 0.0104762f, 0.0571125f, -0.028288f, 0.006086f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1698)"); } }; --- 690,703 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.442f, 0.566f, 0.064f, 0.962f, -0.669f, 0.416f, 0.761f, -0.359f, 0.863f }; int lda = 3; ! float B[] = { 0.261f, -0.659f, -0.536f, 0.694f, -0.305f, -0.675f }; int ldb = 2; ! float B_expected[] = { -0.0863099f, 0.0445231f, 0.0468079f, -0.0221961f, -0.0263215f, -0.0582525f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1690)"); } }; *************** *** 714,727 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.675f, 0.283f, 0.785f, -0.0f, -0.592f, -0.661f, 0.149f, -0.129f, 0.149f }; int lda = 3; ! float B[] = { 0.964f, -0.575f, -0.215f, 0.953f, 0.527f, -0.418f }; int ldb = 2; ! float B_expected[] = { 0.104252f, -0.0637282f, -0.0282983f, 0.100692f, 0.0527f, -0.0418f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1699)"); } }; --- 714,727 ---- int N = 3; float alpha = 0.1f; ! float A[] = { 0.386f, 0.643f, -0.028f, -0.758f, -0.63f, -0.043f, 0.666f, -0.088f, 0.382f }; int lda = 3; ! float B[] = { -0.241f, 0.766f, 0.656f, -0.977f, 0.274f, 0.565f }; int ldb = 2; ! float B_expected[] = { -0.0555764f, 0.188286f, 0.0631888f, -0.102672f, 0.0274f, 0.0565f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1691)"); } }; *************** *** 738,751 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.225f, -0.943f, 0.839f, 0.759f, 0.752f, 0.807f, 0.288f, -0.276f, 0.434f }; int lda = 3; ! float B[] = { -0.234f, 0.275f, 0.658f, -0.423f, -0.807f, -0.683f }; int ldb = 2; ! float B_expected[] = { 0.005265f, -0.0061875f, 0.0715478f, -0.0577421f, -0.0015558f, -0.0407058f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1700)"); } }; --- 738,751 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.855f, -0.587f, 0.062f, 0.372f, 0.48f, -0.63f, -0.786f, -0.437f, -0.431f }; int lda = 3; ! float B[] = { 0.116f, 0.534f, 0.043f, 0.73f, 0.945f, 0.528f }; int ldb = 2; ! float B_expected[] = { -0.009918f, -0.045657f, -0.0047452f, 0.0036942f, -0.0427193f, -0.065436f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1692)"); } }; *************** *** 762,775 **** int N = 3; float alpha = 0.1f; ! float A[] = { -0.043f, -0.983f, 0.479f, -0.136f, 0.048f, 0.745f, -0.408f, -0.731f, -0.953f }; int lda = 3; ! float B[] = { 0.917f, 0.682f, -0.32f, 0.557f, -0.302f, 0.989f }; int ldb = 2; ! float B_expected[] = { 0.0917f, 0.0682f, -0.122141f, -0.0113406f, -0.0101157f, 0.173064f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1701)"); } }; --- 762,775 ---- int N = 3; float alpha = 0.1f; ! float A[] = { -0.068f, 0.119f, -0.244f, -0.05f, 0.685f, 0.752f, -0.059f, -0.935f, -0.571f }; int lda = 3; ! float B[] = { -0.753f, -0.319f, 0.164f, 0.979f, 0.885f, -0.822f }; int ldb = 2; ! float B_expected[] = { -0.0753f, -0.0319f, 0.0074393f, 0.0941039f, 0.119206f, -7.956e-04f }; cblas_strmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strmm(case 1693)"); } }; *************** *** 785,799 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.561, -0.114, -0.148, 0.488 }; int lda = 2; ! double B[] = { 0.684, 0.38, 0.419, -0.361, 0.378, -0.423 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1702)"); } }; --- 785,799 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.174, -0.308, 0.997, -0.484 }; int lda = 2; ! double B[] = { -0.256, -0.178, 0.098, 0.004, 0.97, -0.408 }; int ldb = 3; ! double B_expected[] = { 0.0137328, 0.0989196, -0.0428148, 5.808e-04, 0.140844, -0.0592416 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1694)"); } }; *************** *** 809,823 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.378, 0.607, 0.41, 0.418 }; int lda = 2; ! double B[] = { 0.146, -0.688, -0.953, -0.983, 0.237, 0.128 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1703)"); } }; --- 809,823 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.722, -0.372, 0.466, -0.831 }; int lda = 2; ! double B[] = { 0.322, -0.183, 0.849, -0.051, -0.343, -0.98 }; int ldb = 3; ! double B_expected[] = { -0.1022916, 0.0166212, -0.364068, 0.0153, 0.1029, 0.294 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1695)"); } }; *************** *** 833,847 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.31, 0.277, -0.587, 0.885 }; int lda = 2; ! double B[] = { -0.221, -0.831, -0.319, -0.547, -0.577, 0.295 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1704)"); } }; --- 833,847 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.656, -0.066, 0.582, 0.141 }; int lda = 2; ! double B[] = { 0.73, 0.407, 0.721, 0.086, -0.294, 0.941 }; int ldb = 3; ! double B_expected[] = { 0.143664, 0.0800976, 0.1418928, -0.1310958, -0.058626, -0.1656909 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1696)"); } }; *************** *** 857,871 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.577, 0.861, -0.439, -0.916 }; int lda = 2; ! double B[] = { -0.933, -0.582, 0.528, 0.268, -0.804, 0.62 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1705)"); } }; --- 857,871 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.341, 0.386, -0.578, 0.863 }; int lda = 2; ! double B[] = { -0.306, -0.047, -0.162, -0.784, 0.472, 0.137 }; int ldb = 3; ! double B_expected[] = { 0.0918, 0.0141, 0.0486, 0.1821396, -0.1497498, -0.0691908 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1697)"); } }; *************** *** 881,895 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.824, -0.119, -0.399, -0.653 }; int lda = 2; ! double B[] = { 0.452, -0.168, 0.256, 0.554, 0.342, 0.318 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1706)"); } }; --- 881,895 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.844, -0.832, 0.179, -0.775 }; int lda = 2; ! double B[] = { -0.415, -0.547, -0.023, 0.42, 0.917, 0.485 }; int ldb = 2; ! double B_expected[] = { 0.1344519, -0.1271775, -0.0167304, 0.09765, -0.2582289, 0.1127625 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1698)"); } }; *************** *** 905,919 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.299, 0.837, -0.03, 0.552 }; int lda = 2; ! double B[] = { -0.83, -0.82, -0.362, -0.252, -0.062, -0.942 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1707)"); } }; --- 905,919 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.239, 0.34, 0.964, -0.575 }; int lda = 2; ! double B[] = { 0.762, -0.038, -0.8, 0.626, -0.701, 0.639 }; int ldb = 2; ! double B_expected[] = { -0.2176104, 0.0114, 0.0589608, -0.1878, 0.0255012, -0.1917 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1699)"); } }; *************** *** 929,943 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.545, -0.107, 0.096, 0.183 }; int lda = 2; ! double B[] = { -0.43, 0.841, 0.035, 0.7, 0.637, 0.095 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1708)"); } }; --- 929,943 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.785, -0.0, -0.592, -0.661 }; int lda = 2; ! double B[] = { -0.215, 0.953, 0.527, -0.418, -0.675, 0.283 }; int ldb = 2; ! double B_expected[] = { 0.0506325, 0.1889799, -0.1241085, -0.0828894, 0.1589625, 0.0561189 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1700)"); } }; *************** *** 953,967 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.626, 0.123, -0.959, 0.971 }; int lda = 2; ! double B[] = { 0.185, -0.218, -0.074, 0.49, 0.802, -0.454 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1709)"); } }; --- 953,967 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.423, -0.807, -0.683, -0.225 }; int lda = 2; ! double B[] = { 0.149, -0.129, 0.149, -0.234, 0.275, 0.658 }; int ldb = 2; ! double B_expected[] = { -0.0447, 0.0747729, -0.0447, 0.1062729, -0.0825, -0.1308225 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1701)"); } }; *************** *** 977,991 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.131, 0.048, 0.148, 0.834, -0.98, -0.009, -0.727, 0.241, 0.276 }; int lda = 3; ! double B[] = { 0.75, -0.664, -0.136, -0.793, -0.742, 0.126 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1710)"); } }; --- 977,991 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.276, 0.434, 0.917, 0.682, -0.32, 0.557, -0.302, 0.989, -0.043 }; int lda = 3; ! double B[] = { -0.943, 0.839, 0.759, 0.752, 0.807, 0.288 }; int ldb = 3; ! double B_expected[] = { -0.0780804, 0.2033226, 0.1290135, 0.0622656, -0.0204384, -0.3380097 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1702)"); } }; *************** *** 1001,1015 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.431, -0.387, 0.427, 0.495, 0.282, 0.158, -0.335, 0.535, -0.978 }; int lda = 3; ! double B[] = { 0.518, -0.489, 0.899, -0.375, 0.376, -0.831 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1711)"); } }; --- 1001,1015 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.731, -0.953, -0.666, 0.684, 0.38, 0.419, -0.361, 0.378, -0.423 }; int lda = 3; ! double B[] = { -0.983, 0.479, -0.136, 0.048, 0.745, -0.408 }; int ldb = 3; ! double B_expected[] = { 0.2949, -0.4247397, -0.2158137, -0.0144, -0.2097768, 0.0383439 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1703)"); } }; *************** *** 1025,1039 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.669, -0.976, -0.2, 0.661, -0.975, -0.965, -0.861, -0.779, -0.73 }; int lda = 3; ! double B[] = { 0.31, 0.023, -0.853, 0.632, -0.174, 0.608 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1712)"); } }; --- 1025,1039 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.953, -0.983, 0.237, 0.128, -0.378, 0.607, 0.41, 0.418, -0.221 }; int lda = 3; ! double B[] = { -0.561, -0.114, -0.148, 0.488, 0.146, -0.688 }; int ldb = 3; ! double B_expected[] = { -0.1378083, 0.0056316, -0.0098124, 0.2185368, 0.1028316, -0.0456144 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1704)"); } }; *************** *** 1049,1063 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.153, -0.408, -0.127, -0.634, -0.384, -0.815, 0.051, -0.096, 0.476 }; int lda = 3; ! double B[] = { 0.343, -0.665, -0.348, 0.748, 0.893, 0.91 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1713)"); } }; --- 1049,1063 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.277, -0.587, 0.885, -0.933, -0.582, 0.528, 0.268, -0.804, 0.62 }; int lda = 3; ! double B[] = { -0.831, -0.319, -0.547, -0.577, 0.295, -0.31 }; int ldb = 3; ! double B_expected[] = { 0.2039907, -0.0362364, 0.1641, 0.2805945, -0.163272, 0.093 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1705)"); } }; *************** *** 1073,1087 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.918, -0.19, 0.829, 0.942, 0.885, 0.087, 0.321, 0.67, -0.475 }; int lda = 3; ! double B[] = { 0.377, 0.931, 0.291, -0.603, -0.617, 0.402 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1714)"); } }; --- 1073,1087 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.256, 0.554, 0.342, 0.318, -0.824, -0.119, -0.399, -0.653, -0.83 }; int lda = 3; ! double B[] = { -0.577, 0.861, -0.439, -0.916, 0.452, -0.168 }; int ldb = 2; ! double B_expected[] = { 0.0443136, -0.0661248, -0.053475, -0.3085746, -0.042519, -0.1182147 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1706)"); } }; *************** *** 1097,1111 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.598, -0.232, -0.64, 0.595, 0.642, -0.921, -0.679, -0.846, -0.921 }; int lda = 3; ! double B[] = { 0.032, -0.036, -0.278, -0.83, 0.922, -0.701 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1715)"); } }; --- 1097,1111 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.837, -0.03, 0.552, -0.43, 0.841, 0.035, 0.7, 0.637, 0.095 }; int lda = 3; ! double B[] = { -0.82, -0.362, -0.252, -0.062, -0.942, -0.299 }; int ldb = 2; ! double B_expected[] = { 0.246, 0.1086, -0.03018, -0.028098, 0.5029572, 0.1775682 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1707)"); } }; *************** *** 1121,1135 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.341, -0.858, -0.559, 0.499, -0.114, 0.57, 0.847, -0.612, 0.593 }; int lda = 3; ! double B[] = { 0.672, 0.292, 0.752, 0.842, 0.625, 0.967 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1716)"); } }; --- 1121,1135 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { -0.074, 0.49, 0.802, -0.454, 0.626, 0.123, -0.959, 0.971, 0.75 }; int lda = 3; ! double B[] = { -0.545, -0.107, 0.096, 0.183, 0.185, -0.218 }; int ldb = 2; ! double B_expected[] = { -0.070722, 0.0231744, -0.0248553, -0.0263232, -0.041625, 0.04905 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1708)"); } }; *************** *** 1145,1159 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.958, 0.823, -0.181, 0.141, 0.932, 0.097, -0.636, 0.844, 0.205 }; int lda = 3; ! double B[] = { 0.113, -0.658, 0.703, -0.023, -0.384, 0.439 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1717)"); } }; --- 1145,1159 ---- int M = 2; int N = 3; ! double alpha = -0.3; ! double A[] = { 0.048, 0.148, 0.834, -0.98, -0.009, -0.727, 0.241, 0.276, 0.518 }; int lda = 3; ! double B[] = { -0.664, -0.136, -0.793, -0.742, 0.126, -0.131 }; int ldb = 2; ! double B_expected[] = { 0.202884, 0.106521, 0.2653806, 0.1940289, -0.0378, 0.0393 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1709)"); } }; *************** *** 1169,1183 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.675, -0.468, -0.564, 0.71 }; int lda = 2; ! double B[] = { -0.401, -0.823, 0.342, -0.384, 0.344, 0.18 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1718)"); } }; --- 1169,1183 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.427, 0.495, 0.282, 0.158 }; int lda = 2; ! double B[] = { 0.899, -0.375, 0.376, -0.831, 0.431, -0.387 }; int ldb = 3; ! double B_expected[] = { 0.0383873, -0.0160125, 0.0160552, 0.0313707, -0.0117527, 0.0124974 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1710)"); } }; *************** *** 1193,1207 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.932, -0.388, 0.432, -0.167 }; int lda = 2; ! double B[] = { -0.624, 0.023, 0.065, 0.678, 0.044, -0.472 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1719)"); } }; --- 1193,1207 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.632, -0.174, 0.608, -0.669 }; int lda = 2; ! double B[] = { -0.335, 0.535, -0.978, 0.31, 0.023, -0.853 }; int ldb = 3; ! double B_expected[] = { -0.0335, 0.0535, -0.0978, 0.036829, -0.007009, -0.0682828 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1711)"); } }; *************** *** 1217,1231 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.738, 0.649, -0.171, -0.462 }; int lda = 2; ! double B[] = { -0.277, -0.519, -0.501, -0.024, -0.767, -0.591 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1720)"); } }; --- 1217,1231 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.779, -0.73, 0.343, -0.665 }; int lda = 2; ! double B[] = { -0.976, -0.2, 0.661, -0.975, -0.965, -0.861 }; int ldb = 3; ! double B_expected[] = { 0.0425879, -0.0175195, -0.0810242, 0.0648375, 0.0641725, 0.0572565 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1712)"); } }; *************** *** 1241,1255 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.17, -0.184, -0.243, 0.907 }; int lda = 2; ! double B[] = { 0.593, 0.131, -0.317, -0.254, -0.948, 0.002 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1721)"); } }; --- 1241,1255 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.127, -0.634, -0.384, -0.815 }; int lda = 2; ! double B[] = { -0.348, 0.748, 0.893, 0.91, 0.153, -0.408 }; int ldb = 3; ! double B_expected[] = { -0.069744, 0.0689248, 0.1049672, 0.091, 0.0153, -0.0408 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1713)"); } }; *************** *** 1265,1279 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.06, -0.838, -0.455, -0.715 }; int lda = 2; ! double B[] = { -0.423, 0.665, -0.023, -0.872, -0.313, -0.698 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1722)"); } }; --- 1265,1279 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.603, -0.617, 0.402, -0.918 }; int lda = 2; ! double B[] = { 0.051, -0.096, 0.476, 0.377, 0.931, 0.291 }; int ldb = 2; ! double B_expected[] = { -0.0030753, 0.010863, -0.0287028, -0.0154734, -0.0561393, 0.0107124 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1714)"); } }; *************** *** 1289,1303 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.506, 0.792, 0.338, -0.155 }; int lda = 2; ! double B[] = { -0.257, -0.19, 0.201, 0.685, 0.663, 0.302 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1723)"); } }; --- 1289,1303 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.67, -0.475, 0.032, -0.036 }; int lda = 2; ! double B[] = { -0.19, 0.829, 0.942, 0.885, 0.087, 0.321 }; int ldb = 2; ! double B_expected[] = { -0.019, 0.082292, 0.0942, 0.0915144, 0.0087, 0.0323784 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1715)"); } }; *************** *** 1313,1327 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.739, -0.996, 0.182, 0.626 }; int lda = 2; ! double B[] = { 0.009, 0.485, -0.633, -0.08, -0.579, 0.223 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1724)"); } }; --- 1313,1327 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.64, 0.595, 0.642, -0.921 }; int lda = 2; ! double B[] = { -0.278, -0.83, 0.922, -0.701, -0.598, -0.232 }; int ldb = 2; ! double B_expected[] = { -0.031593, 0.076443, -0.1007175, 0.0645621, 0.024468, 0.0213672 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1716)"); } }; *************** *** 1337,1351 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.777, 0.723, 0.378, 0.98 }; int lda = 2; ! double B[] = { 0.291, -0.267, -0.076, 0.103, -0.021, -0.866 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1725)"); } }; --- 1337,1351 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.842, 0.625, 0.967, 0.341 }; int lda = 2; ! double B[] = { -0.679, -0.846, -0.921, 0.672, 0.292, 0.752 }; int ldb = 2; ! double B_expected[] = { -0.120775, -0.0846, -0.0501, 0.0672, 0.0762, 0.0752 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1717)"); } }; *************** *** 1361,1375 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.771, 0.469, 0.822, -0.619, 0.953, -0.706, 0.318, 0.559, -0.68 }; int lda = 3; ! double B[] = { -0.32, 0.362, 0.719, -0.661, -0.504, 0.595 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1726)"); } }; --- 1361,1375 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.612, 0.593, 0.113, -0.658, 0.703, -0.023, -0.384, 0.439, 0.958 }; int lda = 3; ! double B[] = { -0.858, -0.559, 0.499, -0.114, 0.57, 0.847 }; int ldb = 3; ! double B_expected[] = { 0.0249996, -0.0404454, 0.0478042, 0.0503489, 0.0381229, 0.0811426 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1718)"); } }; *************** *** 1385,1399 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.073, -0.501, -0.561, -0.229, -0.533, -0.138, 0.924, -0.164, -0.023 }; int lda = 3; ! double B[] = { -0.208, 0.49, 0.827, 0.641, -0.884, -0.624 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1727)"); } }; --- 1385,1399 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.844, 0.205, -0.692, -0.401, -0.823, 0.342, -0.384, 0.344, 0.18 }; int lda = 3; ! double B[] = { 0.823, -0.181, 0.141, 0.932, 0.097, -0.636 }; int ldb = 3; ! double B_expected[] = { 0.0688323, -0.0132778, 0.0141, 0.1391997, -0.0120512, -0.0636 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1719)"); } }; *************** *** 1409,1423 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.33, -0.649, -0.43, -0.266, 0.787, 0.449, 0.435, -0.774, -0.447 }; int lda = 3; ! double B[] = { -0.687, -0.459, 0.189, 0.762, -0.039, 0.047 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1728)"); } }; --- 1409,1423 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.065, 0.678, 0.044, -0.472, 0.932, -0.388, 0.432, -0.167, -0.277 }; int lda = 3; ! double B[] = { 0.675, -0.468, -0.564, 0.71, -0.624, 0.023 }; int ldb = 3; ! double B_expected[] = { 0.0043875, -0.0754776, 0.0525984, 0.004615, -0.0916688, 0.0404557 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1720)"); } }; *************** *** 1433,1447 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { 0.981, 0.242, 0.581, 0.064, 0.792, -0.529, 0.461, 0.224, -0.419 }; int lda = 3; ! double B[] = { 0.285, 0.274, -0.912, 0.601, 0.24, 0.06 }; int ldb = 3; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1729)"); } }; --- 1433,1447 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.649, -0.171, -0.462, 0.593, 0.131, -0.317, -0.254, -0.948, 0.002 }; int lda = 3; ! double B[] = { -0.519, -0.501, -0.024, -0.767, -0.591, -0.738 }; int ldb = 3; ! double B_expected[] = { -0.0519, -0.0808767, 0.0582774, -0.0767, -0.1045831, 0.0017086 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1721)"); } }; *************** *** 1457,1471 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.582, 0.269, -0.587, 0.68, -0.59, -0.936, 0.236, -0.728, -0.434 }; int lda = 3; ! double B[] = { 0.113, 0.468, 0.943, 0.48, 0.215, -0.525 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1730)"); } }; --- 1457,1471 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.023, -0.872, -0.313, -0.698, 0.06, -0.838, -0.455, -0.715, -0.257 }; int lda = 3; ! double B[] = { -0.17, -0.184, -0.243, 0.907, -0.423, 0.665 }; int ldb = 2; ! double B_expected[] = { 0.0365989, -0.0931429, 0.0287865, -0.0421055, 0.0108711, -0.0170905 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1722)"); } }; *************** *** 1481,1495 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.344, -0.938, 0.556, -0.678, -0.612, -0.519, -0.578, -0.848, 0.699 }; int lda = 3; ! double B[] = { 0.915, -0.118, 0.538, -0.186, -0.413, -0.216 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1731)"); } }; --- 1481,1495 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.792, 0.338, -0.155, 0.009, 0.485, -0.633, -0.08, -0.579, 0.223 }; int lda = 3; ! double B[] = { -0.19, 0.201, 0.685, 0.663, 0.302, -0.506 }; int ldb = 2; ! double B_expected[] = { -0.0207995, 0.0247447, 0.0510142, 0.0955974, 0.0302, -0.0506 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1723)"); } }; *************** *** 1505,1519 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.843, 0.54, -0.892, -0.296, 0.786, 0.136, 0.731, -0.418, -0.118 }; int lda = 3; ! double B[] = { -0.775, 0.5, -0.399, -0.709, 0.779, 0.774 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1732)"); } }; --- 1505,1519 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.076, 0.103, -0.021, -0.866, 0.777, 0.723, 0.378, 0.98, -0.32 }; int lda = 3; ! double B[] = { 0.739, -0.996, 0.182, 0.626, 0.291, -0.267 }; int ldb = 2; ! double B_expected[] = { -0.0056164, 0.0075696, 0.0217531, 0.0383814, 0.0022947, 0.0558954 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1724)"); } }; *************** *** 1529,1543 **** int M = 2; int N = 3; ! double alpha = 0; ! double A[] = { -0.765, 0.233, 0.318, 0.547, -0.469, 0.023, -0.867, 0.687, -0.912 }; int lda = 3; ! double B[] = { 0.019, -0.145, 0.472, 0.333, 0.527, -0.224 }; int ldb = 2; ! double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1733)"); } }; --- 1529,1543 ---- int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.469, 0.822, -0.619, 0.953, -0.706, 0.318, 0.559, -0.68, -0.208 }; int lda = 3; ! double B[] = { 0.362, 0.719, -0.661, -0.504, 0.595, -0.771 }; int ldb = 2; ! double B_expected[] = { 0.0362, 0.0719, -0.0363436, 0.0087018, 0.0160724, -0.1376333 }; cblas_dtrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrmm(case 1725)"); } }; *************** *** 1553,1568 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.852f, -0.409f, 0.871f, -0.854f, -0.493f, 0.444f, 0.973f, 0.027f }; int lda = 2; ! float B[] = { -0.561f, 0.132f, 0.689f, 0.653f, -0.758f, -0.109f, -0.596f, 0.395f, -0.561f, 0.378f, 0.21f, 0.51f }; int ldb = 3; ! float B_expected[] = { -0.0970014f, 0.0350174f, 0.0029825f, -0.048577f, -0.066776f, 0.121969f, -0.0368243f, -0.0590573f, -0.0352647f, -0.0556059f, -0.05019f, 0.019056f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1734) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1734) imag"); }; }; --- 1553,1568 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { -0.023f, 0.762f, -0.687f, -0.039f, -0.459f, 0.047f, 0.189f, 0.33f }; int lda = 2; ! float B[] = { 0.827f, -0.561f, 0.641f, -0.229f, -0.884f, -0.533f, -0.624f, -0.138f, 0.073f, 0.924f, -0.501f, -0.164f }; int ldb = 3; ! float B_expected[] = { -0.831767f, -0.762219f, -0.14564f, 0.143926f, -0.764269f, 0.529142f, 0.072396f, 0.232002f, 0.291123f, -0.198726f, 0.040569f, 0.196326f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1726) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1726) imag"); }; }; *************** *** 1578,1593 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.349f, 0.0f, -0.462f, 0.91f, -0.693f, 0.587f, -0.617f, 0.112f }; int lda = 2; ! float B[] = { 0.842f, -0.473f, 0.825f, 0.866f, 0.986f, 0.686f, 0.346f, 0.299f, -0.659f, 0.009f, 0.007f, -0.478f }; int ldb = 3; ! float B_expected[] = { 0.0296278f, 0.0410058f, -0.0262152f, 0.112127f, -0.0913206f, 0.141775f, -0.0299f, 0.0346f, -0.0009f, -0.0659f, 0.0478f, 0.0007f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1735) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1735) imag"); }; }; --- 1578,1593 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.24f, 0.581f, 0.06f, 0.064f, 0.981f, 0.792f, 0.242f, -0.529f }; int lda = 2; ! float B[] = { -0.649f, -0.774f, -0.43f, -0.447f, -0.266f, 0.285f, 0.787f, 0.274f, 0.449f, -0.912f, 0.435f, 0.601f }; int ldb = 3; ! float B_expected[] = { 0.619316f, 0.707192f, 0.344692f, 0.472984f, 0.278364f, -0.3489f, -0.787f, -0.274f, -0.449f, 0.912f, -0.435f, -0.601f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1727) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1727) imag"); }; }; *************** *** 1603,1618 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.661f, -0.823f, 0.28f, 0.171f, 0.267f, 0.66f, 0.844f, 0.472f }; int lda = 2; ! float B[] = { -0.256f, -0.518f, -0.933f, 0.066f, -0.513f, -0.286f, 0.109f, 0.372f, -0.183f, 0.482f, 0.362f, -0.436f }; int ldb = 3; ! float B_expected[] = { 0.013171f, -0.059553f, -0.0811485f, -0.0562395f, -0.0233153f, -0.0574471f, -0.005815f, 0.018994f, 0.0277726f, -0.0674627f, 0.0612062f, 0.0563109f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1736) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1736) imag"); }; }; --- 1603,1618 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.68f, -0.728f, -0.59f, -0.434f, -0.936f, 0.915f, 0.236f, -0.118f }; int lda = 2; ! float B[] = { 0.461f, 0.48f, 0.224f, 0.215f, -0.419f, -0.525f, 0.113f, -0.582f, 0.468f, 0.269f, 0.943f, -0.587f }; int ldb = 3; ! float B_expected[] = { -0.66292f, 0.009208f, -0.30884f, 0.016872f, 0.66712f, 0.051968f, 0.912704f, 0.178151f, 0.264199f, -0.01198f, -1.02584f, 0.141791f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1728) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1728) imag"); }; }; *************** *** 1628,1643 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.623f, 0.314f, -0.594f, 0.717f, 0.566f, 0.001f, -0.411f, -0.387f }; int lda = 2; ! float B[] = { -0.083f, 0.937f, -0.814f, 0.9f, -0.042f, 0.678f, -0.928f, 0.228f, 0.965f, -0.16f, 0.006f, -0.281f }; int ldb = 3; ! float B_expected[] = { -0.0937f, -0.0083f, -0.09f, -0.0814f, -0.0678f, -0.0042f, -0.0758259f, -0.0975915f, -0.0348586f, 0.0503376f, -0.0102706f, -0.001845f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1737) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1737) imag"); }; }; --- 1628,1643 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.699f, -0.709f, -0.775f, 0.779f, 0.5f, 0.774f, -0.399f, -0.843f }; int lda = 2; ! float B[] = { 0.538f, 0.556f, -0.186f, -0.678f, -0.413f, -0.612f, -0.216f, -0.519f, -0.344f, -0.578f, -0.938f, -0.848f }; int ldb = 3; ! float B_expected[] = { -0.538f, -0.556f, 0.186f, 0.678f, 0.413f, 0.612f, 0.377344f, -0.175412f, -0.087772f, 1.06096f, 0.670812f, 1.47366f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1729) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1729) imag"); }; }; *************** *** 1653,1668 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.247f, -0.582f, 0.651f, -0.534f, -0.491f, 0.346f, 0.936f, -0.227f }; int lda = 2; ! float B[] = { -0.002f, -0.02f, 0.162f, -0.62f, 0.632f, -0.07f, 0.352f, 0.042f, 0.574f, 0.272f, -0.139f, 0.012f }; int ldb = 2; ! float B_expected[] = { -0.0366576f, 0.0123832f, 0.0617094f, 0.0010892f, 0.0249364f, -0.0384208f, 0.0040592f, 0.0339006f, 0.0455238f, 0.0080623f, -0.0042785f, -0.012738f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1738) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1738) imag"); }; }; --- 1653,1668 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.527f, 0.318f, -0.224f, 0.547f, -0.765f, -0.469f, 0.233f, 0.023f }; int lda = 2; ! float B[] = { 0.54f, -0.418f, -0.892f, -0.118f, -0.296f, 0.019f, 0.786f, -0.145f, 0.136f, 0.472f, 0.731f, 0.333f }; int ldb = 2; ! float B_expected[] = { -1.04454f, -0.460052f, 0.205122f, 0.04801f, 0.831329f, 0.341824f, -0.186473f, 0.015707f, 0.481462f, 0.305592f, -0.162664f, -0.094402f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1730) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1730) imag"); }; }; *************** *** 1678,1693 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.152f, 0.395f, -0.077f, -0.191f, -0.757f, 0.858f, -0.494f, -0.734f }; int lda = 2; ! float B[] = { -0.166f, -0.413f, -0.373f, 0.915f, -0.824f, -0.066f, -0.114f, -0.921f, 0.862f, 0.312f, 0.221f, 0.699f }; int ldb = 2; ! float B_expected[] = { 0.142569f, -0.0668709f, -0.0915f, -0.0373f, -0.0533385f, 0.0052516f, 0.0921f, -0.0114f, 0.0027525f, 0.0094961f, -0.0699f, 0.0221f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1739) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1739) imag"); }; }; --- 1678,1693 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { -0.109f, -0.852f, 0.395f, 0.871f, 0.378f, -0.493f, 0.51f, 0.973f }; int lda = 2; ! float B[] = { -0.867f, -0.758f, 0.687f, -0.596f, -0.912f, -0.561f, -0.389f, 0.21f, -0.561f, 0.132f, 0.689f, 0.653f }; int ldb = 2; ! float B_expected[] = { 0.901142f, 1.32198f, -0.687f, 0.596f, 0.955512f, 0.289843f, 0.389f, -0.21f, -0.021371f, -0.039157f, -0.689f, -0.653f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1731) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1731) imag"); }; }; *************** *** 1703,1718 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.426f, 0.817f, -0.993f, -0.882f, 0.615f, 0.627f, -0.238f, -0.903f }; int lda = 2; ! float B[] = { 0.895f, 0.849f, 0.811f, 0.402f, 0.074f, -0.493f, -0.548f, -0.82f, 0.323f, 0.301f, 0.612f, -0.092f }; int ldb = 2; ! float B_expected[] = { -0.0369541f, -0.10749f, 0.246046f, 0.0030071f, -0.0270476f, 0.0371257f, -0.111428f, -0.111834f, -0.0135665f, -0.0383515f, 0.111452f, -0.0283989f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1740) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1740) imag"); }; }; --- 1703,1718 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.686f, 0.349f, 0.299f, -0.462f, 0.009f, -0.693f, -0.478f, -0.617f }; int lda = 2; ! float B[] = { -0.409f, 0.986f, -0.854f, 0.346f, 0.444f, -0.659f, 0.027f, 0.007f, 0.842f, -0.473f, 0.825f, 0.866f }; int ldb = 2; ! float B_expected[] = { 0.624688f, -0.533655f, -0.954935f, -0.845302f, -0.534575f, 0.297118f, 0.180289f, 0.422174f, -0.742689f, 0.03062f, -0.173204f, 1.4534f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1732) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1732) imag"); }; }; *************** *** 1728,1743 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.451f, -0.754f, -0.673f, 0.433f, -0.712f, -0.033f, -0.588f, 0.116f }; int lda = 2; ! float B[] = { 0.787f, -0.377f, -0.854f, -0.464f, 0.118f, 0.231f, 0.362f, -0.457f, -0.076f, 0.373f, -0.286f, -0.468f }; int ldb = 2; ! float B_expected[] = { 0.0377f, 0.0787f, -0.0130492f, -0.122041f, -0.0231f, 0.0118f, 0.0561369f, 0.0182563f, -0.0373f, -0.0076f, 0.0751937f, -0.0396361f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1741) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1741) imag"); }; }; --- 1728,1743 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { -0.286f, 0.661f, 0.372f, 0.28f, 0.482f, 0.267f, -0.436f, 0.844f }; int lda = 2; ! float B[] = { 0.0f, -0.513f, 0.91f, 0.109f, 0.587f, -0.183f, 0.112f, 0.362f, -0.256f, -0.518f, -0.933f, 0.066f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.513f, -1.05364f, 0.081836f, -0.587f, 0.183f, -0.381604f, -0.458284f, 0.256f, 0.518f, 0.883192f, 0.198376f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1733) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1733) imag"); }; }; *************** *** 1753,1768 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.454f, 0.494f, 0.424f, -0.907f, 0.339f, -0.141f, 0.169f, 0.364f, -0.607f, 0.955f, -0.156f, 0.962f, -0.254f, 0.079f, 0.209f, 0.946f, 0.93f, 0.677f }; int lda = 3; ! float B[] = { -0.99f, -0.484f, 0.915f, -0.383f, 0.228f, 0.797f, 0.597f, 0.765f, -0.629f, 0.002f, -0.89f, 0.077f }; int ldb = 3; ! float B_expected[] = { 0.0269324f, 0.0688556f, -0.179902f, -0.104839f, -0.181106f, -0.0505677f, 0.0052392f, -0.0648948f, 0.0819028f, 0.132688f, 0.0961172f, -0.0473381f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1742) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1742) imag"); }; }; --- 1753,1768 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.678f, 0.717f, 0.228f, 0.001f, -0.16f, -0.387f, -0.281f, -0.002f, 0.623f, 0.162f, -0.594f, 0.632f, 0.566f, 0.352f, -0.411f, 0.574f, 0.314f, -0.139f }; int lda = 3; ! float B[] = { -0.823f, -0.042f, 0.171f, -0.928f, 0.66f, 0.965f, 0.472f, 0.006f, -0.083f, 0.937f, -0.814f, 0.9f }; int ldb = 3; ! float B_expected[] = { 0.52788f, 0.618567f, -0.069267f, 0.560841f, -0.941723f, -1.19579f, -0.315714f, -0.342492f, 0.095893f, -0.572145f, 0.746576f, 0.396912f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1734) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1734) imag"); }; }; *************** *** 1778,1793 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.008f, -0.654f, 0.174f, 0.448f, 0.388f, -0.108f, -0.479f, -0.708f, -0.035f, 0.816f, 0.487f, 0.22f, -0.482f, 0.57f, -0.317f, 0.203f, -0.547f, -0.415f }; int lda = 3; ! float B[] = { 0.651f, 0.187f, 0.591f, -0.007f, 0.171f, -0.923f, -0.029f, -0.685f, -0.049f, 0.135f, 0.578f, 0.979f }; int ldb = 3; ! float B_expected[] = { -0.0187f, 0.0651f, -0.0317186f, 0.0620498f, 0.0794141f, 0.0733141f, 0.0685f, -0.0029f, -0.0002818f, 0.0252834f, -0.0771317f, 0.0439205f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1743) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1743) imag"); }; }; --- 1778,1793 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.346f, 0.915f, -0.227f, -0.066f, -0.166f, -0.921f, -0.373f, 0.312f, -0.824f, 0.699f, -0.114f, -0.152f, 0.862f, -0.077f, 0.221f, -0.757f, -0.413f, -0.494f }; int lda = 3; ! float B[] = { -0.02f, -0.247f, -0.62f, 0.651f, -0.07f, -0.491f, 0.042f, 0.936f, 0.272f, -0.582f, 0.012f, -0.534f }; int ldb = 3; ! float B_expected[] = { 0.02f, 0.247f, 0.631762f, -0.708389f, 0.124535f, 0.411552f, -0.042f, -0.936f, -0.324242f, 0.797244f, -0.747612f, 0.703054f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1735) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1735) imag"); }; }; *************** *** 1803,1818 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.952f, 0.29f, 0.944f, 0.294f, -0.762f, -0.7f, -0.949f, 0.167f, 0.307f, 0.904f, -0.428f, -0.411f, 0.496f, 0.004f, -0.611f, -0.09f, -0.846f, 0.081f }; int lda = 3; ! float B[] = { 0.782f, -0.035f, -0.441f, -0.791f, -0.09f, -0.56f, -0.438f, -0.691f, 0.88f, 0.545f, -0.55f, 0.595f }; int ldb = 3; ! float B_expected[] = { -0.0592352f, 0.126282f, 0.0291241f, 0.0584267f, -0.046647f, 0.01215f, 0.0862177f, -0.14179f, -0.064879f, 0.016708f, 0.054792f, 0.0417105f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1744) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1744) imag"); }; }; --- 1803,1818 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { -0.493f, -0.882f, -0.82f, 0.627f, 0.301f, -0.903f, -0.092f, 0.787f, -0.426f, -0.854f, -0.993f, 0.118f, 0.615f, 0.362f, -0.238f, -0.076f, 0.817f, -0.286f }; int lda = 3; ! float B[] = { 0.395f, 0.074f, -0.191f, -0.548f, 0.858f, 0.323f, -0.734f, 0.612f, 0.895f, 0.849f, 0.811f, 0.402f }; int ldb = 3; ! float B_expected[] = { -0.730125f, -0.024468f, 0.566282f, -0.25448f, -0.793364f, -0.018503f, -0.504384f, -1.51274f, -0.18131f, 1.28332f, -0.777559f, -0.096488f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1736) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1736) imag"); }; }; *************** *** 1828,1843 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.519f, 0.708f, -0.934f, -0.219f, 0.376f, -0.967f, 0.322f, -0.355f, 0.972f, -0.156f, -0.735f, 0.928f, 0.084f, -0.267f, -0.152f, 0.434f, 0.267f, 0.983f }; int lda = 3; ! float B[] = { -0.54f, 0.149f, 0.574f, 0.742f, 0.704f, 0.459f, -0.9f, 0.04f, 0.538f, -0.858f, 0.467f, 0.686f }; int ldb = 3; ! float B_expected[] = { -0.0034742f, 0.0089927f, -0.0977768f, 0.0267786f, -0.0459f, 0.0704f, 0.0494331f, -0.0808964f, 0.0759594f, 0.0169292f, -0.0686f, 0.0467f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1745) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1745) imag"); }; }; --- 1828,1843 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { -0.033f, -0.383f, 0.116f, 0.797f, -0.99f, 0.765f, 0.915f, 0.002f, 0.228f, 0.077f, 0.597f, -0.454f, -0.629f, 0.424f, -0.89f, 0.339f, -0.484f, 0.169f }; int lda = 3; ! float B[] = { -0.377f, -0.451f, -0.464f, -0.673f, 0.231f, -0.712f, -0.457f, -0.588f, 0.373f, -0.754f, -0.468f, 0.433f }; int ldb = 3; ! float B_expected[] = { 0.643625f, 0.521931f, 0.428222f, -0.038989f, -0.231f, 0.712f, 0.003417f, 1.74795f, -0.642733f, 1.29802f, 0.468f, -0.433f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1737) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1737) imag"); }; }; *************** *** 1853,1868 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.541f, 0.67f, 0.014f, 0.446f, 0.086f, -0.525f, 0.033f, -0.932f, 0.977f, 0.321f, -0.651f, 0.027f, 0.409f, 0.328f, 0.359f, -0.615f, 0.419f, -0.25f }; int lda = 3; ! float B[] = { -0.156f, 0.666f, -0.231f, 0.691f, 0.935f, -0.481f, -0.142f, -0.117f, 0.529f, 0.526f, 0.266f, 0.417f }; int ldb = 2; ! float B_expected[] = { 0.0464826f, -0.0361824f, 0.0528601f, -0.0337999f, 0.0002432f, 0.168346f, -0.0078204f, 0.0535212f, 0.0438334f, 0.0110749f, -0.0360401f, -0.0228356f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1746) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1746) imag"); }; }; --- 1853,1868 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.946f, -0.007f, 0.677f, -0.923f, 0.651f, -0.685f, 0.591f, 0.135f, 0.171f, 0.979f, -0.029f, -0.008f, -0.049f, 0.174f, 0.578f, 0.388f, 0.187f, -0.479f }; int lda = 3; ! float B[] = { -0.607f, -0.907f, -0.156f, -0.141f, -0.254f, 0.364f, 0.209f, 0.955f, 0.93f, 0.962f, 0.494f, 0.079f }; int ldb = 2; ! float B_expected[] = { 0.580571f, 0.853773f, 0.148563f, 0.132294f, 0.636082f, 0.804404f, 0.972367f, -0.263525f, -0.534225f, 0.214911f, 0.087341f, -0.390994f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1738) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1738) imag"); }; }; *************** *** 1878,1893 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.459f, -0.349f, -0.335f, 0.008f, 0.866f, 0.978f, -0.869f, -0.361f, -0.711f, 0.712f, 0.207f, 0.305f, 0.766f, -0.262f, 0.012f, -0.333f, 0.617f, 0.91f }; int lda = 3; ! float B[] = { -0.138f, -0.256f, -0.319f, -0.771f, 0.674f, -0.565f, -0.779f, -0.516f, -0.017f, -0.097f, -0.555f, 0.308f }; int ldb = 2; ! float B_expected[] = { 0.0256f, -0.0138f, 0.0771f, -0.0319f, 0.0292718f, 0.0701506f, -0.0269158f, -0.078012f, 0.0488162f, -0.0369837f, -0.0054207f, -0.118253f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1747) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1747) imag"); }; }; --- 1878,1893 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.203f, -0.791f, -0.415f, -0.56f, 0.782f, -0.691f, -0.441f, 0.545f, -0.09f, 0.595f, -0.438f, 0.952f, 0.88f, 0.944f, -0.55f, -0.762f, -0.035f, -0.949f }; int lda = 3; ! float B[] = { -0.035f, 0.448f, 0.487f, -0.108f, -0.482f, -0.708f, -0.317f, 0.816f, -0.547f, 0.22f, -0.654f, 0.57f }; int ldb = 2; ! float B_expected[] = { 0.035f, -0.448f, -0.487f, 0.108f, 0.710725f, 0.924643f, 0.472907f, -1.12904f, 1.27511f, -1.33788f, -0.672654f, -0.727442f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1739) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1739) imag"); }; }; *************** *** 1903,1918 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.825f, -0.785f, -0.605f, -0.508f, 0.763f, -0.578f, -0.167f, -0.233f, 0.011f, -0.853f, 0.24f, 0.192f, 0.293f, -0.72f, -0.348f, 0.023f, -0.145f, -0.493f }; int lda = 3; ! float B[] = { 0.305f, -0.255f, 0.882f, 0.883f, 0.088f, -0.473f, 0.135f, -0.063f, -0.671f, 0.473f, 0.874f, 0.548f }; int ldb = 2; ! float B_expected[] = { -0.0961148f, -0.0983903f, 0.153836f, 0.0835432f, 0.0095579f, -0.0654357f, -0.018348f, 0.005229f, -0.0262218f, 0.0330484f, 0.0510342f, 0.0143434f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1748) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1748) imag"); }; }; --- 1903,1918 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { -0.09f, 0.742f, 0.081f, 0.459f, -0.54f, 0.04f, 0.574f, -0.858f, 0.704f, 0.686f, -0.9f, -0.519f, 0.538f, -0.934f, 0.467f, 0.376f, 0.149f, 0.322f }; int lda = 3; ! float B[] = { 0.307f, 0.294f, -0.428f, -0.7f, 0.496f, 0.167f, -0.611f, 0.904f, -0.846f, -0.411f, 0.29f, 0.004f }; int ldb = 2; ! float B_expected[] = { -0.191025f, -0.630625f, 0.063267f, 0.452361f, -0.782713f, -1.2668f, 1.30921f, -0.06316f, -0.006288f, 0.333651f, -0.041922f, -0.093976f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1740) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1740) imag"); }; }; *************** *** 1928,1943 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.63f, 0.353f, 0.445f, 0.845f, 0.273f, -0.135f, 0.03f, 0.936f, 0.141f, 0.638f, -0.399f, 0.343f, -0.037f, -0.335f, -0.089f, 0.081f, 0.987f, -0.256f }; int lda = 3; ! float B[] = { -0.567f, 0.803f, 0.168f, 0.744f, -0.328f, 0.835f, -0.852f, 0.702f, 0.21f, -0.618f, 0.666f, -0.303f }; int ldb = 2; ! float B_expected[] = { -0.0700351f, -0.144464f, -0.0163821f, -0.0663417f, -0.115361f, -0.0199816f, -0.105134f, -0.10138f, 0.0618f, 0.021f, 0.0303f, 0.0666f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1749) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1749) imag"); }; }; --- 1928,1943 ---- int M = 2; int N = 3; ! float alpha[2] = {-1.0f, 0.0f}; ! float A[] = { 0.434f, 0.691f, 0.983f, -0.481f, -0.156f, -0.117f, -0.231f, 0.526f, 0.935f, 0.417f, -0.142f, -0.541f, 0.529f, 0.014f, 0.266f, 0.086f, 0.666f, 0.033f }; int lda = 3; ! float B[] = { 0.972f, -0.219f, -0.735f, -0.967f, 0.084f, -0.355f, -0.152f, -0.156f, 0.267f, 0.928f, 0.708f, -0.267f }; int ldb = 2; ! float B_expected[] = { -0.950741f, 0.784376f, 1.10114f, 1.08842f, -0.548134f, 0.631223f, 0.396983f, 0.501114f, -0.267f, -0.928f, -0.708f, 0.267f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1741) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1741) imag"); }; }; *************** *** 1953,1968 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.741f, 0.904f, -0.599f, 0.753f, -0.297f, 0.38f, -0.056f, -0.715f }; int lda = 2; ! float B[] = { 0.646f, -0.447f, -0.147f, 0.314f, -0.713f, 0.187f, -0.589f, 0.287f, -0.809f, -0.293f, 0.418f, 0.778f }; int ldb = 3; ! float B_expected[] = { -0.0915211f, -0.0074598f, 0.0365562f, -0.0174929f, 0.0783119f, 0.0359285f, -0.115925f, 0.0187826f, -0.0296066f, -0.031258f, 0.099134f, 0.0819138f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1750) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1750) imag"); }; }; --- 1953,1968 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.25f, -0.779f, -0.138f, -0.017f, -0.319f, -0.555f, 0.674f, -0.256f }; int lda = 2; ! float B[] = { -0.651f, -0.525f, 0.409f, -0.932f, 0.359f, 0.321f, 0.419f, 0.027f, 0.67f, 0.328f, 0.446f, -0.615f }; int ldb = 3; ! float B_expected[] = { 0.0100296f, -0.216136f, 0.257045f, -0.0571445f, -0.0121016f, 0.124004f, -0.110514f, 0.0386878f, -0.1561f, -0.0050383f, 0.028185f, 0.183634f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1742) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1742) imag"); }; }; *************** *** 1978,1993 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.645f, 0.756f, 0.709f, -0.657f, -0.023f, -0.714f, 0.03f, 0.239f }; int lda = 2; ! float B[] = { -0.16f, 0.254f, -0.68f, 0.183f, -0.402f, -0.259f, 0.104f, -0.09f, 0.944f, 0.729f, -0.378f, -0.792f }; int ldb = 3; ! float B_expected[] = { -0.0254f, -0.016f, -0.0183f, -0.068f, 0.0259f, -0.0402f, -0.0195206f, 0.0157438f, -0.130551f, 0.0582111f, 0.0711517f, -0.0833181f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1751) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1751) imag"); }; }; --- 1978,1993 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.012f, 0.978f, 0.617f, -0.361f, -0.349f, 0.712f, 0.008f, 0.305f }; int lda = 2; ! float B[] = { -0.771f, -0.335f, -0.565f, 0.866f, -0.516f, -0.869f, -0.097f, -0.711f, 0.308f, 0.207f, -0.459f, 0.766f }; int ldb = 3; ! float B_expected[] = { 0.2648f, 0.0234f, 0.0829f, -0.3163f, 0.2417f, 0.2091f, 0.272029f, 0.122445f, -0.176135f, -0.256384f, 0.285714f, -0.233939f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1743) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1743) imag"); }; }; *************** *** 2003,2018 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.25f, -0.038f, 0.377f, -0.209f, 0.166f, -0.073f, -0.24f, 0.938f }; int lda = 2; ! float B[] = { 0.26f, 0.696f, -0.183f, 0.668f, -0.08f, -0.938f, -0.837f, -0.509f, 0.781f, -0.063f, -0.953f, 0.227f }; int ldb = 3; ! float B_expected[] = { -0.0140727f, -0.0084651f, -0.0106483f, 0.0104681f, 0.0124209f, -0.0197271f, 0.0662946f, 0.0678322f, -0.0747698f, -0.0128346f, 0.0948394f, 0.0015794f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1752) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1752) imag"); }; }; --- 2003,2018 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.063f, -0.605f, 0.473f, 0.763f, 0.548f, -0.167f, -0.825f, 0.011f }; int lda = 2; ! float B[] = { -0.262f, 0.135f, -0.333f, -0.671f, 0.91f, 0.874f, 0.305f, -0.255f, 0.882f, 0.883f, 0.088f, -0.473f }; int ldb = 3; ! float B_expected[] = { -0.0627538f, 0.0344746f, -0.131779f, -0.149516f, -0.0442507f, 0.307921f, 0.053273f, -0.089001f, 0.293086f, 0.141896f, -0.0189002f, -0.124098f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1744) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1744) imag"); }; }; *************** *** 2028,2043 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.668f, 0.804f, 0.608f, -0.682f, -0.513f, 0.521f, 0.878f, -0.664f }; int lda = 2; ! float B[] = { -0.871f, 0.699f, 0.561f, 0.823f, -0.787f, 0.055f, -0.686f, 0.361f, -0.662f, -0.192f, -0.301f, -0.167f }; int ldb = 3; ! float B_expected[] = { -0.0156401f, -0.0707163f, -0.0576594f, 0.100064f, 0.001615f, -0.054558f, -0.0361f, -0.0686f, 0.0192f, -0.0662f, 0.0167f, -0.0301f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1753) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1753) imag"); }; }; --- 2028,2043 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.493f, -0.852f, -0.567f, 0.21f, 0.168f, 0.666f, -0.328f, 0.803f }; int lda = 2; ! float B[] = { 0.24f, -0.578f, 0.293f, -0.233f, -0.348f, -0.853f, -0.145f, 0.192f, -0.785f, -0.72f, -0.508f, 0.023f }; int ldb = 3; ! float B_expected[] = { 0.037901f, 0.201471f, -0.104515f, 0.327095f, 0.253345f, 0.311373f, 0.0243f, -0.0721f, 0.3075f, 0.1375f, 0.1501f, -0.0577f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1745) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1745) imag"); }; }; *************** *** 2053,2068 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.091f, 0.189f, -0.221f, 0.749f, 0.354f, -0.397f, 0.105f, -0.944f }; int lda = 2; ! float B[] = { 0.731f, -0.446f, 0.983f, 0.793f, 0.533f, 0.386f, -0.781f, -0.063f, 0.875f, -0.128f, -0.179f, -0.079f }; int ldb = 2; ! float B_expected[] = { -0.0097573f, 0.0150815f, 0.129278f, 0.0933519f, -0.0135863f, -0.0024451f, -0.0655692f, 0.0200447f, -0.0153727f, 0.0103817f, 0.0232006f, 0.0165563f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1754) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1754) imag"); }; }; --- 2053,2068 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.089f, -0.135f, 0.987f, 0.936f, 0.353f, 0.638f, 0.845f, 0.343f }; int lda = 2; ! float B[] = { 0.744f, 0.445f, 0.835f, 0.273f, 0.702f, 0.03f, -0.618f, 0.141f, -0.303f, -0.399f, 0.63f, -0.037f }; int ldb = 2; ! float B_expected[] = { 0.0158468f, 0.0413994f, -0.292082f, -0.285588f, 0.0272724f, 0.0233892f, 0.0660084f, -0.143882f, 0.0004278f, -0.0256146f, -0.19286f, 0.114065f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1746) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1746) imag"); }; }; *************** *** 2078,2093 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.676f, 0.644f, 0.03f, 0.456f, 0.002f, -0.909f, 0.984f, 0.771f }; int lda = 2; ! float B[] = { 0.65f, 0.005f, -0.883f, -0.154f, -0.137f, -0.137f, 0.531f, -0.49f, 0.052f, 0.273f, -0.602f, 0.655f }; int ldb = 2; ! float B_expected[] = { -0.0005f, 0.065f, 0.074484f, -0.0877155f, 0.0137f, -0.0137f, 0.0365741f, 0.0406193f, -0.0273f, 0.0052f, -0.0608278f, -0.0353739f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1755) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1755) imag"); }; }; --- 2078,2093 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.187f, -0.741f, 0.287f, -0.599f, -0.293f, -0.297f, 0.778f, -0.056f }; int lda = 2; ! float B[] = { -0.335f, -0.713f, 0.081f, -0.589f, -0.256f, -0.809f, -0.473f, 0.418f, 0.646f, -0.447f, -0.147f, 0.314f }; int ldb = 2; ! float B_expected[] = { 0.1718f, 0.1804f, 0.0378414f, 0.0809182f, 0.1577f, 0.2171f, 0.118373f, -0.283147f, -0.1491f, 0.1987f, 0.1154f, -0.122836f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1747) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1747) imag"); }; }; *************** *** 2103,2118 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.832f, -0.559f, 0.188f, -0.488f, -0.051f, -0.057f, 0.909f, 0.006f }; int lda = 2; ! float B[] = { -0.408f, 0.303f, 0.03f, 0.529f, -0.584f, -0.976f, 0.443f, -0.762f, 0.43f, 0.812f, -0.075f, 0.06f }; int ldb = 2; ! float B_expected[] = { -0.056498f, 0.0093713f, -0.0481041f, 0.0024096f, 0.0845016f, -0.132004f, 0.069f, 0.0407259f, -0.0483094f, 0.0826848f, -0.005409f, -0.0068535f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1756) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1756) imag"); }; }; --- 2103,2118 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.259f, -0.645f, -0.09f, 0.709f, 0.729f, -0.023f, -0.792f, 0.03f }; int lda = 2; ! float B[] = { 0.904f, -0.402f, 0.753f, 0.104f, 0.38f, 0.944f, -0.715f, -0.378f, -0.16f, 0.254f, -0.68f, 0.183f }; int ldb = 2; ! float B_expected[] = { 0.185924f, -0.0771597f, 0.185827f, -0.0420162f, -0.156592f, 0.373034f, -0.201079f, -0.0256158f, 0.0051007f, 0.152025f, -0.143387f, 0.102908f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1748) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1748) imag"); }; }; *************** *** 2128,2143 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.15f, -0.297f, 0.821f, -0.576f, -0.572f, 0.924f, 0.106f, -0.131f }; int lda = 2; ! float B[] = { -0.271f, 0.793f, -0.232f, -0.967f, -0.466f, 0.37f, -0.745f, -0.156f, -0.091f, -0.877f, 0.595f, 0.448f }; int ldb = 2; ! float B_expected[] = { -0.0132725f, -0.101846f, 0.0967f, -0.0232f, -0.0671044f, -0.11675f, 0.0156f, -0.0745f, 0.0851912f, 0.0655543f, -0.0448f, 0.0595f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1757) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1757) imag"); }; }; --- 2128,2143 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.938f, 0.25f, -0.509f, 0.377f, -0.063f, 0.166f, 0.227f, -0.24f }; int lda = 2; ! float B[] = { 0.756f, -0.08f, -0.657f, -0.837f, -0.714f, 0.781f, 0.239f, -0.953f, 0.26f, 0.696f, -0.183f, 0.668f }; int ldb = 2; ! float B_expected[] = { -0.431623f, 0.111093f, 0.2808f, 0.1854f, 0.007293f, -0.454491f, 0.0236f, 0.3098f, -0.059093f, -0.075968f, -0.0119f, -0.2187f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1749) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1749) imag"); }; }; *************** *** 2153,2168 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.002f, 0.0f, 0.626f, -0.148f, 0.874f, 0.229f, -0.227f, -0.55f, -0.895f, 0.586f, 0.934f, 0.618f, 0.958f, -0.543f, 0.49f, 0.671f, -0.871f, 0.227f }; int lda = 3; ! float B[] = { -0.415f, 0.156f, -0.539f, -0.247f, -0.725f, 0.932f, 0.565f, 0.454f, -0.118f, 0.693f, -0.968f, -0.601f }; int ldb = 3; ! float B_expected[] = { -0.0574005f, -0.122188f, -0.0327649f, -0.0625979f, 0.0976347f, 0.0419911f, 0.0294756f, -0.0678577f, 0.184894f, -0.0833182f, -0.0303735f, 0.0979555f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1758) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1758) imag"); }; }; --- 2153,2168 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.055f, -0.682f, 0.361f, 0.521f, -0.192f, -0.664f, -0.167f, 0.731f, -0.668f, 0.983f, 0.608f, 0.533f, -0.513f, -0.781f, 0.878f, 0.875f, 0.804f, -0.179f }; int lda = 3; ! float B[] = { -0.038f, -0.787f, -0.209f, -0.686f, -0.073f, -0.662f, 0.938f, -0.301f, -0.871f, 0.699f, 0.561f, 0.823f }; int ldb = 3; ! float B_expected[] = { 0.224558f, -0.0087435f, -0.317863f, 0.168822f, 0.105075f, 0.138035f, 0.256887f, 0.377119f, 0.113231f, 0.136832f, -0.235636f, -0.108546f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1750) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1750) imag"); }; }; *************** *** 2178,2193 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.89f, 0.309f, -0.786f, 0.999f, 0.511f, 0.599f, 0.385f, -0.615f, 0.527f, -0.328f, -0.078f, -0.666f, 0.004f, -0.69f, -0.281f, -0.438f, 0.456f, 0.524f }; int lda = 3; ! float B[] = { -0.648f, -0.189f, -0.295f, 0.477f, 0.509f, 0.685f, 0.875f, 0.277f, -0.34f, -0.632f, -0.453f, -0.798f }; int ldb = 3; ! float B_expected[] = { 0.0203701f, -0.104287f, -0.0084576f, 0.0121508f, -0.0685f, 0.0509f, 0.0245033f, 0.202013f, 0.0268058f, -0.0836134f, 0.0798f, -0.0453f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1759) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1759) imag"); }; }; --- 2178,2193 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.397f, -0.154f, -0.944f, -0.137f, 0.65f, -0.49f, -0.883f, 0.273f, -0.137f, 0.655f, 0.531f, 0.676f, 0.052f, 0.03f, -0.602f, 0.002f, 0.005f, 0.984f }; int lda = 3; ! float B[] = { -0.446f, 0.091f, 0.793f, -0.221f, 0.386f, 0.354f, -0.063f, 0.105f, -0.128f, 0.189f, -0.079f, 0.749f }; int ldb = 3; ! float B_expected[] = { 0.216958f, -0.149634f, -0.25039f, 0.0074932f, -0.1512f, -0.0676f, -0.166784f, -0.100965f, 0.14955f, -0.227622f, -0.0512f, -0.2326f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1751) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1751) imag"); }; }; *************** *** 2203,2218 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.772f, 0.686f, 0.693f, 0.803f, -0.328f, -0.627f, -0.869f, -0.656f, -0.055f, -0.366f, -0.981f, -0.151f, 0.147f, -0.368f, -0.824f, -0.454f, -0.445f, -0.794f }; int lda = 3; ! float B[] = { -0.268f, -0.521f, -0.685f, -0.618f, 0.508f, 0.525f, -0.492f, -0.502f, -0.997f, 0.28f, 0.63f, 0.664f }; int ldb = 3; ! float B_expected[] = { 0.058606f, 0.015051f, -0.0913257f, -0.0297397f, -0.0205282f, 0.0243534f, 0.0725056f, -0.0035452f, -0.110849f, 0.0255551f, 0.046652f, 0.0938454f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1760) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1760) imag"); }; }; --- 2203,2218 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.976f, -0.488f, -0.762f, -0.057f, 0.812f, 0.006f, 0.06f, -0.271f, 0.832f, -0.232f, 0.188f, -0.466f, -0.051f, -0.745f, 0.909f, -0.091f, -0.559f, 0.595f }; int lda = 3; ! float B[] = { 0.644f, -0.584f, 0.456f, 0.443f, -0.909f, 0.43f, 0.771f, -0.075f, -0.408f, 0.303f, 0.03f, 0.529f }; int ldb = 3; ! float B_expected[] = { 0.24849f, -0.168067f, -0.114085f, 0.0202884f, 0.0152508f, 0.284926f, 0.267034f, 0.0120048f, 0.0596364f, -0.0643158f, 0.284594f, 0.0837608f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1752) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1752) imag"); }; }; *************** *** 2228,2243 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.317f, -0.822f, 0.732f, 0.383f, 0.457f, 0.443f, 0.529f, -0.949f, -0.927f, -0.65f, -0.471f, -0.624f, -0.731f, 0.107f, -0.142f, 0.623f, 0.159f, -0.419f }; int lda = 3; ! float B[] = { 0.292f, -0.665f, -0.93f, 0.517f, 0.123f, -0.181f, 0.325f, 0.954f, -0.988f, -0.128f, 0.637f, -0.997f }; int ldb = 3; ! float B_expected[] = { 0.0665f, 0.0292f, 0.0111893f, -0.140662f, 0.0316445f, -0.0209328f, -0.0954f, 0.0325f, -0.0068241f, 0.0089271f, 0.225695f, 0.0517387f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1761) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1761) imag"); }; }; --- 2228,2243 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.924f, -0.247f, -0.131f, 0.932f, -0.415f, 0.454f, -0.539f, 0.693f, -0.725f, -0.601f, 0.565f, 0.002f, -0.118f, 0.626f, -0.968f, 0.874f, 0.156f, -0.227f }; int lda = 3; ! float B[] = { 0.793f, -0.15f, -0.967f, 0.821f, 0.37f, -0.572f, -0.156f, 0.106f, -0.877f, -0.297f, 0.448f, -0.576f }; int ldb = 3; ! float B_expected[] = { -0.2229f, 0.1243f, 0.242003f, -0.564467f, -0.0068716f, 0.568213f, 0.0362f, -0.0474f, 0.306136f, 0.0520352f, -0.336053f, 0.500406f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1753) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1753) imag"); }; }; *************** *** 2253,2268 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.809f, 0.393f, -0.015f, -0.273f, -0.956f, 0.49f, 0.365f, -0.386f, 0.941f, 0.992f, 0.297f, 0.761f, 0.425f, -0.605f, 0.672f, 0.725f, -0.077f, -0.628f }; int lda = 3; ! float B[] = { 0.21f, 0.153f, 0.218f, -0.129f, 0.736f, -0.006f, 0.502f, -0.165f, 0.242f, 0.915f, 0.67f, 0.07f }; int ldb = 2; ! float B_expected[] = { 0.0085068f, 0.069273f, 0.0439562f, 0.0320975f, -0.15148f, 0.0197777f, -0.0875509f, 0.103555f, 0.0222431f, 0.0555986f, 0.042615f, -0.000763f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1762) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1762) imag"); }; }; --- 2253,2268 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.671f, 0.477f, 0.227f, 0.685f, -0.648f, 0.277f, -0.295f, -0.632f, 0.509f, -0.798f, 0.875f, 0.89f, -0.34f, -0.786f, -0.453f, 0.511f, -0.189f, 0.385f }; int lda = 3; ! float B[] = { -0.895f, -0.148f, 0.934f, 0.229f, 0.958f, -0.55f, 0.49f, 0.586f, -0.871f, 0.618f, -0.0f, -0.543f }; int ldb = 2; ! float B_expected[] = { 0.162976f, 0.110656f, -0.12507f, -0.0587256f, 0.138701f, 0.543589f, -0.313677f, 0.0534812f, 0.067207f, 0.12831f, -0.0729792f, -0.0098826f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1754) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1754) imag"); }; }; *************** *** 2278,2293 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.187f, -0.508f, -0.987f, -0.861f, 0.519f, 0.752f, -0.117f, 0.972f, 0.068f, -0.752f, 0.344f, 0.074f, -0.343f, 0.0f, -0.876f, 0.857f, -0.148f, -0.933f }; int lda = 3; ! float B[] = { 0.827f, 0.958f, 0.395f, 0.878f, 0.88f, -0.896f, -0.771f, -0.355f, -0.979f, 0.329f, -0.166f, -0.644f }; int ldb = 2; ! float B_expected[] = { -0.180535f, 0.193075f, -0.0391015f, 0.0887205f, 0.202321f, 0.145565f, -0.0066882f, -0.0073676f, -0.0329f, -0.0979f, 0.0644f, -0.0166f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1763) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1763) imag"); }; }; --- 2278,2293 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.438f, -0.618f, 0.524f, 0.525f, -0.268f, -0.502f, -0.685f, 0.28f, 0.508f, 0.664f, -0.492f, 0.772f, -0.997f, 0.693f, 0.63f, -0.328f, -0.521f, -0.869f }; int lda = 3; ! float B[] = { 0.527f, 0.999f, -0.078f, 0.599f, 0.004f, -0.615f, -0.281f, -0.328f, 0.456f, -0.666f, 0.309f, -0.69f }; int ldb = 2; ! float B_expected[] = { -0.45115f, -0.650085f, -0.277633f, -0.456478f, 0.0965652f, 0.362528f, 0.1802f, 0.227951f, -0.0702f, 0.2454f, -0.0237f, 0.2379f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1755) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1755) imag"); }; }; *************** *** 2303,2318 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.622f, 0.022f, -0.966f, 0.704f, 0.43f, -0.451f, -0.221f, 0.969f, 0.977f, 0.021f, -0.725f, -0.382f, 0.779f, 0.957f, 0.25f, 0.832f, 0.029f, -0.903f }; int lda = 3; ! float B[] = { 0.315f, -0.297f, -0.864f, 0.519f, -0.601f, -0.119f, 0.028f, 0.072f, -0.171f, 0.648f, 0.159f, -0.623f }; int ldb = 2; ! float B_expected[] = { -0.0191664f, -0.0189396f, 0.0341826f, 0.052599f, -0.0379778f, -0.067988f, 0.103868f, 0.0495092f, -0.0219287f, 0.0971955f, -0.0388294f, -0.0688205f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1764) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1764) imag"); }; }; --- 2303,2318 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.454f, 0.517f, -0.794f, -0.181f, 0.292f, 0.954f, -0.93f, -0.128f, 0.123f, -0.997f, 0.325f, -0.317f, -0.988f, 0.732f, 0.637f, 0.457f, -0.665f, 0.529f }; int lda = 3; ! float B[] = { -0.055f, 0.803f, -0.981f, -0.627f, 0.147f, -0.656f, -0.824f, -0.366f, -0.445f, -0.151f, 0.686f, -0.368f }; int ldb = 2; ! float B_expected[] = { 0.156354f, 0.078881f, -0.208608f, 0.143709f, 0.219569f, 0.211768f, -0.204943f, -0.415655f, 0.191227f, 0.0071854f, 0.136999f, 0.0773624f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1756) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1756) imag"); }; }; *************** *** 2328,2343 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.106f, 0.87f, 0.21f, 0.463f, -0.496f, -0.981f, -0.354f, -0.604f, -0.149f, -0.384f, -0.958f, -0.502f, -0.579f, 0.736f, -0.322f, 0.028f, 0.193f, 0.14f }; int lda = 3; ! float B[] = { -0.812f, 0.518f, 0.085f, -0.447f, -0.443f, 0.928f, -0.972f, 0.889f, 0.605f, -0.258f, -0.025f, 0.98f }; int ldb = 2; ! float B_expected[] = { -0.0518f, -0.0812f, 0.0447f, 0.0085f, -0.0660824f, -0.0853354f, -0.0834485f, -0.0747189f, 0.0384994f, 0.240616f, -0.0754609f, 0.0871787f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1765) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1765) imag"); }; }; --- 2328,2343 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.623f, -0.129f, -0.419f, -0.006f, 0.21f, -0.165f, 0.218f, 0.915f, 0.736f, 0.07f, 0.502f, -0.809f, 0.242f, -0.015f, 0.67f, -0.956f, 0.153f, 0.365f }; int lda = 3; ! float B[] = { -0.927f, 0.383f, -0.471f, 0.443f, -0.731f, -0.949f, -0.142f, -0.65f, 0.159f, -0.624f, -0.822f, 0.107f }; int ldb = 2; ! float B_expected[] = { 0.2398f, -0.2076f, 0.097f, -0.18f, 0.212478f, 0.297146f, 0.065877f, 0.255638f, 0.359717f, -0.0280276f, 0.426852f, -0.164392f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1757) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1757) imag"); }; }; *************** *** 2353,2368 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.553f, 0.204f, -0.793f, -0.558f, 0.741f, 0.26f, 0.945f, -0.757f }; int lda = 2; ! float B[] = { -0.515f, 0.532f, -0.321f, 0.326f, -0.81f, -0.924f, 0.474f, 0.985f, -0.03f, 0.406f, 0.923f, -0.956f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1766) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1766) imag"); }; }; --- 2353,2368 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.628f, -0.771f, 0.827f, -0.979f, 0.395f, -0.166f, 0.88f, 0.958f }; int lda = 2; ! float B[] = { 0.297f, 0.49f, 0.425f, -0.386f, 0.672f, 0.992f, -0.077f, 0.761f, 0.393f, -0.605f, -0.273f, 0.725f }; int ldb = 3; ! float B_expected[] = { 0.177165f, -0.0328107f, -0.0662201f, -0.167954f, 0.366541f, -0.0872256f, -0.2721f, -0.389113f, -0.0674816f, 0.293174f, -0.249446f, -0.709453f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1758) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1758) imag"); }; }; *************** *** 2378,2393 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.41f, -0.804f, 0.988f, -0.715f, -0.281f, -0.89f, 0.389f, -0.408f }; int lda = 2; ! float B[] = { 0.917f, 0.541f, -0.108f, -0.965f, 0.524f, 0.04f, -0.736f, -0.643f, -0.202f, 0.86f, 0.346f, -0.017f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1767) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1767) imag"); }; }; --- 2378,2393 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.876f, 0.752f, -0.148f, 0.972f, -0.508f, -0.752f, -0.861f, 0.074f }; int lda = 2; ! float B[] = { 0.878f, -0.987f, -0.896f, 0.519f, -0.355f, -0.117f, 0.329f, 0.068f, -0.644f, 0.344f, -0.187f, -0.343f }; int ldb = 3; ! float B_expected[] = { -0.1647f, 0.3839f, 0.2169f, -0.2453f, 0.1182f, -0.0004f, 0.292026f, 0.115771f, -0.111733f, -0.342122f, 0.0725176f, -0.0306312f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1759) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1759) imag"); }; }; *************** *** 2403,2418 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.153f, -0.812f, -0.742f, -0.18f, 0.473f, 0.023f, -0.433f, 0.559f }; int lda = 2; ! float B[] = { 0.078f, -0.691f, -0.717f, -0.637f, -0.016f, 0.375f, -0.902f, -0.343f, 0.155f, 0.563f, 0.419f, 0.451f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1768) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1768) imag"); }; }; --- 2403,2418 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.072f, -0.966f, 0.648f, 0.43f, -0.623f, -0.221f, -0.622f, 0.977f }; int lda = 2; ! float B[] = { 0.0f, 0.028f, 0.857f, -0.171f, -0.933f, 0.159f, 0.315f, -0.297f, -0.864f, 0.519f, -0.601f, -0.119f }; int ldb = 3; ! float B_expected[] = { 0.0216306f, -0.0927642f, -0.225266f, -0.0253344f, 0.0408658f, 0.302549f, 0.158132f, -0.0117036f, -0.365472f, -0.0519459f, -0.143387f, -0.172603f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1760) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1760) imag"); }; }; *************** *** 2428,2443 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.288f, 0.241f, 0.593f, -0.597f, -0.469f, 0.735f, 0.193f, -0.104f }; int lda = 2; ! float B[] = { -0.835f, 0.037f, -0.762f, 0.782f, -0.874f, -0.867f, -0.81f, -0.577f, 0.352f, 0.827f, 0.237f, -0.861f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1769) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1769) imag"); }; }; --- 2428,2443 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.903f, -0.972f, -0.812f, 0.605f, 0.085f, -0.025f, -0.443f, 0.518f }; int lda = 2; ! float B[] = { -0.725f, -0.451f, 0.779f, 0.969f, 0.25f, 0.021f, 0.029f, -0.382f, 0.022f, 0.957f, 0.704f, 0.832f }; int ldb = 3; ! float B_expected[] = { 0.26217f, 0.073525f, -0.332173f, -0.239574f, -0.097644f, -0.003892f, 0.0295f, 0.1175f, -0.1023f, -0.2849f, -0.2944f, -0.1792f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1761) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1761) imag"); }; }; *************** *** 2453,2468 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.441f, -0.217f, 0.679f, 0.106f, -0.76f, -0.258f, -0.956f, -0.858f }; int lda = 2; ! float B[] = { -0.802f, 0.163f, 0.293f, 0.54f, 0.228f, 0.071f, 0.942f, 0.345f, 0.591f, 0.654f, 0.382f, -0.892f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1770) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1770) imag"); }; }; --- 2453,2468 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.322f, -0.981f, 0.193f, -0.604f, 0.87f, -0.384f, 0.463f, -0.502f }; int lda = 2; ! float B[] = { -0.447f, 0.21f, 0.928f, -0.496f, 0.889f, -0.354f, -0.258f, -0.149f, 0.98f, -0.958f, 0.106f, -0.579f }; int ldb = 2; ! float B_expected[] = { 0.0692355f, 0.14563f, -0.0874638f, -0.0532654f, -0.116915f, -0.289728f, -0.242902f, 0.136003f, -0.314257f, -0.318533f, -0.400862f, 0.357622f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1762) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1762) imag"); }; }; *************** *** 2478,2493 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.916f, 0.909f, 0.834f, 0.38f, 0.391f, -0.412f, -0.714f, -0.456f }; int lda = 2; ! float B[] = { -0.151f, 0.818f, 0.717f, -0.812f, -0.649f, -0.107f, -0.454f, 0.785f, 0.86f, 0.992f, -0.244f, -0.242f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1771) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1771) imag"); }; }; --- 2478,2493 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.924f, -0.553f, 0.985f, -0.793f, 0.406f, 0.741f, -0.956f, 0.945f }; int lda = 2; ! float B[] = { 0.736f, -0.81f, 0.028f, 0.474f, 0.14f, -0.03f, -0.756f, 0.923f, -0.515f, 0.532f, -0.321f, 0.326f }; int ldb = 2; ! float B_expected[] = { -0.1398f, 0.3166f, 0.122042f, 0.0927314f, -0.039f, 0.023f, 0.135709f, -0.314263f, 0.1013f, -0.2111f, -0.0515973f, -0.29067f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1763) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1763) imag"); }; }; *************** *** 2503,2518 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.992f, 0.284f, -0.01f, 0.182f, 0.527f, -0.348f, -0.509f, 0.839f }; int lda = 2; ! float B[] = { 0.504f, -0.782f, -0.88f, 0.079f, 0.216f, 0.525f, 0.198f, 0.851f, -0.102f, -0.046f, 0.079f, -0.045f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1772) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1772) imag"); }; }; --- 2503,2518 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.04f, -0.41f, -0.643f, 0.988f, 0.86f, -0.281f, -0.017f, 0.389f }; int lda = 2; ! float B[] = { 0.204f, 0.524f, -0.558f, -0.736f, 0.26f, -0.202f, -0.757f, 0.346f, 0.917f, 0.541f, -0.108f, -0.965f }; int ldb = 2; ! float B_expected[] = { 0.059601f, -0.396251f, 0.060088f, -0.096554f, -0.338942f, -0.0950055f, -0.073098f, -0.071831f, 0.208251f, -0.444353f, 0.106223f, -0.05488f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1764) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1764) imag"); }; }; *************** *** 2528,2543 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.985f, 0.068f, -0.095f, -0.575f, -0.607f, 0.893f, 0.085f, 0.145f }; int lda = 2; ! float B[] = { -0.149f, 0.592f, 0.588f, -0.62f, -0.409f, -0.344f, 0.263f, 0.759f, -0.026f, -0.609f, 0.507f, -0.084f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1773) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1773) imag"); }; }; --- 2528,2543 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.375f, 0.153f, -0.343f, -0.742f, 0.563f, 0.473f, 0.451f, -0.433f }; int lda = 2; ! float B[] = { -0.804f, -0.016f, -0.715f, -0.902f, -0.89f, 0.155f, -0.408f, 0.419f, 0.078f, -0.691f, -0.717f, -0.637f }; int ldb = 2; ! float B_expected[] = { -0.0094443f, 0.0821961f, 0.3047f, 0.1991f, 0.347432f, -0.0186595f, 0.0805f, -0.1665f, -0.138523f, 0.381015f, 0.2788f, 0.1194f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1765) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1765) imag"); }; }; *************** *** 2553,2568 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.36f, 0.508f, -0.771f, -0.442f, -0.671f, -0.691f, -0.771f, 0.113f, 0.282f, 0.312f, 0.564f, -0.568f, -0.743f, 0.912f, -0.395f, 0.503f, -0.167f, -0.581f }; int lda = 3; ! float B[] = { -0.018f, 0.574f, -0.144f, -0.758f, 0.53f, 0.623f, -0.771f, -0.733f, 0.932f, -0.192f, 0.997f, 0.773f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1774) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1774) imag"); }; }; --- 2553,2568 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.867f, -0.597f, -0.577f, 0.735f, 0.827f, -0.104f, -0.861f, -0.802f, -0.288f, 0.293f, 0.593f, 0.228f, -0.469f, 0.942f, 0.193f, 0.591f, 0.241f, 0.382f }; int lda = 3; ! float B[] = { -0.812f, -0.874f, -0.18f, -0.81f, 0.023f, 0.352f, 0.559f, 0.237f, -0.835f, 0.037f, -0.762f, 0.782f }; int ldb = 3; ! float B_expected[] = { -0.331628f, -0.278177f, -0.0214727f, -0.156013f, -0.0496067f, -0.0088131f, 0.119788f, -0.469291f, -0.0804714f, -0.263663f, -0.0824792f, -0.132356f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1766) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1766) imag"); }; }; *************** *** 2578,2593 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.627f, 0.511f, -0.246f, -0.091f, 0.66f, -0.983f, 0.99f, 0.057f, -0.259f, 0.18f, 0.606f, 0.058f, -0.238f, 0.717f, 0.358f, -0.851f, -0.71f, -0.683f }; int lda = 3; ! float B[] = { -0.907f, 0.956f, 0.56f, -0.057f, 0.054f, -0.77f, 0.868f, -0.843f, 0.645f, -0.554f, -0.958f, 0.988f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1775) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1775) imag"); }; }; --- 2578,2593 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.258f, -0.812f, -0.858f, -0.107f, -0.151f, 0.785f, 0.717f, 0.992f, -0.649f, -0.242f, -0.454f, 0.916f, 0.86f, 0.834f, -0.244f, 0.391f, 0.818f, -0.714f }; int lda = 3; ! float B[] = { 0.163f, 0.441f, 0.54f, 0.679f, 0.071f, -0.76f, 0.345f, -0.956f, 0.654f, -0.217f, -0.892f, 0.106f }; int ldb = 3; ! float B_expected[] = { 0.296566f, -0.0905963f, -0.0393822f, -0.306541f, 0.0547f, 0.2351f, -0.0059345f, 0.0071855f, -0.402014f, -0.049978f, 0.257f, -0.121f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1767) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1767) imag"); }; }; *************** *** 2603,2618 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.882f, 0.431f, -0.868f, -0.098f, -0.006f, -0.639f, 0.757f, -0.009f, -0.821f, 0.45f, 0.347f, 0.801f, 0.314f, 0.936f, -0.725f, 0.956f, 0.536f, 0.771f }; int lda = 3; ! float B[] = { 0.38f, -0.435f, 0.977f, 0.296f, -0.624f, -0.53f, 0.73f, -0.837f, 0.105f, 0.189f, 0.362f, -0.664f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1776) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1776) imag"); }; }; --- 2603,2618 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.525f, 0.182f, 0.851f, -0.348f, -0.046f, 0.839f, -0.045f, -0.149f, -0.992f, 0.588f, -0.01f, -0.409f, 0.527f, 0.263f, -0.509f, -0.026f, 0.284f, 0.507f }; int lda = 3; ! float B[] = { 0.909f, 0.216f, 0.38f, 0.198f, -0.412f, -0.102f, -0.456f, 0.079f, 0.504f, -0.782f, -0.88f, 0.079f }; int ldb = 3; ! float B_expected[] = { -0.149757f, 0.0672651f, 0.129501f, 0.054878f, -0.0469462f, 0.0277224f, 0.0550599f, -0.0598423f, 0.244521f, -0.217471f, 0.0955519f, -0.37895f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1768) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1768) imag"); }; }; *************** *** 2628,2643 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.595f, -0.775f, 0.75f, 0.16f, -0.572f, 0.658f, 0.216f, 0.557f, -0.279f, 0.095f, -0.495f, 0.503f, 0.071f, -0.03f, -0.116f, 0.78f, -0.104f, 0.073f }; int lda = 3; ! float B[] = { 0.948f, 0.749f, -0.854f, 0.972f, 0.704f, 0.187f, 0.347f, 0.303f, -0.865f, 0.123f, -0.041f, 0.152f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1777) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1777) imag"); }; }; --- 2628,2643 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.893f, -0.758f, 0.145f, 0.623f, -0.018f, -0.733f, -0.144f, -0.192f, 0.53f, 0.773f, -0.771f, 0.36f, 0.932f, -0.771f, 0.997f, -0.671f, 0.574f, -0.771f }; int lda = 3; ! float B[] = { 0.592f, 0.985f, -0.62f, -0.095f, -0.344f, -0.607f, 0.759f, 0.085f, -0.609f, 0.068f, -0.084f, -0.575f }; int ldb = 3; ! float B_expected[] = { -0.2761f, -0.2363f, 0.280628f, -0.052484f, 0.306154f, -0.187624f, -0.2362f, 0.0504f, 0.200236f, -0.133908f, 0.0536278f, 0.0659354f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1769) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1769) imag"); }; }; *************** *** 2653,2668 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.617f, -0.331f, -0.074f, 0.719f, -0.469f, -0.852f, 0.25f, -0.175f, -0.719f, -0.613f, -0.321f, 0.973f, -0.337f, -0.35f, 0.607f, -0.553f, 0.688f, 0.463f }; int lda = 3; ! float B[] = { 0.568f, -0.471f, -0.947f, -0.205f, 0.835f, -0.859f, 0.27f, -0.599f, 0.171f, -0.514f, 0.939f, 0.176f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1778) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1778) imag"); }; }; --- 2653,2668 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.503f, -0.057f, -0.581f, -0.77f, -0.907f, -0.843f, 0.56f, -0.554f, 0.054f, 0.988f, 0.868f, -0.627f, 0.645f, -0.246f, -0.958f, 0.66f, 0.956f, 0.99f }; int lda = 3; ! float B[] = { 0.282f, -0.442f, 0.564f, -0.691f, -0.743f, 0.113f, -0.395f, 0.312f, -0.167f, -0.568f, 0.508f, 0.912f }; int ldb = 2; ! float B_expected[] = { 0.180092f, 0.260648f, -0.045069f, -0.102868f, -0.0964434f, -0.432702f, -0.0404678f, 0.280779f, 0.254359f, 0.0411062f, -0.453454f, 0.0281672f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1770) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1770) imag"); }; }; *************** *** 2678,2693 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.99f, -0.857f, 0.728f, -0.31f, -0.506f, -0.393f, 0.97f, 0.282f, 0.375f, -0.286f, -0.496f, -0.057f, 0.186f, -0.34f, 0.608f, -0.52f, 0.921f, -0.875f }; int lda = 3; ! float B[] = { -0.929f, 0.885f, 0.864f, -0.548f, 0.393f, 0.391f, 0.033f, 0.186f, 0.949f, -0.435f, 0.986f, -0.995f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1779) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1779) imag"); }; }; --- 2678,2693 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.851f, 0.296f, -0.683f, -0.53f, 0.38f, -0.837f, 0.977f, 0.189f, -0.624f, -0.664f, 0.73f, -0.882f, 0.105f, -0.868f, 0.362f, -0.006f, -0.435f, 0.757f }; int lda = 3; ! float B[] = { -0.259f, -0.091f, 0.606f, -0.983f, -0.238f, 0.057f, 0.358f, 0.18f, -0.71f, 0.058f, 0.511f, 0.717f }; int ldb = 2; ! float B_expected[] = { 0.241746f, 0.119591f, -0.0907286f, 0.148899f, 0.141237f, -0.0716576f, -0.205866f, -0.078918f, 0.2072f, -0.0884f, -0.225f, -0.164f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1771) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1771) imag"); }; }; *************** *** 2703,2718 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.101f, -0.92f, 0.969f, -0.017f, -0.016f, -0.024f, -0.11f, 0.219f, -0.287f, -0.937f, 0.619f, 0.166f, -0.068f, 0.753f, 0.374f, 0.076f, 0.79f, -0.64f }; int lda = 3; ! float B[] = { 0.255f, 0.564f, -0.478f, -0.818f, -0.043f, 0.224f, -0.268f, 0.253f, 0.021f, 0.654f, 0.98f, -0.774f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1780) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1780) imag"); }; }; --- 2703,2718 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.956f, 0.972f, 0.771f, 0.187f, 0.948f, 0.303f, -0.854f, 0.123f, 0.704f, 0.152f, 0.347f, 0.595f, -0.865f, 0.75f, -0.041f, -0.572f, 0.749f, 0.216f }; int lda = 3; ! float B[] = { -0.821f, -0.098f, 0.347f, -0.639f, 0.314f, -0.009f, -0.725f, 0.45f, 0.536f, 0.801f, 0.431f, 0.936f }; int ldb = 2; ! float B_expected[] = { 0.193607f, -0.29931f, 0.18163f, 0.255513f, 0.127098f, -0.0503344f, 0.101243f, 0.0097718f, -0.0060322f, -0.148016f, -0.251411f, -0.0777231f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1772) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1772) imag"); }; }; *************** *** 2728,2743 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.068f, -0.603f, -0.055f, 0.14f, 0.664f, 0.987f, 0.861f, -0.691f, -0.897f, -0.778f, 0.516f, -0.073f, -0.156f, -0.42f, 0.57f, 0.628f, 0.116f, 0.344f }; int lda = 3; ! float B[] = { 0.922f, 0.39f, -0.724f, 0.421f, 0.418f, 0.92f, -0.222f, 0.835f, 0.417f, -0.392f, 0.012f, -0.346f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1781) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1781) imag"); }; }; --- 2728,2743 ---- int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.78f, -0.205f, 0.073f, -0.859f, 0.568f, -0.599f, -0.947f, -0.514f, 0.835f, 0.176f, 0.27f, -0.617f, 0.171f, -0.074f, 0.939f, -0.469f, -0.471f, 0.25f }; int lda = 3; ! float B[] = { -0.279f, 0.16f, -0.495f, 0.658f, 0.071f, 0.557f, -0.116f, 0.095f, -0.104f, 0.503f, -0.775f, -0.03f }; int ldb = 2; ! float B_expected[] = { 0.0677f, -0.0759f, 0.0827f, -0.2469f, -0.0068598f, -0.107386f, 0.243424f, 0.0129156f, 0.142748f, -0.254568f, 0.461939f, -0.154419f }; cblas_ctrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrmm(case 1773) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrmm(case 1773) imag"); }; }; *************** *** 2754,2760 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.904, 0.243, 0.206, 0.68, -0.946, 0.946, -0.675, 0.729 }; int lda = 2; ! double B[] = { 0.427, 0.116, 0.916, -0.384, -0.372, -0.754, 0.148, 0.089, -0.924, 0.974, -0.307, -0.55 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2754,2760 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.463, 0.033, -0.929, 0.949, 0.864, 0.986, 0.393, 0.885 }; int lda = 2; ! double B[] = { -0.321, -0.852, -0.337, -0.175, 0.607, -0.613, 0.688, 0.973, -0.331, -0.35, 0.719, -0.553 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2763,2768 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1782) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1782) imag"); }; }; --- 2763,2768 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1774) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1774) imag"); }; }; *************** *** 2779,2785 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.898, 0.709, 0.719, -0.207, -0.841, -0.017, 0.202, -0.385 }; int lda = 2; ! double B[] = { 0.308, 0.507, -0.838, 0.594, -0.811, 0.152, 0.118, -0.024, -0.632, 0.992, -0.942, 0.901 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2779,2785 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.608, -0.393, 0.921, 0.282, -0.857, -0.286, -0.31, -0.057 }; int lda = 2; ! double B[] = { -0.548, 0.728, 0.391, -0.506, 0.186, 0.97, -0.435, 0.375, -0.995, -0.496, 0.99, 0.186 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2788,2793 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1783) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1783) imag"); }; }; --- 2788,2793 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1775) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1775) imag"); }; }; *************** *** 2804,2810 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.849, 0.455, -0.273, -0.668, 0.196, -0.985, -0.39, 0.564 }; int lda = 2; ! double B[] = { -0.874, 0.188, -0.039, 0.692, 0.33, 0.119, 0.012, 0.425, 0.787, -0.918, 0.739, -0.871 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2804,2810 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.253, 0.969, 0.654, -0.016, -0.774, -0.11, -0.101, -0.287 }; int lda = 2; ! double B[] = { -0.34, -0.268, -0.52, 0.021, -0.875, 0.98, 0.255, 0.564, -0.478, -0.818, -0.043, 0.224 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2813,2818 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1784) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1784) imag"); }; }; --- 2813,2818 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1776) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1776) imag"); }; }; *************** *** 2829,2835 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.325, 0.28, 0.902, -0.603, 0.091, -0.92, 0.209, -0.009 }; int lda = 2; ! double B[] = { -0.202, -0.53, -0.88, -0.688, -0.215, 0.837, 0.917, 0.755, 0.477, 0.892, -0.524, -0.741 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2829,2835 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.64, -0.222, 0.922, 0.417, -0.724, 0.012, 0.418, 0.39 }; int lda = 2; ! double B[] = { 0.619, -0.024, -0.068, 0.219, 0.374, -0.937, 0.79, 0.166, -0.92, 0.753, -0.017, 0.076 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2838,2843 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1785) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1785) imag"); }; }; --- 2838,2843 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1777) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1777) imag"); }; }; *************** *** 2854,2860 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.756, 0.874, 0.56, 0.157, -0.831, -0.991, -0.531, 0.813 }; int lda = 2; ! double B[] = { 0.271, 0.783, -0.861, 0.635, -0.088, 0.434, 0.256, -0.34, -0.724, -0.277, -0.604, 0.986 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2854,2860 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.57, 0.987, 0.116, -0.691, -0.603, -0.778, 0.14, -0.073 }; int lda = 2; ! double B[] = { 0.421, -0.055, 0.92, 0.664, 0.835, 0.861, -0.392, -0.897, -0.346, 0.516, -0.068, -0.156 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2863,2868 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1786) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1786) imag"); }; }; --- 2863,2868 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1778) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1778) imag"); }; }; *************** *** 2879,2885 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.371, -0.609, -0.812, -0.818, 0.45, -0.41, -0.704, -0.917 }; int lda = 2; ! double B[] = { -0.268, 0.929, 0.82, 0.253, -0.883, 0.497, -0.265, 0.623, 0.131, -0.946, -0.365, 0.333 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2879,2885 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.754, 0.904, 0.089, 0.206, 0.974, -0.946, -0.55, -0.675 }; int lda = 2; ! double B[] = { -0.42, -0.372, 0.628, 0.148, 0.344, -0.924, -0.802, -0.307, 0.427, 0.116, 0.916, -0.384 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2888,2893 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1787) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1787) imag"); }; }; --- 2888,2893 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1779) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1779) imag"); }; }; *************** *** 2904,2910 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.265, 0.8, -0.676, -0.592, 0.78, -0.838, -0.651, 0.115 }; int lda = 2; ! double B[] = { 0.942, 0.692, -0.516, 0.378, 0.028, 0.265, 0.289, -0.721, -0.25, -0.952, 0.463, -0.34 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2904,2910 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.152, -0.898, -0.024, 0.719, 0.992, -0.841, 0.901, 0.202 }; int lda = 2; ! double B[] = { 0.243, -0.811, 0.68, 0.118, 0.946, -0.632, 0.729, -0.942, 0.308, 0.507, -0.838, 0.594 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2913,2918 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1788) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1788) imag"); }; }; --- 2913,2918 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1780) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1780) imag"); }; }; *************** *** 2929,2935 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.852, -0.478, 0.16, 0.824, 0.073, 0.962, 0.509, -0.58 }; int lda = 2; ! double B[] = { -0.789, 0.015, -0.779, -0.565, 0.048, -0.095, -0.272, 0.405, 0.272, 0.082, -0.693, -0.365 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2929,2935 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.119, -0.849, 0.425, -0.273, -0.918, 0.196, -0.871, -0.39 }; int lda = 2; ! double B[] = { 0.709, 0.33, -0.207, 0.012, -0.017, 0.787, -0.385, 0.739, -0.874, 0.188, -0.039, 0.692 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2938,2943 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1789) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1789) imag"); }; }; --- 2938,2943 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1781) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1781) imag"); }; }; *************** *** 2954,2960 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.251, 0.28, -0.092, 0.724, 0.928, -0.309, -0.222, -0.791, 0.113, -0.528, 0.148, 0.421, -0.833, 0.371, 0.354, 0.616, 0.313, 0.323 }; int lda = 3; ! double B[] = { -0.769, -0.059, -0.068, 0.945, 0.938, -0.358, -0.17, 0.751, -0.248, -0.321, -0.818, 0.183 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2954,2960 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.837, -0.603, 0.755, -0.92, 0.892, -0.009, -0.741, 0.271, -0.325, -0.861, 0.902, -0.088, 0.091, 0.256, 0.209, -0.724, 0.28, -0.604 }; int lda = 3; ! double B[] = { 0.455, -0.215, -0.668, 0.917, -0.985, 0.477, 0.564, -0.524, -0.202, -0.53, -0.88, -0.688 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2963,2968 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1790) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1790) imag"); }; }; --- 2963,2968 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1782) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1782) imag"); }; }; *************** *** 2979,2985 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.707, -0.802, 0.13, -0.19, -0.564, -0.74, 0.118, -0.194, -0.124, -0.421, 0.665, 0.308, 0.505, -0.278, 0.588, 0.957, -0.727, 0.976 }; int lda = 3; ! double B[] = { 0.153, -0.09, -0.4, 0.669, 0.689, -0.238, -0.259, 0.891, 0.993, 0.996, -0.829, -0.736 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2979,2985 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.991, 0.253, 0.813, 0.497, -0.268, 0.623, 0.82, -0.946, -0.883, 0.333, -0.265, -0.371, 0.131, -0.812, -0.365, 0.45, 0.929, -0.704 }; int lda = 3; ! double B[] = { 0.783, -0.756, 0.635, 0.56, 0.434, -0.831, -0.34, -0.531, -0.277, 0.874, 0.986, 0.157 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2988,2993 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1791) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1791) imag"); }; }; --- 2988,2993 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1783) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1783) imag"); }; }; *************** *** 3004,3010 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.83, 0.316, -0.099, 0.824, 0.767, 0.662, 0.244, 0.872, 0.35, 0.969, -0.084, 0.907, -0.752, -0.675, 0.129, -0.649, -0.539, 0.969 }; int lda = 3; ! double B[] = { -0.145, 0.254, -0.497, -0.713, -0.742, 0.183, 0.272, -0.858, -0.606, -0.605, -0.807, 0.686 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3004,3010 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.265, -0.592, -0.721, -0.838, -0.952, 0.115, -0.34, -0.789, -0.265, -0.779, -0.676, 0.048, 0.78, -0.272, -0.651, 0.272, 0.8, -0.693 }; int lda = 3; ! double B[] = { -0.609, 0.028, -0.818, 0.289, -0.41, -0.25, -0.917, 0.463, 0.942, 0.692, -0.516, 0.378 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3013,3018 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1792) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1792) imag"); }; }; --- 3013,3018 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1784) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1784) imag"); }; }; *************** *** 3029,3035 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.091, 0.658, -0.834, -0.171, -0.126, -0.268, 0.879, -0.431, 0.678, -0.749, 0.136, -0.757, -0.578, 0.456, 0.978, -0.315, 0.333, 0.327 }; int lda = 3; ! double B[] = { 0.963, -0.859, 0.599, 0.856, -0.924, 0.382, -0.531, 0.567, -0.454, 0.018, 0.97, 0.578 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3029,3035 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.962, 0.945, -0.58, -0.358, -0.769, 0.751, -0.068, -0.321, 0.938, 0.183, -0.17, 0.251, -0.248, -0.092, -0.818, 0.928, -0.059, -0.222 }; int lda = 3; ! double B[] = { 0.015, -0.852, -0.565, 0.16, -0.095, 0.073, 0.405, 0.509, 0.082, -0.478, -0.365, 0.824 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3038,3043 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1793) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1793) imag"); }; }; --- 3038,3043 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1785) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1785) imag"); }; }; *************** *** 3054,3060 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.849, -0.819, 0.673, 0.574, -0.869, -0.969, -0.338, -0.097, -0.601, 0.903, 0.634, 0.313, 0.228, -0.028, 0.419, -0.762, 0.21, -0.532 }; int lda = 3; ! double B[] = { -0.283, 0.999, -0.356, -0.459, 0.508, -0.132, -0.804, 0.173, 0.779, -0.427, 0.019, 0.347 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3054,3060 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.616, 0.669, 0.323, -0.238, 0.153, 0.891, -0.4, 0.996, 0.689, -0.736, -0.259, -0.707, 0.993, 0.13, -0.829, -0.564, -0.09, 0.118 }; int lda = 3; ! double B[] = { 0.113, 0.724, 0.148, -0.309, -0.833, -0.791, 0.354, -0.528, 0.313, 0.421, 0.28, 0.371 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3063,3068 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1794) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1794) imag"); }; }; --- 3063,3068 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1786) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1786) imag"); }; }; *************** *** 3079,3085 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.117, -0.663, -0.95, -0.273, -0.497, -0.037, 0.084, -0.831, 0.023, -0.241, 0.063, -0.023, -0.498, -0.137, -0.77, 0.457, -0.021, -0.69 }; int lda = 3; ! double B[] = { 0.308, -0.004, 0.013, 0.354, 0.077, -0.944, -0.877, 0.741, -0.807, -0.3, 0.891, -0.056 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3079,3085 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.957, -0.713, 0.976, 0.183, -0.145, -0.858, -0.497, -0.605, -0.742, 0.686, 0.272, 0.83, -0.606, -0.099, -0.807, 0.767, 0.254, 0.244 }; int lda = 3; ! double B[] = { -0.124, -0.19, 0.665, -0.74, 0.505, -0.194, 0.588, -0.421, -0.727, 0.308, -0.802, -0.278 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3088,3093 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1795) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1795) imag"); }; }; --- 3088,3093 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1787) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1787) imag"); }; }; *************** *** 3104,3110 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.964, -0.653, 0.379, 0.994, -0.378, -0.409, 0.24, -0.333, 0.558, -0.099, -0.402, -0.812, 0.421, 0.823, -0.771, 0.998, 0.697, 0.253 }; int lda = 3; ! double B[] = { 0.34, 0.479, 0.539, -0.133, 0.876, -0.347, 0.706, -0.623, 0.399, 0.903, -0.7, -0.088 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3104,3110 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.649, 0.856, 0.969, 0.382, 0.963, 0.567, 0.599, 0.018, -0.924, 0.578, -0.531, -0.091, -0.454, -0.834, 0.97, -0.126, -0.859, 0.879 }; int lda = 3; ! double B[] = { 0.35, 0.824, -0.084, 0.662, -0.752, 0.872, 0.129, 0.969, -0.539, 0.907, 0.316, -0.675 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3113,3118 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1796) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1796) imag"); }; }; --- 3113,3118 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1788) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1788) imag"); }; }; *************** *** 3129,3135 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.104, 0.643, -0.253, -0.988, -0.051, -0.805, 0.451, -0.421, -0.177, -0.534, -0.714, -0.581, -0.177, -0.582, -0.57, 0.259, -0.66, -0.864 }; int lda = 3; ! double B[] = { 0.636, -0.365, -0.107, -0.279, 0.425, 0.976, 0.657, 0.294, 0.827, 0.187, 0.353, 0.31 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3129,3135 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.315, -0.459, 0.327, -0.132, -0.283, 0.173, -0.356, -0.427, 0.508, 0.347, -0.804, -0.849, 0.779, 0.673, 0.019, -0.869, 0.999, -0.338 }; int lda = 3; ! double B[] = { 0.678, -0.171, 0.136, -0.268, -0.578, -0.431, 0.978, -0.749, 0.333, -0.757, 0.658, 0.456 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3138,3143 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1797) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1797) imag"); }; }; --- 3138,3143 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1789) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1789) imag"); }; }; *************** *** 3153,3168 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.273, 0.812, 0.295, -0.415, -0.227, 0.901, 0.623, 0.786 }; int lda = 2; ! double B[] = { -0.539, -0.551, -0.969, 0.09, -0.581, -0.594, -0.833, 0.457, -0.284, 0.434, -0.459, -0.662 }; int ldb = 3; ! double B_expected[] = { -0.0312704, 0.2064538, 0.1775109, 0.1949157, -0.0337211, 0.2225517, 0.410638, -0.033917, 0.182384, -0.219409, 0.1257905, 0.1938415 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1798) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1798) imag"); }; }; --- 3153,3168 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.532, -0.877, 0.308, -0.807, 0.013, 0.891, 0.077, -0.004 }; int lda = 2; ! double B[] = { 0.634, -0.969, 0.228, -0.097, 0.419, 0.903, 0.21, 0.313, -0.819, -0.028, 0.574, -0.762 }; int ldb = 3; ! double B_expected[] = { 0.004051, -0.1187101, 0.0148352, -0.0206365, 0.0847859, 0.0569023, 0.0786829, -0.0569289, 0.0212752, -0.007123, 0.0120979, 0.0898923 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1790) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1790) imag"); }; }; *************** *** 3178,3193 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.323, 0.02, 0.718, 0.152, 0.665, 0.289, 0.317, 0.705 }; int lda = 2; ! double B[] = { 0.448, -0.75, 0.851, 0.172, -0.244, 0.398, 0.602, 0.31, -0.017, 0.181, -0.119, 0.402 }; int ldb = 3; ! double B_expected[] = { -0.0594, 0.2698, -0.2725, 0.0335, 0.0334, -0.1438, -0.2952588, 0.1518876, -0.213747, -0.073367, 0.0413388, -0.2306716 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1799) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1799) imag"); }; }; --- 3178,3193 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.77, -0.037, -0.021, -0.831, -0.663, -0.241, -0.273, -0.023 }; int lda = 2; ! double B[] = { 0.354, -0.95, -0.944, -0.497, 0.741, 0.084, -0.3, 0.023, -0.056, 0.063, -0.117, -0.498 }; int ldb = 3; ! double B_expected[] = { 0.095, 0.0354, 0.0497, -0.0944, -0.0084, 0.0741, 0.0251224, -0.1096884, -0.0857901, -0.0449183, 0.1115535, -0.0062757 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1791) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1791) imag"); }; }; *************** *** 3203,3218 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.578, 0.018, -0.093, 0.964, 0.414, -0.729, 0.696, 0.874 }; int lda = 2; ! double B[] = { -0.735, 0.788, -0.942, -0.71, -0.254, 0.265, 0.304, 0.218, 0.247, -0.172, 0.419, 0.448 }; int ldb = 3; ! double B_expected[] = { -0.1486214, 0.2495598, -0.1744531, 0.0107667, -0.1648579, 0.1475263, -0.048058, -0.123122, -0.1062886, 0.0033742, -0.037823, -0.213397 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1800) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1800) imag"); }; }; --- 3203,3218 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.623, 0.379, 0.903, -0.378, -0.088, 0.24, -0.964, 0.558 }; int lda = 2; ! double B[] = { -0.137, 0.706, 0.457, 0.399, -0.69, -0.7, 0.34, 0.479, 0.539, -0.133, 0.876, -0.347 }; int ldb = 3; ! double B_expected[] = { 0.0452313, -0.0327103, -0.006569, -0.0451444, -0.0415366, 0.0701362, 0.0272036, -0.0595042, -0.0428974, -0.0445382, -0.0823316, -0.0650838 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1792) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1792) imag"); }; }; *************** *** 3228,3243 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.358, -0.773, -0.065, 0.532, -0.319, 0.455, 0.578, 0.493 }; int lda = 2; ! double B[] = { 0.744, -0.958, 0.162, 0.555, -0.131, 0.971, -0.467, 0.175, -0.794, 0.191, 0.361, 0.882 }; int ldb = 3; ! double B_expected[] = { -0.1213734, 0.4492278, -0.1117944, -0.0070022, 0.108851, -0.320916, 0.1226, -0.0992, 0.2191, -0.1367, -0.1965, -0.2285 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1801) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1801) imag"); }; }; --- 3228,3243 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.253, 0.657, 0.636, 0.827, -0.107, 0.353, 0.425, -0.365 }; int lda = 2; ! double B[] = { -0.402, -0.409, 0.421, -0.333, -0.771, -0.099, 0.697, -0.812, -0.653, 0.823, 0.994, 0.998 }; int ldb = 3; ! double B_expected[] = { 0.0076075, -0.0189943, 0.065157, 0.0200352, -0.0145096, -0.1229652, 0.0812, 0.0697, -0.0823, -0.0653, -0.0998, 0.0994 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1793) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1793) imag"); }; }; *************** *** 3253,3268 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.354, -0.504, -0.177, 0.186, -0.762, -0.506, 0.758, -0.994 }; int lda = 2; ! double B[] = { -0.944, 0.562, 0.142, 0.742, 0.632, -0.627, -0.101, 0.476, 0.476, 0.675, 0.912, -0.33 }; int ldb = 2; ! double B_expected[] = { -0.21291, -0.021306, -0.601736, 0.043676, 0.1715778, -0.0250026, 0.0587596, -0.2259812, -0.0036234, 0.1608258, 0.0885532, 0.6077736 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1802) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1802) imag"); }; }; --- 3253,3268 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.57, -0.805, -0.66, -0.421, 0.643, -0.534, -0.988, -0.581 }; int lda = 2; ! double B[] = { -0.279, -0.253, 0.976, -0.051, 0.294, 0.451, 0.187, -0.177, 0.31, -0.714, -0.104, -0.177 }; int ldb = 2; ! double B_expected[] = { -0.0368805, -0.0044635, 0.0530361, -0.1308418, 0.049374, 0.0195475, -0.0199226, 0.0142283, -0.015743, -0.075147, 0.0389342, -0.0182031 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1794) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1794) imag"); }; }; *************** *** 3278,3293 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.001, 0.015, 0.942, 0.497, -0.104, 0.803, 0.679, 0.026 }; int lda = 2; ! double B[] = { 0.889, -0.216, -0.912, -0.263, -0.329, 0.681, 0.332, -0.5, -0.484, 0.741, -0.728, -0.912 }; int ldb = 2; ! double B_expected[] = { -0.2451, 0.1537, 0.2019693, -0.2251001, 0.0306, -0.2372, 0.1376892, 0.2324406, 0.0711, -0.2707, 0.5195777, 0.2860461 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1803) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1803) imag"); }; }; --- 3278,3293 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.594, 0.273, 0.457, 0.295, 0.434, -0.227, -0.662, 0.623 }; int lda = 2; ! double B[] = { -0.582, -0.581, 0.259, -0.833, -0.864, -0.284, 0.965, -0.459, -0.539, -0.551, -0.969, 0.09 }; int ldb = 2; ! double B_expected[] = { 0.0581, -0.0582, 0.095304, -0.0125475, 0.0284, -0.0864, 0.0386128, 0.0525556, 0.0551, -0.0539, 0.0026781, -0.1328003 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1795) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1795) imag"); }; }; *************** *** 3303,3318 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.563, 0.394, -0.902, -0.27, 0.461, 0.939, -0.597, 0.803 }; int lda = 2; ! double B[] = { 0.535, -0.111, 0.379, -0.036, 0.803, -0.341, 0.667, 0.001, 0.775, 0.714, 0.908, -0.508 }; int ldb = 2; ! double B_expected[] = { 0.1623722, -0.1219324, 0.0266236, -0.1174842, 0.2429924, -0.1901218, 0.0662002, -0.2004014, 0.4905027, -0.2023089, -0.0629944, -0.3231352 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1804) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1804) imag"); }; }; --- 3303,3318 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.398, 0.323, 0.31, 0.718, 0.181, 0.665, 0.402, 0.317 }; int lda = 2; ! double B[] = { 0.812, -0.244, -0.415, 0.602, 0.901, -0.017, 0.786, -0.119, 0.448, -0.75, 0.851, 0.172 }; int ldb = 2; ! double B_expected[] = { -0.0053814, -0.0158898, -0.0110449, -0.0357664, -0.0811715, 0.0693191, -0.0201324, 0.0353695, -0.0510542, 0.0560868, -0.0338911, 0.0287578 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1796) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1796) imag"); }; }; *************** *** 3328,3343 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.159, 0.032, 0.785, 0.049, -0.128, 0.132, -0.735, -0.235 }; int lda = 2; ! double B[] = { -0.331, -0.257, -0.725, 0.689, -0.793, 0.398, 0.127, -0.098, -0.498, -0.307, -0.019, 0.517 }; int ldb = 2; ! double B_expected[] = { 0.2553318, -0.1678906, 0.1486, -0.2792, 0.1738216, -0.1670382, -0.0283, 0.0421, 0.151683, -0.083199, -0.046, -0.157 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1805) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1805) imag"); }; }; --- 3328,3343 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.265, -0.578, 0.218, -0.093, -0.172, 0.414, 0.448, 0.696 }; int lda = 2; ! double B[] = { 0.02, -0.254, 0.152, 0.304, 0.289, 0.247, 0.705, 0.419, -0.735, 0.788, -0.942, -0.71 }; int ldb = 2; ! double B_expected[] = { 0.0201864, 0.0081408, -0.0304, 0.0152, -0.0272777, 0.0481657, -0.0419, 0.0705, -0.0720826, -0.1006386, 0.071, -0.0942 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1797) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1797) imag"); }; }; *************** *** 3353,3368 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.416, -0.424, -0.088, 0.614, -0.371, 0.983, -0.737, -0.647, 0.321, -0.518, 0.058, -0.533, 0.153, 0.283, 0.342, 0.993, -0.071, 0.225 }; int lda = 3; ! double B[] = { -0.09, -0.844, -0.707, 0.903, 0.632, -0.294, -0.558, 0.74, -0.99, -0.855, -0.189, 0.543 }; int ldb = 3; ! double B_expected[] = { 0.1668304, -0.2576208, -0.0664464, -0.0785782, -0.0226908, -0.0467944, -0.1091876, 0.3667652, 0.1076073, -0.1594011, 0.0407346, 0.0134478 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1806) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1806) imag"); }; }; --- 3353,3368 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.971, 0.532, 0.175, 0.455, 0.191, 0.493, 0.882, -0.944, 0.358, 0.142, -0.065, 0.632, -0.319, -0.101, 0.578, 0.476, -0.773, 0.912 }; int lda = 3; ! double B[] = { 0.018, -0.131, 0.964, -0.467, -0.729, -0.794, 0.874, 0.361, 0.744, -0.958, 0.162, 0.555 }; int ldb = 3; ! double B_expected[] = { 0.0271781, 0.0720558, 0.0439416, 0.0960619, 0.0051086, 0.1287645, -0.117224, 0.0980019, 0.0171007, 0.0041098, 0.0281271, -0.0631386 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1798) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1798) imag"); }; }; *************** *** 3378,3393 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.67, -0.423, -0.165, 0.157, -0.43, 0.674, -0.35, 0.434, 0.972, -0.116, -0.029, 0.316, 0.914, 0.321, 0.132, 0.034, -0.907, -0.401 }; int lda = 3; ! double B[] = { -0.396, 0.71, -0.588, 0.709, -0.024, -0.704, -0.988, 0.656, 0.665, -0.085, -0.778, 0.264 }; int ldb = 3; ! double B_expected[] = { -0.1010812, -0.2287206, 0.0372688, -0.2530336, 0.0776, 0.2088, 0.264679, -0.133739, -0.147391, 0.161965, 0.207, -0.157 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1807) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1807) imag"); }; }; --- 3378,3393 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.506, -0.263, -0.994, 0.681, 0.889, -0.5, -0.912, 0.741, -0.329, -0.912, 0.332, -0.001, -0.484, 0.942, -0.728, -0.104, -0.216, 0.679 }; int lda = 3; ! double B[] = { 0.562, -0.354, 0.742, -0.177, -0.627, -0.762, 0.476, 0.758, 0.675, -0.504, -0.33, 0.186 }; int ldb = 3; ! double B_expected[] = { 0.0036678, -0.0993414, 0.0429357, 0.0533074, 0.0762, -0.0627, -0.2049005, -0.0052096, 0.0441918, 0.0565626, -0.0186, -0.033 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1799) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1799) imag"); }; }; *************** *** 3403,3418 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.756, -0.149, -0.706, -0.162, -0.145, 0.67, 0.416, -0.27, -0.916, 0.995, -0.863, -0.25, -0.079, 0.248, -0.191, -0.195, 0.981, 0.834 }; int lda = 3; ! double B[] = { 0.329, 0.921, -0.018, -0.02, 0.095, -0.892, -0.105, -0.799, -0.583, 0.564, -0.436, 0.965 }; int ldb = 3; ! double B_expected[] = { -0.1805114, -0.1555812, -0.1560482, -0.0462226, -0.0967127, 0.2921239, 0.1183692, 0.1566766, 0.2260429, 0.3915667, 0.1788155, -0.2682995 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1808) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1808) imag"); }; }; --- 3403,3418 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.341, -0.27, 0.001, 0.939, 0.714, 0.803, -0.508, -0.331, -0.563, -0.725, -0.902, -0.793, 0.461, 0.127, -0.597, -0.498, 0.394, -0.019 }; int lda = 3; ! double B[] = { 0.015, 0.803, 0.497, 0.667, 0.803, 0.775, 0.026, 0.908, 0.535, -0.111, 0.379, -0.036 }; int ldb = 3; ! double B_expected[] = { 0.0277873, 0.0211695, 0.1148735, 0.0461937, -0.0016476, 0.0271498, 0.0316648, 0.0236294, 0.0795252, -0.009434, -0.0200342, -0.0329361 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1800) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1800) imag"); }; }; *************** *** 3428,3443 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.552, -0.668, -0.013, 0.088, -0.766, 0.977, 0.088, -0.06, -0.311, 0.872, -0.328, -0.01, 0.659, -0.327, -0.276, 0.553, -0.734, -0.079 }; int lda = 3; ! double B[] = { -0.87, 0.728, 0.997, -0.36, -0.046, -0.505, 0.082, -0.787, 0.414, 0.965, -0.048, -0.591 }; int ldb = 3; ! double B_expected[] = { 0.1882, -0.3054, -0.2648624, 0.1695328, 0.0462155, -0.3187195, 0.0541, 0.2443, -0.2012812, -0.2298476, 0.3871505, 0.2622315 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1809) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1809) imag"); }; }; --- 3428,3443 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.132, 0.903, -0.235, -0.294, -0.09, 0.74, -0.707, -0.855, 0.632, 0.543, -0.558, -0.416, -0.99, -0.088, -0.189, -0.371, -0.844, -0.737 }; int lda = 3; ! double B[] = { -0.257, 0.159, 0.689, 0.785, 0.398, -0.128, -0.098, -0.735, -0.307, 0.032, 0.517, 0.049 }; int ldb = 3; ! double B_expected[] = { -0.0159, -0.0257, -0.0892322, 0.1006644, 0.0666778, 0.0827436, 0.0735, -0.0098, -0.0635435, -0.0866139, -0.0893123, 0.0619235 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1801) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1801) imag"); }; }; *************** *** 3453,3468 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.349, -0.072, 0.545, 0.212, -0.306, -0.009, 0.757, -0.925, 0.159, 0.308, 0.476, 0.1, 0.725, -0.757, -0.245, 0.571, 0.515, 0.993 }; int lda = 3; ! double B[] = { 0.865, 0.501, 0.165, -0.63, -0.513, 0.351, -0.521, -0.062, 0.54, -0.634, -0.719, 0.216 }; int ldb = 2; ! double B_expected[] = { -0.054193, 0.023274, 0.1487731, -0.3509657, -0.0481592, -0.1044386, 0.0666567, 0.1890461, -0.2932696, 0.0278532, 0.2357046, 0.1223408 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1810) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1810) imag"); }; }; --- 3453,3468 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.993, 0.709, 0.225, -0.704, -0.396, 0.656, -0.588, -0.085, -0.024, 0.264, -0.988, -0.67, 0.665, -0.165, -0.778, -0.43, 0.71, -0.35 }; int lda = 3; ! double B[] = { 0.321, 0.614, 0.058, 0.983, 0.153, -0.647, 0.342, -0.518, -0.071, -0.533, -0.424, 0.283 }; int ldb = 2; ! double B_expected[] = { -0.0861992, -0.0396692, -0.155091, -0.1119744, -0.0501124, -0.0006816, -0.0064866, 0.0580106, 0.035358, -0.023696, -0.034933, -0.020199 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1802) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1802) imag"); }; }; *************** *** 3478,3493 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.941, -0.496, 0.492, 0.356, 0.353, 0.346, -0.519, -0.86, -0.677, -0.154, 0.313, 0.228, -0.56, -0.451, -0.78, 0.174, -0.663, 0.22 }; int lda = 3; ! double B[] = { 0.162, -0.345, 0.188, 0.578, -0.675, 0.775, -0.018, 0.198, -0.222, -0.52, 0.672, -0.438 }; int ldb = 2; ! double B_expected[] = { -0.3430472, 0.0394834, 0.0185782, -0.1505014, 0.0092108, -0.3837276, 0.0741276, -0.2435652, 0.1186, 0.1338, -0.1578, 0.1986 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1811) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1811) imag"); }; }; --- 3478,3493 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.034, -0.02, -0.401, -0.892, 0.329, -0.799, -0.018, 0.564, 0.095, 0.965, -0.105, 0.756, -0.583, -0.706, -0.436, -0.145, 0.921, 0.416 }; int lda = 3; ! double B[] = { 0.972, 0.157, -0.029, 0.674, 0.914, 0.434, 0.132, -0.116, -0.907, 0.316, -0.423, 0.321 }; int ldb = 2; ! double B_expected[] = { -0.1120798, 0.1462649, -0.0862031, 0.0507283, -0.0427739, 0.1355272, 0.0194621, 0.0362973, -0.0316, -0.0907, -0.0321, -0.0423 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1803) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1803) imag"); }; }; *************** *** 3503,3518 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.592, 0.708, 0.442, 0.212, 0.815, -0.638, 0.55, -0.512, -0.487, 0.181, 0.708, -0.126, 0.408, -0.51, 0.175, 0.114, -0.919, -0.268 }; int lda = 3; ! double B[] = { 0.858, -0.004, 0.59, -0.395, -0.943, 0.824, 0.01, 0.455, -0.775, 0.062, -0.644, 0.03 }; int ldb = 2; ! double B_expected[] = { -0.21374, -0.130452, -0.20707, 0.00773, -0.16787, 0.186571, -0.05026, 0.106515, -0.2887485, -0.0045065, -0.2446935, 0.1590455 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1812) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1812) imag"); }; }; --- 3503,3518 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.195, -0.36, 0.834, -0.505, -0.87, -0.787, 0.997, 0.965, -0.046, -0.591, 0.082, 0.552, 0.414, -0.013, -0.048, -0.766, 0.728, 0.088 }; int lda = 3; ! double B[] = { -0.916, -0.162, -0.863, 0.67, -0.079, -0.27, -0.191, 0.995, 0.981, -0.25, -0.149, 0.248 }; int ldb = 2; ! double B_expected[] = { -0.036135, 0.01203, -0.018003, 0.0409485, -0.0386581, -0.100169, -0.1061706, 0.0215439, -0.0700412, 0.1548156, -0.0239871, 0.0582902 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1804) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1804) imag"); }; }; *************** *** 3528,3543 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.988, -0.915, 0.963, 0.103, 0.921, 0.555, 0.846, 0.148, -0.43, 0.336, -0.371, 0.381, -0.487, 0.717, 0.881, -0.777, 0.774, -0.962 }; int lda = 3; ! double B[] = { -0.805, 0.605, 0.481, 0.163, -0.057, -0.017, -0.886, 0.809, 0.875, 0.905, 0.095, 0.894 }; int ldb = 2; ! double B_expected[] = { 0.181, -0.262, -0.1606, -0.0008, 0.220089, -0.234263, 0.0303246, -0.3486122, -0.0476352, -0.3174616, -0.2077412, -0.1552106 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1813) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1813) imag"); }; }; --- 3528,3543 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.553, -0.63, -0.079, 0.351, 0.865, -0.062, 0.165, -0.634, -0.513, 0.216, -0.521, 0.349, 0.54, 0.545, -0.719, -0.306, 0.501, 0.757 }; int lda = 3; ! double B[] = { -0.311, 0.088, -0.328, 0.977, 0.659, -0.06, -0.276, 0.872, -0.734, -0.01, -0.668, -0.327 }; int ldb = 2; ! double B_expected[] = { -0.0088, -0.0311, -0.0977, -0.0328, 0.0176113, 0.0652681, -0.0679689, -0.0593015, -0.0346653, -0.1319958, 0.0012195, -0.1051678 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1805) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1805) imag"); }; }; *************** *** 3553,3568 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.513, -0.385, -0.524, 0.726, 0.823, 0.839, -0.355, -0.881 }; int lda = 2; ! double B[] = { -0.707, 0.016, 0.481, 0.935, 0.052, 0.719, 0.277, 0.169, 0.894, 0.352, -0.216, -0.741 }; int ldb = 3; ! double B_expected[] = { -0.078919, 0.119774, 0.2114654, 0.0276682, 0.12593, 0.074299, -0.109352, -0.193196, 0.077864, 0.032876, -0.3330992, 0.2249494 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1814) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1814) imag"); }; }; --- 3553,3568 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.993, -0.018, 0.162, -0.222, 0.188, 0.672, -0.675, -0.345 }; int lda = 2; ! double B[] = { 0.476, -0.009, 0.725, -0.925, -0.245, 0.308, 0.515, 0.1, -0.072, -0.757, 0.212, 0.571 }; int ldb = 3; ! double B_expected[] = { 0.000369, 0.47283, 0.905475, 0.736575, -0.301434, -0.248829, -0.214389, -0.303015, -0.497235, 0.632565, 0.316779, -0.448161 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1806) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1806) imag"); }; }; *************** *** 3578,3593 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.136, -0.37, 0.669, -0.731, -0.4, 0.638, 0.833, -0.29 }; int lda = 2; ! double B[] = { -0.861, -0.278, 0.941, 0.822, 0.88, 0.501, 0.911, -0.502, 0.573, -0.498, -0.517, -0.518 }; int ldb = 3; ! double B_expected[] = { 0.2861, -0.0027, -0.3645, -0.1525, -0.3141, -0.0623, -0.0297254, 0.4490328, -0.254473, -0.161772, 0.0423084, -0.1675858 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1815) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1815) imag"); }; }; --- 3578,3593 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.78, 0.346, -0.663, -0.86, -0.496, -0.154, 0.356, 0.228 }; int lda = 2; ! double B[] = { 0.578, 0.492, 0.775, 0.353, 0.198, -0.519, -0.52, -0.677, -0.438, 0.313, 0.941, -0.56 }; int ldb = 3; ! double B_expected[] = { -0.492, 0.578, -0.353, 0.775, 0.519, 0.198, 0.506116, -1.326334, -0.745461, -1.255405, 0.045623, 1.256066 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1807) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1807) imag"); }; }; *************** *** 3603,3618 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.641, -0.058, 0.246, 0.884, -0.686, 0.123, -0.869, 0.891 }; int lda = 2; ! double B[] = { 0.107, -0.333, 0.556, 0.124, 0.206, 0.049, -0.573, -0.9, -0.417, -0.734, -0.719, 0.76 }; int ldb = 3; ! double B_expected[] = { -0.1591469, -0.1071617, -0.2301499, -0.1454657, -0.1758188, 0.1884616, -0.0380754, -0.4181892, -0.013453, -0.33198, -0.3886102, 0.1361404 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1816) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1816) imag"); }; }; --- 3603,3618 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.455, 0.442, 0.062, 0.815, 0.03, 0.55, 0.592, -0.487 }; int lda = 2; ! double B[] = { -0.451, 0.01, 0.174, -0.775, 0.22, -0.644, 0.858, -0.004, 0.59, -0.395, -0.943, 0.824 }; int ldb = 3; ! double B_expected[] = { 0.268128, -0.177245, 0.765883, -0.46293, -0.15311, 0.240362, -0.415478, 0.509884, -0.05349, 0.541645, -0.028567, -0.959544 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1808) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1808) imag"); }; }; *************** *** 3628,3643 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.083, 0.441, 0.995, 0.338, -0.988, -0.828, -0.254, -0.036 }; int lda = 2; ! double B[] = { -0.792, 0.552, 0.033, -0.178, -0.225, 0.553, 0.348, 0.229, -0.151, -0.594, 0.711, -0.335 }; int ldb = 3; ! double B_expected[] = { 0.3362416, -0.3167112, -0.2305904, -0.0177512, 0.0477576, -0.5068152, -0.1273, -0.0339, 0.1047, 0.1631, -0.1798, 0.1716 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1817) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1817) imag"); }; }; --- 3628,3643 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.268, -0.886, -0.805, 0.875, 0.481, 0.095, -0.057, 0.605 }; int lda = 2; ! double B[] = { 0.708, -0.638, 0.408, -0.512, 0.175, 0.181, -0.919, -0.126, 0.708, -0.51, 0.212, 0.114 }; int ldb = 3; ! double B_expected[] = { 0.611301, 0.253991, 0.82457, 0.700098, -0.215694, 0.287802, 0.126, -0.919, 0.51, 0.708, -0.114, 0.212 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1809) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1809) imag"); }; }; *************** *** 3653,3668 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.105, 0.584, -0.33, -0.182, -0.096, -0.257, 0.327, -0.123 }; int lda = 2; ! double B[] = { -0.249, -0.274, -0.197, -0.899, 0.85, -0.318, 0.596, -0.237, 0.179, 0.046, -0.859, -0.459 }; int ldb = 2; ! double B_expected[] = { 0.0441837, -0.0536099, -0.0065547, 0.1208159, 0.0819176, 0.1492908, -0.0917294, -0.0510192, -0.0037271, 0.0344777, 0.0974489, 0.0389047 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1818) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1818) imag"); }; }; --- 3653,3668 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.881, 0.555, 0.774, 0.148, -0.915, 0.336, 0.103, 0.381 }; int lda = 2; ! double B[] = { 0.163, 0.963, -0.017, 0.921, 0.809, 0.846, 0.905, -0.43, 0.894, -0.371, -0.988, -0.487 }; int ldb = 2; ! double B_expected[] = { -0.757938, 0.678068, 0.834573, 0.523573, -0.296331, 1.182259, 1.435009, -0.526594, 0.823021, 0.581709, -0.365348, -1.229977 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1810) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1810) imag"); }; }; *************** *** 3678,3693 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.972, 0.794, -0.968, -0.406, -0.2, -0.512, 0.436, 0.161 }; int lda = 2; ! double B[] = { 0.817, -0.17, -0.613, -0.565, -0.494, 0.129, -0.593, -0.516, -0.695, -0.42, 0.848, 0.122 }; int ldb = 2; ! double B_expected[] = { -0.2281, 0.1327, 0.2180776, -0.0351272, 0.1353, -0.0881, 0.2475472, 0.1823936, 0.2505, 0.0565, -0.345628, 0.165156 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1819) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1819) imag"); }; }; --- 3678,3693 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.719, -0.513, 0.169, -0.524, 0.352, 0.823, -0.741, -0.355 }; int lda = 2; ! double B[] = { 0.717, 0.052, -0.777, 0.277, -0.962, 0.894, 0.905, -0.216, -0.707, 0.016, 0.481, 0.935 }; int ldb = 2; ! double B_expected[] = { -0.052, 0.717, 0.294787, -0.48182, -0.894, -0.962, -0.890414, 1.302138, -0.016, -0.707, -1.522493, 0.245304 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1811) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1811) imag"); }; }; *************** *** 3703,3718 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.373, -0.316, -0.052, 0.025, -0.878, 0.612, 0.486, 0.953 }; int lda = 2; ! double B[] = { -0.626, 0.408, 0.536, 0.66, -0.666, -0.127, 0.622, 0.036, -0.761, 0.773, -0.137, 0.074 }; int ldb = 2; ! double B_expected[] = { 0.1214746, -0.0093742, -0.247838, 0.145962, 0.0994439, 0.0586017, -0.043453, 0.206241, 0.1510011, -0.0661437, -0.0178345, -0.0495635 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1820) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1820) imag"); }; }; --- 3703,3718 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.501, -0.136, -0.502, 0.669, -0.498, -0.4, -0.518, 0.833 }; int lda = 2; ! double B[] = { -0.385, 0.88, 0.726, 0.911, 0.839, 0.573, -0.881, -0.517, -0.861, -0.278, 0.941, 0.822 }; int ldb = 2; ! double B_expected[] = { 0.554496, -0.067558, 1.076656, 0.382795, -1.2501, 0.4388, -1.001679, 0.025697, 1.298547, -0.316017, 1.209649, 0.197288 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1812) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1812) imag"); }; }; *************** *** 3728,3743 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.621, -0.252, -0.942, 0.073, 0.416, -0.724, -0.972, 0.028 }; int lda = 2; ! double B[] = { -0.006, 0.427, 0.292, -0.212, -0.319, -0.08, -0.401, 0.465, -0.493, -0.529, 0.003, -0.19 }; int ldb = 2; ! double B_expected[] = { 0.0284232, -0.2112704, -0.0664, 0.0928, 0.0210696, 0.1558958, 0.0738, -0.1796, 0.1879327, 0.0541021, 0.0181, 0.0573 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1821) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1821) imag"); }; }; --- 3728,3743 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.049, 0.641, -0.9, 0.246, -0.734, -0.686, 0.76, -0.869 }; int lda = 2; ! double B[] = { -0.37, 0.206, -0.731, -0.573, 0.638, -0.417, -0.29, -0.719, 0.107, -0.333, 0.556, 0.124 }; int ldb = 2; ! double B_expected[] = { -0.901526, 0.146942, 0.573, -0.731, -0.30144, 0.722126, 0.719, -0.29, 0.581376, -0.362896, -0.124, 0.556 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1813) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1813) imag"); }; }; *************** *** 3753,3768 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.415, 0.215, 0.507, 0.094, 0.697, 0.633, 0.206, -0.383, -0.974, 0.734, -0.533, -0.15, -0.982, -0.232, -0.297, 0.501, -0.092, 0.663 }; int lda = 3; ! double B[] = { 0.812, 0.323, 0.294, -0.423, -0.85, 0.043, -0.338, -0.568, 0.976, -0.375, 0.913, -0.119 }; int ldb = 3; ! double B_expected[] = { 0.2153111, -0.0775367, 0.0404927, -0.0287599, -0.0879721, -0.1572073, -0.2481947, 0.2941819, 0.5234716, -0.1242382, 0.108305, 0.162022 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1822) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1822) imag"); }; }; --- 3753,3768 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.553, 0.338, 0.229, -0.828, -0.594, -0.036, -0.335, -0.249, 0.083, -0.197, 0.995, 0.85, -0.988, 0.596, -0.254, 0.179, 0.441, -0.859 }; int lda = 3; ! double B[] = { -0.058, -0.225, 0.884, 0.348, 0.123, -0.151, 0.891, 0.711, -0.792, 0.552, 0.033, -0.178 }; int ldb = 3; ! double B_expected[] = { -0.800945, -0.261458, 0.051763, -0.001149, -0.039066, 0.183952, 0.330423, 0.081423, 0.315368, -0.292945, 0.050151, 0.167455 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1814) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1814) imag"); }; }; *************** *** 3778,3793 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.827, -0.754, 0.719, 0.88, -0.942, -0.152, 0.051, 0.033, -0.603, -0.557, 0.668, 0.024, 0.082, 0.458, 0.733, 0.669, 0.722, -0.661 }; int lda = 3; ! double B[] = { -0.523, 0.365, -0.811, -0.632, -0.06, 0.151, -0.962, -0.71, -0.543, 0.8, -0.264, 0.994 }; int ldb = 3; ! double B_expected[] = { 0.4413193, -0.3047431, 0.307206, 0.074162, 0.0029, -0.0513, 0.2285887, 0.1349491, 0.061616, -0.510648, -0.0202, -0.3246 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1823) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1823) imag"); }; }; --- 3778,3793 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.257, -0.565, -0.123, 0.129, 0.817, -0.516, -0.613, -0.42, -0.494, 0.122, -0.593, -0.972, -0.695, -0.968, 0.848, -0.2, -0.17, 0.436 }; int lda = 3; ! double B[] = { -0.274, 0.105, -0.899, -0.33, -0.318, -0.096, -0.237, 0.327, 0.046, 0.584, -0.459, -0.182 }; int ldb = 3; ! double B_expected[] = { -0.019041, -0.416263, 0.582168, -0.617114, 0.096, -0.318, 0.136304, -0.448413, -0.245778, 0.495091, 0.182, -0.459 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1815) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1815) imag"); }; }; *************** *** 3803,3818 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.958, 0.948, -0.161, -0.34, -0.184, 0.43, -0.045, -0.465, -0.278, 0.461, 0.584, 0.003, -0.794, -0.778, -0.65, -0.91, 0.24, -0.944 }; int lda = 3; ! double B[] = { 0.279, 0.041, -0.033, 0.332, 0.788, 0.611, -0.644, -0.133, 0.247, 0.06, 0.125, -0.407 }; int ldb = 3; ! double B_expected[] = { -0.0693236, 0.0981792, -0.0442625, -0.0021815, 0.1936084, -0.3409328, 0.174601, -0.219233, 0.0274565, 0.1321885, -0.2252264, 0.1381888 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1824) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1824) imag"); }; }; --- 3803,3818 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.127, 0.025, 0.036, 0.612, 0.773, 0.953, 0.074, -0.006, 0.373, 0.292, -0.052, -0.319, -0.878, -0.401, 0.486, -0.493, -0.316, 0.003 }; int lda = 3; ! double B[] = { 0.794, -0.666, -0.406, 0.622, -0.512, -0.761, 0.161, -0.137, -0.626, 0.408, 0.536, 0.66 }; int ldb = 3; ! double B_expected[] = { -0.064732, -0.117488, -0.306038, 0.092938, -1.247288, -0.774519, -0.013374, -0.023872, -0.325804, -0.101626, 0.135651, -0.759197 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1816) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1816) imag"); }; }; *************** *** 3828,3843 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.983, -0.795, -0.115, -0.542, 0.837, 0.518, -0.164, 0.776, -0.453, -0.28, 0.135, -0.377, -0.199, -0.965, 0.784, -0.39, -0.499, 0.257 }; int lda = 3; ! double B[] = { -0.712, 0.364, -0.28, 0.05, 0.314, 0.748, -0.719, 0.619, 0.474, -0.906, -0.859, 0.943 }; int ldb = 3; ! double B_expected[] = { 0.1772, -0.1804, -0.0900512, -0.1509216, 0.0485292, 0.0109956, 0.1538, -0.2576, -0.2767208, 0.2420976, 0.2164354, 0.0610082 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1825) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1825) imag"); }; }; --- 3828,3843 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.724, -0.423, 0.028, 0.043, 0.812, -0.568, 0.294, -0.375, -0.85, -0.119, -0.338, -0.415, 0.976, 0.507, 0.913, 0.697, 0.323, 0.206 }; int lda = 3; ! double B[] = { 0.427, 0.621, -0.212, -0.942, -0.08, 0.416, 0.465, -0.972, -0.529, -0.252, -0.19, 0.073 }; int ldb = 3; ! double B_expected[] = { -0.621, 0.427, 0.599301, -0.319337, -0.093325, -0.198531, 0.972, 0.465, 0.363393, -0.02779, 0.97279, -0.887585 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1817) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1817) imag"); }; }; *************** *** 3853,3868 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.105, 0.503, -0.17, 0.2, -0.861, -0.279, -0.231, 0.058, 0.699, 0.437, 0.578, 0.462, 0.473, -0.793, -0.34, -0.162, -0.128, -0.844 }; int lda = 3; ! double B[] = { -0.802, 0.292, -0.155, -0.916, -0.099, -0.082, 0.057, 0.215, 0.94, 0.911, -0.714, 0.41 }; int ldb = 2; ! double B_expected[] = { -0.1044001, -0.5102243, 0.3865174, 0.0189802, 0.1888166, -0.0057672, -0.0800722, 0.0699214, 0.199086, -0.291946, 0.141904, 0.171064 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1826) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1826) imag"); }; }; --- 3853,3868 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.501, -0.632, 0.663, 0.151, -0.523, -0.71, -0.811, 0.8, -0.06, 0.994, -0.962, 0.827, -0.543, 0.719, -0.264, -0.942, 0.365, 0.051 }; int lda = 3; ! double B[] = { -0.974, 0.094, -0.533, 0.633, -0.982, -0.383, -0.297, 0.734, -0.092, -0.15, 0.215, -0.232 }; int ldb = 2; ! double B_expected[] = { -0.675337, -0.115274, 0.406006, -0.122575, -0.952024, -0.156194, -0.514956, 0.9092, 0.050058, -0.04123, 0.095645, 0.066643 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1818) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1818) imag"); }; }; *************** *** 3878,3893 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.468, 0.378, -0.498, 0.251, 0.777, -0.543, -0.913, 0.095, 0.779, -0.933, 0.068, -0.669, 0.715, 0.03, 0.012, 0.392, -0.785, -0.056 }; int lda = 3; ! double B[] = { 0.143, -0.242, -0.379, -0.831, -0.46, -0.663, -0.735, -0.098, -0.861, -0.894, 0.772, -0.059 }; int ldb = 2; ! double B_expected[] = { 0.0633681, 0.0476643, -0.1761819, 0.3044093, 0.2798556, 0.0187868, 0.2647924, 0.0455132, 0.3477, 0.1821, -0.2257, 0.0949 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1827) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1827) imag"); }; }; --- 3878,3893 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { 0.669, 0.332, -0.661, 0.611, 0.279, -0.133, -0.033, 0.06, 0.788, -0.407, -0.644, 0.958, 0.247, -0.161, 0.125, -0.184, 0.041, -0.045 }; int lda = 3; ! double B[] = { -0.603, 0.88, 0.668, -0.152, 0.082, 0.033, 0.733, -0.557, 0.722, 0.024, -0.754, 0.458 }; int ldb = 2; ! double B_expected[] = { -0.996161, -0.429256, 0.185867, 0.350415, -0.168848, 0.167834, 0.638486, 0.554478, -0.024, 0.722, -0.458, -0.754 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1819) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1819) imag"); }; }; *************** *** 3903,3918 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.764, 0.908, 0.899, 0.119, -0.447, 0.279, 0.338, 0.73, -0.74, -0.366, -0.572, 0.583, 0.75, 0.519, 0.603, 0.831, 0.697, 0.822 }; int lda = 3; ! double B[] = { 0.399, 0.572, -0.489, 0.964, -0.167, -0.104, 0.75, -0.199, 0.777, 0.503, -0.025, -0.386 }; int ldb = 2; ! double B_expected[] = { 0.015568, 0.261244, -0.345424, 0.212636, -0.2247824, -0.0859342, 0.1074596, -0.4846822, -0.2415227, 0.2465939, 0.2042976, 0.2206978 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1828) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1828) imag"); }; }; --- 3903,3918 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.91, 0.05, -0.944, 0.748, -0.712, 0.619, -0.28, -0.906, 0.314, 0.943, -0.719, -0.983, 0.474, -0.115, -0.859, 0.837, 0.364, -0.164 }; int lda = 3; ! double B[] = { -0.278, -0.34, 0.584, 0.43, -0.794, -0.465, -0.65, 0.461, 0.24, 0.003, 0.948, -0.778 }; int ldb = 2; ! double B_expected[] = { -0.3233, 0.23598, 0.4205, -0.50994, -1.131636, -0.679699, 0.085048, 0.000967, -0.008447, 1.102325, 1.765785, 0.337213 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1820) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1820) imag"); }; }; *************** *** 3928,3943 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.432, 0.063, 0.065, -0.546, 0.099, 0.892, 0.48, -0.085, 0.746, -0.541, -0.739, -0.207, 0.695, 0.765, 0.197, -0.86, 0.621, -0.653 }; int lda = 3; ! double B[] = { 0.182, 0.731, 0.571, 0.01, -0.357, -0.612, 0.581, 0.756, -0.911, -0.225, 0.438, 0.546 }; int ldb = 2; ! double B_expected[] = { -0.1277, -0.2011, -0.1723, 0.0541, 0.2698001, 0.0651043, -0.2906381, -0.2592593, -0.0512125, -0.0040605, 0.0647965, 0.1119875 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1829) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1829) imag"); }; }; --- 3928,3943 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 1}; ! double A[] = { -0.39, -0.916, 0.257, -0.082, -0.802, 0.215, -0.155, 0.911, -0.099, 0.41, 0.057, 0.105, 0.94, -0.17, -0.714, -0.861, 0.292, -0.231 }; int lda = 3; ! double B[] = { -0.453, -0.542, 0.135, 0.518, -0.199, 0.776, 0.784, -0.28, -0.499, -0.377, -0.795, -0.965 }; int ldb = 2; ! double B_expected[] = { 0.542, -0.453, -0.518, 0.135, -0.59956, -0.270977, 0.135804, 0.776219, -0.220206, -0.182087, 1.507741, -0.776612 }; cblas_ztrmm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrmm(case 1821) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrmm(case 1821) imag"); }; }; diff -x.info* -rc2P gsl-1.3/cblas/test_trsm.c gsl-1.4/cblas/test_trsm.c *** gsl-1.3/cblas/test_trsm.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/test_trsm.c Fri Jul 25 15:18:09 2003 *************** *** 18,31 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.773f, 0.069f, 0.45f, 0.189f }; int lda = 2; ! float B[] = { -0.037f, 0.788f, 0.015f, 0.028f, -0.804f, -0.357f }; int ldb = 3; ! float B_expected[] = { 0.0183269f, -0.419738f, -0.0564036f, -0.0444444f, 1.27619f, 0.566667f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1830)"); } }; --- 18,31 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.279f, 0.058f, 0.437f, 0.462f }; int lda = 2; ! float B[] = { 0.578f, 0.473f, -0.34f, -0.128f, 0.503f, 0.2f }; int ldb = 3; ! float B_expected[] = { 0.638784f, 0.440702f, -0.392589f, 0.0831169f, -0.326623f, -0.12987f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1822)"); } }; *************** *** 42,55 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.13f, -0.832f, 0.426f, 0.195f }; int lda = 2; ! float B[] = { 0.504f, 0.996f, 0.872f, -0.35f, 0.518f, -0.8f }; int ldb = 3; ! float B_expected[] = { -0.06384f, -0.428093f, -0.06192f, 0.105f, -0.1554f, 0.24f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1831)"); } }; --- 42,55 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.735f, -0.861f, 0.772f, -0.242f }; int lda = 2; ! float B[] = { -0.793f, -0.162f, -0.844f, 0.143f, -0.379f, -0.46f }; int ldb = 3; ! float B_expected[] = { 0.200963f, 0.146496f, 0.372018f, -0.0429f, 0.1137f, 0.138f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1823)"); } }; *************** *** 66,79 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.755f, -0.053f, -0.132f, -0.515f }; int lda = 2; ! float B[] = { -0.735f, 0.494f, 0.072f, -0.882f, -0.112f, 0.904f }; int ldb = 3; ! float B_expected[] = { 0.292053f, -0.196291f, -0.0286093f, -0.588643f, -0.0149311f, 0.533935f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1832)"); } }; --- 66,79 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.498f, 0.777f, -0.913f, 0.779f }; int lda = 2; ! float B[] = { -0.831f, -0.663f, -0.098f, -0.894f, -0.059f, 0.468f }; int ldb = 3; ! float B_expected[] = { -0.500602f, -0.399398f, -0.0590361f, -0.242426f, -0.445379f, -0.249422f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1824)"); } }; *************** *** 90,103 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.88f, -0.555f, 0.642f, 0.751f }; int lda = 2; ! float B[] = { -0.411f, 0.134f, 0.657f, 0.072f, -0.007f, -0.34f }; int ldb = 3; ! float B_expected[] = { 0.1233f, -0.0402f, -0.1971f, -0.100759f, 0.0279084f, 0.228538f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1833)"); } }; --- 90,103 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.543f, 0.095f, -0.933f, -0.669f }; int lda = 2; ! float B[] = { 0.068f, 0.715f, 0.012f, -0.785f, 0.378f, 0.251f }; int ldb = 3; ! float B_expected[] = { -0.0204f, -0.2145f, -0.0036f, 0.216467f, -0.313528f, -0.0786588f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1825)"); } }; *************** *** 114,127 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.478f, 0.938f, -0.731f, 0.25f }; int lda = 2; ! float B[] = { -0.859f, -0.409f, -0.154f, -0.54f, 0.146f, -0.106f }; int ldb = 2; ! float B_expected[] = { -1.2897f, 0.4908f, -1.08763f, 0.648f, -0.102894f, 0.1272f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1834)"); } }; --- 114,127 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.75f, 0.777f, -0.025f, 0.572f }; int lda = 2; ! float B[] = { 0.03f, 0.392f, -0.056f, 0.399f, -0.489f, -0.167f }; int ldb = 2; ! float B_expected[] = { -0.0188531f, -0.205594f, 0.0154245f, -0.209266f, 0.19852f, 0.0875874f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1826)"); } }; *************** *** 138,151 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.953f, 0.249f, -0.451f, -0.781f }; int lda = 2; ! float B[] = { -0.4f, -0.546f, 0.839f, 0.392f, -0.445f, -0.818f }; int ldb = 2; ! float B_expected[] = { 0.193874f, 0.1638f, -0.304738f, -0.1176f, 0.244175f, 0.2454f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1835)"); } }; --- 138,151 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.899f, -0.447f, 0.338f, -0.74f }; int lda = 2; ! float B[] = { 0.964f, -0.104f, -0.199f, 0.503f, -0.386f, -0.764f }; int ldb = 2; ! float B_expected[] = { -0.299746f, 0.0312f, 0.110704f, -0.1509f, 0.0383304f, 0.2292f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1827)"); } }; *************** *** 162,175 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.831f, -0.997f, -0.366f, 0.307f }; int lda = 2; ! float B[] = { 0.157f, -0.02f, 0.57f, 0.309f, -0.159f, 0.266f }; int ldb = 2; ! float B_expected[] = { -0.0566787f, -0.164523f, -0.205776f, -0.970224f, 0.0574007f, -0.0735227f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1836)"); } }; --- 162,175 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.279f, 0.73f, -0.366f, 0.583f }; int lda = 2; ! float B[] = { -0.572f, 0.75f, 0.603f, 0.697f, 0.908f, 0.119f }; int ldb = 2; ! float B_expected[] = { 0.615054f, -1.15607f, -0.648387f, 0.453212f, -0.976344f, 1.16129f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1828)"); } }; *************** *** 186,199 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.842f, 0.674f, 0.03f, 0.628f }; int lda = 2; ! float B[] = { -0.426f, 0.806f, 0.299f, 0.626f, -0.471f, 0.208f }; int ldb = 2; ! float B_expected[] = { 0.1278f, -0.327937f, -0.0897f, -0.127342f, 0.1413f, -0.157636f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1837)"); } }; --- 186,199 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.581f, -0.911f, 0.438f, 0.731f }; int lda = 2; ! float B[] = { 0.519f, 0.831f, 0.822f, 0.182f, 0.571f, -0.357f }; int ldb = 2; ! float B_expected[] = { -0.1557f, -0.391143f, -0.2466f, -0.279253f, -0.1713f, -0.0489543f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1829)"); } }; *************** *** 210,223 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.095f, 0.301f, 0.168f, 0.934f, 0.107f, 0.068f, 0.384f, -0.201f, 0.116f }; int lda = 3; ! float B[] = { 0.534f, 0.773f, -0.304f, -0.402f, 0.642f, -0.102f }; int ldb = 3; ! float B_expected[] = { 1.68632f, -6.91104f, 2.39525f, -1.26947f, 1.77114f, 1.06409f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1838)"); } }; --- 210,223 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.065f, 0.099f, 0.48f, 0.746f, -0.739f, 0.695f, 0.197f, 0.621f, 0.063f }; int lda = 3; ! float B[] = { 0.01f, -0.612f, 0.756f, -0.225f, 0.546f, 0.432f }; int ldb = 3; ! float B_expected[] = { -0.0461538f, -0.254627f, -0.439373f, 1.03846f, 0.360768f, -13.9491f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1830)"); } }; *************** *** 234,247 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.738f, -0.353f, -0.616f, 0.304f, 0.403f, 0.739f, 0.996f, 0.329f, 0.273f }; int lda = 3; ! float B[] = { -0.436f, 0.074f, 0.273f, -0.609f, 0.858f, 0.993f }; int ldb = 3; ! float B_expected[] = { 0.1308f, 0.0239724f, -0.0190428f, 0.1827f, -0.192907f, -0.0427986f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1839)"); } }; --- 234,247 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.86f, -0.653f, 0.87f, -0.037f, 0.788f, 0.015f, 0.028f, -0.804f, -0.357f }; int lda = 3; ! float B[] = { -0.546f, 0.892f, -0.085f, -0.541f, -0.207f, 0.765f }; int ldb = 3; ! float B_expected[] = { 0.1638f, -0.160639f, -0.114596f, 0.1623f, 0.168082f, -0.373222f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1831)"); } }; *************** *** 258,271 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.956f, 0.878f, 0.156f, 0.217f, 0.082f, -0.869f, 0.595f, 0.845f, 0.064f }; int lda = 3; ! float B[] = { -0.744f, 0.662f, -0.31f, 0.811f, 0.257f, 0.98f }; int ldb = 3; ! float B_expected[] = { -3.27779f, -17.3962f, 1.45312f, 7.92713f, 46.3978f, -4.59375f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1840)"); } }; --- 258,271 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.872f, -0.35f, 0.518f, -0.8f, -0.13f, -0.832f, 0.426f, 0.195f, -0.735f }; int lda = 3; ! float B[] = { 0.773f, 0.069f, 0.45f, 0.189f, 0.504f, 0.996f }; int ldb = 3; ! float B_expected[] = { 0.0431742f, 0.434741f, 0.183673f, 1.36286f, 1.77287f, 0.406531f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1832)"); } }; *************** *** 282,295 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.313f, -0.316f, 0.836f, 0.359f, -0.415f, 0.154f, -0.948f, -0.596f, -0.799f }; int lda = 3; ! float B[] = { 0.29f, -0.291f, 0.652f, 0.614f, 0.922f, -0.063f }; int ldb = 3; ! float B_expected[] = { -0.261918f, -0.0292776f, -0.1956f, -0.0710273f, -0.265336f, 0.0189f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1841)"); } }; --- 282,295 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.053f, -0.132f, -0.515f, -0.411f, 0.134f, 0.657f, 0.072f, -0.007f, -0.34f }; int lda = 3; ! float B[] = { 0.494f, 0.072f, -0.882f, -0.112f, 0.904f, 0.755f }; int ldb = 3; ! float B_expected[] = { -0.175368f, -0.0197478f, 0.2646f, -0.0622068f, -0.272786f, -0.2265f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1833)"); } }; *************** *** 306,319 **** int N = 3; float alpha = -0.3f; ! float A[] = { -0.634f, 0.561f, 0.883f, -0.136f, 0.203f, -0.531f, 0.733f, -0.332f, 0.705f }; int lda = 3; ! float B[] = { 0.133f, -0.843f, -0.179f, 0.94f, -0.656f, 0.645f }; int ldb = 2; ! float B_expected[] = { 0.0629338f, -0.398896f, 0.306695f, -1.6564f, 0.358145f, -0.639766f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1842)"); } }; --- 306,319 ---- int N = 3; float alpha = -0.3f; ! float A[] = { -0.154f, -0.54f, 0.146f, -0.106f, -0.478f, 0.938f, -0.731f, 0.25f, -0.4f }; int lda = 3; ! float B[] = { -0.88f, -0.555f, 0.642f, 0.751f, -0.859f, -0.409f }; int ldb = 2; ! float B_expected[] = { -1.71429f, -1.08117f, 0.783084f, 0.711096f, 2.97803f, 2.11352f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1834)"); } }; *************** *** 330,343 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.742f, -0.438f, 0.991f, 0.614f, 0.108f, -0.125f, 0.736f, -0.383f, 0.0f }; int lda = 3; ! float B[] = { -0.792f, -0.033f, -0.723f, 0.885f, 0.336f, 0.584f }; int ldb = 2; ! float B_expected[] = { 0.2376f, 0.0099f, 0.0710136f, -0.271579f, -0.248475f, -0.286501f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1843)"); } }; --- 330,343 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.249f, -0.451f, -0.781f, 0.157f, -0.02f, 0.57f, 0.309f, -0.159f, 0.266f }; int lda = 3; ! float B[] = { -0.546f, 0.839f, 0.392f, -0.445f, -0.818f, 0.953f }; int ldb = 2; ! float B_expected[] = { 0.1638f, -0.2517f, -0.143317f, 0.173017f, 0.171998f, -0.180615f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1835)"); } }; *************** *** 354,367 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.761f, 0.466f, 0.907f, -0.85f, -0.342f, -0.058f, -0.379f, -0.416f, 0.599f }; int lda = 3; ! float B[] = { -0.238f, 0.013f, 0.473f, -0.626f, 0.912f, -0.003f }; int ldb = 2; ! float B_expected[] = { 0.336709f, 0.329497f, 0.492375f, -0.549378f, -0.456761f, 0.0015025f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1844)"); } }; --- 354,367 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.299f, 0.626f, -0.471f, 0.208f, -0.842f, 0.674f, 0.03f, 0.628f, 0.534f }; int lda = 3; ! float B[] = { 0.831f, -0.997f, -0.366f, 0.307f, -0.426f, 0.806f }; int ldb = 2; ! float B_expected[] = { -0.584851f, 0.816906f, 0.0611706f, -0.25308f, 0.239326f, -0.452809f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1836)"); } }; *************** *** 378,391 **** int N = 3; float alpha = -0.3f; ! float A[] = { 0.567f, -0.532f, -0.817f, 0.85f, -0.135f, 0.797f, 0.981f, -0.75f, 0.856f }; int lda = 3; ! float B[] = { -0.705f, 0.326f, 0.184f, 0.079f, -0.173f, 0.125f }; int ldb = 2; ! float B_expected[] = { 0.20253f, -0.125146f, -0.0965643f, 0.0061875f, 0.0519f, -0.0375f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1845)"); } }; --- 378,391 ---- int N = 3; float alpha = -0.3f; ! float A[] = { 0.301f, 0.168f, 0.934f, 0.107f, 0.068f, 0.384f, -0.201f, 0.116f, -0.436f }; int lda = 3; ! float B[] = { 0.773f, -0.304f, -0.402f, 0.642f, -0.102f, -0.095f }; int ldb = 2; ! float B_expected[] = { -0.278767f, 0.0987764f, 0.10885f, -0.203544f, 0.0306f, 0.0285f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1837)"); } }; *************** *** 401,415 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.859f, 0.563f, -0.61f, 0.2f }; int lda = 2; ! float B[] = { -0.241f, -0.357f, -0.683f, -0.718f, 0.69f, -0.486f }; int ldb = 3; ! float B_expected[] = { -0.0841676f, -0.12468f, -0.238533f, 1.31393f, -0.684026f, 1.40047f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1846)"); } }; --- 401,415 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.616f, 0.304f, 0.403f, 0.739f }; int lda = 2; ! float B[] = { 0.273f, -0.609f, 0.858f, 0.993f, -0.738f, -0.353f }; int ldb = 3; ! float B_expected[] = { -0.443182f, 0.988636f, -1.39286f, 1.52602f, -1.40534f, 0.0953025f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1838)"); } }; *************** *** 425,439 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.157f, -0.741f, 0.844f, 0.206f }; int lda = 2; ! float B[] = { 0.816f, -0.692f, 0.765f, -0.408f, 0.404f, 0.764f }; int ldb = 3; ! float B_expected[] = { -0.2448f, 0.2076f, -0.2295f, -0.0589968f, 0.0326316f, -0.399259f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1847)"); } }; --- 425,439 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.811f, 0.257f, 0.98f, -0.956f }; int lda = 2; ! float B[] = { 0.996f, 0.329f, 0.273f, -0.744f, 0.662f, -0.31f }; int ldb = 3; ! float B_expected[] = { 0.996f, 0.329f, 0.273f, -0.999972f, 0.577447f, -0.380161f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1839)"); } }; *************** *** 449,463 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.187f, 0.354f, -0.931f, 0.18f }; int lda = 2; ! float B[] = { -0.215f, -0.645f, 0.847f, 0.014f, 0.83f, 0.761f }; int ldb = 3; ! float B_expected[] = { 0.228752f, -5.85232f, -7.67336f, -0.0233333f, -1.38333f, -1.26833f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1848)"); } }; --- 449,463 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.845f, 0.064f, 0.29f, -0.291f }; int lda = 2; ! float B[] = { 0.878f, 0.156f, 0.217f, 0.082f, -0.869f, 0.595f }; int ldb = 3; ! float B_expected[] = { 1.13576f, -0.840253f, 0.958527f, -0.281787f, 2.98625f, -2.04467f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1840)"); } }; *************** *** 473,487 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.923f, 0.27f, -0.319f, -0.856f }; int lda = 2; ! float B[] = { 0.391f, 0.01f, 0.429f, 0.685f, 0.332f, -0.643f }; int ldb = 3; ! float B_expected[] = { -0.182855f, -0.0347724f, -0.0671649f, -0.2055f, -0.0996f, 0.1929f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1849)"); } }; --- 473,487 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.836f, 0.359f, -0.415f, 0.154f }; int lda = 2; ! float B[] = { 0.652f, 0.614f, 0.922f, -0.063f, 0.313f, -0.316f }; int ldb = 3; ! float B_expected[] = { 0.625855f, 0.743895f, 0.79086f, -0.063f, 0.313f, -0.316f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1841)"); } }; *************** *** 497,511 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.724f, 0.201f, 0.87f, -0.638f }; int lda = 2; ! float B[] = { -0.533f, 0.183f, 0.569f, 0.85f, 0.642f, -0.051f }; int ldb = 2; ! float B_expected[] = { 0.220856f, 0.387218f, -0.235773f, 0.0781772f, -0.266022f, -0.386739f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1850)"); } }; --- 497,511 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.94f, -0.656f, 0.645f, -0.634f }; int lda = 2; ! float B[] = { -0.948f, -0.596f, -0.799f, 0.133f, -0.843f, -0.179f }; int ldb = 2; ! float B_expected[] = { -1.00851f, -0.0859454f, -0.85f, -1.07453f, -0.896809f, -0.630034f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1842)"); } }; *************** *** 521,535 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.291f, 0.244f, 0.931f, 0.857f }; int lda = 2; ! float B[] = { 0.008f, -0.478f, -0.252f, -0.155f, 0.419f, -0.192f }; int ldb = 2; ! float B_expected[] = { -0.0024f, 0.145634f, 0.0756f, -0.0238836f, -0.1257f, 0.174627f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1851)"); } }; --- 521,535 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.332f, 0.705f, -0.792f, -0.033f }; int lda = 2; ! float B[] = { 0.561f, 0.883f, -0.136f, 0.203f, -0.531f, 0.733f }; int ldb = 2; ! float B_expected[] = { 0.561f, 1.32731f, -0.136f, 0.095288f, -0.531f, 0.312448f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1843)"); } }; *************** *** 545,559 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.634f, -0.529f, -0.344f, 0.375f }; int lda = 2; ! float B[] = { -0.295f, 0.551f, 0.832f, 0.744f, -0.326f, 0.111f }; int ldb = 2; ! float B_expected[] = { 0.228207f, -0.4408f, 0.890317f, -0.5952f, -0.0801653f, -0.0888f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1852)"); } }; --- 545,559 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.991f, 0.614f, 0.108f, -0.125f }; int lda = 2; ! float B[] = { -0.723f, 0.885f, 0.336f, 0.584f, 0.742f, -0.438f }; int ldb = 2; ! float B_expected[] = { 3.65703f, -7.08f, 3.23371f, -4.672f, -1.42226f, 3.504f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1844)"); } }; *************** *** 569,583 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.641f, 0.989f, 0.998f, -0.005f }; int lda = 2; ! float B[] = { -0.168f, 0.465f, 0.36f, 0.356f, -0.858f, 0.879f }; int ldb = 2; ! float B_expected[] = { 0.188365f, -0.1395f, -0.0023748f, -0.1068f, 0.518199f, -0.2637f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1853)"); } }; --- 569,583 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.626f, 0.912f, -0.003f, 0.761f }; int lda = 2; ! float B[] = { 0.736f, -0.383f, 0.0f, -0.238f, 0.013f, 0.473f }; int ldb = 2; ! float B_expected[] = { 1.0853f, -0.383f, 0.217056f, -0.238f, -0.418376f, 0.473f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1845)"); } }; *************** *** 593,607 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.638f, 0.389f, 0.997f, 0.909f, -0.598f, -0.43f, -0.345f, -0.897f, 0.119f }; int lda = 3; ! float B[] = { 0.64f, 0.779f, -0.129f, 0.016f, 0.599f, -0.668f }; int ldb = 3; ! float B_expected[] = { 0.904844f, 0.156956f, 0.32521f, 2.08405f, -0.910426f, 1.68403f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1854)"); } }; --- 593,607 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.416f, 0.599f, -0.705f, 0.326f, 0.184f, 0.079f, -0.173f, 0.125f, 0.567f }; int lda = 3; ! float B[] = { 0.466f, 0.907f, -0.85f, -0.342f, -0.058f, -0.379f }; int ldb = 3; ! float B_expected[] = { 9.44495f, 5.57299f, -1.49912f, 1.91427f, -0.0282283f, -0.66843f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1846)"); } }; *************** *** 617,631 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.289f, 0.641f, -0.876f, -0.503f, -0.062f, -0.987f, 0.1f, -0.105f, 0.757f }; int lda = 3; ! float B[] = { -0.285f, 0.285f, 0.219f, -0.986f, -0.0f, -0.605f }; int ldb = 3; ! float B_expected[] = { 0.124319f, -0.150346f, -0.0657f, 0.339965f, 0.17914f, 0.1815f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1855)"); } }; --- 617,631 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { -0.75f, 0.856f, 0.773f, -0.241f, -0.357f, -0.683f, -0.718f, 0.69f, -0.486f }; int lda = 3; ! float B[] = { -0.532f, -0.817f, 0.85f, -0.135f, 0.797f, 0.981f }; int ldb = 3; ! float B_expected[] = { -0.986649f, -0.23645f, 0.85f, -2.14908f, 1.46702f, 0.981f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1847)"); } }; *************** *** 641,655 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.524f, 0.018f, 0.292f, -0.573f, 0.866f, 0.749f, 0.99f, 0.101f, 0.871f }; int lda = 3; ! float B[] = { 0.522f, -0.269f, -0.142f, -0.266f, -0.505f, -0.55f }; int ldb = 3; ! float B_expected[] = { -0.298855f, -0.104554f, 0.400719f, 0.15229f, 0.275707f, -0.0156298f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1856)"); } }; --- 641,655 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.765f, -0.408f, 0.404f, 0.764f, 0.157f, -0.741f, 0.844f, 0.206f, -0.215f }; int lda = 3; ! float B[] = { -0.859f, 0.563f, -0.61f, 0.2f, 0.816f, -0.692f }; int ldb = 3; ! float B_expected[] = { -1.12288f, 9.05017f, 7.1006f, 0.261438f, 3.92523f, 8.00582f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1848)"); } }; *************** *** 665,679 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.283f, 0.62f, -0.387f, -0.739f, -0.599f, 0.114f, 0.552f, 0.083f, -0.976f }; int lda = 3; ! float B[] = { 0.202f, 0.169f, 0.7f, 0.473f, 0.86f, -0.557f }; int ldb = 3; ! float B_expected[] = { -0.0606f, -0.0954834f, -0.168624f, -0.1419f, -0.362864f, 0.275547f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1857)"); } }; --- 665,679 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.354f, -0.931f, 0.18f, 0.391f, 0.01f, 0.429f, 0.685f, 0.332f, -0.643f }; int lda = 3; ! float B[] = { -0.645f, 0.847f, 0.014f, 0.83f, 0.761f, 0.187f }; int ldb = 3; ! float B_expected[] = { -0.645f, 1.09919f, 0.0908923f, 0.83f, 0.43647f, -0.526458f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1849)"); } }; *************** *** 689,703 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.185f, 0.178f, -0.22f, -0.645f, -0.585f, -0.342f, -0.594f, -0.141f, 0.944f }; int lda = 3; ! float B[] = { 0.22f, -0.895f, -0.301f, -0.683f, -0.009f, -0.451f }; int ldb = 2; ! float B_expected[] = { 0.888147f, -0.569939f, -0.155048f, -0.384802f, 0.00286017f, 0.143326f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1858)"); } }; --- 689,703 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.569f, 0.85f, 0.642f, -0.051f, 0.724f, 0.201f, 0.87f, -0.638f, 0.008f }; int lda = 3; ! float B[] = { -0.923f, 0.27f, -0.319f, -0.856f, -0.533f, 0.183f }; int ldb = 2; ! float B_expected[] = { 94.9456f, -32.8005f, -59.1516f, 18.9755f, -66.625f, 22.875f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1850)"); } }; *************** *** 713,727 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.145f, 0.746f, 0.541f, 0.584f, -0.394f, 0.371f, -0.172f, -0.601f, 0.542f }; int lda = 3; ! float B[] = { 0.529f, 0.636f, 0.668f, 0.848f, -0.816f, -0.925f }; int ldb = 2; ! float B_expected[] = { -0.0854817f, -0.0918985f, -0.0532752f, -0.0876225f, 0.2448f, 0.2775f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1859)"); } }; --- 713,727 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.244f, 0.931f, 0.857f, -0.295f, 0.551f, 0.832f, 0.744f, -0.326f, 0.111f }; int lda = 3; ! float B[] = { -0.478f, -0.252f, -0.155f, 0.419f, -0.192f, 0.291f }; int ldb = 2; ! float B_expected[] = { -0.399342f, -0.316914f, -0.217592f, 0.513866f, -0.192f, 0.291f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1851)"); } }; *************** *** 737,751 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { 0.416f, -0.526f, -0.486f, -0.716f, 0.361f, 0.365f, -0.492f, 0.544f, 0.721f }; int lda = 3; ! float B[] = { 0.25f, 0.746f, 0.55f, 0.836f, -0.024f, 0.226f }; int ldb = 2; ! float B_expected[] = { -0.180288f, -0.537981f, -0.719755f, -1.47861f, 0.25283f, 0.291864f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1860)"); } }; --- 737,751 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.36f, 0.356f, -0.858f, 0.879f, 0.641f, 0.989f, 0.998f, -0.005f, 0.64f }; int lda = 3; ! float B[] = { -0.634f, -0.529f, -0.344f, 0.375f, -0.168f, 0.465f }; int ldb = 2; ! float B_expected[] = { -1.76111f, -1.46944f, 0.441428f, 1.40113f, -3.30563f, -3.40859f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1852)"); } }; *************** *** 761,775 **** int M = 2; int N = 3; ! float alpha = -0.3f; ! float A[] = { -0.735f, -0.606f, -0.124f, 0.641f, -0.074f, -0.053f, -0.734f, 0.907f, 0.558f }; int lda = 3; ! float B[] = { 0.623f, 0.392f, -0.808f, -0.022f, -0.665f, -0.616f }; int ldb = 2; ! float B_expected[] = { -0.1869f, -0.1176f, 0.129139f, -0.0646656f, 0.183169f, 0.16679f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1861)"); } }; --- 761,775 ---- int M = 2; int N = 3; ! float alpha = 1.0f; ! float A[] = { 0.389f, 0.997f, 0.909f, -0.598f, -0.43f, -0.345f, -0.897f, 0.119f, -0.285f }; int lda = 3; ! float B[] = { 0.779f, -0.129f, 0.016f, 0.599f, -0.668f, -0.638f }; int ldb = 2; ! float B_expected[] = { 0.779f, -0.129f, -0.760663f, 0.727613f, -1.63854f, -0.269713f }; cblas_strsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], flteps, "strsm(case 1853)"); } }; *************** *** 785,799 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.584, -0.058, -0.964, -0.214 }; int lda = 2; ! double B[] = { 0.073, -0.734, -0.058, -0.115, 0.513, 0.503 }; int ldb = 3; ! double B_expected[] = { -0.0178370247087, 0.149492702599, 0.0332751888363, 0.053738317757, -0.239719626168, -0.235046728972 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1862)"); } }; --- 785,799 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.876, -0.503, -0.062, -0.987 }; int lda = 2; ! double B[] = { 0.219, -0.986, -0.0, -0.605, 0.289, 0.641 }; int ldb = 3; ! double B_expected[] = { 0.601967125138, -1.29370052694, -0.372910623494, -0.612968591692, 0.292806484296, 0.649442755826 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1854)"); } }; *************** *** 809,823 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.251, -0.8, 0.365, 0.809 }; int lda = 2; ! double B[] = { -0.632, -0.611, 0.9, 0.063, -0.652, -0.841 }; int ldb = 3; ! double B_expected[] = { -0.05816, -0.11326, 0.02272, 0.0063, -0.0652, -0.0841 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1863)"); } }; --- 809,823 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.266, -0.505, -0.55, 0.524 }; int lda = 2; ! double B[] = { 0.1, -0.105, 0.757, 0.522, -0.269, -0.142 }; int ldb = 3; ! double B_expected[] = { -0.36361, 0.240845, -0.68529, -0.522, 0.269, 0.142 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1855)"); } }; *************** *** 833,847 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.833, 0.934, -0.608, 0.49 }; int lda = 2; ! double B[] = { 0.336, -0.541, -0.729, -0.382, 0.741, 0.546 }; int ldb = 3; ! double B_expected[] = { -0.0403361344538, 0.0649459783914, 0.0875150060024, -0.128008917853, 0.231810520126, 0.220018619693 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1864)"); } }; --- 833,847 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.101, 0.871, 0.202, 0.169 }; int lda = 2; ! double B[] = { 0.018, 0.292, -0.573, 0.866, 0.749, 0.99 }; int ldb = 3; ! double B_expected[] = { -0.178217821782, -2.89108910891, 5.67326732673, -4.91124260355, -0.976331360947, -12.6390532544 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1856)"); } }; *************** *** 857,871 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.824, 0.907, 0.632, -0.348 }; int lda = 2; ! double B[] = { 0.351, -0.301, 0.602, 0.873, 0.031, -0.2 }; int ldb = 3; ! double B_expected[] = { 0.0351, -0.0301, 0.0602, 0.0651168, 0.0221232, -0.0580464 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1865)"); } }; --- 857,871 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.387, -0.739, -0.599, 0.114 }; int lda = 2; ! double B[] = { 0.7, 0.473, 0.86, -0.557, 0.283, 0.62 }; int ldb = 3; ! double B_expected[] = { -0.7, -0.473, -0.86, 0.1377, -0.566327, -1.13514 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1857)"); } }; *************** *** 881,895 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.427, 0.193, -0.959, -0.679 }; int lda = 2; ! double B[] = { -0.646, 0.741, -0.339, 0.049, 0.734, -0.182 }; int ldb = 2; ! double B_expected[] = { -0.3963857167, -0.10913107511, -0.0955986383061, -0.00721649484536, 0.232096380888, 0.0268041237113 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1866)"); } }; --- 881,895 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.683, -0.009, -0.451, -0.185 }; int lda = 2; ! double B[] = { 0.552, 0.083, -0.976, 0.22, -0.895, -0.301 }; int ldb = 2; ! double B_expected[] = { 0.511946499941, 0.448648648649, -2.21423766373, 1.18918918919, -0.236033397966, -1.62702702703 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1858)"); } }; *************** *** 905,919 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.282, 0.766, -0.422, -0.518 }; int lda = 2; ! double B[] = { 0.269, 0.211, -0.911, -0.685, -0.777, -0.919 }; int ldb = 2; ! double B_expected[] = { 0.0358042, 0.0211, -0.120007, -0.0685, -0.1164818, -0.0919 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1867)"); } }; --- 905,919 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.141, 0.944, 0.529, 0.636 }; int lda = 2; ! double B[] = { 0.178, -0.22, -0.645, -0.585, -0.342, -0.594 }; int ldb = 2; ! double B_expected[] = { -0.29438, 0.22, 0.335535, 0.585, 0.027774, 0.594 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1859)"); } }; *************** *** 929,943 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.877, -0.818, 0.191, 0.468 }; int lda = 2; ! double B[] = { 0.517, 0.669, 0.337, -0.579, 0.885, -0.677 }; int ldb = 2; ! double B_expected[] = { -0.0589509692132, 0.039910485435, -0.0384264538198, -0.190882135095, -0.100912200684, -0.321038846495 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1868)"); } }; --- 929,943 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.541, 0.584, -0.394, 0.371 }; int lda = 2; ! double B[] = { 0.668, 0.848, -0.816, -0.925, -0.145, 0.746 }; int ldb = 2; ! double B_expected[] = { -1.23475046211, -0.342063962613, 1.50831792976, 0.118982018923, 0.268022181146, -2.43268181614 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1860)"); } }; *************** *** 953,967 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.469, 0.115, 0.284, 0.139 }; int lda = 2; ! double B[] = { 0.889, -0.002, -0.686, -0.256, 0.028, 0.371 }; int ldb = 2; ! double B_expected[] = { 0.0889, -0.0104235, -0.0686, -0.017711, 0.0028, 0.036778 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1869)"); } }; --- 953,967 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.836, -0.024, 0.226, 0.416 }; int lda = 2; ! double B[] = { -0.172, -0.601, 0.542, 0.25, 0.746, 0.55 }; int ldb = 2; ! double B_expected[] = { 0.172, 0.605128, -0.542, -0.263008, -0.746, -0.567904 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1861)"); } }; *************** *** 977,991 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.218, -0.819, -0.523, 0.042, 0.545, -0.292, 0.283, 0.224, 0.247 }; int lda = 3; ! double B[] = { 0.677, 0.153, -0.272, -0.226, 0.987, -0.216 }; int ldb = 3; ! double B_expected[] = { -0.310550458716, -0.438607019611, -1.28619894589, 0.103669724771, 0.336890834105, 0.530329512606 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1870)"); } }; --- 977,991 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.544, 0.721, 0.623, 0.392, -0.808, -0.022, -0.665, -0.616, -0.735 }; int lda = 3; ! double B[] = { -0.526, -0.486, -0.716, 0.361, 0.365, -0.492 }; int ldb = 3; ! double B_expected[] = { 0.966911764706, 0.261316067268, -0.162398536147, -0.663602941176, -0.140417971025, -1.22766726121 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1862)"); } }; *************** *** 1001,1015 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.241, 0.561, 0.164, 0.486, 0.891, -0.508, -0.596, -0.074, 0.576 }; int lda = 3; ! double B[] = { -0.325, 0.382, 0.368, 0.761, -0.349, 0.324 }; int ldb = 3; ! double B_expected[] = { -0.0325, 0.0564325, 0.07079771, 0.0761, -0.0775921, -0.0194971868 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1871)"); } }; --- 1001,1015 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.907, 0.558, -0.233, 0.073, -0.734, -0.058, -0.115, 0.513, 0.503 }; int lda = 3; ! double B[] = { -0.606, -0.124, 0.641, -0.074, -0.053, -0.734 }; int ldb = 3; ! double B_expected[] = { 0.606, -0.214148, -0.512222584, 0.074, 0.011708, 0.751921064 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1863)"); } }; *************** *** 1025,1039 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.76, 0.58, -0.203, 0.053, 0.792, 0.355, -0.685, 0.449, -0.367 }; int lda = 3; ! double B[] = { 0.861, -0.44, 0.842, -0.019, -0.382, -0.579 }; int ldb = 3; ! double B_expected[] = { -0.0986936127734, 0.0745114634079, -0.229427792916, 0.149297547123, -0.137672708006, 0.157765667575 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1872)"); } }; --- 1025,1039 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.9, 0.063, -0.652, -0.841, 0.251, -0.8, 0.365, 0.809, 0.336 }; int lda = 3; ! double B[] = { -0.584, -0.058, -0.964, -0.214, -0.632, -0.611 }; int ldb = 3; ! double B_expected[] = { -8.93978245747, -9.01617340163, 2.86904761905, -3.62368367799, -3.34313934737, 1.81845238095 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1864)"); } }; *************** *** 1049,1063 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.802, 0.298, 0.159, 0.333, 0.515, 0.715, -0.32, -0.217, 0.301 }; int lda = 3; ! double B[] = { -0.268, 0.1, -0.631, 0.472, 0.796, 0.278 }; int ldb = 3; ! double B_expected[] = { -0.0457623309, -0.0036927, -0.0631, 0.0275803442, 0.0856326, 0.0278 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1873)"); } }; --- 1049,1063 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.934, -0.608, 0.49, 0.351, -0.301, 0.602, 0.873, 0.031, -0.2 }; int lda = 3; ! double B[] = { -0.541, -0.729, -0.382, 0.741, 0.546, -0.833 }; int ldb = 3; ! double B_expected[] = { -0.044208458, 0.717158, 0.382, -1.267499127, -0.571823, 0.833 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1865)"); } }; *************** *** 1073,1087 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.028, 0.186, -0.435, -0.747, 0.212, 0.257, 0.804, -0.595, 0.64 }; int lda = 3; ! double B[] = { 0.729, -0.847, -0.577, 0.056, -0.493, 0.619 }; int ldb = 2; ! double B_expected[] = { -2.60357142857, 3.025, -9.44607479784, 10.685259434, -5.58819230648, 6.23051463001 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1874)"); } }; --- 1073,1087 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.339, 0.049, 0.734, -0.182, 0.427, 0.193, -0.959, -0.679, 0.269 }; int lda = 3; ! double B[] = { 0.824, 0.907, 0.632, -0.348, -0.646, 0.741 }; int ldb = 2; ! double B_expected[] = { 2.43067846608, 2.67551622419, -0.444066789635, 1.95537225481, 9.9460940476, 11.7193971004 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1866)"); } }; *************** *** 1097,1111 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { -0.74, -0.091, 0.484, 0.769, 0.91, 0.817, -0.26, 0.579, 0.393 }; int lda = 3; ! double B[] = { 0.109, 0.969, -0.668, 0.544, 0.753, 0.796 }; int ldb = 2; ! double B_expected[] = { 0.0109, 0.0969, -0.0751821, -0.0201161, 0.1216644359, 0.1164412219 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1875)"); } }; --- 1097,1111 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { 0.766, -0.422, -0.518, 0.517, 0.669, 0.337, -0.579, 0.885, -0.677 }; int lda = 3; ! double B[] = { 0.211, -0.911, -0.685, -0.777, -0.919, 0.282 }; int ldb = 2; ! double B_expected[] = { -0.211, 0.911, 0.794087, 0.306013, 0.094064005, -0.025352505 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1867)"); } }; *************** *** 1121,1135 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.123, -0.328, -0.482, 0.083, -0.125, -0.712, -0.757, -0.009, 0.237 }; int lda = 3; ! double B[] = { -0.18, 0.358, 0.839, -0.725, 0.73, -0.095 }; int ldb = 2; ! double B_expected[] = { -5.40775366883, 2.28950005146, -2.42566413502, 0.808320675105, 0.308016877637, -0.0400843881857 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1876)"); } }; --- 1121,1135 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.686, -0.256, 0.028, 0.371, 0.469, 0.115, 0.284, 0.139, 0.677 }; int lda = 3; ! double B[] = { -0.877, -0.818, 0.191, 0.468, 0.889, -0.002 }; int ldb = 2; ! double B_expected[] = { -1.30020532939, -0.819646768394, -0.0852626506631, -0.998592183627, -1.31314623338, 0.00295420974889 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1868)"); } }; *************** *** 1145,1159 **** int M = 2; int N = 3; ! double alpha = 0.1; ! double A[] = { 0.255, -0.069, -0.137, -0.45, -0.24, 0.221, -0.509, -0.484, -0.131 }; int lda = 3; ! double B[] = { -0.563, 0.993, 0.508, 0.771, 0.745, 0.233 }; int ldb = 2; ! double B_expected[] = { -0.0437243505, 0.1074566983, 0.0343355, 0.0719507, 0.0745, 0.0233 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1877)"); } }; --- 1145,1159 ---- int M = 2; int N = 3; ! double alpha = -1; ! double A[] = { -0.819, -0.523, 0.042, 0.545, -0.292, 0.283, 0.224, 0.247, -0.325 }; int lda = 3; ! double B[] = { 0.153, -0.272, -0.226, 0.987, -0.216, -0.218 }; int ldb = 2; ! double B_expected[] = { -0.075843944, -0.285622962, 0.164872, -1.048694, 0.216, 0.218 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1869)"); } }; *************** *** 1170,1183 **** int N = 3; double alpha = -1; ! double A[] = { -0.772, 0.079, -0.227, 0.998 }; int lda = 2; ! double B[] = { -0.095, 0.012, -0.988, -0.722, 0.738, 0.05 }; int ldb = 3; ! double B_expected[] = { -0.123056994819, 0.0155440414508, -1.27979274611, 0.733187878347, -0.740709398071, 0.051206039021 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1878)"); } }; --- 1170,1183 ---- int N = 3; double alpha = -1; ! double A[] = { 0.164, 0.486, 0.891, -0.508 }; int lda = 2; ! double B[] = { 0.368, 0.761, -0.349, 0.324, 0.241, 0.561 }; int ldb = 3; ! double B_expected[] = { -2.24390243902, -4.64024390244, 2.12804878049, -1.50893028615, -3.96487900903, 3.14021989629 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1870)"); } }; *************** *** 1194,1207 **** int N = 3; double alpha = -1; ! double A[] = { -0.045, 0.059, -0.61, -0.328 }; int lda = 2; ! double B[] = { 0.302, -0.099, 0.521, 0.487, -0.961, 0.903 }; int ldb = 3; ! double B_expected[] = { -0.302, 0.099, -0.521, -0.469182, 0.955159, -0.872261 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1879)"); } }; --- 1194,1207 ---- int N = 3; double alpha = -1; ! double A[] = { -0.019, -0.382, -0.579, 0.76 }; int lda = 2; ! double B[] = { -0.596, -0.074, 0.576, 0.861, -0.44, 0.842 }; int ldb = 3; ! double B_expected[] = { 0.596, 0.074, -0.576, -0.633328, 0.468268, -1.062032 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1871)"); } }; *************** *** 1218,1231 **** int N = 3; double alpha = -1; ! double A[] = { -0.319, 0.642, 0.511, 0.762 }; int lda = 2; ! double B[] = { 0.883, 0.987, 0.436, -0.783, 0.175, -0.973 }; int ldb = 3; ! double B_expected[] = { 4.41405227952, 2.72615785879, 3.41221747752, 1.02755905512, -0.229658792651, 1.27690288714 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1880)"); } }; --- 1218,1231 ---- int N = 3; double alpha = -1; ! double A[] = { 0.449, -0.367, -0.268, 0.1 }; int lda = 2; ! double B[] = { 0.58, -0.203, 0.053, 0.792, 0.355, -0.685 }; int ldb = 3; ! double B_expected[] = { -6.01906458797, -1.66681514477, 3.9706013363, -7.92, -3.55, 6.85 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1872)"); } }; *************** *** 1242,1255 **** int N = 3; double alpha = -1; ! double A[] = { 0.676, 0.038, 0.543, 0.296 }; int lda = 2; ! double B[] = { 0.804, -0.28, -0.318, 0.382, -0.165, -0.007 }; int ldb = 3; ! double B_expected[] = { -0.596574, 0.190405, 0.314199, -0.382, 0.165, 0.007 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1881)"); } }; --- 1242,1255 ---- int N = 3; double alpha = -1; ! double A[] = { 0.159, 0.333, 0.515, 0.715 }; int lda = 2; ! double B[] = { -0.631, 0.472, 0.796, 0.278, 0.802, 0.298 }; int ldb = 3; ! double B_expected[] = { 0.77417, -0.05897, -0.64253, -0.278, -0.802, -0.298 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1873)"); } }; *************** *** 1266,1279 **** int N = 3; double alpha = -1; ! double A[] = { -0.722, -0.355, -0.14, -0.146 }; int lda = 2; ! double B[] = { -0.44, 0.751, -0.995, 0.625, 0.16, -0.127 }; int ldb = 2; ! double B_expected[] = { -0.609418282548, 5.72820931203, -1.37811634349, 5.60230334307, 0.221606648199, -1.08236253937 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1882)"); } }; --- 1266,1279 ---- int N = 3; double alpha = -1; ! double A[] = { 0.056, -0.493, 0.619, -0.028 }; int lda = 2; ! double B[] = { -0.32, -0.217, 0.301, 0.729, -0.847, -0.577 }; int ldb = 2; ! double B_expected[] = { 5.71428571429, 118.576530612, -5.375, -92.7901785714, 15.125, 313.763392857 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1874)"); } }; *************** *** 1290,1303 **** int N = 3; double alpha = -1; ! double A[] = { 0.817, -0.619, 0.548, 0.064 }; int lda = 2; ! double B[] = { -0.756, -0.169, 0.429, -0.789, 0.79, 0.479 }; int ldb = 2; ! double B_expected[] = { 0.756, -0.245288, -0.429, 1.024092, -0.79, -0.04608 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1883)"); } }; --- 1290,1303 ---- int N = 3; double alpha = -1; ! double A[] = { -0.595, 0.64, 0.109, 0.969 }; int lda = 2; ! double B[] = { 0.186, -0.435, -0.747, 0.212, 0.257, 0.804 }; int ldb = 2; ! double B_expected[] = { -0.186, 0.455274, 0.747, -0.293423, -0.257, -0.775987 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1875)"); } }; *************** *** 1314,1327 **** int N = 3; double alpha = -1; ! double A[] = { 0.496, -0.734, -0.679, -0.697 }; int lda = 2; ! double B[] = { -0.483, -0.508, -0.819, 0.237, 0.852, -0.512 }; int ldb = 2; ! double B_expected[] = { -0.104772180312, -0.728837876614, 2.1543973018, 0.340028694405, -2.80479705651, -0.734576757532 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1884)"); } }; --- 1314,1327 ---- int N = 3; double alpha = -1; ! double A[] = { 0.484, 0.769, 0.91, 0.817 }; int lda = 2; ! double B[] = { -0.668, 0.544, 0.753, 0.796, -0.74, -0.091 }; int ldb = 2; ! double B_expected[] = { 2.4380974539, -0.665850673195, -0.0077814418807, -0.97429620563, 1.35195534965, 0.111383108935 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1876)"); } }; *************** *** 1338,1351 **** int N = 3; double alpha = -1; ! double A[] = { 0.049, 0.079, -0.8, -0.762 }; int lda = 2; ! double B[] = { 0.426, 0.094, 0.794, -0.098, 0.442, -0.991 }; int ldb = 2; ! double B_expected[] = { -0.418574, -0.094, -0.801742, 0.098, -0.520289, 0.991 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1885)"); } }; --- 1338,1351 ---- int N = 3; double alpha = -1; ! double A[] = { -0.725, 0.73, -0.095, 0.123 }; int lda = 2; ! double B[] = { -0.26, 0.579, 0.393, -0.18, 0.358, 0.839 }; int ldb = 2; ! double B_expected[] = { 0.68267, -0.579, -0.5244, 0.18, 0.25447, -0.839 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1877)"); } }; *************** *** 1362,1375 **** int N = 3; double alpha = -1; ! double A[] = { -0.974, 0.848, -0.765, 0.528, -0.693, 0.252, -0.135, -0.507, 0.954 }; int lda = 3; ! double B[] = { 0.395, 0.791, -0.787, 0.636, 0.271, -0.905 }; int ldb = 3; ! double B_expected[] = { 1.01254427581, 1.4413950829, 0.824947589099, 0.548697105717, 0.736012415258, 0.948637316562 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1886)"); } }; --- 1362,1375 ---- int N = 3; double alpha = -1; ! double A[] = { -0.009, 0.237, -0.563, 0.993, 0.508, 0.771, 0.745, 0.233, 0.255 }; int lda = 3; ! double B[] = { -0.328, -0.482, 0.083, -0.125, -0.712, -0.757 }; int ldb = 3; ! double B_expected[] = { 21.9110553583, 1.44282075035, -0.325490196078, -281.330646047, -3.10396016674, 2.96862745098 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1878)"); } }; *************** *** 1386,1399 **** int N = 3; double alpha = -1; ! double A[] = { 0.919, -0.513, -0.38, 0.587, -0.862, 0.598, 0.714, 0.726, 0.491 }; int lda = 3; ! double B[] = { -0.056, -0.802, -0.962, 0.656, -0.195, -0.679 }; int ldb = 3; ! double B_expected[] = { 0.537869412, 0.226724, 0.962, -0.506244546, -0.211042, 0.679 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1887)"); } }; --- 1386,1399 ---- int N = 3; double alpha = -1; ! double A[] = { -0.484, -0.131, 0.563, -0.095, 0.012, -0.988, -0.722, 0.738, 0.05 }; int lda = 3; ! double B[] = { -0.069, -0.137, -0.45, -0.24, 0.221, -0.509 }; int ldb = 3; ! double B_expected[] = { -0.1081604, 0.5816, 0.45, -0.009639148, 0.281892, 0.509 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1879)"); } }; *************** *** 1410,1423 **** int N = 3; double alpha = -1; ! double A[] = { -0.287, -0.009, -0.989, -0.062, 0.714, -0.293, -0.875, 0.371, 0.728 }; int lda = 3; ! double B[] = { -0.14, -0.969, 0.702, -0.317, -0.739, -0.518 }; int ldb = 3; ! double B_expected[] = { -0.487804878049, 1.31478445037, -2.22062403761, -1.10452961672, 0.939102470256, -1.09460224052 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1888)"); } }; --- 1410,1423 ---- int N = 3; double alpha = -1; ! double A[] = { 0.521, 0.487, -0.961, 0.903, -0.045, 0.059, -0.61, -0.328, 0.883 }; int lda = 3; ! double B[] = { -0.772, 0.079, -0.227, 0.998, 0.302, -0.099 }; int ldb = 3; ! double B_expected[] = { 1.48176583493, 31.4896566432, 12.9778986844, -1.91554702495, -31.7275325229, -12.9967319963 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1880)"); } }; *************** *** 1434,1447 **** int N = 3; double alpha = -1; ! double A[] = { 0.236, 0.605, 0.338, -0.926, 0.362, 0.562, -0.554, 0.076, 0.85 }; int lda = 3; ! double B[] = { 0.113, 0.604, 0.859, 0.216, -0.6, -0.048 }; int ldb = 3; ! double B_expected[] = { -0.113, -0.708638, -0.867745512, -0.216, 0.399984, -0.102062784 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1889)"); } }; --- 1434,1447 ---- int N = 3; double alpha = -1; ! double A[] = { 0.642, 0.511, 0.762, 0.804, -0.28, -0.318, 0.382, -0.165, -0.007 }; int lda = 3; ! double B[] = { 0.987, 0.436, -0.783, 0.175, -0.973, -0.319 }; int ldb = 3; ! double B_expected[] = { -0.987, 0.357548, 1.21902942, -0.175, 1.1137, 0.5696105 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1881)"); } }; *************** *** 1458,1471 **** int N = 3; double alpha = -1; ! double A[] = { -0.476, 0.428, -0.214, -0.889, -0.526, -0.704, 0.458, -0.479, 0.077 }; int lda = 3; ! double B[] = { 0.124, -0.007, 0.452, 0.966, 0.42, 0.369 }; int ldb = 2; ! double B_expected[] = { -15.8695808776, -16.2060574143, 5.8264777048, 6.20050861686, -5.45454545455, -4.79220779221 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1890)"); } }; --- 1458,1471 ---- int N = 3; double alpha = -1; ! double A[] = { -0.995, 0.625, 0.16, -0.127, -0.722, -0.355, -0.14, -0.146, -0.756 }; int lda = 3; ! double B[] = { 0.676, 0.038, 0.543, 0.296, -0.44, 0.751 }; int ldb = 2; ! double B_expected[] = { 0.650272121575, -0.128270318012, 0.869769452872, 0.209093640534, -0.582010582011, 0.993386243386 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1882)"); } }; *************** *** 1482,1495 **** int N = 3; double alpha = -1; ! double A[] = { 0.748, 0.242, -0.964, 0.422, -0.78, -0.595, -0.926, -0.474, 0.947 }; int lda = 3; ! double B[] = { 0.242, -0.553, -0.899, -0.714, -0.084, -0.609 }; int ldb = 2; ! double B_expected[] = { -0.560396352, 0.693808948, 0.938816, 1.002666, 0.084, 0.609 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1891)"); } }; --- 1482,1495 ---- int N = 3; double alpha = -1; ! double A[] = { -0.619, 0.548, 0.064, -0.483, -0.508, -0.819, 0.237, 0.852, -0.512 }; int lda = 3; ! double B[] = { -0.169, 0.429, -0.789, 0.79, 0.479, 0.817 }; int ldb = 2; ! double B_expected[] = { 0.860726164, -0.280732428, 1.197108, -0.093916, -0.479, -0.817 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1883)"); } }; *************** *** 1506,1519 **** int N = 3; double alpha = -1; ! double A[] = { 0.808, -0.074, 0.359, -0.172, -0.934, -0.67, 0.92, -0.617, -0.383 }; int lda = 3; ! double B[] = { 0.079, 0.978, 0.82, 0.444, -0.597, -0.64 }; int ldb = 2; ! double B_expected[] = { -0.0977722772277, -1.2103960396, 0.885690737168, 0.571273347892, -3.19977295412, -3.80492250994 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1892)"); } }; --- 1506,1519 ---- int N = 3; double alpha = -1; ! double A[] = { 0.794, -0.098, 0.442, -0.991, 0.049, 0.079, -0.8, -0.762, 0.395 }; int lda = 3; ! double B[] = { 0.496, -0.734, -0.679, -0.697, 0.426, 0.094 }; int ldb = 2; ! double B_expected[] = { -0.624685138539, 0.92443324937, 12.6077725801, 16.0733562947, -2.90102076605, -4.48707504683 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1884)"); } }; *************** *** 1530,1543 **** int N = 3; double alpha = -1; ! double A[] = { 0.786, 0.922, -0.763, 0.498, -0.082, 0.538, 0.742, -0.391, -0.255 }; int lda = 3; ! double B[] = { 0.911, 0.066, 0.895, 0.255, -0.547, -0.805 }; int ldb = 2; ! double B_expected[] = { -0.911, -0.066, -0.055058, -0.194148, -0.118471796, 0.859093624 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1893)"); } }; --- 1530,1543 ---- int N = 3; double alpha = -1; ! double A[] = { 0.848, -0.765, 0.528, -0.693, 0.252, -0.135, -0.507, 0.954, -0.056 }; int lda = 3; ! double B[] = { 0.791, -0.787, 0.636, 0.271, -0.905, -0.974 }; int ldb = 2; ! double B_expected[] = { -0.791, 0.787, -1.241115, 0.331055, 1.155097475, 0.603156425 }; cblas_dtrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[i], B_expected[i], dbleps, "dtrsm(case 1885)"); } }; *************** *** 1553,1568 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.362f, -0.457f, -0.347f, -0.203f, -0.517f, 0.462f, 0.572f, 0.521f }; int lda = 2; ! float B[] = { 0.118f, -0.593f, 0.773f, 0.053f, -0.419f, -0.096f, 0.846f, -0.311f, -0.364f, 0.161f, -0.496f, -0.393f }; int ldb = 3; ! float B_expected[] = { -1.58885f, 0.58489f, -0.628497f, -0.878921f, 0.701485f, 1.08554f, 1.03347f, 0.537701f, -0.470639f, -0.207688f, -0.056162f, -0.815978f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1894) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1894) imag"); }; }; --- 1553,1568 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.491f, -0.317f, -0.14f, -0.739f, -0.969f, -0.518f, 0.702f, -0.287f }; int lda = 2; ! float B[] = { -0.962f, -0.38f, 0.656f, 0.587f, -0.195f, -0.862f, -0.679f, 0.598f, 0.919f, 0.714f, -0.513f, 0.726f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1886) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1886) imag"); }; }; *************** *** 1578,1593 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.845f, -0.654f, -0.43f, -0.834f, 0.206f, 0.414f, 0.761f, 0.961f }; int lda = 2; ! float B[] = { 0.069f, 0.005f, -0.419f, 0.806f, 0.857f, 0.669f, 0.942f, 0.657f, 0.52f, 0.19f, -0.609f, -0.305f }; int ldb = 3; ! float B_expected[] = { -1.07314f, -0.073878f, -1.32138f, -0.35386f, -0.029944f, 0.8495f, -0.657f, 0.942f, -0.19f, 0.52f, 0.305f, -0.609f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1895) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1895) imag"); }; }; --- 1578,1593 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.6f, 0.338f, -0.048f, -0.926f, 0.236f, 0.362f, 0.605f, 0.562f }; int lda = 2; ! float B[] = { -0.009f, 0.371f, -0.989f, 0.728f, -0.062f, 0.113f, 0.714f, 0.604f, -0.293f, 0.859f, -0.875f, 0.216f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1887) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1887) imag"); }; }; *************** *** 1603,1618 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.87f, 0.218f, 0.813f, 0.575f, -0.848f, 0.7f, -0.311f, 0.374f }; int lda = 2; ! float B[] = { 0.117f, 0.758f, -0.189f, -0.768f, 0.857f, -0.269f, 0.796f, -0.592f, -0.499f, 0.977f, 0.643f, 0.282f }; int ldb = 3; ! float B_expected[] = { 0.851499f, 0.0788813f, -0.881826f, -0.00372192f, -0.0586805f, -0.999761f, -1.37808f, -2.51525f, 2.45259f, 2.57925f, 1.0972f, 1.8459f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1896) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1896) imag"); }; }; --- 1603,1618 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.889f, -0.479f, -0.526f, 0.077f, -0.704f, 0.242f, 0.458f, -0.553f }; int lda = 2; ! float B[] = { -0.554f, 0.966f, 0.076f, 0.42f, 0.85f, 0.369f, 0.124f, -0.476f, -0.007f, 0.428f, 0.452f, -0.214f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1888) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1888) imag"); }; }; *************** *** 1628,1643 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.697f, -0.668f, 0.746f, -0.818f, 0.651f, 0.275f, -0.702f, -0.615f }; int lda = 2; ! float B[] = { -0.876f, 0.842f, -0.848f, 0.901f, 0.75f, 0.361f, -0.702f, 0.039f, -0.41f, 0.541f, 0.489f, 0.025f }; int ldb = 3; ! float B_expected[] = { -0.842f, -0.876f, -0.901f, -0.848f, -0.361f, 0.75f, 0.268242f, 0.099826f, -0.187649f, 0.389823f, 0.416261f, 0.100025f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1897) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1897) imag"); }; }; --- 1628,1643 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.947f, 0.444f, 0.079f, -0.597f, 0.978f, -0.64f, 0.82f, 0.808f }; int lda = 2; ! float B[] = { -0.899f, -0.964f, -0.714f, 0.422f, -0.084f, -0.78f, -0.609f, -0.595f, 0.748f, -0.926f, 0.242f, -0.474f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1889) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1889) imag"); }; }; *************** *** 1653,1668 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.394f, -0.65f, -0.082f, -0.632f, -0.53f, 0.483f, 0.149f, -0.192f }; int lda = 2; ! float B[] = { -0.691f, 0.732f, 0.976f, 0.073f, 0.607f, 0.918f, -0.918f, 0.67f, 0.37f, -0.344f, -0.114f, -0.62f }; int ldb = 2; ! float B_expected[] = { -1.39367f, -3.05481f, -3.35679f, 2.2248f, 4.33836f, -1.06673f, 1.29393f, -4.49373f, -1.89826f, 2.23995f, 1.93461f, 1.72783f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1898) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1898) imag"); }; }; --- 1653,1668 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.547f, -0.763f, -0.805f, 0.498f, 0.786f, -0.082f, 0.922f, 0.538f }; int lda = 2; ! float B[] = { -0.074f, -0.617f, 0.359f, -0.383f, -0.172f, 0.911f, -0.934f, 0.066f, -0.67f, 0.895f, 0.92f, 0.255f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1890) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1890) imag"); }; }; *************** *** 1678,1693 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.45f, 0.972f, -0.051f, 0.71f, -0.127f, -0.274f, 0.152f, 0.789f }; int lda = 2; ! float B[] = { 0.683f, -0.915f, -0.773f, 0.088f, -0.28f, 0.17f, 0.818f, 0.293f, -0.551f, 0.365f, 0.899f, 0.257f }; int ldb = 2; ! float B_expected[] = { 1.11563f, 0.560717f, -0.088f, -0.773f, -0.431343f, -0.256396f, -0.293f, 0.818f, -0.643965f, -0.507245f, -0.257f, 0.899f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1899) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1899) imag"); }; }; --- 1678,1693 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.096f, -0.362f, -0.311f, -0.347f, 0.161f, -0.517f, -0.393f, 0.572f }; int lda = 2; ! float B[] = { 0.742f, -0.419f, -0.391f, 0.846f, -0.255f, -0.364f, 0.006f, -0.496f, 0.118f, -0.593f, 0.773f, 0.053f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1891) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1891) imag"); }; }; *************** *** 1703,1718 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.993f, -0.028f, -0.547f, -0.251f, 0.781f, -0.315f, 0.865f, 0.229f }; int lda = 2; ! float B[] = { 0.578f, 0.73f, -0.931f, 0.288f, 0.048f, 0.508f, -0.168f, 0.655f, 0.92f, -0.26f, 0.485f, 0.05f }; int ldb = 2; ! float B_expected[] = { 0.718162f, -0.602325f, -0.0323644f, -1.24023f, 0.509813f, -0.0627138f, -0.410611f, 0.0227614f, -0.287729f, -0.918372f, -0.000635986f, -0.10338f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1900) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1900) imag"); }; }; --- 1703,1718 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.669f, 0.845f, 0.657f, -0.43f, 0.19f, 0.206f, -0.305f, 0.761f }; int lda = 2; ! float B[] = { -0.457f, 0.857f, -0.203f, 0.942f, 0.462f, 0.52f, 0.521f, -0.609f, 0.069f, 0.005f, -0.419f, 0.806f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1892) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1892) imag"); }; }; *************** *** 1728,1743 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.131f, -0.494f, 0.615f, -0.089f, -0.22f, -0.874f, 0.677f, 0.074f }; int lda = 2; ! float B[] = { -0.276f, 0.539f, 0.647f, 0.986f, -0.34f, 0.983f, -0.819f, 0.144f, 0.361f, 0.561f, 0.178f, -0.433f }; int ldb = 2; ! float B_expected[] = { -0.539f, -0.276f, -0.629951f, 0.768769f, -0.983f, -0.34f, 0.490805f, -0.697387f, -0.561f, 0.361f, 0.745886f, -0.093944f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1901) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1901) imag"); }; }; --- 1728,1743 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.269f, -0.87f, -0.592f, 0.813f, 0.977f, -0.848f, 0.282f, -0.311f }; int lda = 2; ! float B[] = { -0.654f, 0.857f, -0.834f, 0.796f, 0.414f, -0.499f, 0.961f, 0.643f, 0.117f, 0.758f, -0.189f, -0.768f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1893) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1893) imag"); }; }; *************** *** 1753,1768 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.123f, -0.726f, -0.011f, 0.245f, -0.205f, 0.77f, -0.81f, -0.973f, 0.354f, -0.835f, 0.552f, 0.396f, -0.524f, -0.204f, -0.814f, 0.284f, -0.976f, -0.835f }; int lda = 3; ! float B[] = { -0.42f, 0.976f, -0.845f, 0.651f, -0.44f, -0.862f, 0.137f, 0.066f, -0.63f, 0.482f, -0.187f, 0.724f }; int ldb = 3; ! float B_expected[] = { 0.783777f, -1.21156f, 0.66205f, -1.40548f, 0.886226f, 0.0391664f, -0.168468f, -0.119451f, 0.378144f, -0.774828f, 0.708857f, -0.807468f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1902) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1902) imag"); }; }; --- 1753,1768 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.361f, -0.818f, 0.039f, 0.275f, 0.541f, -0.615f, 0.025f, -0.691f, -0.697f, 0.976f, 0.746f, 0.607f, 0.651f, -0.918f, -0.702f, 0.37f, -0.668f, -0.114f }; int lda = 3; ! float B[] = { 0.218f, 0.75f, 0.575f, -0.702f, 0.7f, -0.41f, 0.374f, 0.489f, -0.876f, 0.842f, -0.848f, 0.901f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1894) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1894) imag"); }; }; *************** *** 1778,1793 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.921f, 0.167f, -0.41f, 0.578f, -0.372f, 0.106f, 0.551f, 0.668f, 0.295f, 0.855f, -0.167f, 0.976f, -0.782f, -0.777f, 0.278f, -0.98f, 0.038f, -0.832f }; int lda = 3; ! float B[] = { 0.459f, 0.06f, 0.387f, 0.871f, -0.366f, 0.926f, 0.236f, -0.889f, 0.619f, 0.319f, -0.709f, 0.884f }; int ldb = 3; ! float B_expected[] = { -0.06f, 0.459f, -0.630298f, 0.60987f, -0.409693f, 0.528127f, 0.889f, 0.236f, 0.181898f, 0.201918f, -0.300827f, -0.859254f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1903) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1903) imag"); }; }; --- 1778,1793 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.483f, 0.088f, -0.192f, 0.17f, 0.683f, 0.293f, -0.773f, 0.365f, -0.28f, 0.257f, 0.818f, 0.45f, -0.551f, -0.051f, 0.899f, -0.127f, -0.915f, 0.152f }; int lda = 3; ! float B[] = { 0.732f, -0.394f, 0.073f, -0.082f, 0.918f, -0.53f, 0.67f, 0.149f, -0.344f, -0.65f, -0.62f, -0.632f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1895) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1895) imag"); }; }; *************** *** 1803,1818 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.691f, -0.817f, 0.954f, -0.969f, -0.574f, -0.026f, 0.992f, 0.529f, 0.135f, -0.413f, -0.314f, -0.859f, -0.284f, -0.849f, 0.781f, 0.534f, -0.018f, 0.282f }; int lda = 3; ! float B[] = { -0.028f, -0.429f, 0.066f, -0.854f, -0.316f, 0.514f, -0.465f, -0.857f, 0.286f, 0.415f, -0.486f, 0.538f }; int ldb = 3; ! float B_expected[] = { 6.83575f, 2.7232f, 3.79999f, 5.15624f, -1.00015f, 1.88653f, 5.42614f, 2.69261f, 2.30584f, 3.85628f, -1.59513f, 2.00962f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1904) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1904) imag"); }; }; --- 1803,1818 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.508f, -0.251f, 0.655f, -0.315f, -0.26f, 0.229f, 0.05f, -0.276f, -0.993f, 0.647f, -0.547f, -0.34f, 0.781f, -0.819f, 0.865f, 0.361f, -0.028f, 0.178f }; int lda = 3; ! float B[] = { 0.972f, 0.048f, 0.71f, -0.168f, -0.274f, 0.92f, 0.789f, 0.485f, 0.578f, 0.73f, -0.931f, 0.288f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1896) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1896) imag"); }; }; *************** *** 1828,1843 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.839f, -0.318f, 0.175f, 0.72f, -0.683f, 0.395f, -0.279f, 0.151f, -0.71f, 0.445f, 0.533f, -0.38f, -0.749f, -0.833f, 0.871f, -0.426f, 0.195f, 0.889f }; int lda = 3; ! float B[] = { 0.804f, -0.346f, 0.234f, 0.782f, 0.033f, 0.581f, 0.981f, -0.68f, 0.919f, -0.758f, 0.152f, -0.503f }; int ldb = 3; ! float B_expected[] = { -0.20395f, 0.376748f, -0.290007f, -0.042249f, -0.581f, 0.033f, 1.15245f, 1.75457f, 0.255135f, 1.00089f, 0.503f, 0.152f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1905) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1905) imag"); }; }; --- 1828,1843 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.874f, 0.651f, 0.074f, -0.862f, -0.42f, 0.066f, -0.845f, 0.482f, -0.44f, 0.724f, 0.137f, -0.123f, -0.63f, -0.011f, -0.187f, -0.205f, 0.976f, -0.81f }; int lda = 3; ! float B[] = { 0.539f, 0.131f, 0.986f, 0.615f, 0.983f, -0.22f, 0.144f, 0.677f, 0.561f, -0.494f, -0.433f, -0.089f }; int ldb = 3; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1897) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1897) imag"); }; }; *************** *** 1853,1868 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.365f, -0.662f, 0.188f, -0.571f, 0.082f, 0.192f, -0.833f, -0.958f, 0.159f, -0.203f, 0.481f, 0.08f, -0.954f, 0.681f, -0.015f, 0.146f, -0.352f, -0.068f }; int lda = 3; ! float B[] = { 0.779f, -0.691f, -0.516f, 0.148f, 0.721f, 0.217f, -0.976f, -0.963f, 0.532f, -0.366f, 0.176f, 0.4f }; int ldb = 2; ! float B_expected[] = { -1.34375f, 0.302916f, 0.692272f, 0.158126f, -2.93098f, -5.71682f, 3.87247f, 3.8052f, 3.25028f, -6.53201f, -2.34332f, 2.30748f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1906) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1906) imag"); }; }; --- 1853,1868 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.284f, 0.871f, -0.835f, 0.926f, 0.459f, -0.889f, 0.387f, 0.319f, -0.366f, 0.884f, 0.236f, 0.921f, 0.619f, -0.41f, -0.709f, -0.372f, 0.06f, 0.551f }; int lda = 3; ! float B[] = { 0.354f, 0.245f, 0.552f, 0.77f, -0.524f, -0.973f, -0.814f, -0.835f, -0.976f, 0.396f, -0.726f, -0.204f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1898) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1898) imag"); }; }; *************** *** 1878,1893 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.779f, 0.065f, -0.616f, -0.245f, 0.823f, 0.689f, 0.06f, -0.164f, 0.768f, -0.727f, 0.897f, -0.556f, -0.875f, 0.862f, 0.863f, -0.085f, 0.171f, 0.063f }; int lda = 3; ! float B[] = { -0.621f, 0.428f, 0.096f, 0.711f, 0.416f, -0.684f, 0.806f, 0.491f, 0.037f, -0.776f, -0.312f, 0.391f }; int ldb = 2; ! float B_expected[] = { -0.428f, -0.621f, -0.711f, 0.096f, 0.811524f, 0.383068f, -0.464084f, 0.683636f, -0.866708f, -0.399047f, -0.587978f, -0.244543f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1907) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1907) imag"); }; }; --- 1878,1893 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.98f, -0.854f, -0.832f, 0.514f, -0.028f, -0.857f, 0.066f, 0.415f, -0.316f, 0.538f, -0.465f, -0.691f, 0.286f, 0.954f, -0.486f, -0.574f, -0.429f, 0.992f }; int lda = 3; ! float B[] = { 0.295f, 0.578f, -0.167f, 0.106f, -0.782f, 0.668f, 0.278f, 0.855f, 0.038f, 0.976f, 0.167f, -0.777f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1899) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1899) imag"); }; }; *************** *** 1903,1918 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.349f, 0.224f, -0.323f, 0.457f, 0.081f, 0.443f, 0.809f, 0.037f, -0.543f, 0.554f, 0.779f, 0.632f, -0.852f, -0.148f, -0.649f, -0.78f, 0.469f, -0.515f }; int lda = 3; ! float B[] = { 0.162f, 0.754f, -0.978f, -0.097f, 0.986f, 0.943f, 0.676f, 0.718f, 0.204f, 0.264f, -0.124f, -0.73f }; int ldb = 2; ! float B_expected[] = { 0.0811068f, 1.92921f, -3.74716f, 1.18561f, 1.80842f, -0.638944f, 0.528341f, 1.20828f, -0.471728f, -0.083028f, 0.837267f, 0.654994f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1908) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1908) imag"); }; }; --- 1903,1918 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { 0.534f, 0.782f, 0.282f, 0.581f, 0.804f, -0.68f, 0.234f, -0.758f, 0.033f, -0.503f, 0.981f, -0.839f, 0.919f, 0.175f, 0.152f, -0.683f, -0.346f, -0.279f }; int lda = 3; ! float B[] = { 0.135f, -0.969f, -0.314f, -0.026f, -0.284f, 0.529f, 0.781f, -0.413f, -0.018f, -0.859f, -0.817f, -0.849f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1900) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1900) imag"); }; }; *************** *** 1928,1943 **** int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.469f, -0.164f, -0.792f, -0.454f, 0.206f, 0.785f, 0.504f, -0.561f, 0.205f, 0.463f, -0.8f, 0.803f, 0.283f, 0.131f, 0.576f, -0.431f, 0.297f, -0.415f }; int lda = 3; ! float B[] = { -0.364f, 0.853f, 0.056f, -0.78f, 0.05f, 0.223f, -0.166f, -0.097f, 0.24f, 0.721f, 0.023f, 0.508f }; int ldb = 2; ! float B_expected[] = { -1.3696f, 0.527133f, 0.554099f, 0.524136f, -0.60708f, 0.820963f, -0.290931f, 0.260324f, -0.721f, 0.24f, -0.508f, 0.023f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1909) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1909) imag"); }; }; --- 1928,1943 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.0f}; ! float A[] = { -0.426f, 0.148f, 0.889f, 0.217f, 0.779f, -0.963f, -0.516f, -0.366f, 0.721f, 0.4f, -0.976f, -0.365f, 0.532f, 0.188f, 0.176f, 0.082f, -0.691f, -0.833f }; int lda = 3; ! float B[] = { -0.71f, 0.72f, 0.533f, 0.395f, -0.749f, 0.151f, 0.871f, 0.445f, 0.195f, -0.38f, -0.318f, -0.833f }; int ldb = 2; ! float B_expected[] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1901) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1901) imag"); }; }; *************** *** 1953,1968 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.917f, 0.367f, -0.115f, -0.321f, -0.811f, -0.563f, 0.78f, -0.742f }; int lda = 2; ! float B[] = { 0.797f, 0.166f, 0.737f, -0.685f, 0.677f, -0.04f, -0.652f, 0.327f, 0.094f, -0.656f, 0.496f, -0.646f }; int ldb = 3; ! float B_expected[] = { 0.811592f, -0.143789f, 0.435059f, -0.92112f, 0.621302f, -0.292277f, -0.710488f, 0.0561583f, 0.694329f, -0.137285f, 0.752465f, 0.100199f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1910) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1910) imag"); }; }; --- 1953,1968 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.068f, 0.806f, -0.621f, 0.037f, 0.096f, -0.312f, 0.416f, 0.428f }; int lda = 2; ! float B[] = { 0.481f, 0.192f, -0.954f, -0.958f, -0.015f, -0.203f, -0.352f, 0.08f, -0.662f, 0.681f, -0.571f, 0.146f }; int ldb = 3; ! float B_expected[] = { 0.612512f, 0.186537f, -1.27483f, -1.08103f, -0.0395775f, -0.248522f, 0.0478574f, -0.671409f, -3.31165f, 0.315466f, -1.07961f, -0.629312f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1902) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1902) imag"); }; }; *************** *** 1978,1993 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.384f, 0.783f, -0.086f, -0.649f, -0.574f, 0.216f, -0.809f, -0.608f }; int lda = 2; ! float B[] = { 0.067f, -0.183f, -0.524f, 0.77f, 0.169f, 0.769f, -0.982f, -0.522f, -0.051f, -0.129f, 0.595f, 0.56f }; int ldb = 3; ! float B_expected[] = { 0.067f, -0.183f, -0.524f, 0.77f, 0.169f, 0.769f, -0.857471f, -0.494255f, -0.595794f, -0.402856f, 0.110453f, 0.735815f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1911) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1911) imag"); }; }; --- 1978,1993 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.863f, 0.689f, 0.171f, -0.164f, 0.065f, -0.727f, -0.245f, -0.556f }; int lda = 2; ! float B[] = { 0.711f, -0.616f, -0.684f, 0.823f, 0.491f, 0.06f, -0.776f, 0.768f, 0.391f, 0.897f, 0.779f, -0.875f }; int ldb = 3; ! float B_expected[] = { 0.616f, 0.711f, -0.823f, -0.684f, -0.06f, 0.491f, -0.98994f, -0.796557f, -0.644091f, 0.372992f, 0.804736f, 0.685199f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1903) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1903) imag"); }; }; *************** *** 2003,2018 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.228f, -0.644f, 0.731f, 0.458f, 0.051f, -0.725f, 0.731f, 0.537f }; int lda = 2; ! float B[] = { -0.588f, 0.01f, -0.009f, -0.374f, 0.422f, 0.758f, -0.428f, 0.263f, 0.659f, 0.171f, -0.239f, 0.968f }; int ldb = 3; ! float B_expected[] = { -0.232749f, -1.39168f, -0.124158f, 0.287962f, -1.55821f, 0.0298572f, -0.208619f, 0.513035f, 0.697138f, -0.278198f, 0.419466f, 1.01607f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1912) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1912) imag"); }; }; --- 2003,2018 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.718f, -0.323f, 0.264f, 0.081f, -0.73f, 0.809f, -0.349f, -0.543f }; int lda = 2; ! float B[] = { 0.862f, 0.676f, -0.085f, 0.204f, 0.063f, -0.124f, 0.162f, 0.754f, -0.978f, -0.097f, 0.986f, 0.943f }; int ldb = 3; ! float B_expected[] = { -1.32203f, -1.00495f, 1.84655f, 0.329156f, -1.66053f, -2.19061f, 0.420449f, -1.11835f, 1.19333f, 0.945621f, -0.495118f, -2.05487f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1904) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1904) imag"); }; }; *************** *** 2028,2043 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.321f, 0.761f, 0.809f, -0.017f, -0.009f, -0.975f, 0.057f, 0.396f }; int lda = 2; ! float B[] = { 0.377f, 0.776f, -0.686f, -0.561f, 0.29f, 0.601f, 0.755f, 0.518f, 0.313f, -0.394f, 0.945f, 0.395f }; int ldb = 3; ! float B_expected[] = { -0.121255f, 1.51679f, -0.299033f, -0.259371f, -0.08662f, 1.52593f, 0.755f, 0.518f, 0.313f, -0.394f, 0.945f, 0.395f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1913) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1913) imag"); }; }; --- 2028,2043 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.515f, -0.166f, -0.364f, 0.24f, 0.056f, 0.023f, 0.05f, 0.853f }; int lda = 2; ! float B[] = { 0.779f, 0.443f, -0.852f, 0.037f, -0.649f, 0.554f, 0.469f, 0.632f, 0.224f, -0.148f, 0.457f, -0.78f }; int ldb = 3; ! float B_expected[] = { -0.396821f, 0.767272f, -0.040136f, -0.867948f, -0.587169f, -0.692532f, -0.632f, 0.469f, 0.148f, 0.224f, 0.78f, 0.457f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1905) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1905) imag"); }; }; *************** *** 2053,2068 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.186f, 0.818f, -0.142f, -0.376f, 0.332f, 0.746f, 0.413f, -0.151f }; int lda = 2; ! float B[] = { -0.374f, -0.787f, 0.221f, -0.104f, 0.74f, -0.548f, 0.88f, -0.66f, 0.65f, 0.046f, -0.839f, -0.783f }; int ldb = 2; ! float B_expected[] = { -1.01366f, 0.226724f, 1.10152f, 1.79962f, -0.441403f, -1.00501f, 0.588898f, 0.222456f, 0.225271f, -0.743398f, -2.5862f, -2.65075f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1914) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1914) imag"); }; }; --- 2053,2068 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.576f, 0.785f, 0.297f, -0.561f, -0.164f, 0.463f, -0.454f, 0.803f }; int lda = 2; ! float B[] = { -0.78f, -0.792f, 0.223f, 0.206f, -0.097f, 0.504f, 0.721f, 0.205f, 0.508f, -0.8f, -0.469f, 0.283f }; int ldb = 2; ! float B_expected[] = { -0.164671f, -1.12975f, 0.510941f, 0.652691f, -0.386549f, 0.358405f, 0.959415f, -0.414847f, 0.906729f, -0.353789f, -0.734462f, 0.786484f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1906) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1906) imag"); }; }; *************** *** 2078,2093 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.574f, 0.018f, -0.584f, -0.184f, 0.41f, 0.075f, 0.92f, 0.022f }; int lda = 2; ! float B[] = { 0.524f, -0.234f, 0.198f, 0.079f, -0.449f, -0.433f, -0.14f, -0.201f, -0.242f, -0.368f, -0.298f, 0.693f }; int ldb = 2; ! float B_expected[] = { 0.524f, -0.234f, -0.03439f, 0.13564f, -0.449f, -0.433f, 0.011615f, 0.010205f, -0.242f, -0.368f, -0.22638f, 0.86203f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1915) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1915) imag"); }; }; --- 2078,2093 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.04f, 0.917f, 0.327f, -0.115f, -0.656f, -0.811f, -0.646f, 0.78f }; int lda = 2; ! float B[] = { 0.131f, 0.677f, -0.431f, -0.652f, -0.415f, 0.094f, -0.253f, 0.496f, 0.797f, 0.166f, 0.737f, -0.685f }; int ldb = 2; ! float B_expected[] = { -0.677f, 0.131f, 0.101647f, -0.894111f, -0.094f, -0.415f, -0.221099f, -0.601474f, -0.166f, 0.797f, -0.070263f, 1.12521f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1907) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1907) imag"); }; }; *************** *** 2103,2118 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.422f, -0.38f, 0.919f, -0.229f, -0.849f, -0.19f, 0.02f, -0.181f }; int lda = 2; ! float B[] = { 0.971f, -0.339f, 0.203f, 0.083f, 0.461f, -0.623f, 0.334f, 0.653f, 0.694f, 0.42f, 0.239f, -0.061f }; int ldb = 2; ! float B_expected[] = { 3.06394f, -0.745692f, -0.330599f, 1.15808f, 8.0252f, -0.902398f, -3.36278f, 2.21688f, 0.70369f, -0.872941f, 0.477097f, 1.26772f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1916) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1916) imag"); }; }; --- 2103,2118 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.769f, -0.384f, -0.522f, -0.086f, -0.129f, -0.574f, 0.56f, -0.809f }; int lda = 2; ! float B[] = { 0.367f, 0.169f, -0.321f, -0.982f, -0.563f, -0.051f, -0.742f, 0.595f, 0.067f, -0.183f, -0.524f, 0.77f }; int ldb = 2; ! float B_expected[] = { -0.178752f, 0.912513f, 0.836303f, 0.634945f, 0.817549f, -0.921899f, 0.275884f, -0.926446f, 0.49345f, -0.309856f, -0.00752416f, -0.946584f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1908) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1908) imag"); }; }; *************** *** 2128,2143 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.564f, 0.483f, -0.635f, 0.84f, 0.238f, 0.35f, 0.96f, 0.397f }; int lda = 2; ! float B[] = { 0.963f, -0.513f, 0.989f, 0.404f, -0.352f, 0.924f, 0.052f, -0.059f, -0.771f, 0.341f, -0.566f, -0.844f }; int ldb = 2; ! float B_expected[] = { 1.93037f, -1.08722f, 0.989f, 0.404f, -0.36854f, 0.842855f, 0.052f, -0.059f, -1.83937f, 0.2805f, -0.566f, -0.844f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1917) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1917) imag"); }; }; --- 2128,2143 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.758f, 0.228f, 0.263f, 0.731f, 0.171f, 0.051f, 0.968f, 0.731f }; int lda = 2; ! float B[] = { 0.783f, 0.422f, -0.649f, -0.428f, 0.216f, 0.659f, -0.608f, -0.239f, -0.588f, 0.01f, -0.009f, -0.374f }; int ldb = 2; ! float B_expected[] = { -1.00898f, 0.640819f, 0.428f, -0.649f, -1.1663f, 0.201195f, 0.239f, -0.608f, -0.114941f, -0.859027f, 0.374f, -0.009f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1909) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1909) imag"); }; }; *************** *** 2153,2168 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.182f, 0.699f, 0.303f, -0.273f, -0.363f, 0.02f, 0.991f, -0.206f, -0.347f, 0.269f, -0.384f, 0.797f, 0.392f, -0.966f, 0.347f, 0.87f, 0.016f, -0.097f }; int lda = 3; ! float B[] = { 0.587f, 0.875f, -0.848f, 0.154f, -0.887f, -0.709f, 0.824f, -0.895f, 0.159f, 0.933f, -0.011f, -0.393f }; int ldb = 3; ! float B_expected[] = { -14.9753f, 2.31554f, 0.613295f, 24.1527f, 5.64728f, -10.0758f, -3.79783f, -5.34545f, -5.38045f, 2.99977f, 3.92602f, -0.760993f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1918) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1918) imag"); }; }; --- 2153,2168 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.601f, -0.017f, 0.518f, -0.975f, -0.394f, 0.396f, 0.395f, -0.374f, -0.321f, 0.221f, 0.809f, 0.74f, -0.009f, 0.88f, 0.057f, 0.65f, 0.761f, -0.839f }; int lda = 3; ! float B[] = { -0.644f, 0.29f, 0.458f, 0.755f, -0.725f, 0.313f, 0.537f, 0.945f, 0.377f, 0.776f, -0.686f, -0.561f }; int ldb = 3; ! float B_expected[] = { -5.28862f, 4.51343f, 4.18447f, 0.519474f, 0.288441f, -0.634688f, -7.53878f, 2.5597f, 2.79299f, 2.44873f, 0.781327f, -0.0400353f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1910) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1910) imag"); }; }; *************** *** 2178,2193 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.637f, -0.57f, 0.322f, -0.303f, 0.618f, 0.261f, 0.654f, -0.238f, 0.66f, -0.485f, 0.223f, -0.196f, -0.252f, 0.929f, -0.012f, 0.965f, 0.783f, 0.489f }; int lda = 3; ! float B[] = { 0.894f, 0.93f, 0.648f, 0.914f, 0.7f, -0.138f, 0.63f, -0.173f, -0.671f, -0.327f, -0.922f, 0.816f }; int ldb = 3; ! float B_expected[] = { -0.0695574f, 0.64143f, 0.518948f, 1.08197f, 0.7f, -0.138f, 1.8231f, -0.404044f, -0.62533f, -0.68968f, -0.922f, 0.816f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1919) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1919) imag"); }; }; --- 2178,2193 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.746f, 0.079f, -0.151f, -0.433f, 0.524f, -0.201f, 0.198f, -0.368f, -0.449f, 0.693f, -0.14f, -0.574f, -0.242f, -0.584f, -0.298f, 0.41f, -0.234f, 0.92f }; int lda = 3; ! float B[] = { -0.787f, 0.186f, -0.104f, -0.142f, -0.548f, 0.332f, -0.66f, 0.413f, 0.046f, 0.818f, -0.783f, -0.376f }; int ldb = 3; ! float B_expected[] = { 0.320805f, -0.445083f, 0.410072f, -0.371288f, -0.332f, -0.548f, -0.566249f, -0.287942f, -0.315918f, 0.152204f, 0.376f, -0.783f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1911) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1911) imag"); }; }; *************** *** 2203,2218 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { 0.274f, 0.721f, -0.445f, 0.14f, 0.023f, -0.945f, 0.859f, -0.522f, -0.227f, 0.722f, 0.165f, 0.969f, -0.212f, -0.816f, 0.908f, -0.652f, -0.208f, -0.229f }; int lda = 3; ! float B[] = { 0.011f, -0.818f, 0.067f, -0.191f, -0.911f, 0.84f, -0.162f, -0.951f, -0.502f, -0.21f, 0.492f, 0.767f }; int ldb = 3; ! float B_expected[] = { -0.986296f, -0.390076f, -0.910328f, -1.26205f, -3.05033f, 0.930902f, -1.22716f, -0.241667f, -1.07925f, -0.600129f, -2.84941f, 5.27338f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1920) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1920) imag"); }; }; --- 2203,2218 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.623f, -0.229f, 0.653f, -0.19f, 0.42f, -0.181f, -0.061f, 0.963f, 0.422f, 0.989f, 0.919f, -0.352f, -0.849f, 0.052f, 0.02f, -0.771f, -0.38f, -0.566f }; int lda = 3; ! float B[] = { 0.018f, 0.461f, -0.184f, 0.334f, 0.075f, 0.694f, 0.022f, 0.239f, 0.971f, -0.339f, 0.203f, 0.083f }; int ldb = 3; ! float B_expected[] = { 0.642534f, -0.265073f, -0.901268f, 0.171623f, 1.29999f, 0.384146f, 0.326529f, -0.155337f, 0.629902f, 0.0571184f, -0.761884f, -0.282697f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1912) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1912) imag"); }; }; *************** *** 2228,2243 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.186f, 0.118f, -0.545f, 0.784f, 0.057f, 0.39f, 0.77f, -0.518f, -0.97f, 0.271f, 0.488f, 0.637f, -0.482f, -0.993f, -0.797f, -0.945f, 0.257f, 0.3f }; int lda = 3; ! float B[] = { -0.783f, 0.649f, 0.698f, 0.046f, -0.153f, 0.473f, -0.996f, -0.211f, 0.84f, 0.201f, -0.457f, 0.918f }; int ldb = 3; ! float B_expected[] = { -0.783f, 0.649f, 0.964728f, -0.859324f, 0.406086f, 0.235086f, -0.996f, -0.211f, 1.71622f, -0.152458f, 0.78435f, 1.32759f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1921) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1921) imag"); }; }; --- 2228,2243 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.35f, 0.154f, 0.397f, -0.709f, 0.587f, -0.895f, -0.848f, 0.933f, -0.887f, -0.393f, 0.824f, 0.182f, 0.159f, 0.303f, -0.011f, -0.363f, 0.875f, 0.991f }; int lda = 3; ! float B[] = { -0.513f, 0.564f, 0.404f, -0.635f, 0.924f, 0.238f, -0.059f, 0.96f, 0.341f, 0.483f, -0.844f, 0.84f }; int ldb = 3; ! float B_expected[] = { -0.564f, -0.513f, -0.321901f, 0.495188f, -0.487057f, 1.06506f, -0.96f, -0.059f, -1.35213f, 1.18665f, -1.15086f, -1.02151f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1913) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1913) imag"); }; }; *************** *** 2253,2268 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.681f, -0.342f, -0.195f, -0.053f, 0.016f, -0.191f, 0.989f, -0.718f, -0.59f, 0.646f, -0.41f, -0.809f, -0.359f, -0.783f, -0.902f, 0.917f, -0.703f, 0.795f }; int lda = 3; ! float B[] = { -0.27f, 0.037f, 0.349f, 0.36f, -0.293f, 0.128f, -0.481f, -0.834f, -0.815f, -0.6f, 0.728f, 0.122f }; int ldb = 2; ! float B_expected[] = { -0.69977f, -2.39368f, 2.17354f, 1.74016f, 0.260417f, -1.25151f, 0.175881f, 1.93577f, 0.085191f, 0.949825f, -0.368302f, -0.590043f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1922) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1922) imag"); }; }; --- 2253,2268 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.87f, 0.914f, -0.097f, -0.138f, 0.894f, -0.173f, 0.648f, -0.327f, 0.7f, 0.816f, 0.63f, 0.637f, -0.671f, 0.322f, -0.922f, 0.618f, 0.93f, 0.654f }; int lda = 3; ! float B[] = { -0.347f, -0.273f, -0.384f, 0.02f, 0.392f, -0.206f, 0.347f, 0.269f, 0.016f, 0.797f, 0.699f, -0.966f }; int ldb = 2; ! float B_expected[] = { -0.443754f, 0.343363f, 0.300599f, -0.548484f, 0.757674f, 0.722159f, 0.224607f, -0.673284f, -0.565323f, 0.414754f, 1.04867f, 0.014162f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1914) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1914) imag"); }; }; *************** *** 2278,2293 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.132f, 0.33f, 0.357f, 0.32f, 0.833f, -0.111f, -0.192f, -0.643f, -0.622f, -0.663f, -0.58f, 0.423f, -0.874f, 0.86f, -0.281f, -0.992f, 0.055f, 0.137f }; int lda = 3; ! float B[] = { 0.104f, -0.906f, -0.712f, 0.103f, -0.474f, -0.591f, 0.073f, -0.906f, -0.261f, -0.391f, 0.881f, -0.345f }; int ldb = 2; ! float B_expected[] = { 0.126148f, -1.31009f, -0.0285057f, -0.554776f, -0.159469f, -0.959783f, 0.662801f, -0.128993f, -0.261f, -0.391f, 0.881f, -0.345f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1923) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1923) imag"); }; }; --- 2278,2293 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { 0.965f, -0.191f, 0.489f, 0.84f, 0.011f, -0.951f, 0.067f, -0.21f, -0.911f, 0.767f, -0.162f, 0.274f, -0.502f, -0.445f, 0.492f, 0.023f, -0.818f, 0.859f }; int lda = 3; ! float B[] = { 0.66f, -0.303f, 0.223f, 0.261f, -0.252f, -0.238f, -0.012f, -0.485f, 0.783f, -0.196f, -0.57f, 0.929f }; int ldb = 2; ! float B_expected[] = { 0.177032f, 1.21679f, -0.596808f, -0.300881f, 0.159577f, -0.641744f, 0.928958f, 0.289807f, 0.196f, 0.783f, -0.929f, -0.57f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1915) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1915) imag"); }; }; *************** *** 2303,2318 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.353f, -0.581f, -0.648f, 0.894f, 0.825f, -0.23f, -0.529f, 0.213f, 0.568f, 0.296f, 0.372f, 0.442f, 0.515f, -0.409f, 0.222f, -0.246f, -0.524f, 0.318f }; int lda = 3; ! float B[] = { -0.467f, 0.632f, 0.672f, 0.777f, -0.609f, 0.511f, -0.991f, 0.311f, -0.617f, -0.732f, -0.585f, 0.152f }; int ldb = 2; ! float B_expected[] = { -0.437806f, -1.06979f, -1.49004f, 0.251317f, -2.40924f, 1.62379f, -1.09482f, 3.75003f, -1.80514f, -2.07012f, -4.8059f, -0.418185f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1924) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1924) imag"); }; }; --- 2303,2318 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.652f, 0.046f, -0.229f, 0.473f, -0.783f, -0.211f, 0.698f, 0.201f, -0.153f, 0.918f, -0.996f, -0.186f, 0.84f, -0.545f, -0.457f, 0.057f, 0.649f, 0.77f }; int lda = 3; ! float B[] = { -0.227f, 0.14f, 0.165f, -0.945f, -0.212f, -0.522f, 0.908f, 0.722f, -0.208f, 0.969f, 0.721f, -0.816f }; int ldb = 2; ! float B_expected[] = { 0.189219f, 0.361509f, -1.42444f, -0.353565f, -0.361882f, -0.741783f, 1.80537f, 1.02311f, -1.24128f, 0.407779f, 2.0229f, -0.0912412f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1916) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1916) imag"); }; }; *************** *** 2328,2343 **** int M = 2; int N = 3; ! float alpha[2] = {1.0f, 0.0f}; ! float A[] = { -0.201f, -0.918f, -0.514f, -0.889f, -0.948f, 0.34f, 0.818f, 0.557f, 0.341f, 0.484f, 0.235f, 0.561f, 0.874f, -0.342f, -0.411f, -0.975f, -0.85f, -0.621f }; int lda = 3; ! float B[] = { -0.389f, -0.252f, 0.322f, -0.763f, -0.839f, -0.744f, -0.946f, -0.312f, 0.051f, -0.686f, -0.626f, -0.043f }; int ldb = 2; ! float B_expected[] = { -0.389f, -0.252f, 0.322f, -0.763f, -0.814918f, -1.21935f, -0.102185f, -0.417924f, -0.896001f, -0.04892f, -0.790606f, -0.720266f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1925) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1925) imag"); }; }; --- 2328,2343 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 1.0f}; ! float A[] = { -0.945f, 0.36f, 0.3f, 0.128f, -0.27f, -0.834f, 0.349f, -0.6f, -0.293f, 0.122f, -0.481f, -0.681f, -0.815f, -0.195f, 0.728f, 0.016f, 0.037f, 0.989f }; int lda = 3; ! float B[] = { -0.97f, 0.784f, 0.488f, 0.39f, -0.482f, -0.518f, -0.797f, 0.271f, 0.257f, 0.637f, 0.118f, -0.993f }; int ldb = 2; ! float B_expected[] = { -0.784f, -0.97f, -0.39f, 0.488f, 0.62904f, -0.090648f, -0.091536f, -0.89348f, 0.3246f, -0.273981f, 1.04514f, -0.5676f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1917) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1917) imag"); }; }; *************** *** 2353,2368 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.571f, 0.12f, 0.665f, 0.425f, -0.977f, -0.772f, -0.944f, -0.154f }; int lda = 2; ! float B[] = { -0.357f, -0.213f, 0.57f, 0.134f, 0.089f, 0.046f, 0.027f, 0.825f, -0.127f, 0.658f, -0.332f, 0.247f }; int ldb = 3; ! float B_expected[] = { 0.205417f, 0.092557f, -0.315204f, -0.0368205f, -0.0507703f, -0.0192512f, 0.238158f, 0.270895f, -0.257649f, 0.296502f, -0.140106f, 0.100105f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1926) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1926) imag"); }; }; --- 2353,2368 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.795f, 0.073f, 0.104f, -0.261f, -0.712f, 0.881f, -0.474f, -0.906f }; int lda = 2; ! float B[] = { -0.41f, -0.191f, -0.359f, -0.718f, -0.902f, 0.646f, -0.703f, -0.809f, -0.342f, -0.783f, -0.053f, 0.917f }; int ldb = 3; ! float B_expected[] = { 0.0285203f, -0.0489535f, 0.0936712f, -0.036556f, -0.0702473f, -0.11991f, -0.0924979f, -0.0235243f, -0.0742841f, -0.0262764f, 0.074552f, 0.0886899f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1918) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1918) imag"); }; }; *************** *** 2378,2393 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.051f, 0.966f, 0.04f, -0.765f, 0.276f, -0.798f, 0.766f, -0.37f }; int lda = 2; ! float B[] = { 0.532f, 0.59f, 0.305f, 0.443f, 0.036f, 0.655f, -0.145f, -0.864f, -0.483f, -0.45f, -0.327f, -0.365f }; int ldb = 3; ! float B_expected[] = { -0.2186f, -0.1238f, -0.1358f, -0.1024f, -0.0763f, -0.1929f, 0.043937f, 0.416881f, 0.116996f, 0.194683f, -0.0099165f, 0.142885f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1927) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1927) imag"); }; }; --- 2378,2393 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.281f, -0.111f, 0.055f, -0.643f, 0.33f, -0.663f, 0.32f, 0.423f }; int lda = 2; ! float B[] = { 0.103f, 0.357f, -0.591f, 0.833f, -0.906f, -0.192f, -0.391f, -0.622f, -0.345f, -0.58f, -0.132f, -0.874f }; int ldb = 3; ! float B_expected[] = { -0.0357f, 0.0103f, -0.0833f, -0.0591f, 0.0192f, -0.0906f, 0.0707864f, -0.0167114f, 0.0245802f, 0.0223124f, 0.0280882f, -0.0205626f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1919) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1919) imag"); }; }; *************** *** 2403,2418 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.163f, -0.238f, -0.032f, 0.494f, 0.863f, 0.96f, 0.669f, 0.415f }; int lda = 2; ! float B[] = { -0.724f, -0.682f, 0.034f, 0.352f, 0.42f, 0.253f, 0.186f, -0.061f, 0.278f, -0.764f, -0.484f, 0.051f }; int ldb = 3; ! float B_expected[] = { -0.532386f, -1.09223f, -1.1606f, 1.43429f, 1.04476f, 0.724237f, -0.0783541f, 0.00655162f, -0.179639f, 0.27272f, 0.193877f, 0.0250509f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1928) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1928) imag"); }; }; --- 2403,2418 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.311f, -0.648f, -0.732f, 0.825f, 0.152f, -0.529f, -0.353f, 0.568f }; int lda = 2; ! float B[] = { 0.86f, -0.991f, -0.992f, -0.617f, 0.137f, -0.585f, -0.467f, 0.632f, 0.672f, 0.777f, -0.609f, 0.511f }; int ldb = 3; ! float B_expected[] = { 0.0795347f, -0.0537122f, -0.0885393f, -0.0194836f, -0.0386006f, -0.0674606f, 0.109194f, -0.0434058f, -0.0240177f, -0.151722f, 0.117678f, -0.0168304f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1920) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1920) imag"); }; }; *************** *** 2428,2443 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.533f, 0.575f, 0.808f, -0.631f, 0.185f, 0.296f, -0.757f, -0.279f }; int lda = 2; ! float B[] = { -0.744f, -0.881f, -0.594f, 0.629f, -0.924f, 0.017f, -0.089f, -0.052f, 0.959f, -0.486f, 0.39f, -0.378f }; int ldb = 3; ! float B_expected[] = { 0.303415f, 0.198103f, 0.0879903f, -0.363588f, 0.245042f, -0.149137f, 0.0319f, 0.0067f, -0.2391f, 0.2417f, -0.0792f, 0.1524f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1929) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1929) imag"); }; }; --- 2428,2443 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.318f, -0.946f, -0.389f, 0.051f, 0.322f, -0.626f, -0.839f, -0.252f }; int lda = 2; ! float B[] = { 0.372f, -0.23f, 0.515f, 0.213f, 0.222f, 0.296f, -0.524f, 0.442f, -0.581f, -0.409f, 0.894f, -0.246f }; int ldb = 3; ! float B_expected[] = { 0.00443f, 0.081742f, -0.0708404f, 0.0446048f, 0.0184432f, -0.0219864f, -0.0442f, -0.0524f, 0.0409f, -0.0581f, 0.0246f, 0.0894f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1921) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1921) imag"); }; }; *************** *** 2453,2468 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.001f, -0.948f, -0.97f, -0.285f, -0.664f, -0.977f, -0.746f, 0.192f }; int lda = 2; ! float B[] = { 0.997f, -0.852f, 0.87f, -0.955f, 0.007f, -0.071f, -0.263f, -0.077f, -0.856f, 0.228f, -0.81f, 0.476f }; int ldb = 2; ! float B_expected[] = { 0.375027f, 0.225237f, -0.432345f, -0.0987217f, 0.0232012f, -0.00529874f, -0.112225f, 0.0682749f, -0.162707f, -0.246664f, 0.267117f, 0.237712f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1930) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1930) imag"); }; }; --- 2453,2468 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.411f, 0.34f, -0.85f, 0.557f, -0.918f, 0.484f, -0.889f, 0.561f }; int lda = 2; ! float B[] = { -0.763f, -0.514f, -0.744f, -0.948f, -0.312f, 0.818f, -0.686f, 0.341f, -0.043f, 0.235f, -0.201f, 0.874f }; int ldb = 2; ! float B_expected[] = { 0.0169288f, 0.17164f, -0.0683166f, -0.0596556f, 0.155447f, -0.0526808f, -0.086698f, 0.101645f, 0.039085f, -0.0218708f, 0.0437248f, -0.0036776f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1922) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1922) imag"); }; }; *************** *** 2478,2493 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.804f, 0.476f, -0.898f, -0.966f, 0.51f, -0.346f, 0.622f, -0.749f }; int lda = 2; ! float B[] = { -0.964f, 0.453f, 0.799f, -0.949f, -0.055f, 0.803f, 0.99f, -0.162f, 0.913f, -0.081f, -0.057f, 0.014f }; int ldb = 2; ! float B_expected[] = { 0.2439f, -0.2323f, -0.349565f, 0.398684f, -0.0638f, -0.2464f, -0.333516f, 0.295339f, -0.2658f, 0.1156f, 0.191256f, 0.0231108f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1931) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1931) imag"); }; }; --- 2478,2493 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.046f, 0.571f, 0.825f, 0.665f, 0.658f, -0.977f, 0.247f, -0.944f }; int lda = 2; ! float B[] = { -0.342f, 0.089f, -0.975f, 0.027f, -0.621f, -0.127f, 0.937f, -0.332f, -0.357f, -0.213f, 0.57f, 0.134f }; int ldb = 2; ! float B_expected[] = { -0.0089f, -0.0342f, -0.0302572f, -0.0663011f, 0.0127f, -0.0621f, -0.0358283f, 0.122154f, 0.0213f, -0.0357f, -0.0622943f, 0.0596805f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1923) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1923) imag"); }; }; *************** *** 2503,2518 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.144f, -0.611f, -0.054f, 0.618f, 0.213f, 0.49f, -0.465f, -0.488f }; int lda = 2; ! float B[] = { -0.225f, -0.663f, 0.073f, -0.379f, -0.297f, 0.822f, -0.038f, -0.935f, -0.81f, 0.885f, -0.065f, 0.412f }; int ldb = 2; ! float B_expected[] = { 0.287563f, -0.439427f, 0.113582f, -0.141015f, -0.375321f, -0.339988f, 0.189826f, -0.395838f, -0.655583f, 0.0702722f, -0.117522f, 0.15645f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1932) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1932) imag"); }; }; --- 2503,2518 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.655f, 0.051f, -0.864f, 0.04f, -0.45f, 0.276f, -0.365f, 0.766f }; int lda = 2; ! float B[] = { 0.12f, 0.036f, 0.425f, -0.145f, -0.772f, -0.483f, -0.154f, -0.327f, 0.532f, 0.59f, 0.305f, 0.443f }; int ldb = 2; ! float B_expected[] = { -0.0745593f, 0.00123365f, -0.0525674f, -0.00611891f, 0.0752311f, -0.0558274f, -0.0001932f, 0.0425972f, -0.0986826f, -0.00963885f, -0.00999124f, -0.0625937f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1924) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1924) imag"); }; }; *************** *** 2528,2543 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.367f, 0.502f, -0.309f, 0.404f, 0.531f, -0.188f, 0.181f, 0.583f }; int lda = 2; ! float B[] = { 0.861f, -0.648f, 0.906f, -0.402f, 0.455f, 0.412f, 0.34f, -0.248f, 0.107f, 0.507f, 0.088f, -0.593f }; int ldb = 2; ! float B_expected[] = { -0.350389f, 0.252194f, -0.2316f, 0.2112f, -0.245348f, -0.0757932f, -0.0772f, 0.1084f, -0.148061f, -0.0704181f, 0.0329f, 0.1867f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1933) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1933) imag"); }; }; --- 2528,2543 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.253f, -0.163f, -0.061f, -0.032f, -0.764f, 0.863f, 0.051f, 0.669f }; int lda = 2; ! float B[] = { 0.966f, 0.42f, -0.765f, 0.186f, -0.798f, 0.278f, -0.37f, -0.484f, -0.724f, -0.682f, 0.034f, 0.352f }; int ldb = 2; ! float B_expected[] = { -0.0455826f, 0.0925287f, -0.0186f, -0.0765f, -0.0260316f, -0.0836058f, 0.0484f, -0.037f, 0.0661616f, -0.0710662f, -0.0352f, 0.0034f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1925) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1925) imag"); }; }; *************** *** 2553,2568 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.476f, 0.202f, -0.66f, 0.774f, -0.943f, -0.99f, -0.035f, 0.901f, -0.742f, -0.085f, -0.335f, -0.591f, 0.799f, 0.515f, 0.753f, 0.76f, -0.042f, -0.011f }; int lda = 3; ! float B[] = { 0.025f, -0.976f, -0.44f, 0.741f, -0.126f, 0.527f, 0.743f, 0.216f, 0.661f, -0.071f, 0.564f, -0.093f }; int ldb = 3; ! float B_expected[] = { -6.73789f, 0.501263f, -2.62173f, -2.22684f, -0.664138f, 3.89034f, 4.11106f, 5.79368f, -1.20958f, 3.39994f, 4.05469f, -0.945199f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1934) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1934) imag"); }; }; --- 2553,2568 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.017f, -0.631f, -0.052f, 0.296f, -0.486f, -0.279f, -0.378f, 0.997f, 0.533f, 0.87f, 0.808f, 0.007f, 0.185f, -0.263f, -0.757f, -0.856f, 0.575f, -0.81f }; int lda = 3; ! float B[] = { -0.238f, -0.924f, 0.494f, -0.089f, 0.96f, 0.959f, 0.415f, 0.39f, -0.744f, -0.881f, -0.594f, 0.629f }; int ldb = 3; ! float B_expected[] = { 0.0798921f, -0.243487f, 0.0441094f, -0.0391653f, 0.0229218f, 0.134667f, 0.192099f, 0.152741f, 0.154557f, 0.0857677f, -0.0854154f, 0.0170199f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1926) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1926) imag"); }; }; *************** *** 2578,2593 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.999f, 0.418f, 0.687f, 0.6f, 0.106f, -0.737f, -0.165f, 0.263f, 0.998f, -0.092f, 0.555f, -0.671f, -0.162f, -0.814f, 0.317f, 0.582f, 0.302f, -0.48f }; int lda = 3; ! float B[] = { 0.699f, 0.128f, 0.296f, -0.021f, 0.654f, 0.14f, 0.008f, 0.94f, -0.963f, 0.333f, -0.481f, -0.917f }; int ldb = 3; ! float B_expected[] = { -0.312717f, 0.0986958f, 0.0456624f, 0.163957f, -0.2102f, 0.0234f, 0.143952f, 0.0170999f, 0.276937f, -0.480541f, 0.236f, 0.227f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1935) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1935) imag"); }; }; --- 2578,2593 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.977f, -0.949f, 0.192f, 0.803f, -0.964f, -0.162f, 0.799f, -0.081f, -0.055f, 0.014f, 0.99f, 0.804f, 0.913f, -0.898f, -0.057f, 0.51f, 0.453f, 0.622f }; int lda = 3; ! float B[] = { -0.852f, -0.001f, -0.955f, -0.97f, -0.071f, -0.664f, -0.077f, -0.746f, 0.228f, -0.948f, 0.476f, -0.285f }; int ldb = 3; ! float B_expected[] = { 0.0840343f, -0.066376f, 0.0369724f, -0.0350854f, 0.0664f, -0.0071f, 0.105481f, 0.0565767f, 0.0283146f, -0.00141f, 0.0285f, 0.0476f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1927) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1927) imag"); }; }; *************** *** 2603,2618 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.932f, 0.532f, -0.763f, -0.029f, -0.524f, -0.938f, 0.007f, -0.445f, -0.659f, 0.709f, -0.581f, 0.825f, -0.904f, -0.453f, 0.119f, 0.964f, -0.649f, 0.48f }; int lda = 3; ! float B[] = { -0.571f, 0.138f, 0.038f, -0.175f, 0.737f, 0.567f, -0.569f, 0.062f, 0.522f, -0.625f, 0.156f, 0.799f }; int ldb = 3; ! float B_expected[] = { -0.0819591f, 0.15247f, -0.121808f, -0.00810757f, 0.287388f, -0.154159f, -0.0982488f, 0.13709f, -0.190946f, -0.223188f, 0.0729118f, 0.274542f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1936) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1936) imag"); }; }; --- 2603,2618 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.822f, 0.618f, -0.935f, 0.49f, 0.885f, -0.488f, 0.412f, 0.861f, -0.144f, 0.906f, -0.054f, 0.455f, 0.213f, 0.34f, -0.465f, 0.107f, -0.611f, 0.088f }; int lda = 3; ! float B[] = { 0.476f, -0.297f, -0.966f, -0.038f, -0.346f, -0.81f, -0.749f, -0.065f, -0.225f, -0.663f, 0.073f, -0.379f }; int ldb = 3; ! float B_expected[] = { -0.00473086f, 0.0543508f, 0.139511f, -0.0231317f, -0.199775f, 0.100154f, 0.0488188f, -0.054416f, -0.0610839f, 0.0929832f, -0.0289368f, -0.113983f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1928) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1928) imag"); }; }; *************** *** 2628,2643 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.527f, 0.272f, 0.431f, 0.642f, -0.239f, -0.254f, -0.231f, 0.766f, 0.85f, -0.09f, 0.679f, -0.898f, 0.192f, -0.651f, -0.869f, 0.859f, 0.68f, 0.03f }; int lda = 3; ! float B[] = { 0.867f, 0.816f, -0.643f, 0.509f, -0.594f, -0.833f, -0.174f, 0.51f, 0.676f, 0.115f, 0.261f, -0.409f }; int ldb = 3; ! float B_expected[] = { -0.3417f, -0.1581f, 0.184172f, -0.515263f, 0.82684f, 0.153742f, 0.0012f, -0.1704f, -0.0834964f, -0.0053432f, -0.216529f, 0.104369f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1937) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1937) imag"); }; }; --- 2628,2643 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { -0.188f, 0.741f, 0.583f, 0.527f, 0.025f, 0.216f, -0.44f, -0.071f, -0.126f, -0.093f, 0.743f, -0.476f, 0.661f, -0.66f, 0.564f, -0.943f, -0.976f, -0.035f }; int lda = 3; ! float B[] = { -0.648f, -0.367f, -0.402f, -0.309f, 0.412f, 0.531f, -0.248f, 0.181f, 0.507f, 0.502f, -0.593f, 0.404f }; int ldb = 3; ! float B_expected[] = { 0.0367f, -0.0648f, 0.0424472f, -0.0713177f, -0.21132f, 0.0600063f, -0.0181f, -0.0248f, -0.0599248f, 0.0410731f, 0.0277256f, 0.00238266f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1929) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1929) imag"); }; }; *************** *** 2653,2668 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.606f, -0.757f, 0.503f, -0.649f, -0.269f, -0.484f, 0.626f, -0.107f, -0.867f, -0.047f, -0.779f, 0.675f, 0.249f, 0.645f, -0.755f, 0.242f, 0.941f, 0.189f }; int lda = 3; ! float B[] = { -0.402f, 0.252f, -0.214f, 0.745f, 0.342f, -0.98f, -0.096f, 0.38f, -0.543f, 0.605f, 0.63f, -0.059f }; int ldb = 2; ! float B_expected[] = { 0.349049f, -0.0955741f, -0.472341f, -0.259287f, -0.176304f, -0.239347f, 0.191174f, 0.170679f, 0.152979f, -0.219859f, -0.203592f, 0.0448683f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1938) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1938) imag"); }; }; --- 2653,2668 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.76f, -0.021f, -0.011f, 0.14f, 0.699f, 0.94f, 0.296f, 0.333f, 0.654f, -0.917f, 0.008f, -0.999f, -0.963f, 0.687f, -0.481f, 0.106f, 0.128f, -0.165f }; int lda = 3; ! float B[] = { -0.742f, 0.774f, -0.335f, -0.99f, 0.799f, 0.901f, 0.753f, -0.085f, -0.042f, -0.591f, 0.202f, 0.515f }; int ldb = 2; ! float B_expected[] = { 0.313744f, -0.259345f, -0.290807f, 0.212822f, -0.00668591f, -0.0164417f, 0.10903f, 0.137068f, 0.157578f, -0.23594f, -0.0747323f, 0.254147f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1930) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1930) imag"); }; }; *************** *** 2678,2693 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.797f, -0.288f, 0.943f, -0.821f, -0.565f, 0.73f, -0.146f, -0.967f, 0.473f, -0.095f, 0.877f, 0.178f, -0.159f, 0.021f, -0.988f, 0.296f, 0.279f, -0.513f }; int lda = 3; ! float B[] = { -0.455f, 0.859f, -0.21f, 0.702f, -0.591f, -0.235f, 0.519f, 0.279f, -0.444f, 0.816f, -0.507f, 0.893f }; int ldb = 2; ! float B_expected[] = { -0.136371f, -0.712172f, -0.311667f, -0.302476f, 0.337384f, -0.259056f, -0.027248f, -0.327988f, 0.0516f, -0.2892f, 0.0628f, -0.3186f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1939) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1939) imag"); }; }; --- 2678,2693 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.582f, -0.175f, -0.48f, 0.567f, -0.571f, 0.062f, 0.038f, -0.625f, 0.737f, 0.799f, -0.569f, -0.932f, 0.522f, -0.763f, 0.156f, -0.524f, 0.138f, 0.007f }; int lda = 3; ! float B[] = { 0.998f, 0.6f, 0.555f, -0.737f, -0.162f, 0.263f, 0.317f, -0.092f, 0.302f, -0.671f, 0.418f, -0.814f }; int ldb = 2; ! float B_expected[] = { -0.106233f, 0.0480583f, 0.0514817f, -0.0392668f, -0.0209428f, -0.0560716f, 0.0184048f, -0.0174744f, 0.0671f, 0.0302f, 0.0814f, 0.0418f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1931) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1931) imag"); }; }; *************** *** 2703,2718 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { 0.791f, 0.19f, -0.549f, 0.994f, -0.822f, 0.679f, -0.586f, 0.042f, -0.159f, -0.86f, 0.065f, 0.943f, -0.545f, 0.403f, 0.199f, 0.76f, 0.159f, 0.715f }; int lda = 3; ! float B[] = { -0.336f, 0.317f, 0.502f, 0.543f, 0.027f, 0.802f, 0.391f, 0.716f, -0.154f, 0.436f, 0.738f, -0.029f }; int ldb = 2; ! float B_expected[] = { 0.119543f, -0.133991f, -0.212552f, -0.193533f, -0.239565f, -0.0842153f, -0.531028f, 0.229828f, 0.61223f, 0.265016f, 0.850081f, -0.810046f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1940) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1940) imag"); }; }; --- 2703,2718 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.964f, 0.509f, 0.48f, -0.833f, 0.867f, 0.51f, -0.643f, 0.115f, -0.594f, -0.409f, -0.174f, 0.527f, 0.676f, 0.431f, 0.261f, -0.239f, 0.816f, -0.231f }; int lda = 3; ! float B[] = { -0.659f, -0.029f, -0.581f, -0.938f, -0.904f, -0.445f, 0.119f, 0.709f, -0.649f, 0.825f, 0.532f, -0.453f }; int ldb = 2; ! float B_expected[] = { 0.0305784f, -0.0522153f, 0.100975f, -0.00695419f, -0.055793f, 0.11446f, 0.0887801f, 0.177079f, -0.177262f, 0.0336107f, -0.0717714f, 0.251108f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1932) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1932) imag"); }; }; *************** *** 2728,2743 **** int M = 2; int N = 3; ! float alpha[2] = {-0.3f, 0.1f}; ! float A[] = { -0.182f, -0.821f, -0.756f, -0.479f, -0.191f, -0.989f, -0.466f, 0.018f, 0.85f, 0.516f, -0.826f, 0.209f, -0.321f, -0.988f, -0.936f, -0.745f, -0.57f, -0.362f }; int lda = 3; ! float B[] = { -0.501f, 0.915f, -0.928f, 0.722f, -0.542f, -0.828f, -0.875f, -0.981f, 0.425f, 0.347f, -0.929f, -0.596f }; int ldb = 2; ! float B_expected[] = { 0.0588f, -0.3246f, 0.2062f, -0.3094f, 0.134369f, -0.0793628f, 0.368285f, -0.125876f, -0.344423f, -0.219222f, 0.402199f, -0.204129f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1941) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1941) imag"); }; }; --- 2728,2743 ---- int M = 2; int N = 3; ! float alpha[2] = {0.0f, 0.1f}; ! float A[] = { 0.859f, 0.745f, 0.03f, -0.98f, -0.402f, 0.38f, -0.214f, 0.605f, 0.342f, -0.059f, -0.096f, 0.606f, -0.543f, 0.503f, 0.63f, -0.269f, 0.252f, 0.626f }; int lda = 3; ! float B[] = { 0.85f, 0.642f, 0.679f, -0.254f, 0.192f, 0.766f, -0.869f, -0.09f, 0.68f, -0.898f, 0.272f, -0.651f }; int ldb = 2; ! float B_expected[] = { -0.0642f, 0.085f, 0.0254f, 0.0679f, 0.008626f, 0.079566f, 0.07478f, -0.113829f, -0.0156973f, 0.0906397f, 0.125668f, 0.0985369f }; cblas_ctrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], flteps, "ctrsm(case 1933) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], flteps, "ctrsm(case 1933) imag"); }; }; *************** *** 2754,2760 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.976, -0.41, -0.313, -0.779, -0.164, 0.571, 0.056, -0.526 }; int lda = 2; ! double B[] = { -0.177, 0.837, 0.391, -0.853, -0.633, 0.693, -0.392, -0.356, -0.708, 0.926, -0.093, -0.337 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2754,2760 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.189, 0.519, -0.455, -0.444, -0.21, -0.507, -0.591, 0.859 }; int lda = 2; ! double B[] = { -0.779, -0.484, 0.249, -0.107, -0.755, -0.047, 0.941, 0.675, -0.757, 0.645, -0.649, 0.242 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2763,2768 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1942) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1942) imag"); }; }; --- 2763,2768 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1934) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1934) imag"); }; }; *************** *** 2779,2785 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.383, 0.141, 0.889, -0.007, -0.148, -0.068, 0.481, 0.675 }; int lda = 2; ! double B[] = { 0.469, 0.735, -0.47, -0.164, 0.994, -0.483, -0.354, 0.357, 0.51, 0.523, 0.934, -0.592 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2779,2785 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.988, 0.73, 0.279, -0.967, -0.288, -0.095, -0.821, 0.178 }; int lda = 2; ! double B[] = { 0.702, 0.943, -0.235, -0.565, 0.279, -0.146, 0.816, 0.473, 0.893, 0.877, -0.797, -0.159 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2788,2793 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1943) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1943) imag"); }; }; --- 2788,2793 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1935) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1935) imag"); }; }; *************** *** 2804,2810 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.089, -0.391, -0.317, -0.349, 0.618, -0.541, -0.84, 0.31 }; int lda = 2; ! double B[] = { 0.931, -0.257, -0.048, 0.633, -0.32, -0.576, -0.682, 0.953, -0.412, 0.408, -0.809, 0.092 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2804,2810 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.716, -0.549, 0.436, -0.822, -0.029, -0.586, 0.791, -0.159 }; int lda = 2; ! double B[] = { 0.021, 0.391, 0.296, -0.154, -0.513, 0.738, -0.336, 0.317, 0.502, 0.543, 0.027, 0.802 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2813,2818 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1944) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1944) imag"); }; }; --- 2813,2818 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1936) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1936) imag"); }; }; *************** *** 2829,2835 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.599, -0.01, -0.045, 0.567, 0.827, -0.969, -0.729, 0.538 }; int lda = 2; ! double B[] = { 0.971, -0.626, -0.77, -0.882, 0.434, 0.269, -0.456, 0.497, 0.289, 0.957, 0.447, -0.921 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2829,2835 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.715, -0.875, -0.501, 0.425, -0.928, -0.929, -0.542, 0.915 }; int lda = 2; ! double B[] = { 0.065, 0.679, -0.545, 0.042, 0.199, -0.86, 0.159, 0.943, 0.19, 0.403, 0.994, 0.76 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2838,2843 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1945) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1945) imag"); }; }; --- 2838,2843 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1937) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1937) imag"); }; }; *************** *** 2854,2860 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.441, -0.501, 0.607, -0.4, -0.976, -0.523, -0.136, -0.492 }; int lda = 2; ! double B[] = { 0.639, 0.872, -0.436, 0.518, 0.164, -0.04, 0.489, 0.201, 0.723, -0.958, 0.934, -0.549 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2854,2860 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.936, -0.989, -0.57, 0.018, -0.821, 0.516, -0.479, 0.209 }; int lda = 2; ! double B[] = { 0.722, -0.756, -0.828, -0.191, -0.981, -0.466, 0.347, 0.85, -0.596, -0.826, -0.182, -0.321 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2863,2868 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1946) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1946) imag"); }; }; --- 2863,2868 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1938) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1938) imag"); }; }; *************** *** 2879,2885 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.603, -0.475, 0.598, -0.666, -0.733, 0.04, 0.491, -0.592 }; int lda = 2; ! double B[] = { 0.71, -0.827, 0.947, -0.364, 0.235, 0.294, 0.298, -0.401, -0.193, -0.008, 0.122, -0.47 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2879,2885 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.693, 0.976, -0.356, -0.313, 0.926, -0.164, -0.337, 0.056 }; int lda = 2; ! double B[] = { -0.988, -0.633, -0.745, -0.392, -0.362, -0.708, -0.706, -0.093, -0.177, 0.837, 0.391, -0.853 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2888,2893 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1947) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1947) imag"); }; }; --- 2888,2893 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1939) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1939) imag"); }; }; *************** *** 2904,2910 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.73, -0.823, 0.636, -0.965, 0.886, -0.236, 0.501, -0.301 }; int lda = 2; ! double B[] = { 0.259, 0.701, -0.033, 0.616, -0.646, -0.177, -0.886, 0.589, -0.736, -0.303, -0.995, 0.982 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2904,2910 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.483, -0.383, 0.357, 0.889, 0.523, -0.148, -0.592, 0.481 }; int lda = 2; ! double B[] = { -0.41, 0.994, -0.779, -0.354, 0.571, 0.51, -0.526, 0.934, 0.469, 0.735, -0.47, -0.164 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2913,2918 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1948) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1948) imag"); }; }; --- 2913,2918 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1940) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1940) imag"); }; }; *************** *** 2929,2935 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.829, -0.889, 0.382, 0.083, 0.006, -0.76, -0.338, -0.601 }; int lda = 2; ! double B[] = { 0.006, 0.381, 0.241, 0.096, -0.672, 0.664, 0.952, -0.376, -0.803, 0.344, -0.09, -0.175 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2929,2935 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.576, -0.089, 0.953, -0.317, 0.408, 0.618, 0.092, -0.84 }; int lda = 2; ! double B[] = { 0.141, -0.32, -0.007, -0.682, -0.068, -0.412, 0.675, -0.809, 0.931, -0.257, -0.048, 0.633 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2938,2943 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1949) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1949) imag"); }; }; --- 2938,2943 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1941) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1941) imag"); }; }; *************** *** 2954,2960 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.879, -0.511, -0.814, -0.94, 0.91, 0.761, 0.223, 0.03, -0.689, -0.739, -0.814, 0.463, 0.389, 0.615, -0.175, 0.129, -0.904, 0.102 }; int lda = 3; ! double B[] = { 0.383, 0.328, 0.589, -0.29, 0.912, 0.327, 0.629, 0.883, -0.578, -0.708, 0.168, -0.982 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2954,2960 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.269, 0.567, 0.497, -0.969, 0.957, 0.538, -0.921, 0.639, 0.599, -0.436, -0.045, 0.164, 0.827, 0.489, -0.729, 0.723, -0.01, 0.934 }; int lda = 3; ! double B[] = { -0.391, 0.434, -0.349, -0.456, -0.541, 0.289, 0.31, 0.447, 0.971, -0.626, -0.77, -0.882 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2963,2968 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1950) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1950) imag"); }; }; --- 2963,2968 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1942) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1942) imag"); }; }; *************** *** 2979,2985 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.91, -0.182, 0.333, 0.193, 0.14, 0.538, 0.161, -0.034, -0.614, -0.154, 0.881, 0.842, 0.183, -0.229, 0.099, 0.062, -0.121, 0.179 }; int lda = 3; ! double B[] = { -0.138, 0.109, -0.87, -0.161, 0.917, 0.443, 0.798, 0.677, -0.574, 0.327, -0.626, 0.446 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 2979,2985 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.523, -0.364, -0.492, 0.294, 0.71, -0.401, 0.947, -0.008, 0.235, -0.47, 0.298, -0.603, -0.193, 0.598, 0.122, -0.733, -0.827, 0.491 }; int lda = 3; ! double B[] = { 0.872, 0.441, 0.518, 0.607, -0.04, -0.976, 0.201, -0.136, -0.958, -0.501, -0.549, -0.4 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 2988,2993 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1951) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1951) imag"); }; }; --- 2988,2993 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1943) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1943) imag"); }; }; *************** *** 3004,3010 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.491, -0.021, -0.833, 0.921, -0.71, 0.282, 0.638, 0.223, -0.434, 0.921, -0.949, 0.457, -0.665, -0.844, -0.633, -0.874, -0.73, 0.637 }; int lda = 3; ! double B[] = { -0.047, 0.714, 0.678, 0.756, 0.003, 0.359, 0.507, -0.197, -0.726, 0.873, -0.118, -0.996 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3004,3010 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.177, -0.965, 0.589, -0.236, -0.303, -0.301, 0.982, 0.006, -0.73, 0.241, 0.636, -0.672, 0.886, 0.952, 0.501, -0.803, -0.823, -0.09 }; int lda = 3; ! double B[] = { -0.475, -0.646, -0.666, -0.886, 0.04, -0.736, -0.592, -0.995, 0.259, 0.701, -0.033, 0.616 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3013,3018 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1952) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1952) imag"); }; }; --- 3013,3018 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1944) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1944) imag"); }; }; *************** *** 3029,3035 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.372, 0.354, -0.537, 0.948, -0.348, 0.808, 0.573, -0.797, 0.818, 0.701, -0.749, -0.801, -0.959, -0.781, 0.727, -0.189, 0.244, 0.414 }; int lda = 3; ! double B[] = { 0.852, -0.714, 0.455, 0.171, -0.128, 0.554, 0.342, -0.203, 0.669, 0.619, -0.76, 0.759 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3029,3035 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.76, -0.29, -0.601, 0.327, 0.383, 0.883, 0.589, -0.708, 0.912, -0.982, 0.629, 0.879, -0.578, -0.814, 0.168, 0.91, 0.328, 0.223 }; int lda = 3; ! double B[] = { 0.381, 0.829, 0.096, 0.382, 0.664, 0.006, -0.376, -0.338, 0.344, -0.889, -0.175, 0.083 }; int ldb = 3; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3038,3043 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1953) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1953) imag"); }; }; --- 3038,3043 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1945) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1945) imag"); }; }; *************** *** 3054,3060 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.1, -0.975, 0.885, -0.608, -0.303, 0.87, -0.763, 0.409, 0.501, 0.522, -0.176, 0.679, -0.681, -0.815, -0.878, 0.86, 0.348, -0.65 }; int lda = 3; ! double B[] = { -0.245, 0.954, -0.465, -0.931, 0.327, 0.288, -0.067, 0.252, 0.124, -0.073, -0.731, 0.176 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3054,3060 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.129, -0.161, 0.102, 0.443, -0.138, 0.677, -0.87, 0.327, 0.917, 0.446, 0.798, -0.91, -0.574, 0.333, -0.626, 0.14, 0.109, 0.161 }; int lda = 3; ! double B[] = { -0.689, -0.94, -0.814, 0.761, 0.389, 0.03, -0.175, -0.739, -0.904, 0.463, -0.511, 0.615 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3063,3068 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1954) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1954) imag"); }; }; --- 3063,3068 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1946) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1946) imag"); }; }; *************** *** 3079,3085 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.572, 0.045, -0.465, 0.113, 0.996, -0.597, 0.712, 0.945, 0.053, -0.436, 0.36, 0.035, -0.489, -0.012, 0.23, 0.22, 0.068, -0.586 }; int lda = 3; ! double B[] = { -0.543, -0.809, -0.641, -0.744, 0.507, -0.742, -0.279, -0.835, -0.097, -0.968, 0.984, -0.813 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3079,3085 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.062, 0.756, 0.179, 0.359, -0.047, -0.197, 0.678, 0.873, 0.003, -0.996, 0.507, -0.491, -0.726, -0.833, -0.118, -0.71, 0.714, 0.638 }; int lda = 3; ! double B[] = { -0.614, 0.193, 0.881, 0.538, 0.183, -0.034, 0.099, -0.154, -0.121, 0.842, -0.182, -0.229 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3088,3093 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1955) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1955) imag"); }; }; --- 3088,3093 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1947) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1947) imag"); }; }; *************** *** 3104,3110 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { 0.837, 0.576, -0.396, 0.013, -0.567, 0.59, 0.513, 0.824, 0.045, 0.486, 0.386, 0.766, 0.222, 0.042, 0.091, -0.008, 0.43, 0.102 }; int lda = 3; ! double B[] = { 0.16, -0.958, -0.125, 0.833, 0.344, 0.213, 0.2, -0.689, 0.81, 0.415, -0.198, 0.001 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3104,3110 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.874, 0.171, 0.637, 0.554, 0.852, -0.203, 0.455, 0.619, -0.128, 0.759, 0.342, 0.372, 0.669, -0.537, -0.76, -0.348, -0.714, 0.573 }; int lda = 3; ! double B[] = { -0.434, 0.921, -0.949, 0.282, -0.665, 0.223, -0.633, 0.921, -0.73, 0.457, -0.021, -0.844 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3113,3118 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1956) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1956) imag"); }; }; --- 3113,3118 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1948) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1948) imag"); }; }; *************** *** 3129,3135 **** int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.351, 0.7, -0.495, 0.448, -0.229, 0.925, -0.269, 0.251, -0.783, -0.223, 0.582, 0.373, -0.095, -0.383, -0.087, -0.043, -0.315, -0.999 }; int lda = 3; ! double B[] = { -0.067, -0.104, 0.92, -0.333, 0.367, 0.995, 0.86, 0.425, 0.12, -0.756, 0.441, -0.214 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; --- 3129,3135 ---- int N = 3; double alpha[2] = {0, 0}; ! double A[] = { -0.189, -0.931, 0.414, 0.288, -0.245, 0.252, -0.465, -0.073, 0.327, 0.176, -0.067, 0.1, 0.124, 0.885, -0.731, -0.303, 0.954, -0.763 }; int lda = 3; ! double B[] = { 0.818, 0.948, -0.749, 0.808, -0.959, -0.797, 0.727, 0.701, 0.244, -0.801, 0.354, -0.781 }; int ldb = 2; double B_expected[] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; *************** *** 3138,3143 **** int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1957) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1957) imag"); }; }; --- 3138,3143 ---- int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1949) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1949) imag"); }; }; *************** *** 3153,3168 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.572, -0.073, 0.878, -0.688, -0.615, -0.213, -0.643, 0.809 }; int lda = 2; ! double B[] = { -0.973, -0.481, 0.071, -0.71, -0.669, 0.717, -0.09, -0.304, -0.427, 0.625, 0.539, -0.565 }; int ldb = 3; ! double B_expected[] = { 0.574560994608, 0.155494672389, 0.0371747871512, 0.389534544514, 0.283820482207, -0.45678514825, 0.591891359193, 0.214411302729, -0.27258111691, 0.507180331171, 0.645135319443, -0.46315922005 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1958) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1958) imag"); }; }; --- 3153,3168 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.65, -0.279, -0.543, -0.097, -0.641, 0.984, 0.507, -0.809 }; int lda = 2; ! double B[] = { -0.176, 0.87, -0.681, 0.409, -0.878, 0.522, 0.348, 0.679, -0.975, -0.815, -0.608, 0.86 }; int ldb = 3; ! double B_expected[] = { 0.256485077177, 1.22837025149, -0.656630178218, 0.911076645728, -0.849544610576, 1.16772760977, -0.193804546743, -0.283833884163, -0.811035478317, 1.16349859839, 0.292241175557, -0.141827660937 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1950) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1950) imag"); }; }; *************** *** 3178,3193 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.022, 0.475, 0.444, 0.252, -0.871, 0.867, -0.093, 0.264 }; int lda = 2; ! double B[] = { 0.696, 0.259, 0.494, 0.162, -0.9, 0.143, 0.436, 0.487, -0.733, 0.138, -0.618, 0.572 }; int ldb = 3; ! double B_expected[] = { -0.2347, -0.0081, -0.1644, 0.0008, 0.2557, -0.1329, -0.0773344, -0.0397592, 0.2792952, -0.0736264, -0.0188216, -0.2388288 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1959) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1959) imag"); }; }; --- 3178,3193 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.23, -0.597, 0.068, 0.945, 0.045, -0.436, 0.113, 0.035 }; int lda = 2; ! double B[] = { -0.744, -0.465, -0.742, 0.996, -0.835, 0.712, -0.968, 0.053, -0.813, 0.36, 0.572, -0.489 }; int ldb = 3; ! double B_expected[] = { 0.744, 0.465, 0.742, -0.996, 0.835, -0.712, 1.356833, -0.7877, -0.178676, -0.993462, -1.30162, -0.251659 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1951) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1951) imag"); }; }; *************** *** 3203,3218 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.918, -0.459, 0.547, 0.887, 0.4, -0.497, 0.49, -0.313 }; int lda = 2; ! double B[] = { 0.028, 0.482, -0.59, -0.533, -0.594, 0.544, -0.717, -0.524, 0.07, -0.839, 0.538, -0.548 }; int ldb = 3; ! double B_expected[] = { -0.258092239243, -0.278373561582, 0.128448307703, -0.0949352940165, 0.35005709854, -0.355276452021, 0.308556833073, 0.371588344391, -0.148348709879, 0.433197660833, -0.356526626221, 0.217565644883 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1960) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1960) imag"); }; }; --- 3203,3218 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.689, -0.396, 0.415, -0.567, 0.001, 0.513, 0.837, 0.045 }; int lda = 2; ! double B[] = { -0.012, 0.2, 0.22, 0.81, -0.586, -0.198, 0.16, -0.958, -0.125, 0.833, 0.344, 0.213 }; int ldb = 3; ! double B_expected[] = { -0.573154258944, 0.525131422048, 1.33801555643, 0.47629585874, -0.770607912552, -0.160087833623, -0.129249609305, 1.15151282248, 0.0955601670381, -1.00035867087, -0.423449388979, -0.231714190557 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1952) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1952) imag"); }; }; *************** *** 3228,3243 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.86, -0.532, -0.396, -0.116, 0.766, -0.818, -0.335, 0.271 }; int lda = 2; ! double B[] = { -0.029, -0.754, -0.566, -0.108, 0.904, -0.038, 0.07, -0.476, -0.48, 0.961, 0.864, -0.593 }; int ldb = 3; ! double B_expected[] = { -0.058812, 0.130312, 0.419002, 0.272588, -0.330474, -0.264172, 0.0266, 0.1498, 0.0479, -0.3363, -0.1999, 0.2643 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1961) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1961) imag"); }; }; --- 3228,3243 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.102, 0.86, -0.067, 0.12, 0.92, 0.441, 0.367, -0.104 }; int lda = 2; ! double B[] = { 0.386, 0.59, 0.222, 0.824, 0.091, 0.486, 0.43, 0.766, 0.576, 0.042, 0.013, -0.008 }; int ldb = 3; ! double B_expected[] = { -0.328206, 0.30435, 0.289398, -0.531344, -0.075512, -0.487627, -0.43, -0.766, -0.576, -0.042, -0.013, 0.008 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1953) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1953) imag"); }; }; *************** *** 3253,3268 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.043, 0.25, -0.831, 0.609, -0.896, 0.886, 0.653, 0.065 }; int lda = 2; ! double B[] = { 0.548, 0.076, 0.429, 0.873, -0.559, -0.329, -0.326, -0.174, 0.633, 0.489, 0.317, -0.896 }; int ldb = 2; ! double B_expected[] = { 0.239257797324, 0.64684765886, 0.889006221152, 0.139062311692, 0.0322336011438, -0.807944179397, -0.977615509726, -1.02501063893, -0.164440783851, 0.983483814822, 1.28991055447, 1.90436729944 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1962) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1962) imag"); }; }; --- 3253,3268 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.087, 0.925, -0.315, 0.251, 0.7, -0.223, 0.448, 0.373 }; int lda = 2; ! double B[] = { -0.333, -0.495, 0.995, -0.229, 0.425, -0.269, -0.756, -0.783, -0.214, 0.582, -0.351, -0.095 }; int ldb = 2; ! double B_expected[] = { 0.496880191475, -0.406733596387, -0.965186357327, 2.19761676664, 0.331095906598, 0.428318547163, 1.17655095681, 0.263745306399, -0.645240814927, -0.170663836866, 1.18578937767, -0.829739852214 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1954) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1954) imag"); }; }; *************** *** 3278,3293 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.268, -0.062, -0.017, 0.326, 0.561, -0.203, -0.665, 0.338 }; int lda = 2; ! double B[] = { -0.46, 0.954, 0.823, 0.945, -0.825, 0.882, -0.214, -0.095, -0.935, -0.245, 0.902, 0.904 }; int ldb = 2; ! double B_expected[] = { 0.0426, -0.3322, -0.297862, -0.006188, 0.1593, -0.3471, 0.054794, 0.234161, 0.305, -0.02, -0.528045, -0.107865 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1963) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1963) imag"); }; }; --- 3278,3293 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.717, 0.572, -0.304, 0.878, 0.625, -0.615, -0.565, -0.643 }; int lda = 2; ! double B[] = { -0.383, -0.669, -0.043, -0.09, -0.999, -0.427, 0.834, 0.539, -0.973, -0.481, 0.071, -0.71 }; int ldb = 2; ! double B_expected[] = { 0.383, 0.669, -0.60781, -0.09258, 0.999, 0.427, -1.72098, -0.19149, 0.973, 0.481, -0.97494, 1.00777 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1955) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1955) imag"); }; }; *************** *** 3303,3318 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.075, 0.178, -0.321, -0.056, -0.124, -0.483, 0.685, -0.052 }; int lda = 2; ! double B[] = { -0.47, -0.363, 0.766, -0.961, -0.391, -0.691, 0.42, -0.339, 0.45, -0.975, 0.991, -0.198 }; int ldb = 2; ! double B_expected[] = { 0.874038948948, -0.779868445448, -0.234271045009, 0.514916650598, 0.810533012472, -1.05664738101, -0.149515922946, 0.198430908039, 2.17245126703, 0.115946317124, -0.420252834642, 0.199484456348 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1964) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1964) imag"); }; }; --- 3303,3318 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.143, -0.022, 0.487, 0.444, 0.138, -0.871, 0.572, -0.093 }; int lda = 2; ! double B[] = { -0.073, -0.9, -0.688, 0.436, -0.213, -0.733, 0.809, -0.618, 0.696, 0.259, 0.494, 0.162 }; int ldb = 2; ! double B_expected[] = { -6.10129128737, 3.22195959384, 1.29255909931, -0.552083922664, 8.05253150033, 8.35261031753, -1.54904967648, 0.828563601552, -3.66721033067, 1.50334288416, -0.796532800529, -0.412722990296 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1956) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1956) imag"); }; }; *************** *** 3328,3343 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.206, -0.461, -0.681, 0.358, 0.21, -0.318, 0.082, -0.097 }; int lda = 2; ! double B[] = { 0.576, -0.249, 0.718, 0.424, 0.728, -0.464, 0.774, 0.541, -0.112, 0.803, 0.275, -0.638 }; int ldb = 2; ! double B_expected[] = { -0.343295, 0.186865, -0.2578, -0.0554, -0.3973645, 0.2566785, -0.2863, -0.0849, 0.0189315, -0.0963345, -0.0187, 0.2189 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1965) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1965) imag"); }; }; --- 3328,3343 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.544, 0.918, -0.524, 0.547, -0.839, 0.4, -0.548, 0.49 }; int lda = 2; ! double B[] = { 0.475, -0.594, 0.252, -0.717, 0.867, 0.07, 0.264, 0.538, 0.028, 0.482, -0.59, -0.533 }; int ldb = 2; ! double B_expected[] = { -0.214849, 1.107552, -0.252, 0.717, -1.299622, -0.207504, -0.264, -0.538, 0.572711, -0.525438, 0.59, 0.533 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1957) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1957) imag"); }; }; *************** *** 3353,3368 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.117, 0.983, -0.929, -0.69, -0.144, 0.28, 0.658, 0.304, -0.657, 0.543, -0.051, -0.98, -0.846, -0.484, 0.052, 0.691, 0.613, -0.178 }; int lda = 3; ! double B[] = { -0.688, 0.453, -0.63, 0.067, 0.193, 0.359, -0.792, 0.307, -0.501, -0.616, -0.595, 0.817 }; int ldb = 3; ! double B_expected[] = { -0.566587593051, 0.340892661842, -0.458137993587, -0.0857620879204, -0.102500656517, -0.173972458173, -1.32599192297, -0.284341349955, -0.284178293736, -0.823318590512, 0.278700120014, -0.415972885216 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1966) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1966) imag"); }; }; --- 3353,3368 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.038, -0.116, -0.476, -0.818, 0.961, 0.271, -0.593, 0.548, -0.86, 0.429, -0.396, -0.559, 0.766, -0.326, -0.335, 0.633, -0.532, 0.317 }; int lda = 3; ! double B[] = { -0.459, 0.904, 0.887, 0.07, -0.497, -0.48, -0.313, 0.864, -0.029, -0.754, -0.566, -0.108 }; int ldb = 3; ! double B_expected[] = { -4.58258258525, -3.00717937382, 0.0668903493808, 0.800759804641, -0.292673260098, -1.0766492922, -0.911020412982, 7.68812066826, -0.0359723342287, -0.157963939743, -0.695872108638, -0.617653117365 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1958) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1958) imag"); }; }; *************** *** 3378,3393 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.773, -0.614, 0.782, -0.728, -0.727, -0.715, 0.858, -0.065, 0.922, 0.178, 0.588, 0.215, -0.92, -0.443, -0.583, -0.244, 0.996, -0.539 }; int lda = 3; ! double B[] = { 0.159, 0.669, -0.692, 0.808, -0.146, 0.489, -0.385, -0.646, 0.704, -0.968, 0.551, -0.281 }; int ldb = 3; ! double B_expected[] = { 0.0796383322, -0.0678193334, 0.0951193, -0.2156591, -0.0051, -0.1613, -0.2408434996, -0.0853028168, -0.0037554, 0.3083308, -0.1372, 0.1394 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1967) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1967) imag"); }; }; --- 3378,3393 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.886, 0.945, 0.065, 0.882, -0.46, -0.095, 0.823, -0.245, -0.825, 0.904, -0.214, -0.268, -0.935, -0.017, 0.902, 0.561, 0.954, -0.665 }; int lda = 3; ! double B[] = { 0.076, -0.043, 0.873, -0.831, -0.329, -0.896, -0.174, 0.653, 0.489, 0.25, -0.896, 0.609 }; int ldb = 3; ! double B_expected[] = { 1.037824842, 1.333886264, -1.042722, 1.110916, 0.329, 0.896, 0.529073224, -0.720680322, -0.134044, -0.140198, 0.896, -0.609 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1959) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1959) imag"); }; }; *************** *** 3403,3418 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.864, -0.382, -0.715, 0.227, -0.973, -0.709, -0.247, -0.601, 0.467, -0.133, 0.988, 0.937, -0.272, -0.334, 0.719, 0.992, 0.203, -0.646 }; int lda = 3; ! double B[] = { 0.285, -0.409, -0.347, -0.925, -0.616, 0.422, 0.631, -0.954, -0.053, -0.255, -0.749, -0.979 }; int ldb = 3; ! double B_expected[] = { -0.0215414266825, -0.165475896999, 0.469240391843, 0.538308411392, 1.71185240759, 0.063655952267, -0.0586080545035, -0.378370049976, 0.536158413721, 0.02961076215, 0.67769157898, -0.0939027988826 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1968) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1968) imag"); }; }; --- 3403,3418 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.691, -0.056, -0.339, -0.483, -0.975, -0.052, -0.198, 0.576, -0.075, 0.718, -0.321, 0.728, -0.124, 0.774, 0.685, -0.112, 0.178, 0.275 }; int lda = 3; ! double B[] = { -0.062, -0.391, 0.326, 0.42, -0.203, 0.45, 0.338, 0.991, -0.47, -0.363, 0.766, -0.961 }; int ldb = 3; ! double B_expected[] = { -0.134697690677, -0.554930433172, -0.526377715671, 0.991348747823, -2.94323584375, -1.92805449726, 0.601422754501, 1.38541291715, 0.201151053335, -1.95287726277, 5.96201044303, 2.1797020274 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1960) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1960) imag"); }; }; *************** *** 3428,3443 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.373, -0.335, -0.106, 0.542, -0.504, 0.574, -0.318, 0.043, -0.801, -0.331, 0.699, 0.776, -0.56, 0.131, 0.742, -0.692, -0.614, -0.874 }; int lda = 3; ! double B[] = { -0.823, 0.929, -0.55, 0.172, -0.44, 0.067, 0.99, -0.013, 0.513, -0.438, -0.591, -0.302 }; int ldb = 3; ! double B_expected[] = { 0.154, -0.361, 0.181249, -0.22802, 0.187552082, 0.008181148, -0.2957, 0.1029, -0.1997079, 0.2281373, 0.0457001502, -0.1796150434 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1969) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1969) imag"); }; }; --- 3428,3443 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.318, 0.067, -0.097, 0.359, -0.688, 0.307, -0.63, -0.616, 0.193, 0.817, -0.792, -0.117, -0.501, -0.929, -0.595, -0.144, 0.453, 0.658 }; int lda = 3; ! double B[] = { -0.249, -0.206, 0.424, -0.681, -0.464, 0.21, 0.541, 0.082, 0.803, -0.461, -0.638, 0.358 }; int ldb = 3; ! double B_expected[] = { 0.249, 0.206, -0.394026, 0.964164, 0.024089914, 0.641464836, -0.541, -0.082, -1.093318, 0.076084, -0.218343306, -1.013838812 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1961) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1961) imag"); }; }; *************** *** 3453,3468 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.912, 0.523, 0.314, -0.205, -0.895, 0.033, 0.157, -0.936, -0.582, 0.104, -0.868, 0.851, -0.131, 0.836, 0.993, 0.319, -0.684, -0.035 }; int lda = 3; ! double B[] = { 0.07, -0.556, 0.018, -0.245, -0.405, 0.77, 0.888, 0.01, -0.81, -0.42, 0.66, -0.387 }; int ldb = 2; ! double B_expected[] = { -0.132542904863, 0.151203976135, 0.45996395874, -0.700981460432, -0.771115355304, 0.0234040392321, 1.04091400336, -0.314874142966, -0.418936175202, -0.0443526810935, 0.218699329114, -0.27741882532 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1970) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1970) imag"); }; }; --- 3453,3468 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.691, 0.808, -0.178, 0.489, 0.159, -0.646, -0.692, -0.968, -0.146, -0.281, -0.385, 0.773, 0.704, 0.782, 0.551, -0.727, 0.669, 0.858 }; int lda = 3; ! double B[] = { -0.657, -0.69, -0.051, 0.28, -0.846, 0.304, 0.052, 0.543, 0.613, -0.98, 0.983, -0.484 }; int ldb = 2; ! double B_expected[] = { 2.42007211075, -0.148130095453, 4.93683906416, -0.804178199722, 1.76852672271, 0.633536755193, 4.41638755104, -0.0400468884046, 0.363887727302, 0.998182854971, -0.204739276437, 0.986048279795 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1962) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1962) imag"); }; }; *************** *** 3478,3493 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.904, 0.983, -0.777, 0.503, 0.061, -0.442, 0.797, 0.415, -0.49, -0.466, 0.386, -0.147, -0.793, -0.381, -0.481, 0.33, 0.69, 0.35 }; int lda = 3; ! double B[] = { 0.152, 0.832, 0.687, -0.287, -0.571, -0.187, -0.456, 0.631, 0.976, 0.833, -0.527, -0.188 }; int ldb = 2; ! double B_expected[] = { -0.3155234788, -0.5211211034, -0.2870272698, 0.3910522396, -0.0411631, 0.0498567, 0.1600099, -0.2914973, -0.3761, -0.1523, 0.1769, 0.0037 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1971) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1971) imag"); }; }; --- 3478,3493 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.244, -0.925, -0.539, 0.422, 0.285, -0.954, -0.347, -0.255, -0.616, -0.979, 0.631, -0.864, -0.053, -0.715, -0.749, -0.973, -0.409, -0.247 }; int lda = 3; ! double B[] = { 0.922, -0.728, 0.588, -0.715, -0.92, -0.065, -0.583, 0.178, 0.996, 0.215, -0.614, -0.443 }; int ldb = 2; ! double B_expected[] = { -0.416484258, -0.267425916, -0.851455486, 1.594186448, 0.383191, -1.065143, 0.611847, 0.751229, -0.996, -0.215, 0.614, 0.443 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1963) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1963) imag"); }; }; *************** *** 3503,3518 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.527, 0.434, 0.025, 0.505, 0.724, 0.961, -0.071, 0.675, -0.334, 0.259, 0.167, 0.898, 0.116, 0.723, 0.086, 0.042, -0.483, -0.862 }; int lda = 3; ! double B[] = { -0.874, 0.252, 0.924, 0.251, 0.559, -0.619, -0.131, -0.286, 0.09, -0.111, 0.062, -0.973 }; int ldb = 2; ! double B_expected[] = { 0.116195543731, -0.404988360492, -0.325886265381, 0.300824742268, 0.86553022636, 0.0931927221532, -0.0931167995431, -0.760087414797, 0.774460770553, -0.204189465459, -0.501996021978, -0.354684266966 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1972) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1972) imag"); }; }; --- 3503,3518 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { 0.992, 0.172, -0.646, 0.067, -0.823, -0.013, -0.55, -0.438, -0.44, -0.302, 0.99, -0.373, 0.513, -0.106, -0.591, -0.504, 0.929, -0.318 }; int lda = 3; ! double B[] = { 0.467, 0.227, 0.988, -0.709, -0.272, -0.601, 0.719, -0.133, 0.203, 0.937, -0.382, -0.334 }; int ldb = 2; ! double B_expected[] = { -0.495544804508, -0.142909570186, -0.846593689328, 0.861506163875, -0.485462670276, -0.898345893497, 1.07522946065, -2.43403194583, 0.315527055267, -0.271726799352, -1.73234815305, 3.5434654009 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1964) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1964) imag"); }; }; *************** *** 3528,3543 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.383, -0.184, 0.14, 0.131, -0.494, -0.025, -0.396, -0.183, 0.519, 0.806, -0.737, 0.764, -0.03, 0.622, -0.826, 0.605, 0.638, 0.935 }; int lda = 3; ! double B[] = { 0.975, -0.816, -0.996, -0.038, -0.316, -0.31, -0.003, -0.974, 0.364, -0.217, 0.909, -0.656 }; int ldb = 2; ! double B_expected[] = { -0.2109, 0.3423, 0.3026, -0.0882, 0.2001673, 0.0411059, 0.0443818, 0.2646074, -0.0213138923, 0.1426909311, 0.1794588402, 0.4128021586 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1973) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1973) imag"); }; }; --- 3528,3543 ---- int M = 2; int N = 3; ! double alpha[2] = {-1, 0}; ! double A[] = { -0.692, -0.245, -0.874, 0.77, 0.07, 0.01, 0.018, -0.42, -0.405, -0.387, 0.888, -0.912, -0.81, 0.314, 0.66, -0.895, -0.556, 0.157 }; int lda = 3; ! double B[] = { -0.801, 0.542, 0.699, 0.574, -0.56, 0.043, 0.742, -0.331, -0.614, 0.776, -0.335, 0.131 }; int ldb = 2; ! double B_expected[] = { 0.801, -0.542, -0.699, -0.574, 0.842734, -1.133478, -1.794906, 0.367554, 0.837894144, 1.029031872, 1.63685728, -2.047172224 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1965) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1965) imag"); }; }; *************** *** 3553,3568 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.433, -0.405, -0.008, 0.13, 0.377, -0.664, 0.421, -0.779 }; int lda = 2; ! double B[] = { 0.022, -0.326, -0.905, 0.323, -0.722, 0.282, -0.877, -0.793, -0.906, -0.999, -0.607, -0.979 }; int ldb = 3; ! double B_expected[] = { 0.0831887207906, -0.153137570623, -0.510564586332, -0.0447544052299, -0.412732352054, -0.0239182507667, 0.35364638809, -0.274824473121, 0.341954849059, -0.294570686181, 0.328230337479, -0.181800438645 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1974) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1974) imag"); }; }; --- 3553,3568 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.035, -0.456, 0.152, 0.976, 0.687, -0.527, -0.571, 0.832 }; int lda = 2; ! double B[] = { -0.868, 0.033, -0.131, -0.936, 0.993, 0.104, -0.684, 0.851, 0.523, 0.836, -0.205, 0.319 }; int ldb = 3; ! double B_expected[] = { -0.188683836853, 0.0217191541444, -0.044222393276, -0.201868895253, 0.218228063549, 0.00605705652583, 0.252579293874, 0.0800538768738, -0.099911150161, 0.0758372341381, -0.116723296822, -0.16542230206 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1966) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1966) imag"); }; }; *************** *** 3578,3593 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.007, 0.289, 0.434, 0.931, 0.776, -0.861, 0.83, -0.753 }; int lda = 2; ! double B[] = { 0.775, -0.299, -0.45, 0.923, 0.251, 0.934, 0.388, -0.958, -0.732, 0.263, -0.5, 0.097 }; int ldb = 3; ! double B_expected[] = { -0.2026, 0.1672, 0.0427, -0.3219, -0.1687, -0.2551, -0.0883348, 0.0650146, 0.4744571, 0.0273583, 0.4510139, -0.1254463 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1975) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1975) imag"); }; }; --- 3578,3593 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.481, -0.442, 0.69, 0.415, 0.983, -0.466, 0.503, -0.147 }; int lda = 2; ! double B[] = { -0.287, -0.777, -0.187, 0.061, 0.631, 0.797, 0.833, -0.49, -0.188, 0.386, -0.904, -0.793 }; int ldb = 3; ! double B_expected[] = { 0.0777, -0.0287, -0.0061, -0.0187, -0.0797, 0.0631, 0.0072975, 0.1353485, -0.0266305, -0.0084285, 0.1081065, -0.1670145 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1967) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1967) imag"); }; }; *************** *** 3603,3618 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.768, -0.738, 0.236, 0.721, 0.691, -0.963, -0.36, -0.376 }; int lda = 2; ! double B[] = { -0.822, 0.174, 0.799, 0.8, -0.985, -0.169, 0.652, -0.529, -0.51, -0.506, -0.542, -0.786 }; int ldb = 3; ! double B_expected[] = { -0.212429545832, 0.508667487335, 0.591670151369, 0.238559438419, 0.40264717438, -0.154881488703, 0.500259801606, -0.0994508738781, -0.130621162022, -0.416426547, -0.0684577231932, -0.575944733113 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1976) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1976) imag"); }; }; --- 3603,3618 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.286, 0.025, -0.111, 0.724, -0.973, -0.071, 0.527, -0.334 }; int lda = 2; ! double B[] = { -0.381, -0.131, 0.33, 0.09, 0.35, 0.062, -0.874, 0.252, 0.924, 0.251, 0.559, -0.619 }; int ldb = 3; ! double B_expected[] = { 0.38447496828, 0.401499279514, -0.210140860451, -0.584596680596, -0.443343106286, -0.127686958741, -0.109102585509, -0.096697792106, 0.045298174859, 0.146623168116, 0.131759250934, 0.0225662432408 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1968) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1968) imag"); }; }; *************** *** 3628,3643 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.294, 0.843, 0.52, 0.53, 0.392, 0.293, 0.209, 0.497 }; int lda = 2; ! double B[] = { 0.765, -0.547, 0.451, -0.581, 0.166, 0.834, -0.541, 0.278, -0.832, 0.66, -0.718, -0.664 }; int ldb = 3; ! double B_expected[] = { -0.1872365, 0.3339085, -0.0667796, 0.3834252, -0.2809938, -0.2009734, 0.1345, -0.1375, 0.1836, -0.2812, 0.2818, 0.1274 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1977) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1977) imag"); }; }; --- 3628,3643 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.862, -0.003, 0.975, 0.364, -0.996, 0.909, -0.316, -0.816 }; int lda = 2; ! double B[] = { 0.167, 0.961, 0.116, 0.675, 0.086, 0.259, -0.483, 0.898, 0.434, 0.723, 0.505, 0.042 }; int ldb = 3; ! double B_expected[] = { -0.1416361, -0.113035, -0.1789614, -0.0108943, -0.0759877, 0.0550802, -0.0898, -0.0483, -0.0723, 0.0434, -0.0042, 0.0505 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1969) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1969) imag"); }; }; *************** *** 3653,3668 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.642, 0.513, 0.428, 0.273, -0.612, 0.531, -0.664, 0.801 }; int lda = 2; ! double B[] = { 0.429, -0.049, -0.661, 0.36, -0.247, 0.523, -0.227, 0.459, -0.902, 0.328, 0.37, -0.225 }; int ldb = 2; ! double B_expected[] = { -0.161443909893, -0.0392846195877, 0.158306491417, 0.236544282705, 0.158671944063, -0.1560767799, 0.00300493937503, 0.254905467713, 0.369328020399, 0.00134777953987, -0.306971508873, -0.0836654236493 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1978) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1978) imag"); }; }; --- 3653,3668 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.826, -0.025, 0.638, -0.183, -0.184, 0.806, 0.131, 0.764 }; int lda = 2; ! double B[] = { -0.038, 0.14, -0.31, -0.494, -0.974, -0.396, -0.217, 0.519, -0.656, -0.737, 0.383, -0.03 }; int ldb = 2; ! double B_expected[] = { 0.0167945280502, 0.00510879322186, 0.0315562985639, 0.0579039669012, -0.0514636821443, 0.116360058046, 0.0192833017545, -0.206389577002, -0.0915450409357, 0.0766481525141, 0.0107002286761, -0.100817314679 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1970) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1970) imag"); }; }; *************** *** 3678,3693 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.229, -0.461, -0.279, 0.674, -0.797, -0.286, 0.397, 0.329 }; int lda = 2; ! double B[] = { 0.402, 0.728, 0.824, -0.691, -0.362, 0.437, 0.192, 0.788, -0.259, 0.599, 0.79, 0.076 }; int ldb = 2; ! double B_expected[] = { -0.1934, -0.1782, -0.383205, 0.202987, 0.0649, -0.1673, -0.1325225, -0.3690995, 0.0178, -0.2056, -0.289215, -0.112754 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1979) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1979) imag"); }; }; --- 3678,3693 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.282, -0.433, -0.793, -0.008, -0.999, 0.377, -0.979, 0.421 }; int lda = 2; ! double B[] = { 0.622, -0.722, 0.605, -0.877, 0.935, -0.906, 0.719, -0.607, 0.022, -0.326, -0.905, 0.323 }; int ldb = 2; ! double B_expected[] = { 0.0722, 0.0622, 0.1363784, 0.1498572, 0.0906, 0.0935, 0.1159599, 0.1994627, 0.0326, 0.0022, -0.000562, -0.076012 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1971) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1971) imag"); }; }; *************** *** 3703,3718 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.942, -0.832, 0.595, -0.092, 0.01, 0.001, 0.944, 0.256 }; int lda = 2; ! double B[] = { 0.73, 0.488, -0.363, -0.01, -0.112, 0.169, -0.268, -0.13, -0.657, 0.573, 0.91, 0.632 }; int ldb = 2; ! double B_expected[] = { 0.158268746344, 0.226988691038, 0.117355164571, -0.00345029435376, -0.0289643723553, 0.0722018494696, 0.0888981803586, 0.0370317099277, -0.233113998714, -0.101765761072, -0.305361921327, -0.187259165106 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1980) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1980) imag"); }; }; --- 3703,3718 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.934, 0.007, -0.958, 0.434, 0.263, 0.776, 0.097, 0.83 }; int lda = 2; ! double B[] = { -0.405, 0.251, 0.13, 0.388, -0.664, -0.732, -0.779, -0.5, 0.775, -0.299, -0.45, 0.923 }; int ldb = 2; ! double B_expected[] = { -0.026920633021, -0.0986978374343, -0.020841203536, -0.0443113292253, 0.157683298836, 0.0261984465224, 0.099536165222, 0.0486084240644, 0.127725373746, -0.0161073528761, 0.0406652355905, -0.115957262473 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1972) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1972) imag"); }; }; *************** *** 3728,3743 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.508, 0.053, -0.516, 0.785, -0.451, -0.53, 0.551, 0.235 }; int lda = 2; ! double B[] = { -0.09, 0.46, 0.948, 0.918, -0.337, 0.012, -0.786, -0.676, 0.906, -0.38, -0.566, 0.645 }; int ldb = 2; ! double B_expected[] = { -0.0713482, -0.5355066, -0.3762, -0.1806, 0.1589574, 0.2649562, 0.3034, 0.1242, 0.0168633, 0.1582089, 0.1053, -0.2501 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1981) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1981) imag"); }; }; --- 3728,3743 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.169, -0.768, -0.529, 0.236, -0.506, 0.691, -0.786, -0.36 }; int lda = 2; ! double B[] = { 0.289, -0.985, 0.931, 0.652, -0.861, -0.51, -0.753, -0.542, -0.822, 0.174, 0.799, 0.8 }; int ldb = 2; ! double B_expected[] = { 0.0420376, 0.0627627, -0.0652, 0.0931, 0.0974426, -0.1131425, 0.0542, -0.0753, -0.0785764, -0.0588129, -0.08, 0.0799 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1973) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1973) imag"); }; }; *************** *** 3753,3768 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.499, -0.268, 0.234, 0.032, -0.158, 0.684, -0.878, 0.613, 0.968, 0.812, 0.013, 0.34, -0.485, -0.565, 0.316, 0.286, -0.459, 0.637 }; int lda = 3; ! double B[] = { -0.964, 0.804, 0.197, 0.141, 0.942, 0.474, 0.741, -0.441, -0.738, -0.703, -0.27, 0.98 }; int ldb = 3; ! double B_expected[] = { 0.561582612433, -0.70128258354, -0.0253749021391, 0.0631927226609, 0.295313488523, -0.305260767297, -0.0937671252683, 0.884164549696, 0.000683977216651, 0.260184505619, 0.344358828778, 0.221445372699 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1982) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1982) imag"); }; }; --- 3753,3768 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.834, 0.53, 0.278, 0.293, 0.66, 0.497, -0.664, 0.429, -0.294, -0.661, 0.52, -0.247, 0.392, -0.227, 0.209, -0.902, 0.843, 0.37 }; int lda = 3; ! double B[] = { -0.738, 0.166, 0.721, -0.541, -0.963, -0.832, -0.376, -0.718, 0.765, -0.547, 0.451, -0.581 }; int ldb = 3; ! double B_expected[] = { -0.115188282202, -0.000411685478887, 0.105497263516, -0.0083759187965, 0.124793492766, -0.0594619308146, 0.0499107469, -0.0152598288542, 0.00927285309719, -0.0831454824908, 0.0380996260983, 0.0702216627003 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1974) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1974) imag"); }; }; *************** *** 3778,3793 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.453, 0.917, 0.131, 0.361, 0.087, 0.441, -0.439, 0.439, 0.777, 0.131, 0.535, 0.646, 0.508, 0.746, -0.347, -0.911, -0.874, -0.525 }; int lda = 3; ! double B[] = { -0.739, -0.776, -0.049, 0.548, -0.39, -0.856, -0.757, 0.307, -0.533, -0.342, 0.431, 0.618 }; int ldb = 3; ! double B_expected[] = { 0.2794424312, 0.1451980676, -0.2891898, -0.1549434, 0.2026, 0.2178, 0.2242026328, -0.0997909546, 0.3882643, 0.0019799, -0.1911, -0.1423 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1983) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1983) imag"); }; }; --- 3778,3793 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.531, -0.691, 0.801, 0.437, 0.402, 0.788, 0.824, 0.599, -0.362, 0.076, 0.192, 0.229, -0.259, -0.279, 0.79, -0.797, 0.728, 0.397 }; int lda = 3; ! double B[] = { -0.049, 0.642, 0.36, 0.428, 0.523, -0.612, 0.459, -0.664, 0.328, 0.513, -0.225, 0.273 }; int ldb = 3; ! double B_expected[] = { -0.0941948813, -0.0387898759, -0.0665271, 0.0399732, 0.0612, 0.0523, 0.1143807788, -0.0091687866, -0.0409059, 0.0308683, -0.0273, -0.0225 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1975) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1975) imag"); }; }; *************** *** 3803,3818 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.835, -0.775, -0.384, -0.128, -0.41, -0.511, -0.282, -0.341, -0.856, -0.662, 0.721, -0.939, 0.175, -0.899, 0.832, -0.519, 0.652, -0.318 }; int lda = 3; ! double B[] = { -0.654, 0.105, -0.39, 0.645, 0.867, 0.045, -0.842, -0.896, -0.249, 0.419, 0.575, 0.561 }; int ldb = 3; ! double B_expected[] = { -0.177337134492, -0.0485464421929, -0.0947130836909, 0.143712701441, -0.0502556531648, 0.286334558029, -0.109929498786, -0.323108217437, -0.0362323282558, 0.21056630482, -0.514117706819, 0.0792536824901 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1984) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1984) imag"); }; }; --- 3803,3818 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.169, -0.092, -0.13, 0.001, 0.573, 0.256, 0.632, -0.09, -0.942, 0.948, 0.595, -0.337, 0.01, -0.786, 0.944, 0.906, -0.832, -0.566 }; int lda = 3; ! double B[] = { -0.461, -0.112, 0.674, -0.268, -0.286, -0.657, 0.329, 0.91, 0.73, 0.488, -0.363, -0.01 }; int ldb = 3; ! double B_expected[] = { -0.0634274139095, -0.238252532073, -0.142693434208, -0.0938542376785, -0.0907100858097, -0.0412217911039, -0.333617825793, 0.376288993923, -0.0317846476268, 0.175075250306, -0.125200687799, -0.118937960805 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1976) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1976) imag"); }; }; *************** *** 3828,3843 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.136, 0.272, 0.676, 0.673, -0.659, 0.668, 0.991, -0.569, -0.489, 0.581, -0.232, -0.249, -0.396, -0.832, 0.763, -0.092, 0.117, 0.108 }; int lda = 3; ! double B[] = { 0.721, -0.141, -0.604, 0.318, 0.387, 0.73, -0.549, 0.302, 0.101, 0.721, -0.064, 0.673 }; int ldb = 3; ! double B_expected[] = { -0.2022, 0.1144, 0.4148738, -0.1541186, -0.5047180206, 0.1126569022, 0.1345, -0.1455, -0.318479, -0.13854, 0.114359797, -0.242815912 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1985) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1985) imag"); }; }; --- 3828,3843 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.53, 0.141, 0.235, 0.474, -0.964, -0.441, 0.197, -0.703, 0.942, 0.98, 0.741, 0.499, -0.738, 0.234, -0.27, -0.158, 0.804, -0.878 }; int lda = 3; ! double B[] = { 0.46, -0.508, 0.918, -0.516, 0.012, -0.451, -0.676, 0.551, -0.38, 0.053, 0.645, 0.785 }; int ldb = 3; ! double B_expected[] = { 0.0508, 0.046, 0.0739304, 0.0470256, 0.0992176528, 0.0480511088, -0.0551, -0.0676, -0.0419681, 0.0140525, -0.112456492, 0.0121429348 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1977) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1977) imag"); }; }; *************** *** 3853,3868 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.578, 0.601, -0.43, -0.187, -0.934, 0.635, 0.157, -0.561, -0.964, 0.025, 0.435, -0.674, -0.575, 0.275, 0.609, 0.228, -0.202, -0.267 }; int lda = 3; ! double B[] = { 0.505, -0.347, 0.213, -0.392, -0.465, -0.918, -0.737, -0.974, -0.051, 0.97, 0.066, 0.604 }; int ldb = 2; ! double B_expected[] = { -0.206165616299, -0.811510964363, -0.328765954464, -0.593889594613, -0.410790365608, 0.365230809488, -0.377900693873, 0.166778025696, -0.558066070138, 0.728199798382, -0.271362172482, 0.505674752215 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1986) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1986) imag"); }; }; --- 3853,3868 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { 0.286, 0.548, 0.637, -0.856, -0.739, 0.307, -0.049, -0.342, -0.39, 0.618, -0.757, -0.453, -0.533, 0.131, 0.431, 0.087, -0.776, -0.439 }; int lda = 3; ! double B[] = { 0.968, 0.032, 0.013, 0.684, -0.485, 0.613, 0.316, 0.812, -0.459, 0.34, -0.268, -0.565 }; int ldb = 2; ! double B_expected[] = { -0.126374952238, 0.0484874156039, -0.0755178690743, -0.200973083054, 0.138328459491, -0.0263170966956, 0.00492064241274, -0.0787874374991, 0.00784239970713, 0.0635860998343, -0.0699577429529, -0.00504052726328 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1978) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1978) imag"); }; }; *************** *** 3878,3893 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.311, -0.737, -0.738, -0.214, -0.387, -0.043, -0.168, 0.563, 0.165, 0.007, -0.121, 0.408, -0.75, -0.641, -0.997, -0.347, 0.523, -0.922 }; int lda = 3; ! double B[] = { 0.46, 0.376, -0.623, -0.092, 0.233, 0.981, -0.435, -0.493, 0.405, 0.855, -0.391, 0.572 }; int ldb = 2; ! double B_expected[] = { -0.311417159, -0.418726217, 0.2053384662, -0.1587052684, -0.449331, -0.414523, 0.1666068, -0.1265226, -0.207, -0.216, 0.0601, -0.2107 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1987) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1987) imag"); }; }; --- 3878,3893 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.911, 0.645, -0.525, 0.045, -0.654, -0.896, -0.39, 0.419, 0.867, 0.561, -0.842, -0.835, -0.249, -0.384, 0.575, -0.41, 0.105, -0.282 }; int lda = 3; ! double B[] = { 0.777, 0.361, 0.535, 0.441, 0.508, 0.439, -0.347, 0.131, -0.874, 0.646, 0.917, 0.746 }; int ldb = 2; ! double B_expected[] = { -0.155796389, 0.112639999, 0.0226368685, 0.111048763, -0.042589, 0.127541, 0.067392, -0.0568415, -0.0646, -0.0874, -0.0746, 0.0917 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1979) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1979) imag"); }; }; *************** *** 3903,3918 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { -0.288, -0.421, 0.451, 0.234, 0.67, -0.483, 0.273, 0.131, 0.005, 0.091, -0.706, -0.191, 0.285, -0.434, 0.648, -0.556, -0.886, 0.798 }; int lda = 3; ! double B[] = { 0.359, -0.682, -0.618, 0.479, 0.463, 0.468, -0.43, 0.058, -0.361, -0.058, -0.028, -0.729 }; int ldb = 2; ! double B_expected[] = { 0.432870841901, -0.202296442916, -0.484714722217, 0.00498299287046, -1.27917612947, -3.59551100448, 2.13407463306, 3.62604336509, 2.50059207751, 0.44116664838, -3.08374361183, -0.156015309482 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1988) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1988) imag"); }; }; --- 3903,3918 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.519, 0.318, -0.318, 0.73, 0.721, 0.302, -0.604, 0.721, 0.387, 0.673, -0.549, -0.136, 0.101, 0.676, -0.064, -0.659, -0.141, 0.991 }; int lda = 3; ! double B[] = { -0.856, -0.128, 0.721, -0.511, 0.175, -0.341, 0.832, -0.662, 0.652, -0.939, -0.775, -0.899 }; int ldb = 2; ! double B_expected[] = { 0.055542329649, 0.130900846188, -0.133470180979, -0.0571415846795, -0.13942012508, 0.0150972236507, 0.0782230770838, 0.0522994181773, -0.00621452256957, -0.0615971232698, 0.0222285648871, 0.258910370231 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1980) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1980) imag"); }; }; *************** *** 3928,3943 **** int M = 2; int N = 3; ! double alpha[2] = {-0.3, 0.1}; ! double A[] = { 0.288, 0.961, -0.571, -0.341, -0.443, 0.116, -0.928, 0.157, 0.035, 0.822, 0.733, -0.15, 0.851, -0.634, -0.769, -0.709, 0.346, -0.943 }; int lda = 3; ! double B[] = { -0.708, 0.945, -0.144, 0.505, 0.827, -0.467, 0.883, 0.194, -0.607, -0.332, 0.716, -0.117 }; int ldb = 2; ! double B_expected[] = { 0.1179, -0.3543, -0.0073, -0.1659, -0.2548954, -0.0197092, -0.3450402, -0.0621396, 0.4925104482, -0.0516973464, 0.0565040266, 0.1296638568 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1989) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1989) imag"); }; }; --- 3928,3943 ---- int M = 2; int N = 3; ! double alpha[2] = {0, 0.1}; ! double A[] = { -0.092, -0.392, 0.108, -0.918, 0.505, -0.974, 0.213, 0.97, -0.465, 0.604, -0.737, -0.578, -0.051, -0.43, 0.066, -0.934, -0.347, 0.157 }; int lda = 3; ! double B[] = { -0.489, 0.673, -0.232, 0.668, -0.396, -0.569, 0.763, 0.581, 0.117, -0.249, 0.272, -0.832 }; int ldb = 2; ! double B_expected[] = { -0.0673, -0.0489, -0.0668, -0.0232, 0.0192782, 0.0274626, -0.0721832, 0.140128, 0.0413393162, 0.1110418366, 0.1221321656, 0.2489754256 }; cblas_ztrsm(order, side, uplo, trans, diag, M, N, alpha, A, lda, B, ldb); { int i; for (i = 0; i < 6; i++) { ! gsl_test_rel(B[2*i], B_expected[2*i], dbleps, "ztrsm(case 1981) real"); ! gsl_test_rel(B[2*i+1], B_expected[2*i+1], dbleps, "ztrsm(case 1981) imag"); }; }; diff -x.info* -rc2P gsl-1.3/cblas/zaxpy.c gsl-1.4/cblas/zaxpy.c *** gsl-1.3/cblas/zaxpy.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zaxpy.c Fri Jul 25 15:18:09 2003 *************** *** 5,9 **** void cblas_zaxpy (const int N, const void *alpha, const void *X, const int incX, ! void *Y, const int incY) { #define BASE double --- 5,9 ---- void cblas_zaxpy (const int N, const void *alpha, const void *X, const int incX, ! void *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zcopy.c gsl-1.4/cblas/zcopy.c *** gsl-1.3/cblas/zcopy.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zcopy.c Fri Jul 25 15:18:09 2003 *************** *** 5,9 **** void cblas_zcopy (const int N, const void *X, const int incX, void *Y, ! const int incY) { #define BASE double --- 5,9 ---- void cblas_zcopy (const int N, const void *X, const int incX, void *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zdotc_sub.c gsl-1.4/cblas/zdotc_sub.c *** gsl-1.3/cblas/zdotc_sub.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zdotc_sub.c Fri Jul 25 15:18:09 2003 *************** *** 5,9 **** void cblas_zdotc_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE double --- 5,9 ---- void cblas_zdotc_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zdotu_sub.c gsl-1.4/cblas/zdotu_sub.c *** gsl-1.3/cblas/zdotu_sub.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zdotu_sub.c Fri Jul 25 15:18:09 2003 *************** *** 5,9 **** void cblas_zdotu_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE double --- 5,9 ---- void cblas_zdotu_sub (const int N, const void *X, const int incX, const void *Y, ! const int incY, void *result) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zgbmv.c gsl-1.4/cblas/zgbmv.c *** gsl-1.3/cblas/zgbmv.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zgbmv.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const void *alpha, const void *A, const int lda, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE double --- 5,11 ---- void cblas_zgbmv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const int KL, const int KU, ! const void *alpha, const void *A, const int lda, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zgemm.c gsl-1.4/cblas/zgemm.c *** gsl-1.3/cblas/zgemm.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zgemm.c Fri Jul 25 15:18:09 2003 *************** *** 5,12 **** void cblas_zgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const void *alpha, const void *A, const int lda, ! const void *B, const int ldb, const void *beta, void *C, ! const int ldc) { #define BASE double --- 5,12 ---- void cblas_zgemm (const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_TRANSPOSE TransB, const int M, const int N, ! const int K, const void *alpha, const void *A, const int lda, ! const void *B, const int ldb, const void *beta, void *C, ! const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zgemv.c gsl-1.4/cblas/zgemv.c *** gsl-1.3/cblas/zgemv.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zgemv.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE double --- 5,11 ---- void cblas_zgemv (const enum CBLAS_ORDER order, const enum CBLAS_TRANSPOSE TransA, ! const int M, const int N, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zgerc.c gsl-1.4/cblas/zgerc.c *** gsl-1.3/cblas/zgerc.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zgerc.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zgerc (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_zgerc (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zgeru.c gsl-1.4/cblas/zgeru.c *** gsl-1.3/cblas/zgeru.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zgeru.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zgeru (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_zgeru (const enum CBLAS_ORDER order, const int M, const int N, ! const void *alpha, const void *X, const int incX, const void *Y, ! const int incY, void *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zhbmv.c gsl-1.4/cblas/zhbmv.c *** gsl-1.3/cblas/zhbmv.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zhbmv.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zhbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE double --- 5,11 ---- void cblas_zhbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const int K, const void *alpha, const void *A, ! const int lda, const void *X, const int incX, const void *beta, ! void *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zhemm.c gsl-1.4/cblas/zhemm.c *** gsl-1.3/cblas/zhemm.c Mon Nov 19 21:35:15 2001 --- gsl-1.4/cblas/zhemm.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zhemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_zhemm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zhemv.c gsl-1.4/cblas/zhemv.c *** gsl-1.3/cblas/zhemv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zhemv.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zhemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *A, const int lda, ! const void *X, const int incX, const void *beta, void *Y, ! const int incY) { #define BASE double --- 5,11 ---- void cblas_zhemv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *A, const int lda, ! const void *X, const int incX, const void *beta, void *Y, ! const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zher.c gsl-1.4/cblas/zher.c *** gsl-1.3/cblas/zher.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zher.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const void *X, const int incX, ! void *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_zher (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const void *X, const int incX, ! void *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zher2.c gsl-1.4/cblas/zher2.c *** gsl-1.3/cblas/zher2.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zher2.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *A, const int lda) { #define BASE double --- 5,10 ---- void cblas_zher2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *A, const int lda) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zher2k.c gsl-1.4/cblas/zher2k.c *** gsl-1.3/cblas/zher2k.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zher2k.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const double beta, void *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_zher2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const double beta, void *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zherk.c gsl-1.4/cblas/zherk.c *** gsl-1.3/cblas/zherk.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zherk.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const double alpha, const void *A, const int lda, ! const double beta, void *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_zherk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const double alpha, const void *A, const int lda, ! const double beta, void *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zhpmv.c gsl-1.4/cblas/zhpmv.c *** gsl-1.3/cblas/zhpmv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zhpmv.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zhpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *Ap, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE double --- 5,10 ---- void cblas_zhpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *Ap, const void *X, ! const int incX, const void *beta, void *Y, const int incY) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zhpr.c gsl-1.4/cblas/zhpr.c *** gsl-1.3/cblas/zhpr.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zhpr.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zhpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const void *X, const int incX, ! void *Ap) { #define BASE double --- 5,10 ---- void cblas_zhpr (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const double alpha, const void *X, const int incX, ! void *Ap) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zhpr2.c gsl-1.4/cblas/zhpr2.c *** gsl-1.3/cblas/zhpr2.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zhpr2.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_zhpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *Ap) { #define BASE double --- 5,10 ---- void cblas_zhpr2 (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const int N, const void *alpha, const void *X, const int incX, ! const void *Y, const int incY, void *Ap) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zsymm.c gsl-1.4/cblas/zsymm.c *** gsl-1.3/cblas/zsymm.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zsymm.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_zsymm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const int M, const int N, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zsyr2k.c gsl-1.4/cblas/zsyr2k.c *** gsl-1.3/cblas/zsyr2k.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zsyr2k.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_zsyr2k (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, const void *B, ! const int ldb, const void *beta, void *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/zsyrk.c gsl-1.4/cblas/zsyrk.c *** gsl-1.3/cblas/zsyrk.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/zsyrk.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_zsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, ! const void *beta, void *C, const int ldc) { #define BASE double --- 5,11 ---- void cblas_zsyrk (const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE Trans, const int N, const int K, ! const void *alpha, const void *A, const int lda, ! const void *beta, void *C, const int ldc) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztbmv.c gsl-1.4/cblas/ztbmv.c *** gsl-1.3/cblas/ztbmv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztbmv.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_ztbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE double --- 5,11 ---- void cblas_ztbmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztbsv.c gsl-1.4/cblas/ztbsv.c *** gsl-1.3/cblas/ztbsv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztbsv.c Fri Jul 25 15:18:09 2003 *************** *** 7,13 **** void cblas_ztbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE double --- 7,13 ---- void cblas_ztbsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const int K, const void *A, const int lda, void *X, ! const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztpmv.c gsl-1.4/cblas/ztpmv.c *** gsl-1.3/cblas/ztpmv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztpmv.c Fri Jul 25 15:18:09 2003 *************** *** 5,10 **** void cblas_ztpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE double --- 5,10 ---- void cblas_ztpmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztpsv.c gsl-1.4/cblas/ztpsv.c *** gsl-1.3/cblas/ztpsv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztpsv.c Fri Jul 25 15:18:09 2003 *************** *** 7,12 **** void cblas_ztpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE double --- 7,12 ---- void cblas_ztpsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *Ap, void *X, const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztrmm.c gsl-1.4/cblas/ztrmm.c *** gsl-1.3/cblas/ztrmm.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztrmm.c Fri Jul 25 15:18:09 2003 *************** *** 5,12 **** void cblas_ztrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE double --- 5,12 ---- void cblas_ztrmm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztrmv.c gsl-1.4/cblas/ztrmv.c *** gsl-1.3/cblas/ztrmv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztrmv.c Fri Jul 25 15:18:09 2003 *************** *** 5,11 **** void cblas_ztrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE double --- 5,11 ---- void cblas_ztrmv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztrsm.c gsl-1.4/cblas/ztrsm.c *** gsl-1.3/cblas/ztrsm.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztrsm.c Fri Jul 25 15:18:09 2003 *************** *** 7,14 **** void cblas_ztrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE double --- 7,14 ---- void cblas_ztrsm (const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side, ! const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA, ! const enum CBLAS_DIAG Diag, const int M, const int N, ! const void *alpha, const void *A, const int lda, void *B, ! const int ldb) { #define BASE double diff -x.info* -rc2P gsl-1.3/cblas/ztrsv.c gsl-1.4/cblas/ztrsv.c *** gsl-1.3/cblas/ztrsv.c Mon Nov 19 21:35:14 2001 --- gsl-1.4/cblas/ztrsv.c Fri Jul 25 15:18:09 2003 *************** *** 7,13 **** void cblas_ztrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE double --- 7,13 ---- void cblas_ztrsv (const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, ! const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, ! const int N, const void *A, const int lda, void *X, ! const int incX) { #define BASE double diff -x.info* -rc2P gsl-1.3/cdf/ChangeLog gsl-1.4/cdf/ChangeLog *** gsl-1.3/cdf/ChangeLog Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/ChangeLog Sun Jul 27 19:44:03 2003 *************** *** 0 **** --- 1,23 ---- + 2003-07-27 Brian Gough + + * gumbel1.c (gsl_cdf_gumbel1_Q): use pow in place of exp since + compilers seem to handle overflow better in this case (perhaps + because it is not an intrinsic function). + + * gumbel2.c (gsl_cdf_gumbel2_P): handle case of x = 0 explicitly + (gsl_cdf_gumbel2_Q): handle case of x = 0 explicitly + + 2003-07-22 Brian Gough + + * gamma.c (gsl_cdf_gamma_P): Peizer and Pratt approximation for + large a seems to be inaccurate in tails + (gsl_cdf_gamma_Q): Peizer and Pratt approximation for large a + seems to be inaccurate in tails + + * test.c (main): added test for large a for gamma + + * cauchyinv.c (gsl_cdf_cauchy_Qinv): corrected limiting value for + Q=1 + + * added Cumulative Distribution functions from savannah.gnu.org + diff -x.info* -rc2P gsl-1.3/cdf/Makefile.am gsl-1.4/cdf/Makefile.am *** gsl-1.3/cdf/Makefile.am Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/Makefile.am Wed Aug 13 08:34:22 2003 *************** *** 0 **** --- 1,17 ---- + ## Process this file with automake to produce Makefile.in + noinst_LTLIBRARIES = libgslcdf.la + + pkginclude_HEADERS= gsl_cdf.h + + INCLUDES= -I$(top_builddir) + + libgslcdf_la_SOURCES = beta.c cauchy.c cauchyinv.c chisq.c chisqinv.c exponential.c exponentialinv.c fdist.c flat.c flatinv.c gamma.c gammainv.c gauss.c gaussinv.c gumbel1.c gumbel1inv.c gumbel2.c gumbel2inv.c laplace.c laplaceinv.c logistic.c logisticinv.c lognormal.c lognormalinv.c pareto.c paretoinv.c rayleigh.c rayleighinv.c tdist.c tdistinv.c weibull.c weibullinv.c + + noinst_HEADERS = beta_inc.c rat_eval.h test_auto.c + + TESTS = test + + check_PROGRAMS = test + + test_SOURCES = test.c + test_LDADD = libgslcdf.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/cdf/Makefile.in gsl-1.4/cdf/Makefile.in *** gsl-1.3/cdf/Makefile.in Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/Makefile.in Thu Aug 14 12:29:03 2003 *************** *** 0 **** --- 1,528 ---- + # Makefile.in generated by automake 1.7.5 from Makefile.am. + # @configure_input@ + + # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + # Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY, to the extent permitted by law; without + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + + @SET_MAKE@ + + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ + VPATH = @srcdir@ + pkgdatadir = $(datadir)/@PACKAGE@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + top_builddir = .. + + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 + install_sh_PROGRAM = $(install_sh) -c + install_sh_SCRIPT = $(install_sh) -c + INSTALL_HEADER = $(INSTALL_DATA) + transform = $(program_transform_name) + NORMAL_INSTALL = : + PRE_INSTALL = : + POST_INSTALL = : + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : + host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ + AR = @AR@ + AUTOCONF = @AUTOCONF@ + AUTOHEADER = @AUTOHEADER@ + AUTOMAKE = @AUTOMAKE@ + AWK = @AWK@ + CC = @CC@ + CFLAGS = @CFLAGS@ + CPP = @CPP@ + CPPFLAGS = @CPPFLAGS@ + CYGPATH_W = @CYGPATH_W@ + DEFS = @DEFS@ + ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ + GSL_CFLAGS = @GSL_CFLAGS@ + GSL_LIBS = @GSL_LIBS@ + GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ + GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ + HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ + HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ + HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ + LIBTOOL = @LIBTOOL@ + LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ + MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ + MAKEINFO = @MAKEINFO@ + OBJEXT = @OBJEXT@ + PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ + RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ + STRIP = @STRIP@ + VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ + noinst_LTLIBRARIES = libgslcdf.la + + pkginclude_HEADERS = gsl_cdf.h + + INCLUDES = -I$(top_builddir) + + libgslcdf_la_SOURCES = beta.c cauchy.c cauchyinv.c chisq.c chisqinv.c exponential.c exponentialinv.c fdist.c flat.c flatinv.c gamma.c gammainv.c gauss.c gaussinv.c gumbel1.c gumbel1inv.c gumbel2.c gumbel2inv.c laplace.c laplaceinv.c logistic.c logisticinv.c lognormal.c lognormalinv.c pareto.c paretoinv.c rayleigh.c rayleighinv.c tdist.c tdistinv.c weibull.c weibullinv.c + + noinst_HEADERS = beta_inc.c rat_eval.h test_auto.c + + TESTS = test + + check_PROGRAMS = test + + test_SOURCES = test.c + test_LDADD = libgslcdf.la ../randist/libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + subdir = cdf + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 + mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs + CONFIG_HEADER = $(top_builddir)/config.h + CONFIG_CLEAN_FILES = + LTLIBRARIES = $(noinst_LTLIBRARIES) + + libgslcdf_la_LDFLAGS = + libgslcdf_la_LIBADD = + am_libgslcdf_la_OBJECTS = beta.lo cauchy.lo cauchyinv.lo chisq.lo \ + chisqinv.lo exponential.lo exponentialinv.lo fdist.lo flat.lo \ + flatinv.lo gamma.lo gammainv.lo gauss.lo gaussinv.lo gumbel1.lo \ + gumbel1inv.lo gumbel2.lo gumbel2inv.lo laplace.lo laplaceinv.lo \ + logistic.lo logisticinv.lo lognormal.lo lognormalinv.lo \ + pareto.lo paretoinv.lo rayleigh.lo rayleighinv.lo tdist.lo \ + tdistinv.lo weibull.lo weibullinv.lo + libgslcdf_la_OBJECTS = $(am_libgslcdf_la_OBJECTS) + check_PROGRAMS = test$(EXEEXT) + am_test_OBJECTS = test.$(OBJEXT) + test_OBJECTS = $(am_test_OBJECTS) + test_DEPENDENCIES = libgslcdf.la ../randist/libgslrandist.la \ + ../rng/libgslrng.la ../specfunc/libgslspecfunc.la \ + ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ + ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + test_LDFLAGS = + + DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) + depcomp = + am__depfiles_maybe = + COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) + CCLD = $(CC) + LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ + DIST_SOURCES = $(libgslcdf_la_SOURCES) $(test_SOURCES) + HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) + + DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ + Makefile.am Makefile.in + SOURCES = $(libgslcdf_la_SOURCES) $(test_SOURCES) + + all: all-am + + .SUFFIXES: + .SUFFIXES: .c .lo .o .obj + $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu cdf/Makefile + Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + + clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslcdf.la: $(libgslcdf_la_OBJECTS) $(libgslcdf_la_DEPENDENCIES) + $(LINK) $(libgslcdf_la_LDFLAGS) $(libgslcdf_la_OBJECTS) $(libgslcdf_la_LIBADD) $(LIBS) + + clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done + test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) + @rm -f test$(EXEEXT) + $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) + + mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + + distclean-compile: + -rm -f *.tab.c + + .c.o: + $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + + .c.obj: + $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` + + .c.lo: + $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + + mostlyclean-libtool: + -rm -f *.lo + + clean-libtool: + -rm -rf .libs _libs + + distclean-libtool: + -rm -f libtool + uninstall-info-am: + pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) + install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ + $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ + done + + uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ + rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ + done + + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + + tags: TAGS + + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + + TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + + GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + + check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; \ + srcdir=$(srcdir); export srcdir; \ + list='$(TESTS)'; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *" $$tst "*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ + done; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ + else \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + fi; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ + else \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + fi; \ + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -n "$$skipped" && echo "$$skipped"; \ + test -n "$$report" && echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi + DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + + top_distdir = .. + distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + + distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS + check: check-am + all-am: Makefile $(LTLIBRARIES) $(HEADERS) + + installdirs: + $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) + install: install-am + install-exec: install-exec-am + install-data: install-data-am + uninstall: uninstall-am + + install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: + + clean-generic: + + distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + clean: clean-am + + clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES mostlyclean-am + + distclean: distclean-am + + distclean-am: clean-am distclean-compile distclean-generic \ + distclean-libtool distclean-tags + + dvi: dvi-am + + dvi-am: + + info: info-am + + info-am: + + install-data-am: install-pkgincludeHEADERS + + install-exec-am: + + install-info: install-info-am + + install-man: + + installcheck-am: + + maintainer-clean: maintainer-clean-am + + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am + + mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + + pdf: pdf-am + + pdf-am: + + ps: ps-am + + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: diff -x.info* -rc2P gsl-1.3/cdf/beta.c gsl-1.4/cdf/beta.c *** gsl-1.3/cdf/beta.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/beta.c Sat Jul 26 13:45:45 2003 *************** *** 0 **** --- 1,56 ---- + /* cdf/cdf_beta.c + * + * Copyright (C) 2003 Brian Gough. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + #include + #include + + #include "beta_inc.c" + + double + gsl_cdf_beta_P (const double x, const double a, const double b) + { + double P; + + if (x <= 0.0 || x > 1.0) + { + return 0.0; + } + + P = beta_inc_AXPY (1.0, 0.0, a, b, x); + + return P; + } + + double + gsl_cdf_beta_Q (const double x, const double a, const double b) + { + double P; + + if (x < 0.0 || x >= 1.0) + { + return 0.0; + } + + P = beta_inc_AXPY (-1.0, 1.0, a, b, x); + + return P; + } diff -x.info* -rc2P gsl-1.3/cdf/beta_inc.c gsl-1.4/cdf/beta_inc.c *** gsl-1.3/cdf/beta_inc.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/beta_inc.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,177 ---- + /* specfunc/beta_inc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + /* Author: G. Jungman */ + /* Modified for cdfs by Brian Gough, June 2003 */ + + static double + beta_cont_frac (const double a, const double b, const double x, + const double epsabs) + { + const unsigned int max_iter = 512; /* control iterations */ + const double cutoff = 2.0 * GSL_DBL_MIN; /* control the zero cutoff */ + unsigned int iter_count = 0; + double cf; + + /* standard initialization for continued fraction */ + double num_term = 1.0; + double den_term = 1.0 - (a + b) * x / (a + 1.0); + + if (fabs (den_term) < cutoff) + den_term = GSL_NAN; + + den_term = 1.0 / den_term; + cf = den_term; + + while (iter_count < max_iter) + { + const int k = iter_count + 1; + double coeff = k * (b - k) * x / (((a - 1.0) + 2 * k) * (a + 2 * k)); + double delta_frac; + + /* first step */ + den_term = 1.0 + coeff * den_term; + num_term = 1.0 + coeff / num_term; + + if (fabs (den_term) < cutoff) + den_term = GSL_NAN; + + if (fabs (num_term) < cutoff) + num_term = GSL_NAN; + + den_term = 1.0 / den_term; + + delta_frac = den_term * num_term; + cf *= delta_frac; + + coeff = -(a + k) * (a + b + k) * x / ((a + 2 * k) * (a + 2 * k + 1.0)); + + /* second step */ + den_term = 1.0 + coeff * den_term; + num_term = 1.0 + coeff / num_term; + + if (fabs (den_term) < cutoff) + den_term = GSL_NAN; + + if (fabs (num_term) < cutoff) + num_term = GSL_NAN; + + den_term = 1.0 / den_term; + + delta_frac = den_term * num_term; + cf *= delta_frac; + + if (fabs (delta_frac - 1.0) < 2.0 * GSL_DBL_EPSILON) + break; + + if (cf * fabs (delta_frac - 1.0) < epsabs) + break; + + ++iter_count; + } + + if (iter_count >= max_iter) + return GSL_NAN; + + return cf; + } + + /* The function beta_inc_AXPY(A,Y,a,b,x) computes A * beta_inc(a,b,x) + + Y taking account of possible cancellations when using the + hypergeometric transformation beta_inc(a,b,x)=1-beta_inc(b,a,1-x). + + It also adjusts the accuracy of beta_inc() to fit the overall + absolute error when A*beta_inc is added to Y. (e.g. if Y >> + A*beta_inc then the accuracy of beta_inc can be reduced) */ + + static double + beta_inc_AXPY (const double A, const double Y, + const double a, const double b, const double x) + { + if (x == 0.0) + { + return A * 0 + Y; + } + else if (x == 1.0) + { + return A * 1 + Y; + } + else + { + double ln_beta = gsl_sf_lnbeta (a, b); + double ln_pre = -ln_beta + a * log (x) + b * log1p (-x); + + double prefactor = exp (ln_pre); + + if (x < (a + 1.0) / (a + b + 2.0)) + { + /* Apply continued fraction directly. */ + double epsabs = fabs (Y / (A * prefactor / a)) * GSL_DBL_EPSILON; + + double cf = beta_cont_frac (a, b, x, epsabs); + + return A * (prefactor * cf / a) + Y; + } + else + { + /* Apply continued fraction after hypergeometric transformation. */ + double epsabs = + fabs ((A + Y) / (A * prefactor / b)) * GSL_DBL_EPSILON; + double cf = beta_cont_frac (b, a, 1.0 - x, epsabs); + double term = prefactor * cf / b; + + if (A == -Y) + { + return -A * term; + } + else + { + return A * (1 - term) + Y; + } + } + } + } + + /* Direct series evaluation for testing purposes only */ + + #if 0 + static double + beta_series (const double a, const double b, const double x, + const double epsabs) + { + double f = x / (1 - x); + double c = (b - 1) / (a + 1) * f; + double s = 1; + double n = 0; + + s += c; + + do + { + n++; + c *= -f * (2 + n - b) / (2 + n + a); + s += c; + } + while (n < 512 && fabs (c) > GSL_DBL_EPSILON * fabs (s) + epsabs); + + s /= (1 - x); + + return s; + } + #endif diff -x.info* -rc2P gsl-1.3/cdf/cauchy.c gsl-1.4/cdf/cauchy.c *** gsl-1.3/cdf/cauchy.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/cauchy.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,59 ---- + /* cdf/cauchy.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_cauchy_P (const double x, const double a) + { + double P; + double u = x / a; + + if (u > -1) + { + P = 0.5 + atan (u) / M_PI; + } + else + { + P = atan(-1/u) / M_PI; + } + + return P; + } + + double + gsl_cdf_cauchy_Q (const double x, const double a) + { + double Q; + double u = x / a; + + if (u < 1) + { + Q = 0.5 - atan (u) / M_PI; + } + else + { + Q = atan(1/u) / M_PI; + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/cauchyinv.c gsl-1.4/cdf/cauchyinv.c *** gsl-1.3/cdf/cauchyinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/cauchyinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,75 ---- + /* cdf/cauchyinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_cauchy_Pinv (const double P, const double a) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (P > 0.5) + { + x = a * tan (M_PI * (P - 0.5)); + } + else + { + x = -a / tan (M_PI * P); + } + + return x; + } + + double + gsl_cdf_cauchy_Qinv (const double Q, const double a) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + if (Q > 0.5) + { + x = a * tan (M_PI * (0.5 - Q)); + } + else + { + x = a / tan (M_PI * Q); + } + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/chisq.c gsl-1.4/cdf/chisq.c *** gsl-1.3/cdf/chisq.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/chisq.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,34 ---- + /* cdf/cdf_chisq.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + + double + gsl_cdf_chisq_P (const double x, const double nu) + { + return gsl_cdf_gamma_P (x, nu / 2, 2.0); + } + + double + gsl_cdf_chisq_Q (const double x, const double nu) + { + return gsl_cdf_gamma_Q (x, nu / 2, 2.0); + } diff -x.info* -rc2P gsl-1.3/cdf/chisqinv.c gsl-1.4/cdf/chisqinv.c *** gsl-1.3/cdf/chisqinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/chisqinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,34 ---- + /* cdf/chisqinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + + double + gsl_cdf_chisq_Pinv (const double P, const double nu) + { + return gsl_cdf_gamma_Pinv (P, nu / 2, 2.0); + } + + double + gsl_cdf_chisq_Qinv (const double Q, const double nu) + { + return gsl_cdf_gamma_Qinv (Q, nu / 2, 2.0); + } diff -x.info* -rc2P gsl-1.3/cdf/exponential.c gsl-1.4/cdf/exponential.c *** gsl-1.3/cdf/exponential.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/exponential.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,59 ---- + /* cdf/exponential.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + /* The exponential distribution has the form + + p(x) dx = exp(-x/mu) dx/mu + + for x = 0 ... +infty */ + + double + gsl_cdf_exponential_P (const double x, const double mu) + { + if (x < 0) + { + return 0; + } + else + { + double P = -expm1 (-x / mu); + + return P; + } + } + + double + gsl_cdf_exponential_Q (const double x, const double mu) + { + if (x < 0) + { + return 1; + } + else + { + double Q = exp (-x / mu); + + return Q; + } + } diff -x.info* -rc2P gsl-1.3/cdf/exponentialinv.c gsl-1.4/cdf/exponentialinv.c *** gsl-1.3/cdf/exponentialinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/exponentialinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,39 ---- + /* cdf/exponentialinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_exponential_Pinv (const double P, const double mu) + { + double x = -mu * log1p (-P); + + return x; + } + + double + gsl_cdf_exponential_Qinv (const double Q, const double mu) + { + double x = -mu * log (Q); + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/fdist.c gsl-1.4/cdf/fdist.c *** gsl-1.3/cdf/fdist.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/fdist.c Sat Jul 26 13:46:07 2003 *************** *** 0 **** --- 1,76 ---- + /* cdf/f.c + * + * Copyright (C) 2002 Przemyslaw Sliwa and Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + #include + #include + + #include "beta_inc.c" + + /* + * Lower tail. + */ + double + gsl_cdf_fdist_P (const double x, const double nu1, const double nu2) + { + double P; + double r = nu2 / nu1; + + if (x < r) + { + double u = x / (r + x); + + P = beta_inc_AXPY (1.0, 0.0, nu1 / 2.0, nu2 / 2.0, u); + } + else + { + double u = r / (r + x); + + P = beta_inc_AXPY (-1.0, 1.0, nu2 / 2.0, nu1 / 2.0, u); + } + + return P; + } + + /* + * Upper tail. + */ + double + gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2) + { + double P; + double r = nu2 / nu1; + + if (x < r) + { + double u = x / (r + x); + + P = beta_inc_AXPY (-1.0, 1.0, nu1 / 2.0, nu2 / 2.0, u); + } + else + { + double u = r / (r + x); + + P = beta_inc_AXPY (1.0, 0.0, nu2 / 2.0, nu1 / 2.0, u); + } + + return P; + } diff -x.info* -rc2P gsl-1.3/cdf/flat.c gsl-1.4/cdf/flat.c *** gsl-1.3/cdf/flat.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/flat.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,65 ---- + /* cdf/flat.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_flat_P (const double x, const double a, const double b) + { + double P; + + if (x < a) + { + P = 0; + } + else if (x > b) + { + P = 1; + } + else + { + P = (x-a)/(b-a); + } + + return P; + } + + double + gsl_cdf_flat_Q (const double x, const double a, const double b) + { + double Q; + + if (x < a) + { + Q = 1; + } + else if (x > b) + { + Q = 0; + } + else + { + Q = (b-x)/(b-a); + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/flatinv.c gsl-1.4/cdf/flatinv.c *** gsl-1.3/cdf/flatinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/flatinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,59 ---- + /* cdf/flatinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + + double + gsl_cdf_flat_Pinv (const double P, const double a, const double b) + { + double x; + + if (P == 1.0) + { + return b; + } + else if (P == 0.0) + { + return a; + } + + x = (1 - P) * a + P * b; + + return x; + } + + double + gsl_cdf_flat_Qinv (const double Q, const double a, const double b) + { + double x; + + if (Q == 0.0) + { + return b; + } + else if (Q == 1.0) + { + return a; + } + + x = Q * a + (1 - Q) * b; + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/gamma.c gsl-1.4/cdf/gamma.c *** gsl-1.3/cdf/gamma.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gamma.c Tue Jul 29 19:47:37 2003 *************** *** 0 **** --- 1,134 ---- + /* cdf/cdf_gamma.c + * + * Copyright (C) 2003 Jason Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + /* + * Author: J. Stover + */ + + #include + #include + #include + #include + #include + + #define LARGE_A 85 + + /* + * Use the normal approximation as defined in + * + * D.B. Peizer and J.W. Pratt. "A Normal Approximation + * for Binomial, F, Beta, and Other Common, Related Tail + * Probabilities, I." Journal of the American Statistical + * Association, volume 63, issue 324, Dec. 1968. pp 1416-1456. + * + * This initial coding of the approximation is giving obviously + * incorrect errors. + */ + + #if 0 + static double + norm_arg (double x, double a) + { + double t; + double arg = x + (1.0 / 3.0) - a - (0.02 / a); + double u = (a - 0.5) / x; + + if (fabs (u - 1.0) < GSL_DBL_EPSILON) + { + t = 0.0; + } + else if (fabs (u) < GSL_DBL_EPSILON) + { + t = 1.0; + } + else if (u > 0.0) + { + double v = 1.0 - u; + t = (1.0 - u * u + 2 * u * log (u)) / (v * v); + } + else + { + t = GSL_NAN; + } + + arg *= sqrt ((1 + t) / x); + + return arg; + } + #endif + + /* + * Wrapper for the functions that do the work. + */ + double + gsl_cdf_gamma_P (const double x, const double a, const double b) + { + double P; + double y = x / b; + + if (x <= 0.0) + { + return 0.0; + } + + #if 0 /* Not currently working to sufficient accuracy in tails */ + if (a > LARGE_A) + { + /* Use Peizer and Pratt's normal approximation for large A. */ + + double z = norm_arg (y, a); + P = gsl_cdf_ugaussian_P (z); + } + else + #endif + { + P = gsl_sf_gamma_inc_P (a, y); + } + + return P; + } + + double + gsl_cdf_gamma_Q (const double x, const double a, const double b) + { + double P; + double y = x / b; + + if (x <= 0.0) + { + return 1.0; + } + + #if 0 /* Not currently working to sufficient accuracy in tails */ + if (a > LARGE_A) + { + /* + * Peizer and Pratt's approximation mentioned above. + */ + double z = norm_arg (y, a); + P = gsl_cdf_ugaussian_Q (z); + } + else + #endif + { + P = gsl_sf_gamma_inc_Q (a, y); + } + + return P; + } diff -x.info* -rc2P gsl-1.3/cdf/gammainv.c gsl-1.4/cdf/gammainv.c *** gsl-1.3/cdf/gammainv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gammainv.c Sat Jul 26 13:47:05 2003 *************** *** 0 **** --- 1,183 ---- + /* cdf/gammainv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + #include + #include + #include + + #include + + double + gsl_cdf_gamma_Pinv (const double P, const double a, const double b) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + /* Consider, small, large and intermediate cases separately. The + boundaries at 0.05 and 0.95 have not been optimised, but seem ok + for an initial approximation. */ + + if (P < 0.05) + { + double x0 = exp ((gsl_sf_lngamma (a) + log (P)) / a); + x = x0; + } + else if (P > 0.95) + { + double x0 = -log1p (-P) + gsl_sf_lngamma (a); + x = x0; + } + else + { + double xg = gsl_cdf_ugaussian_Pinv (P); + double x0 = (xg < -sqrt (a)) ? a : sqrt (a) * xg + a; + x = x0; + } + + /* Use Lagrange's interpolation for E(x)/phi(x0) to work backwards + to an improved value of x (Abramowitz & Stegun, 3.6.6) + + where E(x)=P-integ(phi(u),u,x0,x) and phi(u) is the pdf. + */ + + { + double lambda, dP, phi; + + start: + dP = P - gsl_cdf_gamma_P (x, a, 1.0); + phi = gsl_ran_gamma_pdf (x, a, 1.0); + + if (dP == 0.0) + goto end; + + lambda = dP / GSL_MAX (2 * fabs (dP / x), phi); + + { + double step0 = lambda; + double step1 = -((a - 1) / x - 1) * lambda * lambda / 4.0; + + double step = step0; + if (fabs (step1) < fabs (step0)) + step += step1; + + if (x + step > 0) + x += step; + else + { + x /= 2.0; + } + + if (fabs (step0) > 1e-10 * x) + goto start; + } + + } + + end: + return b * x; + } + + double + gsl_cdf_gamma_Qinv (const double Q, const double a, const double b) + { + double x; + + if (Q == 1.0) + { + return 0.0; + } + else if (Q == 0.0) + { + return GSL_POSINF; + } + + /* Consider, small, large and intermediate cases separately. The + boundaries at 0.05 and 0.95 have not been optimised, but seem ok + for an initial approximation. */ + + if (Q < 0.05) + { + double x0 = -log (Q) + gsl_sf_lngamma (a); + x = x0; + } + else if (Q > 0.95) + { + double x0 = exp ((gsl_sf_lngamma (a) + log1p (-Q)) / a); + x = x0; + } + else + { + double xg = gsl_cdf_ugaussian_Qinv (Q); + double x0 = (xg < -sqrt (a)) ? a : sqrt (a) * xg + a; + x = x0; + } + + /* Use Lagrange's interpolation for E(x)/phi(x0) to work backwards + to an improved value of x (Abramowitz & Stegun, 3.6.6) + + where E(x)=P-integ(phi(u),u,x0,x) and phi(u) is the pdf. + */ + + { + double lambda, dQ, phi; + + start: + dQ = Q - gsl_cdf_gamma_Q (x, a, 1.0); + phi = gsl_ran_gamma_pdf (x, a, 1.0); + + if (dQ == 0.0) + goto end; + + lambda = -dQ / GSL_MAX (2 * fabs (dQ / x), phi); + + { + double step0 = lambda; + double step1 = -((a - 1) / x - 1) * lambda * lambda / 4.0; + + double step = step0; + if (fabs (step1) < fabs (step0)) + step += step1; + + if (x + step > 0) + x += step; + else + { + x /= 2.0; + } + + if (fabs (step0) > 1e-10 * x) + goto start; + } + + } + + end: + return b * x; + } diff -x.info* -rc2P gsl-1.3/cdf/gauss.c gsl-1.4/cdf/gauss.c *** gsl-1.3/cdf/gauss.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gauss.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,351 ---- + /* cdf/gauss.c + * + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + /* + * Computes the cumulative distribution function for the Gaussian + * distribution using a rational function approximation. The + * computation is for the standard Normal distribution, i.e., mean 0 + * and standard deviation 1. If you want to compute Pr(X < t) for a + * Gaussian random variable X with non-zero mean m and standard + * deviation sd not equal to 1, find gsl_cdf_ugaussian ((t-m)/sd). + * This approximation is accurate to at least double precision. The + * accuracy was verified with a pari-gp script. The largest error + * found was about 1.4E-20. The coefficients were derived by Cody. + * + * References: + * + * W.J. Cody. "Rational Chebyshev Approximations for the Error + * Function," Mathematics of Computation, v23 n107 1969, 631-637. + * + * W. Fraser, J.F Hart. "On the Computation of Rational Approximations + * to Continuous Functions," Communications of the ACM, v5 1962. + * + * W.J. Kennedy Jr., J.E. Gentle. "Statistical Computing." Marcel Dekker. 1980. + * + * + */ + + #include + #include + #include + #include + + #ifndef M_1_SQRT2PI + #define M_1_SQRT2PI (M_2_SQRTPI * M_SQRT1_2 / 2.0) + #endif + + #define SQRT32 (4.0 * M_SQRT2) + + /* + * IEEE double precision dependent constants. + * + * GAUSS_EPSILON: Smallest positive value such that + * gsl_cdf_gaussian(x) > 0.5. + * GAUSS_XUPPER: Largest value x such that gsl_cdf_gaussian(x) < 1.0. + * GAUSS_XLOWER: Smallest value x such that gsl_cdf_gaussian(x) > 0.0. + */ + + #define GAUSS_EPSILON GSL_DBL_EPSILON / 2 + #define GAUSS_XUPPER 8.572 + #define GAUSS_XLOWER -37.519 + + #define GAUSS_SCALE 16.0 + + static double + get_del (double x, double rational) + { + double xsq = 0.0; + double del = 0.0; + double result = 0.0; + + xsq = floor (x * GAUSS_SCALE) / GAUSS_SCALE; + del = (x - xsq) * (x + xsq); + del *= 0.5; + + result = exp (-0.5 * xsq * xsq) * exp (-1.0 * del) * rational; + + return result; + } + + /* + * Normal cdf for fabs(x) < 0.66291 + */ + static double + gauss_small (const double x) + { + unsigned int i; + double result = 0.0; + double xsq; + double xnum; + double xden; + + const double a[5] = { + 2.2352520354606839287, + 161.02823106855587881, + 1067.6894854603709582, + 18154.981253343561249, + 0.065682337918207449113 + }; + const double b[4] = { + 47.20258190468824187, + 976.09855173777669322, + 10260.932208618978205, + 45507.789335026729956 + }; + + xsq = x * x; + xnum = a[4] * xsq; + xden = xsq; + + for (i = 0; i < 3; i++) + { + xnum = (xnum + a[i]) * xsq; + xden = (xden + b[i]) * xsq; + } + + result = x * (xnum + a[3]) / (xden + b[3]); + + return result; + } + + /* + * Normal cdf for 0.66291 < fabs(x) < sqrt(32). + */ + static double + gauss_medium (const double x) + { + unsigned int i; + double temp = 0.0; + double result = 0.0; + double xnum; + double xden; + double absx; + + const double c[9] = { + 0.39894151208813466764, + 8.8831497943883759412, + 93.506656132177855979, + 597.27027639480026226, + 2494.5375852903726711, + 6848.1904505362823326, + 11602.651437647350124, + 9842.7148383839780218, + 1.0765576773720192317e-8 + }; + const double d[8] = { + 22.266688044328115691, + 235.38790178262499861, + 1519.377599407554805, + 6485.558298266760755, + 18615.571640885098091, + 34900.952721145977266, + 38912.003286093271411, + 19685.429676859990727 + }; + + absx = fabs (x); + + xnum = c[8] * absx; + xden = absx; + + for (i = 0; i < 7; i++) + { + xnum = (xnum + c[i]) * absx; + xden = (xden + d[i]) * absx; + } + + temp = (xnum + c[7]) / (xden + d[7]); + + result = get_del (x, temp); + + return result; + } + + /* + * Normal cdf for + * {sqrt(32) < x < GAUSS_XUPPER} union { GAUSS_XLOWER < x < -sqrt(32) }. + */ + static double + gauss_large (const double x) + { + int i; + double result; + double xsq; + double temp; + double xnum; + double xden; + double absx; + + const double p[6] = { + 0.21589853405795699, + 0.1274011611602473639, + 0.022235277870649807, + 0.001421619193227893466, + 2.9112874951168792e-5, + 0.02307344176494017303 + }; + const double q[5] = { + 1.28426009614491121, + 0.468238212480865118, + 0.0659881378689285515, + 0.00378239633202758244, + 7.29751555083966205e-5 + }; + + absx = fabs (x); + xsq = 1.0 / (x * x); + xnum = p[5] * xsq; + xden = xsq; + + for (i = 0; i < 4; i++) + { + xnum = (xnum + p[i]) * xsq; + xden = (xden + q[i]) * xsq; + } + + temp = xsq * (xnum + p[4]) / (xden + q[4]); + temp = (M_1_SQRT2PI - temp) / absx; + + result = get_del (x, temp); + + return result; + } + + double + gsl_cdf_ugaussian_P (const double x) + { + double result; + double absx = fabs (x); + + if (absx < GAUSS_EPSILON) + { + result = 0.5; + return result; + } + else if (absx < 0.66291) + { + result = 0.5 + gauss_small (x); + return result; + } + else if (absx < SQRT32) + { + result = gauss_medium (x); + + if (x > 0.0) + { + result = 1.0 - result; + } + + return result; + } + else if (x > GAUSS_XUPPER) + { + result = 1.0; + return result; + } + else if (x < GAUSS_XLOWER) + { + result = 0.0; + return result; + } + else + { + result = gauss_large (x); + + if (x > 0.0) + { + result = 1.0 - result; + } + } + + return result; + } + + double + gsl_cdf_ugaussian_Q (const double x) + { + double result; + double absx = fabs (x); + + if (absx < GAUSS_EPSILON) + { + result = 0.5; + return result; + } + else if (absx < 0.66291) + { + result = gauss_small (x); + + if (x < 0.0) + { + result = fabs (result) + 0.5; + } + else + { + result = 0.5 - result; + } + + return result; + } + else if (absx < SQRT32) + { + result = gauss_medium (x); + + if (x < 0.0) + { + result = 1.0 - result; + } + + return result; + } + else if (x > (-GAUSS_XLOWER)) + { + result = 0.0; + return result; + } + else if (x < (-GAUSS_XUPPER)) + { + result = 1.0; + return result; + } + else + { + result = gauss_large (x); + + if (x < 0.0) + { + result = 1.0 - result; + } + + } + + return result; + } + + double + gsl_cdf_gaussian_P (const double x, const double sigma) + { + return gsl_cdf_ugaussian_P (x / sigma); + } + + double + gsl_cdf_gaussian_Q (const double x, const double sigma) + { + return gsl_cdf_ugaussian_Q (x / sigma); + } diff -x.info* -rc2P gsl-1.3/cdf/gaussinv.c gsl-1.4/cdf/gaussinv.c *** gsl-1.3/cdf/gaussinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gaussinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,202 ---- + /* cdf/inverse_normal.c + * + * Copyright (C) 2002 Przemyslaw Sliwa and Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + /* + * Computes the inverse normal cumulative distribution function + * according to the algorithm shown in + * + * Wichura, M.J. (1988). + * Algorithm AS 241: The Percentage Points of the Normal Distribution. + * Applied Statistics, 37, 477-484. + */ + + #include + #include + #include + #include + + #include "rat_eval.h" + + static double + small (double q) + { + const double a[8] = { 3.387132872796366608, 133.14166789178437745, + 1971.5909503065514427, 13731.693765509461125, + 45921.953931549871457, 67265.770927008700853, + 33430.575583588128105, 2509.0809287301226727 + }; + + const double b[8] = { 1.0, 42.313330701600911252, + 687.1870074920579083, 5394.1960214247511077, + 21213.794301586595867, 39307.89580009271061, + 28729.085735721942674, 5226.495278852854561 + }; + + double r = 0.180625 - q * q; + + double x = q * rat_eval (a, 8, b, 8, r); + + return x; + } + + static double + intermediate (double r) + { + const double a[] = { 1.42343711074968357734, 4.6303378461565452959, + 5.7694972214606914055, 3.64784832476320460504, + 1.27045825245236838258, 0.24178072517745061177, + 0.0227238449892691845833, 7.7454501427834140764e-4 + }; + + const double b[] = { 1.0, 2.05319162663775882187, + 1.6763848301838038494, 0.68976733498510000455, + 0.14810397642748007459, 0.0151986665636164571966, + 5.475938084995344946e-4, 1.05075007164441684324e-9 + }; + + double x = rat_eval (a, 8, b, 8, (r - 1.6)); + + return x; + } + + static double + tail (double r) + { + const double a[] = { 6.6579046435011037772, 5.4637849111641143699, + 1.7848265399172913358, 0.29656057182850489123, + 0.026532189526576123093, 0.0012426609473880784386, + 2.71155556874348757815e-5, 2.01033439929228813265e-7 + }; + + const double b[] = { 1.0, 0.59983220655588793769, + 0.13692988092273580531, 0.0148753612908506148525, + 7.868691311456132591e-4, 1.8463183175100546818e-5, + 1.4215117583164458887e-7, 2.04426310338993978564e-15 + }; + + double x = rat_eval (a, 8, b, 8, (r - 5.0)); + + return x; + } + + double + gsl_cdf_ugaussian_Pinv (const double P) + { + double r, x, pp; + + double dP = P - 0.5; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (fabs (dP) <= 0.425) + { + x = small (dP); + + return x; + } + + pp = (P < 0.5) ? P : 1.0 - P; + + r = sqrt (-log (pp)); + + if (r <= 5.0) + { + x = intermediate (r); + } + else + { + x = tail (r); + } + + if (P < 0.5) + { + return -x; + } + else + { + return x; + } + + } + + double + gsl_cdf_ugaussian_Qinv (const double Q) + { + double r, x, pp; + + double dQ = Q - 0.5; + + if (Q == 1.0) + { + return GSL_NEGINF; + } + else if (Q == 0.0) + { + return GSL_POSINF; + } + + if (fabs (dQ) <= 0.425) + { + x = small (dQ); + + return -x; + } + + pp = (Q < 0.5) ? Q : 1.0 - Q; + + r = sqrt (-log (pp)); + + if (r <= 5.0) + { + x = intermediate (r); + } + else + { + x = tail (r); + } + + if (Q < 0.5) + { + return x; + } + else + { + return -x; + } + } + + + double + gsl_cdf_gaussian_Pinv (const double P, const double sigma) + { + return sigma * gsl_cdf_ugaussian_Pinv (P); + } + + double + gsl_cdf_gaussian_Qinv (const double Q, const double sigma) + { + return sigma * gsl_cdf_ugaussian_Qinv (Q); + } diff -x.info* -rc2P gsl-1.3/cdf/gsl_cdf.h gsl-1.4/cdf/gsl_cdf.h *** gsl-1.3/cdf/gsl_cdf.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gsl_cdf.h Fri Jul 25 15:18:17 2003 *************** *** 0 **** --- 1,141 ---- + /* cdf/gsl_cdf.h + * + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + /* Author: J. Stover */ + + #ifndef __GSL_CDF_H__ + #define __GSL_CDF_H__ + + #undef __BEGIN_DECLS + #undef __END_DECLS + #ifdef __cplusplus + # define __BEGIN_DECLS extern "C" { + # define __END_DECLS } + #else + # define __BEGIN_DECLS /* empty */ + # define __END_DECLS /* empty */ + #endif + + __BEGIN_DECLS + + double gsl_cdf_ugaussian_P (const double x); + double gsl_cdf_ugaussian_Q (const double x); + + double gsl_cdf_ugaussian_Pinv (const double P); + double gsl_cdf_ugaussian_Qinv (const double Q); + + double gsl_cdf_gaussian_P (const double x, const double sigma); + double gsl_cdf_gaussian_Q (const double x, const double sigma); + + double gsl_cdf_gaussian_Pinv (const double P, const double sigma); + double gsl_cdf_gaussian_Qinv (const double Q, const double sigma); + + double gsl_cdf_gamma_P (const double x, const double a, const double b); + double gsl_cdf_gamma_Q (const double x, const double a, const double b); + + double gsl_cdf_gamma_Pinv (const double P, const double a, const double b); + double gsl_cdf_gamma_Qinv (const double Q, const double a, const double b); + + double gsl_cdf_cauchy_P (const double x, const double a); + double gsl_cdf_cauchy_Q (const double x, const double a); + + double gsl_cdf_cauchy_Pinv (const double P, const double a); + double gsl_cdf_cauchy_Qinv (const double Q, const double a); + + double gsl_cdf_laplace_P (const double x, const double a); + double gsl_cdf_laplace_Q (const double x, const double a); + + double gsl_cdf_laplace_Pinv (const double P, const double a); + double gsl_cdf_laplace_Qinv (const double Q, const double a); + + double gsl_cdf_rayleigh_P (const double x, const double sigma); + double gsl_cdf_rayleigh_Q (const double x, const double sigma); + + double gsl_cdf_rayleigh_Pinv (const double P, const double sigma); + double gsl_cdf_rayleigh_Qinv (const double Q, const double sigma); + + double gsl_cdf_chisq_P (const double x, const double nu); + double gsl_cdf_chisq_Q (const double x, const double nu); + + double gsl_cdf_chisq_Pinv (const double P, const double nu); + double gsl_cdf_chisq_Qinv (const double Q, const double nu); + + double gsl_cdf_exponential_P (const double x, const double mu); + double gsl_cdf_exponential_Q (const double x, const double mu); + + double gsl_cdf_exponential_Pinv (const double P, const double mu); + double gsl_cdf_exponential_Qinv (const double Q, const double mu); + + double gsl_cdf_tdist_P (const double x, const double nu); + double gsl_cdf_tdist_Q (const double x, const double nu); + + double gsl_cdf_tdist_Pinv (const double P, const double nu); + double gsl_cdf_tdist_Qinv (const double Q, const double nu); + + double gsl_cdf_fdist_P (const double x, const double nu1, const double nu2); + double gsl_cdf_fdist_Q (const double x, const double nu1, const double nu2); + + double gsl_cdf_beta_P (const double x, const double a, const double b); + double gsl_cdf_beta_Q (const double x, const double a, const double b); + + double gsl_cdf_flat_P (const double x, const double a, const double b); + double gsl_cdf_flat_Q (const double x, const double a, const double b); + + double gsl_cdf_flat_Pinv (const double P, const double a, const double b); + double gsl_cdf_flat_Qinv (const double Q, const double a, const double b); + + double gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma); + double gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma); + + double gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma); + double gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma); + + double gsl_cdf_gumbel1_P (const double x, const double a, const double b); + double gsl_cdf_gumbel1_Q (const double x, const double a, const double b); + + double gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b); + double gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b); + + double gsl_cdf_gumbel2_P (const double x, const double a, const double b); + double gsl_cdf_gumbel2_Q (const double x, const double a, const double b); + + double gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b); + double gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b); + + double gsl_cdf_weibull_P (const double x, const double a, const double b); + double gsl_cdf_weibull_Q (const double x, const double a, const double b); + + double gsl_cdf_weibull_Pinv (const double P, const double a, const double b); + double gsl_cdf_weibull_Qinv (const double Q, const double a, const double b); + + double gsl_cdf_pareto_P (const double x, const double a, const double b); + double gsl_cdf_pareto_Q (const double x, const double a, const double b); + + double gsl_cdf_pareto_Pinv (const double P, const double a, const double b); + double gsl_cdf_pareto_Qinv (const double Q, const double a, const double b); + + double gsl_cdf_logistic_P (const double x, const double a); + double gsl_cdf_logistic_Q (const double x, const double a); + + double gsl_cdf_logistic_Pinv (const double P, const double a); + double gsl_cdf_logistic_Qinv (const double Q, const double a); + + __END_DECLS + + #endif /* __GSL_CDF_H__ */ diff -x.info* -rc2P gsl-1.3/cdf/gumbel1.c gsl-1.4/cdf/gumbel1.c *** gsl-1.3/cdf/gumbel1.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gumbel1.c Sun Jul 27 19:43:08 2003 *************** *** 0 **** --- 1,49 ---- + /* cdf/gumbel1.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_gumbel1_P (const double x, const double a, const double b) + { + double P = pow(exp (-b), exp (-a * x)); + return P; + } + + double + gsl_cdf_gumbel1_Q (const double x, const double a, const double b) + { + double u = exp (-a * x); + double Q; + double P = pow(exp (-b), u); + + if (P < 0.5) + { + Q = 1 - P; + } + else + { + Q = -expm1 (-b * u); + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/gumbel1inv.c gsl-1.4/cdf/gumbel1inv.c *** gsl-1.3/cdf/gumbel1inv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gumbel1inv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,61 ---- + /* cdf/gumbel1inv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_gumbel1_Pinv (const double P, const double a, const double b) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + x = log(-b / log(P)) / a; + + return x; + } + + double + gsl_cdf_gumbel1_Qinv (const double Q, const double a, const double b) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + x = log(-b / log1p(-Q)) / a; + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/gumbel2.c gsl-1.4/cdf/gumbel2.c *** gsl-1.3/cdf/gumbel2.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gumbel2.c Sun Jul 27 17:15:32 2003 *************** *** 0 **** --- 1,59 ---- + /* cdf/gumbel2.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_gumbel2_P (const double x, const double a, const double b) + { + double P; + + if (x == 0) + { + P = 0; + } + else + { + double u = pow (x, a); + P = exp (-b / u); + } + + return P; + } + + double + gsl_cdf_gumbel2_Q (const double x, const double a, const double b) + { + double Q; + + if (x == 0) + { + Q = 1; + } + else + { + double u = pow (x, a); + Q = -expm1 (-b / u); + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/gumbel2inv.c gsl-1.4/cdf/gumbel2inv.c *** gsl-1.3/cdf/gumbel2inv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/gumbel2inv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,61 ---- + /* cdf/gumbel2inv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_gumbel2_Pinv (const double P, const double a, const double b) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + x = pow(b / (-log(P)), 1/a); + + return x; + } + + double + gsl_cdf_gumbel2_Qinv (const double Q, const double a, const double b) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + x = pow(b / (-log1p(-Q)), 1/a); + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/laplace.c gsl-1.4/cdf/laplace.c *** gsl-1.3/cdf/laplace.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/laplace.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,59 ---- + /* cdf/laplace.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_laplace_P (const double x, const double a) + { + double P; + double u = x / a; + + if (u > 0) + { + P = 0.5 + 0.5*(1 - exp(-u)) ; + } + else + { + P = 0.5 * exp(u); + } + + return P; + } + + double + gsl_cdf_laplace_Q (const double x, const double a) + { + double Q; + double u = x / a; + + if (u > 0) + { + Q = 0.5 * exp(-u); + } + else + { + Q = 1 - 0.5 *exp(u); + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/laplaceinv.c gsl-1.4/cdf/laplaceinv.c *** gsl-1.3/cdf/laplaceinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/laplaceinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,75 ---- + /* cdf/laplaceinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_laplace_Pinv (const double P, const double a) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (P < 0.5) + { + x = a * log(2*P); + } + else + { + x = -a * log(2*(1-P)); + } + + return x; + } + + double + gsl_cdf_laplace_Qinv (const double Q, const double a) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + if (Q < 0.5) + { + x = -a * log(2*Q); + } + else + { + x = a * log(2*(1-Q)); + } + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/logistic.c gsl-1.4/cdf/logistic.c *** gsl-1.3/cdf/logistic.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/logistic.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,59 ---- + /* cdf/logistic.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_logistic_P (const double x, const double a) + { + double P; + double u = x / a; + + if (u >= 0) + { + P = 1 / (1 + exp (-u)); + } + else + { + P = exp (u) / (1 + exp (u)); + } + + return P; + } + + double + gsl_cdf_logistic_Q (const double x, const double a) + { + double Q; + double u = x / a; + + if (u >= 0) + { + Q = exp (-u) / (1 + exp (-u)); + } + else + { + Q = 1 / (1 + exp (u)); + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/logisticinv.c gsl-1.4/cdf/logisticinv.c *** gsl-1.3/cdf/logisticinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/logisticinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,61 ---- + /* cdf/logisticinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_logistic_Pinv (const double P, const double a) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + x = a * log(P/(1-P)); + + return x; + } + + double + gsl_cdf_logistic_Qinv (const double Q, const double a) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + x = a * log((1-Q)/Q); + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/lognormal.c gsl-1.4/cdf/lognormal.c *** gsl-1.3/cdf/lognormal.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/lognormal.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,39 ---- + /* cdf/lognormal.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_lognormal_P (const double x, const double zeta, const double sigma) + { + double u = (log (x) - zeta) / sigma; + double P = gsl_cdf_ugaussian_P (u); + return P; + } + + double + gsl_cdf_lognormal_Q (const double x, const double zeta, const double sigma) + { + double u = (log (x) - zeta) / sigma; + double Q = gsl_cdf_ugaussian_Q (u); + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/lognormalinv.c gsl-1.4/cdf/lognormalinv.c *** gsl-1.3/cdf/lognormalinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/lognormalinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,65 ---- + /* cdf/lognormalinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_lognormal_Pinv (const double P, const double zeta, const double sigma) + { + double x, u; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + u = gsl_cdf_ugaussian_Pinv (P); + + x = exp (zeta + sigma * u); + + return x; + } + + double + gsl_cdf_lognormal_Qinv (const double Q, const double zeta, const double sigma) + { + double x, u; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + u = gsl_cdf_ugaussian_Qinv (Q); + + x = exp (zeta + sigma * u); + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/pareto.c gsl-1.4/cdf/pareto.c *** gsl-1.3/cdf/pareto.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/pareto.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,57 ---- + /* cdf/pareto.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_pareto_P (const double x, const double a, const double b) + { + double P; + + if (x < b) + { + P = 0; + } + else + { + P = 1 - pow(b/x, a); + } + + return P; + } + + double + gsl_cdf_pareto_Q (const double x, const double a, const double b) + { + double Q; + + if (x < b) + { + Q = 1; + } + else + { + Q = pow(b/x, a); + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/paretoinv.c gsl-1.4/cdf/paretoinv.c *** gsl-1.3/cdf/paretoinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/paretoinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,61 ---- + /* cdf/paretoinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_pareto_Pinv (const double P, const double a, const double b) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return b; + } + + x = b * exp(-log1p(-P)/a); + + return x; + } + + double + gsl_cdf_pareto_Qinv (const double Q, const double a, const double b) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return b; + } + + x = b * exp(-log(Q) / a); + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/rat_eval.h gsl-1.4/cdf/rat_eval.h *** gsl-1.3/cdf/rat_eval.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/rat_eval.h Fri Jul 25 15:18:17 2003 *************** *** 0 **** --- 1,25 ---- + static double + rat_eval (const double a[], const size_t na, + const double b[], const size_t nb, const double x) + { + size_t i, j; + double u, v, r; + + u = a[na - 1]; + + for (i = na - 1; i > 0; i--) + { + u = x * u + a[i - 1]; + } + + v = b[nb - 1]; + + for (j = nb - 1; j > 0; j--) + { + v = x * v + b[j - 1]; + } + + r = u / v; + + return r; + } diff -x.info* -rc2P gsl-1.3/cdf/rayleigh.c gsl-1.4/cdf/rayleigh.c *** gsl-1.3/cdf/rayleigh.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/rayleigh.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,39 ---- + /* cdf/rayleigh.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_rayleigh_P (const double x, const double sigma) + { + double u = x / sigma; + double P = -expm1 (-u*u/2); + return P; + } + + double + gsl_cdf_rayleigh_Q (const double x, const double sigma) + { + double u = x / sigma; + double Q = exp (-u*u/2); + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/rayleighinv.c gsl-1.4/cdf/rayleighinv.c *** gsl-1.3/cdf/rayleighinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/rayleighinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,61 ---- + /* cdf/rayleighinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_rayleigh_Pinv (const double P, const double sigma) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + x = sigma * M_SQRT2 * sqrt (-log1p (-P)); + + return x; + } + + double + gsl_cdf_rayleigh_Qinv (const double Q, const double sigma) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + x = sigma * M_SQRT2 * sqrt (-log (Q)); + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/tdist.c gsl-1.4/cdf/tdist.c *** gsl-1.3/cdf/tdist.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/tdist.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,271 ---- + /* cdf/tdist.c + * + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + /* + * Computes the Student's t cumulative distribution function using + * the method detailed in + * + * W.J. Kennedy and J.E. Gentle, "Statistical Computing." 1980. + * Marcel Dekker. ISBN 0-8247-6898-1. + * + * G.W. Hill and A.W. Davis. "Generalized asymptotic expansions + * of Cornish-Fisher type." Annals of Mathematical Statistics, + * vol. 39, 1264-1273. 1968. + * + * G.W. Hill. "Algorithm 395: Student's t-distribution," Communications + * of the ACM, volume 13, number 10, page 617. October 1970. + * + * G.W. Hill, "Remark on algorithm 395: Student's t-distribution," + * Transactions on Mathematical Software, volume 7, number 2, page + * 247. June 1982. + */ + + #include + #include + #include + #include + #include + + #include "beta_inc.c" + + static double + poly_eval (const double c[], unsigned int n, double x) + { + unsigned int i; + double y = c[0] * x; + + for (i = 1; i < n; i++) + { + y = x * (y + c[i]); + } + + y += c[n]; + + return y; + } + + /* + * Use the Cornish-Fisher asymptotic expansion to find a point u such + * that gsl_cdf_gauss(y) = tcdf(t). + * + */ + + static double + cornish_fisher (double t, double n) + { + const double coeffs6[10] = { + 0.265974025974025974026, + 5.449696969696969696970, + 122.20294372294372294372, + 2354.7298701298701298701, + 37625.00902597402597403, + 486996.1392857142857143, + 4960870.65, + 37978595.55, + 201505390.875, + 622437908.625 + }; + const double coeffs5[8] = { + 0.2742857142857142857142, + 4.499047619047619047619, + 78.45142857142857142857, + 1118.710714285714285714, + 12387.6, + 101024.55, + 559494.0, + 1764959.625 + }; + const double coeffs4[6] = { + 0.3047619047619047619048, + 3.752380952380952380952, + 46.67142857142857142857, + 427.5, + 2587.5, + 8518.5 + }; + const double coeffs3[4] = { + 0.4, + 3.3, + 24.0, + 85.5 + }; + + double a = n - 0.5; + double b = 48.0 * a * a; + + double z2 = a * log1p (t * t / n); + double z = sqrt (z2); + + double p5 = z * poly_eval (coeffs6, 9, z2); + double p4 = -z * poly_eval (coeffs5, 7, z2); + double p3 = z * poly_eval (coeffs4, 5, z2); + double p2 = -z * poly_eval (coeffs3, 3, z2); + double p1 = z * (z2 + 3.0); + double p0 = z; + + double y = p5; + y = (y / b) + p4; + y = (y / b) + p3; + y = (y / b) + p2; + y = (y / b) + p1; + y = (y / b) + p0; + + if (t < 0) + y *= -1; + + return y; + } + + #if 0 + /* + * Series approximation for t > 4.0. This needs to be fixed; + * it shouldn't subtract the result from 1.0. A better way is + * to use two different series expansions. Figuring this out + * means rummaging through Fisher's paper in Metron, v5, 1926, + * "Expansion of Student's integral in powers of n^{-1}." + */ + + #define MAXI 40 + + static double + normal_approx (const double x, const double nu) + { + double y; + double num; + double diff; + double q; + int i; + double lg1, lg2; + + y = 1 / sqrt (1 + x * x / nu); + num = 1.0; + q = 0.0; + diff = 2 * GSL_DBL_EPSILON; + for (i = 2; (i < MAXI) && (diff > GSL_DBL_EPSILON); i += 2) + { + diff = q; + num *= y * y * (i - 1) / i; + q += num / (nu + i); + diff = q - diff; + } + q += 1 / nu; + lg1 = gsl_sf_lngamma (nu / 2.0); + lg2 = gsl_sf_lngamma ((nu + 1.0) / 2.0); + + diff = lg2 - lg1; + q *= pow (y, nu) * exp (diff) / sqrt (M_PI); + + return q; + } + #endif + + double + gsl_cdf_tdist_P (const double x, const double nu) + { + double P; + + double x2 = x * x; + + if (nu > 30 && x2 < 10 * nu) + { + double u = cornish_fisher (x, nu); + P = gsl_cdf_ugaussian_P (u); + + return P; + } + + if (x2 < nu) + { + double u = x2 / nu; + double eps = u / (1 + u); + + if (x >= 0) + { + P = beta_inc_AXPY (0.5, 0.5, 0.5, nu / 2.0, eps); + } + else + { + P = beta_inc_AXPY (-0.5, 0.5, 0.5, nu / 2.0, eps); + } + } + else + { + double v = nu / (x * x); + double eps = v / (1 + v); + + if (x >= 0) + { + P = beta_inc_AXPY (-0.5, 1.0, nu / 2.0, 0.5, eps); + } + else + { + P = beta_inc_AXPY (0.5, 0.0, nu / 2.0, 0.5, eps); + } + } + + return P; + } + + + double + gsl_cdf_tdist_Q (const double x, const double nu) + { + double Q; + + double x2 = x * x; + + if (nu > 30 && x2 < 10 * nu) + { + double u = cornish_fisher (x, nu); + Q = gsl_cdf_ugaussian_Q (u); + + return Q; + } + + if (x2 < nu) + { + double u = x2 / nu; + double eps = u / (1 + u); + + if (x >= 0) + { + Q = beta_inc_AXPY (-0.5, 0.5, 0.5, nu / 2.0, eps); + } + else + { + Q = beta_inc_AXPY (0.5, 0.5, 0.5, nu / 2.0, eps); + } + } + else + { + double v = nu / (x * x); + double eps = v / (1 + v); + + if (x >= 0) + { + Q = beta_inc_AXPY (0.5, 0.0, nu / 2.0, 0.5, eps); + } + else + { + Q = beta_inc_AXPY (-0.5, 1.0, nu / 2.0, 0.5, eps); + } + } + + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/tdistinv.c gsl-1.4/cdf/tdistinv.c *** gsl-1.3/cdf/tdistinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/tdistinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,230 ---- + /* cdf/tdistinv.c + * + * Copyright (C) 2002 Jason H. Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + #include + #include + #include + + #include + + static double + inv_cornish_fisher (double z, double nu) + { + double a = 1 / (nu - 0.5); + double b = 48.0 / (a * a); + + double cf1 = z * (3 + z * z); + double cf2 = z * (945 + z * z * (360 + z * z * (63 + z * z * 4))); + + double y = z - cf1 / b + cf2 / (10 * b * b); + + double t = GSL_SIGN (z) * sqrt (nu * expm1 (a * y * y)); + + return t; + } + + + double + gsl_cdf_tdist_Pinv (const double P, const double nu) + { + double x, ptail; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return GSL_NEGINF; + } + + if (nu == 1.0) + { + x = tan (M_PI * (P - 0.5)); + } + else if (nu == 2.0) + { + double a = 2 * P - 1; + x = a / sqrt (2 * (1 - a * a)); + } + + ptail = (P < 0.5) ? P : 1 - P; + + if (sqrt (M_PI * nu / 2) * ptail > pow (0.05, nu / 2)) + { + double xg = gsl_cdf_ugaussian_Pinv (P); + x = inv_cornish_fisher (xg, nu); + } + else + { + /* Use an asymptotic expansion of the tail of integral */ + + double beta = gsl_sf_beta (0.5, nu / 2); + + if (P < 0.5) + { + x = -sqrt (nu) * pow (beta * nu * P, -1.0 / nu); + } + else + { + x = sqrt (nu) * pow (beta * nu * (1 - P), -1.0 / nu); + } + + /* Correct nu -> nu/(1+nu/x^2) in the leading term to account + for higher order terms. This avoids overestimating x, which + makes the iteration unstable due to the rapidly decreasing + tails of the distribution. */ + + x /= sqrt (1 + nu / (x * x)); + } + + { + double dP, phi; + + start: + dP = P - gsl_cdf_tdist_P (x, nu); + phi = gsl_ran_tdist_pdf (x, nu); + + if (dP == 0.0) + goto end; + + { + double lambda = dP / phi; + double step0 = lambda; + double step1 = ((nu + 1) * x / (x * x + nu)) * (lambda * lambda / 4.0); + + double step = step0; + + if (fabs (step1) < fabs (step0)) + { + step += step1; + } + + if (P > 0.5 && x + step < 0) + x /= 2; + else if (P < 0.5 && x + step > 0) + x /= 2; + else + x += step; + + if (fabs (step) > 1e-10 * fabs (x)) + goto start; + } + } + + end: + + return x; + } + + double + gsl_cdf_tdist_Qinv (const double Q, const double nu) + { + double x, qtail; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return GSL_NEGINF; + } + + if (nu == 1.0) + { + x = tan (M_PI * (0.5 - Q)); + } + else if (nu == 2.0) + { + double a = 2 * (1 - Q) - 1; + x = a / sqrt (2 * (1 - a * a)); + } + + qtail = (Q < 0.5) ? Q : 1 - Q; + + if (sqrt (M_PI * nu / 2) * qtail > pow (0.05, nu / 2)) + { + double xg = gsl_cdf_ugaussian_Qinv (Q); + x = inv_cornish_fisher (xg, nu); + } + else + { + /* Use an asymptotic expansion of the tail of integral */ + + double beta = gsl_sf_beta (0.5, nu / 2); + + if (Q < 0.5) + { + x = sqrt (nu) * pow (beta * nu * Q, -1.0 / nu); + } + else + { + x = -sqrt (nu) * pow (beta * nu * (1 - Q), -1.0 / nu); + } + + /* Correct nu -> nu/(1+nu/x^2) in the leading term to account + for higher order terms. This avoids overestimating x, which + makes the iteration unstable due to the rapidly decreasing + tails of the distribution. */ + + x /= sqrt (1 + nu / (x * x)); + } + + { + double dQ, phi; + + start: + dQ = Q - gsl_cdf_tdist_Q (x, nu); + phi = gsl_ran_tdist_pdf (x, nu); + + if (dQ == 0.0) + goto end; + + { + double lambda = - dQ / phi; + double step0 = lambda; + double step1 = ((nu + 1) * x / (x * x + nu)) * (lambda * lambda / 4.0); + + double step = step0; + + if (fabs (step1) < fabs (step0)) + { + step += step1; + } + + if (Q < 0.5 && x + step < 0) + x /= 2; + else if (Q > 0.5 && x + step > 0) + x /= 2; + else + x += step; + + if (fabs (step) > 1e-10 * fabs (x)) + goto start; + } + } + + end: + + return x; + } diff -x.info* -rc2P gsl-1.3/cdf/test.c gsl-1.4/cdf/test.c *** gsl-1.3/cdf/test.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/test.c Wed Aug 13 08:25:52 2003 *************** *** 0 **** --- 1,884 ---- + /* cdf/test.c + * + * Copyright (C) 2002 Jason H Stover. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + + #include + #include + #include + #include + #include + #include + #include + #include + + #define TEST(func, args, value, tol) { double res = func args ; gsl_test_rel (res, value, tol, #func #args); } ; + + #define TEST_TOL0 (2.0*GSL_DBL_EPSILON) + #define TEST_TOL1 (16.0*GSL_DBL_EPSILON) + #define TEST_TOL2 (256.0*GSL_DBL_EPSILON) + #define TEST_TOL3 (2048.0*GSL_DBL_EPSILON) + #define TEST_TOL4 (16384.0*GSL_DBL_EPSILON) + #define TEST_TOL5 (131072.0*GSL_DBL_EPSILON) + #define TEST_TOL6 (1048576.0*GSL_DBL_EPSILON) + + void test_ugaussian (void); + void test_ugaussianinv (void); + void test_exponential (void); + void test_exponentialinv (void); + void test_tdist (void); + void test_fdist (void); + void test_gamma (void); + void test_chisq (void); + void test_beta (void); + void test_gammainv (void); + void test_chisqinv (void); + void test_tdistinv (void); + + #include "test_auto.c" + + int + main (void) + { + gsl_ieee_env_setup (); + + /* Tests for gaussian cumulative distribution function + Function values computed with PARI, 28 digits precision */ + + test_ugaussian (); + test_exponential (); + test_tdist (); + test_fdist (); + test_gamma (); + test_chisq (); + test_beta (); + + test_ugaussianinv (); + test_exponentialinv (); + test_gammainv (); + test_chisqinv (); + test_tdistinv (); + + test_auto_beta (); + test_auto_fdist (); + test_auto_cauchy (); + test_auto_gaussian (); + test_auto_laplace (); + test_auto_rayleigh (); + test_auto_flat (); + test_auto_lognormal (); + test_auto_gamma (); + test_auto_chisq (); + test_auto_tdist (); + test_auto_gumbel1 (); + test_auto_gumbel2 (); + test_auto_weibull (); + test_auto_pareto (); + test_auto_logistic (); + test_auto_gammalarge (); + + exit (gsl_test_summary ()); + } + + void test_ugaussian (void) + { + TEST (gsl_cdf_ugaussian_P, (0.0), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e-16), 0.5000000000000000398942280401, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e-8), 0.5000000039894228040143267129, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (0.5), 0.6914624612740131036377046105, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (0.7), 0.7580363477769269852506495717, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (5.0), 0.9999997133484281208060883262, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (10.0), 0.9999999999999999999999923801, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (30.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (40.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (1e10), 1.000000000000000000000000000, TEST_TOL0); + + TEST (gsl_cdf_ugaussian_P, (-1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-1e-16), 0.4999999999999999601057719598, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-1e-8), 0.4999999960105771959856732870, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-0.5), 0.3085375387259868963622953894, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-0.7), 0.2419636522230730147493504282, TEST_TOL0); + TEST (gsl_cdf_ugaussian_P, (-5.0), 0.0000002866515718791939116737523329, TEST_TOL1); + TEST (gsl_cdf_ugaussian_P, (-10.0), 7.619853024160526065973343257e-24, TEST_TOL3); + TEST (gsl_cdf_ugaussian_P, (-30.0), 4.906713927148187059533809288e-198, TEST_TOL3); + TEST (gsl_cdf_ugaussian_P, (-40.0), 3.655893540915029703748985850e-350, TEST_TOL3); + TEST (gsl_cdf_ugaussian_P, (-1e10), 0.0, 0.0); + + TEST (gsl_cdf_ugaussian_Q, (0.0), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (1e-16), 0.4999999999999999601057719598, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (1e-8), 0.4999999960105771959856732870, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (0.5), 0.3085375387259868963622953894, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (0.7), 0.2419636522230730147493504282, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (5.0), 0.0000002866515718791939116737523329, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (10.0), 7.619853024160526065973343257e-24, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (30.0), 4.906713927148187059533809288e-198, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (40.0), 3.655893540915029703748985850e-350, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Q, (1e10), 0.0, 0.0); + + TEST (gsl_cdf_ugaussian_Q, (-1e-32), 0.5, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-1e-16), 0.5000000000000000398942280401, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-1e-8), 0.5000000039894228040143267129, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-0.5), 0.6914624612740131036377046105, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-0.7), 0.7580363477769269852506495717, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-5.0), 0.9999997133484281208060883262, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-10.0), 0.9999999999999999999999923801, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-30.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-40.0), 1.000000000000000000000000000, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Q, (-1e10), 1.000000000000000000000000000, TEST_TOL0); + } + /* Test values from Abramowitz & Stegun, Handbook of Mathematical + Functions, Table 26.1. Error term is given by dx = dP / Z(x) */ + + void test_ugaussianinv (void) { + TEST (gsl_cdf_ugaussian_Pinv, (0.9999997133), 5.0, 1e-4); + TEST (gsl_cdf_ugaussian_Pinv, (0.9999683288), 4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Pinv, (0.9986501020), 3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Pinv, (0.977249868051821), 2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Pinv, (0.841344746068543), 1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Pinv, (0.691462461274013), 0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Pinv, (0.655421741610324), 0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.617911422188953), 0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.579259709439103), 0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.539827837277029), 0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (0.5), 0.0, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Pinv, (4.60172162722971e-1), -0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (4.20740290560897e-1), -0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (3.82088577811047e-1), -0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (3.44578258389676e-1), -0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Pinv, (3.08537538725987e-1), -0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Pinv, (1.58655253931457e-1), -1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Pinv, (2.2750131948179e-2), -2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Pinv, (1.349898e-3), -3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Pinv, (3.16712e-5), -4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Pinv, (2.86648e-7), -5.0, 1e-4); + + TEST (gsl_cdf_ugaussian_Pinv, (7.61985302416052e-24), -10.0, 1e-4); + + TEST (gsl_cdf_ugaussian_Qinv, (7.61985302416052e-24), 10.0, 1e-4); + + TEST (gsl_cdf_ugaussian_Qinv, (2.86648e-7), 5.0, 1e-4); + TEST (gsl_cdf_ugaussian_Qinv, (3.16712e-5), 4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Qinv, (1.349898e-3), 3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Qinv, (2.2750131948179e-2), 2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Qinv, (1.58655253931457e-1), 1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Qinv, (3.08537538725987e-1), 0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Qinv, (3.44578258389676e-1), 0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (3.82088577811047e-1), 0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (4.20740290560897e-1), 0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (4.60172162722971e-1), 0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.5), 0.0, TEST_TOL0); + TEST (gsl_cdf_ugaussian_Qinv, (0.539827837277029), -0.1, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.579259709439103), -0.2, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.617911422188953), -0.3, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.655421741610324), -0.4, TEST_TOL1); + TEST (gsl_cdf_ugaussian_Qinv, (0.691462461274013), -0.5, TEST_TOL2); + TEST (gsl_cdf_ugaussian_Qinv, (0.841344746068543), -1.0, TEST_TOL3); + TEST (gsl_cdf_ugaussian_Qinv, (0.977249868051821), -2.0, 1e-14); + TEST (gsl_cdf_ugaussian_Qinv, (0.9986501020), -3.0, 1e-8); + TEST (gsl_cdf_ugaussian_Qinv, (0.9999683288), -4.0, 1e-6); + TEST (gsl_cdf_ugaussian_Qinv, (0.9999997133), -5.0, 1e-4); + } + + + /* Tests for exponential cumulative distribution function + Function values computed with PARI, 28 digits precision */ + + void test_exponential (void) + { + TEST (gsl_cdf_exponential_P, (0.1, 0.7), 1.33122100249818372e-1, TEST_TOL0); + TEST (gsl_cdf_exponential_P, (1e-32, 0.7), 1.42857142857142857e-32, TEST_TOL0); + TEST (gsl_cdf_exponential_P, (1000.0, 0.7), 1.0, TEST_TOL6); + + TEST (gsl_cdf_exponential_Q, (0.1, 0.7), 8.66877899750181628e-1, TEST_TOL0); + TEST (gsl_cdf_exponential_Q, (1e-32, 0.7), 1.0, TEST_TOL0); + TEST (gsl_cdf_exponential_Q, (1000.0, 0.7), 0.0, TEST_TOL6); + } + + void test_exponentialinv (void) { + TEST (gsl_cdf_exponential_Pinv, (0.13, 0.7), 9.74834471334553546e-2, TEST_TOL0); + TEST (gsl_cdf_exponential_Pinv, (1.42e-32, 0.7), 9.94000000000000000e-33, TEST_TOL0); + + TEST (gsl_cdf_exponential_Qinv, (0.86, 0.7), 1.05576022814208545e-1, TEST_TOL0); + TEST (gsl_cdf_exponential_Qinv, (0.99999, 0.7), 7.00003500023333508e-6, TEST_TOL6); + } + + /* Tests for student's T distribution */ + + /* p(x,nu) = (1/2)*(1+sign(x)*betaI(x^2/(nu+x^2),1/2,nu/2)) + q(x,nu) = (1/2)*(1-sign(x)*betaI(x^2/(nu+x^2),1/2,nu/2)) */ + + void test_tdist (void) { + TEST (gsl_cdf_tdist_P, (0.0, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.001, 1.0), 5.00318309780080559e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.01, 1.0), 5.03182992764908255e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.1, 1.0), 5.31725517430553569e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.325, 1.0), 6.00023120032852123e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.0, 1.0), 0.75000000000000000e0, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.5, 1.0), 8.12832958189001183e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (2.0, 1.0), 8.52416382349566726e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10.0, 1.0), 9.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (20.0, 1.0), 9.84097748743823625e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (100.0, 1.0), 9.96817007235091745e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1000.0, 1.0), 9.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10000.0, 1.0), 9.99968169011487724e-1, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (0.0, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.001, 1.0), 4.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.01, 1.0), 4.96817007235091745e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.1, 1.0), 4.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.325, 1.0), 3.99976879967147876e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.0, 1.0), 2.5e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.5, 1.0), 1.87167041810998816e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (2.0, 1.0), 1.47583617650433274e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10.0, 1.0), 3.17255174305535695e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (20.0, 1.0), 1.59022512561763752e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (100.0, 1.0), 3.18299276490825515e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1000.0, 1.0), 3.18309780080558939e-4, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10000.0, 1.0), 3.18309885122757724e-5, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (-1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.001, 1.0), 4.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.01, 1.0), 4.96817007235091744e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.1, 1.0), 4.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.325, 1.0), 3.99976879967147876e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.0, 1.0), 0.25, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.5, 1.0), 1.87167041810998816e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-2.0, 1.0), 1.47583617650433274e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10.0, 1.0), 3.17255174305535695e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-20.0, 1.0), 1.59022512561763751e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-100.0, 1.0), 3.18299276490825514e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1000.0, 1.0), 3.18309780080558938e-4, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10000.0, 1.0), 3.18309885122757724e-5, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (-1e-100, 1.0), 0.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.001, 1.0), 5.00318309780080559e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.01, 1.0), 5.03182992764908255e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.1, 1.0), 5.31725517430553570e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.325, 1.0), 6.00023120032852124e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.0, 1.0), 7.5e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.5, 1.0), 8.12832958189001184e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-2.0, 1.0), 8.52416382349566726e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10.0, 1.0), 9.68274482569446430e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-20.0, 1.0), 9.84097748743823625e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-100.0, 1.0), 9.96817007235091745e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1000.0, 1.0), 9.99681690219919441e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10000.0, 1.0), 9.99968169011487724e-1, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (0.0, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.001, 2.0), 5.00353553302204959e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.01, 2.0), 5.03535445520899514e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.1, 2.0), 5.35267280792929913e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.325, 2.0), 6.11985772746873767e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.0, 2.0), 7.88675134594812882e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.5, 2.0), 8.63803437554499460e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (2.0, 2.0), 9.08248290463863016e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10.0, 2.0), 9.95073771488337154e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (20.0, 2.0), 9.98754668053816452e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (100.0, 2.0), 9.99950007498750219e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1000.0, 2.0), 9.99999500000749945e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10000.0, 2.0), 9.999999950000000739e-01, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (0.0, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.001, 2.0), 4.99646446697795041e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.01, 2.0), 4.96464554479100486e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.1, 2.0), 4.64732719207070087e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.325, 2.0), 3.88014227253126233e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.0, 2.0), 2.11324865405187118e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.5, 2.0), 1.36196562445500540e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (2.0, 2.0), 9.17517095361369836e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10.0, 2.0), 4.92622851166284542e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (20.0, 2.0), 1.24533194618354849e-3, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (100.0, 2.0), 4.99925012497812894e-5, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1000.0, 2.0), 4.99999250001249998e-7, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10000.0, 2.0), 4.99999992500000125e-9, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (-1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.001, 2.0), 4.99646446697795041e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.01, 2.0), 4.96464554479100486e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.1, 2.0), 4.64732719207070087e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.325, 2.0), 3.88014227253126233e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.0, 2.0), 2.11324865405187118e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.5, 2.0), 1.36196562445500540e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-2.0, 2.0), 9.17517095361369836e-02, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10.0, 2.0), 4.92622851166284542e-03, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-20.0, 2.0), 1.24533194618354849e-03, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-100.0, 2.0), 4.99925012497812894e-05, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1000.0, 2.0), 4.99999250001249998e-07, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10000.0, 2.0), 4.99999992500000125e-09, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (-1e-100, 2.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.001, 2.0), 5.00353553302204959e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.01, 2.0), 5.03535445520899514e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.1, 2.0), 5.35267280792929913e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.325, 2.0), 6.11985772746873767e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.0, 2.0), 7.88675134594812882e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.5, 2.0), 8.63803437554499460e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-2.0, 2.0), 9.08248290463863016e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10.0, 2.0), 9.95073771488337155e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-20.0, 2.0), 9.98754668053816452e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-100.0, 2.0), 9.99950007498750219e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1000.0, 2.0), 9.99999500000749999e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10000.0, 2.0), 9.99999995000000075e-1, TEST_TOL6); + + TEST (gsl_cdf_tdist_P, (0.0, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.001, 300.0), 5.00398609900942949e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.01, 300.0), 5.03986033020559088e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.1, 300.0), 5.39794441177768194e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (0.325, 300.0), 6.27296201542523812e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.0, 300.0), 8.40941797784686861e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1.5, 300.0), 9.32666983425369137e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (2.0, 300.0), 9.76799239508425455e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (20.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (100.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (1000.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (10000.0, 300.0), 1.00000000000000000e+00, TEST_TOL6); + + TEST (gsl_cdf_tdist_Q, (0.0, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.001, 300.0), 4.99601390099057051e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.01, 300.0), 4.96013966979440912e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.1, 300.0), 4.60205558822231806e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (0.325, 300.0), 3.72703798457476188e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.0, 300.0), 1.59058202215313138e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1.5, 300.0), 6.73330165746308628e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (2.0, 300.0), 2.32007604915745452e-2, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (10.0, 300.0), 8.279313677e-21, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (20.0, 300.0), 1.93159812815803978e-57, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (100.0, 300.0), 1.02557519997736154e-232, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (1000.0, 300.0), 0.00000000000000000e+00, 0.0); + TEST (gsl_cdf_tdist_Q, (10000.0, 300.0), 0.00000000000000000e+00, 0.0); + + TEST (gsl_cdf_tdist_P, (-1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.001, 300.0), 4.99601390099057051e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.01, 300.0), 4.96013966979440912e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.1, 300.0), 4.60205558822231806e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-0.325, 300.0), 3.72703798457476188e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.0, 300.0), 1.59058202215313138e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1.5, 300.0), 6.73330165746308628e-02, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-2.0, 300.0), 2.32007604915745452e-02, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-10.0, 300.0), 8.279313675556272534e-21, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-20.0, 300.0), 1.93159812815803978e-57, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-100.0, 300.0), 1.02557519997736154e-232, TEST_TOL6); + TEST (gsl_cdf_tdist_P, (-1000.0, 300.0), 0.0, 0.0); + TEST (gsl_cdf_tdist_P, (-10000.0, 300.0), 0.0, 0.0); + + TEST (gsl_cdf_tdist_Q, (-1e-100, 300.0), 5.00000000000000000e-01, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.001, 300.0), 5.00398609900942949e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.01, 300.0), 5.03986033020559088e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.1, 300.0), 5.39794441177768194e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-0.325, 300.0), 6.27296201542523812e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.0, 300.0), 8.40941797784686862e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1.5, 300.0), 9.32666983425369137e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-2.0, 300.0), 9.76799239508425455e-1, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10.0, 300.0), 1.000000000000000000e0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-20.0, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-100.0, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-1000.0, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Q, (-10000.0, 300.0), 1.0, TEST_TOL6); + } + + /* Tests for F distribution */ + + /* p(x, nu1, nu2) := betaI(1 / (1 + nu2 / nu1 * x), nu1 / 2, nu2 / 2) */ + + void test_fdist (void) { + TEST (gsl_cdf_fdist_P, (0.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 1.2, 1.3), 6.98194275525039002e-61, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.001, 1.2, 1.3), 1.10608485860238564e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 1.2, 1.3), 4.38636757068313850e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 1.2, 1.3), 1.68242392712840734e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 1.2, 1.3), 3.14130045246195449e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 1.2, 1.3), 5.09630779074755253e-01, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 1.2, 1.3), 5.83998640641553852e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 1.2, 1.3), 6.34733581351938787e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 1.2, 1.3), 8.48446237879200975e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 1.2, 1.3), 9.00987726336875039e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 1.2, 1.3), 9.64489127047688435e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 1.2, 1.3), 9.92012051694116388e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 1.2, 1.3), 9.98210862808842585e-1, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 1.2, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 1.2, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.001, 1.2, 1.3), 9.88939151413976144e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 1.2, 1.3), 9.56136324293168615e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 1.2, 1.3), 8.31757607287159265e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 1.2, 1.3), 6.85869954753804551e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 1.2, 1.3), 4.90369220925244747e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 1.2, 1.3), 4.16001359358446148e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 1.2, 1.3), 3.65266418648061213e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 1.2, 1.3), 1.51553762120799025e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 1.2, 1.3), 9.90122736631249612e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 1.2, 1.3), 3.55108729523115643e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 1.2, 1.3), 7.98794830588361109e-3, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10000.0, 1.2, 1.3), 1.7891371911574145e-3, TEST_TOL6); + + + TEST (gsl_cdf_fdist_P, (0.0, 500.0, 1.3), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 500.0, 1.3), 0.0, 0.0); + + TEST (gsl_cdf_fdist_P, (0.001, 500.0, 1.3), 9.83434460393304765e-141, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 500.0, 1.3), 1.45915624888550014e-26, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 500.0, 1.3), 5.89976509619688165e-4, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 500.0, 1.3), 6.86110486051542533e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 500.0, 1.3), 3.38475053806404615e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 500.0, 1.3), 4.52016245247457422e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 500.0, 1.3), 5.27339068937388798e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 500.0, 1.3), 8.16839628578413905e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 500.0, 1.3), 8.81784623056911406e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 500.0, 1.3), 9.58045057204221295e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 500.0, 1.3), 9.90585749380655275e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 500.0, 1.3), 9.97891924831461387e-1, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 500.0, 1.3), 1.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.001, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 500.0, 1.3), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 500.0, 1.3), 9.99410023490380312e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 500.0, 1.3), 9.31388951394845747e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 500.0, 1.3), 6.61524946193595385e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 500.0, 1.3), 5.47983754752542572e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 500.0, 1.3), 4.72660931062611202e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 500.0, 1.3), 1.83160371421586096e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 500.0, 1.3), 1.18215376943088595e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 500.0, 1.3), 4.19549427957787016e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 500.0, 1.3), 9.41425061934473424e-3, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10000.0, 500.0, 1.3), 2.10807516853862603e-3, TEST_TOL6); + + TEST (gsl_cdf_fdist_P, (0.0, 1.2, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 1.2, 500.0), 8.23342055585482999e-61, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.001, 1.2, 500.0), 1.30461496441289529e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 1.2, 500.0), 5.18324224608033294e-2, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 1.2, 500.0), 2.02235101716076289e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 1.2, 500.0), 3.90502983219393749e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 1.2, 500.0), 6.67656191574653619e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 1.2, 500.0), 7.75539230271467054e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 1.2, 500.0), 8.45209114904613705e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 1.2, 500.0), 9.99168017659120988e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 1.2, 500.0), 9.99998005738371669e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 1.2, 500.0), 1.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 1.2, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.001, 1.2, 500.0), 9.86953850355871047e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 1.2, 500.0), 9.48167577539196671e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 1.2, 500.0), 7.97764898283923711e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 1.2, 500.0), 6.09497016780606251e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 1.2, 500.0), 3.32343808425346381e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 1.2, 500.0), 2.24460769728532946e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 1.2, 500.0), 1.54790885095386295e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 1.2, 500.0), 8.3198234087901168e-4, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 1.2, 500.0), 1.99426162833131e-6, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 1.2, 500.0), 6.23302662288217117e-25, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1000.0, 1.2, 500.0), 1.14328577259666930e-134, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10000.0, 1.2, 500.0), 0.0, 0.0); + + + TEST (gsl_cdf_fdist_P, (0.0, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (1e-100, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_P, (0.001, 200.0, 500.0), 4.09325080403669893e-251, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.01, 200.0, 500.0), 1.17894325419628688e-151, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.1, 200.0, 500.0), 5.92430940796861258e-57, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (0.325, 200.0, 500.0), 3.18220452357263554e-18, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.0, 200.0, 500.0), 5.06746326121168266e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1.5, 200.0, 500.0), 9.99794175718712438e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (2.0, 200.0, 500.0), 9.99999999528236152e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (20.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (100.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (1000.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_P, (10000.0, 200.0, 500.0), 1.0, TEST_TOL6); + + TEST (gsl_cdf_fdist_Q, (0.0, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1e-100, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.001, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.01, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.1, 200.0, 500.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (0.325, 200.0, 500.0), 9.99999999999999997e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.0, 200.0, 500.0), 4.93253673878831734e-1, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (1.5, 200.0, 500.0), 2.05824281287561795e-4, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (2.0, 200.0, 500.0), 4.71763848371410786e-10, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (10.0, 200.0, 500.0), 5.98048337181948436e-96, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (20.0, 200.0, 500.0), 2.92099265879979502e-155, TEST_TOL6); + TEST (gsl_cdf_fdist_Q, (100.0, 200.0, 500.0), 6.53118977244362760e-316, 0.0); + TEST (gsl_cdf_fdist_Q, (1000.0, 200.0, 500.0), 0.0, 0.0); + TEST (gsl_cdf_fdist_Q, (10000.0, 200.0, 500.0), 0.0, 0.0); + } + + /* Tests for gamma distribution */ + + /* p(x, a, b) := gammaP(b, x / a) */ + + void test_gamma (void) + { + TEST (gsl_cdf_gamma_P, (0.0, 1.0, 1.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_P, (1e-100, 1.0, 1.0), 1e-100, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.001, 1.0, 1.0), 9.99500166625008332e-4, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.01, 1.0, 1.0), 9.95016625083194643e-3, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.1, 1.0, 1.0), 9.51625819640404268e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.325, 1.0, 1.0), 2.77472646357927811e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.0, 1.0, 1.0), 6.32120558828557678e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.5, 1.0, 1.0), 7.76869839851570171e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (2.0, 1.0, 1.0), 8.64664716763387308e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10.0, 1.0, 1.0), 9.99954600070237515e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (20.0, 1.0, 1.0), 9.99999997938846378e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (100.0, 1.0, 1.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1000.0, 1.0, 1.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10000.0, 1.0, 1.0), 1e0, TEST_TOL6); + + TEST (gsl_cdf_gamma_Q, (0.0, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1e-100, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.001, 1.0, 1.0), 9.99000499833374992e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.01, 1.0, 1.0), 9.90049833749168054e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.1, 1.0, 1.0), 9.04837418035959573e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.325, 1.0, 1.0), 7.22527353642072189e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.0, 1.0, 1.0), 3.67879441171442322e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.5, 1.0, 1.0), 2.23130160148429829e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (2.0, 1.0, 1.0), 1.35335283236612692e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10.0, 1.0, 1.0), 4.53999297624848515e-5, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (20.0, 1.0, 1.0), 2.06115362243855783e-9, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (100.0, 1.0, 1.0), 3.72007597602083596e-44, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1000.0, 1.0, 1.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_Q, (10000.0, 1.0, 1.0), 0.0, 0.0); + + TEST (gsl_cdf_gamma_P, (0.0, 1.0, 10.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_P, (1e-100, 1.0, 10.0), 1e-101, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.001, 1.0, 10.0), 9.99950001666625001e-5, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.01, 1.0, 10.0), 9.99500166625008332e-4, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.1, 1.0, 10.0), 9.95016625083194643e-3, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.325, 1.0, 10.0), 3.19775501686939529e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.0, 1.0, 10.0), 9.51625819640404268e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.5, 1.0, 10.0), 1.39292023574942193e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (2.0, 1.0, 10.0), 1.81269246922018141e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10.0, 1.0, 10.0), 6.32120558828557678e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (20.0, 1.0, 10.0), 8.64664716763387308e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (100.0, 1.0, 10.0), 9.99954600070237515e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1000.0, 1.0, 10.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10000.0, 1.0, 10.0), 1e0, TEST_TOL6); + + TEST (gsl_cdf_gamma_Q, (0.0, 1.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1e-100, 1.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.001, 1.0, 10.0), 9.99900004999833337e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.01, 1.0, 10.0), 9.99000499833374992e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.1, 1.0, 10.0), 9.90049833749168054e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.325, 1.0, 10.0), 9.68022449831306047e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.0, 1.0, 10.0), 9.04837418035959573e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.5, 1.0, 10.0), 8.60707976425057807e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (2.0, 1.0, 10.0), 8.18730753077981859e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10.0, 1.0, 10.0), 3.67879441171442322e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (20.0, 1.0, 10.0), 1.35335283236612692e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (100.0, 1.0, 10.0), 4.53999297624848515e-5, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1000.0, 1.0, 10.0), 3.72007597602083596e-44, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10000.0, 1.0, 10.0), 0.0, 0.0); + + TEST (gsl_cdf_gamma_P, (0.0, 17.0, 10.0), 0e0, 0.0); + TEST (gsl_cdf_gamma_P, (1e-100, 17.0, 10.0), 0e0, 0.0); + TEST (gsl_cdf_gamma_P, (0.001, 17.0, 10.0), 2.81119174040422844e-83, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.01, 17.0, 10.0), 2.80880324651985887e-66, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.1, 17.0, 10.0), 2.78502998087492130e-49, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (0.325, 17.0, 10.0), 1.37283653245125844e-40, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.0, 17.0, 10.0), 2.55811932292544243e-32, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1.5, 17.0, 10.0), 2.40420441175422372e-29, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (2.0, 17.0, 10.0), 3.05092926217898577e-27, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10.0, 17.0, 10.0), 1.094920130378183e-15, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (20.0, 17.0, 10.0), 5.60605096173161688e-11, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (100.0, 17.0, 10.0), 2.70416097848011280e-2, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (1000.0, 17.0, 10.0), 1.000000000000000000e0, TEST_TOL6); + TEST (gsl_cdf_gamma_P, (10000.0, 17.0, 10.0), 1.000000000000000000e0, TEST_TOL6); + + TEST (gsl_cdf_gamma_Q, (0.0, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1e-100, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.001, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.01, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.1, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (0.325, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.0, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1.5, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (2.0, 17.0, 10.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10.0, 17.0, 10.0), 9.99999999999998905e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (20.0, 17.0, 10.0), 9.99999999943939490e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (100.0, 17.0, 10.0), 9.72958390215198872e-1, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (1000.0, 17.0, 10.0), 2.11200951633948570e-25, TEST_TOL6); + TEST (gsl_cdf_gamma_Q, (10000.0, 17.0, 10.0), 0.0, 0.0); + } + + void test_chisq (void) { + TEST (gsl_cdf_chisq_P, (0.0, 13.0), 0.0, 0.0); + TEST (gsl_cdf_chisq_P, (1e-100, 13.0), 0.0, 0.0); + TEST (gsl_cdf_chisq_P, (0.001, 13.0), 1.86631102655845996e-25, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (0.01, 13.0), 5.87882248504529790e-19, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (0.1, 13.0), 1.78796983358555410e-12, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (0.325, 13.0), 3.44611313779905183e-9, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (1.0, 13.0), 3.83473473513595154e-6, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (1.5, 13.0), 4.31718389201041932e-5, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (2.0, 13.0), 2.26250084656047180e-4, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (10.0, 13.0), 3.06065632019251110e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (20.0, 13.0), 9.04789743921908487e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (100.0, 13.0), 9.99999999999998341e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (1000.0, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_P, (10000.0, 13.0), 1e0, TEST_TOL6); + + TEST (gsl_cdf_chisq_Q, (0.0, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1e-100, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.001, 13.0), 1e0, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.01, 13.0), 9.99999999999999999e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.1, 13.0), 9.99999999998212030e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (0.325, 13.0), 9.99999996553886862e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1.0, 13.0), 9.99996165265264864e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1.5, 13.0), 9.99956828161079896e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (2.0, 13.0), 9.99773749915343953e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (10.0, 13.0), 6.93934367980748890e-1, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (20.0, 13.0), 9.52102560780915127e-2, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (100.0, 13.0), 1.65902608070858809e-15, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (1000.0, 13.0), 1.74851191544860225e-205, TEST_TOL6); + TEST (gsl_cdf_chisq_Q, (10000.0, 13.0), 0.0, 0.0); + } + + + /* Beta distribution */ + + void test_beta (void) { + TEST (gsl_cdf_beta_P, (0.0, 1.2, 1.3), 0.0, 0.0); + TEST (gsl_cdf_beta_P, (1e-100, 1.2, 1.3), 1.34434944656489596e-120, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.001, 1.2, 1.3), 3.37630042504535813e-4, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.01, 1.2, 1.3), 5.34317264038929473e-3, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.1, 1.2, 1.3), 8.33997828306748346e-2, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.325, 1.2, 1.3), 3.28698654180583916e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.5, 1.2, 1.3), 5.29781429451299081e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.9, 1.2, 1.3), 9.38529397224430659e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.99, 1.2, 1.3), 9.96886438341254380e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (0.999, 1.2, 1.3), 9.99843792833067634e-1, TEST_TOL6); + TEST (gsl_cdf_beta_P, (1.0, 1.2, 1.3), 1.0, TEST_TOL6); + + TEST (gsl_cdf_beta_Q, (0.0, 1.2, 1.3), 1.0, 0.0); + TEST (gsl_cdf_beta_Q, (1e-100, 1.2, 1.3), 1e0, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.001, 1.2, 1.3), 9.99662369957495464e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.01, 1.2, 1.3), 9.94656827359610705e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.1, 1.2, 1.3), 9.16600217169325165e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.325, 1.2, 1.3), 6.71301345819416084e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.5, 1.2, 1.3), 4.70218570548700919e-1, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.9, 1.2, 1.3), 6.14706027755693408e-2, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.99, 1.2, 1.3), 3.11356165874561958e-3, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (0.999, 1.2, 1.3), 1.56207166932365759e-4, TEST_TOL6); + TEST (gsl_cdf_beta_Q, (1.0, 1.2, 1.3), 0.0, TEST_TOL6); + } + + void test_gammainv (void) { + TEST (gsl_cdf_gamma_Pinv, (0.0, 1.0, 1.0), 0.0, 0.0); + TEST (gsl_cdf_gamma_Pinv, (1e-100, 1.0, 1.0), 1e-100, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.99500166625008332e-4, 1.0, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.95016625083194643e-3, 1.0, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.51625819640404268e-2, 1.0, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (2.77472646357927811e-1, 1.0, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (6.32120558828557678e-1, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (7.76869839851570171e-1, 1.0, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (8.64664716763387308e-1, 1.0, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.99954600070237515e-1, 1.0, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (9.99999997938846378e-1, 1.0, 1.0), 20.0, 100 * TEST_TOL6); + TEST (gsl_cdf_gamma_Pinv, (1.0, 1.0, 1.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_gamma_Qinv, (0.0, 1.0, 1.0), GSL_POSINF, 0.0); + TEST (gsl_cdf_gamma_Qinv, (2.06115362243855783e-9, 1.0, 1.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (4.53999297624848515e-5, 1.0, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (1.35335283236612692e-1, 1.0, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (2.23130160148429829e-1, 1.0, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (3.67879441171442322e-1, 1.0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (7.22527353642072189e-1, 1.0, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (9.04837418035959573e-1, 1.0, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (9.90049833749168054e-1, 1.0, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (9.99000499833374992e-1, 1.0, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_gamma_Qinv, (1.0, 1.0, 1.0), 0.0, 0.0); + } + + void test_chisqinv (void) { + TEST (gsl_cdf_chisq_Pinv, (0.0, 13.0), 0.0, 0.0); + TEST (gsl_cdf_chisq_Pinv, (1.86631102655845996e-25, 13.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (5.87882248504529790e-19, 13.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (1.78796983358555410e-12, 13.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (3.44611313779905183e-9, 13.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (3.83473473513595154e-6, 13.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (4.31718389201041932e-5, 13.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (2.26250084656047180e-4, 13.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (3.06065632019251110e-1, 13.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (9.04789743921908487e-1, 13.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Pinv, (9.99999999999998341e-1, 13.0), 100.0, 0.01); + TEST (gsl_cdf_chisq_Pinv, (1e0, 13.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_chisq_Qinv, (0.0, 13.0), GSL_POSINF, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (1.65902608070858809e-15, 13.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.52102560780915127e-2, 13.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (6.93934367980748892e-1, 13.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99773749915343954e-1, 13.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99956828161079894e-1, 13.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99996165265264863e-1, 13.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_chisq_Qinv, (9.99999996553886862e-1, 13.0), 0.325, 1e-6); + TEST (gsl_cdf_chisq_Qinv, (9.99999999998212031e-1, 13.0), 0.1, 1e-5); + TEST (gsl_cdf_chisq_Qinv, (1.0, 13.0), 0.0, 0.0); + } + + void test_tdistinv (void) { + TEST (gsl_cdf_tdist_Pinv, (0.5, 1.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.00318309780080559e-1, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.03182992764908255e-1, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.31725517430553569e-1, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (6.00023120032852123e-1, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.75000000000000000e0, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.12832958189001183e-1, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.52416382349566726e-1, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.68274482569446430e-1, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.84097748743823625e-1, 1.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.96817007235091745e-1, 1.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.99681690219919441e-1, 1.0), 1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.99968169011487724e-1, 1.0), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Pinv, (4.99681690219919441e-1, 1.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96817007235091744e-1, 1.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.68274482569446430e-1, 1.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.99976879967147876e-1, 1.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.25, 1.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.87167041810998816e-1, 1.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.47583617650433274e-1, 1.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.17255174305535695e-2, 1.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.59022512561763751e-2, 1.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18299276490825514e-3, 1.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18309780080558938e-4, 1.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18309885122757724e-5, 1.0), -10000.0, TEST_TOL6); + + + TEST (gsl_cdf_tdist_Qinv, (0.5, 1.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.99681690219919441e-1, 1.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.96817007235091745e-1, 1.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.68274482569446430e-1, 1.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.99976879967147876e-1, 1.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (2.5e-1, 1.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.87167041810998816e-1, 1.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.47583617650433274e-1, 1.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.17255174305535695e-2, 1.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.59022512561763752e-2, 1.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.18299276490825515e-3, 1.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.18309780080558939e-4, 1.0), 1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.18309885122757724e-5, 1.0), 10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Pinv, (4.99681690219919441e-1, 1.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96817007235091744e-1, 1.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.68274482569446430e-1, 1.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.99976879967147876e-1, 1.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.25, 1.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.87167041810998816e-1, 1.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.47583617650433274e-1, 1.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.17255174305535695e-2, 1.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.59022512561763751e-2, 1.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18299276490825514e-3, 1.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18309780080558938e-4, 1.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.18309885122757724e-5, 1.0), -10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Qinv, (5.00318309780080559e-1, 1.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.03182992764908255e-1, 1.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.31725517430553570e-1, 1.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.00023120032852124e-1, 1.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (7.5e-1, 1.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.12832958189001184e-1, 1.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.52416382349566726e-1, 1.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.68274482569446430e-1, 1.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.84097748743823625e-1, 1.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.96817007235091745e-1, 1.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99681690219919441e-1, 1.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99968169011487724e-1, 1.0), -10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Pinv, (4.99646446697795041e-01, 2.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96464554479100486e-01, 2.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.64732719207070087e-01, 2.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.88014227253126233e-01, 2.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (2.11324865405187118e-01, 2.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.36196562445500540e-01, 2.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.17517095361369836e-02, 2.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.92622851166284542e-03, 2.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.24533194618354849e-03, 2.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.99925012497812894e-05, 2.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.99999250001249998e-07, 2.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.99999992500000125e-09, 2.0), -10000.0, TEST_TOL6); + + TEST (gsl_cdf_tdist_Qinv, (5.00353553302204959e-1, 2.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.03535445520899514e-1, 2.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.35267280792929913e-1, 2.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.11985772746873767e-1, 2.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (7.88675134594812882e-1, 2.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.63803437554499460e-1, 2.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.08248290463863016e-1, 2.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.95073771488337155e-1, 2.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.98754668053816452e-1, 2.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99950007498750219e-1, 2.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99999500000749999e-1, 2.0), -1000.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.99999995000000075e-1, 2.0), -10000.0, 1e-6); + + TEST (gsl_cdf_tdist_Pinv, (5.00000000000000000e-01, 300.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.00398609900942949e-01, 300.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.03986033020559088e-01, 300.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (5.39794441177768194e-01, 300.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (6.27296201542523812e-01, 300.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.40941797784686861e-01, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.32666983425369137e-01, 300.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (9.76799239508425455e-01, 300.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.00000000000000000e+00, 300.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_tdist_Qinv, (5.00000000000000000e-01, 300.0), 0.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.99601390099057051e-1, 300.0), 0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.96013966979440912e-1, 300.0), 0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (4.60205558822231806e-1, 300.0), 0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (3.72703798457476188e-1, 300.0), 0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.59058202215313138e-1, 300.0), 1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.73330165746308628e-2, 300.0), 1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (2.32007604915745452e-2, 300.0), 2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.279313677e-21, 300.0), 10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.93159812815803978e-57, 300.0), 20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.02557519997736154e-232, 300.0), 100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (0.00000000000000000e+00, 300.0), GSL_POSINF, 0.0); + + TEST (gsl_cdf_tdist_Pinv, (4.99601390099057051e-01, 300.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.96013966979440912e-01, 300.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (4.60205558822231806e-01, 300.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (3.72703798457476188e-01, 300.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.59058202215313138e-01, 300.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (6.73330165746308628e-02, 300.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (2.32007604915745452e-02, 300.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (8.279313675556272534e-21, 300.0), -10.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.93159812815803978e-57, 300.0), -20.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (1.02557519997736154e-232, 300.0), -100.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Pinv, (0.0, 300.0), GSL_NEGINF, 0.0); + + TEST (gsl_cdf_tdist_Qinv, (5.00398609900942949e-1, 300.0), -0.001, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.03986033020559088e-1, 300.0), -0.01, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (5.39794441177768194e-1, 300.0), -0.1, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (6.27296201542523812e-1, 300.0), -0.325, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (8.40941797784686862e-1, 300.0), -1.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.32666983425369137e-1, 300.0), -1.5, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (9.76799239508425455e-1, 300.0), -2.0, TEST_TOL6); + TEST (gsl_cdf_tdist_Qinv, (1.000000000000000000e0, 300.0), GSL_NEGINF, TEST_TOL6); + } + + + diff -x.info* -rc2P gsl-1.3/cdf/test_auto.c gsl-1.4/cdf/test_auto.c *** gsl-1.3/cdf/test_auto.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/test_auto.c Wed Aug 13 08:34:00 2003 *************** *** 0 **** --- 1,1464 ---- + void test_auto_beta (void); + + void + test_auto_beta (void) + { + TEST(gsl_cdf_beta_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-10,1.3,2.7), 3.329258013904e-13, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000001e-09,1.3,2.7), 6.642743046207e-12, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-08,1.3,2.7), 1.325401475350e-10, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9999999999999995e-08,1.3,2.7), 2.644523387276e-09, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9999999999999995e-07,1.3,2.7), 5.276513292646e-08, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000001e-05,1.3,2.7), 1.052793708285e-06, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-04,1.3,2.7), 2.100417958505e-05, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-03,1.3,2.7), 4.187261218400e-04, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e-02,1.3,2.7), 8.282559388393e-03, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000001e-01,1.3,2.7), 1.512194578010e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (2.0000000000000001e-01,1.3,2.7), 3.358123280407e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (2.9999999999999999e-01,1.3,2.7), 5.104163996495e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (4.0000000000000002e-01,1.3,2.7), 6.620682399410e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (5.0000000000000000e-01,1.3,2.7), 7.852786981833e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (5.9999999999999998e-01,1.3,2.7), 8.784005878950e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (8.0000000000000004e-01,1.3,2.7), 9.801824171406e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.0000000000000002e-01,1.3,2.7), 9.968736852365e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.8999999999999999e-01,1.3,2.7), 9.999936324464e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9900000000000000e-01,1.3,2.7), 9.999999872699e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9990000000000001e-01,1.3,2.7), 9.999999999746e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (9.9999000000000005e-01,1.3,2.7), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_beta_P, (1.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_beta_Q, (1.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9999000000000005e-01,1.3,2.7), 5.069044353228e-14, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9990000000000001e-01,1.3,2.7), 2.540490259443e-11, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9900000000000000e-01,1.3,2.7), 1.273010336738e-08, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.8999999999999999e-01,1.3,2.7), 6.367553598351e-06, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.0000000000000002e-01,1.3,2.7), 3.126314763488e-03, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (8.0000000000000004e-01,1.3,2.7), 1.981758285937e-02, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (5.9999999999999998e-01,1.3,2.7), 1.215994121050e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (5.0000000000000000e-01,1.3,2.7), 2.147213018167e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (4.0000000000000002e-01,1.3,2.7), 3.379317600590e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (2.9999999999999999e-01,1.3,2.7), 4.895836003505e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (2.0000000000000001e-01,1.3,2.7), 6.641876719593e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000001e-01,1.3,2.7), 8.487805421990e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-02,1.3,2.7), 9.917174406116e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-03,1.3,2.7), 9.995812738782e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-04,1.3,2.7), 9.999789958204e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000001e-05,1.3,2.7), 9.999989472063e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9999999999999995e-07,1.3,2.7), 9.999999472349e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (9.9999999999999995e-08,1.3,2.7), 9.999999973555e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-08,1.3,2.7), 9.999999998675e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000001e-09,1.3,2.7), 9.999999999934e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (1.0000000000000000e-10,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + TEST(gsl_cdf_beta_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_fdist (void); + + void + test_auto_fdist (void) + { + TEST(gsl_cdf_fdist_P, (0.0000000000000000e+00,5.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-10,5.3,2.7), 3.231380663090e-26, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000001e-09,5.3,2.7), 1.443404714791e-23, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-08,5.3,2.7), 6.447451698511e-21, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (9.9999999999999995e-08,5.3,2.7), 2.879969407315e-18, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (9.9999999999999995e-07,5.3,2.7), 1.286428479993e-15, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000001e-05,5.3,2.7), 5.745970138195e-13, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-04,5.3,2.7), 2.565314230632e-10, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-03,5.3,2.7), 1.140026203760e-07, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e-02,5.3,2.7), 4.840333162527e-05, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000001e-01,5.3,2.7), 1.360698992545e-02, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+00,5.3,2.7), 4.532720490874e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+01,5.3,2.7), 9.461328174717e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+02,5.3,2.7), 9.973356976994e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+03,5.3,2.7), 9.998797338050e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+04,5.3,2.7), 9.999946222456e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+05,5.3,2.7), 9.999997597592e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+06,5.3,2.7), 9.999999892687e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+07,5.3,2.7), 9.999999995207e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+08,5.3,2.7), 9.999999999786e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+09,5.3,2.7), 9.999999999990e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_P, (1.0000000000000000e+10,5.3,2.7), 1.000000000000e-00, TEST_TOL6); + + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+10,5.3,2.7), 4.272202262298e-14, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+09,5.3,2.7), 9.564269502770e-13, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+08,5.3,2.7), 2.141173208523e-11, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+07,5.3,2.7), 4.793489218238e-10, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+06,5.3,2.7), 1.073127433440e-08, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+05,5.3,2.7), 2.402407758939e-07, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+04,5.3,2.7), 5.377754447932e-06, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+03,5.3,2.7), 1.202661950234e-04, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+02,5.3,2.7), 2.664302300604e-03, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+01,5.3,2.7), 5.386718252832e-02, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e+00,5.3,2.7), 5.467279509126e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000001e-01,5.3,2.7), 9.863930100746e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-02,5.3,2.7), 9.999515966684e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-03,5.3,2.7), 9.999998859974e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-04,5.3,2.7), 9.999999997435e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000001e-05,5.3,2.7), 9.999999999994e-01, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (9.9999999999999995e-07,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (9.9999999999999995e-08,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-08,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000001e-09,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (1.0000000000000000e-10,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_fdist_Q, (0.0000000000000000e+00,5.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_cauchy (void); + + void + test_auto_cauchy (void) + { + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+10,1.3), 4.138028520389e-11, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892783e-11,1.3), -1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+09,1.3), 4.138028520389e-10, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892792e-10,1.3), -1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+08,1.3), 4.138028520389e-09, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892787e-09,1.3), -1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+07,1.3), 4.138028520389e-08, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203892555e-08,1.3), -1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+06,1.3), 4.138028520387e-07, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285203869488e-07,1.3), -1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+05,1.3), 4.138028520156e-06, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380285201561693e-06,1.3), -1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+04,1.3), 4.138028497078e-05, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380284970783855e-05,1.3), -1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+03,1.3), 4.138026189302e-04, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1380261893022424e-04,1.3), -1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+02,1.3), 4.137795435084e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1377954350836910e-03,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+01,1.3), 4.114951182497e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.1149511824973506e-02,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e+00,1.3), 2.912855998398e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (2.9128559983984725e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000001e-01,1.3), 4.755627480278e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.7556274802780252e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-02,1.3), 4.975515107069e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.9755151070688325e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-03,1.3), 4.997551462897e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (4.9975514628969159e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-04,1.3), 4.999755146242e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000001e-05,1.3), 4.999975514624e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-9.9999999999999995e-07,1.3), 4.999997551462e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-9.9999999999999995e-08,1.3), 4.999999755146e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-08,1.3), 4.999999975515e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000001e-09,1.3), 4.999999997551e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (-1.0000000000000000e-10,1.3), 4.999999999755e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.0000000000000011e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-10,1.3), 5.000000000245e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000001e-09,1.3), 5.000000002449e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-08,1.3), 5.000000024485e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (9.9999999999999995e-08,1.3), 5.000000244854e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (9.9999999999999995e-07,1.3), 5.000002448538e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000001e-05,1.3), 5.000024485376e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-04,1.3), 5.000244853758e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-03,1.3), 5.002448537103e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.0024485371030836e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e-02,1.3), 5.024484892931e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.0244848929311670e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000001e-01,1.3), 5.244372519722e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (5.2443725197219748e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+00,1.3), 7.087144001602e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (7.0871440016015275e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+01,1.3), 9.588504881750e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (9.5885048817502649e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+02,1.3), 9.958622045649e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (9.9586220456491636e-01,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+03,1.3), 9.995861973811e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Pinv, (9.9958619738106980e-01,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+04,1.3), 9.999586197150e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+05,1.3), 9.999958619715e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+06,1.3), 9.999995861971e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+07,1.3), 9.999999586197e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+08,1.3), 9.999999958620e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+09,1.3), 9.999999995862e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_P, (1.0000000000000000e+10,1.3), 9.999999999586e-01, TEST_TOL6); + + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+10,1.3), 4.138028520389e-11, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892783e-11,1.3), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+09,1.3), 4.138028520389e-10, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892792e-10,1.3), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+08,1.3), 4.138028520389e-09, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892787e-09,1.3), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+07,1.3), 4.138028520389e-08, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203892555e-08,1.3), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+06,1.3), 4.138028520387e-07, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285203869488e-07,1.3), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+05,1.3), 4.138028520156e-06, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380285201561693e-06,1.3), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+04,1.3), 4.138028497078e-05, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380284970783855e-05,1.3), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+03,1.3), 4.138026189302e-04, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1380261893022424e-04,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+02,1.3), 4.137795435084e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1377954350836910e-03,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+01,1.3), 4.114951182497e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.1149511824973506e-02,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e+00,1.3), 2.912855998398e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (2.9128559983984725e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000001e-01,1.3), 4.755627480278e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.7556274802780252e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-02,1.3), 4.975515107069e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.9755151070688325e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-03,1.3), 4.997551462897e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (4.9975514628969159e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-04,1.3), 4.999755146242e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000001e-05,1.3), 4.999975514624e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (9.9999999999999995e-07,1.3), 4.999997551462e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (9.9999999999999995e-08,1.3), 4.999999755146e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-08,1.3), 4.999999975515e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000001e-09,1.3), 4.999999997551e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (1.0000000000000000e-10,1.3), 4.999999999755e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.0000000000000011e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-10,1.3), 5.000000000245e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000001e-09,1.3), 5.000000002449e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-08,1.3), 5.000000024485e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-9.9999999999999995e-08,1.3), 5.000000244854e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-9.9999999999999995e-07,1.3), 5.000002448538e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000001e-05,1.3), 5.000024485376e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-04,1.3), 5.000244853758e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-03,1.3), 5.002448537103e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.0024485371030836e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e-02,1.3), 5.024484892931e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.0244848929311670e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000001e-01,1.3), 5.244372519722e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (5.2443725197219748e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+00,1.3), 7.087144001602e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (7.0871440016015275e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+01,1.3), 9.588504881750e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (9.5885048817502649e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+02,1.3), 9.958622045649e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (9.9586220456491636e-01,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+03,1.3), 9.995861973811e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Qinv, (9.9958619738106980e-01,1.3), -1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+04,1.3), 9.999586197150e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+05,1.3), 9.999958619715e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+06,1.3), 9.999995861971e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+07,1.3), 9.999999586197e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+08,1.3), 9.999999958620e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+09,1.3), 9.999999995862e-01, TEST_TOL6); + TEST(gsl_cdf_cauchy_Q, (-1.0000000000000000e+10,1.3), 9.999999999586e-01, TEST_TOL6); + } + + void test_auto_gaussian (void); + + void + test_auto_gaussian (void) + { + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+02,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+01,1.3), 7.225229227927e-15, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (7.2252292279265077e-15,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e+00,1.3), 2.208781637125e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (2.2087816371245972e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000001e-01,1.3), 4.693423696034e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (4.6934236960338749e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-02,1.3), 4.969312434916e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (4.9693124349158196e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-03,1.3), 4.996931213530e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (4.9969312135303229e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-04,1.3), 4.999693121323e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000001e-05,1.3), 4.999969312132e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-9.9999999999999995e-07,1.3), 4.999996931213e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-9.9999999999999995e-08,1.3), 4.999999693121e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-08,1.3), 4.999999969312e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000001e-09,1.3), 4.999999996931e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (-1.0000000000000000e-10,1.3), 4.999999999693e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-10,1.3), 5.000000000307e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000001e-09,1.3), 5.000000003069e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-08,1.3), 5.000000030688e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (9.9999999999999995e-08,1.3), 5.000000306879e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (9.9999999999999995e-07,1.3), 5.000003068787e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000001e-05,1.3), 5.000030687868e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-04,1.3), 5.000306878677e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-03,1.3), 5.003068786470e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.0030687864696777e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e-02,1.3), 5.030687565084e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.0306875650841798e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000001e-01,1.3), 5.306576303966e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (5.3065763039661251e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+00,1.3), 7.791218362875e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Pinv, (7.7912183628754028e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+01,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+02,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+01,1.3), 7.225229227927e-15, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (7.2252292279265077e-15,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e+00,1.3), 2.208781637125e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (2.2087816371245972e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000001e-01,1.3), 4.693423696034e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (4.6934236960338749e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-02,1.3), 4.969312434916e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (4.9693124349158196e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-03,1.3), 4.996931213530e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (4.9969312135303229e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-04,1.3), 4.999693121323e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000001e-05,1.3), 4.999969312132e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (9.9999999999999995e-07,1.3), 4.999996931213e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (9.9999999999999995e-08,1.3), 4.999999693121e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-08,1.3), 4.999999969312e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000001e-09,1.3), 4.999999996931e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (1.0000000000000000e-10,1.3), 4.999999999693e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-10,1.3), 5.000000000307e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000001e-09,1.3), 5.000000003069e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-08,1.3), 5.000000030688e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-9.9999999999999995e-08,1.3), 5.000000306879e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-9.9999999999999995e-07,1.3), 5.000003068787e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000001e-05,1.3), 5.000030687868e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-04,1.3), 5.000306878677e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-03,1.3), 5.003068786470e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.0030687864696777e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e-02,1.3), 5.030687565084e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.0306875650841798e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000001e-01,1.3), 5.306576303966e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (5.3065763039661251e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+00,1.3), 7.791218362875e-01, TEST_TOL6); + TEST(gsl_cdf_gaussian_Qinv, (7.7912183628754028e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+01,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gaussian_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_laplace (void); + + void + test_auto_laplace (void) + { + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+02,1.3), 1.957501779912e-34, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (1.9575017799122328e-34,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+01,1.3), 2.281619502905e-04, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (2.2816195029051560e-04,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e+00,1.3), 2.316846846156e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (2.3168468461558764e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000001e-01,1.3), 4.629805393212e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (4.6298053932115801e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-02,1.3), 4.961686011956e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (4.9616860119557432e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-03,1.3), 4.996155325065e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (4.9961553250645546e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-04,1.3), 4.999615399408e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000001e-05,1.3), 4.999961538609e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-9.9999999999999995e-07,1.3), 4.999996153848e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-9.9999999999999995e-08,1.3), 4.999999615385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-08,1.3), 4.999999961538e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000001e-09,1.3), 4.999999996154e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (-1.0000000000000000e-10,1.3), 4.999999999615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-10,1.3), 5.000000000385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000001e-09,1.3), 5.000000003846e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-08,1.3), 5.000000038462e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (9.9999999999999995e-08,1.3), 5.000000384615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (9.9999999999999995e-07,1.3), 5.000003846152e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000001e-05,1.3), 5.000038461391e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-04,1.3), 5.000384600592e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-03,1.3), 5.003844674935e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.0038446749354448e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e-02,1.3), 5.038313988044e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.0383139880442562e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000001e-01,1.3), 5.370194606788e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (5.3701946067884199e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+00,1.3), 7.683153153844e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (7.6831531538441233e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+01,1.3), 9.997718380497e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Pinv, (9.9977183804970948e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+02,1.3), 1.957501779912e-34, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (1.9575017799122328e-34,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+01,1.3), 2.281619502905e-04, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (2.2816195029051560e-04,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e+00,1.3), 2.316846846156e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (2.3168468461558764e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000001e-01,1.3), 4.629805393212e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (4.6298053932115801e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-02,1.3), 4.961686011956e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (4.9616860119557432e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-03,1.3), 4.996155325065e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (4.9961553250645546e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-04,1.3), 4.999615399408e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000001e-05,1.3), 4.999961538609e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (9.9999999999999995e-07,1.3), 4.999996153848e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (9.9999999999999995e-08,1.3), 4.999999615385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-08,1.3), 4.999999961538e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000001e-09,1.3), 4.999999996154e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (1.0000000000000000e-10,1.3), 4.999999999615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-10,1.3), 5.000000000385e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000001e-09,1.3), 5.000000003846e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-08,1.3), 5.000000038462e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-9.9999999999999995e-08,1.3), 5.000000384615e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-9.9999999999999995e-07,1.3), 5.000003846152e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000001e-05,1.3), 5.000038461391e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-04,1.3), 5.000384600592e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-03,1.3), 5.003844674935e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.0038446749354448e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e-02,1.3), 5.038313988044e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.0383139880442562e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000001e-01,1.3), 5.370194606788e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (5.3701946067884199e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+00,1.3), 7.683153153844e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (7.6831531538441233e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+01,1.3), 9.997718380497e-01, TEST_TOL6); + TEST(gsl_cdf_laplace_Qinv, (9.9977183804970948e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_laplace_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_rayleigh (void); + + void + test_auto_rayleigh (void) + { + TEST(gsl_cdf_rayleigh_P, (0.0000000000000000e+00,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-10,1.3), 2.958579881657e-21, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568050e-21,1.3), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000001e-09,1.3), 2.958579881657e-19, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568049e-19,1.3), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-08,1.3), 2.958579881657e-17, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568048e-17,1.3), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (9.9999999999999995e-08,1.3), 2.958579881657e-15, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816568001e-15,1.3), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (9.9999999999999995e-07,1.3), 2.958579881656e-13, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816563665e-13,1.3), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000001e-05,1.3), 2.958579881613e-11, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798816130393e-11,1.3), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-04,1.3), 2.958579877280e-09, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585798772802076e-09,1.3), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-03,1.3), 2.958579443997e-07, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585794439971025e-07,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e-02,1.3), 2.958536116114e-05, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9585361161138382e-05,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000001e-01,1.3), 2.954207597179e-03, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.9542075971792496e-03,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+00,1.3), 2.561069378624e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Pinv, (2.5610693786235361e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+01,1.3), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+02,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+01,1.3), 1.415959498849e-13, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Qinv, (1.4159594988487832e-13,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e+00,1.3), 7.438930621376e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Qinv, (7.4389306213764639e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000001e-01,1.3), 9.970457924028e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Qinv, (9.9704579240282076e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-02,1.3), 9.999704146388e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-03,1.3), 9.999997041421e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-04,1.3), 9.999999970414e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000001e-05,1.3), 9.999999999704e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (9.9999999999999995e-07,1.3), 9.999999999997e-01, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (9.9999999999999995e-08,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-08,1.3), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000001e-09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (1.0000000000000000e-10,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_rayleigh_Q, (0.0000000000000000e+00,1.3), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_flat (void); + + void + test_auto_flat (void) + { + TEST(gsl_cdf_flat_P, (0.0000000000000000e+00,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-10,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000001e-09,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-08,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (9.9999999999999995e-08,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (9.9999999999999995e-07,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000001e-05,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-04,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-03,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e-02,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000001e-01,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+00,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+01,1.3,750.0), 1.162014157874e-02, TEST_TOL6); + TEST(gsl_cdf_flat_Pinv, (1.1620141578738545e-02,1.3,750.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+02,1.3,750.0), 1.318285027381e-01, TEST_TOL6); + TEST(gsl_cdf_flat_Pinv, (1.3182850273808142e-01,1.3,750.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+03,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+04,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+05,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+06,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+07,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+08,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+09,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_P, (1.0000000000000000e+10,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+10,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+09,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+08,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+07,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+06,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+05,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+04,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+03,1.3,750.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+02,1.3,750.0), 8.681714972619e-01, TEST_TOL6); + TEST(gsl_cdf_flat_Qinv, (8.6817149726190368e-01,1.3,750.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+01,1.3,750.0), 9.883798584213e-01, TEST_TOL6); + TEST(gsl_cdf_flat_Qinv, (9.8837985842125353e-01,1.3,750.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e+00,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000001e-01,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-02,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-03,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-04,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000001e-05,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (9.9999999999999995e-07,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (9.9999999999999995e-08,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-08,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000001e-09,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (1.0000000000000000e-10,1.3,750.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_flat_Q, (0.0000000000000000e+00,1.3,750.0), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_lognormal (void); + + void + test_auto_lognormal (void) + { + TEST(gsl_cdf_lognormal_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-10,1.3,2.7), 1.034288276012e-19, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.0342882760115472e-19,1.3,2.7), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000001e-09,1.3,2.7), 1.720583234428e-16, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.7205832344275183e-16,1.3,2.7), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-08,1.3,2.7), 1.397140696550e-13, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.3971406965496307e-13,1.3,2.7), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (9.9999999999999995e-08,1.3,2.7), 5.550354890102e-11, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (5.5503548901015757e-11,1.3,2.7), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (9.9999999999999995e-07,1.3,2.7), 1.082087222875e-08, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.0820872228749844e-08,1.3,2.7), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000001e-05,1.3,2.7), 1.039815967490e-06, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.0398159674903829e-06,1.3,2.7), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-04,1.3,2.7), 4.956354352667e-05, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (4.9563543526667839e-05,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-03,1.3,2.7), 1.183246775456e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.1832467754562060e-03,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e-02,1.3,2.7), 1.436760981041e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (1.4367609810406523e-02,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000001e-01,1.3,2.7), 9.105428982941e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.1054289829405582e-02,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+00,1.3,2.7), 3.150871690838e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (3.1508716908375517e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+01,1.3,2.7), 6.448033073717e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (6.4480330737174019e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+02,1.3,2.7), 8.895497448370e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (8.8954974483702642e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+03,1.3,2.7), 9.810967467052e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.8109674670518154e-01,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+04,1.3,2.7), 9.983038570318e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.9830385703184354e-01,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+05,1.3,2.7), 9.999223897251e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Pinv, (9.9992238972508574e-01,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+06,1.3,2.7), 9.999982185389e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+07,1.3,2.7), 9.999999796956e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+08,1.3,2.7), 9.999999998859e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+09,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+10,1.3,2.7), 4.255893513650e-16, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (4.2558935136502785e-16,1.3,2.7), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+09,1.3,2.7), 3.150574023842e-13, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (3.1505740238418296e-13,1.3,2.7), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+08,1.3,2.7), 1.141445550080e-10, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.1414455500802107e-10,1.3,2.7), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+07,1.3,2.7), 2.030439602858e-08, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (2.0304396028576915e-08,1.3,2.7), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+06,1.3,2.7), 1.781461076603e-06, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.7814610766031938e-06,1.3,2.7), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+05,1.3,2.7), 7.761027491429e-05, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (7.7610274914290006e-05,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+04,1.3,2.7), 1.696142968157e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.6961429681565346e-03,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+03,1.3,2.7), 1.890325329482e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.8903253294818529e-02,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+02,1.3,2.7), 1.104502551630e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (1.1045025516297369e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+01,1.3,2.7), 3.551966926283e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (3.5519669262825992e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e+00,1.3,2.7), 6.849128309162e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (6.8491283091624500e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000001e-01,1.3,2.7), 9.089457101706e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (9.0894571017059467e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-02,1.3,2.7), 9.856323901896e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (9.8563239018959370e-01,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-03,1.3,2.7), 9.988167532245e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Qinv, (9.9881675322454400e-01,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-04,1.3,2.7), 9.999504364565e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000001e-05,1.3,2.7), 9.999989601840e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (9.9999999999999995e-07,1.3,2.7), 9.999999891791e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (9.9999999999999995e-08,1.3,2.7), 9.999999999445e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-08,1.3,2.7), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_lognormal_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_gamma (void); + + void + test_auto_gamma (void) + { + TEST(gsl_cdf_gamma_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-10,1.3,2.7), 2.356478475164e-14, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.3564784751638661e-14,1.3,2.7), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-09,1.3,2.7), 4.701792696644e-13, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (4.7017926966439445e-13,1.3,2.7), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-08,1.3,2.7), 9.381309762735e-12, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (9.3813097627346386e-12,1.3,2.7), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-08,1.3,2.7), 1.871817348197e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.8718173481972823e-10,1.3,2.7), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-07,1.3,2.7), 3.734765911711e-09, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (3.7347659117114240e-09,1.3,2.7), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-05,1.3,2.7), 7.451823639191e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (7.4518236391910116e-08,1.3,2.7), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-04,1.3,2.7), 1.486806276026e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.4868062760263472e-06,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-03,1.3,2.7), 2.966009681152e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.9660096811518665e-05,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-02,1.3,2.7), 5.906831032950e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (5.9068310329499826e-04,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-01,1.3,2.7), 1.156629233128e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.1566292331279586e-02,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+00,1.3,2.7), 1.921237769663e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.9212377696630473e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+01,1.3,2.7), 9.565035356115e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (9.5650353561153789e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+02,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+03,1.3,2.7), 9.292091038794e-161, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.2920910387939860e-161,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+02,1.3,2.7), 2.729167976527e-16, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (2.7291679765273174e-16,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+01,1.3,2.7), 4.349646438846e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (4.3496464388462192e-02,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+00,1.3,2.7), 8.078762230337e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (8.0787622303369533e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-01,1.3,2.7), 9.884337076687e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.8843370766872041e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-02,1.3,2.7), 9.994093168967e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.9940931689670498e-01,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-03,1.3,2.7), 9.999703399032e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-04,1.3,2.7), 9.999985131937e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-05,1.3,2.7), 9.999999254818e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-07,1.3,2.7), 9.999999962652e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-08,1.3,2.7), 9.999999998128e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-08,1.3,2.7), 9.999999999906e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-09,1.3,2.7), 9.999999999995e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_chisq (void); + + void + test_auto_chisq (void) + { + TEST(gsl_cdf_chisq_P, (0.0000000000000000e+00,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-10,1.3), 2.238884178785e-07, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (2.2388841787852728e-07,1.3), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000001e-09,1.3), 1.000072827212e-06, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.0000728272124926e-06,1.3), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-08,1.3), 4.467161220799e-06, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (4.4671612207994108e-06,1.3), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (9.9999999999999995e-08,1.3), 1.995407585451e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.9954075854510294e-05,1.3), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (9.9999999999999995e-07,1.3), 8.913156700686e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (8.9131567006858211e-05,1.3), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000001e-05,1.3), 3.981353794611e-04, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (3.9813537946105002e-04,1.3), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-04,1.3), 1.778373888800e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.7783738888003920e-03,1.3), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-03,1.3), 7.942296379590e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (7.9422963795896199e-03,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e-02,1.3), 3.541413902540e-02, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (3.5414139025402407e-02,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000001e-01,1.3), 1.554268895840e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (1.5542688958403586e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+00,1.3), 5.878620132779e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (5.8786201327788579e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+01,1.3), 9.973867890205e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Pinv, (9.9738678902053046e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+03,1.3), 5.840240518729e-219, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (5.8402405187288964e-219,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+02,1.3), 3.517864771108e-23, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (3.5178647711076648e-23,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+01,1.3), 2.613210979470e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (2.6132109794696230e-03,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e+00,1.3), 4.121379867221e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (4.1213798672211427e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000001e-01,1.3), 8.445731104160e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (8.4457311041596417e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-02,1.3), 9.645858609746e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.6458586097459775e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-03,1.3), 9.920577036204e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.9205770362041057e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-04,1.3), 9.982216261112e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.9822162611119969e-01,1.3), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000001e-05,1.3), 9.996018646205e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Qinv, (9.9960186462053913e-01,1.3), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (9.9999999999999995e-07,1.3), 9.999108684330e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (9.9999999999999995e-08,1.3), 9.999800459241e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-08,1.3), 9.999955328388e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000001e-09,1.3), 9.999989999272e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (1.0000000000000000e-10,1.3), 9.999997761116e-01, TEST_TOL6); + TEST(gsl_cdf_chisq_Q, (0.0000000000000000e+00,1.3), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_tdist (void); + + void + test_auto_tdist (void) + { + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+10,1.3), 3.467848111850e-14, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (3.4678481118500305e-14,1.3), -1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+09,1.3), 6.919266651610e-13, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (6.9192666516103524e-13,1.3), -1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+08,1.3), 1.380575199718e-11, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (1.3805751997179027e-11,1.3), -1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+07,1.3), 2.754609668978e-10, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (2.7546096689777484e-10,1.3), -1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+06,1.3), 5.496168864957e-09, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.4961688649569980e-09,1.3), -1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+05,1.3), 1.096629861231e-07, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (1.0966298612314582e-07,1.3), -1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+04,1.3), 2.188064222827e-06, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (2.1880642228271703e-06,1.3), -1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+03,1.3), 4.365759541083e-05, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.3657595410833571e-05,1.3), -1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+02,1.3), 8.710327647608e-04, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (8.7103276476079201e-04,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+01,1.3), 1.727893386820e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (1.7278933868204446e-02,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e+00,1.3), 2.336211937932e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (2.3362119379322516e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000001e-01,1.3), 4.667575980083e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.6675759800826139e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-02,1.3), 4.966660755117e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.9666607551169606e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-03,1.3), 4.996665978189e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.9966659781887629e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-04,1.3), 4.999666597722e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000001e-05,1.3), 4.999966659772e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-9.9999999999999995e-07,1.3), 4.999996665977e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-9.9999999999999995e-08,1.3), 4.999999666598e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-08,1.3), 4.999999966660e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000001e-09,1.3), 4.999999996666e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (-1.0000000000000000e-10,1.3), 4.999999999667e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (4.9999999999999900e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-10,1.3), 5.000000000333e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000001e-09,1.3), 5.000000003334e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-08,1.3), 5.000000033340e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (9.9999999999999995e-08,1.3), 5.000000333402e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (9.9999999999999995e-07,1.3), 5.000003334023e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000001e-05,1.3), 5.000033340228e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-04,1.3), 5.000333402278e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-03,1.3), 5.003334021811e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.0033340218112365e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e-02,1.3), 5.033339244883e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.0333392448830394e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000001e-01,1.3), 5.332424019917e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (5.3324240199173856e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+00,1.3), 7.663788062068e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (7.6637880620677490e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+01,1.3), 9.827210661318e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (9.8272106613179555e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+02,1.3), 9.991289672352e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Pinv, (9.9912896723523925e-01,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+03,1.3), 9.999563424046e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+04,1.3), 9.999978119358e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+05,1.3), 9.999998903370e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+06,1.3), 9.999999945038e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+07,1.3), 9.999999997245e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+08,1.3), 9.999999999862e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+09,1.3), 9.999999999993e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_P, (1.0000000000000000e+10,1.3), 1.000000000000e-00, TEST_TOL6); + + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+10,1.3), 3.467848111850e-14, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (3.4678481118500305e-14,1.3), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+09,1.3), 6.919266651610e-13, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (6.9192666516103524e-13,1.3), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+08,1.3), 1.380575199718e-11, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (1.3805751997179027e-11,1.3), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+07,1.3), 2.754609668978e-10, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (2.7546096689777484e-10,1.3), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+06,1.3), 5.496168864957e-09, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.4961688649569980e-09,1.3), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+05,1.3), 1.096629861231e-07, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (1.0966298612314582e-07,1.3), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+04,1.3), 2.188064222827e-06, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (2.1880642228271703e-06,1.3), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+03,1.3), 4.365759541083e-05, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.3657595410833571e-05,1.3), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+02,1.3), 8.710327647608e-04, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (8.7103276476079201e-04,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+01,1.3), 1.727893386820e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (1.7278933868204446e-02,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e+00,1.3), 2.336211937932e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (2.3362119379322516e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000001e-01,1.3), 4.667575980083e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.6675759800826139e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-02,1.3), 4.966660755117e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.9666607551169606e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-03,1.3), 4.996665978189e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.9966659781887629e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-04,1.3), 4.999666597722e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000001e-05,1.3), 4.999966659772e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (9.9999999999999995e-07,1.3), 4.999996665977e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (9.9999999999999995e-08,1.3), 4.999999666598e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-08,1.3), 4.999999966660e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000001e-09,1.3), 4.999999996666e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (1.0000000000000000e-10,1.3), 4.999999999667e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (4.9999999999999900e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-10,1.3), 5.000000000333e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000001e-09,1.3), 5.000000003334e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-08,1.3), 5.000000033340e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-9.9999999999999995e-08,1.3), 5.000000333402e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-9.9999999999999995e-07,1.3), 5.000003334023e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000001e-05,1.3), 5.000033340228e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-04,1.3), 5.000333402278e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-03,1.3), 5.003334021811e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.0033340218112365e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e-02,1.3), 5.033339244883e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.0333392448830394e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000001e-01,1.3), 5.332424019917e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (5.3324240199173856e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+00,1.3), 7.663788062068e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (7.6637880620677490e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+01,1.3), 9.827210661318e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (9.8272106613179555e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+02,1.3), 9.991289672352e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Qinv, (9.9912896723523925e-01,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+03,1.3), 9.999563424046e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+04,1.3), 9.999978119358e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+05,1.3), 9.999998903370e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+06,1.3), 9.999999945038e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+07,1.3), 9.999999997245e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+08,1.3), 9.999999999862e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+09,1.3), 9.999999999993e-01, TEST_TOL6); + TEST(gsl_cdf_tdist_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e-00, TEST_TOL6); + } + + void test_auto_gumbel1 (void); + + void + test_auto_gumbel1 (void) + { + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+01,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e+00,1.3,2.7), 4.981965353092e-05, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (4.9819653530918237e-05,1.3,2.7), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000001e-01,1.3,2.7), 4.619717476780e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (4.6197174767798083e-02,1.3,2.7), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-02,1.3,2.7), 6.487265128366e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.4872651283663055e-02,1.3,2.7), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-03,1.3,2.7), 6.696988203722e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.6969882037217598e-02,1.3,2.7), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-04,1.3,2.7), 6.718192621136e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7181926211364873e-02,1.3,2.7), -1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000001e-05,1.3,2.7), 6.720315385232e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-9.9999999999999995e-07,1.3,2.7), 6.720527684866e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-9.9999999999999995e-08,1.3,2.7), 6.720548915062e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-08,1.3,2.7), 6.720551038084e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000001e-09,1.3,2.7), 6.720551250386e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (-1.0000000000000000e-10,1.3,2.7), 6.720551271616e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (0.0000000000000000e+00,1.3,2.7), 6.720551273975e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7205512739749951e-02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-10,1.3,2.7), 6.720551276334e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000001e-09,1.3,2.7), 6.720551297564e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-08,1.3,2.7), 6.720551509866e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (9.9999999999999995e-08,1.3,2.7), 6.720553632889e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (9.9999999999999995e-07,1.3,2.7), 6.720574863136e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000001e-05,1.3,2.7), 6.720787167931e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-04,1.3,2.7), 6.722910448133e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7229104481333457e-02,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-03,1.3,2.7), 6.744166476190e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.7441664761898834e-02,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e-02,1.3,2.7), 6.959050352518e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (6.9590503525179814e-02,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000001e-01,1.3,2.7), 9.340058564429e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (9.3400585644290435e-02,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+00,1.3,2.7), 4.791048360125e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Pinv, (4.7910483601248477e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+01,1.3,2.7), 9.999938971292e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+02,1.3,2.7), 9.398988467742e-57, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3989884677416057e-57,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+01,1.3,2.7), 6.102870776257e-06, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (6.1028707762572197e-06,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e+00,1.3,2.7), 5.208951639875e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (5.2089516398751523e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000001e-01,1.3,2.7), 9.065994143557e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.0659941435570957e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-02,1.3,2.7), 9.304094964748e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3040949647482019e-01,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-03,1.3,2.7), 9.325583352381e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3255833523810117e-01,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-04,1.3,2.7), 9.327708955187e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000001e-05,1.3,2.7), 9.327921283207e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (9.9999999999999995e-07,1.3,2.7), 9.327942513686e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (9.9999999999999995e-08,1.3,2.7), 9.327944636711e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-08,1.3,2.7), 9.327944849013e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000001e-09,1.3,2.7), 9.327944870244e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (1.0000000000000000e-10,1.3,2.7), 9.327944872367e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (0.0000000000000000e+00,1.3,2.7), 9.327944872603e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3279448726025027e-01,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-10,1.3,2.7), 9.327944872838e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000001e-09,1.3,2.7), 9.327944874961e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-08,1.3,2.7), 9.327944896192e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-9.9999999999999995e-08,1.3,2.7), 9.327945108494e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-9.9999999999999995e-07,1.3,2.7), 9.327947231513e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000001e-05,1.3,2.7), 9.327968461477e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-04,1.3,2.7), 9.328180737886e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-03,1.3,2.7), 9.330301179628e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3303011796278246e-01,1.3,2.7), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e-02,1.3,2.7), 9.351273487163e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.3512734871633696e-01,1.3,2.7), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000001e-01,1.3,2.7), 9.538028252322e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.5380282523220195e-01,1.3,2.7), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+00,1.3,2.7), 9.999501803465e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Qinv, (9.9995018034646910e-01,1.3,2.7), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel1_Q, (-1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_gumbel2 (void); + + void + test_auto_gumbel2 (void) + { + TEST(gsl_cdf_gumbel2_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000001e-09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (9.9999999999999995e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (9.9999999999999995e-07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000001e-05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e-02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000001e-01,1.3,2.7), 4.014688368993e-24, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (4.0146883689934746e-24,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+00,1.3,2.7), 6.720551273975e-02, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (6.7205512739749743e-02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+01,1.3,2.7), 8.734358842463e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (8.7343588424628138e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+02,1.3,2.7), 9.932408531257e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (9.9324085312574451e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+03,1.3,2.7), 9.996601479016e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Pinv, (9.9966014790162783e-01,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+04,1.3,2.7), 9.999829642968e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+05,1.3,2.7), 9.999991461854e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+06,1.3,2.7), 9.999999572079e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+07,1.3,2.7), 9.999999978553e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+08,1.3,2.7), 9.999999998925e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+09,1.3,2.7), 9.999999999946e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_P, (1.0000000000000000e+10,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+10,1.3,2.7), 2.700000000000e-13, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (2.6999999999996492e-13,1.3,2.7), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+09,1.3,2.7), 5.387208250401e-12, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (5.3872082504014914e-12,1.3,2.7), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+08,1.3,2.7), 1.074889360437e-10, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (1.0748893604366781e-10,1.3,2.7), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+07,1.3,2.7), 2.144686231456e-09, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (2.1446862314557286e-09,1.3,2.7), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+06,1.3,2.7), 4.279211528087e-08, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (4.2792115280867646e-08,1.3,2.7), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+05,1.3,2.7), 8.538146037456e-07, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (8.5381460374556900e-07,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+04,1.3,2.7), 1.703570319173e-05, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (1.7035703191725618e-05,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+03,1.3,2.7), 3.398520983725e-04, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (3.3985209837246249e-04,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+02,1.3,2.7), 6.759146874256e-03, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (6.7591468742558315e-03,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+01,1.3,2.7), 1.265641157537e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (1.2656411575371904e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e+00,1.3,2.7), 9.327944872603e-01, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Qinv, (9.3279448726025116e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000001e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000001e-05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (9.9999999999999995e-07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (9.9999999999999995e-08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gumbel2_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_weibull (void); + + void + test_auto_weibull (void) + { + TEST(gsl_cdf_weibull_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-10,1.3,2.7), 4.924395760785e-28, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (4.9243957607852698e-28,1.3,2.7), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000001e-09,1.3,2.7), 2.468044288634e-25, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (2.4680442886338381e-25,1.3,2.7), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-08,1.3,2.7), 1.236952289490e-22, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (1.2369522894899823e-22,1.3,2.7), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (9.9999999999999995e-08,1.3,2.7), 6.199446960984e-20, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (6.1994469609840516e-20,1.3,2.7), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (9.9999999999999995e-07,1.3,2.7), 3.107083672395e-17, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (3.1070836723945982e-17,1.3,2.7), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000001e-05,1.3,2.7), 1.557230670416e-14, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (1.5572306704159031e-14,1.3,2.7), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-04,1.3,2.7), 7.804641318223e-12, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (7.8046413182225018e-12,1.3,2.7), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-03,1.3,2.7), 3.911586584098e-09, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (3.9115865840980536e-09,1.3,2.7), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e-02,1.3,2.7), 1.960435341356e-06, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (1.9604353413559907e-06,1.3,2.7), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000001e-01,1.3,2.7), 9.820635881537e-04, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (9.8206358815371392e-04,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+00,1.3,2.7), 3.888663329609e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Pinv, (3.8886633296085954e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+05,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+06,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+07,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_P, (1.0000000000000000e+10,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+06,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+01,1.3,2.7), 6.519262004070e-108, TEST_TOL6); + TEST(gsl_cdf_weibull_Qinv, (6.5192620040698617e-108,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e+00,1.3,2.7), 6.111336670391e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Qinv, (6.1113366703914040e-01,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000001e-01,1.3,2.7), 9.990179364118e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Qinv, (9.9901793641184633e-01,1.3,2.7), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-02,1.3,2.7), 9.999980395647e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-03,1.3,2.7), 9.999999960884e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-04,1.3,2.7), 9.999999999922e-01, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000001e-05,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (9.9999999999999995e-07,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (9.9999999999999995e-08,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-08,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_weibull_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_pareto (void); + + void + test_auto_pareto (void) + { + TEST(gsl_cdf_pareto_P, (0.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-10,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000001e-09,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (9.9999999999999995e-08,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (9.9999999999999995e-07,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000001e-05,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-04,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-03,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e-02,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000001e-01,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+00,1.3,2.7), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+01,1.3,2.7), 8.177057822240e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Pinv, (8.1770578222395374e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+02,1.3,2.7), 9.908636465287e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Pinv, (9.9086364652869807e-01,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+03,1.3,2.7), 9.995420976279e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Pinv, (9.9954209762786816e-01,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+04,1.3,2.7), 9.999770505177e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+05,1.3,2.7), 9.999988498013e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+06,1.3,2.7), 9.999999423535e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+07,1.3,2.7), 9.999999971109e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+08,1.3,2.7), 9.999999998552e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+09,1.3,2.7), 9.999999999928e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_P, (1.0000000000000000e+10,1.3,2.7), 9.999999999997e-01, TEST_TOL6); + + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+10,1.3,2.7), 3.637247829654e-13, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (3.6372478296536173e-13,1.3,2.7), 1.000000000000e+10, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+09,1.3,2.7), 7.257263524710e-12, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (7.2572635247102111e-12,1.3,2.7), 1.000000000000e+09, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+08,1.3,2.7), 1.448014442065e-10, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (1.4480144420652496e-10,1.3,2.7), 1.000000000000e+08, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+07,1.3,2.7), 2.889168647783e-09, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (2.8891686477834784e-09,1.3,2.7), 1.000000000000e+07, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+06,1.3,2.7), 5.764649324512e-08, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (5.7646493245119715e-08,1.3,2.7), 1.000000000000e+06, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+05,1.3,2.7), 1.150198755621e-06, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (1.1501987556209536e-06,1.3,2.7), 1.000000000000e+05, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+04,1.3,2.7), 2.294948231815e-05, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (2.2949482318145872e-05,1.3,2.7), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+03,1.3,2.7), 4.579023721744e-04, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (4.5790237217441070e-04,1.3,2.7), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+02,1.3,2.7), 9.136353471345e-03, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (9.1363534713445622e-03,1.3,2.7), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+01,1.3,2.7), 1.822942177761e-01, TEST_TOL6); + TEST(gsl_cdf_pareto_Qinv, (1.8229421777608898e-01,1.3,2.7), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e+00,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000001e-01,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-02,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-03,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-04,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000001e-05,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (9.9999999999999995e-07,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (9.9999999999999995e-08,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-08,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000001e-09,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (1.0000000000000000e-10,1.3,2.7), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_pareto_Q, (0.0000000000000000e+00,1.3,2.7), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_logistic (void); + + void + test_auto_logistic (void) + { + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+02,1.3), 3.915003559824e-34, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (3.9150035598244656e-34,1.3), -1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+01,1.3), 4.561157640565e-04, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.5611576405646045e-04,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e+00,1.3), 3.166455298122e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (3.1664552981221700e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000001e-01,1.3), 4.807787077894e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.8077870778939180e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-02,1.3), 4.980769325595e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.9807693255949481e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-03,1.3), 4.998076923172e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (4.9980769231717492e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-04,1.3), 4.999807692308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000001e-05,1.3), 4.999980769231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-9.9999999999999995e-07,1.3), 4.999998076923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-9.9999999999999995e-08,1.3), 4.999999807692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-08,1.3), 4.999999980769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000001e-09,1.3), 4.999999998077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (-1.0000000000000000e-10,1.3), 4.999999999808e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-10,1.3), 5.000000000192e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000001e-09,1.3), 5.000000001923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-08,1.3), 5.000000019231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (9.9999999999999995e-08,1.3), 5.000000192308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (9.9999999999999995e-07,1.3), 5.000001923077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000001e-05,1.3), 5.000019230769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-04,1.3), 5.000192307692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-03,1.3), 5.001923076828e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.0019230768282508e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e-02,1.3), 5.019230674405e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.0192306744050519e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000001e-01,1.3), 5.192212922106e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (5.1922129221060820e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+00,1.3), 6.833544701878e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (6.8335447018778295e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+01,1.3), 9.995438842359e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Pinv, (9.9954388423594354e-01,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_P, (1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+10,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+09,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+08,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+07,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+06,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+05,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+04,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+03,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+02,1.3), 3.915003559824e-34, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (3.9150035598244656e-34,1.3), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+01,1.3), 4.561157640565e-04, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.5611576405646045e-04,1.3), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e+00,1.3), 3.166455298122e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (3.1664552981221700e-01,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000001e-01,1.3), 4.807787077894e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.8077870778939180e-01,1.3), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-02,1.3), 4.980769325595e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.9807693255949481e-01,1.3), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-03,1.3), 4.998076923172e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (4.9980769231717492e-01,1.3), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-04,1.3), 4.999807692308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000001e-05,1.3), 4.999980769231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (9.9999999999999995e-07,1.3), 4.999998076923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (9.9999999999999995e-08,1.3), 4.999999807692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-08,1.3), 4.999999980769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000001e-09,1.3), 4.999999998077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (1.0000000000000000e-10,1.3), 4.999999999808e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (0.0000000000000000e+00,1.3), 5.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.0000000000000000e-01,1.3), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-10,1.3), 5.000000000192e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000001e-09,1.3), 5.000000001923e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-08,1.3), 5.000000019231e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-9.9999999999999995e-08,1.3), 5.000000192308e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-9.9999999999999995e-07,1.3), 5.000001923077e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000001e-05,1.3), 5.000019230769e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-04,1.3), 5.000192307692e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-03,1.3), 5.001923076828e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.0019230768282508e-01,1.3), -1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e-02,1.3), 5.019230674405e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.0192306744050519e-01,1.3), -1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000001e-01,1.3), 5.192212922106e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (5.1922129221060820e-01,1.3), -1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+00,1.3), 6.833544701878e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (6.8335447018778295e-01,1.3), -1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+01,1.3), 9.995438842359e-01, TEST_TOL6); + TEST(gsl_cdf_logistic_Qinv, (9.9954388423594354e-01,1.3), -1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+02,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+03,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+04,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+05,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+06,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+07,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+08,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+09,1.3), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_logistic_Q, (-1.0000000000000000e+10,1.3), 1.000000000000e+00, TEST_TOL6); + } + + void test_auto_gammalarge (void); + + void + test_auto_gammalarge (void) + { + TEST(gsl_cdf_gamma_P, (0.0000000000000000e+00,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-10,1.3,123.0), 1.644976604681e-16, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.6449766046812008e-16,1.3,123.0), 1.000000000000e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-09,1.3,123.0), 3.282159828312e-15, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (3.2821598283122862e-15,1.3,123.0), 1.000000000000e-09, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-08,1.3,123.0), 6.548769816865e-14, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (6.5487698168653935e-14,1.3,123.0), 1.000000000000e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-08,1.3,123.0), 1.306651361959e-12, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.3066513619593202e-12,1.3,123.0), 1.000000000000e-07, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (9.9999999999999995e-07,1.3,123.0), 2.607112210538e-11, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.6071122105378624e-11,1.3,123.0), 1.000000000000e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-05,1.3,123.0), 5.201872529446e-10, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (5.2018725294456393e-10,1.3,123.0), 1.000000000000e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-04,1.3,123.0), 1.037909593275e-08, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.0379095932752980e-08,1.3,123.0), 1.000000000000e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-03,1.3,123.0), 2.070893333124e-07, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (2.0708933331240137e-07,1.3,123.0), 1.000000000000e-03, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e-02,1.3,123.0), 4.131804542806e-06, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (4.1318045428061286e-06,1.3,123.0), 1.000000000000e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000001e-01,1.3,123.0), 8.240625287202e-05, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (8.2406252872017186e-05,1.3,123.0), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+00,1.3,123.0), 1.637438876041e-03, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (1.6374388760411608e-03,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+01,1.3,123.0), 3.135521671622e-02, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (3.1355216716223523e-02,1.3,123.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+02,1.3,123.0), 4.240385705334e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (4.2403857053338523e-01,1.3,123.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+03,1.3,123.0), 9.993635318324e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Pinv, (9.9936353183235616e-01,1.3,123.0), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+04,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+05,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+06,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+07,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+08,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+09,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_P, (1.0000000000000000e+10,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+10,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+09,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+08,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+07,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+06,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+05,1.3,123.0), 0.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+04,1.3,123.0), 2.056363344745e-35, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (2.0563633447452943e-35,1.3,123.0), 1.000000000000e+04, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+03,1.3,123.0), 6.364681676440e-04, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (6.3646816764395531e-04,1.3,123.0), 1.000000000000e+03, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+02,1.3,123.0), 5.759614294666e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (5.7596142946661488e-01,1.3,123.0), 1.000000000000e+02, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+01,1.3,123.0), 9.686447832838e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.6864478328377646e-01,1.3,123.0), 1.000000000000e+01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e+00,1.3,123.0), 9.983625611240e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.9836256112395882e-01,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-01,1.3,123.0), 9.999175937471e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Qinv, (9.9991759374712796e-01,1.3,123.0), 1.000000000000e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-02,1.3,123.0), 9.999958681955e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-03,1.3,123.0), 9.999997929107e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-04,1.3,123.0), 9.999999896209e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-05,1.3,123.0), 9.999999994798e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-07,1.3,123.0), 9.999999999739e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (9.9999999999999995e-08,1.3,123.0), 9.999999999987e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-08,1.3,123.0), 9.999999999999e-01, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000001e-09,1.3,123.0), 1.000000000000e-00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (1.0000000000000000e-10,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + TEST(gsl_cdf_gamma_Q, (0.0000000000000000e+00,1.3,123.0), 1.000000000000e+00, TEST_TOL6); + } + diff -x.info* -rc2P gsl-1.3/cdf/weibull.c gsl-1.4/cdf/weibull.c *** gsl-1.3/cdf/weibull.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/weibull.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,37 ---- + /* cdf/weibull.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_weibull_P (const double x, const double a, const double b) + { + double P = -expm1 (-pow(x/a, b)); + return P; + } + + double + gsl_cdf_weibull_Q (const double x, const double a, const double b) + { + double Q = exp (-pow(x/a, b)); + return Q; + } diff -x.info* -rc2P gsl-1.3/cdf/weibullinv.c gsl-1.4/cdf/weibullinv.c *** gsl-1.3/cdf/weibullinv.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/cdf/weibullinv.c Fri Jul 25 15:18:09 2003 *************** *** 0 **** --- 1,61 ---- + /* cdf/weibullinv.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + double + gsl_cdf_weibull_Pinv (const double P, const double a, const double b) + { + double x; + + if (P == 1.0) + { + return GSL_POSINF; + } + else if (P == 0.0) + { + return 0.0; + } + + x = a * pow(-log1p(-P), 1/b); + + return x; + } + + double + gsl_cdf_weibull_Qinv (const double Q, const double a, const double b) + { + double x; + + if (Q == 0.0) + { + return GSL_POSINF; + } + else if (Q == 1.0) + { + return 0.0; + } + + x = a * pow(-log(Q), 1/b); + + return x; + } diff -x.info* -rc2P gsl-1.3/cheb/ChangeLog gsl-1.4/cheb/ChangeLog *** gsl-1.3/cheb/ChangeLog Fri May 24 18:24:13 2002 --- gsl-1.4/cheb/ChangeLog Mon Jun 9 15:30:25 2003 *************** *** 1,2 **** --- 1,11 ---- + 2003-06-09 Brian Gough + + * test.c (main): added some tests for the coefficients + + 2003-02-09 Brian Gough + + * gsl_chebyshev.h: added missing #include for gsl_math (to declare + gsl_function) fixes Debian Bug#179665 + Fri May 24 19:23:47 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/cheb/Makefile.am gsl-1.4/cheb/Makefile.am *** gsl-1.3/cheb/Makefile.am Wed Jun 6 17:10:10 2001 --- gsl-1.4/cheb/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 11,15 **** check_PROGRAMS = test ! test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 11,15 ---- check_PROGRAMS = test ! test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/cheb/Makefile.in gsl-1.4/cheb/Makefile.in *** gsl-1.3/cheb/Makefile.in Wed Dec 18 22:37:02 2002 --- gsl-1.4/cheb/Makefile.in Thu Aug 14 12:31:08 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslcheb.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslcheb.la *************** *** 97,192 **** check_PROGRAMS = test ! test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslcheb_la_LDFLAGS = ! libgslcheb_la_LIBADD = ! libgslcheb_la_OBJECTS = deriv.lo eval.lo init.lo integ.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslcheb.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslcheb_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps cheb/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,239 ---- check_PROGRAMS = test ! test_LDADD = libgslcheb.la ../ieee-utils/libgslieeeutils.la ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la test_SOURCES = test.c + subdir = cheb + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslcheb_la_LDFLAGS = ! libgslcheb_la_LIBADD = ! am_libgslcheb_la_OBJECTS = deriv.lo eval.lo init.lo integ.lo ! libgslcheb_la_OBJECTS = $(am_libgslcheb_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslcheb.la ../ieee-utils/libgslieeeutils.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../err/libgslerr.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgslcheb_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu cheb/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslcheb.la: $(libgslcheb_la_OBJECTS) $(libgslcheb_la_DEPENDENCIES) + $(LINK) $(libgslcheb_la_LDFLAGS) $(libgslcheb_la_OBJECTS) $(libgslcheb_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 197,333 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslcheb.la: $(libgslcheb_la_OBJECTS) $(libgslcheb_la_DEPENDENCIES) ! $(LINK) $(libgslcheb_la_LDFLAGS) $(libgslcheb_la_OBJECTS) $(libgslcheb_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = cheb distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 244,448 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 336,385 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 451,517 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/cheb/eval.c gsl-1.4/cheb/eval.c *** gsl-1.3/cheb/eval.c Mon Nov 19 21:39:36 2001 --- gsl-1.4/cheb/eval.c Fri Jul 25 15:18:10 2003 *************** *** 72,76 **** int gsl_cheb_eval_err (const gsl_cheb_series * cs, const double x, ! double *result, double *abserr) { size_t i; --- 72,76 ---- int gsl_cheb_eval_err (const gsl_cheb_series * cs, const double x, ! double *result, double *abserr) { size_t i; *************** *** 108,113 **** int gsl_cheb_eval_n_err (const gsl_cheb_series * cs, ! const size_t n, const double x, ! double *result, double *abserr) { size_t i; --- 108,113 ---- int gsl_cheb_eval_n_err (const gsl_cheb_series * cs, ! const size_t n, const double x, ! double *result, double *abserr) { size_t i; *************** *** 147,152 **** int gsl_cheb_eval_mode_e (const gsl_cheb_series * cs, ! const double x, gsl_mode_t mode, ! double *result, double *abserr) { size_t i; --- 147,152 ---- int gsl_cheb_eval_mode_e (const gsl_cheb_series * cs, ! const double x, gsl_mode_t mode, ! double *result, double *abserr) { size_t i; diff -x.info* -rc2P gsl-1.3/cheb/gsl_chebyshev.h gsl-1.4/cheb/gsl_chebyshev.h *** gsl-1.3/cheb/gsl_chebyshev.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/cheb/gsl_chebyshev.h Fri Jul 25 15:18:17 2003 *************** *** 21,24 **** --- 21,25 ---- #define __GSL_CHEBYSHEV_H__ + #include #include diff -x.info* -rc2P gsl-1.3/cheb/test.c gsl-1.4/cheb/test.c *** gsl-1.3/cheb/test.c Mon Nov 19 21:39:36 2001 --- gsl-1.4/cheb/test.c Fri Jul 25 15:18:10 2003 *************** *** 26,29 **** --- 26,44 ---- #include + double f_T0 (double x, void * p) { + p = 0; + return 1.0; + } + + double f_T1 (double x, void * p) { + p = 0; + return x; + } + + double f_T2 (double x, void * p) { + p = 0; + return 2*x*x - 1; + } + double f_sin (double x, void * p) { p = 0; *************** *** 35,39 **** { double tol = 100.0 * GSL_DBL_EPSILON; ! double x; gsl_cheb_series * cs = gsl_cheb_alloc(40); --- 50,55 ---- { double tol = 100.0 * GSL_DBL_EPSILON; ! double x; ! size_t i; gsl_cheb_series * cs = gsl_cheb_alloc(40); *************** *** 41,52 **** gsl_cheb_series * csi = gsl_cheb_alloc(40); ! gsl_function F_sin; F_sin.function = f_sin; F_sin.params = 0; gsl_ieee_env_setup(); gsl_cheb_init(cs, &F_sin, -M_PI, M_PI); for(x=-M_PI; xorder; i++) + { + double c_exp = (i == 0) ? 2.0 : 0.0; + gsl_test_abs (cs->c[i], c_exp, tol, "c[%d] for T_0(x)", i); + } + + gsl_cheb_init(cs, &F_T1, -1.0, 1.0); + + for (i = 0; iorder; i++) + { + double c_exp = (i == 1) ? 1.0 : 0.0; + gsl_test_abs (cs->c[i], c_exp, tol, "c[%d] for T_1(x)", i); + } + + gsl_cheb_init(cs, &F_T2, -1.0, 1.0); + + for (i = 0; iorder; i++) + { + double c_exp = (i == 2) ? 1.0 : 0.0; + gsl_test_abs (cs->c[i], c_exp, tol, "c[%d] for T_2(x)", i); + } + gsl_cheb_init(cs, &F_sin, -M_PI, M_PI); + + gsl_test_abs (cs->c[0], 0.0, tol, "c[0] for F_sin(x)"); + gsl_test_abs (cs->c[1], 5.69230686359506e-01, tol, "c[1] for F_sin(x)"); + gsl_test_abs (cs->c[2], 0.0, tol, "c[2] for F_sin(x)"); + gsl_test_abs (cs->c[3], -6.66916672405979e-01, tol, "c[3] for F_sin(x)"); + gsl_test_abs (cs->c[4], 0.0, tol, "c[4] for F_sin(x)"); + gsl_test_abs (cs->c[5], 1.04282368734237e-01, tol, "c[5] for F_sin(x)"); for(x=-M_PI; x + + * init.c (gsl_combination_alloc): set c->data to NULL when k=0 + + 2003-04-12 Szymon Jaroszewicz + + * combination.c (gsl_combination_valid): fix a typo in error + message + + 2003-03-22 Brian Gough + + * combination.c (gsl_combination_memcpy): added memcpy function + + 2003-03-21 Brian Gough + + * combination.c (gsl_combination_valid): fix bug in test for + validity (cj diff -x.info* -rc2P gsl-1.3/combination/Makefile.am gsl-1.4/combination/Makefile.am *** gsl-1.3/combination/Makefile.am Sat Dec 8 22:10:37 2001 --- gsl-1.4/combination/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 15,23 **** test_SOURCES = test.c ! test_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #noinst_PROGRAMS = demo #demo_SOURCES = demo.c ! #demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #CLEANFILES = test.txt test.dat --- 15,23 ---- test_SOURCES = test.c ! test_LDADD = libgslcombination.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #noinst_PROGRAMS = demo #demo_SOURCES = demo.c ! #demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #CLEANFILES = test.txt test.dat diff -x.info* -rc2P gsl-1.3/combination/Makefile.in gsl-1.4/combination/Makefile.in *** gsl-1.3/combination/Makefile.in Wed Dec 18 22:37:35 2002 --- gsl-1.4/combination/Makefile.in Thu Aug 14 12:30:51 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslcombination.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslcombination.la *************** *** 101,193 **** test_SOURCES = test.c ! test_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslcombination_la_LDFLAGS = ! libgslcombination_la_LIBADD = ! libgslcombination_la_OBJECTS = init.lo file.lo combination.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslcombination.la ../vector/libgslvector.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslcombination_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps combination/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 157,243 ---- test_SOURCES = test.c ! test_LDADD = libgslcombination.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = combination ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslcombination_la_LDFLAGS = ! libgslcombination_la_LIBADD = ! am_libgslcombination_la_OBJECTS = init.lo file.lo combination.lo ! libgslcombination_la_OBJECTS = $(am_libgslcombination_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslcombination.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in SOURCES = $(libgslcombination_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu combination/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslcombination.la: $(libgslcombination_la_OBJECTS) $(libgslcombination_la_DEPENDENCIES) + $(LINK) $(libgslcombination_la_LDFLAGS) $(libgslcombination_la_OBJECTS) $(libgslcombination_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 198,334 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslcombination.la: $(libgslcombination_la_OBJECTS) $(libgslcombination_la_DEPENDENCIES) ! $(LINK) $(libgslcombination_la_LDFLAGS) $(libgslcombination_la_OBJECTS) $(libgslcombination_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = combination distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 248,452 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 337,393 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean #noinst_PROGRAMS = demo #demo_SOURCES = demo.c ! #demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #CLEANFILES = test.txt test.dat - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 455,528 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ! clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-libtool distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-pkgincludeHEADERS \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ ! pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS #noinst_PROGRAMS = demo #demo_SOURCES = demo.c ! #demo_LDADD = libgslcombination.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #CLEANFILES = test.txt test.dat # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/combination/combination.c gsl-1.4/combination/combination.c *** gsl-1.3/combination/combination.c Wed Dec 12 23:21:33 2001 --- gsl-1.4/combination/combination.c Fri Jul 25 15:18:10 2003 *************** *** 23,28 **** #include - extern int gsl_check_range ; /* defined in vector/vector.c */ - size_t gsl_combination_n (const gsl_combination * c) --- 23,26 ---- *************** *** 49,56 **** if (gsl_check_range) { ! if (i >= c->k) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); ! } } --- 47,54 ---- if (gsl_check_range) { ! if (i >= c->k) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); ! } } *************** *** 74,78 **** for (i = 0; i < k; i++) { ! if (c->data[i] >= n) { GSL_ERROR("combination index outside range", GSL_FAILURE) ; --- 72,78 ---- for (i = 0; i < k; i++) { ! const size_t ci = c->data[i]; ! ! if (ci >= n) { GSL_ERROR("combination index outside range", GSL_FAILURE) ; *************** *** 81,92 **** for (j = 0; j < i; j++) { ! if (c->data[i] == c->data[j]) { GSL_ERROR("duplicate combination index", GSL_FAILURE) ; } ! if (c->data[i] > c->data[j]) { ! GSL_ERROR("combination index no in increasing order", ! GSL_FAILURE) ; } } --- 81,92 ---- for (j = 0; j < i; j++) { ! if (c->data[j] == ci) { GSL_ERROR("duplicate combination index", GSL_FAILURE) ; } ! if (c->data[j] > ci) { ! GSL_ERROR("combination indices not in increasing order", ! GSL_FAILURE) ; } } *************** *** 162,164 **** --- 162,189 ---- } return GSL_SUCCESS; + } + + int + gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src) + { + const size_t src_n = src->n; + const size_t src_k = src->k; + const size_t dest_n = dest->n; + const size_t dest_k = dest->k; + + if (src_n != dest_n || src_k != dest_k) + { + GSL_ERROR ("combination lengths are not equal", GSL_EBADLEN); + } + + { + size_t j; + + for (j = 0; j < src_k; j++) + { + dest->data[j] = src->data[j]; + } + } + + return GSL_SUCCESS; } diff -x.info* -rc2P gsl-1.3/combination/gsl_combination.h gsl-1.4/combination/gsl_combination.h *** gsl-1.3/combination/gsl_combination.h Mon Jun 10 13:08:18 2002 --- gsl-1.4/combination/gsl_combination.h Fri Jul 25 15:18:17 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #undef __BEGIN_DECLS *************** *** 52,55 **** --- 53,57 ---- void gsl_combination_init_last (gsl_combination * c); void gsl_combination_free (gsl_combination * c); + int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src); int gsl_combination_fread (FILE * stream, gsl_combination * c); *************** *** 68,74 **** int gsl_combination_prev (gsl_combination * c); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 70,74 ---- int gsl_combination_prev (gsl_combination * c); ! #if HAVE_INLINE extern inline *************** *** 76,80 **** gsl_combination_get (const gsl_combination * c, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= c->k) { --- 76,80 ---- gsl_combination_get (const gsl_combination * c, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= c->k) { diff -x.info* -rc2P gsl-1.3/combination/init.c gsl-1.4/combination/init.c *** gsl-1.3/combination/init.c Sat Dec 8 20:41:54 2001 --- gsl-1.4/combination/init.c Wed Jul 30 09:13:50 2003 *************** *** 32,41 **** { GSL_ERROR_VAL ("combination parameter n must be positive integer", ! GSL_EDOM, 0); } if (k > n) { GSL_ERROR_VAL ("combination length k must be an integer less than or equal to n", ! GSL_EDOM, 0); } c = (gsl_combination *) malloc (sizeof (gsl_combination)); --- 32,41 ---- { GSL_ERROR_VAL ("combination parameter n must be positive integer", ! GSL_EDOM, 0); } if (k > n) { GSL_ERROR_VAL ("combination length k must be an integer less than or equal to n", ! GSL_EDOM, 0); } c = (gsl_combination *) malloc (sizeof (gsl_combination)); *************** *** 44,48 **** { GSL_ERROR_VAL ("failed to allocate space for combination struct", ! GSL_ENOMEM, 0); } --- 44,48 ---- { GSL_ERROR_VAL ("failed to allocate space for combination struct", ! GSL_ENOMEM, 0); } *************** *** 53,61 **** if (c->data == 0) { ! free (c); /* exception in constructor, avoid memory leak */ ! GSL_ERROR_VAL ("failed to allocate space for combination data", ! GSL_ENOMEM, 0); } } --- 53,65 ---- if (c->data == 0) { ! free (c); /* exception in constructor, avoid memory leak */ ! GSL_ERROR_VAL ("failed to allocate space for combination data", ! GSL_ENOMEM, 0); } + } + else + { + c->data = 0; } diff -x.info* -rc2P gsl-1.3/combination/test.c gsl-1.4/combination/test.c *** gsl-1.3/combination/test.c Sat Jan 26 22:44:48 2002 --- gsl-1.4/combination/test.c Sat Jul 26 17:30:24 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include size_t c63[20][3] = { *************** *** 34,37 **** --- 35,40 ---- } ; + void my_error_handler (const char *reason, const char *file, int line, int err); + int *************** *** 39,47 **** { size_t i, j; ! int status = 0; gsl_combination * c ; c = gsl_combination_alloc (6,3); gsl_combination_init_first (c); --- 42,54 ---- { size_t i, j; ! int status = 0, s; gsl_combination * c ; + gsl_ieee_env_setup (); + c = gsl_combination_alloc (6,3); + /* Test combinations in forward order */ + gsl_combination_init_first (c); *************** *** 52,62 **** if ( i >= 20 ) { ! status = 1; break; ! } for (j = 0; j < 3; j++) { status |= (c->data[j] != c63[i][j]); } i++; } --- 59,75 ---- if ( i >= 20 ) { ! status = 1; break; ! } for (j = 0; j < 3; j++) { status |= (c->data[j] != c63[i][j]); } + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid (%u)", i); + } + i++; } *************** *** 74,77 **** --- 87,112 ---- gsl_test(status, "gsl_combination_next on the last combination"); + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid on the last combination"); + } + + { + gsl_combination * d = gsl_combination_alloc (6,3); + gsl_combination_memcpy (d, c); + + status = 0; + + for (j = 0; j < 3; j++) + { + status |= (d->data[j] != c->data[j]); + } + + gsl_test (status, "gsl_combination_memcpy, 6 choose 3 combination"); + gsl_combination_free(d); + } + + + /* Now test combinations in reverse order */ gsl_combination_init_last (c); *************** *** 82,88 **** if ( i == 0 ) { ! status = 1; break; ! } i--; --- 117,123 ---- if ( i == 0 ) { ! status = 1; break; ! } i--; *************** *** 92,95 **** --- 127,135 ---- status |= (c->data[j] != c63[i][j]); } + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid (%u)", i); + } } while (gsl_combination_prev(c) == GSL_SUCCESS); *************** *** 105,108 **** --- 145,169 ---- } gsl_test(status, "gsl_combination_prev on the first combination"); + + { + int s1 = gsl_combination_valid (c); + gsl_test (s1, "gsl_combination_valid on the first combination"); + } + + { + gsl_combination * d = gsl_combination_alloc (6,3); + gsl_combination_memcpy (d, c); + + status = 0; + + for (j = 0; j < 3; j++) + { + status |= (d->data[j] != c->data[j]); + } + + gsl_test (status, "gsl_combination_memcpy, 6 choose 3 combination"); + gsl_combination_free(d); + } + gsl_combination_free (c); *************** *** 145,148 **** --- 206,261 ---- gsl_combination_free (c); + c = gsl_combination_calloc(6, 3); + + gsl_set_error_handler (&my_error_handler); + + c->data[0] = 1; + c->data[1] = 1; + c->data[2] = 2; + s = gsl_combination_valid (c); + gsl_test (!s, "gsl_combination_valid on an invalid combination (1,1,2)"); + + c->data[0] = 2; + c->data[1] = 1; + c->data[2] = 0; + s = gsl_combination_valid (c); + gsl_test (!s, "gsl_combination_valid on an invalid combination (2,1,0)"); + + c->data[0] = 1; + c->data[1] = 2; + c->data[2] = 0; + s = gsl_combination_valid (c); + gsl_test (!s, "gsl_combination_valid on an invalid combination (1,2,0)"); + + { + gsl_combination * d = gsl_combination_alloc (6,4); + int s = gsl_combination_memcpy (d, c); + gsl_test (!s, "gsl_combination_memcpy, (6,4) vs (6,3)"); + gsl_combination_free(d); + } + + { + gsl_combination * d = gsl_combination_alloc (7,3); + int s = gsl_combination_memcpy (d, c); + gsl_test (!s, "gsl_combination_memcpy, (7,3) vs (6,3)"); + gsl_combination_free(d); + } + + { + gsl_combination * d = gsl_combination_alloc (7,2); + int s = gsl_combination_memcpy (d, c); + gsl_test (!s, "gsl_combination_memcpy, (7,2) vs (6,3)"); + gsl_combination_free(d); + } + + + gsl_combination_free (c); + exit (gsl_test_summary()); + } + + void + my_error_handler (const char *reason, const char *file, int line, int err) + { + if (0) printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err) ; } diff -x.info* -rc2P gsl-1.3/complex/ChangeLog gsl-1.4/complex/ChangeLog *** gsl-1.3/complex/ChangeLog Wed Dec 11 13:17:37 2002 --- gsl-1.4/complex/ChangeLog Sat Jan 25 23:01:22 2003 *************** *** 1,2 **** --- 1,7 ---- + 2003-01-25 Brian Gough + + * math.c (gsl_complex_arccsc_real): fixed bug for incorrect sign + of imaginary part when -1 diff -x.info* -rc2P gsl-1.3/complex/Makefile.am gsl-1.4/complex/Makefile.am *** gsl-1.3/complex/Makefile.am Wed Jun 6 17:10:10 2001 --- gsl-1.4/complex/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 11,15 **** check_PROGRAMS = test ! test_SOURCES = test.c results.h results1.h test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la --- 11,15 ---- check_PROGRAMS = test ! test_SOURCES = test.c results.h results1.h results_real.h test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/complex/Makefile.in gsl-1.4/complex/Makefile.in *** gsl-1.3/complex/Makefile.in Wed Dec 18 22:36:56 2002 --- gsl-1.4/complex/Makefile.in Thu Aug 14 12:31:11 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslcomplex.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslcomplex.la *************** *** 97,191 **** check_PROGRAMS = test ! test_SOURCES = test.c results.h results1.h test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslcomplex_la_LDFLAGS = ! libgslcomplex_la_LIBADD = ! libgslcomplex_la_OBJECTS = math.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslcomplex.la ../err/libgslerr.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslcomplex_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps complex/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,239 ---- check_PROGRAMS = test ! test_SOURCES = test.c results.h results1.h results_real.h test_LDADD = libgslcomplex.la ../err/libgslerr.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + subdir = complex + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslcomplex_la_LDFLAGS = ! libgslcomplex_la_LIBADD = ! am_libgslcomplex_la_OBJECTS = math.lo ! libgslcomplex_la_OBJECTS = $(am_libgslcomplex_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslcomplex.la ../err/libgslerr.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO SOURCES = $(libgslcomplex_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu complex/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslcomplex.la: $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_DEPENDENCIES) + $(LINK) $(libgslcomplex_la_LDFLAGS) $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 196,332 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslcomplex.la: $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_DEPENDENCIES) ! $(LINK) $(libgslcomplex_la_LDFLAGS) $(libgslcomplex_la_OBJECTS) $(libgslcomplex_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = complex distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 244,448 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 335,384 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 451,517 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/complex/gsl_complex_math.h gsl-1.4/complex/gsl_complex_math.h *** gsl-1.3/complex/gsl_complex_math.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/complex/gsl_complex_math.h Fri Jul 25 15:18:17 2003 *************** *** 39,46 **** gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */ ! #ifdef HAVE_INLINE extern inline gsl_complex gsl_complex_rect (double x, double y) ! { /* return z = x + i y */ gsl_complex z; GSL_SET_COMPLEX (&z, x, y); --- 39,46 ---- gsl_complex gsl_complex_polar (double r, double theta); /* r= r e^(i theta) */ ! #if HAVE_INLINE extern inline gsl_complex gsl_complex_rect (double x, double y) ! { /* return z = x + i y */ gsl_complex z; GSL_SET_COMPLEX (&z, x, y); diff -x.info* -rc2P gsl-1.3/complex/math.c gsl-1.4/complex/math.c *** gsl-1.3/complex/math.c Wed Dec 11 13:17:14 2002 --- gsl-1.4/complex/math.c Fri Jul 25 15:18:10 2003 *************** *** 55,59 **** gsl_complex gsl_complex_rect (double x, double y) ! { /* return z = x + i y */ gsl_complex z; GSL_SET_COMPLEX (&z, x, y); --- 55,59 ---- gsl_complex gsl_complex_rect (double x, double y) ! { /* return z = x + i y */ gsl_complex z; GSL_SET_COMPLEX (&z, x, y); *************** *** 64,68 **** gsl_complex gsl_complex_polar (double r, double theta) ! { /* return z = r exp(i theta) */ gsl_complex z; GSL_SET_COMPLEX (&z, r * cos (theta), r * sin (theta)); --- 64,68 ---- gsl_complex gsl_complex_polar (double r, double theta) ! { /* return z = r exp(i theta) */ gsl_complex z; GSL_SET_COMPLEX (&z, r * cos (theta), r * sin (theta)); *************** *** 76,80 **** double gsl_complex_arg (gsl_complex z) ! { /* return arg(z), -pi < arg(z) <= +pi */ double x = GSL_REAL (z); double y = GSL_IMAG (z); --- 76,80 ---- double gsl_complex_arg (gsl_complex z) ! { /* return arg(z), -pi < arg(z) <= +pi */ double x = GSL_REAL (z); double y = GSL_IMAG (z); *************** *** 90,94 **** double gsl_complex_abs (gsl_complex z) ! { /* return |z| */ return hypot (GSL_REAL (z), GSL_IMAG (z)); } --- 90,94 ---- double gsl_complex_abs (gsl_complex z) ! { /* return |z| */ return hypot (GSL_REAL (z), GSL_IMAG (z)); } *************** *** 96,100 **** double gsl_complex_abs2 (gsl_complex z) ! { /* return |z|^2 */ double x = GSL_REAL (z); double y = GSL_IMAG (z); --- 96,100 ---- double gsl_complex_abs2 (gsl_complex z) ! { /* return |z|^2 */ double x = GSL_REAL (z); double y = GSL_IMAG (z); *************** *** 105,109 **** double gsl_complex_logabs (gsl_complex z) ! { /* return log|z| */ double xabs = fabs (GSL_REAL (z)); double yabs = fabs (GSL_IMAG (z)); --- 105,109 ---- double gsl_complex_logabs (gsl_complex z) ! { /* return log|z| */ double xabs = fabs (GSL_REAL (z)); double yabs = fabs (GSL_IMAG (z)); *************** *** 133,137 **** gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b) ! { /* z=a+b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); --- 133,137 ---- gsl_complex gsl_complex_add (gsl_complex a, gsl_complex b) ! { /* z=a+b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); *************** *** 144,148 **** gsl_complex gsl_complex_add_real (gsl_complex a, double x) ! { /* z=a+x */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a) + x, GSL_IMAG (a)); --- 144,148 ---- gsl_complex gsl_complex_add_real (gsl_complex a, double x) ! { /* z=a+x */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a) + x, GSL_IMAG (a)); *************** *** 152,156 **** gsl_complex gsl_complex_add_imag (gsl_complex a, double y) ! { /* z=a+iy */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) + y); --- 152,156 ---- gsl_complex gsl_complex_add_imag (gsl_complex a, double y) ! { /* z=a+iy */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) + y); *************** *** 161,165 **** gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b) ! { /* z=a-b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); --- 161,165 ---- gsl_complex gsl_complex_sub (gsl_complex a, gsl_complex b) ! { /* z=a-b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); *************** *** 172,176 **** gsl_complex gsl_complex_sub_real (gsl_complex a, double x) ! { /* z=a-x */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a) - x, GSL_IMAG (a)); --- 172,176 ---- gsl_complex gsl_complex_sub_real (gsl_complex a, double x) ! { /* z=a-x */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a) - x, GSL_IMAG (a)); *************** *** 180,184 **** gsl_complex gsl_complex_sub_imag (gsl_complex a, double y) ! { /* z=a-iy */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) - y); --- 180,184 ---- gsl_complex gsl_complex_sub_imag (gsl_complex a, double y) ! { /* z=a-iy */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a), GSL_IMAG (a) - y); *************** *** 188,192 **** gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b) ! { /* z=a*b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); --- 188,192 ---- gsl_complex gsl_complex_mul (gsl_complex a, gsl_complex b) ! { /* z=a*b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); *************** *** 199,203 **** gsl_complex gsl_complex_mul_real (gsl_complex a, double x) ! { /* z=a*x */ gsl_complex z; GSL_SET_COMPLEX (&z, x * GSL_REAL (a), x * GSL_IMAG (a)); --- 199,203 ---- gsl_complex gsl_complex_mul_real (gsl_complex a, double x) ! { /* z=a*x */ gsl_complex z; GSL_SET_COMPLEX (&z, x * GSL_REAL (a), x * GSL_IMAG (a)); *************** *** 207,211 **** gsl_complex gsl_complex_mul_imag (gsl_complex a, double y) ! { /* z=a*iy */ gsl_complex z; GSL_SET_COMPLEX (&z, -y * GSL_IMAG (a), y * GSL_REAL (a)); --- 207,211 ---- gsl_complex gsl_complex_mul_imag (gsl_complex a, double y) ! { /* z=a*iy */ gsl_complex z; GSL_SET_COMPLEX (&z, -y * GSL_IMAG (a), y * GSL_REAL (a)); *************** *** 215,219 **** gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b) ! { /* z=a/b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); --- 215,219 ---- gsl_complex gsl_complex_div (gsl_complex a, gsl_complex b) ! { /* z=a/b */ double ar = GSL_REAL (a), ai = GSL_IMAG (a); double br = GSL_REAL (b), bi = GSL_IMAG (b); *************** *** 234,238 **** gsl_complex gsl_complex_div_real (gsl_complex a, double x) ! { /* z=a/x */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a) / x, GSL_IMAG (a) / x); --- 234,238 ---- gsl_complex gsl_complex_div_real (gsl_complex a, double x) ! { /* z=a/x */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a) / x, GSL_IMAG (a) / x); *************** *** 242,246 **** gsl_complex gsl_complex_div_imag (gsl_complex a, double y) ! { /* z=a/(iy) */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_IMAG (a) / y, - GSL_REAL (a) / y); --- 242,246 ---- gsl_complex gsl_complex_div_imag (gsl_complex a, double y) ! { /* z=a/(iy) */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_IMAG (a) / y, - GSL_REAL (a) / y); *************** *** 250,254 **** gsl_complex gsl_complex_conjugate (gsl_complex a) ! { /* z=conj(a) */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a), -GSL_IMAG (a)); --- 250,254 ---- gsl_complex gsl_complex_conjugate (gsl_complex a) ! { /* z=conj(a) */ gsl_complex z; GSL_SET_COMPLEX (&z, GSL_REAL (a), -GSL_IMAG (a)); *************** *** 258,262 **** gsl_complex gsl_complex_negative (gsl_complex a) ! { /* z=-a */ gsl_complex z; GSL_SET_COMPLEX (&z, -GSL_REAL (a), -GSL_IMAG (a)); --- 258,262 ---- gsl_complex gsl_complex_negative (gsl_complex a) ! { /* z=-a */ gsl_complex z; GSL_SET_COMPLEX (&z, -GSL_REAL (a), -GSL_IMAG (a)); *************** *** 266,270 **** gsl_complex gsl_complex_inverse (gsl_complex a) ! { /* z=1/a */ double s = 1.0 / gsl_complex_abs (a); --- 266,270 ---- gsl_complex gsl_complex_inverse (gsl_complex a) ! { /* z=1/a */ double s = 1.0 / gsl_complex_abs (a); *************** *** 280,284 **** gsl_complex gsl_complex_sqrt (gsl_complex a) ! { /* z=sqrt(a) */ gsl_complex z; --- 280,284 ---- gsl_complex gsl_complex_sqrt (gsl_complex a) ! { /* z=sqrt(a) */ gsl_complex z; *************** *** 294,318 **** if (x >= y) ! { ! double t = y / x; ! w = sqrt (x) * sqrt (0.5 * (1.0 + sqrt (1.0 + t * t))); ! } ! else ! { ! double t = x / y; ! w = sqrt (y) * sqrt (0.5 * (t + sqrt (1.0 + t * t))); ! } if (GSL_REAL (a) >= 0.0) ! { ! double ai = GSL_IMAG (a); ! GSL_SET_COMPLEX (&z, w, ai / (2.0 * w)); ! } ! else ! { ! double ai = GSL_IMAG (a); ! double vi = (ai >= 0) ? w : -w; ! GSL_SET_COMPLEX (&z, ai / (2.0 * vi), vi); ! } } --- 294,318 ---- if (x >= y) ! { ! double t = y / x; ! w = sqrt (x) * sqrt (0.5 * (1.0 + sqrt (1.0 + t * t))); ! } ! else ! { ! double t = x / y; ! w = sqrt (y) * sqrt (0.5 * (t + sqrt (1.0 + t * t))); ! } if (GSL_REAL (a) >= 0.0) ! { ! double ai = GSL_IMAG (a); ! GSL_SET_COMPLEX (&z, w, ai / (2.0 * w)); ! } ! else ! { ! double ai = GSL_IMAG (a); ! double vi = (ai >= 0) ? w : -w; ! GSL_SET_COMPLEX (&z, ai / (2.0 * vi), vi); ! } } *************** *** 322,326 **** gsl_complex gsl_complex_sqrt_real (double x) ! { /* z=sqrt(x) */ gsl_complex z; --- 322,326 ---- gsl_complex gsl_complex_sqrt_real (double x) ! { /* z=sqrt(x) */ gsl_complex z; *************** *** 339,343 **** gsl_complex gsl_complex_exp (gsl_complex a) ! { /* z=exp(a) */ double rho = exp (GSL_REAL (a)); double theta = GSL_IMAG (a); --- 339,343 ---- gsl_complex gsl_complex_exp (gsl_complex a) ! { /* z=exp(a) */ double rho = exp (GSL_REAL (a)); double theta = GSL_IMAG (a); *************** *** 350,354 **** gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b) ! { /* z=a^b */ gsl_complex z; --- 350,354 ---- gsl_complex gsl_complex_pow (gsl_complex a, gsl_complex b) ! { /* z=a^b */ gsl_complex z; *************** *** 375,379 **** gsl_complex gsl_complex_pow_real (gsl_complex a, double b) ! { /* z=a^b */ gsl_complex z; --- 375,379 ---- gsl_complex gsl_complex_pow_real (gsl_complex a, double b) ! { /* z=a^b */ gsl_complex z; *************** *** 396,400 **** gsl_complex gsl_complex_log (gsl_complex a) ! { /* z=log(a) */ double logr = gsl_complex_logabs (a); double theta = gsl_complex_arg (a); --- 396,400 ---- gsl_complex gsl_complex_log (gsl_complex a) ! { /* z=log(a) */ double logr = gsl_complex_logabs (a); double theta = gsl_complex_arg (a); *************** *** 407,411 **** gsl_complex gsl_complex_log10 (gsl_complex a) ! { /* z = log10(a) */ return gsl_complex_mul_real (gsl_complex_log (a), 1 / log (10.)); } --- 407,411 ---- gsl_complex gsl_complex_log10 (gsl_complex a) ! { /* z = log10(a) */ return gsl_complex_mul_real (gsl_complex_log (a), 1 / log (10.)); } *************** *** 423,427 **** gsl_complex gsl_complex_sin (gsl_complex a) ! { /* z = sin(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); --- 423,427 ---- gsl_complex gsl_complex_sin (gsl_complex a) ! { /* z = sin(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); *************** *** 444,448 **** gsl_complex gsl_complex_cos (gsl_complex a) ! { /* z = cos(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); --- 444,448 ---- gsl_complex gsl_complex_cos (gsl_complex a) ! { /* z = cos(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); *************** *** 465,469 **** gsl_complex gsl_complex_tan (gsl_complex a) ! { /* z = tan(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); --- 465,469 ---- gsl_complex gsl_complex_tan (gsl_complex a) ! { /* z = tan(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); *************** *** 493,497 **** gsl_complex gsl_complex_sec (gsl_complex a) ! { /* z = sec(a) */ gsl_complex z = gsl_complex_cos (a); return gsl_complex_inverse (z); --- 493,497 ---- gsl_complex gsl_complex_sec (gsl_complex a) ! { /* z = sec(a) */ gsl_complex z = gsl_complex_cos (a); return gsl_complex_inverse (z); *************** *** 500,504 **** gsl_complex gsl_complex_csc (gsl_complex a) ! { /* z = csc(a) */ gsl_complex z = gsl_complex_sin (a); return gsl_complex_inverse(z); --- 500,504 ---- gsl_complex gsl_complex_csc (gsl_complex a) ! { /* z = csc(a) */ gsl_complex z = gsl_complex_sin (a); return gsl_complex_inverse(z); *************** *** 508,512 **** gsl_complex gsl_complex_cot (gsl_complex a) ! { /* z = cot(a) */ gsl_complex z = gsl_complex_tan (a); return gsl_complex_inverse (z); --- 508,512 ---- gsl_complex gsl_complex_cot (gsl_complex a) ! { /* z = cot(a) */ gsl_complex z = gsl_complex_tan (a); return gsl_complex_inverse (z); *************** *** 519,523 **** gsl_complex gsl_complex_arcsin (gsl_complex a) ! { /* z = arcsin(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); gsl_complex z; --- 519,523 ---- gsl_complex gsl_complex_arcsin (gsl_complex a) ! { /* z = arcsin(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); gsl_complex z; *************** *** 540,580 **** if (B <= B_crossover) ! { ! real = asin (B); ! } ! else ! { ! if (x <= 1) ! { ! double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x))); ! real = atan (x / sqrt (D)); ! } ! else ! { ! double Apx = A + x; ! double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1))); ! real = atan (x / (y * sqrt (D))); ! } ! } if (A <= A_crossover) ! { ! double Am1; ! if (x < 1) ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x))); ! } ! else ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1))); ! } ! ! imag = log1p (Am1 + sqrt (Am1 * (A + 1))); ! } ! else ! { ! imag = log (A + sqrt (A * A - 1)); ! } GSL_SET_COMPLEX (&z, (R >= 0) ? real : -real, (I >= 0) ? imag : -imag); --- 540,580 ---- if (B <= B_crossover) ! { ! real = asin (B); ! } ! else ! { ! if (x <= 1) ! { ! double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x))); ! real = atan (x / sqrt (D)); ! } ! else ! { ! double Apx = A + x; ! double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1))); ! real = atan (x / (y * sqrt (D))); ! } ! } if (A <= A_crossover) ! { ! double Am1; ! if (x < 1) ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x))); ! } ! else ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1))); ! } ! ! imag = log1p (Am1 + sqrt (Am1 * (A + 1))); ! } ! else ! { ! imag = log (A + sqrt (A * A - 1)); ! } GSL_SET_COMPLEX (&z, (R >= 0) ? real : -real, (I >= 0) ? imag : -imag); *************** *** 586,590 **** gsl_complex gsl_complex_arcsin_real (double a) ! { /* z = arcsin(a) */ gsl_complex z; --- 586,590 ---- gsl_complex gsl_complex_arcsin_real (double a) ! { /* z = arcsin(a) */ gsl_complex z; *************** *** 596,606 **** { if (a < 0.0) ! { ! GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, M_PI_2, -acosh (a)); ! } } --- 596,606 ---- { if (a < 0.0) ! { ! GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, M_PI_2, -acosh (a)); ! } } *************** *** 610,614 **** gsl_complex gsl_complex_arccos (gsl_complex a) ! { /* z = arccos(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); gsl_complex z; --- 610,614 ---- gsl_complex gsl_complex_arccos (gsl_complex a) ! { /* z = arccos(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); gsl_complex z; *************** *** 631,671 **** if (B <= B_crossover) ! { ! real = acos (B); ! } ! else ! { ! if (x <= 1) ! { ! double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x))); ! real = atan (sqrt (D) / x); ! } ! else ! { ! double Apx = A + x; ! double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1))); ! real = atan ((y * sqrt (D)) / x); ! } ! } if (A <= A_crossover) ! { ! double Am1; ! if (x < 1) ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x))); ! } ! else ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1))); ! } ! ! imag = log1p (Am1 + sqrt (Am1 * (A + 1))); ! } ! else ! { ! imag = log (A + sqrt (A * A - 1)); ! } GSL_SET_COMPLEX (&z, (R >= 0) ? real : M_PI - real, (I >= 0) ? -imag : imag); --- 631,671 ---- if (B <= B_crossover) ! { ! real = acos (B); ! } ! else ! { ! if (x <= 1) ! { ! double D = 0.5 * (A + x) * (y2 / (r + x + 1) + (s + (1 - x))); ! real = atan (sqrt (D) / x); ! } ! else ! { ! double Apx = A + x; ! double D = 0.5 * (Apx / (r + x + 1) + Apx / (s + (x - 1))); ! real = atan ((y * sqrt (D)) / x); ! } ! } if (A <= A_crossover) ! { ! double Am1; ! if (x < 1) ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + y2 / (s + (1 - x))); ! } ! else ! { ! Am1 = 0.5 * (y2 / (r + (x + 1)) + (s + (x - 1))); ! } ! ! imag = log1p (Am1 + sqrt (Am1 * (A + 1))); ! } ! else ! { ! imag = log (A + sqrt (A * A - 1)); ! } GSL_SET_COMPLEX (&z, (R >= 0) ? real : M_PI - real, (I >= 0) ? -imag : imag); *************** *** 677,681 **** gsl_complex gsl_complex_arccos_real (double a) ! { /* z = arccos(a) */ gsl_complex z; --- 677,681 ---- gsl_complex gsl_complex_arccos_real (double a) ! { /* z = arccos(a) */ gsl_complex z; *************** *** 687,697 **** { if (a < 0.0) ! { ! GSL_SET_COMPLEX (&z, M_PI, -acosh (-a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, 0, acosh (a)); ! } } --- 687,697 ---- { if (a < 0.0) ! { ! GSL_SET_COMPLEX (&z, M_PI, -acosh (-a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, 0, acosh (a)); ! } } *************** *** 701,705 **** gsl_complex gsl_complex_arctan (gsl_complex a) ! { /* z = arctan(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); gsl_complex z; --- 701,705 ---- gsl_complex gsl_complex_arctan (gsl_complex a) ! { /* z = arctan(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); gsl_complex z; *************** *** 725,757 **** if (fabs (u) < 0.1) ! { ! imag = 0.25 * (log1p (u) - log1p (-u)); ! } ! else ! { ! double A = hypot (R, I + 1); ! double B = hypot (R, I - 1); ! imag = 0.5 * log (A / B); ! } if (R == 0) ! { ! if (I > 1) ! { ! GSL_SET_COMPLEX (&z, M_PI_2, imag); ! } ! else if (I < -1) ! { ! GSL_SET_COMPLEX (&z, -M_PI_2, imag); ! } ! else ! { ! GSL_SET_COMPLEX (&z, 0, imag); ! }; ! } ! else ! { ! GSL_SET_COMPLEX (&z, 0.5 * atan2 (2 * R, ((1 + r) * (1 - r))), imag); ! } } --- 725,757 ---- if (fabs (u) < 0.1) ! { ! imag = 0.25 * (log1p (u) - log1p (-u)); ! } ! else ! { ! double A = hypot (R, I + 1); ! double B = hypot (R, I - 1); ! imag = 0.5 * log (A / B); ! } if (R == 0) ! { ! if (I > 1) ! { ! GSL_SET_COMPLEX (&z, M_PI_2, imag); ! } ! else if (I < -1) ! { ! GSL_SET_COMPLEX (&z, -M_PI_2, imag); ! } ! else ! { ! GSL_SET_COMPLEX (&z, 0, imag); ! }; ! } ! else ! { ! GSL_SET_COMPLEX (&z, 0.5 * atan2 (2 * R, ((1 + r) * (1 - r))), imag); ! } } *************** *** 761,765 **** gsl_complex gsl_complex_arcsec (gsl_complex a) ! { /* z = arcsec(a) */ gsl_complex z = gsl_complex_inverse (a); return gsl_complex_arccos (z); --- 761,765 ---- gsl_complex gsl_complex_arcsec (gsl_complex a) ! { /* z = arcsec(a) */ gsl_complex z = gsl_complex_inverse (a); return gsl_complex_arccos (z); *************** *** 768,772 **** gsl_complex gsl_complex_arcsec_real (double a) ! { /* z = arcsec(a) */ gsl_complex z; --- 768,772 ---- gsl_complex gsl_complex_arcsec_real (double a) ! { /* z = arcsec(a) */ gsl_complex z; *************** *** 778,788 **** { if (a >= 0.0) ! { ! GSL_SET_COMPLEX (&z, 0, acosh (1 / a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, M_PI, -acosh (-1 / a)); ! } } --- 778,788 ---- { if (a >= 0.0) ! { ! GSL_SET_COMPLEX (&z, 0, acosh (1 / a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, M_PI, -acosh (-1 / a)); ! } } *************** *** 792,796 **** gsl_complex gsl_complex_arccsc (gsl_complex a) ! { /* z = arccsc(a) */ gsl_complex z = gsl_complex_inverse (a); return gsl_complex_arcsin (z); --- 792,796 ---- gsl_complex gsl_complex_arccsc (gsl_complex a) ! { /* z = arccsc(a) */ gsl_complex z = gsl_complex_inverse (a); return gsl_complex_arcsin (z); *************** *** 799,803 **** gsl_complex gsl_complex_arccsc_real (double a) ! { /* z = arccsc(a) */ gsl_complex z; --- 799,803 ---- gsl_complex gsl_complex_arccsc_real (double a) ! { /* z = arccsc(a) */ gsl_complex z; *************** *** 809,819 **** { if (a >= 0.0) ! { ! GSL_SET_COMPLEX (&z, M_PI_2, -acosh (1 / a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, -M_PI_2, -acosh (-1 / a)); ! } } --- 809,819 ---- { if (a >= 0.0) ! { ! GSL_SET_COMPLEX (&z, M_PI_2, -acosh (1 / a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, -M_PI_2, acosh (-1 / a)); ! } } *************** *** 823,827 **** gsl_complex gsl_complex_arccot (gsl_complex a) ! { /* z = arccot(a) */ gsl_complex z; --- 823,827 ---- gsl_complex gsl_complex_arccot (gsl_complex a) ! { /* z = arccot(a) */ gsl_complex z; *************** *** 845,849 **** gsl_complex gsl_complex_sinh (gsl_complex a) ! { /* z = sinh(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); --- 845,849 ---- gsl_complex gsl_complex_sinh (gsl_complex a) ! { /* z = sinh(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); *************** *** 855,859 **** gsl_complex gsl_complex_cosh (gsl_complex a) ! { /* z = cosh(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); --- 855,859 ---- gsl_complex gsl_complex_cosh (gsl_complex a) ! { /* z = cosh(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); *************** *** 865,869 **** gsl_complex gsl_complex_tanh (gsl_complex a) ! { /* z = tanh(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); --- 865,869 ---- gsl_complex gsl_complex_tanh (gsl_complex a) ! { /* z = tanh(a) */ double R = GSL_REAL (a), I = GSL_IMAG (a); *************** *** 889,893 **** gsl_complex gsl_complex_sech (gsl_complex a) ! { /* z = sech(a) */ gsl_complex z = gsl_complex_cosh (a); return gsl_complex_inverse (z); --- 889,893 ---- gsl_complex gsl_complex_sech (gsl_complex a) ! { /* z = sech(a) */ gsl_complex z = gsl_complex_cosh (a); return gsl_complex_inverse (z); *************** *** 896,900 **** gsl_complex gsl_complex_csch (gsl_complex a) ! { /* z = csch(a) */ gsl_complex z = gsl_complex_sinh (a); return gsl_complex_inverse (z); --- 896,900 ---- gsl_complex gsl_complex_csch (gsl_complex a) ! { /* z = csch(a) */ gsl_complex z = gsl_complex_sinh (a); return gsl_complex_inverse (z); *************** *** 903,907 **** gsl_complex gsl_complex_coth (gsl_complex a) ! { /* z = coth(a) */ gsl_complex z = gsl_complex_tanh (a); return gsl_complex_inverse (z); --- 903,907 ---- gsl_complex gsl_complex_coth (gsl_complex a) ! { /* z = coth(a) */ gsl_complex z = gsl_complex_tanh (a); return gsl_complex_inverse (z); *************** *** 914,918 **** gsl_complex gsl_complex_arcsinh (gsl_complex a) ! { /* z = arcsinh(a) */ gsl_complex z = gsl_complex_mul_imag(a, 1.0); z = gsl_complex_arcsin (z); --- 914,918 ---- gsl_complex gsl_complex_arcsinh (gsl_complex a) ! { /* z = arcsinh(a) */ gsl_complex z = gsl_complex_mul_imag(a, 1.0); z = gsl_complex_arcsin (z); *************** *** 923,927 **** gsl_complex gsl_complex_arccosh (gsl_complex a) ! { /* z = arccosh(a) */ gsl_complex z = gsl_complex_arccos (a); z = gsl_complex_mul_imag (z, GSL_IMAG(z) > 0 ? -1.0 : 1.0); --- 923,927 ---- gsl_complex gsl_complex_arccosh (gsl_complex a) ! { /* z = arccosh(a) */ gsl_complex z = gsl_complex_arccos (a); z = gsl_complex_mul_imag (z, GSL_IMAG(z) > 0 ? -1.0 : 1.0); *************** *** 931,935 **** gsl_complex gsl_complex_arccosh_real (double a) ! { /* z = arccosh(a) */ gsl_complex z; --- 931,935 ---- gsl_complex gsl_complex_arccosh_real (double a) ! { /* z = arccosh(a) */ gsl_complex z; *************** *** 941,951 **** { if (a >= -1.0) ! { ! GSL_SET_COMPLEX (&z, 0, acos (a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, acosh (-a), M_PI); ! } } --- 941,951 ---- { if (a >= -1.0) ! { ! GSL_SET_COMPLEX (&z, 0, acos (a)); ! } ! else ! { ! GSL_SET_COMPLEX (&z, acosh (-a), M_PI); ! } } *************** *** 955,959 **** gsl_complex gsl_complex_arctanh (gsl_complex a) ! { /* z = arctanh(a) */ if (GSL_IMAG (a) == 0.0) { --- 955,959 ---- gsl_complex gsl_complex_arctanh (gsl_complex a) ! { /* z = arctanh(a) */ if (GSL_IMAG (a) == 0.0) { *************** *** 971,975 **** gsl_complex gsl_complex_arctanh_real (double a) ! { /* z = arctanh(a) */ gsl_complex z; --- 971,975 ---- gsl_complex gsl_complex_arctanh_real (double a) ! { /* z = arctanh(a) */ gsl_complex z; *************** *** 988,992 **** gsl_complex gsl_complex_arcsech (gsl_complex a) ! { /* z = arcsech(a); */ gsl_complex t = gsl_complex_inverse (a); return gsl_complex_arccosh (t); --- 988,992 ---- gsl_complex gsl_complex_arcsech (gsl_complex a) ! { /* z = arcsech(a); */ gsl_complex t = gsl_complex_inverse (a); return gsl_complex_arccosh (t); *************** *** 995,999 **** gsl_complex gsl_complex_arccsch (gsl_complex a) ! { /* z = arccsch(a) */ gsl_complex t = gsl_complex_inverse (a); return gsl_complex_arcsinh (t); --- 995,999 ---- gsl_complex gsl_complex_arccsch (gsl_complex a) ! { /* z = arccsch(a) */ gsl_complex t = gsl_complex_inverse (a); return gsl_complex_arcsinh (t); *************** *** 1002,1006 **** gsl_complex gsl_complex_arccoth (gsl_complex a) ! { /* z = arccoth(a) */ gsl_complex t = gsl_complex_inverse (a); return gsl_complex_arctanh (t); --- 1002,1006 ---- gsl_complex gsl_complex_arccoth (gsl_complex a) ! { /* z = arccoth(a) */ gsl_complex t = gsl_complex_inverse (a); return gsl_complex_arctanh (t); diff -x.info* -rc2P gsl-1.3/complex/results_real.h gsl-1.4/complex/results_real.h *** gsl-1.3/complex/results_real.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/complex/results_real.h Fri Jul 25 15:18:18 2003 *************** *** 0 **** --- 1,115 ---- + {FN (sqrt_real), -1.0e+01, RES(0, 3.1622776601683793320e0)}, + {FN (sqrt_real), -2.0e+00, RES(0, 1.4142135623730950488e0)}, + {FN (sqrt_real), -1.0e+00, RES(0, 1)}, + {FN (sqrt_real), -7.50e-01, RES(0, 8.6602540378443864676e-1)}, + {FN (sqrt_real), -5.0e-01, RES(0, 7.0710678118654752440e-1)}, + {FN (sqrt_real), -1.250e-01, RES(0, 3.5355339059327376220e-1)}, + {FN (sqrt_real), -3.45266983001243932001e-04, RES(0, 1.8581361171917517303e-2)}, + {FN (sqrt_real), -1.19209289550781250e-07, RES(0, 3.4526698300124390840e-4)}, + {FN (sqrt_real), 0.0e+00, RES(0e0, 0.0)}, + {FN (sqrt_real), 1.19209289550781250e-07, RES(3.4526698300124390840e-4, 0.0)}, + {FN (sqrt_real), 3.45266983001243932001e-04, RES(1.8581361171917517303e-2, 0.0)}, + {FN (sqrt_real), 1.250e-01, RES(3.5355339059327376220e-1, 0.0)}, + {FN (sqrt_real), 5.0e-01, RES(7.0710678118654752440e-1, 0.0)}, + {FN (sqrt_real), 7.50e-01, RES(8.6602540378443864676e-1, 0.0)}, + {FN (sqrt_real), 1.0e+00, RES(1e0, 0.0)}, + {FN (sqrt_real), 2.0e+00, RES(1.4142135623730950488e0, 0.0)}, + {FN (sqrt_real), 1.0e+01, RES(3.1622776601683793320e0, 0.0)}, + {FN (arcsin_real), -1.0e+01, RES(-1.5707963267948966192e0, 2.9932228461263808979e0)}, + {FN (arcsin_real), -2.0e+00, RES(-1.5707963267948966192e0, 1.3169578969248167086e0)}, + {FN (arcsin_real), -1.0e+00, RES(-1.5707963267948966192e0, 0.0)}, + {FN (arcsin_real), -7.50e-01, RES(-8.4806207898148100805e-1, 0.0)}, + {FN (arcsin_real), -5.0e-01, RES(-5.2359877559829887308e-1, 0.0)}, + {FN (arcsin_real), -1.250e-01, RES(-1.2532783116806539687e-1, 0.0)}, + {FN (arcsin_real), -3.45266983001243932001e-04, RES(-3.4526698986108292481e-4, 0.0)}, + {FN (arcsin_real), -1.19209289550781250e-07, RES(-1.1920928955078153234e-7, 0.0)}, + {FN (arcsin_real), 0.0e+00, RES(0e0, 0.0)}, + {FN (arcsin_real), 1.19209289550781250e-07, RES(1.1920928955078153234e-7, 0.0)}, + {FN (arcsin_real), 3.45266983001243932001e-04, RES(3.4526698986108292481e-4, 0.0)}, + {FN (arcsin_real), 1.250e-01, RES(1.2532783116806539687e-1, 0.0)}, + {FN (arcsin_real), 5.0e-01, RES(5.2359877559829887308e-1, 0.0)}, + {FN (arcsin_real), 7.50e-01, RES(8.4806207898148100805e-1, 0.0)}, + {FN (arcsin_real), 1.0e+00, RES(1.5707963267948966192e0, 0.0)}, + {FN (arcsin_real), 2.0e+00, RES(1.5707963267948966192e0, -1.3169578969248167086e0)}, + {FN (arcsin_real), 1.0e+01, RES(1.5707963267948966192e0, -2.9932228461263808979e0)}, + {FN (arccos_real), -1.0e+01, RES(3.1415926535897932385e0, -2.9932228461263808979e0)}, + {FN (arccos_real), -2.0e+00, RES(3.1415926535897932385e0, -1.3169578969248167086e0)}, + {FN (arccos_real), -1.0e+00, RES(3.1415926535897932385e0, 0.0)}, + {FN (arccos_real), -7.50e-01, RES(2.4188584057763776273e0, 0.0)}, + {FN (arccos_real), -5.0e-01, RES(2.0943951023931954923e0, 0.0)}, + {FN (arccos_real), -1.250e-01, RES(1.6961241579629620161e0, 0.0)}, + {FN (arccos_real), -3.45266983001243932001e-04, RES(1.5711415937847577022e0, 0.0)}, + {FN (arccos_real), -1.19209289550781250e-07, RES(1.570796446004186170e0, 0.0)}, + {FN (arccos_real), 0.0e+00, RES(1.5707963267948966192e0, 0.0)}, + {FN (arccos_real), 1.19209289550781250e-07, RES(1.5707962075856070684e0, 0.0)}, + {FN (arccos_real), 3.45266983001243932001e-04, RES(1.5704510598050355363e0, 0.0)}, + {FN (arccos_real), 1.250e-01, RES(1.4454684956268312224e0, 0.0)}, + {FN (arccos_real), 5.0e-01, RES(1.0471975511965977462e0, 0.0)}, + {FN (arccos_real), 7.50e-01, RES(7.2273424781341561118e-1, 0.0)}, + {FN (arccos_real), 1.0e+00, RES(0e0, 0.0)}, + {FN (arccos_real), 2.0e+00, RES(0, 1.3169578969248167086e0)}, + {FN (arccos_real), 1.0e+01, RES(0, 2.9932228461263808979e0)}, + {FN (arccosh_real), -1.0e+01, RES(2.9932228461263808979e0, 3.1415926535897932385e0)}, + {FN (arccosh_real), -2.0e+00, RES(1.3169578969248167086e0, 3.1415926535897932385e0)}, + {FN (arccosh_real), -1.0e+00, RES(0, 3.1415926535897932385e0)}, + {FN (arccosh_real), -7.50e-01, RES(0, 2.4188584057763776273e0)}, + {FN (arccosh_real), -5.0e-01, RES(0, 2.0943951023931954923e0)}, + {FN (arccosh_real), -1.250e-01, RES(0, 1.6961241579629620161e0)}, + {FN (arccosh_real), -3.45266983001243932001e-04, RES(0, 1.5711415937847577022e0)}, + {FN (arccosh_real), -1.19209289550781250e-07, RES(0, 1.570796446004186170e0)}, + {FN (arccosh_real), 0.0e+00, RES(0, 1.5707963267948966192e0)}, + {FN (arccosh_real), 1.19209289550781250e-07, RES(0, 1.5707962075856070684e0)}, + {FN (arccosh_real), 3.45266983001243932001e-04, RES(0, 1.5704510598050355363e0)}, + {FN (arccosh_real), 1.250e-01, RES(0, 1.4454684956268312224e0)}, + {FN (arccosh_real), 5.0e-01, RES(0, 1.0471975511965977462e0)}, + {FN (arccosh_real), 7.50e-01, RES(0, 7.2273424781341561118e-1)}, + {FN (arccosh_real), 1.0e+00, RES(0e0, 0.0)}, + {FN (arccosh_real), 2.0e+00, RES(1.3169578969248167086e0, 0.0)}, + {FN (arccosh_real), 1.0e+01, RES(2.9932228461263808979e0, 0.0)}, + {FN (arctanh_real), -1.0e+01, RES(-1.0033534773107558064e-1, 1.5707963267948966192e0)}, + {FN (arctanh_real), -2.0e+00, RES(-5.4930614433405484570e-1, 1.5707963267948966192e0)}, + {FN (arctanh_real), -7.50e-01, RES(-9.7295507452765665255e-1, 0.0)}, + {FN (arctanh_real), -5.0e-01, RES(-5.4930614433405484570e-1, 0.0)}, + {FN (arctanh_real), -1.250e-01, RES(-1.2565721414045303884e-1, 0.0)}, + {FN (arctanh_real), -3.45266983001243932001e-04, RES(-3.4526699672092216295e-4, 0.0)}, + {FN (arctanh_real), -1.19209289550781250e-07, RES(-1.1920928955078181469e-7, 0.0)}, + {FN (arctanh_real), 0.0e+00, RES(0e0, 0.0)}, + {FN (arctanh_real), 1.19209289550781250e-07, RES(1.1920928955078181469e-7, 0.0)}, + {FN (arctanh_real), 3.45266983001243932001e-04, RES(3.4526699672092216295e-4, 0.0)}, + {FN (arctanh_real), 1.250e-01, RES(1.2565721414045303884e-1, 0.0)}, + {FN (arctanh_real), 5.0e-01, RES(5.4930614433405484570e-1, 0.0)}, + {FN (arctanh_real), 7.50e-01, RES(9.7295507452765665255e-1, 0.0)}, + {FN (arctanh_real), 2.0e+00, RES(5.4930614433405484570e-1, -1.5707963267948966192e0)}, + {FN (arctanh_real), 1.0e+01, RES(1.0033534773107558064e-1, -1.5707963267948966192e0)}, + {FN (arccsc_real), -1.0e+01, RES(-1.0016742116155979635e-1, 0.0)}, + {FN (arccsc_real), -2.0e+00, RES(-5.2359877559829887308e-1, 0.0)}, + {FN (arccsc_real), -1.0e+00, RES(-1.5707963267948966192e0, 0.0)}, + {FN (arccsc_real), -7.50e-01, RES(-1.5707963267948966192e0, 7.9536546122390563053e-1)}, + {FN (arccsc_real), -5.0e-01, RES(-1.5707963267948966192e0, 1.3169578969248167086e0)}, + {FN (arccsc_real), -1.250e-01, RES(-1.5707963267948966192e0, 2.7686593833135738327e0)}, + {FN (arccsc_real), -3.45266983001243932001e-04, RES(-1.5707963267948966192e0, 8.6643397271969925794e0)}, + {FN (arccsc_real), -1.19209289550781250e-07, RES(-1.5707963267948966192e0, 1.6635532333438683873e1)}, + {FN (arccsc_real), 1.19209289550781250e-07, RES(1.5707963267948966192e0, -1.6635532333438683873e1)}, + {FN (arccsc_real), 3.45266983001243932001e-04, RES(1.5707963267948966192e0, -8.6643397271969925794e0)}, + {FN (arccsc_real), 1.250e-01, RES(1.5707963267948966192e0, -2.7686593833135738327e0)}, + {FN (arccsc_real), 5.0e-01, RES(1.5707963267948966192e0, -1.3169578969248167086e0)}, + {FN (arccsc_real), 7.50e-01, RES(1.5707963267948966192e0, -7.9536546122390563053e-1)}, + {FN (arccsc_real), 1.0e+00, RES(1.5707963267948966192e0, 0.0)}, + {FN (arccsc_real), 2.0e+00, RES(5.2359877559829887308e-1, 0.0)}, + {FN (arccsc_real), 1.0e+01, RES(1.0016742116155979635e-1, 0.0)}, + {FN (arcsec_real), -1.0e+01, RES(1.6709637479564564156e0, 0.0)}, + {FN (arcsec_real), -2.0e+00, RES(2.0943951023931954923e0, 0.0)}, + {FN (arcsec_real), -1.0e+00, RES(3.1415926535897932385e0, 0.0)}, + {FN (arcsec_real), -7.50e-01, RES(3.1415926535897932385e0, -7.9536546122390563053e-1)}, + {FN (arcsec_real), -5.0e-01, RES(3.1415926535897932385e0, -1.3169578969248167086e0)}, + {FN (arcsec_real), -1.250e-01, RES(3.1415926535897932385e0, -2.7686593833135738327e0)}, + {FN (arcsec_real), -3.45266983001243932001e-04, RES(3.1415926535897932385e0, -8.6643397271969925794e0)}, + {FN (arcsec_real), -1.19209289550781250e-07, RES(3.1415926535897932385e0, -1.6635532333438683873e1)}, + {FN (arcsec_real), 1.19209289550781250e-07, RES(0, 1.6635532333438683873e1)}, + {FN (arcsec_real), 3.45266983001243932001e-04, RES(0, 8.6643397271969925794e0)}, + {FN (arcsec_real), 1.250e-01, RES(0, 2.7686593833135738327e0)}, + {FN (arcsec_real), 5.0e-01, RES(0, 1.3169578969248167086e0)}, + {FN (arcsec_real), 7.50e-01, RES(0, 7.9536546122390563053e-1)}, + {FN (arcsec_real), 1.0e+00, RES(0e0, 0.0)}, + {FN (arcsec_real), 2.0e+00, RES(1.0471975511965977462e0, 0.0)}, + {FN (arcsec_real), 1.0e+01, RES(1.4706289056333368229e0, 0.0)}, diff -x.info* -rc2P gsl-1.3/complex/test.c gsl-1.4/complex/test.c *** gsl-1.3/complex/test.c Mon Aug 27 16:33:36 2001 --- gsl-1.4/complex/test.c Fri Jul 25 15:18:10 2003 *************** *** 47,50 **** --- 47,60 ---- }; + struct freal + { + char *name; + gsl_complex (*f) (double x); + double x; + double fx; + double fy; + }; + + #define FN(x) "gsl_complex_" #x, gsl_complex_ ## x #define ARG(x,y) x, y *************** *** 64,67 **** --- 74,84 ---- }; + struct freal listreal[] = + { + #include "results_real.h" + {"", 0, 0, 0, 0} + }; + + int main (void) *************** *** 114,117 **** --- 131,156 ---- gsl_test_rel (fx, t.fx, 10 * GSL_DBL_EPSILON, "%s real part at (%g,%g)", t.name, t.x, t.y); gsl_test_rel (fy, t.fy, 10 * GSL_DBL_EPSILON, "%s imag part at (%g,%g)", t.name, t.x, t.y); + i++; + } + + + i = 0; + + while (listreal[i].f) + { + struct freal t = listreal[i]; + gsl_complex fz = (t.f) (t.x); + double fx = GSL_REAL (fz), fy = GSL_IMAG (fz); + + #ifdef DEBUG + printf("x = "); gsl_ieee_fprintf_double (stdout, &t.x); printf("\n"); + printf("fx = "); gsl_ieee_fprintf_double (stdout, &fx); printf("\n"); + printf("ex = "); gsl_ieee_fprintf_double (stdout, &t.fx); printf("\n"); + printf("fy = "); gsl_ieee_fprintf_double (stdout, &fy); printf("\n"); + printf("ey = "); gsl_ieee_fprintf_double (stdout, &t.fy); printf("\n"); + #endif + + gsl_test_rel (fx, t.fx, 10 * GSL_DBL_EPSILON, "%s real part at (%g,0)", t.name, t.x); + gsl_test_rel (fy, t.fy, 10 * GSL_DBL_EPSILON, "%s imag part at (%g,0)", t.name, t.x); i++; } diff -x.info* -rc2P gsl-1.3/config.guess gsl-1.4/config.guess *** gsl-1.3/config.guess Sun Dec 15 18:39:46 2002 --- gsl-1.4/config.guess Mon Jun 16 08:00:23 2003 *************** *** 2,8 **** # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ! # 2000, 2001, 2002 Free Software Foundation, Inc. ! timestamp='2002-10-21' # This file is free software; you can redistribute it and/or modify it --- 2,8 ---- # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ! # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ! timestamp='2003-05-09' # This file is free software; you can redistribute it and/or modify it *************** *** 99,110 **** # use `HOST_CC' if defined, but it is deprecated. ! # This shell variable is my proudest work .. or something. --bje ! set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; ! (old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) ! || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; ! dummy=$tmpdir/dummy ; ! files="$dummy.c $dummy.o $dummy.rel $dummy" ; ! trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; --- 99,113 ---- # use `HOST_CC' if defined, but it is deprecated. ! # Portable tmp directory creation inspired by the Autoconf team. ! set_cc_for_build=' ! trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; ! trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; ! : ${TMPDIR=/tmp} ; ! { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || ! { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || ! { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; ! dummy=$tmp/dummy ; ! tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; *************** *** 114,118 **** fi ; done ; - rm -f $files ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; --- 117,120 ---- *************** *** 121,126 **** ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; ! esac ; ! unset files' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. --- 123,127 ---- ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; ! esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. *************** *** 179,183 **** esac # The OS release ! release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: --- 180,195 ---- esac # The OS release ! # Debian GNU/NetBSD machines have a different userland, and ! # thus, need a distinct triplet. However, they do not need ! # kernel version information, so it can be replaced with a ! # suitable tag, in the style of linux-gnu. ! case "${UNAME_VERSION}" in ! Debian*) ! release='-gnu' ! ;; ! *) ! release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ! ;; ! esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: *************** *** 228,291 **** UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - eval $set_cc_for_build - cat <$dummy.s - .data - \$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main - main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main - EOF - $CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null - if test "$?" = 0 ; then - case `$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - 3-1307) - UNAME_MACHINE="alphaev7" - ;; - esac - fi - rm -f $dummy.s $dummy && rmdir $tmpdir echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; --- 240,284 ---- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; *************** *** 440,445 **** $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ ! && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 ! rm -f $dummy.c $dummy && rmdir $tmpdir echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; --- 433,437 ---- $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ ! && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; *************** *** 450,454 **** echo powerpc-harris-powermax exit 0 ;; ! Night_Hawk:*:*:PowerMAX_OS) echo powerpc-harris-powermax exit 0 ;; --- 442,446 ---- echo powerpc-harris-powermax exit 0 ;; ! Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; *************** *** 525,530 **** } EOF ! $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 ! rm -f $dummy.c $dummy && rmdir $tmpdir echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then --- 517,521 ---- } EOF ! $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then *************** *** 625,632 **** EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` ! if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi ! rm -f $dummy.c $dummy && rmdir $tmpdir fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; --- 616,633 ---- EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` ! test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; *************** *** 662,667 **** } EOF ! $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 ! rm -f $dummy.c $dummy && rmdir $tmpdir echo unknown-hitachi-hiuxwe2 exit 0 ;; --- 663,667 ---- } EOF ! $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; *************** *** 721,727 **** echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' --- 721,724 ---- *************** *** 730,733 **** --- 727,733 ---- echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` *************** *** 745,749 **** echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; ! *:FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build --- 745,749 ---- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; ! *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build *************** *** 757,761 **** EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; --- 757,760 ---- *************** *** 770,774 **** exit 0 ;; x86:Interix*:3*) ! echo i386-pc-interix3 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) --- 769,776 ---- exit 0 ;; x86:Interix*:3*) ! echo i586-pc-interix3 ! exit 0 ;; ! [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) ! echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) *************** *** 776,780 **** # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? ! echo i386-pc-interix exit 0 ;; i*:UWIN*:*) --- 778,782 ---- # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? ! echo i586-pc-interix exit 0 ;; i*:UWIN*:*) *************** *** 819,824 **** EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` ! rm -f $dummy.c && rmdir $tmpdir ! test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 ;; ppc:Linux:*:*) --- 821,844 ---- EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` ! test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ! ;; ! mips64:Linux:*:*) ! eval $set_cc_for_build ! sed 's/^ //' << EOF >$dummy.c ! #undef CPU ! #undef mips64 ! #undef mips64el ! #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) ! CPU=mips64el ! #else ! #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) ! CPU=mips64 ! #else ! CPU= ! #endif ! #endif ! EOF ! eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` ! test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) *************** *** 915,919 **** EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - rm -f $dummy.c && rmdir $tmpdir test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 --- 935,938 ---- *************** *** 933,936 **** --- 952,972 ---- echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` *************** *** 967,973 **** fi exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; pc:*:*:*) # Left here for compatibility: --- 1003,1006 ---- *************** *** 996,1002 **** echo m68k-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; ! 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ --- 1029,1038 ---- echo m68k-convergent-sysv exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; ! 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ *************** *** 1015,1021 **** echo m68k-atari-sysv4 exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} --- 1051,1054 ---- *************** *** 1099,1103 **** exit 0 ;; *:Darwin:*:*) ! echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) --- 1132,1140 ---- exit 0 ;; *:Darwin:*:*) ! case `uname -p` in ! *86) UNAME_PROCESSOR=i686 ;; ! powerpc) UNAME_PROCESSOR=powerpc ;; ! esac ! echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) *************** *** 1135,1143 **** echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 --- 1172,1175 ---- *************** *** 1158,1167 **** echo pdp10-unknown-its exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; esac --- 1190,1193 ---- *************** *** 1284,1289 **** EOF ! $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 ! rm -f $dummy.c $dummy && rmdir $tmpdir # Apollos put the system type in the environment. --- 1310,1314 ---- EOF ! $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. diff -x.info* -rc2P gsl-1.3/config.h.in gsl-1.4/config.h.in *** gsl-1.3/config.h.in Tue Dec 10 19:57:21 2002 --- gsl-1.4/config.h.in Thu Aug 14 12:36:02 2003 *************** *** 1,85 **** ! /* config.h.in. Generated automatically from configure.in by autoheader. */ ! /* Define to empty if the keyword does not work. */ ! #undef const ! /* Define if you don't have vprintf but do have _doprnt. */ ! #undef HAVE_DOPRNT ! ! /* Define if you have the vprintf function. */ ! #undef HAVE_VPRINTF ! /* Define as __inline if that's what the C compiler calls it. */ ! #undef inline ! /* Define to `unsigned' if doesn't define. */ ! #undef size_t ! /* Define if you have the ANSI C header files. */ ! #undef STDC_HEADERS ! /* Define if you have the acosh function. */ ! #undef HAVE_ACOSH ! /* Define if you have the asinh function. */ ! #undef HAVE_ASINH ! /* Define if you have the atanh function. */ ! #undef HAVE_ATANH ! /* Define if you have the clock function. */ ! #undef HAVE_CLOCK ! /* Define if you have the expm1 function. */ ! #undef HAVE_EXPM1 ! /* Define if you have the finite function. */ ! #undef HAVE_FINITE ! /* Define if you have the frexp function. */ ! #undef HAVE_FREXP ! /* Define if you have the hypot function. */ ! #undef HAVE_HYPOT ! /* Define if you have the isfinite function. */ ! #undef HAVE_ISFINITE ! /* Define if you have the isinf function. */ ! #undef HAVE_ISINF ! /* Define if you have the isnan function. */ ! #undef HAVE_ISNAN ! /* Define if you have the ldexp function. */ ! #undef HAVE_LDEXP ! /* Define if you have the log1p function. */ ! #undef HAVE_LOG1P ! /* Define if you have the memcpy function. */ #undef HAVE_MEMCPY ! /* Define if you have the memmove function. */ #undef HAVE_MEMMOVE ! /* Define if you have the strdup function. */ #undef HAVE_STRDUP ! /* Define if you have the strtol function. */ #undef HAVE_STRTOL ! /* Define if you have the strtoul function. */ #undef HAVE_STRTOUL ! /* Define if you have the header file. */ ! #undef HAVE_DLFCN_H /* Name of package */ #undef PACKAGE /* Version number of package */ #undef VERSION /* Define if you have inline */ #undef HAVE_INLINE --- 1,152 ---- ! /* config.h.in. Generated from configure.ac by autoheader. */ ! /* Define to 1 if you have the declaration of `acosh', and to 0 if you don't. ! */ ! #undef HAVE_DECL_ACOSH ! /* Define to 1 if you have the declaration of `asinh', and to 0 if you don't. ! */ ! #undef HAVE_DECL_ASINH ! /* Define to 1 if you have the declaration of `atanh', and to 0 if you don't. ! */ ! #undef HAVE_DECL_ATANH ! /* Define to 1 if you have the declaration of `expm1', and to 0 if you don't. ! */ ! #undef HAVE_DECL_EXPM1 ! /* Define to 1 if you have the declaration of `feenableexcept', and to 0 if ! you don't. */ ! #undef HAVE_DECL_FEENABLEEXCEPT ! /* Define to 1 if you have the declaration of `fesettrapenable', and to 0 if ! you don't. */ ! #undef HAVE_DECL_FESETTRAPENABLE ! /* Define to 1 if you have the declaration of `finite', and to 0 if you don't. ! */ ! #undef HAVE_DECL_FINITE ! /* Define to 1 if you have the declaration of `frexp', and to 0 if you don't. ! */ ! #undef HAVE_DECL_FREXP ! /* Define to 1 if you have the declaration of `hypot', and to 0 if you don't. ! */ ! #undef HAVE_DECL_HYPOT ! /* Define to 1 if you have the declaration of `isfinite', and to 0 if you ! don't. */ ! #undef HAVE_DECL_ISFINITE ! /* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. ! */ ! #undef HAVE_DECL_ISINF ! /* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. ! */ ! #undef HAVE_DECL_ISNAN ! /* Define to 1 if you have the declaration of `ldexp', and to 0 if you don't. ! */ ! #undef HAVE_DECL_LDEXP ! /* Define to 1 if you have the declaration of `log1p', and to 0 if you don't. ! */ ! #undef HAVE_DECL_LOG1P ! /* Define to 1 if you have the header file. */ ! #undef HAVE_DLFCN_H ! /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ ! #undef HAVE_DOPRNT ! /* Define to 1 if you have the header file. */ ! #undef HAVE_INTTYPES_H ! /* Define to 1 if you have the `m' library (-lm). */ ! #undef HAVE_LIBM ! /* Define to 1 if you have the `memcpy' function. */ #undef HAVE_MEMCPY ! /* Define to 1 if you have the `memmove' function. */ #undef HAVE_MEMMOVE ! /* Define to 1 if you have the header file. */ ! #undef HAVE_MEMORY_H ! ! /* Define to 1 if you have the header file. */ ! #undef HAVE_STDINT_H ! ! /* Define to 1 if you have the header file. */ ! #undef HAVE_STDLIB_H ! ! /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP ! /* Define to 1 if you have the header file. */ ! #undef HAVE_STRINGS_H ! ! /* Define to 1 if you have the header file. */ ! #undef HAVE_STRING_H ! ! /* Define to 1 if you have the `strtol' function. */ #undef HAVE_STRTOL ! /* Define to 1 if you have the `strtoul' function. */ #undef HAVE_STRTOUL ! /* Define to 1 if you have the header file. */ ! #undef HAVE_SYS_STAT_H ! ! /* Define to 1 if you have the header file. */ ! #undef HAVE_SYS_TYPES_H ! ! /* Define to 1 if you have the header file. */ ! #undef HAVE_UNISTD_H ! ! /* Define to 1 if you have the `vprintf' function. */ ! #undef HAVE_VPRINTF /* Name of package */ #undef PACKAGE + /* Define to the address where bug reports for this package should be sent. */ + #undef PACKAGE_BUGREPORT + + /* Define to the full name of this package. */ + #undef PACKAGE_NAME + + /* Define to the full name and version of this package. */ + #undef PACKAGE_STRING + + /* Define to the one symbol short name of this package. */ + #undef PACKAGE_TARNAME + + /* Define to the version of this package. */ + #undef PACKAGE_VERSION + + /* Define to 1 if you have the ANSI C header files. */ + #undef STDC_HEADERS + /* Version number of package */ #undef VERSION + /* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ + #undef inline + + /* Define to `unsigned' if does not define. */ + #undef size_t + + /* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ + #undef volatile + + /* Defined if this is an official release */ + #undef RELEASED + /* Define if you have inline */ #undef HAVE_INLINE *************** *** 88,116 **** #undef HIDE_INLINE_STATIC - /* Define if you have the ansi CLOCKS_PER_SEC clock rate */ - #undef HAVE_CLOCKS_PER_SEC - - /* Defined if configure has guessed a missing ansi CLOCKS_PER_SEC clock rate */ - #undef HAVE_GUESSED_CLOCKS_PER_SEC - - /* Use configure's best guess for CLOCKS_PER_SEC if it is unknown */ - #ifndef HAVE_CLOCKS_PER_SEC - #define CLOCKS_PER_SEC HAVE_GUESSED_CLOCKS_PER_SEC - #endif - /* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */ #undef HAVE_EXIT_SUCCESS_AND_FAILURE /* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ ! #ifndef HAVE_EXIT_SUCCESS_AND_FAILURE #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif /* Define one of these if you have a known IEEE arithmetic interface */ ! #undef HAVE_SPARCLINUX_IEEE_INTERFACE ! #undef HAVE_M68KLINUX_IEEE_INTERFACE ! #undef HAVE_PPCLINUX_IEEE_INTERFACE ! #undef HAVE_X86LINUX_IEEE_INTERFACE #undef HAVE_SUNOS4_IEEE_INTERFACE #undef HAVE_SOLARIS_IEEE_INTERFACE --- 155,175 ---- #undef HIDE_INLINE_STATIC /* Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h */ #undef HAVE_EXIT_SUCCESS_AND_FAILURE /* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */ ! #if !HAVE_EXIT_SUCCESS_AND_FAILURE #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif + /* Define this if printf can handle %Lf for long double */ + #undef HAVE_PRINTF_LONGDOUBLE + /* Define one of these if you have a known IEEE arithmetic interface */ ! #undef HAVE_GNUSPARC_IEEE_INTERFACE ! #undef HAVE_GNUM68K_IEEE_INTERFACE ! #undef HAVE_GNUPPC_IEEE_INTERFACE ! #undef HAVE_GNUX86_IEEE_INTERFACE #undef HAVE_SUNOS4_IEEE_INTERFACE #undef HAVE_SOLARIS_IEEE_INTERFACE *************** *** 126,133 **** #undef HAVE_DARWIN_IEEE_INTERFACE ! /* Define this if we need to include /usr/include/float.h explicitly ! in order to get FP_RND_RN and related macros. This is known to be ! a problem on some Compaq Tru64 unix systems when compiled with GCC. */ ! #undef FIND_FP_RND_IN_USR_INCLUDE_FLOAT_H /* Define a rounding function which moves extended precision values --- 185,193 ---- #undef HAVE_DARWIN_IEEE_INTERFACE ! /* Define this is IEEE comparisons work correctly (e.g. NaN != NaN) */ ! #undef HAVE_IEEE_COMPARISONS ! ! /* Define this is IEEE denormalized numbers are available */ ! #undef HAVE_IEEE_DENORMALS /* Define a rounding function which moves extended precision values *************** *** 147,151 **** #undef HAVE_EXTENDED_PRECISION_REGISTERS ! #ifdef HAVE_EXTENDED_PRECISION_REGISTERS #define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) #else --- 207,211 ---- #undef HAVE_EXTENDED_PRECISION_REGISTERS ! #if HAVE_EXTENDED_PRECISION_REGISTERS #define GSL_COERCE_DBL(x) (gsl_coerce_double(x)) #else *************** *** 153,210 **** #endif - /* Define this if printf can handle %Lf for long double */ - #undef HAVE_PRINTF_LONGDOUBLE - - /* Define this is IEEE comparisons work correctly (e.g. NaN != NaN) */ - #undef HAVE_IEEE_COMPARISONS - - /* Define this is IEEE denormalized numbers are available */ - #undef HAVE_IEEE_DENORMALS - /* Substitute gsl functions for missing system functions */ ! #ifndef HAVE_HYPOT #define hypot gsl_hypot #endif ! #ifndef HAVE_LOG1P #define log1p gsl_log1p #endif ! #ifndef HAVE_EXPM1 #define expm1 gsl_expm1 #endif ! #ifndef HAVE_ACOSH #define acosh gsl_acosh #endif ! #ifndef HAVE_ASINH #define asinh gsl_asinh #endif ! #ifndef HAVE_ATANH #define atanh gsl_atanh #endif ! #ifndef HAVE_ISINF ! #define isinf gsl_isinf ! #endif ! ! #ifndef HAVE_ISNAN ! #define isnan gsl_isnan ! #endif ! ! #ifndef HAVE_LDEXP #define ldexp gsl_ldexp #endif ! #ifndef HAVE_FREXP #define frexp gsl_frexp #endif ! #ifndef HAVE_FINITE ! #ifdef HAVE_ISFINITE #define finite isfinite #else --- 213,256 ---- #endif /* Substitute gsl functions for missing system functions */ ! #if !HAVE_DECL_HYPOT #define hypot gsl_hypot #endif ! #if !HAVE_DECL_LOG1P #define log1p gsl_log1p #endif ! #if !HAVE_DECL_EXPM1 #define expm1 gsl_expm1 #endif ! #if !HAVE_DECL_ACOSH #define acosh gsl_acosh #endif ! #if !HAVE_DECL_ASINH #define asinh gsl_asinh #endif ! #if !HAVE_DECL_ATANH #define atanh gsl_atanh #endif ! #if !HAVE_DECL_LDEXP #define ldexp gsl_ldexp #endif ! #if !HAVE_DECL_FREXP #define frexp gsl_frexp #endif + #if !HAVE_DECL_ISINF + #define isinf gsl_isinf + #endif ! #if !HAVE_DECL_FINITE ! #if HAVE_DECL_ISFINITE #define finite isfinite #else *************** *** 213,216 **** --- 259,266 ---- #endif + #if !HAVE_DECL_ISNAN + #define isnan gsl_isnan + #endif + #ifdef __GNUC__ #define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0); *************** *** 219,223 **** #endif ! #ifndef GSL_RANGE_CHECK_ON ! #define GSL_RANGE_CHECK_OFF /* turn off range checking by default */ #endif --- 269,273 ---- #endif ! #if defined(GSL_RANGE_CHECK_OFF) || !defined(GSL_RANGE_CHECK) ! #define GSL_RANGE_CHECK 0 /* turn off range checking by default */ #endif diff -x.info* -rc2P gsl-1.3/config.sub gsl-1.4/config.sub *** gsl-1.3/config.sub Sun Dec 15 18:39:46 2002 --- gsl-1.4/config.sub Mon Jun 16 08:00:23 2003 *************** *** 2,8 **** # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ! # 2000, 2001, 2002 Free Software Foundation, Inc. ! timestamp='2002-09-05' # This file is (in principle) common to ALL GNU software. --- 2,8 ---- # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, ! # 2000, 2001, 2002, 2003 Free Software Foundation, Inc. ! timestamp='2003-05-09' # This file is (in principle) common to ALL GNU software. *************** *** 119,123 **** maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in ! nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` --- 119,123 ---- maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in ! nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` *************** *** 246,249 **** --- 246,250 ---- | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64sb1 | mipsisa64sb1el \ *************** *** 251,254 **** --- 252,256 ---- | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ + | msp430 \ | ns16k | ns32k \ | openrisc | or32 \ *************** *** 256,260 **** | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ ! | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ --- 258,262 ---- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ ! | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ *************** *** 295,299 **** | avr-* \ | bs2000-* \ ! | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ --- 297,301 ---- | avr-* \ | bs2000-* \ ! | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ *************** *** 316,324 **** | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ ! | mipstx39 | mipstx39el \ ! | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ --- 318,328 ---- | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ ! | mipstx39-* | mipstx39el-* \ ! | msp430-* \ ! | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ *************** *** 326,334 **** | pyramid-* \ | romp-* | rs6000-* \ ! | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ ! | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ --- 330,340 ---- | pyramid-* \ | romp-* | rs6000-* \ ! | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ ! | tahoe-* | thumb-* \ ! | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ ! | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ *************** *** 368,371 **** --- 374,380 ---- os=-bsd ;; + amd64) + basic_machine=x86_64-pc + ;; amdahl) basic_machine=580-amdahl *************** *** 717,720 **** --- 726,733 ---- basic_machine=np1-gould ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; nsr-tandem) basic_machine=nsr-tandem *************** *** 902,909 **** os=-dynix ;; - t3d) - basic_machine=alpha-cray - os=-unicos - ;; t3e) basic_machine=alphaev5-cray --- 915,918 ---- *************** *** 922,925 **** --- 931,942 ---- os=-coff ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; tx39) basic_machine=mipstx39-unknown *************** *** 978,985 **** os=-proelf ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt - ;; xps | xps100) basic_machine=xps100-honeywell --- 995,998 ---- *************** *** 1028,1032 **** basic_machine=we32k-att ;; ! sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) basic_machine=sh-unknown ;; --- 1041,1045 ---- basic_machine=we32k-att ;; ! sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; *************** *** 1114,1122 **** | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ ! | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ ! | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) # Remember, each alternative MUST END IN *, to match a version number. ;; --- 1127,1136 ---- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ ! | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ ! | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ ! | -powermax* | -dnix*) # Remember, each alternative MUST END IN *, to match a version number. ;; *************** *** 1130,1135 **** esac ;; -nto*) ! os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ --- 1144,1151 ---- esac ;; + -nto-qnx*) + ;; -nto*) ! os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ *************** *** 1224,1227 **** --- 1240,1249 ---- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos ;; -none) diff -x.info* -rc2P gsl-1.3/configure gsl-1.4/configure *** gsl-1.3/configure Wed Dec 18 22:32:51 2002 --- gsl-1.4/configure Thu Aug 14 12:28:38 2003 *************** *** 1,26 **** #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. ! # Generated automatically using autoconf version 2.13 ! # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. - # Defaults: - ac_help= - ac_default_prefix=/usr/local - # Any additions from configure.in: - ac_help="$ac_help - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer" - ac_help="$ac_help - --enable-shared[=PKGS] build shared libraries [default=yes]" - ac_help="$ac_help - --enable-static[=PKGS] build static libraries [default=yes]" - ac_help="$ac_help - --enable-fast-install[=PKGS] optimize for fast installation [default=yes]" - ac_help="$ac_help - --with-gnu-ld assume the C compiler uses GNU ld [default=no]" # Find the correct PATH separator. Usually this is `:', but --- 1,243 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.57 for gsl 1.4. # + # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 + # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. + ## --------------------- ## + ## M4sh Initialization. ## + ## --------------------- ## + + # Be Bourne compatible + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix + fi + + # Support unset when possible. + if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset + else + as_unset=false + fi + + + # Work around bugs in pre-3.0 UWIN ksh. + $as_unset ENV MAIL MAILPATH + PS1='$ ' + PS2='> ' + PS4='+ ' + + # NLS nuisances. + for as_var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME + do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi + done + + # Required to use basename. + if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr + else + as_expr=false + fi + + if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false + fi + + + # Name of the executable. + as_me=`$as_basename "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || + echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + + # PATH needs CR, and LINENO needs CR and PATH. + # Avoid depending upon Character Ranges. + as_cr_letters='abcdefghijklmnopqrstuvwxyz' + as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' + as_cr_Letters=$as_cr_letters$as_cr_LETTERS + as_cr_digits='0123456789' + as_cr_alnum=$as_cr_Letters$as_cr_digits + + # The user is always right. + if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh + fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done + + ;; + esac + # We did not find ourselves, most probably we were run as `sh COMMAND' + # in which case we are not to be found in the path. + if test "x$as_myself" = x; then + as_myself=$0 + fi + if test ! -f "$as_myself"; then + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done + done + ;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit + } + + + case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' + ' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; + esac + + if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi + rm -f conf$$ conf$$.exe conf$$.file + + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: + else + as_mkdir_p=false + fi + + as_executable_p="test -f" + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + + # Sed expression to map a string onto a valid variable name. + as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + + # IFS + # We need space, tab and new line, in precisely that order. + as_nl=' + ' + IFS=" $as_nl" + + # CDPATH. + $as_unset CDPATH # Find the correct PATH separator. Usually this is `:', but *************** *** 182,199 **** ! ac_help="$ac_help ! --disable-libtool-lock avoid locking (might break parallel builds)" ! ac_help="$ac_help ! --with-pic try to use only PIC/non-PIC objects [default=use both]" # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. ! build=NONE ! cache_file=./config.cache exec_prefix=NONE - host=NONE no_create= - nonopt=NONE no_recursion= prefix=NONE --- 399,482 ---- ! ! # Name of the host. ! # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, ! # so uname gets run too. ! ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` ! ! exec 6>&1 ! ! # ! # Initializations. ! # ! ac_default_prefix=/usr/local ! ac_config_libobj_dir=. ! cross_compiling=no ! subdirs= ! MFLAGS= ! MAKEFLAGS= ! SHELL=${CONFIG_SHELL-/bin/sh} ! ! # Maximum number of lines to put in a shell here document. ! # This variable seems obsolete. It should probably be removed, and ! # only ac_max_sed_lines should be used. ! : ${ac_max_here_lines=38} ! ! # Identity of this package. ! PACKAGE_NAME='gsl' ! PACKAGE_TARNAME='gsl' ! PACKAGE_VERSION='1.4' ! PACKAGE_STRING='gsl 1.4' ! PACKAGE_BUGREPORT='' ! ! ac_unique_file="gsl_math.h" ! # Factoring default headers for most tests. ! ac_includes_default="\ ! #include ! #if HAVE_SYS_TYPES_H ! # include ! #endif ! #if HAVE_SYS_STAT_H ! # include ! #endif ! #if STDC_HEADERS ! # include ! # include ! #else ! # if HAVE_STDLIB_H ! # include ! # endif ! #endif ! #if HAVE_STRING_H ! # if !STDC_HEADERS && HAVE_MEMORY_H ! # include ! # endif ! # include ! #endif ! #if HAVE_STRINGS_H ! # include ! #endif ! #if HAVE_INTTYPES_H ! # include ! #else ! # if HAVE_STDINT_H ! # include ! # endif ! #endif ! #if HAVE_UNISTD_H ! # include ! #endif" ! ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GSL_LT_VERSION GSL_LT_CBLAS_VERSION RELEASED build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP LN_S RANLIB ac_ct_RANLIB AR ac_ct_AR ECHO EGREP LIBTOOL GSL_CFLAGS GSL_LIBS HAVE_INLINE LIBOBJS HAVE_PRINTF_LONGDOUBLE HAVE_EXTENDED_PRECISION_REGISTERS HAVE_GNUSPARC_IEEE_INTERFACE HAVE_GNUM68K_IEEE_INTERFACE HAVE_GNUPPC_IEEE_INTERFACE HAVE_GNUX86_IEEE_INTERFACE HAVE_SUNOS4_IEEE_INTERFACE HAVE_SOLARIS_IEEE_INTERFACE HAVE_HPUX11_IEEE_INTERFACE HAVE_HPUX_IEEE_INTERFACE HAVE_TRU64_IEEE_INTERFACE HAVE_IRIX_IEEE_INTERFACE HAVE_AIX_IEEE_INTERFACE HAVE_FREEBSD_IEEE_INTERFACE HAVE_OS2EMX_IEEE_INTERFACE HAVE_NETBSD_IEEE_INTERFACE HAVE_OPENBSD_IEEE_INTERFACE HAVE_DARWIN_IEEE_INTERFACE HAVE_IEEE_COMPARISONS HAVE_IEEE_DENORMALS LTLIBOBJS' ! ac_subst_files='' # Initialize some variables set by options. + ac_init_help= + ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. ! cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE *************** *** 204,211 **** site= srcdir= - target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' --- 487,499 ---- site= srcdir= verbose= x_includes=NONE x_libraries=NONE + + # Installation directory options. + # These are left unexpanded so users can "make install exec_prefix=/foo" + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' *************** *** 221,235 **** mandir='${prefix}/man' - # Initialize some other variables. - subdirs= - MFLAGS= MAKEFLAGS= - SHELL=${CONFIG_SHELL-/bin/sh} - # Maximum number of lines to put in a shell here document. - ac_max_here_lines=12 - ac_prev= for ac_option do - # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then --- 509,515 ---- *************** *** 239,260 **** fi ! case "$ac_option" in ! -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; ! *) ac_optarg= ;; ! esac # Accept the important Cygnus configure options, so we can diagnose typos. ! case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ! bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ! ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) ! build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ --- 519,537 ---- fi ! ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` # Accept the important Cygnus configure options, so we can diagnose typos. ! case $ac_option in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) ! bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ! ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) ! build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ *************** *** 263,267 **** -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ! cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) --- 540,547 ---- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) ! cache_file=$ac_optarg ;; ! ! --config-cache | -C) ! cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) *************** *** 269,295 **** -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) ! datadir="$ac_optarg" ;; -disable-* | --disable-*) ! ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then ! { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } ! fi ! ac_feature=`echo $ac_feature| sed 's/-/_/g'` ! eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ! ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then ! { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } ! fi ! ac_feature=`echo $ac_feature| sed 's/-/_/g'` ! case "$ac_option" in ! *=*) ;; *) ac_optarg=yes ;; esac ! eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ --- 549,575 ---- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) ! datadir=$ac_optarg ;; -disable-* | --disable-*) ! ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ! { (exit 1); exit 1; }; } ! ac_feature=`echo $ac_feature | sed 's/-/_/g'` ! eval "enable_$ac_feature=no" ;; -enable-* | --enable-*) ! ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid feature name: $ac_feature" >&2 ! { (exit 1); exit 1; }; } ! ac_feature=`echo $ac_feature | sed 's/-/_/g'` ! case $ac_option in ! *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac ! eval "enable_$ac_feature='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ *************** *** 300,304 **** | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) ! exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) --- 580,584 ---- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) ! exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) *************** *** 306,368 **** with_gas=yes ;; ! -help | --help | --hel | --he) ! # Omit some internal or obsolete options to make the list less imposing. ! # This message is too long to be a string in the A/UX 3.1 sh. ! cat << EOF ! Usage: configure [options] [host] ! Options: [defaults in brackets after descriptions] ! Configuration: ! --cache-file=FILE cache test results in FILE ! --help print this message ! --no-create do not create output files ! --quiet, --silent do not print \`checking...' messages ! --version print the version of autoconf that created configure ! Directory and file names: ! --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] ! --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [same as prefix] ! --bindir=DIR user executables in DIR [EPREFIX/bin] ! --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] ! --libexecdir=DIR program executables in DIR [EPREFIX/libexec] ! --datadir=DIR read-only architecture-independent data in DIR ! [PREFIX/share] ! --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] ! --sharedstatedir=DIR modifiable architecture-independent data in DIR ! [PREFIX/com] ! --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] ! --libdir=DIR object code libraries in DIR [EPREFIX/lib] ! --includedir=DIR C header files in DIR [PREFIX/include] ! --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] ! --infodir=DIR info documentation in DIR [PREFIX/info] ! --mandir=DIR man documentation in DIR [PREFIX/man] ! --srcdir=DIR find the sources in DIR [configure dir or ..] ! --program-prefix=PREFIX prepend PREFIX to installed program names ! --program-suffix=SUFFIX append SUFFIX to installed program names ! --program-transform-name=PROGRAM ! run sed PROGRAM on installed program names ! EOF ! cat << EOF ! Host type: ! --build=BUILD configure for building on BUILD [BUILD=HOST] ! --host=HOST configure for HOST [guessed] ! --target=TARGET configure for TARGET [TARGET=HOST] ! Features and packages: ! --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) ! --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ! --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ! --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ! --x-includes=DIR X include files are in DIR ! --x-libraries=DIR X library files are in DIR ! EOF ! if test -n "$ac_help"; then ! echo "--enable and --with options recognized:$ac_help" ! fi ! exit 0 ;; -host | --host | --hos | --ho) ! ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) ! host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ --- 586,600 ---- with_gas=yes ;; ! -help | --help | --hel | --he | -h) ! ac_init_help=long ;; ! -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ! ac_init_help=recursive ;; ! -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ! ac_init_help=short ;; -host | --host | --hos | --ho) ! ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) ! host_alias=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ *************** *** 371,385 **** -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) ! includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ! infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) ! libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ --- 603,617 ---- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) ! includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) ! infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) ! libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ *************** *** 388,392 **** -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) ! libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ --- 620,624 ---- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) ! libexecdir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ *************** *** 397,406 **** | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ! localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ! mandir="$ac_optarg" ;; -nfp | --nfp | --nf) --- 629,638 ---- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ! localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) ! mandir=$ac_optarg ;; -nfp | --nfp | --nf) *************** *** 409,413 **** -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ! | --no-cr | --no-c) no_create=yes ;; --- 641,645 ---- -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ! | --no-cr | --no-c | -n) no_create=yes ;; *************** *** 423,432 **** | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ! oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ! prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ --- 655,664 ---- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) ! oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ! prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ *************** *** 435,439 **** -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ! program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ --- 667,671 ---- -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) ! program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ *************** *** 442,446 **** -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ! program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ --- 674,678 ---- -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) ! program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ *************** *** 459,463 **** | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) ! program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ --- 691,695 ---- | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) ! program_transform_name=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ *************** *** 469,473 **** -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) ! sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ --- 701,705 ---- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) ! sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ *************** *** 480,494 **** | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) ! sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) ! site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ! srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ --- 712,726 ---- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) ! sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) ! site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ! srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ *************** *** 497,535 **** -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ! sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ! ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ! target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; ! -version | --version | --versio | --versi | --vers) ! echo "configure generated by autoconf version 2.13" ! exit 0 ;; -with-* | --with-*) ! ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then ! { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } ! fi ac_package=`echo $ac_package| sed 's/-/_/g'` ! case "$ac_option" in ! *=*) ;; *) ac_optarg=yes ;; esac ! eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ! ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. ! if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then ! { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } ! fi ! ac_package=`echo $ac_package| sed 's/-/_/g'` ! eval "with_${ac_package}=no" ;; --x) --- 729,766 ---- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) ! sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ! ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) ! target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; ! -version | --version | --versio | --versi | --vers | -V) ! ac_init_version=: ;; -with-* | --with-*) ! ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid package name: $ac_package" >&2 ! { (exit 1); exit 1; }; } ac_package=`echo $ac_package| sed 's/-/_/g'` ! case $ac_option in ! *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; *) ac_optarg=yes ;; esac ! eval "with_$ac_package='$ac_optarg'" ;; -without-* | --without-*) ! ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. ! expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ! { echo "$as_me: error: invalid package name: $ac_package" >&2 ! { (exit 1); exit 1; }; } ! ac_package=`echo $ac_package | sed 's/-/_/g'` ! eval "with_$ac_package=no" ;; --x) *************** *** 542,546 **** -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ! x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ --- 773,777 ---- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) ! x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ *************** *** 549,565 **** -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ! x_libraries="$ac_optarg" ;; ! -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) ! if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then ! echo "configure: warning: $ac_option: invalid host type" 1>&2 ! fi ! if test "x$nonopt" != xNONE; then ! { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ! fi ! nonopt="$ac_option" ;; --- 780,806 ---- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) ! x_libraries=$ac_optarg ;; ! -*) { echo "$as_me: error: unrecognized option: $ac_option ! Try \`$0 --help' for more information." >&2 ! { (exit 1); exit 1; }; } ;; + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + *) ! # FIXME: should be removed in autoconf 3.0. ! echo "$as_me: WARNING: you should use --build, --host, --target" >&2 ! expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && ! echo "$as_me: WARNING: invalid host type: $ac_option" >&2 ! : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; *************** *** 568,630 **** if test -n "$ac_prev"; then ! { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } ! fi ! ! trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 ! ! # File descriptor usage: ! # 0 standard input ! # 1 file creation ! # 2 errors and warnings ! # 3 some systems may open it to /dev/tty ! # 4 used on the Kubota Titan ! # 6 checking for... messages and results ! # 5 compiler messages saved in config.log ! if test "$silent" = yes; then ! exec 6>/dev/null ! else ! exec 6>&1 fi - exec 5>./config.log ! echo "\ ! This file contains any messages produced by compilers while ! running configure, to aid debugging if configure makes a mistake. ! " 1>&5 ! # Strip out --no-create and --no-recursion so they do not pile up. ! # Also quote any args containing shell metacharacters. ! ac_configure_args= ! for ac_arg do ! case "$ac_arg" in ! -no-create | --no-create | --no-creat | --no-crea | --no-cre \ ! | --no-cr | --no-c) ;; ! -no-recursion | --no-recursion | --no-recursio | --no-recursi \ ! | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; ! *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ! ac_configure_args="$ac_configure_args '$ac_arg'" ;; ! *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done ! # NLS nuisances. ! # Only set these to C if already set. These must not be set unconditionally ! # because not all systems understand e.g. LANG=C (notably SCO). ! # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! ! # Non-C LC_CTYPE values break the ctype check. ! if test "${LANG+set}" = set; then LANG=C; export LANG; fi ! if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi ! if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi ! if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi ! # confdefs.h avoids OS command line length limits that DEFS can exceed. ! rm -rf conftest* confdefs.h ! # AIX cpp loses on an empty file, so make sure it contains at least a newline. ! echo > confdefs.h - # A filename unique to this package, relative to the directory that - # configure is in, which we can look for to find out if srcdir is correct. - ac_unique_file=gsl_math.h # Find the source files, if location was not specified. --- 809,863 ---- if test -n "$ac_prev"; then ! ac_option=--`echo $ac_prev | sed 's/_/-/g'` ! { echo "$as_me: error: missing argument to $ac_option" >&2 ! { (exit 1); exit 1; }; } fi ! # Be sure to have absolute paths. ! for ac_var in exec_prefix prefix ! do ! eval ac_val=$`echo $ac_var` ! case $ac_val in ! [\\/$]* | ?:[\\/]* | NONE | '' ) ;; ! *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ! { (exit 1); exit 1; }; };; ! esac ! done ! # Be sure to have absolute paths. ! for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do ! eval ac_val=$`echo $ac_var` ! case $ac_val in ! [\\/$]* | ?:[\\/]* ) ;; ! *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ! { (exit 1); exit 1; }; };; esac done ! # There might be people who depend on the old broken behavior: `$host' ! # used to hold the argument of --host etc. ! # FIXME: To remove some day. ! build=$build_alias ! host=$host_alias ! target=$target_alias ! ! # FIXME: To remove some day. ! if test "x$host_alias" != x; then ! if test "x$build_alias" = x; then ! cross_compiling=maybe ! echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. ! If a cross compiler is detected then cross compile mode will be used." >&2 ! elif test "x$build_alias" != "x$host_alias"; then ! cross_compiling=yes ! fi ! fi ! ac_tool_prefix= ! test -n "$host_alias" && ac_tool_prefix=$host_alias- ! ! test "$silent" = yes && exec 6>/dev/null # Find the source files, if location was not specified. *************** *** 632,638 **** ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ! ac_prog=$0 ! ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` ! test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then --- 865,880 ---- ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ! ac_confdir=`(dirname "$0") 2>/dev/null || ! $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || ! echo X"$0" | ! sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } ! /^X\(\/\/\)[^/].*/{ s//\1/; q; } ! /^X\(\/\/\)$/{ s//\1/; q; } ! /^X\(\/\).*/{ s//\1/; q; } ! s/.*/./; q'` srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then *************** *** 644,654 **** if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then ! { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else ! { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi ! srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then --- 886,1334 ---- if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then ! { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 ! { (exit 1); exit 1; }; } else ! { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ! { (exit 1); exit 1; }; } fi fi ! (cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || ! { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 ! { (exit 1); exit 1; }; } ! srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` ! ac_env_build_alias_set=${build_alias+set} ! ac_env_build_alias_value=$build_alias ! ac_cv_env_build_alias_set=${build_alias+set} ! ac_cv_env_build_alias_value=$build_alias ! ac_env_host_alias_set=${host_alias+set} ! ac_env_host_alias_value=$host_alias ! ac_cv_env_host_alias_set=${host_alias+set} ! ac_cv_env_host_alias_value=$host_alias ! ac_env_target_alias_set=${target_alias+set} ! ac_env_target_alias_value=$target_alias ! ac_cv_env_target_alias_set=${target_alias+set} ! ac_cv_env_target_alias_value=$target_alias ! ac_env_CC_set=${CC+set} ! ac_env_CC_value=$CC ! ac_cv_env_CC_set=${CC+set} ! ac_cv_env_CC_value=$CC ! ac_env_CFLAGS_set=${CFLAGS+set} ! ac_env_CFLAGS_value=$CFLAGS ! ac_cv_env_CFLAGS_set=${CFLAGS+set} ! ac_cv_env_CFLAGS_value=$CFLAGS ! ac_env_LDFLAGS_set=${LDFLAGS+set} ! ac_env_LDFLAGS_value=$LDFLAGS ! ac_cv_env_LDFLAGS_set=${LDFLAGS+set} ! ac_cv_env_LDFLAGS_value=$LDFLAGS ! ac_env_CPPFLAGS_set=${CPPFLAGS+set} ! ac_env_CPPFLAGS_value=$CPPFLAGS ! ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} ! ac_cv_env_CPPFLAGS_value=$CPPFLAGS ! ac_env_CPP_set=${CPP+set} ! ac_env_CPP_value=$CPP ! ac_cv_env_CPP_set=${CPP+set} ! ac_cv_env_CPP_value=$CPP ! ! # ! # Report the --help message. ! # ! if test "$ac_init_help" = "long"; then ! # Omit some internal or obsolete options to make the list less imposing. ! # This message is too long to be a string in the A/UX 3.1 sh. ! cat <<_ACEOF ! \`configure' configures gsl 1.4 to adapt to many kinds of systems. ! ! Usage: $0 [OPTION]... [VAR=VALUE]... ! ! To assign environment variables (e.g., CC, CFLAGS...), specify them as ! VAR=VALUE. See below for descriptions of some of the useful variables. ! ! Defaults for the options are specified in brackets. ! ! Configuration: ! -h, --help display this help and exit ! --help=short display options specific to this package ! --help=recursive display the short help of all the included packages ! -V, --version display version information and exit ! -q, --quiet, --silent do not print \`checking...' messages ! --cache-file=FILE cache test results in FILE [disabled] ! -C, --config-cache alias for \`--cache-file=config.cache' ! -n, --no-create do not create output files ! --srcdir=DIR find the sources in DIR [configure dir or \`..'] ! ! _ACEOF ! ! cat <<_ACEOF ! Installation directories: ! --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] ! --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] ! ! By default, \`make install' will install all the files in ! \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify ! an installation prefix other than \`$ac_default_prefix' using \`--prefix', ! for instance \`--prefix=\$HOME'. ! ! For better control, use the options below. ! ! Fine tuning of the installation directories: ! --bindir=DIR user executables [EPREFIX/bin] ! --sbindir=DIR system admin executables [EPREFIX/sbin] ! --libexecdir=DIR program executables [EPREFIX/libexec] ! --datadir=DIR read-only architecture-independent data [PREFIX/share] ! --sysconfdir=DIR read-only single-machine data [PREFIX/etc] ! --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] ! --localstatedir=DIR modifiable single-machine data [PREFIX/var] ! --libdir=DIR object code libraries [EPREFIX/lib] ! --includedir=DIR C header files [PREFIX/include] ! --oldincludedir=DIR C header files for non-gcc [/usr/include] ! --infodir=DIR info documentation [PREFIX/info] ! --mandir=DIR man documentation [PREFIX/man] ! _ACEOF ! ! cat <<\_ACEOF ! ! Program names: ! --program-prefix=PREFIX prepend PREFIX to installed program names ! --program-suffix=SUFFIX append SUFFIX to installed program names ! --program-transform-name=PROGRAM run sed PROGRAM on installed program names ! ! System types: ! --build=BUILD configure for building on BUILD [guessed] ! --host=HOST cross-compile to build programs to run on HOST [BUILD] ! _ACEOF ! fi ! ! if test -n "$ac_init_help"; then ! case $ac_init_help in ! short | recursive ) echo "Configuration of gsl 1.4:";; ! esac ! cat <<\_ACEOF ! ! Optional Features: ! --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) ! --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ! --enable-maintainer-mode enable make rules and dependencies not useful ! (and sometimes confusing) to the casual installer ! --enable-shared=PKGS build shared libraries default=yes ! --enable-static=PKGS build static libraries default=yes ! --enable-fast-install=PKGS optimize for fast installation default=yes ! --disable-libtool-lock avoid locking (might break parallel builds) ! ! Optional Packages: ! --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] ! --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ! --with-gnu-ld assume the C compiler uses GNU ld default=no ! --with-pic try to use only PIC/non-PIC objects default=use both ! ! Some influential environment variables: ! CC C compiler command ! CFLAGS C compiler flags ! LDFLAGS linker flags, e.g. -L if you have libraries in a ! nonstandard directory ! CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have ! headers in a nonstandard directory ! CPP C preprocessor ! ! Use these variables to override the choices made by `configure' or to help ! it to find libraries and programs with nonstandard names/locations. ! ! _ACEOF ! fi ! ! if test "$ac_init_help" = "recursive"; then ! # If there are subdirs, report their specific --help. ! ac_popdir=`pwd` ! for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue ! test -d $ac_dir || continue ! ac_builddir=. ! ! if test "$ac_dir" != .; then ! ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ! # A "../" for each directory in $ac_dir_suffix. ! ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` ! else ! ac_dir_suffix= ac_top_builddir= ! fi ! ! case $srcdir in ! .) # No --srcdir option. We are building in place. ! ac_srcdir=. ! if test -z "$ac_top_builddir"; then ! ac_top_srcdir=. ! else ! ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` ! fi ;; ! [\\/]* | ?:[\\/]* ) # Absolute path. ! ac_srcdir=$srcdir$ac_dir_suffix; ! ac_top_srcdir=$srcdir ;; ! *) # Relative path. ! ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ! ac_top_srcdir=$ac_top_builddir$srcdir ;; ! esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ! ! cd $ac_dir ! # Check for guested configure; otherwise get Cygnus style configure. ! if test -f $ac_srcdir/configure.gnu; then ! echo ! $SHELL $ac_srcdir/configure.gnu --help=recursive ! elif test -f $ac_srcdir/configure; then ! echo ! $SHELL $ac_srcdir/configure --help=recursive ! elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then ! echo ! $ac_configure --help ! else ! echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 ! fi ! cd $ac_popdir ! done ! fi ! ! test -n "$ac_init_help" && exit 0 ! if $ac_init_version; then ! cat <<\_ACEOF ! gsl configure 1.4 ! generated by GNU Autoconf 2.57 ! ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! Free Software Foundation, Inc. ! This configure script is free software; the Free Software Foundation ! gives unlimited permission to copy, distribute and modify it. ! _ACEOF ! exit 0 ! fi ! exec 5>config.log ! cat >&5 <<_ACEOF ! This file contains any messages produced by compilers while ! running configure, to aid debugging if configure makes a mistake. ! ! It was created by gsl $as_me 1.4, which was ! generated by GNU Autoconf 2.57. Invocation command line was ! ! $ $0 $@ ! ! _ACEOF ! { ! cat <<_ASUNAME ! ## --------- ## ! ## Platform. ## ! ## --------- ## ! ! hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` ! uname -m = `(uname -m) 2>/dev/null || echo unknown` ! uname -r = `(uname -r) 2>/dev/null || echo unknown` ! uname -s = `(uname -s) 2>/dev/null || echo unknown` ! uname -v = `(uname -v) 2>/dev/null || echo unknown` ! ! /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` ! /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` ! ! /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` ! /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` ! /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` ! hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ! /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` ! /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` ! /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` ! ! _ASUNAME ! ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! echo "PATH: $as_dir" ! done ! ! } >&5 ! ! cat >&5 <<_ACEOF ! ! ! ## ----------- ## ! ## Core tests. ## ! ## ----------- ## ! ! _ACEOF ! ! ! # Keep a trace of the command line. ! # Strip out --no-create and --no-recursion so they do not pile up. ! # Strip out --silent because we don't want to record it for future runs. ! # Also quote any args containing shell meta-characters. ! # Make two passes to allow for proper duplicate-argument suppression. ! ac_configure_args= ! ac_configure_args0= ! ac_configure_args1= ! ac_sep= ! ac_must_keep_next=false ! for ac_pass in 1 2 ! do ! for ac_arg ! do ! case $ac_arg in ! -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; ! -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ! | -silent | --silent | --silen | --sile | --sil) ! continue ;; ! *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ! ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; ! esac ! case $ac_pass in ! 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; ! 2) ! ac_configure_args1="$ac_configure_args1 '$ac_arg'" ! if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. ! else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac ! fi ! ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" ! # Get rid of the leading space. ! ac_sep=" " ! ;; ! esac ! done ! done ! $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } ! $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } ! ! # When interrupted or exit'd, cleanup temporary files, and complete ! # config.log. We remove comments because anyway the quotes in there ! # would cause problems or look ugly. ! # WARNING: Be sure not to use single quotes in there, as some shells, ! # such as our DU 5.0 friend, will then `close' the trap. ! trap 'exit_status=$? ! # Save into config.log some information that might help in debugging. ! { ! echo ! ! cat <<\_ASBOX ! ## ---------------- ## ! ## Cache variables. ## ! ## ---------------- ## ! _ASBOX ! echo ! # The following way of writing the cache mishandles newlines in values, ! { ! (set) 2>&1 | ! case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in ! *ac_space=\ *) ! sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ! ;; ! *) ! sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ! ;; ! esac; ! } ! echo ! ! cat <<\_ASBOX ! ## ----------------- ## ! ## Output variables. ## ! ## ----------------- ## ! _ASBOX ! echo ! for ac_var in $ac_subst_vars ! do ! eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" ! done | sort ! echo ! ! if test -n "$ac_subst_files"; then ! cat <<\_ASBOX ! ## ------------- ## ! ## Output files. ## ! ## ------------- ## ! _ASBOX ! echo ! for ac_var in $ac_subst_files ! do ! eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" ! done | sort ! echo ! fi ! ! if test -s confdefs.h; then ! cat <<\_ASBOX ! ## ----------- ## ! ## confdefs.h. ## ! ## ----------- ## ! _ASBOX ! echo ! sed "/^$/d" confdefs.h | sort ! echo ! fi ! test "$ac_signal" != 0 && ! echo "$as_me: caught signal $ac_signal" ! echo "$as_me: exit $exit_status" ! } >&5 ! rm -f core core.* *.core && ! rm -rf conftest* confdefs* conf$$* $ac_clean_files && ! exit $exit_status ! ' 0 ! for ac_signal in 1 2 13 15; do ! trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal ! done ! ac_signal=0 ! ! # confdefs.h avoids OS command line length limits that DEFS can exceed. ! rm -rf conftest* confdefs.h ! # AIX cpp loses on an empty file, so make sure it contains at least a newline. ! echo >confdefs.h ! ! # Predefined preprocessor variables. ! ! cat >>confdefs.h <<_ACEOF ! #define PACKAGE_NAME "$PACKAGE_NAME" ! _ACEOF ! ! ! cat >>confdefs.h <<_ACEOF ! #define PACKAGE_TARNAME "$PACKAGE_TARNAME" ! _ACEOF ! + cat >>confdefs.h <<_ACEOF + #define PACKAGE_VERSION "$PACKAGE_VERSION" + _ACEOF + + + cat >>confdefs.h <<_ACEOF + #define PACKAGE_STRING "$PACKAGE_STRING" + _ACEOF + + + cat >>confdefs.h <<_ACEOF + #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" + _ACEOF + + + # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then *************** *** 661,665 **** for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then ! echo "loading site script $ac_site_file" . "$ac_site_file" fi --- 1341,1347 ---- for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then ! { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 ! echo "$as_me: loading site script $ac_site_file" >&6;} ! sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi *************** *** 667,700 **** if test -r "$cache_file"; then ! echo "loading cache $cache_file" ! . $cache_file else ! echo "creating cache $cache_file" ! > $cache_file fi ac_ext=c - # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! ac_exeext= ! ac_objext=o ! if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then ! # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. ! if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ! ac_n= ac_c=' ! ' ac_t=' ' ! else ! ac_n=-n ac_c= ac_t= ! fi ! else ! ac_n= ac_c='\c' ac_t= ! fi ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do --- 1349,1454 ---- if test -r "$cache_file"; then ! # Some versions of bash will fail to source /dev/null (special ! # files actually), so we avoid doing that. ! if test -f "$cache_file"; then ! { echo "$as_me:$LINENO: loading cache $cache_file" >&5 ! echo "$as_me: loading cache $cache_file" >&6;} ! case $cache_file in ! [\\/]* | ?:[\\/]* ) . $cache_file;; ! *) . ./$cache_file;; ! esac ! fi else ! { echo "$as_me:$LINENO: creating cache $cache_file" >&5 ! echo "$as_me: creating cache $cache_file" >&6;} ! >$cache_file ! fi ! ! # Check that the precious variables saved in the cache have kept the same ! # value. ! ac_cache_corrupted=false ! for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ! eval ac_old_set=\$ac_cv_env_${ac_var}_set ! eval ac_new_set=\$ac_env_${ac_var}_set ! eval ac_old_val="\$ac_cv_env_${ac_var}_value" ! eval ac_new_val="\$ac_env_${ac_var}_value" ! case $ac_old_set,$ac_new_set in ! set,) ! { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 ! echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ! ac_cache_corrupted=: ;; ! ,set) ! { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 ! echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ! ac_cache_corrupted=: ;; ! ,);; ! *) ! if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ! echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 ! echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 ! echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: ! fi;; ! esac ! # Pass precious variables to config.status. ! if test "$ac_new_set" = set; then ! case $ac_new_val in ! *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ! ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ! *) ac_arg=$ac_var=$ac_new_val ;; ! esac ! case " $ac_configure_args " in ! *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. ! *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; ! esac ! fi ! done ! if $ac_cache_corrupted; then ! { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 ! echo "$as_me: error: changes in the environment can compromise the build" >&2;} ! { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 ! echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} ! { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! ! ! ! ! ! ! ! ! ! ! ! ! ! + + + + + + + + + + + + + am__api_version="1.7" ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do *************** *** 707,718 **** ac_install_sh="$ac_aux_dir/install.sh -c" break fi done if test -z "$ac_aux_dir"; then ! { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } ! fi ! ac_config_guess=$ac_aux_dir/config.guess ! ac_config_sub=$ac_aux_dir/config.sub ! ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), --- 1461,1478 ---- ac_install_sh="$ac_aux_dir/install.sh -c" break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break fi done if test -z "$ac_aux_dir"; then ! { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 ! echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} ! { (exit 1); exit 1; }; } ! fi ! ac_config_guess="$SHELL $ac_aux_dir/config.guess" ! ac_config_sub="$SHELL $ac_aux_dir/config.sub" ! ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. # Find a good install program. We prefer a C program (faster), *************** *** 723,765 **** # IRIX /sbin/install # AIX /bin/install # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. ! echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:731: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then ! if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" ! for ac_dir in $PATH; do ! # Account for people who put trailing slashes in PATH elements. ! case "$ac_dir/" in ! /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; ! *) ! # OSF1 and SCO ODT 3.0 have their own names for install. ! # Don't use installbsd from OSF since it installs stuff as root ! # by default. ! for ac_prog in ginstall scoinst install; do ! if test -f $ac_dir/$ac_prog; then ! if test $ac_prog = install && ! grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then ! # AIX install. It has an incompatible calling convention. ! : ! else ! ac_cv_path_install="$ac_dir/$ac_prog -c" ! break 2 ! fi ! fi done ! ;; ! esac ! done ! IFS="$ac_save_IFS" fi if test "${ac_cv_path_install+set}" = set; then ! INSTALL="$ac_cv_path_install" else # As a last resort, use the slow shell script. We don't cache a --- 1483,1537 ---- # IRIX /sbin/install # AIX /bin/install + # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. ! echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ! echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then ! if test "${ac_cv_path_install+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! # Account for people who put trailing slashes in PATH elements. ! case $as_dir/ in ! ./ | .// | /cC/* | \ ! /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ! /usr/ucb/* ) ;; ! *) ! # OSF1 and SCO ODT 3.0 have their own names for install. ! # Don't use installbsd from OSF since it installs stuff as root ! # by default. ! for ac_prog in ginstall scoinst install; do ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ! if test $ac_prog = install && ! grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ! # AIX install. It has an incompatible calling convention. ! : ! elif test $ac_prog = install && ! grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ! # program-specific install script used by HP pwplus--don't use. ! : ! else ! ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ! break 3 ! fi ! fi done ! done ! ;; ! esac ! done ! fi if test "${ac_cv_path_install+set}" = set; then ! INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a *************** *** 767,774 **** # break other packages using the cache if that directory is # removed, or if the path is relative. ! INSTALL="$ac_install_sh" fi fi ! echo "$ac_t""$INSTALL" 1>&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. --- 1539,1547 ---- # break other packages using the cache if that directory is # removed, or if the path is relative. ! INSTALL=$ac_install_sh fi fi ! echo "$as_me:$LINENO: result: $INSTALL" >&5 ! echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. *************** *** 776,788 **** test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ! echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 ! echo "configure:784: checking whether build environment is sane" >&5 # Just in case sleep 1 ! echo timestamp > conftestfile # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a --- 1549,1561 ---- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ! echo "$as_me:$LINENO: checking whether build environment is sane" >&5 ! echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 # Just in case sleep 1 ! echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a *************** *** 791,801 **** # directory). if ( ! set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` if test "$*" = "X"; then # -L didn't work. ! set X `ls -t $srcdir/configure conftestfile` fi ! if test "$*" != "X $srcdir/configure conftestfile" \ ! && test "$*" != "X conftestfile $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen --- 1564,1575 ---- # directory). if ( ! set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. ! set X `ls -t $srcdir/configure conftest.file` fi ! rm -f conftest.file ! if test "$*" != "X $srcdir/configure conftest.file" \ ! && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen *************** *** 803,811 **** # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". ! { echo "configure: error: ls -t appears to fail. Make sure there is not a broken ! alias in your environment" 1>&2; exit 1; } fi ! test "$2" = conftestfile ) then --- 1577,1588 ---- # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". ! { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken ! alias in your environment" >&5 ! echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken ! alias in your environment" >&2;} ! { (exit 1); exit 1; }; } fi ! test "$2" = conftest.file ) then *************** *** 813,852 **** : else ! { echo "configure: error: newly created file is older than distributed files! ! Check your system clock" 1>&2; exit 1; } ! fi ! rm -f conftest* ! echo "$ac_t""yes" 1>&6 ! if test "$program_transform_name" = s,x,x,; then ! program_transform_name= ! else ! # Double any \ or $. echo might interpret backslashes. ! cat <<\EOF_SED > conftestsed ! s,\\,\\\\,g; s,\$,$$,g ! EOF_SED ! program_transform_name="`echo $program_transform_name|sed -f conftestsed`" ! rm -f conftestsed fi test "$program_prefix" != NONE && ! program_transform_name="s,^,${program_prefix},; $program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && ! program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" ! # sed with no file args requires a program. ! test "$program_transform_name" = "" && program_transform_name="s,x,x," ! echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:841: checking whether ${MAKE-make} sets \${MAKE}" >&5 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftestmake <<\EOF all: ! @echo 'ac_maketemp="${MAKE}"' ! EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ! eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes --- 1590,1680 ---- : else ! { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! ! Check your system clock" >&5 ! echo "$as_me: error: newly created file is older than distributed files! ! Check your system clock" >&2;} ! { (exit 1); exit 1; }; } fi + echo "$as_me:$LINENO: result: yes" >&5 + echo "${ECHO_T}yes" >&6 test "$program_prefix" != NONE && ! program_transform_name="s,^,$program_prefix,;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && ! program_transform_name="s,\$,$program_suffix,;$program_transform_name" ! # Double any \ or $. echo might interpret backslashes. ! # By default was `s,x,x', remove it if useless. ! cat <<\_ACEOF >conftest.sed ! s/[\\$]/&&/g;s/;s,x,x,$// ! _ACEOF ! program_transform_name=`echo $program_transform_name | sed -f conftest.sed` ! rm conftest.sed ! ! ! # expand $ac_aux_dir to an absolute path ! am_aux_dir=`cd $ac_aux_dir && pwd` ! ! test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ! # Use eval to expand $SHELL ! if eval "$MISSING --run true"; then ! am_missing_run="$MISSING --run " ! else ! am_missing_run= ! { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 ! echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} ! fi ! ! for ac_prog in gawk mawk nawk awk ! do ! # Extract the first word of "$ac_prog", so it can be a program name with args. ! set dummy $ac_prog; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_AWK+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$AWK"; then ! ac_cv_prog_AWK="$AWK" # Let the user override the test. ! else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_AWK="$ac_prog" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! ! fi ! fi ! AWK=$ac_cv_prog_AWK ! if test -n "$AWK"; then ! echo "$as_me:$LINENO: result: $AWK" >&5 ! echo "${ECHO_T}$AWK" >&6 ! else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! fi ! test -n "$AWK" && break ! done ! echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ! echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` ! if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.make <<\_ACEOF all: ! @echo 'ac_maketemp="$(MAKE)"' ! _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ! eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes *************** *** 854,957 **** eval ac_cv_prog_make_${ac_make}_set=no fi ! rm -f conftestmake fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then ! echo "$ac_t""yes" 1>&6 SET_MAKE= else ! echo "$ac_t""no" 1>&6 SET_MAKE="MAKE=${MAKE-make}" fi ! PACKAGE=gsl - VERSION="1.3" ! if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then ! { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } ! fi ! cat >> confdefs.h <> confdefs.h <&6 ! echo "configure:887: checking for working aclocal" >&5 ! # Run test in a subshell; some versions of sh will print an error if ! # an executable is not found, even if stderr is redirected. ! # Redirect stdin to placate older versions of autoconf. Sigh. ! if (aclocal --version) < /dev/null > /dev/null 2>&1; then ! ACLOCAL=aclocal ! echo "$ac_t""found" 1>&6 else ! ACLOCAL="$missing_dir/missing aclocal" ! echo "$ac_t""missing" 1>&6 ! fi ! echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 ! echo "configure:900: checking for working autoconf" >&5 ! # Run test in a subshell; some versions of sh will print an error if ! # an executable is not found, even if stderr is redirected. ! # Redirect stdin to placate older versions of autoconf. Sigh. ! if (autoconf --version) < /dev/null > /dev/null 2>&1; then ! AUTOCONF=autoconf ! echo "$ac_t""found" 1>&6 else ! AUTOCONF="$missing_dir/missing autoconf" ! echo "$ac_t""missing" 1>&6 fi - echo $ac_n "checking for working automake""... $ac_c" 1>&6 - echo "configure:913: checking for working automake" >&5 - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. - # Redirect stdin to placate older versions of autoconf. Sigh. - if (automake --version) < /dev/null > /dev/null 2>&1; then - AUTOMAKE=automake - echo "$ac_t""found" 1>&6 - else - AUTOMAKE="$missing_dir/missing automake" - echo "$ac_t""missing" 1>&6 fi ! echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 ! echo "configure:926: checking for working autoheader" >&5 ! # Run test in a subshell; some versions of sh will print an error if ! # an executable is not found, even if stderr is redirected. ! # Redirect stdin to placate older versions of autoconf. Sigh. ! if (autoheader --version) < /dev/null > /dev/null 2>&1; then ! AUTOHEADER=autoheader ! echo "$ac_t""found" 1>&6 else ! AUTOHEADER="$missing_dir/missing autoheader" ! echo "$ac_t""missing" 1>&6 fi ! echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 ! echo "configure:939: checking for working makeinfo" >&5 ! # Run test in a subshell; some versions of sh will print an error if ! # an executable is not found, even if stderr is redirected. ! # Redirect stdin to placate older versions of autoconf. Sigh. ! if (makeinfo --version) < /dev/null > /dev/null 2>&1; then ! MAKEINFO=makeinfo ! echo "$ac_t""found" 1>&6 else ! MAKEINFO="$missing_dir/missing makeinfo" ! echo "$ac_t""missing" 1>&6 fi ! echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 ! echo "configure:956: checking whether to enable maintainer-specific portions of Makefiles" >&5 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then --- 1682,1856 ---- eval ac_cv_prog_make_${ac_make}_set=no fi ! rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then ! echo "$as_me:$LINENO: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 SET_MAKE= else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi + rm -rf .tst 2>/dev/null + mkdir .tst 2>/dev/null + if test -d .tst; then + am__leading_dot=. + else + am__leading_dot=_ + fi + rmdir .tst 2>/dev/null + + # test to see if srcdir already configured + if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 + echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi + + # test whether we have cygpath + if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi + fi + ! # Define the identity of the package. ! PACKAGE='gsl' ! VERSION='1.4' ! cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" ! _ACEOF ! ! cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" ! _ACEOF ! ! # Some tools Automake needs. ! ! ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} ! ! ! AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} ! ! ! AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} ! ! MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} ! ! ! AMTAR=${AMTAR-"${am_missing_run}tar"} ! ! install_sh=${install_sh-"$am_aux_dir/install-sh"} ! ! # Installed binaries are usually stripped using `strip' when the user ! # run `make install-strip'. However `strip' might not be the right ! # tool to use in cross-compilation environments, therefore Automake ! # will honor the `STRIP' environment variable to overrule this program. ! if test "$cross_compiling" != no; then ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. ! set dummy ${ac_tool_prefix}strip; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_STRIP+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test -n "$STRIP"; then ! ac_cv_prog_STRIP="$STRIP" # Let the user override the test. ! else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_STRIP="${ac_tool_prefix}strip" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi ! fi ! STRIP=$ac_cv_prog_STRIP ! if test -n "$STRIP"; then ! echo "$as_me:$LINENO: result: $STRIP" >&5 ! echo "${ECHO_T}$STRIP" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi fi + if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. + set dummy strip; ac_word=$2 + echo "$as_me:$LINENO: checking for $ac_word" >&5 + echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 + if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ! test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" ! fi ! fi ! ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ! if test -n "$ac_ct_STRIP"; then ! echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ! echo "${ECHO_T}$ac_ct_STRIP" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! STRIP=$ac_ct_STRIP else ! STRIP="$ac_cv_prog_STRIP" ! fi ! fi + INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + # We need awk for the "check" target. The system "awk" is bad on + # some platforms. + ac_config_headers="$ac_config_headers config.h" ! echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 ! echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then *************** *** 960,967 **** else USE_MAINTAINER_MODE=no ! fi - echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6 - if test $USE_MAINTAINER_MODE = yes; then --- 1859,1866 ---- else USE_MAINTAINER_MODE=no ! fi; ! echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 ! echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 if test $USE_MAINTAINER_MODE = yes; then *************** *** 972,1016 **** MAINTAINER_MODE_FALSE= fi MAINT=$MAINTAINER_MODE_TRUE - ! GSL_LT_VERSION="4:0:4" GSL_LT_CBLAS_VERSION="0:0:0" ! if test "$program_transform_name" = s,x,x,; then ! program_transform_name= ! else ! # Double any \ or $. echo might interpret backslashes. ! cat <<\EOF_SED > conftestsed ! s,\\,\\\\,g; s,\$,$$,g ! EOF_SED ! program_transform_name="`echo $program_transform_name|sed -f conftestsed`" ! rm -f conftestsed ! fi ! test "$program_prefix" != NONE && ! program_transform_name="s,^,${program_prefix},; $program_transform_name" ! # Use a double $ so make ignores it. ! test "$program_suffix" != NONE && ! program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" - # sed with no file args requires a program. - test "$program_transform_name" = "" && program_transform_name="s,x,x," ! echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 ! echo "configure:1005: checking whether ${MAKE-make} sets \${MAKE}" >&5 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftestmake <<\EOF all: ! @echo 'ac_maketemp="${MAKE}"' ! EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ! eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes --- 1871,1913 ---- MAINTAINER_MODE_FALSE= fi + MAINT=$MAINTAINER_MODE_TRUE ! ! GSL_LT_VERSION="5:0:5" GSL_LT_CBLAS_VERSION="0:0:0" ! case "$VERSION" in ! *+) ! cat >>confdefs.h <<\_ACEOF ! #define RELEASED 0 ! _ACEOF ! ! ;; ! *) ! cat >>confdefs.h <<\_ACEOF ! #define RELEASED 1 ! _ACEOF ! ! ;; ! esac ! echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 ! echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` ! if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.make <<\_ACEOF all: ! @echo 'ac_maketemp="$(MAKE)"' ! _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. ! eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes *************** *** 1018,1268 **** eval ac_cv_prog_make_${ac_make}_set=no fi ! rm -f conftestmake fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then ! echo "$ac_t""yes" 1>&6 SET_MAKE= else ! echo "$ac_t""no" 1>&6 SET_MAKE="MAKE=${MAKE-make}" fi - # Make sure we can run config.sub. ! if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : ! else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } ! fi - echo $ac_n "checking host system type""... $ac_c" 1>&6 - echo "configure:1039: checking host system type" >&5 - host_alias=$host - case "$host_alias" in - NONE) - case $nonopt in - NONE) - if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : - else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } - fi ;; - *) host_alias=$nonopt ;; - esac ;; - esac ! host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` ! host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! echo "$ac_t""$host" 1>&6 ! # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1063: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_CC="gcc" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! CC="$ac_cv_prog_CC" if test -n "$CC"; then ! echo "$ac_t""$CC" 1>&6 else ! echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1093: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ! ac_prog_rejected=yes ! continue ! fi ! ac_cv_prog_CC="cc" ! break ! fi ! done ! IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift ! if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ! set dummy "$ac_dir/$ac_word" "$@" ! shift ! ac_cv_prog_CC="$@" fi fi fi fi ! CC="$ac_cv_prog_CC" if test -n "$CC"; then ! echo "$ac_t""$CC" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! if test -z "$CC"; then ! case "`uname -s`" in ! *win32* | *WIN32*) ! # Extract the first word of "cl", so it can be a program name with args. ! set dummy cl; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1144: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_CC="cl" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! CC="$ac_cv_prog_CC" if test -n "$CC"; then ! echo "$ac_t""$CC" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! ;; ! esac fi ! test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi ! echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 ! echo "configure:1176: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! cat > conftest.$ac_ext << EOF - #line 1187 "configure" - #include "confdefs.h" ! main(){return(0);} ! EOF ! if { (eval echo configure:1192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! ac_cv_prog_cc_works=yes ! # If we can't run a trivial program, we are probably using a cross compiler. ! if (./conftest; exit) 2>/dev/null; then ! ac_cv_prog_cc_cross=no ! else ! ac_cv_prog_cc_cross=yes ! fi else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_cv_prog_cc_works=no fi ! rm -fr conftest* ! ac_ext=c ! # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 ! if test $ac_cv_prog_cc_works = no; then ! { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } ! fi ! echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 ! echo "configure:1218: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 ! echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 ! cross_compiling=$ac_cv_prog_cc_cross ! ! echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 ! echo "configure:1223: checking whether we are using GNU C" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ! ac_cv_prog_gcc=yes else ! ac_cv_prog_gcc=no ! fi fi ! echo "$ac_t""$ac_cv_prog_gcc" 1>&6 ! if test $ac_cv_prog_gcc = yes; then ! GCC=yes else ! GCC= fi ! ac_test_CFLAGS="${CFLAGS+set}" ! ac_save_CFLAGS="$CFLAGS" ! CFLAGS= ! echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 ! echo "configure:1251: checking whether ${CC-cc} accepts -g" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! echo 'void f(){}' > conftest.c ! if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ! ac_cv_prog_cc_g=no ! fi ! rm -f conftest* fi ! ! echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then ! CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then --- 1915,2629 ---- eval ac_cv_prog_make_${ac_make}_set=no fi ! rm -f conftest.make fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then ! echo "$as_me:$LINENO: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 SET_MAKE= else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 SET_MAKE="MAKE=${MAKE-make}" fi # Make sure we can run config.sub. ! $ac_config_sub sun4 >/dev/null 2>&1 || ! { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 ! echo "$as_me: error: cannot run $ac_config_sub" >&2;} ! { (exit 1); exit 1; }; } ! ! echo "$as_me:$LINENO: checking build system type" >&5 ! echo $ECHO_N "checking build system type... $ECHO_C" >&6 ! if test "${ac_cv_build+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_cv_build_alias=$build_alias ! test -z "$ac_cv_build_alias" && ! ac_cv_build_alias=`$ac_config_guess` ! test -z "$ac_cv_build_alias" && ! { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 ! echo "$as_me: error: cannot guess build type; you must specify one" >&2;} ! { (exit 1); exit 1; }; } ! ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || ! { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 ! echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ! { (exit 1); exit 1; }; } ! ! fi ! echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ! echo "${ECHO_T}$ac_cv_build" >&6 ! build=$ac_cv_build ! build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! ! ! echo "$as_me:$LINENO: checking host system type" >&5 ! echo $ECHO_N "checking host system type... $ECHO_C" >&6 ! if test "${ac_cv_host+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_cv_host_alias=$host_alias ! test -z "$ac_cv_host_alias" && ! ac_cv_host_alias=$ac_cv_build_alias ! ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || ! { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 ! echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ! { (exit 1); exit 1; }; } ! ! fi ! echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ! echo "${ECHO_T}$ac_cv_host" >&6 ! host=$ac_cv_host ! host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. ! set dummy ${ac_tool_prefix}gcc; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$CC"; then ! ac_cv_prog_CC="$CC" # Let the user override the test. ! else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_CC="${ac_tool_prefix}gcc" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 + echo "${ECHO_T}$CC" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi ! fi ! if test -z "$ac_cv_prog_CC"; then ! ac_ct_CC=$CC ! # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$ac_ct_CC"; then ! ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ! else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_CC="gcc" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! ! fi ! fi ! ac_ct_CC=$ac_cv_prog_ac_ct_CC ! if test -n "$ac_ct_CC"; then ! echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ! echo "${ECHO_T}$ac_ct_CC" >&6 ! else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! fi ! ! CC=$ac_ct_CC ! else ! CC="$ac_cv_prog_CC" ! fi ! ! if test -z "$CC"; then ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ! set dummy ${ac_tool_prefix}cc; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_CC="${ac_tool_prefix}cc" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi fi ! CC=$ac_cv_prog_CC if test -n "$CC"; then ! echo "$as_me:$LINENO: result: $CC" >&5 ! echo "${ECHO_T}$CC" >&6 ! else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! fi ! ! fi ! if test -z "$ac_cv_prog_CC"; then ! ac_ct_CC=$CC ! # Extract the first word of "cc", so it can be a program name with args. ! set dummy cc; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$ac_ct_CC"; then ! ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ! else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_CC="cc" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! ! fi ! fi ! ac_ct_CC=$ac_cv_prog_ac_ct_CC ! if test -n "$ac_ct_CC"; then ! echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ! echo "${ECHO_T}$ac_ct_CC" >&6 ! else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 ! fi ! ! CC=$ac_ct_CC else ! CC="$ac_cv_prog_CC" fi + fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ! ac_prog_rejected=yes ! continue ! fi ! ac_cv_prog_CC="cc" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift ! if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ! ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi ! CC=$ac_cv_prog_CC if test -n "$CC"; then ! echo "$as_me:$LINENO: result: $CC" >&5 ! echo "${ECHO_T}$CC" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! fi ! if test -z "$CC"; then ! if test -n "$ac_tool_prefix"; then ! for ac_prog in cl ! do ! # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. ! set dummy $ac_tool_prefix$ac_prog; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_CC="$ac_tool_prefix$ac_prog" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi fi ! CC=$ac_cv_prog_CC if test -n "$CC"; then ! echo "$as_me:$LINENO: result: $CC" >&5 ! echo "${ECHO_T}$CC" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! ! test -n "$CC" && break ! done ! fi ! if test -z "$CC"; then ! ac_ct_CC=$CC ! for ac_prog in cl ! do ! # Extract the first word of "$ac_prog", so it can be a program name with args. ! set dummy $ac_prog; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_CC+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test -n "$ac_ct_CC"; then ! ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. ! else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_CC="$ac_prog" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 fi ! done ! done ! ! fi ! fi ! ac_ct_CC=$ac_cv_prog_ac_ct_CC ! if test -n "$ac_ct_CC"; then ! echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ! echo "${ECHO_T}$ac_ct_CC" >&6 ! else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! test -n "$ac_ct_CC" && break ! done ! CC=$ac_ct_CC ! fi ! fi ! test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH ! See \`config.log' for more details." >&5 ! echo "$as_me: error: no acceptable C compiler found in \$PATH ! See \`config.log' for more details." >&2;} ! { (exit 1); exit 1; }; } ! ! # Provide some information about the compiler. ! echo "$as_me:$LINENO:" \ ! "checking for C compiler version" >&5 ! ac_compiler=`set X $ac_compile; echo $2` ! { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 ! (eval $ac_compiler --version &5) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } ! { (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 ! (eval $ac_compiler -v &5) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } ! { (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 ! (eval $ac_compiler -V &5) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } ! ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! ! int ! main () ! { ! ! ; ! return 0; ! } ! _ACEOF ! ac_clean_files_save=$ac_clean_files ! ac_clean_files="$ac_clean_files a.out a.exe b.out" ! # Try to create an executable without -o first, disregard a.out. ! # It will help us diagnose broken compilers, and finding out an intuition ! # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output" >&5 ! echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ! ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` ! if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 ! (eval $ac_link_default) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! # Find the output, starting from the most likely. This scheme is ! # not robust to junk in `.', hence go to wildcards (a.*) only as a last ! # resort. ! ! # Be careful to initialize this variable, since it used to be cached. ! # Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. ! ac_cv_exeext= ! # b.out is created by i960 compilers. ! for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ! do ! test -f "$ac_file" || continue ! case $ac_file in ! *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; ! conftest.$ac_ext ) ! # This is the source file. ! ;; ! [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; ! *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; ! * ) ! break;; ! esac ! done else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! { { echo "$as_me:$LINENO: error: C compiler cannot create executables ! See \`config.log' for more details." >&5 ! echo "$as_me: error: C compiler cannot create executables ! See \`config.log' for more details." >&2;} ! { (exit 77); exit 77; }; } ! fi ! ! ac_exeext=$ac_cv_exeext ! echo "$as_me:$LINENO: result: $ac_file" >&5 ! echo "${ECHO_T}$ac_file" >&6 ! ! # Check the compiler produces executables we can run. If not, either ! # the compiler is broken, or we cross compile. ! echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ! echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ! # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 ! # If not cross compiling, check that we can run a simple program. ! if test "$cross_compiling" != yes; then ! if { ac_try='./$ac_file' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! cross_compiling=no ! else ! if test "$cross_compiling" = maybe; then ! cross_compiling=yes ! else ! { { echo "$as_me:$LINENO: error: cannot run C compiled programs. ! If you meant to cross compile, use \`--host'. ! See \`config.log' for more details." >&5 ! echo "$as_me: error: cannot run C compiled programs. ! If you meant to cross compile, use \`--host'. ! See \`config.log' for more details." >&2;} ! { (exit 1); exit 1; }; } ! fi ! fi fi ! echo "$as_me:$LINENO: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 ! ! rm -f a.out a.exe conftest$ac_cv_exeext b.out ! ac_clean_files=$ac_clean_files_save ! # Check the compiler produces executables we can run. If not, either ! # the compiler is broken, or we cross compile. ! echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ! echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 ! echo "$as_me:$LINENO: result: $cross_compiling" >&5 ! echo "${ECHO_T}$cross_compiling" >&6 ! ! echo "$as_me:$LINENO: checking for suffix of executables" >&5 ! echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! # If both `conftest.exe' and `conftest' are `present' (well, observable) ! # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will ! # work properly (i.e., refer to `conftest.exe'), while it won't with ! # `rm'. ! for ac_file in conftest.exe conftest conftest.*; do ! test -f "$ac_file" || continue ! case $ac_file in ! *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ! *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; ! * ) break;; ! esac ! done else ! { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link ! See \`config.log' for more details." >&5 ! echo "$as_me: error: cannot compute suffix of executables: cannot compile and link ! See \`config.log' for more details." >&2;} ! { (exit 1); exit 1; }; } fi ! rm -f conftest$ac_cv_exeext ! echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ! echo "${ECHO_T}$ac_cv_exeext" >&6 ! ! rm -f conftest.$ac_ext ! EXEEXT=$ac_cv_exeext ! ac_exeext=$EXEEXT ! echo "$as_me:$LINENO: checking for suffix of object files" >&5 ! echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ! if test "${ac_cv_objext+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! ! int ! main () ! { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.o conftest.obj ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; then ! for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ! case $ac_file in ! *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ! *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` ! break;; ! esac ! done else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile ! See \`config.log' for more details." >&5 ! echo "$as_me: error: cannot compute suffix of object files: cannot compile ! See \`config.log' for more details." >&2;} ! { (exit 1); exit 1; }; } fi ! rm -f conftest.$ac_cv_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ! echo "${ECHO_T}$ac_cv_objext" >&6 ! OBJEXT=$ac_cv_objext ! ac_objext=$OBJEXT ! echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ! echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ! if test "${ac_cv_c_compiler_gnu+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! ! int ! main () ! { ! #ifndef __GNUC__ ! choke me ! #endif ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_compiler_gnu=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_compiler_gnu=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! ac_cv_c_compiler_gnu=$ac_compiler_gnu ! ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ! echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ! GCC=`test $ac_compiler_gnu = yes && echo yes` ! ac_test_CFLAGS=${CFLAGS+set} ! ac_save_CFLAGS=$CFLAGS ! CFLAGS="-g" ! echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ! echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ! if test "${ac_cv_prog_cc_g+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! ! int ! main () ! { ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ac_cv_prog_cc_g=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 + ac_cv_prog_cc_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ! echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 if test "$ac_test_CFLAGS" = set; then ! CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then *************** *** 1278,1284 **** fi fi ! echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 ! echo "configure:1283: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then --- 2639,2867 ---- fi fi + echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 + echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 + if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_prog_cc_stdc=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + #line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + #include + #include + #include + /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ + struct buf { int x; }; + FILE * (*rcsopen) (struct buf *, struct stat *, int); + static char *e (p, i) + char **p; + int i; + { + return p[i]; + } + static char *f (char * (*g) (char **, int), char **p, ...) + { + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; + } + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; + int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); + int argc; + char **argv; + int + main () + { + return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; + } + _ACEOF + # Don't try gcc -ansi; that turns off useful extensions and + # breaks some systems' header files. + # AIX -qlanglvl=ansi + # Ultrix and OSF/1 -std1 + # HP-UX 10.20 and later -Ae + # HP-UX older versions -Aa -D_HPUX_SOURCE + # SVR4 -Xc -D__EXTENSIONS__ + for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg + break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + fi + rm -f conftest.$ac_objext + done + rm -f conftest.$ac_ext conftest.$ac_objext + CC=$ac_save_CC + + fi + + case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 + echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 + echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; + esac + + # Some people use a C++ compiler to compile C. Since we use `exit', + # in C++ we need to declare it. In case someone uses the same compiler + # for both compiling C and C++ we need to have the C++ compiler decide + # the declaration of exit, since it's the most demanding environment. + cat >conftest.$ac_ext <<_ACEOF + #ifndef __cplusplus + choke me + #endif + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' + do + cat >conftest.$ac_ext <<_ACEOF + #line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include + $ac_declaration + int + main () + { + exit (42); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + continue + fi + rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF + #line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + $ac_declaration + int + main () + { + exit (42); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + fi + rm -f conftest.$ac_objext conftest.$ac_ext + done + rm -f conftest* + if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h + fi + + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + + fi + rm -f conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ! echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then *************** *** 1286,1361 **** fi if test -z "$CPP"; then ! if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! # This must be in double quotes, not single quotes, because CPP may get ! # substituted into the Makefile and "${CC-cc}" will confuse make. ! CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, ! # not just through cpp. ! cat > conftest.$ac_ext < ! Syntax Error ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1304: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then ! : else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! CPP="${CC-cc} -E -traditional-cpp" ! cat > conftest.$ac_ext < ! Syntax Error ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1321: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then : else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! CPP="${CC-cc} -nologo -E" ! cat > conftest.$ac_ext < ! Syntax Error ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:1338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then ! : else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! CPP=/lib/cpp fi ! rm -f conftest* fi ! rm -f conftest* fi ! rm -f conftest* ! ac_cv_prog_CPP="$CPP" fi ! CPP="$ac_cv_prog_CPP" else ! ac_cv_prog_CPP="$CPP" fi ! echo "$ac_t""$CPP" 1>&6 # Find a good install program. We prefer a C program (faster), --- 2869,3093 ---- fi if test -z "$CPP"; then ! if test "${ac_cv_prog_CPP+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! # Double quotes because CPP needs to be expanded ! for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" ! do ! ac_preproc_ok=false ! for ac_c_preproc_warn_flag in '' yes ! do ! # Use a header file that comes with gcc, so configuring glibc ! # with a fresh cross-compiler works. ! # Prefer to if __STDC__ is defined, since ! # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, ! # not just through cpp. "Syntax error" is here to catch this case. ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif ! Syntax error ! _ACEOF ! if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! grep -v '^ *+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then : else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! # Broken: fails on valid input. ! continue ! fi ! rm -f conftest.err conftest.$ac_ext ! ! # OK, works on sane cases. Now check whether non-existent headers ! # can be detected and how. ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! _ACEOF ! if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! grep -v '^ *+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi else ! ac_cpp_err=yes fi ! if test -z "$ac_cpp_err"; then ! # Broken: success on invalid input. ! continue ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! # Passes both tests. ! ac_preproc_ok=: ! break fi ! rm -f conftest.err conftest.$ac_ext ! ! done ! # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ! rm -f conftest.err conftest.$ac_ext ! if $ac_preproc_ok; then ! break fi ! ! done ! ac_cv_prog_CPP=$CPP ! ! fi ! CPP=$ac_cv_prog_CPP ! else ! ac_cv_prog_CPP=$CPP ! fi ! echo "$as_me:$LINENO: result: $CPP" >&5 ! echo "${ECHO_T}$CPP" >&6 ! ac_preproc_ok=false ! for ac_c_preproc_warn_flag in '' yes ! do ! # Use a header file that comes with gcc, so configuring glibc ! # with a fresh cross-compiler works. ! # Prefer to if __STDC__ is defined, since ! # exists even on freestanding compilers. ! # On the NeXT, cc -E runs the code through the compiler's parser, ! # not just through cpp. "Syntax error" is here to catch this case. ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif ! Syntax error ! _ACEOF ! if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! grep -v '^ *+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then ! : ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! # Broken: fails on valid input. ! continue ! fi ! rm -f conftest.err conftest.$ac_ext ! ! # OK, works on sane cases. Now check whether non-existent headers ! # can be detected and how. ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! _ACEOF ! if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! grep -v '^ *+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes fi ! if test -z "$ac_cpp_err"; then ! # Broken: success on invalid input. ! continue else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! # Passes both tests. ! ac_preproc_ok=: ! break ! fi ! rm -f conftest.err conftest.$ac_ext ! ! done ! # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. ! rm -f conftest.err conftest.$ac_ext ! if $ac_preproc_ok; then ! : ! else ! { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check ! See \`config.log' for more details." >&5 ! echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check ! See \`config.log' for more details." >&2;} ! { (exit 1); exit 1; }; } fi ! ! ac_ext=c ! ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu # Find a good install program. We prefer a C program (faster), *************** *** 1366,1408 **** # IRIX /sbin/install # AIX /bin/install # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. ! echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 ! echo "configure:1374: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then ! if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" ! for ac_dir in $PATH; do ! # Account for people who put trailing slashes in PATH elements. ! case "$ac_dir/" in ! /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; ! *) ! # OSF1 and SCO ODT 3.0 have their own names for install. ! # Don't use installbsd from OSF since it installs stuff as root ! # by default. ! for ac_prog in ginstall scoinst install; do ! if test -f $ac_dir/$ac_prog; then ! if test $ac_prog = install && ! grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then ! # AIX install. It has an incompatible calling convention. ! : ! else ! ac_cv_path_install="$ac_dir/$ac_prog -c" ! break 2 ! fi ! fi done ! ;; ! esac ! done ! IFS="$ac_save_IFS" fi if test "${ac_cv_path_install+set}" = set; then ! INSTALL="$ac_cv_path_install" else # As a last resort, use the slow shell script. We don't cache a --- 3098,3152 ---- # IRIX /sbin/install # AIX /bin/install + # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. ! echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 ! echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 if test -z "$INSTALL"; then ! if test "${ac_cv_path_install+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! # Account for people who put trailing slashes in PATH elements. ! case $as_dir/ in ! ./ | .// | /cC/* | \ ! /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ! /usr/ucb/* ) ;; ! *) ! # OSF1 and SCO ODT 3.0 have their own names for install. ! # Don't use installbsd from OSF since it installs stuff as root ! # by default. ! for ac_prog in ginstall scoinst install; do ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ! if test $ac_prog = install && ! grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ! # AIX install. It has an incompatible calling convention. ! : ! elif test $ac_prog = install && ! grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ! # program-specific install script used by HP pwplus--don't use. ! : ! else ! ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ! break 3 ! fi ! fi done ! done ! ;; ! esac ! done ! fi if test "${ac_cv_path_install+set}" = set; then ! INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. We don't cache a *************** *** 1410,1417 **** # break other packages using the cache if that directory is # removed, or if the path is relative. ! INSTALL="$ac_install_sh" fi fi ! echo "$ac_t""$INSTALL" 1>&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. --- 3154,3162 ---- # break other packages using the cache if that directory is # removed, or if the path is relative. ! INSTALL=$ac_install_sh fi fi ! echo "$as_me:$LINENO: result: $INSTALL" >&5 ! echo "${ECHO_T}$INSTALL" >&6 # Use test -z because SunOS4 sh mishandles braces in ${var-val}. *************** *** 1419,1679 **** test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ! echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 ! echo "configure:1427: checking whether ln -s works" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! rm -f conftestdata ! if ln -s X conftestdata 2>/dev/null ! then ! rm -f conftestdata ! ac_cv_prog_LN_S="ln -s" ! else ! ac_cv_prog_LN_S=ln ! fi ! fi ! LN_S="$ac_cv_prog_LN_S" ! if test "$ac_cv_prog_LN_S" = "ln -s"; then ! echo "$ac_t""yes" 1>&6 ! else ! echo "$ac_t""no" 1>&6 ! fi ! ! echo $ac_n "checking build system type""... $ac_c" 1>&6 ! echo "configure:1448: checking build system type" >&5 ! ! build_alias=$build ! case "$build_alias" in ! NONE) ! case $nonopt in ! NONE) build_alias=$host_alias ;; ! *) build_alias=$nonopt ;; ! esac ;; ! esac ! ! build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` ! build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` ! build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` ! build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ! echo "$ac_t""$build" 1>&6 ! ! if test $host != $build; then ! ac_tool_prefix=${host_alias}- else ! ac_tool_prefix= fi ! # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1474: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then ! echo "$ac_t""$RANLIB" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! if test -z "$ac_cv_prog_RANLIB"; then ! if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1506: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! if test -n "$RANLIB"; then ! ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_RANLIB="ranlib" ! break ! fi ! done ! IFS="$ac_save_ifs" ! test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi ! RANLIB="$ac_cv_prog_RANLIB" ! if test -n "$RANLIB"; then ! echo "$ac_t""$RANLIB" 1>&6 else ! echo "$ac_t""no" 1>&6 fi else ! RANLIB=":" ! fi fi ! # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1541: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_AR="${ac_tool_prefix}ar" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! AR="$ac_cv_prog_AR" if test -n "$AR"; then ! echo "$ac_t""$AR" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! if test -z "$ac_cv_prog_AR"; then ! if test -n "$ac_tool_prefix"; then # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:1573: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! if test -n "$AR"; then ! ac_cv_prog_AR="$AR" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_AR="ar" ! break ! fi ! done ! IFS="$ac_save_ifs" ! test -z "$ac_cv_prog_AR" && ac_cv_prog_AR=":" ! fi ! fi ! AR="$ac_cv_prog_AR" ! if test -n "$AR"; then ! echo "$ac_t""$AR" 1>&6 ! else ! echo "$ac_t""no" 1>&6 ! fi ! else ! AR=":" fi fi ! ! #AC_PROG_RANLIB ! # Find the correct PATH separator. Usually this is `:', but ! # DJGPP uses `;' like DOS. ! if test "X${PATH_SEPARATOR+set}" != Xset; then ! UNAME=${UNAME-`uname 2>/dev/null`} ! case X$UNAME in ! *-DOS) lt_cv_sys_path_separator=';' ;; ! *) lt_cv_sys_path_separator=':' ;; ! esac ! PATH_SEPARATOR=$lt_cv_sys_path_separator ! fi ! ! echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 ! echo "configure:1618: checking for Cygwin environment" >&5 ! if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! ac_cv_cygwin=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_cygwin=no ! fi ! rm -f conftest* ! rm -f conftest* fi ! echo "$ac_t""$ac_cv_cygwin" 1>&6 ! CYGWIN= ! test "$ac_cv_cygwin" = yes && CYGWIN=yes ! echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 ! echo "configure:1651: checking for mingw32 environment" >&5 ! if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! ac_cv_mingw32=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_mingw32=no ! fi ! rm -f conftest* ! rm -f conftest* fi ! echo "$ac_t""$ac_cv_mingw32" 1>&6 ! MINGW32= ! test "$ac_cv_mingw32" = yes && MINGW32=yes # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then --- 3164,3343 ---- test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' ! test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' ! echo "$as_me:$LINENO: checking whether ln -s works" >&5 ! echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 ! LN_S=$as_ln_s ! if test "$LN_S" = "ln -s"; then ! echo "$as_me:$LINENO: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 else ! echo "$as_me:$LINENO: result: no, using $LN_S" >&5 ! echo "${ECHO_T}no, using $LN_S" >&6 fi ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_RANLIB+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi fi ! RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then ! echo "$as_me:$LINENO: result: $RANLIB" >&5 ! echo "${ECHO_T}$RANLIB" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! fi if test -z "$ac_cv_prog_RANLIB"; then ! ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test -n "$ac_ct_RANLIB"; then ! ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_RANLIB="ranlib" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! ! test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ! ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ! if test -n "$ac_ct_RANLIB"; then ! echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ! echo "${ECHO_T}$ac_ct_RANLIB" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi + RANLIB=$ac_ct_RANLIB else ! RANLIB="$ac_cv_prog_RANLIB" fi ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_AR+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_AR="${ac_tool_prefix}ar" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi fi ! AR=$ac_cv_prog_AR if test -n "$AR"; then ! echo "$as_me:$LINENO: result: $AR" >&5 ! echo "${ECHO_T}$AR" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! fi if test -z "$ac_cv_prog_AR"; then ! ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_AR+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test -n "$ac_ct_AR"; then ! ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_AR="ar" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR=":" fi fi ! ac_ct_AR=$ac_cv_prog_ac_ct_AR ! if test -n "$ac_ct_AR"; then ! echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 ! echo "${ECHO_T}$ac_ct_AR" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! AR=$ac_ct_AR else ! AR="$ac_cv_prog_AR" fi ! #AC_PROG_RANLIB # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then *************** *** 1697,1702 **** else enable_shared=yes ! fi ! # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then --- 3361,3365 ---- else enable_shared=yes ! fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then *************** *** 1720,1725 **** else enable_static=yes ! fi ! # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then --- 3383,3387 ---- else enable_static=yes ! fi; # Check whether --enable-fast-install or --disable-fast-install was given. if test "${enable_fast_install+set}" = set; then *************** *** 1743,1748 **** --- 3405,3421 ---- else enable_fast_install=yes + fi; + # Find the correct PATH separator. Usually this is `:', but + # DJGPP uses `;' like DOS. + if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator fi + # Check whether --with-gnu-ld or --without-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then *************** *** 1751,1761 **** else with_gnu_ld=no ! fi ! ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. ! echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 ! echo "configure:1760: checking for ld used by GCC" >&5 case $host in *-*-mingw*) --- 3424,3433 ---- else with_gnu_ld=no ! fi; ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. ! echo "$as_me:$LINENO: checking for ld used by GCC" >&5 ! echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&6 case $host in *-*-mingw*) *************** *** 1786,1797 **** esac elif test "$with_gnu_ld" = yes; then ! echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 ! echo "configure:1790: checking for GNU ld" >&5 else ! echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 ! echo "configure:1793: checking for non-GNU ld" >&5 fi ! if eval "test \"`echo '$''{'lt_cv_path_LD'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -z "$LD"; then --- 3458,3469 ---- esac elif test "$with_gnu_ld" = yes; then ! echo "$as_me:$LINENO: checking for GNU ld" >&5 ! echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 else ! echo "$as_me:$LINENO: checking for non-GNU ld" >&5 ! echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 fi ! if test "${lt_cv_path_LD+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -z "$LD"; then *************** *** 1819,1831 **** LD="$lt_cv_path_LD" if test -n "$LD"; then ! echo "$ac_t""$LD" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } ! echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 ! echo "configure:1828: checking if the linker ($LD) is GNU ld" >&5 ! if eval "test \"`echo '$''{'lt_cv_prog_gnu_ld'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. --- 3491,3507 ---- LD="$lt_cv_path_LD" if test -n "$LD"; then ! echo "$as_me:$LINENO: result: $LD" >&5 ! echo "${ECHO_T}$LD" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 ! echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} ! { (exit 1); exit 1; }; } ! echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 ! echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 ! if test "${lt_cv_prog_gnu_ld+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else # I'd rather use --version here, but apparently some GNU ld's only accept -v. *************** *** 1836,1860 **** fi fi ! ! echo "$ac_t""$lt_cv_prog_gnu_ld" 1>&6 with_gnu_ld=$lt_cv_prog_gnu_ld ! echo $ac_n "checking for $LD option to reload object files""... $ac_c" 1>&6 ! echo "configure:1845: checking for $LD option to reload object files" >&5 ! if eval "test \"`echo '$''{'lt_cv_ld_reload_flag'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else lt_cv_ld_reload_flag='-r' fi ! ! echo "$ac_t""$lt_cv_ld_reload_flag" 1>&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" ! echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 ! echo "configure:1857: checking for BSD-compatible nm" >&5 ! if eval "test \"`echo '$''{'lt_cv_path_NM'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$NM"; then --- 3512,3536 ---- fi fi ! echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 ! echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 with_gnu_ld=$lt_cv_prog_gnu_ld ! echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 ! echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 ! if test "${lt_cv_ld_reload_flag+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_ld_reload_flag='-r' fi ! echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 ! echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 reload_flag=$lt_cv_ld_reload_flag test -n "$reload_flag" && reload_flag=" $reload_flag" ! echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 ! echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 ! if test "${lt_cv_path_NM+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$NM"; then *************** *** 1889,1898 **** NM="$lt_cv_path_NM" ! echo "$ac_t""$NM" 1>&6 ! echo $ac_n "checking for a sed that does not truncate output""... $ac_c" 1>&6 ! echo "configure:1895: checking for a sed that does not truncate output" >&5 ! if eval "test \"`echo '$''{'lt_cv_path_SED'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else # Loop through the user's path and test for sed and gsed. --- 3565,3575 ---- NM="$lt_cv_path_NM" ! echo "$as_me:$LINENO: result: $NM" >&5 ! echo "${ECHO_T}$NM" >&6 ! echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 ! echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 ! if test "${lt_cv_path_SED+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else # Loop through the user's path and test for sed and gsed. *************** *** 1973,1982 **** SED=$lt_cv_path_SED fi ! echo "$ac_t""$SED" 1>&6 ! echo $ac_n "checking how to recognise dependent libraries""... $ac_c" 1>&6 ! echo "configure:1979: checking how to recognise dependent libraries" >&5 ! if eval "test \"`echo '$''{'lt_cv_deplibs_check_method'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' --- 3650,3660 ---- SED=$lt_cv_path_SED fi ! echo "$as_me:$LINENO: result: $SED" >&5 ! echo "${ECHO_T}$SED" >&6 ! echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 ! echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 ! if test "${lt_cv_deplibs_check_method+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' *************** *** 2156,2220 **** fi ! ! echo "$ac_t""$lt_cv_deplibs_check_method" 1>&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method - echo $ac_n "checking for object suffix""... $ac_c" 1>&6 - echo "configure:2165: checking for object suffix" >&5 - if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - rm -f conftest* - echo 'int i = 1;' > conftest.$ac_ext - if { (eval echo configure:2171: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; - *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem; compiler does not work" 1>&2; exit 1; } - fi - rm -f conftest* - fi - - echo "$ac_t""$ac_cv_objext" 1>&6 - OBJEXT=$ac_cv_objext - ac_objext=$ac_cv_objext - - echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 - echo "configure:2191: checking for executable suffix" >&5 - if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe - else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:2201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no - fi - fi - EXEEXT="" - test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} - echo "$ac_t""${ac_cv_exeext}" 1>&6 - ac_exeext=$EXEEXT --- 3834,3845 ---- fi ! echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 ! echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method *************** *** 2222,2231 **** # Check for command to grab the raw symbol name followed by C symbol from nm. ! echo $ac_n "checking command to parse $NM output""... $ac_c" 1>&6 ! echo "configure:2226: checking command to parse $NM output" >&5 ! if eval "test \"`echo '$''{'lt_cv_sys_global_symbol_pipe'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] --- 3847,3856 ---- # Check for command to grab the raw symbol name followed by C symbol from nm. ! echo "$as_me:$LINENO: checking command to parse $NM output" >&5 ! echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 ! if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] *************** *** 2306,2313 **** EOF ! if { (eval echo configure:2309: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then # Now try to grab the symbols. nlist=conftest.nm ! if { (eval echo configure:2312: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\") 1>&5; (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then --- 3931,3946 ---- EOF ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm ! if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 ! (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then *************** *** 2360,2364 **** LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" ! if { (eval echo configure:2363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest$ac_exeext; then pipe_works=yes fi --- 3993,4001 ---- LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$no_builtin_flag" ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && test -s conftest$ac_exeext; then pipe_works=yes fi *************** *** 2400,2446 **** if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then ! echo "$ac_t""failed" 1>&6 else ! echo "$ac_t""ok" 1>&6 fi ! for ac_hdr in dlfcn.h ! do ! ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` ! echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 ! echo "configure:2412: checking for $ac_hdr" >&5 ! if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:2422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then ! rm -rf conftest* ! eval "ac_cv_header_$ac_safe=yes" else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi ! if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` ! cat >> confdefs.h <&6 fi done --- 4037,4426 ---- if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; then ! echo "$as_me:$LINENO: result: failed" >&5 ! echo "${ECHO_T}failed" >&6 else ! echo "$as_me:$LINENO: result: ok" >&5 ! echo "${ECHO_T}ok" >&6 fi ! ! echo "$as_me:$LINENO: checking for egrep" >&5 ! echo $ECHO_N "checking for egrep... $ECHO_C" >&6 ! if test "${ac_cv_prog_egrep+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if echo a | (grep -E '(a|b)') >/dev/null 2>&1 ! then ac_cv_prog_egrep='grep -E' ! else ac_cv_prog_egrep='egrep' ! fi ! fi ! echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 ! echo "${ECHO_T}$ac_cv_prog_egrep" >&6 ! EGREP=$ac_cv_prog_egrep ! ! ! echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ! echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 ! if test "${ac_cv_header_stdc+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! #include ! #include ! #include ! ! int ! main () ! { ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_header_stdc=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_header_stdc=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! ! if test $ac_cv_header_stdc = yes; then ! # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! ! _ACEOF ! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ! $EGREP "memchr" >/dev/null 2>&1; then ! : ! else ! ac_cv_header_stdc=no fi rm -f conftest* + fi ! ! if test $ac_cv_header_stdc = yes; then ! # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! ! _ACEOF ! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ! $EGREP "free" >/dev/null 2>&1; then ! : ! else ! ac_cv_header_stdc=no ! fi ! rm -f conftest* ! ! fi ! ! if test $ac_cv_header_stdc = yes; then ! # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. ! if test "$cross_compiling" = yes; then ! : ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! #if ((' ' & 0x0FF) == 0x020) ! # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') ! # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) ! #else ! # define ISLOWER(c) \ ! (('a' <= (c) && (c) <= 'i') \ ! || ('j' <= (c) && (c) <= 'r') \ ! || ('s' <= (c) && (c) <= 'z')) ! # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) ! #endif ! ! #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) ! int ! main () ! { ! int i; ! for (i = 0; i < 256; i++) ! if (XOR (islower (i), ISLOWER (i)) ! || toupper (i) != TOUPPER (i)) ! exit(2); ! exit (0); ! } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! : ! else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ( exit $ac_status ) ! ac_cv_header_stdc=no ! fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ! fi ! fi ! fi ! echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ! echo "${ECHO_T}$ac_cv_header_stdc" >&6 ! if test $ac_cv_header_stdc = yes; then ! ! cat >>confdefs.h <<\_ACEOF ! #define STDC_HEADERS 1 ! _ACEOF ! ! fi ! ! # On IRIX 5.3, sys/types and inttypes.h are conflicting. ! ! ! ! ! ! ! ! ! ! for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ ! inttypes.h stdint.h unistd.h ! do ! as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! $ac_includes_default ! ! #include <$ac_header> ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! eval "$as_ac_Header=yes" ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! eval "$as_ac_Header=no" ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ! if test `eval echo '${'$as_ac_Header'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ! _ACEOF ! ! fi ! ! done ! ! ! ! for ac_header in dlfcn.h ! do ! as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ! else ! # Is the header compilable? ! echo "$as_me:$LINENO: checking $ac_header usability" >&5 ! echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! $ac_includes_default ! #include <$ac_header> ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_header_compiler=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_header_compiler=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ! echo "${ECHO_T}$ac_header_compiler" >&6 ! ! # Is the header present? ! echo "$as_me:$LINENO: checking $ac_header presence" >&5 ! echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include <$ac_header> ! _ACEOF ! if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 ! (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ! ac_status=$? ! grep -v '^ *+' conftest.er1 >conftest.err ! rm -f conftest.er1 ! cat conftest.err >&5 ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } >/dev/null; then ! if test -s conftest.err; then ! ac_cpp_err=$ac_c_preproc_warn_flag ! else ! ac_cpp_err= ! fi ! else ! ac_cpp_err=yes ! fi ! if test -z "$ac_cpp_err"; then ! ac_header_preproc=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_header_preproc=no ! fi ! rm -f conftest.err conftest.$ac_ext ! echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ! echo "${ECHO_T}$ac_header_preproc" >&6 ! ! # So? What about this header? ! case $ac_header_compiler:$ac_header_preproc in ! yes:no ) ! { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ! echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ! echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ! ( ! cat <<\_ASBOX ! ## ------------------------------------ ## ! ## Report this to bug-autoconf@gnu.org. ## ! ## ------------------------------------ ## ! _ASBOX ! ) | ! sed "s/^/$as_me: WARNING: /" >&2 ! ;; ! no:yes ) ! { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ! echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ! echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ! echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ! ( ! cat <<\_ASBOX ! ## ------------------------------------ ## ! ## Report this to bug-autoconf@gnu.org. ## ! ## ------------------------------------ ## ! _ASBOX ! ) | ! sed "s/^/$as_me: WARNING: /" >&2 ! ;; ! esac ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! eval "$as_ac_Header=$ac_header_preproc" ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ! ! fi ! if test `eval echo '${'$as_ac_Header'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ! _ACEOF ! fi + done *************** *** 2454,2461 **** file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then ! echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 ! echo "configure:2458: checking for ${ac_tool_prefix}file" >&5 ! if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else case $MAGIC_CMD in --- 4434,4441 ---- file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then ! echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 ! echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 ! if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in *************** *** 2509,2523 **** MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then ! echo "$ac_t""$MAGIC_CMD" 1>&6 else ! echo "$ac_t""no" 1>&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then ! echo $ac_n "checking for file""... $ac_c" 1>&6 ! echo "configure:2520: checking for file" >&5 ! if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else case $MAGIC_CMD in --- 4489,4505 ---- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then ! echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ! echo "${ECHO_T}$MAGIC_CMD" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then ! echo "$as_me:$LINENO: checking for file" >&5 ! echo $ECHO_N "checking for file... $ECHO_C" >&6 ! if test "${lt_cv_path_MAGIC_CMD+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else case $MAGIC_CMD in *************** *** 2571,2577 **** MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then ! echo "$ac_t""$MAGIC_CMD" 1>&6 else ! echo "$ac_t""no" 1>&6 fi --- 4553,4561 ---- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then ! echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 ! echo "${ECHO_T}$MAGIC_CMD" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi *************** *** 2585,2720 **** esac ! # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2591: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then ! echo "$ac_t""$RANLIB" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! if test -z "$ac_cv_prog_RANLIB"; then ! if test -n "$ac_tool_prefix"; then # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2623: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! if test -n "$RANLIB"; then ! ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_RANLIB="ranlib" ! break ! fi ! done ! IFS="$ac_save_ifs" ! test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi ! RANLIB="$ac_cv_prog_RANLIB" ! if test -n "$RANLIB"; then ! echo "$ac_t""$RANLIB" 1>&6 else ! echo "$ac_t""no" 1>&6 fi else ! RANLIB=":" ! fi fi ! # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2658: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_STRIP="${ac_tool_prefix}strip" ! break ! fi ! done ! IFS="$ac_save_ifs" fi fi ! STRIP="$ac_cv_prog_STRIP" if test -n "$STRIP"; then ! echo "$ac_t""$STRIP" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! if test -z "$ac_cv_prog_STRIP"; then ! if test -n "$ac_tool_prefix"; then # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 ! echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 ! echo "configure:2690: checking for $ac_word" >&5 ! if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! if test -n "$STRIP"; then ! ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else ! IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ! ac_dummy="$PATH" ! for ac_dir in $ac_dummy; do ! test -z "$ac_dir" && ac_dir=. ! if test -f $ac_dir/$ac_word; then ! ac_cv_prog_STRIP="strip" ! break ! fi ! done ! IFS="$ac_save_ifs" ! test -z "$ac_cv_prog_STRIP" && ac_cv_prog_STRIP=":" fi fi ! STRIP="$ac_cv_prog_STRIP" ! if test -n "$STRIP"; then ! echo "$ac_t""$STRIP" 1>&6 else ! echo "$ac_t""no" 1>&6 fi else ! STRIP=":" ! fi fi --- 4569,4730 ---- esac ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_RANLIB+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi fi ! RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then ! echo "$as_me:$LINENO: result: $RANLIB" >&5 ! echo "${ECHO_T}$RANLIB" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! fi if test -z "$ac_cv_prog_RANLIB"; then ! ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test -n "$ac_ct_RANLIB"; then ! ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_RANLIB="ranlib" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! ! test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" fi fi ! ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB ! if test -n "$ac_ct_RANLIB"; then ! echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 ! echo "${ECHO_T}$ac_ct_RANLIB" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi + RANLIB=$ac_ct_RANLIB else ! RANLIB="$ac_cv_prog_RANLIB" fi ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_STRIP+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_STRIP="${ac_tool_prefix}strip" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! fi fi ! STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then ! echo "$as_me:$LINENO: result: $STRIP" >&5 ! echo "${ECHO_T}$STRIP" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi ! fi if test -z "$ac_cv_prog_STRIP"; then ! ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 ! echo "$as_me:$LINENO: checking for $ac_word" >&5 ! echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ! if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test -n "$ac_ct_STRIP"; then ! ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for ac_exec_ext in '' $ac_executable_extensions; do ! if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_ac_ct_STRIP="strip" ! echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 ! break 2 ! fi ! done ! done ! ! test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" fi fi ! ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP ! if test -n "$ac_ct_STRIP"; then ! echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 ! echo "${ECHO_T}$ac_ct_STRIP" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi + STRIP=$ac_ct_STRIP else ! STRIP="$ac_cv_prog_STRIP" fi *************** *** 2726,2732 **** if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" - : - fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes --- 4736,4741 ---- if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" + fi; test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes *************** *** 2736,2741 **** *-*-irix6*) # Find out which ABI we are using. ! echo '#line 2739 "configure"' > conftest.$ac_ext ! if { (eval echo configure:2740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) --- 4745,4754 ---- *-*-irix6*) # Find out which ABI we are using. ! echo '#line 4747 "configure"' > conftest.$ac_ext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) *************** *** 2757,2801 **** SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" ! echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 ! echo "configure:2761: checking whether the C compiler needs -belf" >&5 ! if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_ext=c - # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross ! ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* lt_cv_cc_needs_belf=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! lt_cv_cc_needs_belf=no fi ! rm -f conftest* ac_ext=c - # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ! ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ! ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' ! cross_compiling=$ac_cv_prog_cc_cross fi ! ! echo "$ac_t""$lt_cv_cc_needs_belf" 1>&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf --- 4770,4831 ---- SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" ! echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 ! echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 ! if test "${lt_cv_cc_needs_belf+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ! ac_ext=c ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu ! ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! int ! main () ! { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then lt_cv_cc_needs_belf=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! lt_cv_cc_needs_belf=no fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ! ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ! ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ! ac_compiler_gnu=$ac_cv_c_compiler_gnu fi ! echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 ! echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf *************** *** 2897,2902 **** compiler="$2" ! echo $ac_n "checking for objdir""... $ac_c" 1>&6 ! echo "configure:2901: checking for objdir" >&5 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null --- 4927,4932 ---- compiler="$2" ! echo "$as_me:$LINENO: checking for objdir" >&5 ! echo $ECHO_N "checking for objdir... $ECHO_C" >&6 rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null *************** *** 2908,2912 **** fi rmdir .libs 2>/dev/null ! echo "$ac_t""$objdir" 1>&6 --- 4938,4944 ---- fi rmdir .libs 2>/dev/null ! echo "$as_me:$LINENO: result: $objdir" >&5 ! echo "${ECHO_T}$objdir" >&6 ! *************** *** 2917,2922 **** else pic_mode=default ! fi ! test -z "$pic_mode" && pic_mode=default --- 4949,4953 ---- else pic_mode=default ! fi; test -z "$pic_mode" && pic_mode=default *************** *** 2924,2931 **** # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. ! echo $ac_n "checking for $compiler option to produce PIC""... $ac_c" 1>&6 ! echo "configure:2928: checking for $compiler option to produce PIC" >&5 ! if eval "test \"`echo '$''{'lt_cv_prog_cc_pic'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else lt_cv_prog_cc_pic= --- 4955,4962 ---- # in isolation, and that seeing it set (from the cache) indicates that # the associated values are set (in the cache) correctly too. ! echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 ! echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ! if test "${lt_cv_prog_cc_pic+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_pic= *************** *** 3067,3092 **** if test -z "$lt_cv_prog_cc_pic"; then ! echo "$ac_t""none" 1>&6 else ! echo "$ac_t""$lt_cv_prog_cc_pic" 1>&6 # Check to make sure the pic_flag actually works. ! echo $ac_n "checking if $compiler PIC flag $lt_cv_prog_cc_pic works""... $ac_c" 1>&6 ! echo "configure:3076: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 ! if eval "test \"`echo '$''{'lt_cv_prog_cc_pic_works'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* case $host_os in hpux9* | hpux10* | hpux11*) --- 5098,5143 ---- if test -z "$lt_cv_prog_cc_pic"; then ! echo "$as_me:$LINENO: result: none" >&5 ! echo "${ECHO_T}none" >&6 else ! echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 ! echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 # Check to make sure the pic_flag actually works. ! echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 ! echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 ! if test "${lt_cv_prog_cc_pic_works+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! int ! main () ! { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then case $host_os in hpux9* | hpux10* | hpux11*) *************** *** 3104,3118 **** ;; esac ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! lt_cv_prog_cc_pic_works=no ! fi ! rm -f conftest* CFLAGS="$save_CFLAGS" ! fi --- 5155,5169 ---- ;; esac ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! lt_cv_prog_cc_pic_works=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" ! fi *************** *** 3125,3165 **** fi ! echo "$ac_t""$lt_cv_prog_cc_pic_works" 1>&6 fi # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then ! echo "configure: warning: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" 1>&2 if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else ! echo "configure: warning: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" 1>&2 lt_cv_prog_cc_can_build_shared=no fi fi ! echo $ac_n "checking if $compiler static flag $lt_cv_prog_cc_static works""... $ac_c" 1>&6 ! echo "configure:3142: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 ! if eval "test \"`echo '$''{'lt_cv_prog_cc_static_works'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* lt_cv_prog_cc_static_works=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 fi ! rm -f conftest* LDFLAGS="$save_LDFLAGS" --- 5176,5238 ---- fi ! echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 ! echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 fi # Check for any special shared library compilation flags. if test -n "$lt_cv_prog_cc_shlib"; then ! { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 ! echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : else ! { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 ! echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} lt_cv_prog_cc_can_build_shared=no fi fi ! echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 ! echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 ! if test "${lt_cv_prog_cc_static_works+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else lt_cv_prog_cc_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! int ! main () ! { ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then lt_cv_prog_cc_static_works=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" *************** *** 3169,3173 **** # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= ! echo "$ac_t""$lt_cv_prog_cc_static_works" 1>&6 pic_flag="$lt_cv_prog_cc_pic" --- 5242,5247 ---- # Belt *and* braces to stop my trousers falling down: test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= ! echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 ! echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 pic_flag="$lt_cv_prog_cc_pic" *************** *** 3180,3189 **** # Check to see if options -o and -c are simultaneously supported by compiler ! echo $ac_n "checking if $compiler supports -c -o file.$ac_objext""... $ac_c" 1>&6 ! echo "configure:3184: checking if $compiler supports -c -o file.$ac_objext" >&5 ! if eval "test \"`echo '$''{'lt_cv_compiler_c_o'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! $rm -r conftest 2>/dev/null mkdir conftest --- 5254,5263 ---- # Check to see if options -o and -c are simultaneously supported by compiler ! echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 ! echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 ! if test "${lt_cv_compiler_c_o+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! $rm -r conftest 2>/dev/null mkdir conftest *************** *** 3200,3204 **** CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no ! if { (eval echo configure:3203: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings --- 5274,5278 ---- CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no ! if { (eval echo configure:5276: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings *************** *** 3224,3237 **** compiler_c_o=$lt_cv_compiler_c_o ! echo "$ac_t""$compiler_c_o" 1>&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo ! echo $ac_n "checking if $compiler supports -c -o file.lo""... $ac_c" 1>&6 ! echo "configure:3232: checking if $compiler supports -c -o file.lo" >&5 ! if eval "test \"`echo '$''{'lt_cv_compiler_o_lo'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" --- 5298,5312 ---- compiler_c_o=$lt_cv_compiler_c_o ! echo "$as_me:$LINENO: result: $compiler_c_o" >&5 ! echo "${ECHO_T}$compiler_c_o" >&6 if test x"$compiler_c_o" = x"yes"; then # Check to see if we can write to a .lo ! echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 ! echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 ! if test "${lt_cv_compiler_o_lo+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! lt_cv_compiler_o_lo=no save_CFLAGS="$CFLAGS" *************** *** 3239,3252 **** save_objext="$ac_objext" ac_objext=lo ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings --- 5314,5345 ---- save_objext="$ac_objext" ac_objext=lo ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! int ! main () ! { int some_variable = 0; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings *************** *** 3256,3272 **** lt_cv_compiler_o_lo=yes fi ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 fi ! rm -f conftest* ac_objext="$save_objext" CFLAGS="$save_CFLAGS" ! fi compiler_o_lo=$lt_cv_compiler_o_lo ! echo "$ac_t""$compiler_o_lo" 1>&6 else compiler_o_lo=no --- 5349,5367 ---- lt_cv_compiler_o_lo=yes fi ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_objext="$save_objext" CFLAGS="$save_CFLAGS" ! fi compiler_o_lo=$lt_cv_compiler_o_lo ! echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 ! echo "${ECHO_T}$compiler_o_lo" >&6 else compiler_o_lo=no *************** *** 3277,3282 **** if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user ! echo $ac_n "checking if we can lock with hard links""... $ac_c" 1>&6 ! echo "configure:3281: checking if we can lock with hard links" >&5 hard_links=yes $rm conftest* --- 5372,5377 ---- if test "$compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user ! echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 ! echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 hard_links=yes $rm conftest* *************** *** 3285,3291 **** ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no ! echo "$ac_t""$hard_links" 1>&6 if test "$hard_links" = no; then ! echo "configure: warning: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" 1>&2 need_locks=warn fi --- 5380,5388 ---- ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no ! echo "$as_me:$LINENO: result: $hard_links" >&5 ! echo "${ECHO_T}$hard_links" >&6 if test "$hard_links" = no; then ! { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 ! echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi *************** *** 3296,3315 **** if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler ! echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions""... $ac_c" 1>&6 ! echo "configure:3300: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings --- 5393,5430 ---- if test "$GCC" = yes; then # Check to see if options -fno-rtti -fno-exceptions are supported by compiler ! echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 ! echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 echo "int some_variable = 0;" > conftest.$ac_ext save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" compiler_rtti_exceptions=no ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! int ! main () ! { int some_variable = 0; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings *************** *** 3319,3330 **** compiler_rtti_exceptions=yes fi ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 fi ! rm -f conftest* CFLAGS="$save_CFLAGS" ! echo "$ac_t""$compiler_rtti_exceptions" 1>&6 if test "$compiler_rtti_exceptions" = "yes"; then --- 5434,5447 ---- compiler_rtti_exceptions=yes fi ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext CFLAGS="$save_CFLAGS" ! echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 ! echo "${ECHO_T}$compiler_rtti_exceptions" >&6 if test "$compiler_rtti_exceptions" = "yes"; then *************** *** 3336,3341 **** # See if the linker supports building shared libraries. ! echo $ac_n "checking whether the linker ($LD) supports shared libraries""... $ac_c" 1>&6 ! echo "configure:3340: checking whether the linker ($LD) supports shared libraries" >&5 allow_undefined_flag= --- 5453,5458 ---- # See if the linker supports building shared libraries. ! echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 ! echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 allow_undefined_flag= *************** *** 4031,4040 **** esac fi ! echo "$ac_t""$ld_shlibs" 1>&6 test "$ld_shlibs" = no && can_build_shared=no # Check hardcoding attributes. ! echo $ac_n "checking how to hardcode library paths into programs""... $ac_c" 1>&6 ! echo "configure:4039: checking how to hardcode library paths into programs" >&5 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ --- 6148,6158 ---- esac fi ! echo "$as_me:$LINENO: result: $ld_shlibs" >&5 ! echo "${ECHO_T}$ld_shlibs" >&6 test "$ld_shlibs" = no && can_build_shared=no # Check hardcoding attributes. ! echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 ! echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 hardcode_action= if test -n "$hardcode_libdir_flag_spec" || \ *************** *** 4059,4074 **** hardcode_action=unsupported fi ! echo "$ac_t""$hardcode_action" 1>&6 striplib= old_striplib= ! echo $ac_n "checking whether stripping libraries is possible""... $ac_c" 1>&6 ! echo "configure:4067: checking whether stripping libraries is possible" >&5 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" ! echo "$ac_t""yes" 1>&6 else ! echo "$ac_t""no" 1>&6 fi --- 6177,6195 ---- hardcode_action=unsupported fi ! echo "$as_me:$LINENO: result: $hardcode_action" >&5 ! echo "${ECHO_T}$hardcode_action" >&6 striplib= old_striplib= ! echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 ! echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" ! echo "$as_me:$LINENO: result: yes" >&5 ! echo "${ECHO_T}yes" >&6 else ! echo "$as_me:$LINENO: result: no" >&5 ! echo "${ECHO_T}no" >&6 fi *************** *** 4077,4082 **** # PORTME Fill in your ld.so characteristics ! echo $ac_n "checking dynamic linker characteristics""... $ac_c" 1>&6 ! echo "configure:4081: checking dynamic linker characteristics" >&5 library_names_spec= libname_spec='lib$name' --- 6198,6203 ---- # PORTME Fill in your ld.so characteristics ! echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 ! echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 library_names_spec= libname_spec='lib$name' *************** *** 4484,4497 **** ;; esac ! echo "$ac_t""$dynamic_linker" 1>&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. ! echo $ac_n "checking if libtool supports shared libraries""... $ac_c" 1>&6 ! echo "configure:4492: checking if libtool supports shared libraries" >&5 ! echo "$ac_t""$can_build_shared" 1>&6 ! echo $ac_n "checking whether to build shared libraries""... $ac_c" 1>&6 ! echo "configure:4496: checking whether to build shared libraries" >&5 test "$can_build_shared" = "no" && enable_shared=no --- 6605,6620 ---- ;; esac ! echo "$as_me:$LINENO: result: $dynamic_linker" >&5 ! echo "${ECHO_T}$dynamic_linker" >&6 test "$dynamic_linker" = no && can_build_shared=no # Report the final consequences. ! echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 ! echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 ! echo "$as_me:$LINENO: result: $can_build_shared" >&5 ! echo "${ECHO_T}$can_build_shared" >&6 ! echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 ! echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 test "$can_build_shared" = "no" && enable_shared=no *************** *** 4513,4523 **** ;; esac ! echo "$ac_t""$enable_shared" 1>&6 ! echo $ac_n "checking whether to build static libraries""... $ac_c" 1>&6 ! echo "configure:4519: checking whether to build static libraries" >&5 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes ! echo "$ac_t""$enable_static" 1>&6 if test "$hardcode_action" = relink; then --- 6636,6648 ---- ;; esac ! echo "$as_me:$LINENO: result: $enable_shared" >&5 ! echo "${ECHO_T}$enable_shared" >&6 ! echo "$as_me:$LINENO: checking whether to build static libraries" >&5 ! echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes ! echo "$as_me:$LINENO: result: $enable_static" >&5 ! echo "${ECHO_T}$enable_static" >&6 if test "$hardcode_action" = relink; then *************** *** 4556,4577 **** *) ! echo $ac_n "checking for shl_load""... $ac_c" 1>&6 ! echo "configure:4560: checking for shl_load" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char shl_load(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named --- 6681,6713 ---- *) ! echo "$as_me:$LINENO: checking for shl_load" >&5 ! echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 ! if test "${ac_cv_func_shl_load+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, ! which can conflict with char shl_load (); below. ! Prefer to if __STDC__ is defined, since ! exists even on freestanding compilers. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + { + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named *************** *** 4580,4661 **** choke me #else ! shl_load(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:4588: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_shl_load=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_shl_load=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then ! echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 ! echo "configure:4606: checking for shl_load in -ldld" >&5 ! ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" ! fi ! rm -f conftest* ! LIBS="$ac_save_LIBS" ! ! fi ! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ! echo "$ac_t""yes" 1>&6 lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for dlopen""... $ac_c" 1>&6 ! echo "configure:4644: checking for dlopen" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char dlopen(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named --- 6716,6845 ---- choke me #else ! char (*f) () = shl_load; ! #endif ! #ifdef __cplusplus ! } #endif ! int ! main () ! { ! return f != shl_load; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_func_shl_load=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_func_shl_load=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 ! echo "${ECHO_T}$ac_cv_func_shl_load" >&6 ! if test $ac_cv_func_shl_load = yes; then lt_cv_dlopen="shl_load" else ! echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 ! echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 ! if test "${ac_cv_lib_dld_shl_load+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char shl_load (); ! int ! main () ! { ! shl_load (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_dld_shl_load=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_lib_dld_shl_load=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 ! echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 ! if test $ac_cv_lib_dld_shl_load = yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" else ! echo "$as_me:$LINENO: checking for dlopen" >&5 ! echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 ! if test "${ac_cv_func_dlopen+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, ! which can conflict with char dlopen (); below. ! Prefer to if __STDC__ is defined, since ! exists even on freestanding compilers. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + { + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named *************** *** 4664,4818 **** choke me #else ! dlopen(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:4672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_dlopen=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_dlopen=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then ! echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 ! echo "configure:4690: checking for dlopen in -ldl" >&5 ! ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" ! fi ! rm -f conftest* ! LIBS="$ac_save_LIBS" ! ! fi ! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ! echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for dlopen in -lsvld""... $ac_c" 1>&6 ! echo "configure:4728: checking for dlopen in -lsvld" >&5 ! ac_lib_var=`echo svld'_'dlopen | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_save_LIBS="$LIBS" LIBS="-lsvld $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" ! fi ! rm -f conftest* ! LIBS="$ac_save_LIBS" ! ! fi ! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ! echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else ! echo "$ac_t""no" 1>&6 ! echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6 ! echo "configure:4766: checking for dld_link in -ldld" >&5 ! ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'` ! if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_lib_$ac_lib_var=no" ! fi ! rm -f conftest* ! LIBS="$ac_save_LIBS" ! ! fi ! if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then ! echo "$ac_t""yes" 1>&6 lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" - else - echo "$ac_t""no" 1>&6 fi ! fi ! fi ! fi ! fi ! fi --- 6848,7076 ---- choke me #else ! char (*f) () = dlopen; ! #endif ! #ifdef __cplusplus ! } #endif ! int ! main () ! { ! return f != dlopen; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_func_dlopen=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_func_dlopen=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 ! echo "${ECHO_T}$ac_cv_func_dlopen" >&6 ! if test $ac_cv_func_dlopen = yes; then lt_cv_dlopen="dlopen" else ! echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 ! echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 ! if test "${ac_cv_lib_dl_dlopen+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char dlopen (); ! int ! main () ! { ! dlopen (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_dl_dlopen=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_lib_dl_dlopen=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 ! echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 ! if test $ac_cv_lib_dl_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else ! echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 ! echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 ! if test "${ac_cv_lib_svld_dlopen+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char dlopen (); ! int ! main () ! { ! dlopen (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_svld_dlopen=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_lib_svld_dlopen=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 ! echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 ! if test $ac_cv_lib_svld_dlopen = yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else ! echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 ! echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 ! if test "${ac_cv_lib_dld_dld_link+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char dld_link (); ! int ! main () ! { ! dld_link (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_dld_dld_link=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_lib_dld_dld_link=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 ! echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 ! if test $ac_cv_lib_dld_dld_link = yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" fi ! fi ! fi ! fi ! fi ! fi *************** *** 4837,4844 **** LIBS="$lt_cv_dlopen_libs $LIBS" ! echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6 ! echo "configure:4841: checking whether a program can dlopen itself" >&5 ! if eval "test \"`echo '$''{'lt_cv_dlopen_self'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then : --- 7095,7102 ---- LIBS="$lt_cv_dlopen_libs $LIBS" ! echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 ! echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 ! if test "${lt_cv_dlopen_self+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : *************** *** 4848,4852 **** lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? --- 7167,7175 ---- } EOF ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? *************** *** 4924,4938 **** rm -fr conftest* - - fi ! echo "$ac_t""$lt_cv_dlopen_self" 1>&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" ! echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6 ! echo "configure:4935: checking whether a statically linked program can dlopen itself" >&5 ! if eval "test \"`echo '$''{'lt_cv_dlopen_self_static'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then : --- 7186,7200 ---- rm -fr conftest* ! fi ! echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 ! echo "${ECHO_T}$lt_cv_dlopen_self" >&6 if test "x$lt_cv_dlopen_self" = xyes; then LDFLAGS="$LDFLAGS $link_static_flag" ! echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 ! echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 ! if test "${lt_cv_dlopen_self_static+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then : *************** *** 4942,4946 **** lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? --- 7265,7273 ---- } EOF ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) 2>/dev/null lt_status=$? *************** *** 5018,5025 **** rm -fr conftest* - - fi ! echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6 fi --- 7284,7291 ---- rm -fr conftest* ! fi ! echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 ! echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 fi *************** *** 5051,5063 **** # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. ! echo $ac_n "checking whether -lc should be explicitly linked in""... $ac_c" 1>&6 ! echo "configure:5055: checking whether -lc should be explicitly linked in" >&5 ! if eval "test \"`echo '$''{'lt_cv_archive_cmds_need_lc'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext ! if { (eval echo configure:5062: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then soname=conftest lib=conftest --- 7317,7333 ---- # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. ! echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 ! echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 ! if test "${lt_cv_archive_cmds_need_lc+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else $rm conftest* echo 'static int dummy;' > conftest.$ac_ext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; then soname=conftest lib=conftest *************** *** 5072,5076 **** save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= ! if { (eval echo configure:5075: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\") 1>&5; (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5; } then lt_cv_archive_cmds_need_lc=no --- 7342,7350 ---- save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= ! if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 ! (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } then lt_cv_archive_cmds_need_lc=no *************** *** 5084,5088 **** fi ! echo "$ac_t""$lt_cv_archive_cmds_need_lc" 1>&6 ;; esac --- 7358,7363 ---- fi ! echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 ! echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 ;; esac *************** *** 5657,6105 **** ! ! case "$host" in ! powerpc-*-linux*) ! if test x"$ac_cv_prog_gcc" = xyes; then ! echo $ac_n "checking for PPC gcc bug""... $ac_c" 1>&6 ! echo "configure:5665: checking for PPC gcc bug" >&5 ! ! if test "$cross_compiling" = yes; then ! ac_ppc_gcc_bug=no else ! cat > conftest.$ac_ext < ! int test4bug (void* v1,void* v2,void* v3,void* v4, ! void* v5,void* v6,void* v7, ! double* ptr_1,void* v8,double d,double* ptr_2) ! { return ((ptr_1 == ptr_2) ? 0 : 1); } ! int main () ! { double ptr[] = {0}; exit (test4bug (0,0,0,0,0,0,0,ptr,0,0.0,ptr)); } ! ! EOF ! if { (eval echo configure:5683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ! then ! ac_ppc_gcc_bug=no ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -fr conftest* ! ac_ppc_gcc_bug=yes fi ! rm -fr conftest* fi ! if test $ac_ppc_gcc_bug = yes; then ! echo "$ac_t""yes" 1>&6 ! { echo "configure: error: known compiler bug -- gsl will not compile correctly; please update your compiler -- See INSTALL file for more info" 1>&2; exit 1; } ! else ! echo "$ac_t""no" 1>&6 ! fi ! fi ! ;; ! esac ! echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 ! echo "configure:5707: checking for ANSI C header files" >&5 ! if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! #include ! #include ! #include ! EOF ! ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" ! { (eval echo configure:5720: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ! ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` ! if test -z "$ac_err"; then ! rm -rf conftest* ! ac_cv_header_stdc=yes else ! echo "$ac_err" >&5 ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_header_stdc=no fi - rm -f conftest* ! if test $ac_cv_header_stdc = yes; then ! # SunOS 4.x string.h does not declare mem*, contrary to ANSI. ! cat > conftest.$ac_ext < ! EOF ! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ! egrep "memchr" >/dev/null 2>&1; then ! : else ! rm -rf conftest* ! ac_cv_header_stdc=no fi ! rm -f conftest* fi - if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat > conftest.$ac_ext < - EOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : - else - rm -rf conftest* - ac_cv_header_stdc=no - fi - rm -f conftest* - - fi - - if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : - else - cat > conftest.$ac_ext < - #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') - #define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) - #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) - int main () { int i; for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); - exit (0); } - - EOF - if { (eval echo configure:5787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no - fi - rm -fr conftest* - fi - - fi - fi - - echo "$ac_t""$ac_cv_header_stdc" 1>&6 - if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF - #define STDC_HEADERS 1 - EOF ! fi ! ! echo $ac_n "checking for size_t""... $ac_c" 1>&6 ! echo "configure:5811: checking for size_t" >&5 ! if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < ! #if STDC_HEADERS ! #include ! #include ! #endif ! EOF ! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ! egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then ! rm -rf conftest* ! ac_cv_type_size_t=yes ! else ! rm -rf conftest* ! ac_cv_type_size_t=no ! fi ! rm -f conftest* ! ! fi ! echo "$ac_t""$ac_cv_type_size_t" 1>&6 ! if test $ac_cv_type_size_t = no; then ! cat >> confdefs.h <<\EOF ! #define size_t unsigned ! EOF ! ! fi ! ! echo $ac_n "checking for working const""... $ac_c" 1>&6 ! echo "configure:5844: checking for working const" >&5 ! if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext <j = 5; ! } ! { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ ! const int foo = 10; ! } ! ! ; return 0; } ! EOF ! if { (eval echo configure:5898: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! ac_cv_c_const=yes ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! ac_cv_c_const=no ! fi ! rm -f conftest* ! fi - echo "$ac_t""$ac_cv_c_const" 1>&6 - if test $ac_cv_c_const = no; then - cat >> confdefs.h <<\EOF - #define const - EOF - fi - echo $ac_n "checking for inline""... $ac_c" 1>&6 - echo "configure:5919: checking for inline" >&5 - if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - ac_cv_c_inline=no - for ac_kw in inline __inline__ __inline; do - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ! ac_cv_c_inline=$ac_kw; break ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! fi ! rm -f conftest* ! done ! ! fi ! ! echo "$ac_t""$ac_cv_c_inline" 1>&6 ! case "$ac_cv_c_inline" in ! inline | yes) ;; ! no) cat >> confdefs.h <<\EOF ! #define inline ! EOF ! ;; ! *) cat >> confdefs.h <&6 ! echo "configure:5960: checking for extern inline" >&5 ! if eval "test \"`echo '$''{'ac_cv_c_extern_inline'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_extern_inline=no ! cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then ! rm -rf conftest* ac_cv_c_extern_inline="yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! fi ! rm -f conftest* fi ! echo "$ac_t""$ac_cv_c_extern_inline" 1>&6 if test "$ac_cv_c_extern_inline" != no ; then ! cat >> confdefs.h <<\EOF #define HAVE_INLINE 1 ! EOF ! ! ! fi - if test "x$LIBS" != "x" ; then - echo $ac_n "checking for math library""... $ac_c" 1>&6 - echo "configure:6003: checking for math library" >&5 - echo "$ac_t""$LIBS" 1>&6 - else - - echo $ac_n "checking for library containing cos""... $ac_c" 1>&6 - echo "configure:6008: checking for library containing cos" >&5 - if eval "test \"`echo '$''{'ac_cv_search_cos'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - ac_func_search_save_LIBS="$LIBS" - ac_cv_search_cos="no" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! ac_cv_search_cos="none required" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! fi ! rm -f conftest* ! test "$ac_cv_search_cos" = "no" && for i in m; do ! LIBS="-l$i $ac_func_search_save_LIBS" ! cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! ac_cv_search_cos="-l$i" ! break ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! fi ! rm -f conftest* ! done ! LIBS="$ac_func_search_save_LIBS" ! fi ! ! echo "$ac_t""$ac_cv_search_cos" 1>&6 ! if test "$ac_cv_search_cos" != "no"; then ! test "$ac_cv_search_cos" = "none required" || LIBS="$ac_cv_search_cos $LIBS" ! ! else : ! ! fi ! fi ! ! cat > conftest.$ac_ext < ! int main() { ! {} ! ; return 0; } ! EOF ! if { (eval echo configure:6079: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! : ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! for ac_func in hypot do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6088: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named --- 7932,8203 ---- ! echo "$as_me:$LINENO: checking for size_t" >&5 ! echo $ECHO_N "checking for size_t... $ECHO_C" >&6 ! if test "${ac_cv_type_size_t+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! $ac_includes_default ! int ! main () ! { ! if ((size_t *) 0) ! return 0; ! if (sizeof (size_t)) ! return 0; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_type_size_t=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ac_cv_type_size_t=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 + echo "${ECHO_T}$ac_cv_type_size_t" >&6 + if test $ac_cv_type_size_t = yes; then + : + else + cat >>confdefs.h <<_ACEOF + #define size_t unsigned + _ACEOF ! fi ! echo "$as_me:$LINENO: checking for working volatile" >&5 ! echo $ECHO_N "checking for working volatile... $ECHO_C" >&6 ! if test "${ac_cv_c_volatile+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! ! int ! main () ! { ! ! volatile int x; ! int * volatile y; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_c_volatile=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_c_volatile=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5 ! echo "${ECHO_T}$ac_cv_c_volatile" >&6 ! if test $ac_cv_c_volatile = no; then ! ! cat >>confdefs.h <<\_ACEOF ! #define volatile ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking for inline" >&5 ! echo $ECHO_N "checking for inline... $ECHO_C" >&6 ! if test "${ac_cv_c_inline+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ac_cv_c_inline=no ! for ac_kw in inline __inline__ __inline; do ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #ifndef __cplusplus ! typedef int foo_t; ! static $ac_kw foo_t static_foo () {return 0; } ! $ac_kw foo_t foo () {return 0; } ! #endif ! ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_c_inline=$ac_kw; break ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! done fi + echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 + echo "${ECHO_T}$ac_cv_c_inline" >&6 + case $ac_cv_c_inline in + inline | yes) ;; + no) + cat >>confdefs.h <<\_ACEOF + #define inline + _ACEOF + ;; + *) cat >>confdefs.h <<_ACEOF + #define inline $ac_cv_c_inline + _ACEOF + ;; + esac ! GSL_CFLAGS="-I$includedir" ! GSL_LIBS="-L$libdir -lgsl" ! echo "$as_me:$LINENO: checking for extern inline" >&5 ! echo $ECHO_N "checking for extern inline... $ECHO_C" >&6 ! if test "${ac_cv_c_extern_inline+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_c_extern_inline=no ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ extern $ac_cv_c_inline double foo(double x); extern $ac_cv_c_inline double foo(double x) { return x + 1.0 ; } ; double foo (double x) { return x + 1.0 ; }; ! int ! main () ! { ! foo(1.0) ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ac_cv_c_extern_inline="yes" else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 fi + rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_extern_inline" >&5 ! echo "${ECHO_T}$ac_cv_c_extern_inline" >&6 if test "$ac_cv_c_extern_inline" != no ; then ! cat >>confdefs.h <<\_ACEOF #define HAVE_INLINE 1 ! _ACEOF + fi ! for ac_func in vprintf do ! as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ! echo "$as_me:$LINENO: checking for $ac_func" >&5 ! echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_var+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, ! which can conflict with char $ac_func (); below. ! Prefer to if __STDC__ is defined, since ! exists even on freestanding compilers. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + { + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named *************** *** 6108,6251 **** choke me #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi ! ! if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` ! cat >> confdefs.h <&6 ! fi ! done ! ! fi ! rm -f conftest* ! ! cat > conftest.$ac_ext < ! int main() { ! {} ! ; return 0; } ! EOF ! if { (eval echo configure:6152: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! : ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! for ac_func in expm1 ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6161: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) choke me #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - fi - rm -f conftest* ! cat > conftest.$ac_ext < ! int main() { ! {} ! ; return 0; } ! EOF ! if { (eval echo configure:6225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then ! : ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! for ac_func in acosh do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:6234: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 ! else ! cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named --- 8206,8373 ---- choke me #else ! char (*f) () = $ac_func; ! #endif ! #ifdef __cplusplus ! } #endif ! int ! main () ! { ! return f != $ac_func; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! eval "$as_ac_var=yes" ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! eval "$as_ac_var=no" ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ! if test `eval echo '${'$as_ac_var'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ! _ACEOF ! ! echo "$as_me:$LINENO: checking for _doprnt" >&5 ! echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6 ! if test "${ac_cv_func__doprnt+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, ! which can conflict with char _doprnt (); below. ! Prefer to if __STDC__ is defined, since ! exists even on freestanding compilers. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + { + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char _doprnt (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ ! #if defined (__stub__doprnt) || defined (__stub____doprnt) choke me #else ! char (*f) () = _doprnt; ! #endif ! #ifdef __cplusplus ! } #endif ! int ! main () ! { ! return f != _doprnt; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_func__doprnt=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_func__doprnt=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 ! echo "${ECHO_T}$ac_cv_func__doprnt" >&6 ! if test $ac_cv_func__doprnt = yes; then ! ! cat >>confdefs.h <<\_ACEOF ! #define HAVE_DOPRNT 1 ! _ACEOF ! fi fi done ! ! ! ! ! ! ! for ac_func in memcpy memmove strdup strtol strtoul do ! as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` ! echo "$as_me:$LINENO: checking for $ac_func" >&5 ! echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_var+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ /* System header to define __stub macros and hopefully few prototypes, ! which can conflict with char $ac_func (); below. ! Prefer to if __STDC__ is defined, since ! exists even on freestanding compilers. */ ! #ifdef __STDC__ ! # include ! #else ! # include ! #endif /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + { + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named *************** *** 6254,7657 **** choke me #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6262: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" ! else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" ! fi ! rm -f conftest* ! fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi done - fi - rm -f conftest* - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - for ac_func in asinh - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6307: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi rm -f conftest* - fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 - fi - done fi ! rm -f conftest* - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6371: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - for ac_func in atanh - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6380: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 ! fi ! done fi - rm -f conftest* - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6444: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - for ac_func in ldexp - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6453: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 ! fi ! done fi - rm -f conftest* - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6517: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - for ac_func in frexp - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6526: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6554: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 ! fi ! done fi - rm -f conftest* - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6590: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - for ac_func in isinf - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6600: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6628: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 - echo $ac_n "checking for isinf with ""... $ac_c" 1>&6 - echo "configure:6650: checking for isinf with " >&5 - cat > conftest.$ac_ext < - int main() { - float f = 0.0; isinf(f) - ; return 0; } - EOF - if { (eval echo configure:6659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF - #define HAVE_ISINF 1 - EOF else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! echo "$ac_t""no" 1>&6 ! fi ! rm -f conftest* ! fi ! done fi - rm -f conftest* - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6689: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - for ac_func in finite - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6699: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 - echo $ac_n "checking for finite with ""... $ac_c" 1>&6 - echo "configure:6749: checking for finite with " >&5 - cat > conftest.$ac_ext < - int main() { - float f = 0.0; finite(f) - ; return 0; } - EOF - if { (eval echo configure:6758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF - #define HAVE_FINITE 1 - EOF - ac_cv_func_finite=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! echo "$ac_t""no" 1>&6 ! fi ! rm -f conftest* ! fi ! done fi - rm -f conftest* - if test "x${ac_cv_func_finite}" != "xyes" ; then - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6790: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - for ac_func in isfinite - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6800: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 - echo $ac_n "checking for isfinite with ""... $ac_c" 1>&6 - echo "configure:6850: checking for isfinite with " >&5 - cat > conftest.$ac_ext < - int main() { - float f = 0.0; isfinite(f) - ; return 0; } - EOF - if { (eval echo configure:6859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF - #define HAVE_ISFINITE 1 - EOF else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! echo "$ac_t""no" 1>&6 ! fi ! rm -f conftest* ! fi ! done - fi - rm -f conftest* fi - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6890: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - for ac_func in isnan - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:6900: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:6928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 - echo $ac_n "checking for isnan with ""... $ac_c" 1>&6 - echo "configure:6950: checking for isnan with " >&5 - cat > conftest.$ac_ext < - int main() { - float f = 0.0; isnan(f) - ; return 0; } - EOF - if { (eval echo configure:6959: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF - #define HAVE_ISNAN 1 - EOF else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! echo "$ac_t""no" 1>&6 ! fi ! rm -f conftest* ! fi ! done fi - rm -f conftest* - case "$host" in - *-*-*openbsd*) - echo "$ac_t""avoiding OpenBSD system log1p - using gsl version" 1>&6 - ;; - *) - cat > conftest.$ac_ext < - int main() { - {} - ; return 0; } - EOF - if { (eval echo configure:6994: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - : - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - for ac_func in log1p - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 - echo "configure:7004: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - /* Override any gcc2 internal prototype to avoid an error. */ - /* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ - char $ac_func(); ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:7032: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 ! fi ! done fi - rm -f conftest* - ;; - esac ! echo $ac_n "checking for vprintf""... $ac_c" 1>&6 ! echo "configure:7063: checking for vprintf" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char vprintf(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_vprintf) || defined (__stub___vprintf) ! choke me ! #else ! vprintf(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:7091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_vprintf=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_vprintf=no" fi ! rm -f conftest* fi ! if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then ! echo "$ac_t""yes" 1>&6 ! cat >> confdefs.h <<\EOF ! #define HAVE_VPRINTF 1 ! EOF - else - echo "$ac_t""no" 1>&6 - fi - if test "$ac_cv_func_vprintf" != yes; then - echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 - echo "configure:7115: checking for _doprnt" >&5 - if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char _doprnt(); - int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub__doprnt) || defined (__stub____doprnt) ! choke me ! #else ! _doprnt(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:7143: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func__doprnt=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func__doprnt=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF - #define HAVE_DOPRNT 1 - EOF else ! echo "$ac_t""no" 1>&6 ! fi fi ! for ac_func in memcpy memmove strdup strtol strtoul ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7171: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:7199: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 ! LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}" ! fi ! done ! for ac_func in clock ! do ! echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 ! echo "configure:7230: checking for $ac_func" >&5 ! if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! /* Override any gcc2 internal prototype to avoid an error. */ ! /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char $ac_func(); ! ! int main() { ! /* The GNU C library defines this for functions which it implements ! to always fail with ENOSYS. Some functions are actually named ! something starting with __ and the normal name is an alias. */ ! #if defined (__stub_$ac_func) || defined (__stub___$ac_func) ! choke me ! #else ! $ac_func(); #endif ! ; return 0; } ! EOF ! if { (eval echo configure:7258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -rf conftest* ! eval "ac_cv_func_$ac_func=no" fi ! rm -f conftest* fi - if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 fi - done ! echo $ac_n "checking for CLOCKS_PER_SEC""... $ac_c" 1>&6 ! echo "configure:7284: checking for CLOCKS_PER_SEC" >&5 ! if eval "test \"`echo '$''{'ac_cv_decl_clocks_per_sec'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < ! #ifdef CLOCKS_PER_SEC ! yes #endif ! EOF ! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ! egrep "yes" >/dev/null 2>&1; then ! rm -rf conftest* ! ac_cv_decl_clocks_per_sec=yes else ! rm -rf conftest* ! ac_cv_decl_clocks_per_sec=no ! fi ! rm -f conftest* fi - echo "$ac_t""$ac_cv_decl_clocks_per_sec" 1>&6 - if test "$ac_cv_decl_clocks_per_sec" = yes ; then - cat >> confdefs.h <<\EOF - #define HAVE_CLOCKS_PER_SEC 1 - EOF ! else ! echo $ac_n "checking whether CLOCKS_PER_SEC is known for $host_os""... $ac_c" 1>&6 ! echo "configure:7320: checking whether CLOCKS_PER_SEC is known for $host_os" >&5 ! case "$host" in ! *-*-sunos4.*) ! cat >> confdefs.h <<\EOF ! #define HAVE_GUESSED_CLOCKS_PER_SEC 1000000 ! EOF ! echo "$ac_t""yes (microseconds)" 1>&6 ! ;; ! *-*-nextstep*) ! cat >> confdefs.h <<\EOF ! #define HAVE_GUESSED_CLOCKS_PER_SEC 64 ! EOF ! echo "$ac_t""yes (15.625 milliseconds)" 1>&6 ! ;; ! *) ! cat >> confdefs.h <<\EOF ! #define HAVE_GUESSED_CLOCKS_PER_SEC 1000000 ! EOF - echo "$ac_t""no, assuming microseconds" 1>&6 - ;; - esac - fi - echo $ac_n "checking for EXIT_SUCCESS and EXIT_FAILURE""... $ac_c" 1>&6 - echo "configure:7347: checking for EXIT_SUCCESS and EXIT_FAILURE" >&5 - if eval "test \"`echo '$''{'ac_cv_decl_exit_success_and_failure'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 else ! cat > conftest.$ac_ext < - #ifdef EXIT_SUCCESS - yes - #endif - EOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "yes" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_decl_exit_success_and_failure=yes - else - rm -rf conftest* - ac_cv_decl_exit_success_and_failure=no fi - rm -f conftest* ! fi ! echo "$ac_t""$ac_cv_decl_exit_success_and_failure" 1>&6 ! if test "$ac_cv_decl_exit_success_and_failure" = yes ; then ! cat >> confdefs.h <<\EOF ! #define HAVE_EXIT_SUCCESS_AND_FAILURE 1 ! EOF ! fi ; ! echo $ac_n "checking for IEEE arithmetic interface type""... $ac_c" 1>&6 ! echo "configure:7385: checking for IEEE arithmetic interface type" >&5 ! case "$host" in ! sparc-*-linux*) ! cat >> confdefs.h <<\EOF ! #define HAVE_SPARCLINUX_IEEE_INTERFACE 1 ! EOF ! echo "$ac_t""sparclinux" 1>&6 ;; ! m68k-*-linux*) ! cat >> confdefs.h <<\EOF ! #define HAVE_M68KLINUX_IEEE_INTERFACE 1 ! EOF ! cat >> confdefs.h <<\EOF #define HAVE_EXTENDED_PRECISION_REGISTERS 1 ! EOF - echo "$ac_t""m68klinux" 1>&6 - ;; - powerpc-*-linux*) - cat >> confdefs.h <<\EOF - #define HAVE_PPCLINUX_IEEE_INTERFACE 1 - EOF ! echo "$ac_t""ppclinux" 1>&6 ! ;; ! *86-*-linux*) ! cat >> confdefs.h <<\EOF ! #define HAVE_X86LINUX_IEEE_INTERFACE 1 ! EOF ! echo "$ac_t""x86linux" 1>&6 ;; ! *-*-sunos4*) ! cat >> confdefs.h <<\EOF ! #define HAVE_SUNOS4_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""sunos4" 1>&6 ;; ! *-*-solaris*) ! cat >> confdefs.h <<\EOF ! #define HAVE_SOLARIS_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""solaris" 1>&6 ;; ! *-*-hpux11*) ! cat >> confdefs.h <<\EOF ! #define HAVE_HPUX11_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""hpux11" 1>&6 ;; ! *-*-hpux*) ! cat >> confdefs.h <<\EOF ! #define HAVE_HPUX_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""hpux" 1>&6 ;; ! *-*-osf*) ! cat >> confdefs.h <<\EOF ! #define HAVE_TRU64_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""osf/tru64" 1>&6 ! need_fp_rnd_rn=yes ;; ! *-*-aix*) ! cat >> confdefs.h <<\EOF ! #define HAVE_AIX_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""aix" 1>&6 ;; ! *-*-irix*) ! cat >> confdefs.h <<\EOF ! #define HAVE_IRIX_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""irix" 1>&6 ;; ! *-*-*darwin*) ! cat >> confdefs.h <<\EOF ! #define HAVE_DARWIN_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""darwin" 1>&6 ;; ! *-*-*netbsd*) ! cat >> confdefs.h <<\EOF ! #define HAVE_NETBSD_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""netbsd" 1>&6 ;; ! *-*-*openbsd*) ! cat >> confdefs.h <<\EOF ! #define HAVE_OPENBSD_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""openbsd" 1>&6 ;; ! *-*-*bsd*) ! cat >> confdefs.h <<\EOF ! #define HAVE_FREEBSD_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""freebsd" 1>&6 ;; *-*-os2*) ! cat >> confdefs.h <<\EOF ! #define HAVE_OS2EMX_IEEE_INTERFACE 1 ! EOF ! ! echo "$ac_t""os2emx" 1>&6 ;; *) ! echo "$ac_t""unknown" 1>&6 ;; esac ! echo $ac_n "checking for cpu with extended floating point registers""... $ac_c" 1>&6 ! echo "configure:7510: checking for cpu with extended floating point registers" >&5 ! case "$host" in ! *sparc*-*-*) ! echo "$ac_t""sparc, no" 1>&6 ! ;; ! *powerpc*-*-*) ! echo "$ac_t""powerpc, no" 1>&6 ! ;; ! *hppa*-*-*) ! echo "$ac_t""hppa, no" 1>&6 ! ;; ! *alpha*-*-*) ! echo "$ac_t""alpha, no" 1>&6 ! ;; ! *68k*-*-*) ! echo "$ac_t""68k, yes" 1>&6 ! cat >> confdefs.h <<\EOF ! #define HAVE_EXTENDED_PRECISION_REGISTERS 1 ! EOF - ;; - *86*-*-*) - echo "$ac_t""x86, yes" 1>&6 - cat >> confdefs.h <<\EOF - #define HAVE_EXTENDED_PRECISION_REGISTERS 1 - EOF - ;; - *) - cat >> confdefs.h <<\EOF - #define HAVE_EXTENDED_PRECISION_REGISTERS 1 - EOF - echo "$ac_t""unknown, assuming yes" 1>&6 - ;; - esac - # On some systems requiring symbols FP_RND_{RN,RM,RP,RZ} for setting the - # floating-point rounding strategy, the symbols are defined in - # /usr/include/float.h. However, some versions of GCC do not have - # the symbols in the `fixed' version of float.h, so simply including - # does not find the symbols. We detect this and work around - # it in ieee-utils/fp-foo.c - # - if test "x$need_fp_rnd_rn" = xyes; then - echo $ac_n "checking for FP_RND_RN in ""... $ac_c" 1>&6 - echo "configure:7557: checking for FP_RND_RN in " >&5 - cat > conftest.$ac_ext < - int main() { - unsigned int rnd = FP_RND_RN; - ; return 0; } - EOF - if { (eval echo configure:7566: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - result=yes - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - result=no - fi - rm -f conftest* - echo "$ac_t""$result" 1>&6 - if test "$result" = no; then - echo $ac_n "checking for FP_RND_RN in /usr/include/float.h""... $ac_c" 1>&6 - echo "configure:7579: checking for FP_RND_RN in /usr/include/float.h" >&5 - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - echo "$ac_t""yes" 1>&6 - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - { echo "configure: error: cannot find required FP_RND_* macros" 1>&2; exit 1; } - fi - rm -f conftest* - cat >> confdefs.h <<\EOF - #define FIND_FP_RND_IN_USR_INCLUDE_FLOAT_H 1 - EOF - fi - fi - echo $ac_n "checking for rounding-control compiler flags""... $ac_c" 1>&6 - echo "configure:7607: checking for rounding-control compiler flags" >&5 - save_cflags="$CFLAGS" - case "$host" in - alpha*-*-*) - if test X"$GCC" = Xyes ; then - ieee_alpha_options='-mfp-rounding-mode=d' - CFLAGS="$ieee_alpha_options $CFLAGS" - else - # This assumes Compaq's C compiler, which is probably - # a pretty bad assumption. Improvements welcome. - ieee_alpha_options='-fprm d' - CFLAGS="$ieee_alpha_options $CFLAGS" - fi - # - # now see if the option we think should be accepted actually is - # - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - - echo "$ac_t""$ieee_alpha_options" 1>&6 - save_cflags="$CFLAGS" - - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - echo "$ac_t""unknown!" 1>&6 - echo "configure: warning: I don't know how to enable dynamic rounding with your compiler - " 1>&2 - - - fi - rm -f conftest* ;; - *) - echo "$ac_t""none" 1>&6 - ;; - esac - # Now restore our (possibly augmented) CFLAGS. - CFLAGS="$save_cflags" - GSL_CFLAGS="-I$includedir" - GSL_LIBS="-L$libdir -lgsl" --- 8376,9676 ---- choke me #else ! char (*f) () = $ac_func; ! #endif ! #ifdef __cplusplus ! } #endif ! int ! main () ! { ! return f != $ac_func; ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! eval "$as_ac_var=yes" ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! eval "$as_ac_var=no" ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 ! if test `eval echo '${'$as_ac_var'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 ! _ACEOF else ! LIBOBJS="$LIBOBJS $ac_func.$ac_objext" fi done ! echo "$as_me:$LINENO: checking for EXIT_SUCCESS and EXIT_FAILURE" >&5 ! echo $ECHO_N "checking for EXIT_SUCCESS and EXIT_FAILURE... $ECHO_C" >&6 ! if test "${ac_cv_decl_exit_success_and_failure+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! #ifdef EXIT_SUCCESS ! yes #endif ! _ACEOF ! if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ! $EGREP "yes" >/dev/null 2>&1; then ! ac_cv_decl_exit_success_and_failure=yes else ! ac_cv_decl_exit_success_and_failure=no fi rm -f conftest* fi ! echo "$as_me:$LINENO: result: $ac_cv_decl_exit_success_and_failure" >&5 ! echo "${ECHO_T}$ac_cv_decl_exit_success_and_failure" >&6 ! ! if test "$ac_cv_decl_exit_success_and_failure" = yes ; then ! cat >>confdefs.h <<\_ACEOF ! #define HAVE_EXIT_SUCCESS_AND_FAILURE 1 ! _ACEOF ! ! fi ; ! ! ! if test "x$LIBS" = "x" ; then ! ! echo "$as_me:$LINENO: checking for cos in -lm" >&5 ! echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6 ! if test "${ac_cv_lib_m_cos+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_check_lib_save_LIBS=$LIBS ! LIBS="-lm $LIBS" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" + #endif /* We use char because int might match the return type of a gcc2 ! builtin and then its argument prototype would still apply. */ ! char cos (); ! int ! main () ! { ! cos (); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_lib_m_cos=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_lib_m_cos=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! LIBS=$ac_check_lib_save_LIBS ! fi ! echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5 ! echo "${ECHO_T}$ac_cv_lib_m_cos" >&6 ! if test $ac_cv_lib_m_cos = yes; then ! cat >>confdefs.h <<_ACEOF ! #define HAVE_LIBM 1 ! _ACEOF ! ! LIBS="-lm $LIBS" ! fi ! fi ! ! echo "$as_me:$LINENO: checking whether feenableexcept is declared" >&5 ! echo $ECHO_N "checking whether feenableexcept is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_feenableexcept+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! ! int ! main () ! { ! #ifndef feenableexcept ! char *p = (char *) feenableexcept; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_feenableexcept=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_feenableexcept=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_feenableexcept" >&5 + echo "${ECHO_T}$ac_cv_have_decl_feenableexcept" >&6 + if test $ac_cv_have_decl_feenableexcept = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_FEENABLEEXCEPT 1 + _ACEOF + else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_FEENABLEEXCEPT 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether fesettrapenable is declared" >&5 ! echo $ECHO_N "checking whether fesettrapenable is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_fesettrapenable+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef fesettrapenable ! char *p = (char *) fesettrapenable; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_fesettrapenable=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_fesettrapenable=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_fesettrapenable" >&5 + echo "${ECHO_T}$ac_cv_have_decl_fesettrapenable" >&6 + if test $ac_cv_have_decl_fesettrapenable = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_FESETTRAPENABLE 1 + _ACEOF + else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_FESETTRAPENABLE 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether hypot is declared" >&5 ! echo $ECHO_N "checking whether hypot is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_hypot+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef hypot ! char *p = (char *) hypot; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_hypot=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_hypot=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_hypot" >&5 + echo "${ECHO_T}$ac_cv_have_decl_hypot" >&6 + if test $ac_cv_have_decl_hypot = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_HYPOT 1 + _ACEOF + else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_HYPOT 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether expm1 is declared" >&5 ! echo $ECHO_N "checking whether expm1 is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_expm1+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef expm1 ! char *p = (char *) expm1; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_expm1=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_expm1=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_expm1" >&5 + echo "${ECHO_T}$ac_cv_have_decl_expm1" >&6 + if test $ac_cv_have_decl_expm1 = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_EXPM1 1 + _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_EXPM1 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether acosh is declared" >&5 ! echo $ECHO_N "checking whether acosh is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_acosh+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef acosh ! char *p = (char *) acosh; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_acosh=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_acosh=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_acosh" >&5 + echo "${ECHO_T}$ac_cv_have_decl_acosh" >&6 + if test $ac_cv_have_decl_acosh = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_ACOSH 1 + _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ACOSH 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether asinh is declared" >&5 ! echo $ECHO_N "checking whether asinh is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_asinh+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef asinh ! char *p = (char *) asinh; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_asinh=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_asinh=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_asinh" >&5 + echo "${ECHO_T}$ac_cv_have_decl_asinh" >&6 + if test $ac_cv_have_decl_asinh = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_ASINH 1 + _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ASINH 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether atanh is declared" >&5 ! echo $ECHO_N "checking whether atanh is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_atanh+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef atanh ! char *p = (char *) atanh; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_atanh=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_atanh=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_atanh" >&5 + echo "${ECHO_T}$ac_cv_have_decl_atanh" >&6 + if test $ac_cv_have_decl_atanh = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_ATANH 1 + _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ATANH 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether ldexp is declared" >&5 ! echo $ECHO_N "checking whether ldexp is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_ldexp+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef ldexp ! char *p = (char *) ldexp; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_ldexp=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_ldexp=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_ldexp" >&5 + echo "${ECHO_T}$ac_cv_have_decl_ldexp" >&6 + if test $ac_cv_have_decl_ldexp = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_LDEXP 1 + _ACEOF + else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_LDEXP 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether frexp is declared" >&5 ! echo $ECHO_N "checking whether frexp is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_frexp+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef frexp ! char *p = (char *) frexp; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_frexp=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_frexp=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_frexp" >&5 + echo "${ECHO_T}$ac_cv_have_decl_frexp" >&6 + if test $ac_cv_have_decl_frexp = yes; then ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_FREXP 1 ! _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_FREXP 0 ! _ACEOF ! ! ! fi ! echo "$as_me:$LINENO: checking whether isinf is declared" >&5 ! echo $ECHO_N "checking whether isinf is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_isinf+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! ! int ! main () ! { ! #ifndef isinf ! char *p = (char *) isinf; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_isinf=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_isinf=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_isinf" >&5 + echo "${ECHO_T}$ac_cv_have_decl_isinf" >&6 + if test $ac_cv_have_decl_isinf = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_ISINF 1 + _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ISINF 0 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking whether finite is declared" >&5 ! echo $ECHO_N "checking whether finite is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_finite+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef finite ! char *p = (char *) finite; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_finite=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_finite=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_finite" >&5 + echo "${ECHO_T}$ac_cv_have_decl_finite" >&6 + if test $ac_cv_have_decl_finite = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_FINITE 1 + _ACEOF + else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_FINITE 0 ! _ACEOF + fi ! echo "$as_me:$LINENO: checking whether isfinite is declared" >&5 ! echo $ECHO_N "checking whether isfinite is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_isfinite+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef isfinite ! char *p = (char *) isfinite; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_isfinite=yes else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_isfinite=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi + echo "$as_me:$LINENO: result: $ac_cv_have_decl_isfinite" >&5 + echo "${ECHO_T}$ac_cv_have_decl_isfinite" >&6 + if test $ac_cv_have_decl_isfinite = yes; then + + cat >>confdefs.h <<_ACEOF + #define HAVE_DECL_ISFINITE 1 + _ACEOF + else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ISFINITE 0 ! _ACEOF ! ! fi ! echo "$as_me:$LINENO: checking whether isnan is declared" >&5 ! echo $ECHO_N "checking whether isnan is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_isnan+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef isnan ! char *p = (char *) isnan; #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_isnan=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_isnan=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_have_decl_isnan" >&5 ! echo "${ECHO_T}$ac_cv_have_decl_isnan" >&6 ! if test $ac_cv_have_decl_isnan = yes; then ! ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ISNAN 1 ! _ACEOF ! ! else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_ISNAN 0 ! _ACEOF fi ! case "$host" in ! *-*-*openbsd*) ! echo "$as_me:$LINENO: result: avoiding OpenBSD system log1p - using gsl version" >&5 ! echo "${ECHO_T}avoiding OpenBSD system log1p - using gsl version" >&6 ! ;; ! *) ! echo "$as_me:$LINENO: checking whether log1p is declared" >&5 ! echo $ECHO_N "checking whether log1p is declared... $ECHO_C" >&6 ! if test "${ac_cv_have_decl_log1p+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int ! main () ! { ! #ifndef log1p ! char *p = (char *) log1p; ! #endif ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_have_decl_log1p=yes ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_have_decl_log1p=no ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! fi ! echo "$as_me:$LINENO: result: $ac_cv_have_decl_log1p" >&5 ! echo "${ECHO_T}$ac_cv_have_decl_log1p" >&6 ! if test $ac_cv_have_decl_log1p = yes; then ! ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_LOG1P 1 ! _ACEOF else ! cat >>confdefs.h <<_ACEOF ! #define HAVE_DECL_LOG1P 0 ! _ACEOF fi ! ;; ! esac ! echo "$as_me:$LINENO: checking for long double stdio" >&5 ! echo $ECHO_N "checking for long double stdio... $ECHO_C" >&6 ! if test "${ac_cv_func_printf_longdouble+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! if test "$cross_compiling" = yes; then ! ac_cv_func_printf_longdouble="no" ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! #include ! int main (void) ! { ! const char * s = "5678"; long double x = 1.234 ; ! fprintf(stderr,"%Lg\n",x) ; ! sscanf(s, "%Lg", &x); ! if (x == 5678) {exit (0);} else {exit(1); }; ! } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_func_printf_longdouble="yes" ! else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ( exit $ac_status ) ! ac_cv_func_printf_longdouble="no" ! fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ! fi ! fi ! echo "$as_me:$LINENO: result: $ac_cv_func_printf_longdouble" >&5 ! echo "${ECHO_T}$ac_cv_func_printf_longdouble" >&6 ! if test "$ac_cv_func_printf_longdouble" != no; then ! cat >>confdefs.h <<\_ACEOF ! #define HAVE_PRINTF_LONGDOUBLE 1 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking for extended floating point registers" >&5 ! echo $ECHO_N "checking for extended floating point registers... $ECHO_C" >&6 ! if test "${ac_cv_c_extended_fp+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! case "$host" in ! *sparc*-*-*) ! ac_cv_c_extended_fp=no ;; ! *powerpc*-*-*) ! ac_cv_c_extended_fp=no ! ;; ! *hppa*-*-*) ! ac_cv_c_extended_fp=no ! ;; ! *alpha*-*-*) ! ac_cv_c_extended_fp=no ! ;; ! *68k*-*-*) ! ac_cv_c_extended_fp=yes ! ;; ! *86*-*-*) ! ac_cv_c_extended_fp=yes ! ;; ! *) ! ac_cv_c_extended_fp=unknown ! ;; ! esac ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_extended_fp" >&5 ! echo "${ECHO_T}$ac_cv_c_extended_fp" >&6 ! ! if test $ac_cv_c_extended_fp != "no" ; then ! cat >>confdefs.h <<\_ACEOF #define HAVE_EXTENDED_PRECISION_REGISTERS 1 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking for IEEE arithmetic interface type" >&5 ! echo $ECHO_N "checking for IEEE arithmetic interface type... $ECHO_C" >&6 ! if test "${ac_cv_c_ieee_interface+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! case "$host" in ! sparc-*-linux*) ! ac_cv_c_ieee_interface=gnusparc ;; ! m68k-*-linux*) ! ac_cv_c_ieee_interface=gnum68k ;; ! powerpc-*-linux*) ! ac_cv_c_ieee_interface=gnuppc ;; ! *86-*-linux*) ! ac_cv_c_ieee_interface=gnux86 ;; ! *-*-sunos4*) ! ac_cv_c_ieee_interface=sunos4 ;; ! *-*-solaris*) ! ac_cv_c_ieee_interface=solaris ;; ! *-*-hpux11*) ! ac_cv_c_ieee_interface=hpux11 ;; ! *-*-hpux*) ! ac_cv_c_ieee_interface=hpux ;; ! *-*-osf*) ! ac_cv_c_ieee_interface=tru64 ;; ! *-*-aix*) ! ac_cv_c_ieee_interface=aix ;; ! *-*-irix*) ! ac_cv_c_ieee_interface=irix ;; ! *-*-*darwin*) ! ac_cv_c_ieee_interface=darwin ! ;; ! *-*-*netbsd*) ! ac_cv_c_ieee_interface=netbsd ! ;; ! *-*-*openbsd*) ! ac_cv_c_ieee_interface=openbsd ! ;; ! *-*-*bsd*) ! ac_cv_c_ieee_interface=freebsd ;; *-*-os2*) ! ac_cv_c_ieee_interface=os2emx ;; *) ! ac_cv_c_ieee_interface=unknown ;; esac ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_ieee_interface" >&5 ! echo "${ECHO_T}$ac_cv_c_ieee_interface" >&6 ! ! if test "$ac_cv_c_ieee_interface" = "gnux86" ; then ! echo "$as_me:$LINENO: checking for FPU_SETCW" >&5 ! echo $ECHO_N "checking for FPU_SETCW... $ECHO_C" >&6 ! if test "${ac_cv_c_fpu_setcw+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ac_cv_c_fpu_setcw=no ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! #ifndef _FPU_SETCW ! #include ! #define _FPU_SETCW(cw) __setfpucw(cw) ! #endif ! ! int ! main () ! { ! unsigned short mode = 0 ; _FPU_SETCW(mode); ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_c_fpu_setcw="yes" ! else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_c_ieee_interface=unknown ! fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_fpu_setcw" >&5 ! echo "${ECHO_T}$ac_cv_c_fpu_setcw" >&6 ! fi ! ! ac_tr_ieee_interface=HAVE_`echo $ac_cv_c_ieee_interface | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_IEEE_INTERFACE ! ! cat >>confdefs.h <<_ACEOF ! #define $ac_tr_ieee_interface 1 ! _ACEOF ! ! ! *************** *** 7659,7773 **** - echo $ac_n "checking for IEEE-conformance compiler flags""... $ac_c" 1>&6 - echo "configure:7663: checking for IEEE-conformance compiler flags" >&5 - save_cflags="$CFLAGS" - case "$host" in - alpha*-*-*) - if test X"$GCC" = Xyes ; then - ieee_alpha_options='-mieee' - CFLAGS="$ieee_alpha_options $CFLAGS" - else - # This assumes Compaq's C compiler, which is probably - # a pretty bad assumption. Improvements welcome. - ieee_alpha_options='-ieee' - CFLAGS="$ieee_alpha_options $CFLAGS" - fi - # - # now see if the option we think should be accepted actually is - # - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - - echo "$ac_t""$ieee_alpha_options" 1>&6 - save_cflags="$CFLAGS" - - else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - - echo "$ac_t""unknown!" 1>&6 - echo "configure: warning: I don't know how to enable full IEEE mode with your compiler - " 1>&2 - - - fi - rm -f conftest* ;; - *) - echo "$ac_t""none" 1>&6 - ;; - esac - # Now restore our (possibly augmented) CFLAGS. - CFLAGS="$save_cflags" ! echo $ac_n "checking whether printf/scanf works with long double""... $ac_c" 1>&6 ! echo "configure:7716: checking whether printf/scanf works with long double" >&5 ! if test "$cross_compiling" = yes; then ! ac_cv_func_printf_longdouble=no else - cat > conftest.$ac_ext < ! #include ! int main (void) ! { ! const char * s = "5678"; long double x = 1.234 ; ! fprintf(stderr,"%Lg\n",x) ; ! sscanf(s, "%Lg", &x); ! if (x == 5678) {exit (0);} else {exit(1); }; } ! EOF ! if { (eval echo configure:7734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ! then ! ac_cv_func_printf_longdouble=yes else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -fr conftest* ! ac_cv_func_printf_longdouble=no fi ! rm -fr conftest* fi ! ! ! if test $ac_cv_func_printf_longdouble = yes; then ! cat >> confdefs.h <<\EOF ! #define HAVE_PRINTF_LONGDOUBLE 1 ! EOF ! echo "$ac_t""yes" 1>&6 else ! echo "$ac_t""no" 1>&6 fi ! ! echo $ac_n "checking working IEEE comparisons""... $ac_c" 1>&6 ! echo "configure:7759: checking working IEEE comparisons" >&5 ! if eval "test \"`echo '$''{'ac_cv_c_ieee_comparisons'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then ac_cv_c_ieee_comparisons="yes" else ! cat > conftest.$ac_ext < ! int main (void) ! { int status; double inf, nan; inf = exp(1.0e10); --- 9678,9773 ---- ! save_cflags="$CFLAGS" ! echo "$as_me:$LINENO: checking for IEEE compiler flags" >&5 ! echo $ECHO_N "checking for IEEE compiler flags... $ECHO_C" >&6 ! if test "${ac_cv_c_ieee_flags+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! case "$host" in ! alpha*-*-*) ! if test X"$GCC" = Xyes ; then ! ieee_flags='-mieee -mfp-rounding-mode=d' ! else ! # This assumes Compaq's C compiler. ! ieee_flags='-ieee -fprm d' ! fi ! ;; ! esac ! if test X"$ieee_flags" != X ; then ! CFLAGS="$ieee_flags $CFLAGS" ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! ! int ! main () ! { ! int foo; ! ; ! return 0; } ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_cv_c_ieee_flags="$ieee_flags" else ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ac_cv_c_ieee_flags="none" fi ! rm -f conftest.$ac_objext conftest.$ac_ext ! else ! ac_cv_c_ieee_flags="none" fi ! fi ! echo "$as_me:$LINENO: result: $ac_cv_c_ieee_flags" >&5 ! echo "${ECHO_T}$ac_cv_c_ieee_flags" >&6 ! if test "$ac_cv_c_ieee_flags" != "none" ; then ! CFLAGS="$ac_cv_c_ieee_flags $save_cflags" else ! CFLAGS="$save_cflags" fi ! echo "$as_me:$LINENO: checking for IEEE comparisons" >&5 ! echo $ECHO_N "checking for IEEE comparisons... $ECHO_C" >&6 ! if test "${ac_cv_c_ieee_comparisons+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_c_ieee_comparisons="yes" else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ #include ! int main (void) ! { int status; double inf, nan; inf = exp(1.0e10); *************** *** 7776,7871 **** exit (status); } ! EOF ! if { (eval echo configure:7780: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ! then ac_cv_c_ieee_comparisons="yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -fr conftest* ! ac_cv_c_ieee_comparisons="no" fi ! rm -fr conftest* fi - fi ! ! echo "$ac_t""$ac_cv_c_ieee_comparisons" 1>&6 if test "$ac_cv_c_ieee_comparisons" != no ; then ! cat >> confdefs.h <<\EOF #define HAVE_IEEE_COMPARISONS 1 ! EOF - fi ! echo $ac_n "checking for IEEE denormalized values""... $ac_c" 1>&6 ! echo "configure:7806: checking for IEEE denormalized values" >&5 ! if eval "test \"`echo '$''{'ac_cv_c_ieee_denormals'+set}'`\" = set"; then ! echo $ac_n "(cached) $ac_c" 1>&6 else if test "$cross_compiling" = yes; then ac_cv_c_ieee_denormals="yes" else ! cat > conftest.$ac_ext < ! int main (void) ! { ! int i, status; volatile double z = 1e-308; ! for (i = 0; i < 5; i++) { z = z / 10.0 ; }; for (i = 0; i < 5; i++) { z = z * 10.0 ; }; status = (z == 0.0); exit (status); } ! EOF ! if { (eval echo configure:7828: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null ! then ac_cv_c_ieee_denormals="yes" else ! echo "configure: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! rm -fr conftest* ! ac_cv_c_ieee_denormals="no" fi ! rm -fr conftest* fi - fi ! ! echo "$ac_t""$ac_cv_c_ieee_denormals" 1>&6 if test "$ac_cv_c_ieee_denormals" != no ; then ! cat >> confdefs.h <<\EOF #define HAVE_IEEE_DENORMALS 1 ! EOF - - fi ! trap '' 1 2 15 ! cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure ! # scripts and configure runs. It is not useful on other systems. ! # If it contains results you don't want to keep, you may remove or edit it. # ! # By default, configure uses ./config.cache as the cache file, ! # creating it if it does not exist already. You can give configure ! # the --cache-file=FILE option to use a different cache file; that is ! # what configure does when it calls configure scripts in ! # subdirectories, so they share the cache. ! # Giving --cache-file=/dev/null disables caching, for debugging configure. ! # config.status only pays attention to the cache file if you give it the ! # --recheck option to rerun configure. # ! EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. --- 9776,9894 ---- exit (status); } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ac_cv_c_ieee_comparisons="yes" else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ( exit $ac_status ) ! ac_cv_c_ieee_comparisons="no" fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $ac_cv_c_ieee_comparisons" >&5 ! echo "${ECHO_T}$ac_cv_c_ieee_comparisons" >&6 if test "$ac_cv_c_ieee_comparisons" != no ; then ! cat >>confdefs.h <<\_ACEOF #define HAVE_IEEE_COMPARISONS 1 ! _ACEOF ! fi ! echo "$as_me:$LINENO: checking for IEEE denormalized values" >&5 ! echo $ECHO_N "checking for IEEE denormalized values... $ECHO_C" >&6 ! if test "${ac_cv_c_ieee_denormals+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then ac_cv_c_ieee_denormals="yes" else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! /* confdefs.h. */ ! _ACEOF ! cat confdefs.h >>conftest.$ac_ext ! cat >>conftest.$ac_ext <<_ACEOF ! /* end confdefs.h. */ ! #include ! int main (void) ! { ! int i, status; volatile double z = 1e-308; ! for (i = 0; i < 5; i++) { z = z / 10.0 ; }; for (i = 0; i < 5; i++) { z = z * 10.0 ; }; status = (z == 0.0); exit (status); } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ac_cv_c_ieee_denormals="yes" else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! sed 's/^/| /' conftest.$ac_ext >&5 ! ! ( exit $ac_status ) ! ac_cv_c_ieee_denormals="no" fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $ac_cv_c_ieee_denormals" >&5 ! echo "${ECHO_T}$ac_cv_c_ieee_denormals" >&6 if test "$ac_cv_c_ieee_denormals" != no ; then ! cat >>confdefs.h <<\_ACEOF #define HAVE_IEEE_DENORMALS 1 ! _ACEOF + fi ! ac_config_files="$ac_config_files gsl-config gsl.pc gsl_version.h gsl.spec gsl/Makefile test/Makefile err/Makefile sys/Makefile utils/Makefile const/Makefile min/Makefile multimin/Makefile ieee-utils/Makefile fft/Makefile specfunc/Makefile dht/Makefile fit/Makefile multifit/Makefile statistics/Makefile sum/Makefile roots/Makefile multiroots/Makefile ntuple/Makefile poly/Makefile qrng/Makefile rng/Makefile randist/Makefile siman/Makefile integration/Makefile interpolation/Makefile doc/Makefile block/Makefile vector/Makefile matrix/Makefile histogram/Makefile monte/Makefile ode-initval/Makefile cblas/Makefile blas/Makefile linalg/Makefile eigen/Makefile permutation/Makefile combination/Makefile sort/Makefile complex/Makefile diff/Makefile cheb/Makefile cdf/Makefile Makefile" ! cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure ! # scripts and configure runs, see configure's option --config-cache. ! # It is not useful on other systems. If it contains results you don't ! # want to keep, you may remove or edit it. # ! # config.status only pays attention to the cache file if you give it ! # the --recheck option to rerun configure. # ! # `ac_cv_env_foo' variables (set or unset) will be overridden when ! # loading this file, other *unset* `ac_cv_foo' will be assigned the ! # following values. ! ! _ACEOF ! # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. *************** *** 7873,7896 **** # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ! (set) 2>&1 | ! case `(ac_space=' '; set | grep ac_space) 2>&1` in ! *ac_space=\ *) ! # `set' does not quote correctly, so add quotes (double-quote substitution ! # turns \\\\ into \\, and sed turns \\ into \). ! sed -n \ ! -e "s/'/'\\\\''/g" \ ! -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ! ;; ! *) ! # `set' quotes correctly as required by POSIX, so do not add quotes. ! sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ! ;; ! esac >> confcache ! if cmp -s $cache_file confcache; then ! : ! else if test -w $cache_file; then ! echo "updating cache $cache_file" ! cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" --- 9896,9927 ---- # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ! { ! (set) 2>&1 | ! case `(ac_space=' '; set | grep ac_space) 2>&1` in ! *ac_space=\ *) ! # `set' does not quote correctly, so add quotes (double-quote ! # substitution turns \\\\ into \\, and sed turns \\ into \). ! sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ! ;; ! *) ! # `set' quotes correctly as required by POSIX, so do not add quotes. ! sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ! ;; ! esac; ! } | ! sed ' ! t clear ! : clear ! s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ ! t end ! /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ! : end' >>confcache ! if diff $cache_file confcache >/dev/null 2>&1; then :; else if test -w $cache_file; then ! test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" ! cat confcache >$cache_file else echo "not updating unwritable cache $cache_file" *************** *** 7899,8128 **** rm -f confcache - trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ! # Any assignment to VPATH causes Sun make to only execute ! # the first set of double-colon rules, so remove it if not needed. ! # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi - trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - DEFS=-DHAVE_CONFIG_H ! # Without the "./", some shells look in PATH for config.status. ! : ${CONFIG_STATUS=./config.status} ! echo creating $CONFIG_STATUS ! rm -f $CONFIG_STATUS ! cat > $CONFIG_STATUS </dev/null | sed 1q`: - # - # $0 $ac_configure_args - # # Compiler output produced by configure, useful for debugging ! # configure, is in ./config.log if it exists. ! ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" ! for ac_option do ! case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ! echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" ! exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; ! -version | --version | --versio | --versi | --vers | --ver | --ve | --v) ! echo "$CONFIG_STATUS generated by autoconf version 2.13" ! exit 0 ;; ! -help | --help | --hel | --he | --h) ! echo "\$ac_cs_usage"; exit 0 ;; ! *) echo "\$ac_cs_usage"; exit 1 ;; esac done ! ac_given_srcdir=$srcdir ! ac_given_INSTALL="$INSTALL" ! trap 'rm -fr `echo "gsl-config gsl.pc gsl_version.h gsl.spec gsl/Makefile test/Makefile err/Makefile sys/Makefile utils/Makefile const/Makefile min/Makefile multimin/Makefile ieee-utils/Makefile fft/Makefile specfunc/Makefile dht/Makefile fit/Makefile multifit/Makefile statistics/Makefile sum/Makefile roots/Makefile multiroots/Makefile ntuple/Makefile poly/Makefile qrng/Makefile rng/Makefile randist/Makefile siman/Makefile integration/Makefile interpolation/Makefile doc/Makefile block/Makefile vector/Makefile matrix/Makefile histogram/Makefile monte/Makefile ode-initval/Makefile cblas/Makefile blas/Makefile linalg/Makefile eigen/Makefile permutation/Makefile combination/Makefile sort/Makefile complex/Makefile diff/Makefile cheb/Makefile Makefile config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 ! EOF ! cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF ! $ac_vpsub ! $extrasub ! s%@SHELL@%$SHELL%g ! s%@CFLAGS@%$CFLAGS%g ! s%@CPPFLAGS@%$CPPFLAGS%g ! s%@CXXFLAGS@%$CXXFLAGS%g ! s%@FFLAGS@%$FFLAGS%g ! s%@DEFS@%$DEFS%g ! s%@LDFLAGS@%$LDFLAGS%g ! s%@LIBS@%$LIBS%g ! s%@exec_prefix@%$exec_prefix%g ! s%@prefix@%$prefix%g ! s%@program_transform_name@%$program_transform_name%g ! s%@bindir@%$bindir%g ! s%@sbindir@%$sbindir%g ! s%@libexecdir@%$libexecdir%g ! s%@datadir@%$datadir%g ! s%@sysconfdir@%$sysconfdir%g ! s%@sharedstatedir@%$sharedstatedir%g ! s%@localstatedir@%$localstatedir%g ! s%@libdir@%$libdir%g ! s%@includedir@%$includedir%g ! s%@oldincludedir@%$oldincludedir%g ! s%@infodir@%$infodir%g ! s%@mandir@%$mandir%g ! s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g ! s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g ! s%@INSTALL_DATA@%$INSTALL_DATA%g ! s%@PACKAGE@%$PACKAGE%g ! s%@VERSION@%$VERSION%g ! s%@ACLOCAL@%$ACLOCAL%g ! s%@AUTOCONF@%$AUTOCONF%g ! s%@AUTOMAKE@%$AUTOMAKE%g ! s%@AUTOHEADER@%$AUTOHEADER%g ! s%@MAKEINFO@%$MAKEINFO%g ! s%@SET_MAKE@%$SET_MAKE%g ! s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g ! s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g ! s%@MAINT@%$MAINT%g ! s%@GSL_LT_VERSION@%$GSL_LT_VERSION%g ! s%@GSL_LT_CBLAS_VERSION@%$GSL_LT_CBLAS_VERSION%g ! s%@host@%$host%g ! s%@host_alias@%$host_alias%g ! s%@host_cpu@%$host_cpu%g ! s%@host_vendor@%$host_vendor%g ! s%@host_os@%$host_os%g ! s%@CC@%$CC%g ! s%@CPP@%$CPP%g ! s%@LN_S@%$LN_S%g ! s%@build@%$build%g ! s%@build_alias@%$build_alias%g ! s%@build_cpu@%$build_cpu%g ! s%@build_vendor@%$build_vendor%g ! s%@build_os@%$build_os%g ! s%@RANLIB@%$RANLIB%g ! s%@AR@%$AR%g ! s%@OBJEXT@%$OBJEXT%g ! s%@EXEEXT@%$EXEEXT%g ! s%@ECHO@%$ECHO%g ! s%@STRIP@%$STRIP%g ! s%@LIBTOOL@%$LIBTOOL%g ! s%@HAVE_INLINE@%$HAVE_INLINE%g ! s%@LIBOBJS@%$LIBOBJS%g ! s%@GSL_CFLAGS@%$GSL_CFLAGS%g ! s%@GSL_LIBS@%$GSL_LIBS%g ! s%@HAVE_IEEE_COMPARISONS@%$HAVE_IEEE_COMPARISONS%g ! s%@HAVE_IEEE_DENORMALS@%$HAVE_IEEE_DENORMALS%g CEOF - EOF ! cat >> $CONFIG_STATUS <<\EOF ! # Split the substitutions into bite-sized pieces for seds with ! # small command number limits, like on Digital OSF/1 and HP-UX. ! ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ! ac_file=1 # Number of current file. ! ac_beg=1 # First line for current file. ! ac_end=$ac_max_sed_cmds # Line after last line for current file. ! ac_more_lines=: ! ac_sed_cmds="" ! while $ac_more_lines; do ! if test $ac_beg -gt 1; then ! sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file ! else ! sed "${ac_end}q" conftest.subs > conftest.s$ac_file ! fi ! if test ! -s conftest.s$ac_file; then ! ac_more_lines=false ! rm -f conftest.s$ac_file ! else ! if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f conftest.s$ac_file" else ! ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ! ac_file=`expr $ac_file + 1` ! ac_beg=$ac_end ! ac_end=`expr $ac_end + $ac_max_sed_cmds` fi ! done ! if test -z "$ac_sed_cmds"; then ! ac_sed_cmds=cat ! fi ! EOF ! cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF ! for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ! case "$ac_file" in ! *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ! ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; ! *) ac_file_in="${ac_file}.in" ;; ! esac ! ! # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. ! ! # Remove last slash and all that follows it. Not all systems have dirname. ! ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` ! if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then ! # The file is in a subdirectory. ! test ! -d "$ac_dir" && mkdir "$ac_dir" ! ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" ! # A "../" for each directory in $ac_dir_suffix. ! ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` ! else ! ac_dir_suffix= ac_dots= ! fi ! ! case "$ac_given_srcdir" in ! .) srcdir=. ! if test -z "$ac_dots"; then top_srcdir=. ! else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; ! /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. ! srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" ! top_srcdir="$ac_dots$ac_given_srcdir" ;; esac ! case "$ac_given_INSTALL" in ! [/$]*) INSTALL="$ac_given_INSTALL" ;; ! *) INSTALL="$ac_dots$ac_given_INSTALL" ;; ! esac ! ! echo creating "$ac_file" ! rm -f "$ac_file" ! configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." ! case "$ac_file" in ! *Makefile*) ac_comsub="1i\\ ! # $configure_input" ;; ! *) ac_comsub= ;; ! esac ! ! ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` ! sed -e "$ac_comsub ! s%@configure_input@%$configure_input%g ! s%@srcdir@%$srcdir%g ! s%@top_srcdir@%$top_srcdir%g ! s%@INSTALL@%$INSTALL%g ! " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file ! fi; done ! rm -f conftest.s* # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where --- 9930,10827 ---- rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' ! # VPATH may cause trouble with some makes, so we remove $(srcdir), ! # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ! # trailing colons and then remove the whole line if VPATH becomes empty ! # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ ! s/:*\$(srcdir):*/:/; ! s/:*\${srcdir}:*/:/; ! s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; ! s/:*$//; ! s/^[^=]*=[ ]*$//; ! }' fi DEFS=-DHAVE_CONFIG_H ! ac_libobjs= ! ac_ltlibobjs= ! for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue ! # 1. Remove the extension, and $U if already installed. ! ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` ! # 2. Add them. ! ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" ! ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ! done ! LIBOBJS=$ac_libobjs ! LTLIBOBJS=$ac_ltlibobjs ! ! ! if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then ! { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. ! Usually this means the macro was only invoked conditionally." >&5 ! echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. ! Usually this means the macro was only invoked conditionally." >&2;} ! { (exit 1); exit 1; }; } ! fi ! ! : ${CONFIG_STATUS=./config.status} ! ac_clean_files_save=$ac_clean_files ! ac_clean_files="$ac_clean_files $CONFIG_STATUS" ! { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 ! echo "$as_me: creating $CONFIG_STATUS" >&6;} ! cat >$CONFIG_STATUS <<_ACEOF ! #! $SHELL ! # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging ! # configure, is in config.log if it exists. ! debug=false ! ac_cs_recheck=false ! ac_cs_silent=false ! SHELL=\${CONFIG_SHELL-$SHELL} ! _ACEOF ! ! cat >>$CONFIG_STATUS <<\_ACEOF ! ## --------------------- ## ! ## M4sh Initialization. ## ! ## --------------------- ## ! ! # Be Bourne compatible ! if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ! emulate sh ! NULLCMD=: ! # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ! # is contrary to our usage. Disable this feature. ! alias -g '${1+"$@"}'='"$@"' ! elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then ! set -o posix ! fi ! ! # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then ! as_unset=unset ! else ! as_unset=false ! fi ! ! ! # Work around bugs in pre-3.0 UWIN ksh. ! $as_unset ENV MAIL MAILPATH ! PS1='$ ' ! PS2='> ' ! PS4='+ ' ! ! # NLS nuisances. ! for as_var in \ ! LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ ! LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ ! LC_TELEPHONE LC_TIME ! do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then ! eval $as_var=C; export $as_var ! else ! $as_unset $as_var ! fi ! done ! ! # Required to use basename. ! if expr a : '\(a\)' >/dev/null 2>&1; then ! as_expr=expr ! else ! as_expr=false ! fi ! ! if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then ! as_basename=basename ! else ! as_basename=false ! fi ! ! ! # Name of the executable. ! as_me=`$as_basename "$0" || ! $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)$' \| \ ! . : '\(.\)' 2>/dev/null || ! echo X/"$0" | ! sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } ! /^X\/\(\/\/\)$/{ s//\1/; q; } ! /^X\/\(\/\).*/{ s//\1/; q; } ! s/.*/./; q'` ! ! ! # PATH needs CR, and LINENO needs CR and PATH. ! # Avoid depending upon Character Ranges. ! as_cr_letters='abcdefghijklmnopqrstuvwxyz' ! as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ! as_cr_Letters=$as_cr_letters$as_cr_LETTERS ! as_cr_digits='0123456789' ! as_cr_alnum=$as_cr_Letters$as_cr_digits ! ! # The user is always right. ! if test "${PATH_SEPARATOR+set}" != set; then ! echo "#! /bin/sh" >conf$$.sh ! echo "exit 0" >>conf$$.sh ! chmod +x conf$$.sh ! if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ! PATH_SEPARATOR=';' ! else ! PATH_SEPARATOR=: ! fi ! rm -f conf$$.sh ! fi ! ! ! as_lineno_1=$LINENO ! as_lineno_2=$LINENO ! as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` ! test "x$as_lineno_1" != "x$as_lineno_2" && ! test "x$as_lineno_3" = "x$as_lineno_2" || { ! # Find who we are. Look in the path if we contain no path at all ! # relative or not. ! case $0 in ! *[\\/]* ) as_myself=$0 ;; ! *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in $PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ! done ! ! ;; ! esac ! # We did not find ourselves, most probably we were run as `sh COMMAND' ! # in which case we are not to be found in the path. ! if test "x$as_myself" = x; then ! as_myself=$0 ! fi ! if test ! -f "$as_myself"; then ! { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 ! echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} ! { (exit 1); exit 1; }; } ! fi ! case $CONFIG_SHELL in ! '') ! as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ! for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH ! do ! IFS=$as_save_IFS ! test -z "$as_dir" && as_dir=. ! for as_base in sh bash ksh sh5; do ! case $as_dir in ! /*) ! if ("$as_dir/$as_base" -c ' ! as_lineno_1=$LINENO ! as_lineno_2=$LINENO ! as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` ! test "x$as_lineno_1" != "x$as_lineno_2" && ! test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then ! $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } ! $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } ! CONFIG_SHELL=$as_dir/$as_base ! export CONFIG_SHELL ! exec "$CONFIG_SHELL" "$0" ${1+"$@"} ! fi;; ! esac ! done ! done ! ;; ! esac ! ! # Create $as_me.lineno as a copy of $as_myself, but with $LINENO ! # uniformly replaced by the line number. The first 'sed' inserts a ! # line-number line before each line; the second 'sed' does the real ! # work. The second script uses 'N' to pair each line-number line ! # with the numbered line, and appends trailing '-' during ! # substitution so that $LINENO is not a special case at line end. ! # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the ! # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) ! sed '=' <$as_myself | ! sed ' ! N ! s,$,-, ! : loop ! s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ! t loop ! s,-$,, ! s,^['$as_cr_digits']*\n,, ! ' >$as_me.lineno && ! chmod +x $as_me.lineno || ! { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 ! echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ! { (exit 1); exit 1; }; } ! ! # Don't try to exec as it changes $[0], causing all sort of problems ! # (the dirname of $[0] is not the place where we might find the ! # original and so on. Autoconf is especially sensible to this). ! . ./$as_me.lineno ! # Exit status is that of the last command. ! exit ! } ! ! ! case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in ! *c*,-n*) ECHO_N= ECHO_C=' ! ' ECHO_T=' ' ;; ! *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; ! *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ! esac ! ! if expr a : '\(a\)' >/dev/null 2>&1; then ! as_expr=expr ! else ! as_expr=false ! fi ! ! rm -f conf$$ conf$$.exe conf$$.file ! echo >conf$$.file ! if ln -s conf$$.file conf$$ 2>/dev/null; then ! # We could just check for DJGPP; but this test a) works b) is more generic ! # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). ! if test -f conf$$.exe; then ! # Don't use ln at all; we don't have any links ! as_ln_s='cp -p' ! else ! as_ln_s='ln -s' ! fi ! elif ln conf$$.file conf$$ 2>/dev/null; then ! as_ln_s=ln ! else ! as_ln_s='cp -p' ! fi ! rm -f conf$$ conf$$.exe conf$$.file ! ! if mkdir -p . 2>/dev/null; then ! as_mkdir_p=: ! else ! as_mkdir_p=false ! fi ! ! as_executable_p="test -f" ! ! # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" ! ! # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" ! ! ! # IFS ! # We need space, tab and new line, in precisely that order. ! as_nl=' ! ' ! IFS=" $as_nl" ! ! # CDPATH. ! $as_unset CDPATH ! ! exec 6>&1 ! ! # Open the log real soon, to keep \$[0] and so on meaningful, and to ! # report actual input values of CONFIG_FILES etc. instead of their ! # values after options handling. Logging --version etc. is OK. ! exec 5>>config.log ! { ! echo ! sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ! ## Running $as_me. ## ! _ASBOX ! } >&5 ! cat >&5 <<_CSEOF ! ! This file was extended by gsl $as_me 1.4, which was ! generated by GNU Autoconf 2.57. Invocation command line was ! ! CONFIG_FILES = $CONFIG_FILES ! CONFIG_HEADERS = $CONFIG_HEADERS ! CONFIG_LINKS = $CONFIG_LINKS ! CONFIG_COMMANDS = $CONFIG_COMMANDS ! $ $0 $@ ! ! _CSEOF ! echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 ! echo >&5 ! _ACEOF ! ! # Files that config.status was made for. ! if test -n "$ac_config_files"; then ! echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS ! fi ! ! if test -n "$ac_config_headers"; then ! echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS ! fi ! ! if test -n "$ac_config_links"; then ! echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS ! fi ! ! if test -n "$ac_config_commands"; then ! echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS ! fi ! ! cat >>$CONFIG_STATUS <<\_ACEOF ! ! ac_cs_usage="\ ! \`$as_me' instantiates files from templates according to the ! current configuration. ! ! Usage: $0 [OPTIONS] [FILE]... ! ! -h, --help print this help, then exit ! -V, --version print version number, then exit ! -q, --quiet do not print progress messages ! -d, --debug don't remove temporary files ! --recheck update $as_me by reconfiguring in the same conditions ! --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE ! --header=FILE[:TEMPLATE] ! instantiate the configuration header FILE ! ! Configuration files: ! $config_files ! ! Configuration headers: ! $config_headers ! ! Report bugs to ." ! _ACEOF ! ! cat >>$CONFIG_STATUS <<_ACEOF ! ac_cs_version="\\ ! gsl config.status 1.4 ! configured by $0, generated by GNU Autoconf 2.57, ! with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. ! This config.status script is free software; the Free Software Foundation ! gives unlimited permission to copy, distribute and modify it." ! srcdir=$srcdir ! INSTALL="$INSTALL" ! _ACEOF ! ! cat >>$CONFIG_STATUS <<\_ACEOF ! # If no file are specified by the user, then we need to provide default ! # value. By we need to know if files were specified by the user. ! ac_need_defaults=: ! while test $# != 0 do ! case $1 in ! --*=*) ! ac_option=`expr "x$1" : 'x\([^=]*\)='` ! ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ! ac_shift=: ! ;; ! -*) ! ac_option=$1 ! ac_optarg=$2 ! ac_shift=shift ! ;; ! *) # This is not an option, so the user has probably given explicit ! # arguments. ! ac_option=$1 ! ac_need_defaults=false;; ! esac ! ! case $ac_option in ! # Handling of the options. ! _ACEOF ! cat >>$CONFIG_STATUS <<\_ACEOF -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ! ac_cs_recheck=: ;; ! --version | --vers* | -V ) ! echo "$ac_cs_version"; exit 0 ;; ! --he | --h) ! # Conflict between --help and --header ! { { echo "$as_me:$LINENO: error: ambiguous option: $1 ! Try \`$0 --help' for more information." >&5 ! echo "$as_me: error: ambiguous option: $1 ! Try \`$0 --help' for more information." >&2;} ! { (exit 1); exit 1; }; };; ! --help | --hel | -h ) ! echo "$ac_cs_usage"; exit 0 ;; ! --debug | --d* | -d ) ! debug=: ;; ! --file | --fil | --fi | --f ) ! $ac_shift ! CONFIG_FILES="$CONFIG_FILES $ac_optarg" ! ac_need_defaults=false;; ! --header | --heade | --head | --hea ) ! $ac_shift ! CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" ! ac_need_defaults=false;; ! -q | -quiet | --quiet | --quie | --qui | --qu | --q \ ! | -silent | --silent | --silen | --sile | --sil | --si | --s) ! ac_cs_silent=: ;; ! ! # This is an error. ! -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 ! Try \`$0 --help' for more information." >&5 ! echo "$as_me: error: unrecognized option: $1 ! Try \`$0 --help' for more information." >&2;} ! { (exit 1); exit 1; }; } ;; ! ! *) ac_config_targets="$ac_config_targets $1" ;; ! esac + shift done ! ac_configure_extra_args= ! if $ac_cs_silent; then ! exec 6>/dev/null ! ac_configure_extra_args="$ac_configure_extra_args --silent" ! fi ! _ACEOF ! cat >>$CONFIG_STATUS <<_ACEOF ! if \$ac_cs_recheck; then ! echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ! exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ! fi ! ! _ACEOF ! ! ! ! ! ! cat >>$CONFIG_STATUS <<\_ACEOF ! for ac_config_target in $ac_config_targets ! do ! case "$ac_config_target" in ! # Handling of arguments. ! "gsl-config" ) CONFIG_FILES="$CONFIG_FILES gsl-config" ;; ! "gsl.pc" ) CONFIG_FILES="$CONFIG_FILES gsl.pc" ;; ! "gsl_version.h" ) CONFIG_FILES="$CONFIG_FILES gsl_version.h" ;; ! "gsl.spec" ) CONFIG_FILES="$CONFIG_FILES gsl.spec" ;; ! "gsl/Makefile" ) CONFIG_FILES="$CONFIG_FILES gsl/Makefile" ;; ! "test/Makefile" ) CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; ! "err/Makefile" ) CONFIG_FILES="$CONFIG_FILES err/Makefile" ;; ! "sys/Makefile" ) CONFIG_FILES="$CONFIG_FILES sys/Makefile" ;; ! "utils/Makefile" ) CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;; ! "const/Makefile" ) CONFIG_FILES="$CONFIG_FILES const/Makefile" ;; ! "min/Makefile" ) CONFIG_FILES="$CONFIG_FILES min/Makefile" ;; ! "multimin/Makefile" ) CONFIG_FILES="$CONFIG_FILES multimin/Makefile" ;; ! "ieee-utils/Makefile" ) CONFIG_FILES="$CONFIG_FILES ieee-utils/Makefile" ;; ! "fft/Makefile" ) CONFIG_FILES="$CONFIG_FILES fft/Makefile" ;; ! "specfunc/Makefile" ) CONFIG_FILES="$CONFIG_FILES specfunc/Makefile" ;; ! "dht/Makefile" ) CONFIG_FILES="$CONFIG_FILES dht/Makefile" ;; ! "fit/Makefile" ) CONFIG_FILES="$CONFIG_FILES fit/Makefile" ;; ! "multifit/Makefile" ) CONFIG_FILES="$CONFIG_FILES multifit/Makefile" ;; ! "statistics/Makefile" ) CONFIG_FILES="$CONFIG_FILES statistics/Makefile" ;; ! "sum/Makefile" ) CONFIG_FILES="$CONFIG_FILES sum/Makefile" ;; ! "roots/Makefile" ) CONFIG_FILES="$CONFIG_FILES roots/Makefile" ;; ! "multiroots/Makefile" ) CONFIG_FILES="$CONFIG_FILES multiroots/Makefile" ;; ! "ntuple/Makefile" ) CONFIG_FILES="$CONFIG_FILES ntuple/Makefile" ;; ! "poly/Makefile" ) CONFIG_FILES="$CONFIG_FILES poly/Makefile" ;; ! "qrng/Makefile" ) CONFIG_FILES="$CONFIG_FILES qrng/Makefile" ;; ! "rng/Makefile" ) CONFIG_FILES="$CONFIG_FILES rng/Makefile" ;; ! "randist/Makefile" ) CONFIG_FILES="$CONFIG_FILES randist/Makefile" ;; ! "siman/Makefile" ) CONFIG_FILES="$CONFIG_FILES siman/Makefile" ;; ! "integration/Makefile" ) CONFIG_FILES="$CONFIG_FILES integration/Makefile" ;; ! "interpolation/Makefile" ) CONFIG_FILES="$CONFIG_FILES interpolation/Makefile" ;; ! "doc/Makefile" ) CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; ! "block/Makefile" ) CONFIG_FILES="$CONFIG_FILES block/Makefile" ;; ! "vector/Makefile" ) CONFIG_FILES="$CONFIG_FILES vector/Makefile" ;; ! "matrix/Makefile" ) CONFIG_FILES="$CONFIG_FILES matrix/Makefile" ;; ! "histogram/Makefile" ) CONFIG_FILES="$CONFIG_FILES histogram/Makefile" ;; ! "monte/Makefile" ) CONFIG_FILES="$CONFIG_FILES monte/Makefile" ;; ! "ode-initval/Makefile" ) CONFIG_FILES="$CONFIG_FILES ode-initval/Makefile" ;; ! "cblas/Makefile" ) CONFIG_FILES="$CONFIG_FILES cblas/Makefile" ;; ! "blas/Makefile" ) CONFIG_FILES="$CONFIG_FILES blas/Makefile" ;; ! "linalg/Makefile" ) CONFIG_FILES="$CONFIG_FILES linalg/Makefile" ;; ! "eigen/Makefile" ) CONFIG_FILES="$CONFIG_FILES eigen/Makefile" ;; ! "permutation/Makefile" ) CONFIG_FILES="$CONFIG_FILES permutation/Makefile" ;; ! "combination/Makefile" ) CONFIG_FILES="$CONFIG_FILES combination/Makefile" ;; ! "sort/Makefile" ) CONFIG_FILES="$CONFIG_FILES sort/Makefile" ;; ! "complex/Makefile" ) CONFIG_FILES="$CONFIG_FILES complex/Makefile" ;; ! "diff/Makefile" ) CONFIG_FILES="$CONFIG_FILES diff/Makefile" ;; ! "cheb/Makefile" ) CONFIG_FILES="$CONFIG_FILES cheb/Makefile" ;; ! "cdf/Makefile" ) CONFIG_FILES="$CONFIG_FILES cdf/Makefile" ;; ! "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; ! "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; ! *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 ! echo "$as_me: error: invalid argument: $ac_config_target" >&2;} ! { (exit 1); exit 1; }; };; ! esac ! done ! ! # If the user did not use the arguments to specify the items to instantiate, ! # then the envvar interface is used. Set only those that are not. ! # We use the long form for the default assignment because of an extremely ! # bizarre bug on SunOS 4.1.3. ! if $ac_need_defaults; then ! test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files ! test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers ! fi ! ! # Have a temporary directory for convenience. Make it in the build tree ! # simply because there is no reason to put it here, and in addition, ! # creating and moving files from /tmp can sometimes cause problems. ! # Create a temporary directory, and hook for its removal unless debugging. ! $debug || ! { ! trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ! trap '{ (exit 1); exit 1; }' 1 2 13 15 ! } ! ! # Create a (secure) tmp directory for tmp files. ! ! { ! tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && ! test -n "$tmp" && test -d "$tmp" ! } || ! { ! tmp=./confstat$$-$RANDOM ! (umask 077 && mkdir $tmp) ! } || ! { ! echo "$me: cannot create a temporary directory in ." >&2 ! { (exit 1); exit 1; } ! } ! ! _ACEOF ! ! cat >>$CONFIG_STATUS <<_ACEOF ! ! # ! # CONFIG_FILES section. ! # + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h + if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF + s,@SHELL@,$SHELL,;t t + s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t + s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t + s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t + s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t + s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t + s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t + s,@exec_prefix@,$exec_prefix,;t t + s,@prefix@,$prefix,;t t + s,@program_transform_name@,$program_transform_name,;t t + s,@bindir@,$bindir,;t t + s,@sbindir@,$sbindir,;t t + s,@libexecdir@,$libexecdir,;t t + s,@datadir@,$datadir,;t t + s,@sysconfdir@,$sysconfdir,;t t + s,@sharedstatedir@,$sharedstatedir,;t t + s,@localstatedir@,$localstatedir,;t t + s,@libdir@,$libdir,;t t + s,@includedir@,$includedir,;t t + s,@oldincludedir@,$oldincludedir,;t t + s,@infodir@,$infodir,;t t + s,@mandir@,$mandir,;t t + s,@build_alias@,$build_alias,;t t + s,@host_alias@,$host_alias,;t t + s,@target_alias@,$target_alias,;t t + s,@DEFS@,$DEFS,;t t + s,@ECHO_C@,$ECHO_C,;t t + s,@ECHO_N@,$ECHO_N,;t t + s,@ECHO_T@,$ECHO_T,;t t + s,@LIBS@,$LIBS,;t t + s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t + s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t + s,@INSTALL_DATA@,$INSTALL_DATA,;t t + s,@CYGPATH_W@,$CYGPATH_W,;t t + s,@PACKAGE@,$PACKAGE,;t t + s,@VERSION@,$VERSION,;t t + s,@ACLOCAL@,$ACLOCAL,;t t + s,@AUTOCONF@,$AUTOCONF,;t t + s,@AUTOMAKE@,$AUTOMAKE,;t t + s,@AUTOHEADER@,$AUTOHEADER,;t t + s,@MAKEINFO@,$MAKEINFO,;t t + s,@AMTAR@,$AMTAR,;t t + s,@install_sh@,$install_sh,;t t + s,@STRIP@,$STRIP,;t t + s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t + s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t + s,@AWK@,$AWK,;t t + s,@SET_MAKE@,$SET_MAKE,;t t + s,@am__leading_dot@,$am__leading_dot,;t t + s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t + s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t + s,@MAINT@,$MAINT,;t t + s,@GSL_LT_VERSION@,$GSL_LT_VERSION,;t t + s,@GSL_LT_CBLAS_VERSION@,$GSL_LT_CBLAS_VERSION,;t t + s,@RELEASED@,$RELEASED,;t t + s,@build@,$build,;t t + s,@build_cpu@,$build_cpu,;t t + s,@build_vendor@,$build_vendor,;t t + s,@build_os@,$build_os,;t t + s,@host@,$host,;t t + s,@host_cpu@,$host_cpu,;t t + s,@host_vendor@,$host_vendor,;t t + s,@host_os@,$host_os,;t t + s,@CC@,$CC,;t t + s,@CFLAGS@,$CFLAGS,;t t + s,@LDFLAGS@,$LDFLAGS,;t t + s,@CPPFLAGS@,$CPPFLAGS,;t t + s,@ac_ct_CC@,$ac_ct_CC,;t t + s,@EXEEXT@,$EXEEXT,;t t + s,@OBJEXT@,$OBJEXT,;t t + s,@CPP@,$CPP,;t t + s,@LN_S@,$LN_S,;t t + s,@RANLIB@,$RANLIB,;t t + s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t + s,@AR@,$AR,;t t + s,@ac_ct_AR@,$ac_ct_AR,;t t + s,@ECHO@,$ECHO,;t t + s,@EGREP@,$EGREP,;t t + s,@LIBTOOL@,$LIBTOOL,;t t + s,@GSL_CFLAGS@,$GSL_CFLAGS,;t t + s,@GSL_LIBS@,$GSL_LIBS,;t t + s,@HAVE_INLINE@,$HAVE_INLINE,;t t + s,@LIBOBJS@,$LIBOBJS,;t t + s,@HAVE_PRINTF_LONGDOUBLE@,$HAVE_PRINTF_LONGDOUBLE,;t t + s,@HAVE_EXTENDED_PRECISION_REGISTERS@,$HAVE_EXTENDED_PRECISION_REGISTERS,;t t + s,@HAVE_GNUSPARC_IEEE_INTERFACE@,$HAVE_GNUSPARC_IEEE_INTERFACE,;t t + s,@HAVE_GNUM68K_IEEE_INTERFACE@,$HAVE_GNUM68K_IEEE_INTERFACE,;t t + s,@HAVE_GNUPPC_IEEE_INTERFACE@,$HAVE_GNUPPC_IEEE_INTERFACE,;t t + s,@HAVE_GNUX86_IEEE_INTERFACE@,$HAVE_GNUX86_IEEE_INTERFACE,;t t + s,@HAVE_SUNOS4_IEEE_INTERFACE@,$HAVE_SUNOS4_IEEE_INTERFACE,;t t + s,@HAVE_SOLARIS_IEEE_INTERFACE@,$HAVE_SOLARIS_IEEE_INTERFACE,;t t + s,@HAVE_HPUX11_IEEE_INTERFACE@,$HAVE_HPUX11_IEEE_INTERFACE,;t t + s,@HAVE_HPUX_IEEE_INTERFACE@,$HAVE_HPUX_IEEE_INTERFACE,;t t + s,@HAVE_TRU64_IEEE_INTERFACE@,$HAVE_TRU64_IEEE_INTERFACE,;t t + s,@HAVE_IRIX_IEEE_INTERFACE@,$HAVE_IRIX_IEEE_INTERFACE,;t t + s,@HAVE_AIX_IEEE_INTERFACE@,$HAVE_AIX_IEEE_INTERFACE,;t t + s,@HAVE_FREEBSD_IEEE_INTERFACE@,$HAVE_FREEBSD_IEEE_INTERFACE,;t t + s,@HAVE_OS2EMX_IEEE_INTERFACE@,$HAVE_OS2EMX_IEEE_INTERFACE,;t t + s,@HAVE_NETBSD_IEEE_INTERFACE@,$HAVE_NETBSD_IEEE_INTERFACE,;t t + s,@HAVE_OPENBSD_IEEE_INTERFACE@,$HAVE_OPENBSD_IEEE_INTERFACE,;t t + s,@HAVE_DARWIN_IEEE_INTERFACE@,$HAVE_DARWIN_IEEE_INTERFACE,;t t + s,@HAVE_IEEE_COMPARISONS@,$HAVE_IEEE_COMPARISONS,;t t + s,@HAVE_IEEE_DENORMALS@,$HAVE_IEEE_DENORMALS,;t t + s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF ! _ACEOF ! cat >>$CONFIG_STATUS <<\_ACEOF ! # Split the substitutions into bite-sized pieces for seds with ! # small command number limits, like on Digital OSF/1 and HP-UX. ! ac_max_sed_lines=48 ! ac_sed_frag=1 # Number of current file. ! ac_beg=1 # First line for current file. ! ac_end=$ac_max_sed_lines # Line after last line for current file. ! ac_more_lines=: ! ac_sed_cmds= ! while $ac_more_lines; do ! if test $ac_beg -gt 1; then ! sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag ! else ! sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag ! fi ! if test ! -s $tmp/subs.frag; then ! ac_more_lines=false else ! # The purpose of the label and of the branching condition is to ! # speed up the sed processing (if there are no `@' at all, there ! # is no need to browse any of the substitutions). ! # These are the two extra sed commands mentioned above. ! (echo ':t ! /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed ! if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" ! else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" ! fi ! ac_sed_frag=`expr $ac_sed_frag + 1` ! ac_beg=$ac_end ! ac_end=`expr $ac_end + $ac_max_sed_lines` fi ! done ! if test -z "$ac_sed_cmds"; then ! ac_sed_cmds=cat fi ! fi # test -n "$CONFIG_FILES" ! _ACEOF ! cat >>$CONFIG_STATUS <<\_ACEOF ! for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ! case $ac_file in ! - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ! *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ! * ) ac_file_in=$ac_file.in ;; ! esac ! ! # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. ! ac_dir=`(dirname "$ac_file") 2>/dev/null || ! $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || ! echo X"$ac_file" | ! sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } ! /^X\(\/\/\)[^/].*/{ s//\1/; q; } ! /^X\(\/\/\)$/{ s//\1/; q; } ! /^X\(\/\).*/{ s//\1/; q; } ! s/.*/./; q'` ! { if $as_mkdir_p; then ! mkdir -p "$ac_dir" ! else ! as_dir="$ac_dir" ! as_dirs= ! while test ! -d "$as_dir"; do ! as_dirs="$as_dir $as_dirs" ! as_dir=`(dirname "$as_dir") 2>/dev/null || ! $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || ! echo X"$as_dir" | ! sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } ! /^X\(\/\/\)[^/].*/{ s//\1/; q; } ! /^X\(\/\/\)$/{ s//\1/; q; } ! /^X\(\/\).*/{ s//\1/; q; } ! s/.*/./; q'` ! done ! test ! -n "$as_dirs" || mkdir $as_dirs ! fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 ! echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ! { (exit 1); exit 1; }; }; } ! ! ac_builddir=. ! ! if test "$ac_dir" != .; then ! ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` ! # A "../" for each directory in $ac_dir_suffix. ! ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` ! else ! ac_dir_suffix= ac_top_builddir= ! fi ! ! case $srcdir in ! .) # No --srcdir option. We are building in place. ! ac_srcdir=. ! if test -z "$ac_top_builddir"; then ! ac_top_srcdir=. ! else ! ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` ! fi ;; ! [\\/]* | ?:[\\/]* ) # Absolute path. ! ac_srcdir=$srcdir$ac_dir_suffix; ! ac_top_srcdir=$srcdir ;; *) # Relative path. ! ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix ! ac_top_srcdir=$ac_top_builddir$srcdir ;; ! esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ! ! ! case $INSTALL in ! [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; ! *) ac_INSTALL=$ac_top_builddir$INSTALL ;; esac ! if test x"$ac_file" != x-; then ! { echo "$as_me:$LINENO: creating $ac_file" >&5 ! echo "$as_me: creating $ac_file" >&6;} ! rm -f "$ac_file" ! fi ! # Let's still pretend it is `configure' which instantiates (i.e., don't ! # use $as_me), people would be surprised to read: ! # /* config.h. Generated by config.status. */ ! if test x"$ac_file" = x-; then ! configure_input= ! else ! configure_input="$ac_file. " ! fi ! configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." ! ! # First look for the input files in the build tree, otherwise in the ! # src tree. ! ac_file_inputs=`IFS=: ! for f in $ac_file_in; do ! case $f in ! -) echo $tmp/stdin ;; ! [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ! echo "$as_me: error: cannot find input file: $f" >&2;} ! { (exit 1); exit 1; }; } ! echo $f;; ! *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ! echo "$as_me: error: cannot find input file: $f" >&2;} ! { (exit 1); exit 1; }; } ! fi;; ! esac ! done` || { (exit 1); exit 1; } ! _ACEOF ! cat >>$CONFIG_STATUS <<_ACEOF ! sed "$ac_vpsub ! $extrasub ! _ACEOF ! cat >>$CONFIG_STATUS <<\_ACEOF ! :t ! /@[a-zA-Z_][a-zA-Z_0-9]*@/!b ! s,@configure_input@,$configure_input,;t t ! s,@srcdir@,$ac_srcdir,;t t ! s,@abs_srcdir@,$ac_abs_srcdir,;t t ! s,@top_srcdir@,$ac_top_srcdir,;t t ! s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t ! s,@builddir@,$ac_builddir,;t t ! s,@abs_builddir@,$ac_abs_builddir,;t t ! s,@top_builddir@,$ac_top_builddir,;t t ! s,@abs_top_builddir@,$ac_abs_top_builddir,;t t ! s,@INSTALL@,$ac_INSTALL,;t t ! " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out ! rm -f $tmp/stdin ! if test x"$ac_file" != x-; then ! mv $tmp/out $ac_file ! else ! cat $tmp/out ! rm -f $tmp/out ! fi ! ! done ! _ACEOF ! cat >>$CONFIG_STATUS <<\_ACEOF ! ! # ! # CONFIG_HEADER section. ! # # These sed commands are passed to sed as "A NAME B NAME C VALUE D", where *************** *** 8130,8263 **** # # ac_d sets the value in "#define NAME VALUE" lines. ! ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' ! ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' ! ac_dC='\3' ! ac_dD='%g' ! # ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". ! ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ! ac_uB='\([ ]\)%\1#\2define\3' ac_uC=' ' ! ac_uD='\4%g' ! # ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ! ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ! ac_eB='$%\1#\2define\3' ! ac_eC=' ' ! ac_eD='%g' ! if test "${CONFIG_HEADERS+set}" != set; then ! EOF ! cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF ! fi ! for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". ! case "$ac_file" in ! *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ! ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; ! *) ac_file_in="${ac_file}.in" ;; esac ! echo creating $ac_file ! rm -f conftest.frag conftest.in conftest.out ! ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` ! cat $ac_file_inputs > conftest.in ! ! EOF ! ! # Transform confdefs.h into a sed script conftest.vals that substitutes ! # the proper values into config.h.in to produce config.h. And first: ! # Protect against being on the right side of a sed subst in config.status. ! # Protect against being in an unquoted here document in config.status. ! rm -f conftest.vals ! cat > conftest.hdr <<\EOF ! s/[\\&%]/\\&/g ! s%[\\$`]%\\&%g ! s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp ! s%ac_d%ac_u%gp ! s%ac_u%ac_e%gp ! EOF ! sed -n -f conftest.hdr confdefs.h > conftest.vals ! rm -f conftest.hdr # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. ! cat >> conftest.vals <<\EOF ! s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% ! EOF ! ! # Break up conftest.vals because some shells have a limit on ! # the size of here documents, and old seds have small limits too. ! rm -f conftest.tail ! while : do ! ac_lines=`grep -c . conftest.vals` ! # grep -c gives empty output for an empty file on some AIX systems. ! if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi ! # Write a limited-size here document to conftest.frag. ! echo ' cat > conftest.frag <> $CONFIG_STATUS ! sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS echo 'CEOF ! sed -f conftest.frag conftest.in > conftest.out ! rm -f conftest.in ! mv conftest.out conftest.in ! ' >> $CONFIG_STATUS ! sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail ! rm -f conftest.vals ! mv conftest.tail conftest.vals ! done ! rm -f conftest.vals ! ! cat >> $CONFIG_STATUS <<\EOF ! rm -f conftest.frag conftest.h ! echo "/* $ac_file. Generated automatically by configure. */" > conftest.h ! cat conftest.in >> conftest.h ! rm -f conftest.in ! if cmp -s $ac_file conftest.h 2>/dev/null; then ! echo "$ac_file is unchanged" ! rm -f conftest.h ! else ! # Remove last slash and all that follows it. Not all systems have dirname. ! ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` ! if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then ! # The file is in a subdirectory. ! test ! -d "$ac_dir" && mkdir "$ac_dir" ! fi ! rm -f $ac_file ! mv conftest.h $ac_file ! fi ! fi; done ! EOF ! cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF ! test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h ! exit 0 ! EOF chmod +x $CONFIG_STATUS ! rm -fr confdefs* $ac_clean_files ! test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 ! case "$host" in ! *-*-os2_emx) ! cat <$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ! *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ! * ) ac_file_in=$ac_file.in ;; esac ! test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 ! echo "$as_me: creating $ac_file" >&6;} ! # First look for the input files in the build tree, otherwise in the ! # src tree. ! ac_file_inputs=`IFS=: ! for f in $ac_file_in; do ! case $f in ! -) echo $tmp/stdin ;; ! [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ! echo "$as_me: error: cannot find input file: $f" >&2;} ! { (exit 1); exit 1; }; } ! echo $f;; ! *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ! echo "$as_me: error: cannot find input file: $f" >&2;} ! { (exit 1); exit 1; }; } ! fi;; ! esac ! done` || { (exit 1); exit 1; } ! # Remove the trailing spaces. ! sed 's/[ ]*$//' $ac_file_inputs >$tmp/in ! ! _ACEOF ! ! # Transform confdefs.h into two sed scripts, `conftest.defines' and ! # `conftest.undefs', that substitutes the proper values into ! # config.h.in to produce config.h. The first handles `#define' ! # templates, and the second `#undef' templates. ! # And first: Protect against being on the right side of a sed subst in ! # config.status. Protect against being in an unquoted here document ! # in config.status. ! rm -f conftest.defines conftest.undefs ! # Using a here document instead of a string reduces the quoting nightmare. ! # Putting comments in sed scripts is not portable. ! # ! # `end' is used to avoid that the second main sed command (meant for ! # 0-ary CPP macros) applies to n-ary macro definitions. ! # See the Autoconf documentation for `clear'. ! cat >confdef2sed.sed <<\_ACEOF ! s/[\\&,]/\\&/g ! s,[\\$`],\\&,g ! t clear ! : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp ! t end ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp ! : end ! _ACEOF ! # If some macros were called several times there might be several times ! # the same #defines, which is useless. Nevertheless, we may not want to ! # sort them, since we want the *last* AC-DEFINE to be honored. ! uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines ! sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs ! rm -f confdef2sed.sed # This sed command replaces #undef with comments. This is necessary, for # example, in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. ! cat >>conftest.undefs <<\_ACEOF ! s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, ! _ACEOF ! ! # Break up conftest.defines because some shells have a limit on the size ! # of here documents, and old seds have small limits too (100 cmds). ! echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS ! echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS ! echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS ! echo ' :' >>$CONFIG_STATUS rm -f conftest.tail ! while grep . conftest.defines >/dev/null do ! # Write a limited-size here document to $tmp/defines.sed. ! echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS ! # Speed up: don't consider the non `#define' lines. ! echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS ! # Work around the forget-to-reset-the-flag bug. ! echo 't clr' >>$CONFIG_STATUS ! echo ': clr' >>$CONFIG_STATUS ! sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF ! sed -f $tmp/defines.sed $tmp/in >$tmp/out ! rm -f $tmp/in ! mv $tmp/out $tmp/in ! ' >>$CONFIG_STATUS ! sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail ! rm -f conftest.defines ! mv conftest.tail conftest.defines ! done ! rm -f conftest.defines ! echo ' fi # grep' >>$CONFIG_STATUS ! echo >>$CONFIG_STATUS ! ! # Break up conftest.undefs because some shells have a limit on the size ! # of here documents, and old seds have small limits too (100 cmds). ! echo ' # Handle all the #undef templates' >>$CONFIG_STATUS ! rm -f conftest.tail ! while grep . conftest.undefs >/dev/null ! do ! # Write a limited-size here document to $tmp/undefs.sed. ! echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS ! # Speed up: don't consider the non `#undef' ! echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS ! # Work around the forget-to-reset-the-flag bug. ! echo 't clr' >>$CONFIG_STATUS ! echo ': clr' >>$CONFIG_STATUS ! sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS ! echo 'CEOF ! sed -f $tmp/undefs.sed $tmp/in >$tmp/out ! rm -f $tmp/in ! mv $tmp/out $tmp/in ! ' >>$CONFIG_STATUS ! sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail ! rm -f conftest.undefs ! mv conftest.tail conftest.undefs ! done ! rm -f conftest.undefs ! cat >>$CONFIG_STATUS <<\_ACEOF ! # Let's still pretend it is `configure' which instantiates (i.e., don't ! # use $as_me), people would be surprised to read: ! # /* config.h. Generated by config.status. */ ! if test x"$ac_file" = x-; then ! echo "/* Generated by configure. */" >$tmp/config.h ! else ! echo "/* $ac_file. Generated by configure. */" >$tmp/config.h ! fi ! cat $tmp/in >>$tmp/config.h ! rm -f $tmp/in ! if test x"$ac_file" != x-; then ! if diff $ac_file $tmp/config.h >/dev/null 2>&1; then ! { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 ! echo "$as_me: $ac_file is unchanged" >&6;} ! else ! ac_dir=`(dirname "$ac_file") 2>/dev/null || ! $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || ! echo X"$ac_file" | ! sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } ! /^X\(\/\/\)[^/].*/{ s//\1/; q; } ! /^X\(\/\/\)$/{ s//\1/; q; } ! /^X\(\/\).*/{ s//\1/; q; } ! s/.*/./; q'` ! { if $as_mkdir_p; then ! mkdir -p "$ac_dir" ! else ! as_dir="$ac_dir" ! as_dirs= ! while test ! -d "$as_dir"; do ! as_dirs="$as_dir $as_dirs" ! as_dir=`(dirname "$as_dir") 2>/dev/null || ! $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || ! echo X"$as_dir" | ! sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } ! /^X\(\/\/\)[^/].*/{ s//\1/; q; } ! /^X\(\/\/\)$/{ s//\1/; q; } ! /^X\(\/\).*/{ s//\1/; q; } ! s/.*/./; q'` ! done ! test ! -n "$as_dirs" || mkdir $as_dirs ! fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 ! echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ! { (exit 1); exit 1; }; }; } + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi + # Compute $ac_file's index in $config_headers. + _am_stamp_count=1 + for _am_header in $config_headers :; do + case $_am_header in + $ac_file | $ac_file:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac + done + echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || + $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || + echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count + done + _ACEOF ! cat >>$CONFIG_STATUS <<\_ACEOF ! { (exit 0); exit 0; } ! _ACEOF chmod +x $CONFIG_STATUS ! ac_clean_files=$ac_clean_files_save ! # configure is writing to config.log, and then calls config.status. ! # config.status does its own redirection, appending to config.log. ! # Unfortunately, on DOS this fails, as config.log is still kept open ! # by configure, so config.status won't be able to write to it; its ! # output is simply discarded. So we exec the FD to /dev/null, ! # effectively closing config.log, so it can be properly (re)opened and ! # appended to by config.status. When coming back to configure, we ! # need to make the FD available again. ! if test "$no_create" != yes; then ! ac_cs_success=: ! ac_config_status_args= ! test "$silent" = yes && ! ac_config_status_args="$ac_config_status_args --quiet" ! exec 5>/dev/null ! $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false ! exec 5>>config.log ! # Use ||, not &&, to avoid exiting from the if with $? = 1, which ! # would make configure fail if this is the last instruction. ! $ac_cs_success || { (exit 1); exit 1; } ! fi ! diff -x.info* -rc2P gsl-1.3/configure.ac gsl-1.4/configure.ac *** gsl-1.3/configure.ac Thu Jan 1 00:00:00 1970 --- gsl-1.4/configure.ac Thu Aug 14 11:38:44 2003 *************** *** 0 **** --- 1,366 ---- + dnl Process this file with autoconf to produce a configure script. + + AC_INIT(gsl,1.4) + AC_CONFIG_SRCDIR(gsl_math.h) + + AM_INIT_AUTOMAKE([gnu no-dependencies]) + AM_CONFIG_HEADER(config.h) + AM_MAINTAINER_MODE + + dnl Library versioning (current:revision:age) + dnl See the libtool manual for an explanation of the numbers + dnl + dnl gsl-1.0 libgsl 0:0:0 libgslcblas 0:0:0 + dnl gsl-1.1 libgsl 1:0:1 libgslcblas 0:0:0 + dnl gsl-1.1.1 libgsl 2:0:2 libgslcblas 0:0:0 + dnl gsl-1.2 libgsl 3:0:3 libgslcblas 0:0:0 + dnl gsl-1.3 libgsl 4:0:4 libgslcblas 0:0:0 + dnl gsl-1.4 libgsl 5:0:5 libgslcblas 0:0:0 + + GSL_LT_VERSION="5:0:5" + AC_SUBST(GSL_LT_VERSION) + GSL_LT_CBLAS_VERSION="0:0:0" + AC_SUBST(GSL_LT_CBLAS_VERSION) + + case "$VERSION" in + *+) + AC_DEFINE(RELEASED,0) + ;; + *) + AC_DEFINE(RELEASED,1) + ;; + esac + AC_SUBST(RELEASED) + + dnl things required by automake + dnl AC_ARG_PROGRAM + AC_PROG_MAKE_SET + + dnl Check for which system. + AC_CANONICAL_HOST + + dnl Checks for programs. + AC_LANG(C) + AC_PROG_CC + AC_PROG_CPP + AC_PROG_INSTALL + AC_PROG_LN_S + AC_CHECK_TOOL(RANLIB, ranlib, :) + AC_CHECK_TOOL(AR, ar, :) + #AC_PROG_RANLIB + AC_PROG_LIBTOOL + + dnl Check compiler features + AC_TYPE_SIZE_T + dnl AC_C_CONST + AC_C_VOLATILE + AC_C_INLINE + + GSL_CFLAGS="-I$includedir" + GSL_LIBS="-L$libdir -lgsl" + + AC_SUBST(GSL_CFLAGS) + AC_SUBST(GSL_LIBS) + + dnl Check for "extern inline", using a modified version of the test + dnl for AC_C_INLINE from acspecific.mt + dnl + AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, + [ac_cv_c_extern_inline=no + AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); + extern $ac_cv_c_inline double foo(double x) { return x + 1.0 ; } ; + double foo (double x) { return x + 1.0 ; };], + [ foo(1.0) ], + [ac_cv_c_extern_inline="yes"]) + ]) + + if test "$ac_cv_c_extern_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + + dnl Checks for header files. + + dnl Checks for typedefs, structures, and compiler characteristics. + + dnl Checks for library functions. + + dnl AC_FUNC_ALLOCA + AC_FUNC_VPRINTF + + dnl strcasecmp, strerror, xmalloc, xrealloc, probably others should be added. + dnl removed strerror from this list, it's hardcoded in the err/ directory + dnl Any functions which appear in this list of functions should be provided + dnl in the utils/ directory + dnl xmalloc is not used, removed (bjg) + AC_REPLACE_FUNCS(memcpy memmove strdup strtol strtoul) + + AC_CACHE_CHECK(for EXIT_SUCCESS and EXIT_FAILURE, + ac_cv_decl_exit_success_and_failure, + AC_EGREP_CPP(yes, + [ + #include + #ifdef EXIT_SUCCESS + yes + #endif + ], + ac_cv_decl_exit_success_and_failure=yes, + ac_cv_decl_exit_success_and_failure=no) + ) + + if test "$ac_cv_decl_exit_success_and_failure" = yes ; then + AC_DEFINE(HAVE_EXIT_SUCCESS_AND_FAILURE) + fi ; + + dnl Use alternate libm if specified by user + + if test "x$LIBS" = "x" ; then + AC_CHECK_LIB(m, cos) + fi + + dnl Remember to put a definition in acconfig.h for each of these + AC_CHECK_DECLS(feenableexcept,,,[#include ]) + AC_CHECK_DECLS(fesettrapenable,,,[#include ]) + AC_CHECK_DECLS(hypot,,,[#include ]) + AC_CHECK_DECLS(expm1,,,[#include ]) + AC_CHECK_DECLS(acosh,,,[#include ]) + AC_CHECK_DECLS(asinh,,,[#include ]) + AC_CHECK_DECLS(atanh,,,[#include ]) + AC_CHECK_DECLS(ldexp,,,[#include ]) + AC_CHECK_DECLS(frexp,,,[#include ]) + AC_CHECK_DECLS(isinf,,,[#include ]) + AC_CHECK_DECLS(finite,,,[#include ]) + AC_CHECK_DECLS(isfinite,,,[#include ]) + AC_CHECK_DECLS(isnan,,,[#include ]) + + dnl OpenBSD has a broken implementation of log1p. + case "$host" in + *-*-*openbsd*) + AC_MSG_RESULT([avoiding OpenBSD system log1p - using gsl version]) + ;; + *) + AC_CHECK_DECLS(log1p,,,[#include ]) + ;; + esac + + AC_CACHE_CHECK([for long double stdio], ac_cv_func_printf_longdouble, + [AC_TRY_RUN([ + #include + #include + int main (void) + { + const char * s = "5678"; long double x = 1.234 ; + fprintf(stderr,"%Lg\n",x) ; + sscanf(s, "%Lg", &x); + if (x == 5678) {exit (0);} else {exit(1); }; + }], + ac_cv_func_printf_longdouble="yes", + ac_cv_func_printf_longdouble="no", + ac_cv_func_printf_longdouble="no")]) + + if test "$ac_cv_func_printf_longdouble" != no; then + AC_DEFINE(HAVE_PRINTF_LONGDOUBLE,1) + AC_SUBST(HAVE_PRINTF_LONGDOUBLE) + fi + + AC_CACHE_CHECK([for extended floating point registers],ac_cv_c_extended_fp, + [case "$host" in + *sparc*-*-*) + ac_cv_c_extended_fp=no + ;; + *powerpc*-*-*) + ac_cv_c_extended_fp=no + ;; + *hppa*-*-*) + ac_cv_c_extended_fp=no + ;; + *alpha*-*-*) + ac_cv_c_extended_fp=no + ;; + *68k*-*-*) + ac_cv_c_extended_fp=yes + ;; + *86*-*-*) + ac_cv_c_extended_fp=yes + ;; + *) + ac_cv_c_extended_fp=unknown + ;; + esac + ]) + + if test $ac_cv_c_extended_fp != "no" ; then + AC_DEFINE(HAVE_EXTENDED_PRECISION_REGISTERS,1) + AC_SUBST(HAVE_EXTENDED_PRECISION_REGISTERS) + fi + + AC_CACHE_CHECK([for IEEE arithmetic interface type], ac_cv_c_ieee_interface, + [case "$host" in + sparc-*-linux*) + ac_cv_c_ieee_interface=gnusparc + ;; + m68k-*-linux*) + ac_cv_c_ieee_interface=gnum68k + ;; + powerpc-*-linux*) + ac_cv_c_ieee_interface=gnuppc + ;; + *86-*-linux*) + ac_cv_c_ieee_interface=gnux86 + ;; + *-*-sunos4*) + ac_cv_c_ieee_interface=sunos4 + ;; + *-*-solaris*) + ac_cv_c_ieee_interface=solaris + ;; + *-*-hpux11*) + ac_cv_c_ieee_interface=hpux11 + ;; + *-*-hpux*) + ac_cv_c_ieee_interface=hpux + ;; + *-*-osf*) + ac_cv_c_ieee_interface=tru64 + ;; + *-*-aix*) + ac_cv_c_ieee_interface=aix + ;; + *-*-irix*) + ac_cv_c_ieee_interface=irix + ;; + *-*-*darwin*) + ac_cv_c_ieee_interface=darwin + ;; + *-*-*netbsd*) + ac_cv_c_ieee_interface=netbsd + ;; + *-*-*openbsd*) + ac_cv_c_ieee_interface=openbsd + ;; + *-*-*bsd*) + ac_cv_c_ieee_interface=freebsd + ;; + *-*-os2*) + ac_cv_c_ieee_interface=os2emx + ;; + *) + ac_cv_c_ieee_interface=unknown + ;; + esac + ]) + + if test "$ac_cv_c_ieee_interface" = "gnux86" ; then + AC_CACHE_CHECK([for FPU_SETCW], ac_cv_c_fpu_setcw, + [ac_cv_c_fpu_setcw=no + AC_TRY_COMPILE([#include + #ifndef _FPU_SETCW + #include + #define _FPU_SETCW(cw) __setfpucw(cw) + #endif + ], [ unsigned short mode = 0 ; _FPU_SETCW(mode); ], + [ac_cv_c_fpu_setcw="yes"],[ac_cv_c_ieee_interface=unknown]) + ]) + fi + + ac_tr_ieee_interface=HAVE_`echo $ac_cv_c_ieee_interface | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_IEEE_INTERFACE + AC_DEFINE_UNQUOTED($ac_tr_ieee_interface,1,[IEEE Interface Type]) + + AC_SUBST(HAVE_GNUSPARC_IEEE_INTERFACE) + AC_SUBST(HAVE_GNUM68K_IEEE_INTERFACE) + AC_SUBST(HAVE_GNUPPC_IEEE_INTERFACE) + AC_SUBST(HAVE_GNUX86_IEEE_INTERFACE) + AC_SUBST(HAVE_SUNOS4_IEEE_INTERFACE) + AC_SUBST(HAVE_SOLARIS_IEEE_INTERFACE) + AC_SUBST(HAVE_HPUX11_IEEE_INTERFACE) + AC_SUBST(HAVE_HPUX_IEEE_INTERFACE) + AC_SUBST(HAVE_TRU64_IEEE_INTERFACE) + AC_SUBST(HAVE_IRIX_IEEE_INTERFACE) + AC_SUBST(HAVE_AIX_IEEE_INTERFACE) + AC_SUBST(HAVE_FREEBSD_IEEE_INTERFACE) + AC_SUBST(HAVE_OS2EMX_IEEE_INTERFACE) + AC_SUBST(HAVE_NETBSD_IEEE_INTERFACE) + AC_SUBST(HAVE_OPENBSD_IEEE_INTERFACE) + AC_SUBST(HAVE_DARWIN_IEEE_INTERFACE) + + + + dnl Check for IEEE control flags + + save_cflags="$CFLAGS" + AC_CACHE_CHECK([for IEEE compiler flags], ac_cv_c_ieee_flags, + [ + case "$host" in + alpha*-*-*) + if test X"$GCC" = Xyes ; then + ieee_flags='-mieee -mfp-rounding-mode=d' + else + # This assumes Compaq's C compiler. + ieee_flags='-ieee -fprm d' + fi + ;; + esac + if test X"$ieee_flags" != X ; then + CFLAGS="$ieee_flags $CFLAGS" + AC_TRY_COMPILE(,[int foo;], + ac_cv_c_ieee_flags="$ieee_flags", + ac_cv_c_ieee_flags="none") + else + ac_cv_c_ieee_flags="none" + fi]) + + if test "$ac_cv_c_ieee_flags" != "none" ; then + CFLAGS="$ac_cv_c_ieee_flags $save_cflags" + else + CFLAGS="$save_cflags" + fi + + dnl Check IEEE comparisons, whether "x != x" is true for NaNs + dnl + AC_CACHE_CHECK([for IEEE comparisons], ac_cv_c_ieee_comparisons, + [AC_TRY_RUN([ + #include + int main (void) + { + int status; double inf, nan; + inf = exp(1.0e10); + nan = inf / inf ; + status = (nan == nan); + exit (status); + }], + ac_cv_c_ieee_comparisons="yes", + ac_cv_c_ieee_comparisons="no", + ac_cv_c_ieee_comparisons="yes") + ]) + + if test "$ac_cv_c_ieee_comparisons" != no ; then + AC_DEFINE(HAVE_IEEE_COMPARISONS,1) + AC_SUBST(HAVE_IEEE_COMPARISONS) + fi + + dnl Check for IEEE denormalized arithmetic + dnl + AC_CACHE_CHECK([for IEEE denormalized values], ac_cv_c_ieee_denormals, + [AC_TRY_RUN([ + #include + int main (void) + { + int i, status; + volatile double z = 1e-308; + for (i = 0; i < 5; i++) { z = z / 10.0 ; }; + for (i = 0; i < 5; i++) { z = z * 10.0 ; }; + status = (z == 0.0); + exit (status); + }], + ac_cv_c_ieee_denormals="yes", + ac_cv_c_ieee_denormals="no", + ac_cv_c_ieee_denormals="yes") + ]) + + if test "$ac_cv_c_ieee_denormals" != no ; then + AC_DEFINE(HAVE_IEEE_DENORMALS,1) + AC_SUBST(HAVE_IEEE_DENORMALS) + fi + + dnl + AC_OUTPUT(gsl-config gsl.pc gsl_version.h gsl.spec gsl/Makefile test/Makefile err/Makefile sys/Makefile utils/Makefile const/Makefile min/Makefile multimin/Makefile ieee-utils/Makefile fft/Makefile specfunc/Makefile dht/Makefile fit/Makefile multifit/Makefile statistics/Makefile sum/Makefile roots/Makefile multiroots/Makefile ntuple/Makefile poly/Makefile qrng/Makefile rng/Makefile randist/Makefile siman/Makefile integration/Makefile interpolation/Makefile doc/Makefile block/Makefile vector/Makefile matrix/Makefile histogram/Makefile monte/Makefile ode-initval/Makefile cblas/Makefile blas/Makefile linalg/Makefile eigen/Makefile permutation/Makefile combination/Makefile sort/Makefile complex/Makefile diff/Makefile cheb/Makefile cdf/Makefile Makefile) Only in gsl-1.3: configure.in diff -x.info* -rc2P gsl-1.3/const/ChangeLog gsl-1.4/const/ChangeLog *** gsl-1.3/const/ChangeLog Sat Jul 20 20:26:21 2002 --- gsl-1.4/const/ChangeLog Mon Jun 9 17:29:56 2003 *************** *** 1,2 **** --- 1,7 ---- + 2003-06-09 Brian Gough + + * calc-units-update.el: changed to use MKSA and CGSM units, so + that electromagnetic constants are converted correctly + Sat Jul 20 21:25:56 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/const/Makefile.am gsl-1.4/const/Makefile.am *** gsl-1.3/const/Makefile.am Tue Jan 23 16:19:11 2001 --- gsl-1.4/const/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 1,3 **** ! pkginclude_HEADERS = gsl_const.h gsl_const_cgs.h gsl_const_mks.h gsl_const_num.h check_PROGRAMS = #demo --- 1,3 ---- ! pkginclude_HEADERS = gsl_const.h gsl_const_cgsm.h gsl_const_mksa.h gsl_const_num.h check_PROGRAMS = #demo diff -x.info* -rc2P gsl-1.3/const/Makefile.in gsl-1.4/const/Makefile.in *** gsl-1.3/const/Makefile.in Wed Dec 18 22:36:51 2002 --- gsl-1.4/const/Makefile.in Thu Aug 14 12:31:14 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,216 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! ! pkginclude_HEADERS = gsl_const.h gsl_const_cgs.h gsl_const_mks.h gsl_const_num.h check_PROGRAMS = #demo - #demo_SOURCES = demo.c INCLUDES = -I$(top_builddir) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! check_PROGRAMS = ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - TAR = tar - GZIP_ENV = --best - all: all-redirect .SUFFIXES: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps const/Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-checkPROGRAMS: clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! distclean-checkPROGRAMS: ! maintainer-clean-checkPROGRAMS: install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! ! subdir = const distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - demo.o: demo.c ../gsl/gsl_const_mks.h - - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 60,314 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ ! pkginclude_HEADERS = gsl_const.h gsl_const_cgsm.h gsl_const_mksa.h gsl_const_num.h check_PROGRAMS = #demo + #demo_SOURCES = demo.c INCLUDES = -I$(top_builddir) + subdir = const + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! check_PROGRAMS = ! depcomp = ! am__depfiles_maybe = ! DIST_SOURCES = ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO ! all: all-am .SUFFIXES: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu const/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! mostlyclean-libtool: ! -rm -f *.lo ! clean-libtool: ! -rm -rf .libs _libs + distclean-libtool: + -rm -f libtool + uninstall-info-am: + pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) check: check-am ! all-am: Makefile $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 219,258 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-checkPROGRAMS mostlyclean-tags \ ! mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-checkPROGRAMS clean-tags clean-generic mostlyclean-am ! clean: clean-am ! distclean-am: distclean-checkPROGRAMS distclean-tags distclean-generic \ ! clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-checkPROGRAMS \ ! maintainer-clean-tags maintainer-clean-generic \ ! distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-checkPROGRAMS distclean-checkPROGRAMS \ ! clean-checkPROGRAMS maintainer-clean-checkPROGRAMS \ ! uninstall-pkgincludeHEADERS install-pkgincludeHEADERS tags \ ! mostlyclean-tags distclean-tags clean-tags maintainer-clean-tags \ ! distdir info-am info dvi-am dvi check check-am installcheck-am \ ! installcheck install-exec-am install-exec install-data-am install-data \ ! install-am install uninstall-am uninstall all-redirect all-am all \ ! installdirs mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 317,379 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-generic distclean-libtool \ ! distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-generic mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-checkPROGRAMS \ + clean-generic clean-libtool ctags distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-am install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-pkgincludeHEADERS install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-info-am uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/const/TODO gsl-1.4/const/TODO *** gsl-1.3/const/TODO Thu Jan 1 00:00:00 1970 --- gsl-1.4/const/TODO Thu Jul 31 13:12:25 2003 *************** *** 0 **** --- 1,32 ---- + From: Juho Schultz + Sender: bug-gsl-bounces+bjg=network-theory.co.uk@gnu.org + To: bug-gsl@gnu.org + Subject: [Bug-gsl] Missing constants + Date: Tue, 29 Jul 2003 16:43:16 +0300 (EEST) + + Dear sirs, + + Thomson cross section and radiation density constant could be added to + const/gsl_const_mks.h + + #define GSL_CONST_MKS_THOMSON_CROSS_SECTION (6.6524585e-29) /* m^2 */ + #define GSL_CONTS_MKS_RADIATION_DENSITY_CONSTANT (7.56591e-16) /* J m-3 K-4 */ + + feel free to cut-and paste these to the sources. + + Juho Schultz + + e-mail: juho.schultz@astro.helsinki.fi + www.astro.helsinki.fi/~jschultz + Observatory + P.O. Box 14 + FIN-00014 University of Helsinki + FINLAND + + + + + _______________________________________________ + Bug-gsl mailing list + Bug-gsl@gnu.org + http://mail.gnu.org/mailman/listinfo/bug-gsl Only in gsl-1.3/const: gsl_const_cgs.h diff -x.info* -rc2P gsl-1.3/const/gsl_const_cgsm.h gsl-1.4/const/gsl_const_cgsm.h *** gsl-1.3/const/gsl_const_cgsm.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/const/gsl_const_cgsm.h Fri Jul 25 15:18:18 2003 *************** *** 0 **** --- 1,120 ---- + /* const/gsl_const_cgsm.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #ifndef __GSL_CONST_CGSM__ + #define __GSL_CONST_CGSM__ + + #define GSL_CONST_CGSM_SPEED_OF_LIGHT (2.99792458e10) /* cm / s */ + #define GSL_CONST_CGSM_GRAVITATIONAL_CONSTANT (6.673e-8) /* cm^3 / g s^2 */ + #define GSL_CONST_CGSM_PLANCKS_CONSTANT_H (6.62606876e-27) /* g cm^2 / s */ + #define GSL_CONST_CGSM_PLANCKS_CONSTANT_HBAR (1.05457159642e-27) /* g cm^2 / s */ + #define GSL_CONST_CGSM_ASTRONOMICAL_UNIT (1.49597870691e13) /* cm */ + #define GSL_CONST_CGSM_LIGHT_YEAR (9.46053620707e17) /* cm */ + #define GSL_CONST_CGSM_PARSEC (3.08567758135e18) /* cm */ + #define GSL_CONST_CGSM_GRAV_ACCEL (9.80665e2) /* cm / s^2 */ + #define GSL_CONST_CGSM_ELECTRON_VOLT (1.602176462e-12) /* g cm^2 / s^2 */ + #define GSL_CONST_CGSM_MASS_ELECTRON (9.10938188e-28) /* g */ + #define GSL_CONST_CGSM_MASS_MUON (1.88353109e-25) /* g */ + #define GSL_CONST_CGSM_MASS_PROTON (1.67262158e-24) /* g */ + #define GSL_CONST_CGSM_MASS_NEUTRON (1.67492716e-24) /* g */ + #define GSL_CONST_CGSM_RYDBERG (2.17987190389e-11) /* g cm^2 / s^2 */ + #define GSL_CONST_CGSM_BOLTZMANN (1.3806503e-16) /* g cm^2 / K s^2 */ + #define GSL_CONST_CGSM_BOHR_MAGNETON (9.27400899e-21) /* abamp cm^2 */ + #define GSL_CONST_CGSM_NUCLEAR_MAGNETON (5.05078317e-24) /* abamp cm^2 */ + #define GSL_CONST_CGSM_ELECTRON_MAGNETIC_MOMENT (9.28476362e-21) /* abamp cm^2 */ + #define GSL_CONST_CGSM_PROTON_MAGNETIC_MOMENT (1.410606633e-23) /* abamp cm^2 */ + #define GSL_CONST_CGSM_MOLAR_GAS (8.314472e7) /* g cm^2 / K mol s^2 */ + #define GSL_CONST_CGSM_STANDARD_GAS_VOLUME (2.2710981e4) /* cm^3 / mol */ + #define GSL_CONST_CGSM_MINUTE (6e1) /* s */ + #define GSL_CONST_CGSM_HOUR (3.6e3) /* s */ + #define GSL_CONST_CGSM_DAY (8.64e4) /* s */ + #define GSL_CONST_CGSM_WEEK (6.048e5) /* s */ + #define GSL_CONST_CGSM_INCH (2.54e0) /* cm */ + #define GSL_CONST_CGSM_FOOT (3.048e1) /* cm */ + #define GSL_CONST_CGSM_YARD (9.144e1) /* cm */ + #define GSL_CONST_CGSM_MILE (1.609344e5) /* cm */ + #define GSL_CONST_CGSM_NAUTICAL_MILE (1.852e5) /* cm */ + #define GSL_CONST_CGSM_FATHOM (1.8288e2) /* cm */ + #define GSL_CONST_CGSM_MIL (2.54e-3) /* cm */ + #define GSL_CONST_CGSM_POINT (3.52777777778e-2) /* cm */ + #define GSL_CONST_CGSM_TEXPOINT (3.51459803515e-2) /* cm */ + #define GSL_CONST_CGSM_MICRON (1e-4) /* cm */ + #define GSL_CONST_CGSM_ANGSTROM (1e-8) /* cm */ + #define GSL_CONST_CGSM_HECTARE (1e8) /* cm^2 */ + #define GSL_CONST_CGSM_ACRE (4.04685642241e7) /* cm^2 */ + #define GSL_CONST_CGSM_BARN (1e-24) /* cm^2 */ + #define GSL_CONST_CGSM_LITER (1e3) /* cm^3 */ + #define GSL_CONST_CGSM_US_GALLON (3.78541178402e3) /* cm^3 */ + #define GSL_CONST_CGSM_QUART (9.46352946004e2) /* cm^3 */ + #define GSL_CONST_CGSM_PINT (4.73176473002e2) /* cm^3 */ + #define GSL_CONST_CGSM_CUP (2.36588236501e2) /* cm^3 */ + #define GSL_CONST_CGSM_FLUID_OUNCE (2.95735295626e1) /* cm^3 */ + #define GSL_CONST_CGSM_TABLESPOON (1.47867647813e1) /* cm^3 */ + #define GSL_CONST_CGSM_TEASPOON (4.92892159375e0) /* cm^3 */ + #define GSL_CONST_CGSM_CANADIAN_GALLON (4.54609e3) /* cm^3 */ + #define GSL_CONST_CGSM_UK_GALLON (4.546092e3) /* cm^3 */ + #define GSL_CONST_CGSM_MILES_PER_HOUR (4.4704e1) /* cm / s */ + #define GSL_CONST_CGSM_KILOMETERS_PER_HOUR (2.77777777778e1) /* cm / s */ + #define GSL_CONST_CGSM_KNOT (5.14444444444e1) /* cm / s */ + #define GSL_CONST_CGSM_POUND_MASS (4.5359237e2) /* g */ + #define GSL_CONST_CGSM_OUNCE_MASS (2.8349523125e1) /* g */ + #define GSL_CONST_CGSM_TON (9.0718474e5) /* g */ + #define GSL_CONST_CGSM_METRIC_TON (1e6) /* g */ + #define GSL_CONST_CGSM_UK_TON (1.0160469088e6) /* g */ + #define GSL_CONST_CGSM_TROY_OUNCE (3.1103475e1) /* g */ + #define GSL_CONST_CGSM_CARAT (2e-1) /* g */ + #define GSL_CONST_CGSM_UNIFIED_ATOMIC_MASS (1.66053873e-24) /* g */ + #define GSL_CONST_CGSM_GRAM_FORCE (9.80665e2) /* cm g / s^2 */ + #define GSL_CONST_CGSM_POUND_FORCE (4.44822161526e5) /* cm g / s^2 */ + #define GSL_CONST_CGSM_KILOPOUND_FORCE (4.44822161526e8) /* cm g / s^2 */ + #define GSL_CONST_CGSM_POUNDAL (1.38255e4) /* cm g / s^2 */ + #define GSL_CONST_CGSM_CALORIE (4.1868e7) /* g cm^2 / s^2 */ + #define GSL_CONST_CGSM_BTU (1.05505585262e10) /* g cm^2 / s^2 */ + #define GSL_CONST_CGSM_THERM (1.05506e15) /* g cm^2 / s^2 */ + #define GSL_CONST_CGSM_HORSEPOWER (7.457e9) /* g cm^2 / s^3 */ + #define GSL_CONST_CGSM_BAR (1e6) /* g / cm s^2 */ + #define GSL_CONST_CGSM_STD_ATMOSPHERE (1.01325e6) /* g / cm s^2 */ + #define GSL_CONST_CGSM_TORR (1.33322368421e3) /* g / cm s^2 */ + #define GSL_CONST_CGSM_METER_OF_MERCURY (1.33322368421e6) /* g / cm s^2 */ + #define GSL_CONST_CGSM_INCH_OF_MERCURY (3.38638815789e4) /* g / cm s^2 */ + #define GSL_CONST_CGSM_INCH_OF_WATER (2.490889e3) /* g / cm s^2 */ + #define GSL_CONST_CGSM_PSI (6.89475729317e4) /* g / cm s^2 */ + #define GSL_CONST_CGSM_POISE (1e0) /* g / cm s */ + #define GSL_CONST_CGSM_STOKES (1e0) /* cm^2 / s */ + #define GSL_CONST_CGSM_FARADAY (9.6485341472e3) /* abamp s / mol */ + #define GSL_CONST_CGSM_ELECTRON_CHARGE (1.602176462e-20) /* abamp s */ + #define GSL_CONST_CGSM_GAUSS (1e0) /* g / abamp s^2 */ + #define GSL_CONST_CGSM_STILB (1e0) /* cd / cm^2 */ + #define GSL_CONST_CGSM_LUMEN (1e0) /* cd sr */ + #define GSL_CONST_CGSM_LUX (1e-4) /* cd sr / cm^2 */ + #define GSL_CONST_CGSM_PHOT (1e0) /* cd sr / cm^2 */ + #define GSL_CONST_CGSM_FOOTCANDLE (1.076e-3) /* cd sr / cm^2 */ + #define GSL_CONST_CGSM_LAMBERT (1e0) /* cd sr / cm^2 */ + #define GSL_CONST_CGSM_FOOTLAMBERT (1.07639104e-3) /* cd sr / cm^2 */ + #define GSL_CONST_CGSM_CURIE (3.7e10) /* 1 / s */ + #define GSL_CONST_CGSM_ROENTGEN (2.58e-8) /* abamp s / g */ + #define GSL_CONST_CGSM_RAD (1e2) /* cm^2 / s^2 */ + #define GSL_CONST_CGSM_SOLAR_MASS (1.98892e33) /* g */ + #define GSL_CONST_CGSM_BOHR_RADIUS (5.291772083e-9) /* cm */ + #define GSL_CONST_CGSM_NEWTON (1e5) /* cm g / s^2 */ + #define GSL_CONST_CGSM_DYNE (1e0) /* cm g / s^2 */ + #define GSL_CONST_CGSM_JOULE (1e7) /* g cm^2 / s^2 */ + #define GSL_CONST_CGSM_ERG (1e0) /* g cm^2 / s^2 */ + + #endif /* __GSL_CONST_CGSM__ */ Only in gsl-1.3/const: gsl_const_mks.h diff -x.info* -rc2P gsl-1.3/const/gsl_const_mksa.h gsl-1.4/const/gsl_const_mksa.h *** gsl-1.3/const/gsl_const_mksa.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/const/gsl_const_mksa.h Fri Jul 25 15:18:18 2003 *************** *** 0 **** --- 1,122 ---- + /* const/gsl_const_mksa.h + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #ifndef __GSL_CONST_MKSA__ + #define __GSL_CONST_MKSA__ + + #define GSL_CONST_MKSA_SPEED_OF_LIGHT (2.99792458e8) /* m / s */ + #define GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT (6.673e-11) /* m^3 / kg s^2 */ + #define GSL_CONST_MKSA_PLANCKS_CONSTANT_H (6.62606876e-34) /* kg m^2 / s */ + #define GSL_CONST_MKSA_PLANCKS_CONSTANT_HBAR (1.05457159642e-34) /* kg m^2 / s */ + #define GSL_CONST_MKSA_ASTRONOMICAL_UNIT (1.49597870691e11) /* m */ + #define GSL_CONST_MKSA_LIGHT_YEAR (9.46053620707e15) /* m */ + #define GSL_CONST_MKSA_PARSEC (3.08567758135e16) /* m */ + #define GSL_CONST_MKSA_GRAV_ACCEL (9.80665e0) /* m / s^2 */ + #define GSL_CONST_MKSA_ELECTRON_VOLT (1.602176462e-19) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_MASS_ELECTRON (9.10938188e-31) /* kg */ + #define GSL_CONST_MKSA_MASS_MUON (1.88353109e-28) /* kg */ + #define GSL_CONST_MKSA_MASS_PROTON (1.67262158e-27) /* kg */ + #define GSL_CONST_MKSA_MASS_NEUTRON (1.67492716e-27) /* kg */ + #define GSL_CONST_MKSA_RYDBERG (2.17987190389e-18) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_BOLTZMANN (1.3806503e-23) /* kg m^2 / K s^2 */ + #define GSL_CONST_MKSA_BOHR_MAGNETON (9.27400899e-24) /* A m^2 */ + #define GSL_CONST_MKSA_NUCLEAR_MAGNETON (5.05078317e-27) /* A m^2 */ + #define GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT (9.28476362e-24) /* A m^2 */ + #define GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT (1.410606633e-26) /* A m^2 */ + #define GSL_CONST_MKSA_MOLAR_GAS (8.314472e0) /* kg m^2 / K mol s^2 */ + #define GSL_CONST_MKSA_STANDARD_GAS_VOLUME (2.2710981e-2) /* m^3 / mol */ + #define GSL_CONST_MKSA_MINUTE (6e1) /* s */ + #define GSL_CONST_MKSA_HOUR (3.6e3) /* s */ + #define GSL_CONST_MKSA_DAY (8.64e4) /* s */ + #define GSL_CONST_MKSA_WEEK (6.048e5) /* s */ + #define GSL_CONST_MKSA_INCH (2.54e-2) /* m */ + #define GSL_CONST_MKSA_FOOT (3.048e-1) /* m */ + #define GSL_CONST_MKSA_YARD (9.144e-1) /* m */ + #define GSL_CONST_MKSA_MILE (1.609344e3) /* m */ + #define GSL_CONST_MKSA_NAUTICAL_MILE (1.852e3) /* m */ + #define GSL_CONST_MKSA_FATHOM (1.8288e0) /* m */ + #define GSL_CONST_MKSA_MIL (2.54e-5) /* m */ + #define GSL_CONST_MKSA_POINT (3.52777777778e-4) /* m */ + #define GSL_CONST_MKSA_TEXPOINT (3.51459803515e-4) /* m */ + #define GSL_CONST_MKSA_MICRON (1e-6) /* m */ + #define GSL_CONST_MKSA_ANGSTROM (1e-10) /* m */ + #define GSL_CONST_MKSA_HECTARE (1e4) /* m^2 */ + #define GSL_CONST_MKSA_ACRE (4.04685642241e3) /* m^2 */ + #define GSL_CONST_MKSA_BARN (1e-28) /* m^2 */ + #define GSL_CONST_MKSA_LITER (1e-3) /* m^3 */ + #define GSL_CONST_MKSA_US_GALLON (3.78541178402e-3) /* m^3 */ + #define GSL_CONST_MKSA_QUART (9.46352946004e-4) /* m^3 */ + #define GSL_CONST_MKSA_PINT (4.73176473002e-4) /* m^3 */ + #define GSL_CONST_MKSA_CUP (2.36588236501e-4) /* m^3 */ + #define GSL_CONST_MKSA_FLUID_OUNCE (2.95735295626e-5) /* m^3 */ + #define GSL_CONST_MKSA_TABLESPOON (1.47867647813e-5) /* m^3 */ + #define GSL_CONST_MKSA_TEASPOON (4.92892159375e-6) /* m^3 */ + #define GSL_CONST_MKSA_CANADIAN_GALLON (4.54609e-3) /* m^3 */ + #define GSL_CONST_MKSA_UK_GALLON (4.546092e-3) /* m^3 */ + #define GSL_CONST_MKSA_MILES_PER_HOUR (4.4704e-1) /* m / s */ + #define GSL_CONST_MKSA_KILOMETERS_PER_HOUR (2.77777777778e-1) /* m / s */ + #define GSL_CONST_MKSA_KNOT (5.14444444444e-1) /* m / s */ + #define GSL_CONST_MKSA_POUND_MASS (4.5359237e-1) /* kg */ + #define GSL_CONST_MKSA_OUNCE_MASS (2.8349523125e-2) /* kg */ + #define GSL_CONST_MKSA_TON (9.0718474e2) /* kg */ + #define GSL_CONST_MKSA_METRIC_TON (1e3) /* kg */ + #define GSL_CONST_MKSA_UK_TON (1.0160469088e3) /* kg */ + #define GSL_CONST_MKSA_TROY_OUNCE (3.1103475e-2) /* kg */ + #define GSL_CONST_MKSA_CARAT (2e-4) /* kg */ + #define GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS (1.66053873e-27) /* kg */ + #define GSL_CONST_MKSA_GRAM_FORCE (9.80665e-3) /* kg m / s^2 */ + #define GSL_CONST_MKSA_POUND_FORCE (4.44822161526e0) /* kg m / s^2 */ + #define GSL_CONST_MKSA_KILOPOUND_FORCE (4.44822161526e3) /* kg m / s^2 */ + #define GSL_CONST_MKSA_POUNDAL (1.38255e-1) /* kg m / s^2 */ + #define GSL_CONST_MKSA_CALORIE (4.1868e0) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_BTU (1.05505585262e3) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_THERM (1.05506e8) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_HORSEPOWER (7.457e2) /* kg m^2 / s^3 */ + #define GSL_CONST_MKSA_BAR (1e5) /* kg / m s^2 */ + #define GSL_CONST_MKSA_STD_ATMOSPHERE (1.01325e5) /* kg / m s^2 */ + #define GSL_CONST_MKSA_TORR (1.33322368421e2) /* kg / m s^2 */ + #define GSL_CONST_MKSA_METER_OF_MERCURY (1.33322368421e5) /* kg / m s^2 */ + #define GSL_CONST_MKSA_INCH_OF_MERCURY (3.38638815789e3) /* kg / m s^2 */ + #define GSL_CONST_MKSA_INCH_OF_WATER (2.490889e2) /* kg / m s^2 */ + #define GSL_CONST_MKSA_PSI (6.89475729317e3) /* kg / m s^2 */ + #define GSL_CONST_MKSA_POISE (1e-1) /* kg m^-1 s^-1 */ + #define GSL_CONST_MKSA_STOKES (1e-4) /* m^2 / s */ + #define GSL_CONST_MKSA_FARADAY (9.6485341472e4) /* A s / mol */ + #define GSL_CONST_MKSA_ELECTRON_CHARGE (1.602176462e-19) /* A s */ + #define GSL_CONST_MKSA_GAUSS (1e-4) /* kg / A s^2 */ + #define GSL_CONST_MKSA_STILB (1e4) /* cd / m^2 */ + #define GSL_CONST_MKSA_LUMEN (1e0) /* cd sr */ + #define GSL_CONST_MKSA_LUX (1e0) /* cd sr / m^2 */ + #define GSL_CONST_MKSA_PHOT (1e4) /* cd sr / m^2 */ + #define GSL_CONST_MKSA_FOOTCANDLE (1.076e1) /* cd sr / m^2 */ + #define GSL_CONST_MKSA_LAMBERT (1e4) /* cd sr / m^2 */ + #define GSL_CONST_MKSA_FOOTLAMBERT (1.07639104e1) /* cd sr / m^2 */ + #define GSL_CONST_MKSA_CURIE (3.7e10) /* 1 / s */ + #define GSL_CONST_MKSA_ROENTGEN (2.58e-4) /* A s / kg */ + #define GSL_CONST_MKSA_RAD (1e-2) /* m^2 / s^2 */ + #define GSL_CONST_MKSA_SOLAR_MASS (1.98892e30) /* kg */ + #define GSL_CONST_MKSA_BOHR_RADIUS (5.291772083e-11) /* m */ + #define GSL_CONST_MKSA_NEWTON (1e0) /* kg m / s^2 */ + #define GSL_CONST_MKSA_DYNE (1e-5) /* kg m / s^2 */ + #define GSL_CONST_MKSA_JOULE (1e0) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_ERG (1e-7) /* kg m^2 / s^2 */ + #define GSL_CONST_MKSA_VACUUM_PERMITTIVITY (8.854187817e-12) /* A^2 s^4 / kg m^3 */ + #define GSL_CONST_MKSA_VACUUM_PERMEABILITY (1.25663706144e-6) /* kg m / A^2 s^2 */ + + #endif /* __GSL_CONST_MKSA__ */ diff -x.info* -rc2P gsl-1.3/depcomp gsl-1.4/depcomp *** gsl-1.3/depcomp Thu Jan 1 00:00:00 1970 --- gsl-1.4/depcomp Mon Jun 16 08:00:23 2003 *************** *** 0 **** --- 1,464 ---- + #! /bin/sh + + # depcomp - compile a program generating dependencies as side-effects + # Copyright 1999, 2000 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2, or (at your option) + # any later version. + + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + + # Originally written by Alexandre Oliva . + + if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 + fi + # `libtool' can also be set to `yes' or `no'. + + if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" + fi + + tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + + rm -f "$tmpdepfile" + + # Some modes work just like other modes, but use different flags. We + # parameterize here, but still list the modes in the big case below, + # to make depend.m4 easier to write. Note that we *cannot* use a case + # here, because this file can only contain one case statement. + if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc + fi + + if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout + fi + + case "$depmode" in + gcc3) + ## gcc 3 implements dependency tracking that does exactly what + ## we want. Yay! Note: for some reason libtool 1.4 doesn't like + ## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + + gcc) + ## There are various ways to get dependency output from gcc. Here's + ## why we pick this rather obscure method: + ## - Don't want to use -MD because we'd like the dependencies to end + ## up in a subdir. Having to rename by hand is ugly. + ## (We might end up doing this anyway to support other compilers.) + ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like + ## -MM, not -M (despite what the docs say). + ## - Using -M directly means running the compiler twice (even worse + ## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz + ## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" + ## This next piece of magic avoids the `deleted header file' problem. + ## The problem is that when a header file which appears in a .P file + ## is deleted, the dependency causes make to die (because there is + ## typically no way to rebuild the header). We avoid this by adding + ## dummy dependencies for each header file. Too bad gcc doesn't do + ## this for us directly. + tr ' ' ' + ' < "$tmpdepfile" | + ## Some versions of gcc put a space before the `:'. On the theory + ## that the space means something, we add a space to the output as + ## well. + ## Some versions of the HPUX 10.20 sed can't process this invocation + ## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + + hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + + sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' + ' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' + ' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' + ' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + + aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. This file always lives in the current directory. + # Also, the AIX compiler puts `$object:' at the start of each line; + # $object doesn't have directory information. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + + icc) + # Must come before tru64. + + # Intel's C compiler understands `-MD -MF file'. However + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + + tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + + #nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + + dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' + ' < "$tmpdepfile" | \ + ## Some versions of the HPUX 10.20 sed can't process this invocation + ## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + + dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + + makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' + ' | \ + ## Some versions of the HPUX 10.20 sed can't process this invocation + ## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + + cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + + msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + + none) + exec "$@" + ;; + + *) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; + esac + + exit 0 diff -x.info* -rc2P gsl-1.3/dht/Makefile.am gsl-1.4/dht/Makefile.am *** gsl-1.3/dht/Makefile.am Thu Jul 4 22:01:52 2002 --- gsl-1.4/dht/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 9,13 **** check_PROGRAMS = test ! test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../sys/libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 9,13 ---- check_PROGRAMS = test ! test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/dht/Makefile.in gsl-1.4/dht/Makefile.in *** gsl-1.3/dht/Makefile.in Wed Dec 18 22:38:33 2002 --- gsl-1.4/dht/Makefile.in Thu Aug 14 12:30:20 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgsldht.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgsldht.la *************** *** 95,192 **** check_PROGRAMS = test ! test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../sys/libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c libgsldht_la_SOURCES = dht.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgsldht_la_LDFLAGS = ! libgsldht_la_LIBADD = ! libgsldht_la_OBJECTS = dht.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgsldht.la ../specfunc/libgslspecfunc.la \ ! ../sys/libgslsys.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgsldht_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps dht/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 151,239 ---- check_PROGRAMS = test ! test_LDADD = libgsldht.la ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c libgsldht_la_SOURCES = dht.c + subdir = dht + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgsldht_la_LDFLAGS = ! libgsldht_la_LIBADD = ! am_libgsldht_la_OBJECTS = dht.lo ! libgsldht_la_OBJECTS = $(am_libgsldht_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgsldht.la ../specfunc/libgslspecfunc.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgsldht_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu dht/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgsldht.la: $(libgsldht_la_OBJECTS) $(libgsldht_la_DEPENDENCIES) + $(LINK) $(libgsldht_la_LDFLAGS) $(libgsldht_la_OBJECTS) $(libgsldht_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 197,333 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgsldht.la: $(libgsldht_la_OBJECTS) $(libgsldht_la_DEPENDENCIES) ! $(LINK) $(libgsldht_la_LDFLAGS) $(libgsldht_la_OBJECTS) $(libgsldht_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = dht distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 244,448 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 336,385 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 451,517 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/dht/dht.c gsl-1.4/dht/dht.c *** gsl-1.3/dht/dht.c Mon Nov 19 21:39:36 2001 --- gsl-1.4/dht/dht.c Fri Jul 25 15:18:10 2003 *************** *** 209,217 **** if(i < m) { m_local = i; ! n_local = m; } else { m_local = m; ! n_local = i; } Y = t->Jjj[n_local*(n_local+1)/2 + m_local] / t->J2[i+1]; --- 209,217 ---- if(i < m) { m_local = i; ! n_local = m; } else { m_local = m; ! n_local = i; } Y = t->Jjj[n_local*(n_local+1)/2 + m_local] / t->J2[i+1]; diff -x.info* -rc2P gsl-1.3/dht/test.c gsl-1.4/dht/test.c *** gsl-1.3/dht/test.c Mon Nov 19 21:39:36 2001 --- gsl-1.4/dht/test.c Fri Jul 25 15:18:10 2003 *************** *** 173,177 **** if(fabs(f_out[10]-0.000024342)/0.000024342 > 1.0e-04) stat++; if(fabs(f_out[35]-(-4.04e-07))/4.04e-07 > 1.0e-03) stat++; ! if(fabs(f_out[100]-1.0e-08)/1.0e-08 > 0.25) stat++; gsl_dht_free(t); --- 173,177 ---- if(fabs(f_out[10]-0.000024342)/0.000024342 > 1.0e-04) stat++; if(fabs(f_out[35]-(-4.04e-07))/4.04e-07 > 1.0e-03) stat++; ! if(fabs(f_out[100]-1.0e-08)/1.0e-08 > 0.25) stat++; gsl_dht_free(t); diff -x.info* -rc2P gsl-1.3/diff/Makefile.am gsl-1.4/diff/Makefile.am *** gsl-1.3/diff/Makefile.am Sun May 6 20:41:10 2001 --- gsl-1.4/diff/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 4,8 **** libgsldiff_la_SOURCES = diff.c ! pkginclude_HEADERS = gsl_diff.h --- 4,8 ---- libgsldiff_la_SOURCES = diff.c ! pkginclude_HEADERS = gsl_diff.h *************** *** 11,16 **** test_SOURCES = test.c ! test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la #demo_SOURCES = demo.c ! #demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la --- 11,16 ---- test_SOURCES = test.c ! test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la #demo_SOURCES = demo.c ! #demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la diff -x.info* -rc2P gsl-1.3/diff/Makefile.in gsl-1.4/diff/Makefile.in *** gsl-1.3/diff/Makefile.in Wed Dec 18 22:40:59 2002 --- gsl-1.4/diff/Makefile.in Thu Aug 14 12:29:07 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgsldiff.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgsldiff.la *************** *** 97,189 **** test_SOURCES = test.c ! test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgsldiff_la_LDFLAGS = ! libgsldiff_la_LIBADD = ! libgsldiff_la_OBJECTS = diff.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgsldiff.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgsldiff_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps diff/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,237 ---- test_SOURCES = test.c ! test_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! subdir = diff ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgsldiff_la_LDFLAGS = ! libgsldiff_la_LIBADD = ! am_libgsldiff_la_OBJECTS = diff.lo ! libgsldiff_la_OBJECTS = $(am_libgsldiff_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgsldiff.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgsldiff_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu diff/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgsldiff.la: $(libgsldiff_la_OBJECTS) $(libgsldiff_la_DEPENDENCIES) + $(LINK) $(libgsldiff_la_LDFLAGS) $(libgsldiff_la_OBJECTS) $(libgsldiff_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 194,330 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgsldiff.la: $(libgsldiff_la_OBJECTS) $(libgsldiff_la_DEPENDENCIES) ! $(LINK) $(libgsldiff_la_LDFLAGS) $(libgsldiff_la_OBJECTS) $(libgsldiff_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = diff distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 242,446 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 333,386 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean ! #demo_SOURCES = demo.c ! #demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 449,519 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic + mostlyclean: mostlyclean-am ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am + pdf-am: + + ps: ps-am + + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + + + #demo_SOURCES = demo.c + #demo_LDADD = libgsldiff.la ../vector/libgslvector.la ../block/libgslblock.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/diff/diff.c gsl-1.4/diff/diff.c *** gsl-1.3/diff/diff.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/diff/diff.c Fri Jul 25 15:18:10 2003 *************** *** 26,30 **** int gsl_diff_backward (const gsl_function * f, ! double x, double *result, double *abserr) { /* Construct a divided difference table with a fairly large step --- 26,30 ---- int gsl_diff_backward (const gsl_function * f, ! double x, double *result, double *abserr) { /* Construct a divided difference table with a fairly large step *************** *** 48,54 **** { for (i = 0; i < 3 - k; i++) ! { ! d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); ! } } --- 48,54 ---- { for (i = 0; i < 3 - k; i++) ! { ! d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); ! } } *************** *** 78,82 **** int gsl_diff_forward (const gsl_function * f, ! double x, double *result, double *abserr) { /* Construct a divided difference table with a fairly large step --- 78,82 ---- int gsl_diff_forward (const gsl_function * f, ! double x, double *result, double *abserr) { /* Construct a divided difference table with a fairly large step *************** *** 100,106 **** { for (i = 0; i < 3 - k; i++) ! { ! d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); ! } } --- 100,106 ---- { for (i = 0; i < 3 - k; i++) ! { ! d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); ! } } *************** *** 130,134 **** int gsl_diff_central (const gsl_function * f, ! double x, double *result, double *abserr) { /* Construct a divided difference table with a fairly large step --- 130,134 ---- int gsl_diff_central (const gsl_function * f, ! double x, double *result, double *abserr) { /* Construct a divided difference table with a fairly large step *************** *** 152,158 **** { for (i = 0; i < 4 - k; i++) ! { ! d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); ! } } --- 152,158 ---- { for (i = 0; i < 4 - k; i++) ! { ! d[i] = (d[i + 1] - d[i]) / (a[i + k] - a[i]); ! } } diff -x.info* -rc2P gsl-1.3/diff/gsl_diff.h gsl-1.4/diff/gsl_diff.h *** gsl-1.3/diff/gsl_diff.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/diff/gsl_diff.h Fri Jul 25 15:18:18 2003 *************** *** 35,48 **** int gsl_diff_central (const gsl_function *f, ! double x, ! double *result, double *abserr); int gsl_diff_backward (const gsl_function *f, ! double x, ! double *result, double *abserr); int gsl_diff_forward (const gsl_function *f, ! double x, ! double *result, double *abserr); __END_DECLS --- 35,48 ---- int gsl_diff_central (const gsl_function *f, ! double x, ! double *result, double *abserr); int gsl_diff_backward (const gsl_function *f, ! double x, ! double *result, double *abserr); int gsl_diff_forward (const gsl_function *f, ! double x, ! double *result, double *abserr); __END_DECLS diff -x.info* -rc2P gsl-1.3/diff/test.c gsl-1.4/diff/test.c *** gsl-1.3/diff/test.c Tue Jun 26 11:42:11 2001 --- gsl-1.4/diff/test.c Sat Jul 26 17:29:22 2003 *************** *** 26,29 **** --- 26,30 ---- #include #include + #include double *************** *** 144,147 **** --- 145,150 ---- { gsl_function F1, DF1, F2, DF2, F3, DF3, F4, DF4, F5, DF5, F6, DF6; + + gsl_ieee_env_setup (); F1.function = &f1; diff -x.info* -rc2P gsl-1.3/doc/ChangeLog gsl-1.4/doc/ChangeLog *** gsl-1.3/doc/ChangeLog Thu Nov 2 20:26:54 2000 --- gsl-1.4/doc/ChangeLog Thu May 8 18:58:51 2003 *************** *** 1,2 **** --- 1,8 ---- + Mon Apr 7 12:54:30 MDT 2003 G. Jungman + + * specfunc-gamma.texi: added entry for gsl_sf_gamma_inc_(), + gsl_sf_gamma_inc() + + 2000-10-26 Mark Galassi diff -x.info* -rc2P gsl-1.3/doc/Makefile.am gsl-1.4/doc/Makefile.am *** gsl-1.3/doc/Makefile.am Fri Apr 26 19:15:24 2002 --- gsl-1.4/doc/Makefile.am Sun Aug 10 17:13:23 2003 *************** *** 3,14 **** info_TEXINFOS = gsl-ref.texi noinst_TEXINFOS = gsl-design.texi ! gsl_ref_TEXINFOS = err.texi cblas.texi blas.texi min.texi fft.texi rng.texi randist.texi roots.texi statistics.texi specfunc.texi specfunc-airy.texi specfunc-bessel.texi specfunc-chebyshev.texi specfunc-clausen.texi specfunc-coulomb.texi specfunc-coupling.texi specfunc-dawson.texi specfunc-debye.texi specfunc-dilog.texi specfunc-elementary.texi specfunc-ellint.texi specfunc-elljac.texi specfunc-erf.texi specfunc-exp.texi specfunc-expint.texi specfunc-fermi-dirac.texi specfunc-gamma.texi specfunc-gegenbauer.texi specfunc-hyperg.texi specfunc-lambert.texi specfunc-laguerre.texi specfunc-legendre.texi specfunc-log.texi specfunc-pow-int.texi specfunc-psi.texi specfunc-synchrotron.texi specfunc-transport.texi specfunc-trig.texi specfunc-zeta.texi siman.texi vectors.texi debug.texi bugs.texi histogram.texi ode-initval.texi integration.texi ieee754.texi montecarlo.texi sum.texi intro.texi usage.texi dht.texi interp.texi poly.texi linalg.texi eigen.texi multiroots.texi sort.texi permutation.texi combination.texi complex.texi math.texi fitting.texi multifit.texi const.texi ntuple.texi diff.texi qrng.texi cheb.texi multimin.texi gpl.texi fdl.texi man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 ! noinst_DATA = multimin.eps siman-test.eps siman-energy.eps 12-cities.eps initial-route.eps final-route.eps fft-complex-radix2-f.eps fft-complex-radix2-t.eps fft-complex-radix2.eps fft-real-mixedradix.eps roots-bisection.eps roots-false-position.eps roots-newtons-method.eps roots-secant-method.eps histogram.eps histogram2d.eps min-interval.eps fit-wlinear.eps fit-wlinear2.eps fit-exp.eps ntuple.eps qrng.eps cheb.eps vdp.eps interp.eps rand-beta.tex rand-binomial.tex rand-cauchy.tex rand-chisq.tex rand-erlang.tex rand-exponential.tex rand-fdist.tex rand-flat.tex rand-gamma.tex rand-gaussian.tex rand-geometric.tex rand-laplace.tex rand-logarithmic.tex rand-logistic.tex rand-lognormal.tex rand-pareto.tex rand-poisson.tex rand-hypergeometric.tex rand-nbinomial.tex rand-pascal.tex rand-bivariate-gaussian.tex rand-rayleigh.tex rand-rayleigh-tail.tex rand-tdist.tex rand-weibull.tex random-walk.tex randplots.gnp rand-exppow.tex rand-levy.tex rand-levyskew.tex rand-gumbel.tex rand-bernoulli.tex rand-gaussian-tail.tex rand-gumbel1.tex rand-gumbel2.tex landau.dat rand-landau.tex EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi fftalgorithms.tex fftalgorithms.bib algorithm.sty algorithmic.sty calc.sty --- 3,28 ---- info_TEXINFOS = gsl-ref.texi noinst_TEXINFOS = gsl-design.texi ! gsl_ref_TEXINFOS = err.texi cblas.texi blas.texi min.texi fft.texi rng.texi randist.texi roots.texi statistics.texi specfunc.texi specfunc-airy.texi specfunc-bessel.texi specfunc-chebyshev.texi specfunc-clausen.texi specfunc-coulomb.texi specfunc-coupling.texi specfunc-dawson.texi specfunc-debye.texi specfunc-dilog.texi specfunc-elementary.texi specfunc-ellint.texi specfunc-elljac.texi specfunc-erf.texi specfunc-exp.texi specfunc-expint.texi specfunc-fermi-dirac.texi specfunc-gamma.texi specfunc-gegenbauer.texi specfunc-hyperg.texi specfunc-lambert.texi specfunc-laguerre.texi specfunc-legendre.texi specfunc-log.texi specfunc-pow-int.texi specfunc-psi.texi specfunc-synchrotron.texi specfunc-transport.texi specfunc-trig.texi specfunc-zeta.texi siman.texi vectors.texi debug.texi histogram.texi ode-initval.texi integration.texi ieee754.texi montecarlo.texi sum.texi intro.texi usage.texi dht.texi interp.texi poly.texi linalg.texi eigen.texi multiroots.texi sort.texi permutation.texi combination.texi complex.texi math.texi fitting.texi multifit.texi const.texi ntuple.texi diff.texi qrng.texi cheb.texi multimin.texi gpl.texi fdl.texi autoconf.texi freemanuals.texi man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 ! figures = multimin.eps siman-test.eps siman-energy.eps 12-cities.eps initial-route.eps final-route.eps fft-complex-radix2-f.eps fft-complex-radix2-t.eps fft-complex-radix2.eps fft-real-mixedradix.eps roots-bisection.eps roots-false-position.eps roots-newtons-method.eps roots-secant-method.eps histogram.eps histogram2d.eps min-interval.eps fit-wlinear.eps fit-wlinear2.eps fit-exp.eps ntuple.eps qrng.eps cheb.eps vdp.eps interp.eps rand-beta.tex rand-binomial.tex rand-cauchy.tex rand-chisq.tex rand-erlang.tex rand-exponential.tex rand-fdist.tex rand-flat.tex rand-gamma.tex rand-gaussian.tex rand-geometric.tex rand-laplace.tex rand-logarithmic.tex rand-logistic.tex rand-lognormal.tex rand-pareto.tex rand-poisson.tex rand-hypergeometric.tex rand-nbinomial.tex rand-pascal.tex rand-bivariate-gaussian.tex rand-rayleigh.tex rand-rayleigh-tail.tex rand-tdist.tex rand-weibull.tex random-walk.tex randplots.gnp rand-exppow.tex rand-levy.tex rand-levyskew.tex rand-gumbel.tex rand-bernoulli.tex rand-gaussian-tail.tex rand-gumbel1.tex rand-gumbel2.tex landau.dat rand-landau.tex ! ! examples_src = examples/blas.c examples/block.c examples/cblas.c examples/cdf.c examples/cheb.c examples/combination.c examples/const.c examples/demo_fn.c examples/diff.c examples/eigen.c examples/fft.c examples/fftmr.c examples/fftreal.c examples/fitting.c examples/fitting2.c examples/fitting3.c examples/histogram.c examples/histogram2d.c examples/ieee.c examples/ieeeround.c examples/integration.c examples/interp.c examples/intro.c examples/linalglu.c examples/matrix.c examples/matrixw.c examples/min.c examples/monte.c examples/ntupler.c examples/ntuplew.c examples/ode-initval.c examples/odefixed.c examples/permseq.c examples/permshuffle.c examples/polyroots.c examples/qrng.c examples/randpoisson.c examples/randwalk.c examples/rng.c examples/rngunif.c examples/rootnewt.c examples/roots.c examples/siman.c examples/sortsmall.c examples/specfun.c examples/specfun_e.c examples/stat.c examples/statsort.c examples/sum.c examples/vector.c examples/vectorr.c examples/vectorview.c examples/vectorw.c examples/demo_fn.h ! ! ! examples_out = examples/blas.out examples/block.out examples/cblas.out examples/cdf.out examples/combination.out examples/const.out examples/diff.out examples/integration.out examples/intro.out examples/linalglu.out examples/min.out examples/polyroots.out examples/randpoisson.2.out examples/randpoisson.out examples/rng.out examples/rngunif.2.out examples/rngunif.out examples/sortsmall.out examples/specfun.out examples/specfun_e.out examples/stat.out examples/statsort.out examples/sum.out examples/vectorview.out ! ! ! ! noinst_DATA = $(examples_src) $(examples_out) $(figures) EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi fftalgorithms.tex fftalgorithms.bib algorithm.sty algorithmic.sty calc.sty + + + + + diff -x.info* -rc2P gsl-1.3/doc/Makefile.in gsl-1.4/doc/Makefile.in *** gsl-1.3/doc/Makefile.in Wed Dec 18 22:41:05 2002 --- gsl-1.4/doc/Makefile.in Thu Aug 14 12:28:59 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,239 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ info_TEXINFOS = gsl-ref.texi noinst_TEXINFOS = gsl-design.texi ! gsl_ref_TEXINFOS = err.texi cblas.texi blas.texi min.texi fft.texi rng.texi randist.texi roots.texi statistics.texi specfunc.texi specfunc-airy.texi specfunc-bessel.texi specfunc-chebyshev.texi specfunc-clausen.texi specfunc-coulomb.texi specfunc-coupling.texi specfunc-dawson.texi specfunc-debye.texi specfunc-dilog.texi specfunc-elementary.texi specfunc-ellint.texi specfunc-elljac.texi specfunc-erf.texi specfunc-exp.texi specfunc-expint.texi specfunc-fermi-dirac.texi specfunc-gamma.texi specfunc-gegenbauer.texi specfunc-hyperg.texi specfunc-lambert.texi specfunc-laguerre.texi specfunc-legendre.texi specfunc-log.texi specfunc-pow-int.texi specfunc-psi.texi specfunc-synchrotron.texi specfunc-transport.texi specfunc-trig.texi specfunc-zeta.texi siman.texi vectors.texi debug.texi bugs.texi histogram.texi ode-initval.texi integration.texi ieee754.texi montecarlo.texi sum.texi intro.texi usage.texi dht.texi interp.texi poly.texi linalg.texi eigen.texi multiroots.texi sort.texi permutation.texi combination.texi complex.texi math.texi fitting.texi multifit.texi const.texi ntuple.texi diff.texi qrng.texi cheb.texi multimin.texi gpl.texi fdl.texi man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 ! noinst_DATA = multimin.eps siman-test.eps siman-energy.eps 12-cities.eps initial-route.eps final-route.eps fft-complex-radix2-f.eps fft-complex-radix2-t.eps fft-complex-radix2.eps fft-real-mixedradix.eps roots-bisection.eps roots-false-position.eps roots-newtons-method.eps roots-secant-method.eps histogram.eps histogram2d.eps min-interval.eps fit-wlinear.eps fit-wlinear2.eps fit-exp.eps ntuple.eps qrng.eps cheb.eps vdp.eps interp.eps rand-beta.tex rand-binomial.tex rand-cauchy.tex rand-chisq.tex rand-erlang.tex rand-exponential.tex rand-fdist.tex rand-flat.tex rand-gamma.tex rand-gaussian.tex rand-geometric.tex rand-laplace.tex rand-logarithmic.tex rand-logistic.tex rand-lognormal.tex rand-pareto.tex rand-poisson.tex rand-hypergeometric.tex rand-nbinomial.tex rand-pascal.tex rand-bivariate-gaussian.tex rand-rayleigh.tex rand-rayleigh-tail.tex rand-tdist.tex rand-weibull.tex random-walk.tex randplots.gnp rand-exppow.tex rand-levy.tex rand-levyskew.tex rand-gumbel.tex rand-bernoulli.tex rand-gaussian-tail.tex rand-gumbel1.tex rand-gumbel2.tex landau.dat rand-landau.tex EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi fftalgorithms.tex fftalgorithms.bib algorithm.sty algorithmic.sty calc.sty mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! TEXI2DVI = texi2dvi INFO_DEPS = gsl-ref.info DVIS = gsl-ref.dvi TEXINFOS = gsl-ref.texi - man1dir = $(mandir)/man1 - man3dir = $(mandir)/man3 - MANS = $(man_MANS) NROFF = nroff ! DATA = $(noinst_DATA) ! ! DIST_COMMON = $(gsl_ref_TEXINFOS) ChangeLog Makefile.am Makefile.in \ ! mdate-sh stamp-vti texinfo.tex version-ref.texi ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - TAR = tar - GZIP_ENV = --best - all: all-redirect .SUFFIXES: ! .SUFFIXES: .dvi .info .ps .texi .texinfo .txi ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! $(srcdir)/version-ref.texi: @MAINTAINER_MODE_TRUE@stamp-vti ! @: ! ! $(srcdir)/stamp-vti: gsl-ref.texi $(top_srcdir)/configure.in ! @echo "@set UPDATED `$(SHELL) $(srcdir)/mdate-sh $(srcdir)/gsl-ref.texi`" > vti.tmp ! @echo "@set EDITION $(VERSION)" >> vti.tmp ! @echo "@set VERSION $(VERSION)" >> vti.tmp ! @cmp -s vti.tmp $(srcdir)/version-ref.texi \ ! || (echo "Updating $(srcdir)/version-ref.texi"; \ ! cp vti.tmp $(srcdir)/version-ref.texi) ! -@rm -f vti.tmp ! @cp $(srcdir)/version-ref.texi $@ ! mostlyclean-vti: ! -rm -f vti.tmp ! clean-vti: ! distclean-vti: ! maintainer-clean-vti: ! -@MAINTAINER_MODE_TRUE@rm -f $(srcdir)/stamp-vti $(srcdir)/version-ref.texi gsl-ref.info: gsl-ref.texi version-ref.texi $(gsl_ref_TEXINFOS) gsl-ref.dvi: gsl-ref.texi version-ref.texi $(gsl_ref_TEXINFOS) ! DVIPS = dvips ! ! .texi.info: ! @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] ! cd $(srcdir) \ ! && $(MAKEINFO) `echo $< | sed 's,.*/,,'` ! ! .texi.dvi: ! TEXINPUTS=.:$$TEXINPUTS \ ! MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< ! .texi: ! @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] ! cd $(srcdir) \ ! && $(MAKEINFO) `echo $< | sed 's,.*/,,'` ! ! .texinfo.info: ! @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] ! cd $(srcdir) \ ! && $(MAKEINFO) `echo $< | sed 's,.*/,,'` ! ! .texinfo: ! @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] ! cd $(srcdir) \ ! && $(MAKEINFO) `echo $< | sed 's,.*/,,'` ! ! .texinfo.dvi: ! TEXINPUTS=.:$$TEXINPUTS \ ! MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< ! ! .txi.info: ! @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] ! cd $(srcdir) \ ! && $(MAKEINFO) `echo $< | sed 's,.*/,,'` ! ! .txi.dvi: ! TEXINPUTS=.:$$TEXINPUTS \ ! MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $< ! ! .txi: ! @cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9] ! cd $(srcdir) \ ! && $(MAKEINFO) `echo $< | sed 's,.*/,,'` .dvi.ps: ! $(DVIPS) $< -o $@ ! install-info-am: $(INFO_DEPS) ! @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(infodir) ! @list='$(INFO_DEPS)'; \ ! for file in $$list; do \ ! d=$(srcdir); \ ! for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \ ! if test -f $$d/$$ifile; then \ ! echo " $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile"; \ ! $(INSTALL_DATA) $$d/$$ifile $(DESTDIR)$(infodir)/$$ifile; \ ! else : ; fi; \ ! done; \ ! done ! @$(POST_INSTALL) ! @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ ! echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file";\ ! install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$file || :;\ done; \ ! else : ; fi ! ! uninstall-info: ! $(PRE_UNINSTALL) ! @if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \ ! ii=yes; \ ! else ii=; fi; \ ! list='$(INFO_DEPS)'; \ ! for file in $$list; do \ ! test -z "$$ii" \ ! || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ ! done @$(NORMAL_UNINSTALL) ! list='$(INFO_DEPS)'; \ for file in $$list; do \ ! (cd $(DESTDIR)$(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \ done --- 60,263 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ info_TEXINFOS = gsl-ref.texi noinst_TEXINFOS = gsl-design.texi ! gsl_ref_TEXINFOS = err.texi cblas.texi blas.texi min.texi fft.texi rng.texi randist.texi roots.texi statistics.texi specfunc.texi specfunc-airy.texi specfunc-bessel.texi specfunc-chebyshev.texi specfunc-clausen.texi specfunc-coulomb.texi specfunc-coupling.texi specfunc-dawson.texi specfunc-debye.texi specfunc-dilog.texi specfunc-elementary.texi specfunc-ellint.texi specfunc-elljac.texi specfunc-erf.texi specfunc-exp.texi specfunc-expint.texi specfunc-fermi-dirac.texi specfunc-gamma.texi specfunc-gegenbauer.texi specfunc-hyperg.texi specfunc-lambert.texi specfunc-laguerre.texi specfunc-legendre.texi specfunc-log.texi specfunc-pow-int.texi specfunc-psi.texi specfunc-synchrotron.texi specfunc-transport.texi specfunc-trig.texi specfunc-zeta.texi siman.texi vectors.texi debug.texi histogram.texi ode-initval.texi integration.texi ieee754.texi montecarlo.texi sum.texi intro.texi usage.texi dht.texi interp.texi poly.texi linalg.texi eigen.texi multiroots.texi sort.texi permutation.texi combination.texi complex.texi math.texi fitting.texi multifit.texi const.texi ntuple.texi diff.texi qrng.texi cheb.texi multimin.texi gpl.texi fdl.texi autoconf.texi freemanuals.texi man_MANS = gsl.3 gsl-config.1 gsl-randist.1 gsl-histogram.1 ! figures = multimin.eps siman-test.eps siman-energy.eps 12-cities.eps initial-route.eps final-route.eps fft-complex-radix2-f.eps fft-complex-radix2-t.eps fft-complex-radix2.eps fft-real-mixedradix.eps roots-bisection.eps roots-false-position.eps roots-newtons-method.eps roots-secant-method.eps histogram.eps histogram2d.eps min-interval.eps fit-wlinear.eps fit-wlinear2.eps fit-exp.eps ntuple.eps qrng.eps cheb.eps vdp.eps interp.eps rand-beta.tex rand-binomial.tex rand-cauchy.tex rand-chisq.tex rand-erlang.tex rand-exponential.tex rand-fdist.tex rand-flat.tex rand-gamma.tex rand-gaussian.tex rand-geometric.tex rand-laplace.tex rand-logarithmic.tex rand-logistic.tex rand-lognormal.tex rand-pareto.tex rand-poisson.tex rand-hypergeometric.tex rand-nbinomial.tex rand-pascal.tex rand-bivariate-gaussian.tex rand-rayleigh.tex rand-rayleigh-tail.tex rand-tdist.tex rand-weibull.tex random-walk.tex randplots.gnp rand-exppow.tex rand-levy.tex rand-levyskew.tex rand-gumbel.tex rand-bernoulli.tex rand-gaussian-tail.tex rand-gumbel1.tex rand-gumbel2.tex landau.dat rand-landau.tex ! ! examples_src = examples/blas.c examples/block.c examples/cblas.c examples/cdf.c examples/cheb.c examples/combination.c examples/const.c examples/demo_fn.c examples/diff.c examples/eigen.c examples/fft.c examples/fftmr.c examples/fftreal.c examples/fitting.c examples/fitting2.c examples/fitting3.c examples/histogram.c examples/histogram2d.c examples/ieee.c examples/ieeeround.c examples/integration.c examples/interp.c examples/intro.c examples/linalglu.c examples/matrix.c examples/matrixw.c examples/min.c examples/monte.c examples/ntupler.c examples/ntuplew.c examples/ode-initval.c examples/odefixed.c examples/permseq.c examples/permshuffle.c examples/polyroots.c examples/qrng.c examples/randpoisson.c examples/randwalk.c examples/rng.c examples/rngunif.c examples/rootnewt.c examples/roots.c examples/siman.c examples/sortsmall.c examples/specfun.c examples/specfun_e.c examples/stat.c examples/statsort.c examples/sum.c examples/vector.c examples/vectorr.c examples/vectorview.c examples/vectorw.c examples/demo_fn.h ! ! examples_out = examples/blas.out examples/block.out examples/cblas.out examples/cdf.out examples/combination.out examples/const.out examples/diff.out examples/integration.out examples/intro.out examples/linalglu.out examples/min.out examples/polyroots.out examples/randpoisson.2.out examples/randpoisson.out examples/rng.out examples/rngunif.2.out examples/rngunif.out examples/sortsmall.out examples/specfun.out examples/specfun_e.out examples/stat.out examples/statsort.out examples/sum.out examples/vectorview.out ! ! noinst_DATA = $(examples_src) $(examples_out) $(figures) EXTRA_DIST = $(man_MANS) $(noinst_DATA) gsl-design.texi fftalgorithms.tex fftalgorithms.bib algorithm.sty algorithmic.sty calc.sty + subdir = doc + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! depcomp = ! am__depfiles_maybe = ! DIST_SOURCES = ! am__TEXINFO_TEX_DIR = $(srcdir) INFO_DEPS = gsl-ref.info DVIS = gsl-ref.dvi + PDFS = gsl-ref.pdf + PSS = gsl-ref.ps TEXINFOS = gsl-ref.texi NROFF = nroff ! MANS = $(man_MANS) ! DATA = $(noinst_DATA) ! DIST_COMMON = $(gsl_ref_TEXINFOS) ChangeLog Makefile.am Makefile.in \ ! mdate-sh stamp-vti texinfo.tex version-ref.texi ! all: all-am .SUFFIXES: ! .SUFFIXES: .dvi .info .pdf .ps .texi ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu doc/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! mostlyclean-libtool: ! -rm -f *.lo ! clean-libtool: ! -rm -rf .libs _libs ! distclean-libtool: ! -rm -f libtool ! .texi.info: ! @rm -f $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9] ! $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ ! -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + .texi.dvi: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) `test -f '$<' || echo '$(srcdir)/'`$< + + .texi.pdf: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) `test -f '$<' || echo '$(srcdir)/'`$< gsl-ref.info: gsl-ref.texi version-ref.texi $(gsl_ref_TEXINFOS) gsl-ref.dvi: gsl-ref.texi version-ref.texi $(gsl_ref_TEXINFOS) + gsl-ref.pdf: gsl-ref.texi version-ref.texi $(gsl_ref_TEXINFOS) + version-ref.texi: @MAINTAINER_MODE_TRUE@ stamp-vti + stamp-vti: gsl-ref.texi $(top_srcdir)/configure + @(dir=.; test -f ./gsl-ref.texi || dir=$(srcdir); \ + set `$(SHELL) $(srcdir)/mdate-sh $$dir/gsl-ref.texi`; \ + echo "@set UPDATED $$1 $$2 $$3"; \ + echo "@set UPDATED-MONTH $$2 $$3"; \ + echo "@set EDITION $(VERSION)"; \ + echo "@set VERSION $(VERSION)") > vti.tmp + @cmp -s vti.tmp version-ref.texi \ + || (echo "Updating version-ref.texi"; \ + cp vti.tmp version-ref.texi) + -@rm -f vti.tmp + @cp version-ref.texi $@ + mostlyclean-vti: + -rm -f vti.tmp ! maintainer-clean-vti: ! @MAINTAINER_MODE_TRUE@ -rm -f stamp-vti version-ref.texi ! TEXI2DVI = texi2dvi ! TEXI2PDF = $(TEXI2DVI) --pdf --batch ! DVIPS = dvips .dvi.ps: ! $(DVIPS) -o $@ $< ! uninstall-info-am: ! $(PRE_UNINSTALL) ! @if (install-info --version && \ ! install-info --version | grep -i -v debian) >/dev/null 2>&1; then \ list='$(INFO_DEPS)'; \ for file in $$list; do \ ! relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! echo " install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile"; \ ! install-info --info-dir=$(DESTDIR)$(infodir) --remove $(DESTDIR)$(infodir)/$$relfile; \ done; \ ! else :; fi @$(NORMAL_UNINSTALL) ! @list='$(INFO_DEPS)'; \ for file in $$list; do \ ! relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ ! (if cd $(DESTDIR)$(infodir); then \ ! echo " rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9])"; \ ! rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ ! else :; fi); \ done *************** *** 241,274 **** list='$(INFO_DEPS)'; \ for base in $$list; do \ ! d=$(srcdir); \ ! for file in `cd $$d && eval echo $$base*`; do \ ! test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file; \ done; \ done mostlyclean-aminfo: ! -rm -f gsl-ref.aux gsl-ref.cp gsl-ref.cps gsl-ref.dvi gsl-ref.fn \ ! gsl-ref.fns gsl-ref.ky gsl-ref.kys gsl-ref.ps gsl-ref.log \ ! gsl-ref.pg gsl-ref.toc gsl-ref.tp gsl-ref.tps gsl-ref.vr \ ! gsl-ref.vrs gsl-ref.op gsl-ref.tr gsl-ref.cv gsl-ref.cn ! ! clean-aminfo: ! ! distclean-aminfo: maintainer-clean-aminfo: ! cd $(srcdir) && for i in $(INFO_DEPS); do \ ! rm -f $$i; \ ! if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \ ! rm -f $$i-[0-9]*; \ ! fi; \ done ! install-man1: $(mkinstalldirs) $(DESTDIR)$(man1dir) ! @list='$(man1_MANS)'; \ ! l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ --- 265,296 ---- list='$(INFO_DEPS)'; \ for base in $$list; do \ ! if test -f $$base; then d=.; else d=$(srcdir); fi; \ ! for file in $$d/$$base*; do \ ! relfile=`expr "$$file" : "$$d/\(.*\)"`; \ ! test -f $(distdir)/$$relfile || \ ! cp -p $$file $(distdir)/$$relfile; \ done; \ done mostlyclean-aminfo: ! -rm -f gsl-ref.aux gsl-ref.cp gsl-ref.cps gsl-ref.fn gsl-ref.fns gsl-ref.ky \ ! gsl-ref.kys gsl-ref.log gsl-ref.pg gsl-ref.pgs gsl-ref.tmp \ ! gsl-ref.toc gsl-ref.tp gsl-ref.tps gsl-ref.vr gsl-ref.vrs \ ! gsl-ref.dvi gsl-ref.pdf gsl-ref.ps maintainer-clean-aminfo: ! @list='$(INFO_DEPS)'; for i in $$list; do \ ! i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ ! echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ ! rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ done ! man1dir = $(mandir)/man1 ! install-man1: $(man1_MANS) $(man_MANS) ! @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(man1dir) ! @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ ! l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ ! for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ *************** *** 279,291 **** else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ done - uninstall-man1: ! @list='$(man1_MANS)'; \ ! l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ --- 301,319 ---- else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ done uninstall-man1: ! @$(NORMAL_UNINSTALL) ! @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ ! l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ ! for i in $$l2; do \ case "$$i" in \ *.1*) list="$$list $$i" ;; \ *************** *** 294,298 **** --- 322,331 ---- for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ *************** *** 300,307 **** done ! install-man3: $(mkinstalldirs) $(DESTDIR)$(man3dir) ! @list='$(man3_MANS)'; \ ! l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.3*) list="$$list $$i" ;; \ --- 333,343 ---- done ! man3dir = $(mandir)/man3 ! install-man3: $(man3_MANS) $(man_MANS) ! @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(man3dir) ! @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ ! l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ ! for i in $$l2; do \ case "$$i" in \ *.3*) list="$$list $$i" ;; \ *************** *** 312,324 **** else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst; \ done - uninstall-man3: ! @list='$(man3_MANS)'; \ ! l2='$(man_MANS)'; for i in $$l2; do \ case "$$i" in \ *.3*) list="$$list $$i" ;; \ --- 348,366 ---- else file=$$i; fi; \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 3*) ;; \ + *) ext='3' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst"; \ $(INSTALL_DATA) $$file $(DESTDIR)$(man3dir)/$$inst; \ done uninstall-man3: ! @$(NORMAL_UNINSTALL) ! @list='$(man3_MANS) $(dist_man3_MANS) $(nodist_man3_MANS)'; \ ! l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ ! for i in $$l2; do \ case "$$i" in \ *.3*) list="$$list $$i" ;; \ *************** *** 327,389 **** for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man3dir)/$$inst"; \ rm -f $(DESTDIR)$(man3dir)/$$inst; \ done - install-man: $(MANS) - @$(NORMAL_INSTALL) - $(MAKE) $(AM_MAKEFLAGS) install-man1 install-man3 - uninstall-man: - @$(NORMAL_UNINSTALL) - $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 uninstall-man3 tags: TAGS TAGS: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = doc distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done ! $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info ! info-am: $(INFO_DEPS) ! info: info-am ! dvi-am: $(DVIS) ! dvi: dvi-am check-am: all-am check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-info-am install-man install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-info uninstall-man - uninstall: uninstall-am - all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(mandir)/man1 \ - $(DESTDIR)$(mandir)/man3 - mostlyclean-generic: --- 369,444 ---- for i in $$list; do \ ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 3*) ;; \ + *) ext='3' ;; \ + esac; \ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ inst=`echo $$inst | sed '$(transform)'`.$$ext; \ echo " rm -f $(DESTDIR)$(man3dir)/$$inst"; \ rm -f $(DESTDIR)$(man3dir)/$$inst; \ done tags: TAGS TAGS: + ctags: CTAGS + CTAGS: ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! $(mkinstalldirs) $(distdir)/examples ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done ! $(MAKE) $(AM_MAKEFLAGS) \ ! top_distdir="$(top_distdir)" distdir="$(distdir)" \ ! dist-info check-am: all-am check: check-am ! all-am: Makefile $(INFO_DEPS) $(MANS) $(DATA) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(infodir) $(DESTDIR)$(man1dir) $(DESTDIR)$(man3dir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 392,428 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-vti mostlyclean-aminfo mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-vti clean-aminfo clean-generic mostlyclean-am ! clean: clean-am ! distclean-am: distclean-vti distclean-aminfo distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-vti maintainer-clean-aminfo \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-vti distclean-vti clean-vti maintainer-clean-vti \ ! install-info-am uninstall-info mostlyclean-aminfo distclean-aminfo \ ! clean-aminfo maintainer-clean-aminfo install-man1 uninstall-man1 \ ! install-man3 uninstall-man3 install-man uninstall-man tags distdir \ ! info-am info dvi-am dvi check check-am installcheck-am installcheck \ ! install-exec-am install-exec install-data-am install-data install-am \ ! install uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 447,539 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-generic clean-libtool mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-generic distclean-libtool ! dvi: dvi-am ! dvi-am: $(DVIS) ! info: info-am ! ! info-am: $(INFO_DEPS) ! ! install-data-am: install-info-am install-man ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-info-am: $(INFO_DEPS) ! @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(infodir) ! @list='$(INFO_DEPS)'; \ ! for file in $$list; do \ ! if test -f $$file; then d=.; else d=$(srcdir); fi; \ ! file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ ! for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ ! $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ ! if test -f $$ifile; then \ ! relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ ! echo " $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile"; \ ! $(INSTALL_DATA) $$ifile $(DESTDIR)$(infodir)/$$relfile; \ ! else : ; fi; \ ! done; \ ! done ! @$(POST_INSTALL) ! @if (install-info --version && \ ! install-info --version | grep -i -v debian) >/dev/null 2>&1; then \ ! list='$(INFO_DEPS)'; \ ! for file in $$list; do \ ! relfile=`echo "$$file" | sed 's|^.*/||'`; \ ! echo " install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile";\ ! install-info --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/$$relfile || :;\ ! done; \ ! else : ; fi ! install-man: install-man1 install-man3 ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-aminfo \ ! maintainer-clean-generic maintainer-clean-vti ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ ! mostlyclean-libtool mostlyclean-vti ! ! pdf: pdf-am ! ! pdf-am: $(PDFS) ! ! ps: ps-am ! ! ps-am: $(PSS) ! ! uninstall-am: uninstall-info-am uninstall-man ! ! uninstall-man: uninstall-man1 uninstall-man3 + .PHONY: all all-am check check-am clean clean-generic clean-libtool \ + dist-info distclean distclean-generic distclean-libtool distdir \ + dvi dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man1 install-man3 \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic maintainer-clean-vti mostlyclean \ + mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool \ + mostlyclean-vti pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am uninstall-man uninstall-man1 uninstall-man3 # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/doc/autoconf.texi gsl-1.4/doc/autoconf.texi *** gsl-1.3/doc/autoconf.texi Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/autoconf.texi Sun Mar 2 20:25:29 2003 *************** *** 0 **** --- 1,126 ---- + @cindex autoconf, using with GSL + + For applications using @code{autoconf} the standard macro + @code{AC_CHECK_LIB} can be used to link with the library automatically + from a @code{configure} script. The library itself depends on the + presence of a @sc{cblas} and math library as well, so these must also be + located before linking with the main @code{libgsl} file. The following + commands should be placed in the @file{configure.in} file to perform + these tests, + + @example + AC_CHECK_LIB(m,main) + AC_CHECK_LIB(gslcblas,main) + AC_CHECK_LIB(gsl,main) + @end example + @noindent + It is important to check for @code{libm} and @code{libgslcblas} before + @code{libgsl}, otherwise the tests will fail. Assuming the libraries + are found the output during the configure stage looks like this, + + @example + checking for main in -lm... yes + checking for main in -lgslcblas... yes + checking for main in -lgsl... yes + @end example + @noindent + If the library is found then the tests will define the macros + @code{HAVE_LIBGSL}, @code{HAVE_LIBGSLCBLAS}, @code{HAVE_LIBM} and add + the options @code{-lgsl -lgslcblas -lm} to the variable @code{LIBS}. + + The tests above will find any version of the library. They are suitable + for general use, where the versions of the functions are not important. + An alternative macro is available in the file @file{gsl.m4} to test for + a specific version of the library. To use this macro simply add the + following line to your @file{configure.in} file instead of the tests + above: + + @example + AM_PATH_GSL(GSL_VERSION, + [action-if-found], + [action-if-not-found]) + @end example + @noindent + The argument @code{GSL_VERSION} should be the two or three digit + @sc{major.minor} or @sc{major.minor.micro} version number of the release + you require. A suitable choice for @code{action-if-not-found} is, + + @example + AC_MSG_ERROR(could not find required version of GSL) + @end example + @noindent + Then you can add the variables @code{GSL_LIBS} and @code{GSL_CFLAGS} to + your Makefile.am files to obtain the correct compiler flags. + @code{GSL_LIBS} is equal to the output of the @code{gsl-config --libs} + command and @code{GSL_CFLAGS} is equal to @code{gsl-config --cflags} + command. For example, + + @example + libgsdv_la_LDFLAGS = \ + $(GTK_LIBDIR) \ + $(GTK_LIBS) -lgsdvgsl $(GSL_LIBS) -lgslcblas + @end example + @noindent + Note that the macro @code{AM_PATH_GSL} needs to use the C compiler so it + should appear in the @file{configure.in} file before the macro + @code{AC_LANG_CPLUSPLUS} for programs that use C++. + + To test for @code{inline} the following test should be placed in your + @file{configure.in} file, + + @example + AC_C_INLINE + + if test "$ac_cv_c_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + @end example + @noindent + and the macro will then be defined in the compilation flags or by + including the file @file{config.h} before any library headers. + + The following autoconf test will check for @code{extern inline}, + + @smallexample + dnl Check for "extern inline", using a modified version + dnl of the test for AC_C_INLINE from acspecific.mt + dnl + AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, + [ac_cv_c_extern_inline=no + AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); + extern $ac_cv_c_inline double foo(double x) @{ return x+1.0; @}; + double foo (double x) @{ return x + 1.0; @};], + [ foo(1.0) ], + [ac_cv_c_extern_inline="yes"]) + ]) + + if test "$ac_cv_c_extern_inline" != no ; then + AC_DEFINE(HAVE_INLINE,1) + AC_SUBST(HAVE_INLINE) + fi + @end smallexample + + The substitution of portability functions can be made automatically if + you use @code{autoconf}. For example, to test whether the BSD function + @code{hypot} is available you can include the following line in the + configure file @file{configure.in} for your application, + + @example + AC_CHECK_FUNCS(hypot) + @end example + @noindent + and place the following macro definitions in the file + @file{config.h.in}, + + @example + /* Substitute gsl_hypot for missing system hypot */ + + #ifndef HAVE_HYPOT + #define hypot gsl_hypot + #endif + @end example + @noindent + The application source files can then use the include command + @code{#include } to substitute @code{gsl_hypot} for each + occurrence of @code{hypot} when @code{hypot} is not available. diff -x.info* -rc2P gsl-1.3/doc/blas.texi gsl-1.4/doc/blas.texi *** gsl-1.3/doc/blas.texi Sat Aug 17 14:56:44 2002 --- gsl-1.4/doc/blas.texi Mon Jun 2 15:26:48 2003 *************** *** 4,7 **** --- 4,8 ---- @cindex BLAS @cindex CBLAS + @cindex Basic Linear Algebra Subroutines (BLAS) The Basic Linear Algebra Subprograms (@sc{blas}) define a set of fundamental *************** *** 21,25 **** The interface for the @code{gsl_cblas} layer is specified in the file ! @code{gsl_cblas.h}. This interface corresponds the @sc{blas} Technical Forum's draft standard for the C interface to legacy @sc{blas} implementations. Users who have access to other conforming @sc{cblas} --- 22,26 ---- The interface for the @code{gsl_cblas} layer is specified in the file ! @code{gsl_cblas.h}. This interface corresponds to the @sc{blas} Technical Forum's draft standard for the C interface to legacy @sc{blas} implementations. Users who have access to other conforming @sc{cblas} *************** *** 135,145 **** @deftypefun int gsl_blas_sdsdot (float @var{alpha}, const gsl_vector_float * @var{x}, const gsl_vector_float * @var{y}, float * @var{result}) - @deftypefunx int gsl_blas_dsdot (const gsl_vector_float * @var{x}, const gsl_vector_float * @var{y}, double * @var{result}) @cindex DOT, Level-1 BLAS ! These functions compute the sum @math{\alpha + x^T y} for the vectors @var{x} and @var{y}, returning the result in @var{result}. @end deftypefun @deftypefun int gsl_blas_sdot (const gsl_vector_float * @var{x}, const gsl_vector_float * @var{y}, float * @var{result}) @deftypefunx int gsl_blas_ddot (const gsl_vector * @var{x}, const gsl_vector * @var{y}, double * @var{result}) These functions compute the scalar product @math{x^T y} for the vectors --- 136,146 ---- @deftypefun int gsl_blas_sdsdot (float @var{alpha}, const gsl_vector_float * @var{x}, const gsl_vector_float * @var{y}, float * @var{result}) @cindex DOT, Level-1 BLAS ! This function computes the sum @math{\alpha + x^T y} for the vectors @var{x} and @var{y}, returning the result in @var{result}. @end deftypefun @deftypefun int gsl_blas_sdot (const gsl_vector_float * @var{x}, const gsl_vector_float * @var{y}, float * @var{result}) + @deftypefunx int gsl_blas_dsdot (const gsl_vector_float * @var{x}, const gsl_vector_float * @var{y}, double * @var{result}) @deftypefunx int gsl_blas_ddot (const gsl_vector * @var{x}, const gsl_vector * @var{y}, double * @var{result}) These functions compute the scalar product @math{x^T y} for the vectors *************** *** 195,200 **** @deftypefun float gsl_blas_scasum (const gsl_vector_complex_float * @var{x}) @deftypefunx double gsl_blas_dzasum (const gsl_vector_complex * @var{x}) ! These functions compute the absolute sum @math{\sum |\Re(x_i)| + ! |\Im(x_i)|} of the elements of the vector @var{x}. @end deftypefun --- 196,203 ---- @deftypefun float gsl_blas_scasum (const gsl_vector_complex_float * @var{x}) @deftypefunx double gsl_blas_dzasum (const gsl_vector_complex * @var{x}) ! These functions compute the sum of the magnitudes of the real and ! imaginary parts of the complex vector @var{x}, ! @c{$\sum \left( |\Re(x_i)| + |\Im(x_i)| \right)$} ! @math{\sum |\Re(x_i)| + |\Im(x_i)|}. @end deftypefun *************** *** 250,255 **** @end deftypefun ! @deftypefun int gsl_blas_srotg (float a[], float b[], float c[], float s[]) ! @deftypefunx int gsl_blas_drotg (double a[], double b[], double c[], double s[]) @cindex ROTG, Level-1 BLAS @cindex Givens Rotation, BLAS --- 253,258 ---- @end deftypefun ! @deftypefun int gsl_blas_srotg (float @var{a}[], float @var{b}[], float @var{c}[], float @var{s}[]) ! @deftypefunx int gsl_blas_drotg (double @var{a}[], double @var{b}[], double @var{c}[], double @var{s}[]) @cindex ROTG, Level-1 BLAS @cindex Givens Rotation, BLAS *************** *** 292,305 **** @end deftypefun ! @deftypefun int gsl_blas_srotmg (float d1[], float d2[], float b1[], float @var{b2}, float P[]) ! @deftypefunx int gsl_blas_drotmg (double d1[], double d2[], double b1[], double @var{b2}, double P[]) @cindex Modified Givens Rotation, BLAS @cindex Givens Rotation, Modified, BLAS ! These functions compute a modified Given's transformation. @end deftypefun ! @deftypefun int gsl_blas_srotm (gsl_vector_float * @var{x}, gsl_vector_float * @var{y}, const float P[]) ! @deftypefunx int gsl_blas_drotm (gsl_vector * @var{x}, gsl_vector * @var{y}, const double P[]) ! These functions apply a modified Given's transformation. @end deftypefun --- 295,310 ---- @end deftypefun ! @deftypefun int gsl_blas_srotmg (float @var{d1}[], float @var{d2}[], float @var{b1}[], float @var{b2}, float @var{P}[]) ! @deftypefunx int gsl_blas_drotmg (double @var{d1}[], double @var{d2}[], double @var{b1}[], double @var{b2}, double @var{P}[]) @cindex Modified Givens Rotation, BLAS @cindex Givens Rotation, Modified, BLAS ! These functions compute a modified Given's transformation. The modified ! Given's transformation is defined in the original Level-1 @sc{blas} ! specification, given in the references. @end deftypefun ! @deftypefun int gsl_blas_srotm (gsl_vector_float * @var{x}, gsl_vector_float * @var{y}, const float @var{P}[]) ! @deftypefunx int gsl_blas_drotm (gsl_vector * @var{x}, gsl_vector * @var{y}, const double @var{P}[]) ! These functions apply a modified Given's transformation. @end deftypefun *************** *** 573,577 **** @math{C = \alpha A B^H + \alpha^* B A^H + \beta C} when @var{Trans} is @code{CblasNoTrans} and @math{C = \alpha A^H B + \alpha^* B^H A + \beta C} when ! @var{Trans} is @code{CblasTrans}. Since the matrix @var{C} is hermitian only its upper half or lower half need to be stored. When @var{Uplo} is @code{CblasUpper} then the upper triangle and diagonal of @var{C} are --- 578,582 ---- @math{C = \alpha A B^H + \alpha^* B A^H + \beta C} when @var{Trans} is @code{CblasNoTrans} and @math{C = \alpha A^H B + \alpha^* B^H A + \beta C} when ! @var{Trans} is @code{CblasConjTrans}. Since the matrix @var{C} is hermitian only its upper half or lower half need to be stored. When @var{Uplo} is @code{CblasUpper} then the upper triangle and diagonal of @var{C} are *************** *** 619,653 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! double a[] = @{ 0.11, 0.12, 0.13, ! 0.21, 0.22, 0.23 @}; ! ! double b[] = @{ 1011, 1012, ! 1021, 1022, ! 1031, 1032 @}; ! ! double c[] = @{ 0.00, 0.00, ! 0.00, 0.00 @}; ! ! gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3); ! gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2); ! gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2); ! ! /* Compute C = A B */ ! ! gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, ! 1.0, &A.matrix, &B.matrix, ! 0.0, &C.matrix); ! ! printf("[ %g, %g\n", c[0], c[1]); ! printf(" %g, %g ]\n", c[2], c[3]); ! ! return 0; ! @} @end example @noindent --- 624,628 ---- @example ! @verbatiminclude examples/blas.c @end example @noindent *************** *** 655,660 **** @example $ ./a.out ! [ 367.76, 368.12 ! 674.06, 674.72 ] @end example --- 630,634 ---- @example $ ./a.out ! @verbatiminclude examples/blas.out @end example Only in gsl-1.3/doc: bugs.texi diff -x.info* -rc2P gsl-1.3/doc/cblas.texi gsl-1.4/doc/cblas.texi *** gsl-1.3/doc/cblas.texi Sat Oct 20 18:31:29 2001 --- gsl-1.4/doc/cblas.texi Mon Jun 2 15:27:50 2003 *************** *** 1,5 **** @cindex Low-level CBLAS @cindex CBLAS, Low-level interface ! The prototypes for the low-level @sc{cblas} functions are declared in the file @code{gsl_cblas.h}. For the definition of the functions --- 1,6 ---- @cindex Low-level CBLAS @cindex CBLAS, Low-level interface ! @cindex BLAS, Low-level C interface ! @cindex Basic Linear Algebra Subroutines (BLAS) The prototypes for the low-level @sc{cblas} functions are declared in the file @code{gsl_cblas.h}. For the definition of the functions *************** *** 492,528 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int lda = 3; ! ! float A[] = @{ 0.11, 0.12, 0.13, ! 0.21, 0.22, 0.23 @}; ! ! int ldb = 2; ! ! float B[] = @{ 1011, 1012, ! 1021, 1022, ! 1031, 1032 @}; ! ! int ldc = 2; ! ! float C[] = @{ 0.00, 0.00, ! 0.00, 0.00 @}; ! ! /* Compute C = A B */ ! ! cblas_sgemm (CblasRowMajor, ! CblasNoTrans, CblasNoTrans, 2, 2, 3, ! 1.0, A, lda, B, ldb, 0.0, C, ldc); ! ! printf("[ %g, %g\n", C[0], C[1]); ! printf(" %g, %g ]\n", C[2], C[3]); ! ! return 0; ! @} @end example @noindent --- 493,497 ---- @example ! @verbatiminclude examples/cblas.c @end example @noindent *************** *** 538,542 **** @example $ ./a.out ! [ 367.76, 368.12 ! 674.06, 674.72 ] @end example --- 507,510 ---- @example $ ./a.out ! @verbatiminclude examples/cblas.out @end example diff -x.info* -rc2P gsl-1.3/doc/cheb.texi gsl-1.4/doc/cheb.texi *** gsl-1.3/doc/cheb.texi Sat Oct 20 18:31:29 2001 --- gsl-1.4/doc/cheb.texi Mon Jun 9 15:24:27 2003 *************** *** 11,14 **** --- 11,15 ---- @math{1 / \sqrt@{1-x^2@}}. The first few Chebyshev polynomials are, @math{T_0(x) = 1}, @math{T_1(x) = x}, @math{T_2(x) = 2 x^2 - 1}. + For further information see Abramowitz & Stegun, Chapter 22. The functions described in this chapter are declared in the header file *************** *** 39,44 **** @end example @noindent ! The approximation is made over the range @math{[a,b]} using @var{order}+1 ! terms, including the coefficient @math{c[0]}. @node Creation and Calculation of Chebyshev Series --- 40,61 ---- @end example @noindent ! The approximation is made over the range @math{[a,b]} using ! @var{order}+1 terms, including the coefficient @math{c[0]}. The series ! is computed using the following convention, ! ! @tex ! \beforedisplay ! $$ ! f(x) = {c_0 \over 2} + \sum_{n=1} c_n T_n(x) ! $$ ! \afterdisplay ! @end tex ! @ifinfo ! @example ! f(x) = (c_0 / 2) + \sum_@{n=1@} c_n T_n(x) ! @end example ! @end ifinfo ! @noindent ! which is needed when accessing the coefficients directly. @node Creation and Calculation of Chebyshev Series *************** *** 132,175 **** @example ! #include ! #include ! #include ! ! double ! f (double x, void *p) ! @{ ! if (x < 0.5) ! return 0.25; ! else ! return 0.75; ! @} ! ! int ! main (void) ! @{ ! int i, n = 10000; ! ! gsl_cheb_series *cs = gsl_cheb_alloc (40); ! ! gsl_function F; ! ! F.function = f; ! F.params = 0; ! ! gsl_cheb_init (cs, &F, 0.0, 1.0); ! ! for (i = 0; i < n; i++) ! @{ ! double x = i / (double)n; ! double r10 = gsl_cheb_eval_n (cs, 10, x); ! double r40 = gsl_cheb_eval (cs, x); ! printf ("%g %g %g %g\n", ! x, GSL_FN_EVAL (&F, x), r10, r40); ! @} ! ! gsl_cheb_free (cs); ! ! return 0; ! @} @end example --- 149,153 ---- @example ! @verbatiminclude examples/cheb.c @end example *************** *** 181,185 **** @iftex @sp 1 ! @center @image{cheb,4in} @end iftex --- 159,163 ---- @iftex @sp 1 ! @center @image{cheb,3.4in} @end iftex diff -x.info* -rc2P gsl-1.3/doc/combination.texi gsl-1.4/doc/combination.texi *** gsl-1.3/doc/combination.texi Mon Jun 10 11:59:13 2002 --- gsl-1.4/doc/combination.texi Mon Jun 2 15:38:04 2003 *************** *** 20,23 **** --- 20,24 ---- * Reading and writing combinations:: * Combination Examples:: + * Combination References and Further Reading:: @end menu *************** *** 54,58 **** @end deftypefun ! @deftypefun {gsl_combination *} gsl_combination_calloc (size_t @var{n}) This function allocates memory for a new combination with parameters @var{n}, @var{k} and initializes it to the lexicographically first --- 55,59 ---- @end deftypefun ! @deftypefun {gsl_combination *} gsl_combination_calloc (size_t @var{n}, size_t @var{k}) This function allocates memory for a new combination with parameters @var{n}, @var{k} and initializes it to the lexicographically first *************** *** 75,78 **** --- 76,85 ---- @end deftypefun + @deftypefun int gsl_combination_memcpy (gsl_combination * @var{dest}, const gsl_combination * @var{src}) + This function copies the elements of the combination @var{src} into the + combination @var{dest}. The two combinations must have the same sizes. + @end deftypefun + + @node Accessing combination elements @section Accessing combination elements *************** *** 118,122 **** in lexicographic order and returns @code{GSL_SUCCESS}. If no further combinations are available it returns @code{GSL_FAILURE} and leaves ! @var{c} unmodified. Starting with the fisrst combination and repeatedly applying this function will iterate through all possible combinations of a given order. --- 125,129 ---- in lexicographic order and returns @code{GSL_SUCCESS}. If no further combinations are available it returns @code{GSL_FAILURE} and leaves ! @var{c} unmodified. Starting with the first combination and repeatedly applying this function will iterate through all possible combinations of a given order. *************** *** 180,208 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! gsl_combination * c; ! size_t i; ! ! printf("All subsets of @{0,1,2,3@} by size:\n") ; ! for(i = 0; i <= 4; i++) ! @{ ! c = gsl_combination_calloc (4, i); ! do ! @{ ! printf("@{"); ! gsl_combination_fprintf (stdout, c, " %u"); ! printf(" @}\n"); ! @} ! while (gsl_combination_next(c) == GSL_SUCCESS); ! gsl_combination_free(c); ! @} ! ! return 0; ! @} @end example @noindent --- 187,191 ---- @example ! @verbatiminclude examples/combination.c @end example @noindent *************** *** 211,231 **** @example bash$ ./a.out ! All subsets of @{0,1,2,3@} by size: ! @{ @} ! @{ 0 @} ! @{ 1 @} ! @{ 2 @} ! @{ 3 @} ! @{ 0 1 @} ! @{ 0 2 @} ! @{ 0 3 @} ! @{ 1 2 @} ! @{ 1 3 @} ! @{ 2 3 @} ! @{ 0 1 2 @} ! @{ 0 1 3 @} ! @{ 0 2 3 @} ! @{ 1 2 3 @} ! @{ 0 1 2 3 @} @end example @noindent --- 194,198 ---- @example bash$ ./a.out ! @verbatiminclude examples/combination.out @end example @noindent *************** *** 234,236 **** --- 201,222 ---- All 16 subsets are generated, and the subsets of each size are sorted lexicographically. + + + @node Combination References and Further Reading + @section References and Further Reading + @noindent + Further information on combinations can be found in, + + @itemize @asis + @item + Donald L. Kreher, Douglas R. Stinson, @cite{Combinatorial Algorithms: + Generation, Enumeration and Search}, 1998, CRC Press LLC, ISBN + 084933988X + + @item + Donald E. Knuth, @cite{The Art of Computer Programming: Combinatorial + Algorithms} (Vol 4, pre-fascicle 2c) + @url{http://www-cs-faculty.stanford.edu/~knuth/fasc2c.ps.gz} + @end itemize + @noindent diff -x.info* -rc2P gsl-1.3/doc/complex.texi gsl-1.4/doc/complex.texi *** gsl-1.3/doc/complex.texi Mon Jan 28 19:06:09 2002 --- gsl-1.4/doc/complex.texi Thu May 8 18:58:51 2003 *************** *** 214,218 **** @end deftypefun ! @deftypefun gsl_complex gsl_complex_sqrt_real (double x) This function returns the complex square root of the real number @var{x}, where @var{x} may be negative. --- 214,218 ---- @end deftypefun ! @deftypefun gsl_complex gsl_complex_sqrt_real (double @var{x}) This function returns the complex square root of the real number @var{x}, where @var{x} may be negative. diff -x.info* -rc2P gsl-1.3/doc/const.texi gsl-1.4/doc/const.texi *** gsl-1.3/doc/const.texi Wed May 29 21:40:30 2002 --- gsl-1.4/doc/const.texi Wed Jun 11 12:03:34 2003 *************** *** 6,15 **** as the speed of light, @math{c}, and gravitational constant, @math{G}. The values are available in different unit systems, including the ! standard MKS system (meters, kilograms, seconds) and the CGS system ! (centimeters, grams, seconds), which is commonly used in Astronomy. ! ! The definitions of constants in the MKS system are available in the file ! @file{gsl_const_mks.h}. The constants in the CGS system are defined in ! @file{gsl_const_cgs.h}. Dimensionless constants, such as the fine structure constant, which are pure numbers are defined in @file{gsl_const_num.h}. --- 6,16 ---- as the speed of light, @math{c}, and gravitational constant, @math{G}. The values are available in different unit systems, including the ! standard MKSA system (meters, kilograms, seconds, amperes) and the CGSM ! system (centimeters, grams, seconds, gauss), which is commonly used in ! Astronomy. ! ! The definitions of constants in the MKSA system are available in the file ! @file{gsl_const_mksa.h}. The constants in the CGSM system are defined in ! @file{gsl_const_cgsm.h}. Dimensionless constants, such as the fine structure constant, which are pure numbers are defined in @file{gsl_const_num.h}. *************** *** 45,55 **** @cindex constants, fundamental @table @code ! @item GSL_CONST_MKS_SPEED_OF_LIGHT The speed of light in vacuum, @math{c}. ! @item GSL_CONST_MKS_VACUUM_PERMEABILITY The permeability of free space, @math{\mu_0} ! @item GSL_CONST_MKS_VACUUM_PERMITTIVITY The permittivity of free space, @math{\epsilon_0}. --- 46,56 ---- @cindex constants, fundamental @table @code ! @item GSL_CONST_MKSA_SPEED_OF_LIGHT The speed of light in vacuum, @math{c}. ! @item GSL_CONST_MKSA_VACUUM_PERMEABILITY The permeability of free space, @math{\mu_0} ! @item GSL_CONST_MKSA_VACUUM_PERMITTIVITY The permittivity of free space, @math{\epsilon_0}. *************** *** 57,85 **** Avogadro's number, @math{N_a}. ! @item GSL_CONST_MKS_FARADAY The molar charge of 1 Faraday. ! @item GSL_CONST_MKS_BOLTZMANN The Boltzmann constant, @math{k}. ! @item GSL_CONST_MKS_MOLAR_GAS The molar gas constant, @math{R_0}. ! @item GSL_CONST_MKS_STANDARD_GAS_VOLUME The standard gas volume, @math{V_0}. ! @item GSL_CONST_MKS_GAUSS The magnetic field of 1 Gauss. ! @item GSL_CONST_MKS_MICRON The length of 1 micron. ! @item GSL_CONST_MKS_HECTARE The area of 1 hectare. ! @item GSL_CONST_MKS_MILES_PER_HOUR The speed of 1 mile per hour. ! @item GSL_CONST_MKS_KILOMETERS_PER_HOUR The speed of 1 kilometer per hour. @end table --- 58,86 ---- Avogadro's number, @math{N_a}. ! @item GSL_CONST_MKSA_FARADAY The molar charge of 1 Faraday. ! @item GSL_CONST_MKSA_BOLTZMANN The Boltzmann constant, @math{k}. ! @item GSL_CONST_MKSA_MOLAR_GAS The molar gas constant, @math{R_0}. ! @item GSL_CONST_MKSA_STANDARD_GAS_VOLUME The standard gas volume, @math{V_0}. ! @item GSL_CONST_MKSA_GAUSS The magnetic field of 1 Gauss. ! @item GSL_CONST_MKSA_MICRON The length of 1 micron. ! @item GSL_CONST_MKSA_HECTARE The area of 1 hectare. ! @item GSL_CONST_MKSA_MILES_PER_HOUR The speed of 1 mile per hour. ! @item GSL_CONST_MKSA_KILOMETERS_PER_HOUR The speed of 1 kilometer per hour. @end table *************** *** 89,108 **** @cindex astronomical constants @table @code ! @item GSL_CONST_MKS_ASTRONOMICAL_UNIT The length of 1 astronomical unit (mean earth-sun distance), @math{au}. ! @item GSL_CONST_MKS_GRAVITATIONAL_CONSTANT The gravitational constant, @math{G}. ! @item GSL_CONST_MKS_LIGHT_YEAR The distance of 1 light-year, @math{ly}. ! @item GSL_CONST_MKS_PARSEC The distance of 1 parsec, @math{pc}. ! @item GSL_CONST_MKS_GRAV_ACCEL The standard gravitational acceleration on Earth, @math{g}. ! @item GSL_CONST_MKS_SOLAR_MASS The mass of the Sun. @end table --- 90,109 ---- @cindex astronomical constants @table @code ! @item GSL_CONST_MKSA_ASTRONOMICAL_UNIT The length of 1 astronomical unit (mean earth-sun distance), @math{au}. ! @item GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT The gravitational constant, @math{G}. ! @item GSL_CONST_MKSA_LIGHT_YEAR The distance of 1 light-year, @math{ly}. ! @item GSL_CONST_MKSA_PARSEC The distance of 1 parsec, @math{pc}. ! @item GSL_CONST_MKSA_GRAV_ACCEL The standard gravitational acceleration on Earth, @math{g}. ! @item GSL_CONST_MKSA_SOLAR_MASS The mass of the Sun. @end table *************** *** 113,135 **** @cindex nuclear physics, constants @table @code ! @item GSL_CONST_MKS_ELECTRON_CHARGE The charge of the electron, @math{e}. ! @item GSL_CONST_MKS_ELECTRON_VOLT The energy of 1 electron volt, @math{eV}. ! @item GSL_CONST_MKS_UNIFIED_ATOMIC_MASS The unified atomic mass, @math{amu}. ! @item GSL_CONST_MKS_MASS_ELECTRON The mass of the electron, @math{m_e}. ! @item GSL_CONST_MKS_MASS_MUON The mass of the muon, @math{m_\mu}. ! @item GSL_CONST_MKS_MASS_PROTON The mass of the proton, @math{m_p}. ! @item GSL_CONST_MKS_MASS_NEUTRON The mass of the neutron, @math{m_n}. --- 114,136 ---- @cindex nuclear physics, constants @table @code ! @item GSL_CONST_MKSA_ELECTRON_CHARGE The charge of the electron, @math{e}. ! @item GSL_CONST_MKSA_ELECTRON_VOLT The energy of 1 electron volt, @math{eV}. ! @item GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS The unified atomic mass, @math{amu}. ! @item GSL_CONST_MKSA_MASS_ELECTRON The mass of the electron, @math{m_e}. ! @item GSL_CONST_MKSA_MASS_MUON The mass of the muon, @math{m_\mu}. ! @item GSL_CONST_MKSA_MASS_PROTON The mass of the proton, @math{m_p}. ! @item GSL_CONST_MKSA_MASS_NEUTRON The mass of the neutron, @math{m_n}. *************** *** 137,164 **** The electromagnetic fine structure constant @math{\alpha}. ! @item GSL_CONST_MKS_RYDBERG The Rydberg constant, @math{Ry}, in units of energy. This is related to the Rydberg inverse wavelength @math{R} by @math{Ry = h c R}. ! @item GSL_CONST_MKS_BOHR_RADIUS The Bohr radius, @math{a_0}. ! @item GSL_CONST_MKS_ANGSTROM The length of 1 angstrom. ! @item GSL_CONST_MKS_BARN The area of 1 barn. ! @item GSL_CONST_MKS_BOHR_MAGNETON The Bohr Magneton, @math{\mu_B}. ! @item GSL_CONST_MKS_NUCLEAR_MAGNETON The Nuclear Magneton, @math{\mu_N}. ! @item GSL_CONST_MKS_ELECTRON_MAGNETIC_MOMENT The absolute value of the magnetic moment of the electron, @math{\mu_e}. ! The physical magnetic moment of the election is negative. ! @item GSL_CONST_MKS_PROTON_MAGNETIC_MOMENT The magnetic moment of the proton, @math{\mu_p}. @end table --- 138,165 ---- The electromagnetic fine structure constant @math{\alpha}. ! @item GSL_CONST_MKSA_RYDBERG The Rydberg constant, @math{Ry}, in units of energy. This is related to the Rydberg inverse wavelength @math{R} by @math{Ry = h c R}. ! @item GSL_CONST_MKSA_BOHR_RADIUS The Bohr radius, @math{a_0}. ! @item GSL_CONST_MKSA_ANGSTROM The length of 1 angstrom. ! @item GSL_CONST_MKSA_BARN The area of 1 barn. ! @item GSL_CONST_MKSA_BOHR_MAGNETON The Bohr Magneton, @math{\mu_B}. ! @item GSL_CONST_MKSA_NUCLEAR_MAGNETON The Nuclear Magneton, @math{\mu_N}. ! @item GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT The absolute value of the magnetic moment of the electron, @math{\mu_e}. ! The physical magnetic moment of the electron is negative. ! @item GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT The magnetic moment of the proton, @math{\mu_p}. @end table *************** *** 169,182 **** @cindex time units @table @code ! @item GSL_CONST_MKS_MINUTE The number of seconds in 1 minute. ! @item GSL_CONST_MKS_HOUR The number of seconds in 1 hour. ! @item GSL_CONST_MKS_DAY The number of seconds in 1 day. ! @item GSL_CONST_MKS_WEEK The number of seconds in 1 week. @end table --- 170,183 ---- @cindex time units @table @code ! @item GSL_CONST_MKSA_MINUTE The number of seconds in 1 minute. ! @item GSL_CONST_MKSA_HOUR The number of seconds in 1 hour. ! @item GSL_CONST_MKSA_DAY The number of seconds in 1 day. ! @item GSL_CONST_MKSA_WEEK The number of seconds in 1 week. @end table *************** *** 188,204 **** @cindex units, imperial @table @code ! @item GSL_CONST_MKS_INCH The length of 1 inch. ! @item GSL_CONST_MKS_FOOT The length of 1 foot. ! @item GSL_CONST_MKS_YARD The length of 1 yard. ! @item GSL_CONST_MKS_MILE The length of 1 mile. ! @item GSL_CONST_MKS_MIL The length of 1 mil (1/1000th of an inch). @end table --- 189,205 ---- @cindex units, imperial @table @code ! @item GSL_CONST_MKSA_INCH The length of 1 inch. ! @item GSL_CONST_MKSA_FOOT The length of 1 foot. ! @item GSL_CONST_MKSA_YARD The length of 1 yard. ! @item GSL_CONST_MKSA_MILE The length of 1 mile. ! @item GSL_CONST_MKSA_MIL The length of 1 mil (1/1000th of an inch). @end table *************** *** 210,220 **** @table @code ! @item GSL_CONST_MKS_NAUTICAL_MILE The length of 1 nautical mile. ! @item GSL_CONST_MKS_FATHOM The length of 1 fathom. ! @item GSL_CONST_MKS_KNOT The speed of 1 knot. @end table --- 211,221 ---- @table @code ! @item GSL_CONST_MKSA_NAUTICAL_MILE The length of 1 nautical mile. ! @item GSL_CONST_MKSA_FATHOM The length of 1 fathom. ! @item GSL_CONST_MKSA_KNOT The speed of 1 knot. @end table *************** *** 226,233 **** @table @code ! @item GSL_CONST_MKS_POINT The length of 1 printer's point (1/72 inch). ! @item GSL_CONST_MKS_TEXPOINT The length of 1 TeX point (1/72.27 inch). @end table --- 227,234 ---- @table @code ! @item GSL_CONST_MKSA_POINT The length of 1 printer's point (1/72 inch). ! @item GSL_CONST_MKSA_TEXPOINT The length of 1 TeX point (1/72.27 inch). @end table *************** *** 239,261 **** @table @code ! @item GSL_CONST_MKS_ACRE The area of 1 acre. ! @item GSL_CONST_MKS_LITER The volume of 1 liter. ! @item GSL_CONST_MKS_US_GALLON The volume of 1 US gallon. ! @item GSL_CONST_MKS_CANADIAN_GALLON The volume of 1 Canadian gallon. ! @item GSL_CONST_MKS_UK_GALLON The volume of 1 UK gallon. ! @item GSL_CONST_MKS_QUART The volume of 1 quart. ! @item GSL_CONST_MKS_PINT The volume of 1 pint. @end table --- 240,262 ---- @table @code ! @item GSL_CONST_MKSA_ACRE The area of 1 acre. ! @item GSL_CONST_MKSA_LITER The volume of 1 liter. ! @item GSL_CONST_MKSA_US_GALLON The volume of 1 US gallon. ! @item GSL_CONST_MKSA_CANADIAN_GALLON The volume of 1 Canadian gallon. ! @item GSL_CONST_MKSA_UK_GALLON The volume of 1 UK gallon. ! @item GSL_CONST_MKSA_QUART The volume of 1 quart. ! @item GSL_CONST_MKSA_PINT The volume of 1 pint. @end table *************** *** 267,280 **** @comment @table @commentode ! @comment @item GSL_CONST_MKS_CUP @comment The volume of 1 cup. ! @comment @item GSL_CONST_MKS_FLUID_OUNCE @comment The volume of 1 fluid ounce. ! @comment @item GSL_CONST_MKS_TABLESPOON @comment The volume of 1 tablespoon. ! @comment @item GSL_CONST_MKS_TEASPOON @comment The volume of 1 teaspoon. @comment @end table --- 268,281 ---- @comment @table @commentode ! @comment @item GSL_CONST_MKSA_CUP @comment The volume of 1 cup. ! @comment @item GSL_CONST_MKSA_FLUID_OUNCE @comment The volume of 1 fluid ounce. ! @comment @item GSL_CONST_MKSA_TABLESPOON @comment The volume of 1 tablespoon. ! @comment @item GSL_CONST_MKSA_TEASPOON @comment The volume of 1 teaspoon. @comment @end table *************** *** 286,320 **** @cindex weight, units of @table @code ! @item GSL_CONST_MKS_POUND_MASS The mass of 1 pound. ! @item GSL_CONST_MKS_OUNCE_MASS The mass of 1 ounce. ! @item GSL_CONST_MKS_TON The mass of 1 ton. ! @item GSL_CONST_MKS_METRIC_TON The mass of 1 metric ton (1000 kg). ! @item GSL_CONST_MKS_UK_TON The mass of 1 UK ton. ! @item GSL_CONST_MKS_TROY_OUNCE The mass of 1 troy ounce. ! @item GSL_CONST_MKS_CARAT The mass of 1 carat. ! @item GSL_CONST_MKS_GRAM_FORCE The force of 1 gram weight. ! @item GSL_CONST_MKS_POUND_FORCE The force of 1 pound weight. ! @item GSL_CONST_MKS_KILOPOUND_FORCE The force of 1 kilopound weight. ! @item GSL_CONST_MKS_POUNDAL The force of 1 poundal. @end table --- 287,321 ---- @cindex weight, units of @table @code ! @item GSL_CONST_MKSA_POUND_MASS The mass of 1 pound. ! @item GSL_CONST_MKSA_OUNCE_MASS The mass of 1 ounce. ! @item GSL_CONST_MKSA_TON The mass of 1 ton. ! @item GSL_CONST_MKSA_METRIC_TON The mass of 1 metric ton (1000 kg). ! @item GSL_CONST_MKSA_UK_TON The mass of 1 UK ton. ! @item GSL_CONST_MKSA_TROY_OUNCE The mass of 1 troy ounce. ! @item GSL_CONST_MKSA_CARAT The mass of 1 carat. ! @item GSL_CONST_MKSA_GRAM_FORCE The force of 1 gram weight. ! @item GSL_CONST_MKSA_POUND_FORCE The force of 1 pound weight. ! @item GSL_CONST_MKSA_KILOPOUND_FORCE The force of 1 kilopound weight. ! @item GSL_CONST_MKSA_POUNDAL The force of 1 poundal. @end table *************** *** 327,340 **** @cindex thermal energy, units of @table @code ! @item GSL_CONST_MKS_CALORIE The energy of 1 calorie. ! @item GSL_CONST_MKS_BTU The energy of 1 British Thermal Unit, @math{btu}. ! @item GSL_CONST_MKS_THERM The energy of 1 Therm. ! @item GSL_CONST_MKS_HORSEPOWER The power of 1 horsepower. @end table --- 328,341 ---- @cindex thermal energy, units of @table @code ! @item GSL_CONST_MKSA_CALORIE The energy of 1 calorie. ! @item GSL_CONST_MKSA_BTU The energy of 1 British Thermal Unit, @math{btu}. ! @item GSL_CONST_MKSA_THERM The energy of 1 Therm. ! @item GSL_CONST_MKSA_HORSEPOWER The power of 1 horsepower. @end table *************** *** 345,367 **** @cindex pressure, units of @table @code ! @item GSL_CONST_MKS_BAR The pressure of 1 bar. ! @item GSL_CONST_MKS_STD_ATMOSPHERE The pressure of 1 standard atmosphere. ! @item GSL_CONST_MKS_TORR The pressure of 1 torr. ! @item GSL_CONST_MKS_METER_OF_MERCURY The pressure of 1 meter of mercury. ! @item GSL_CONST_MKS_INCH_OF_MERCURY The pressure of 1 inch of mercury. ! @item GSL_CONST_MKS_INCH_OF_WATER The pressure of 1 inch of water. ! @item GSL_CONST_MKS_PSI The pressure of 1 pound per square inch. @end table --- 346,368 ---- @cindex pressure, units of @table @code ! @item GSL_CONST_MKSA_BAR The pressure of 1 bar. ! @item GSL_CONST_MKSA_STD_ATMOSPHERE The pressure of 1 standard atmosphere. ! @item GSL_CONST_MKSA_TORR The pressure of 1 torr. ! @item GSL_CONST_MKSA_METER_OF_MERCURY The pressure of 1 meter of mercury. ! @item GSL_CONST_MKSA_INCH_OF_MERCURY The pressure of 1 inch of mercury. ! @item GSL_CONST_MKSA_INCH_OF_WATER The pressure of 1 inch of water. ! @item GSL_CONST_MKSA_PSI The pressure of 1 pound per square inch. @end table *************** *** 371,378 **** @cindex viscosity, units of @table @code ! @item GSL_CONST_MKS_POISE The dynamic viscosity of 1 poise. ! @item GSL_CONST_MKS_STOKES The kinematic viscosity of 1 stokes. @end table --- 372,379 ---- @cindex viscosity, units of @table @code ! @item GSL_CONST_MKSA_POISE The dynamic viscosity of 1 poise. ! @item GSL_CONST_MKSA_STOKES The kinematic viscosity of 1 stokes. @end table *************** *** 385,407 **** @table @code ! @item GSL_CONST_MKS_STILB The luminance of 1 stilb. ! @item GSL_CONST_MKS_LUMEN The luminous flux of 1 lumen. ! @item GSL_CONST_MKS_LUX The illuminance of 1 lux. ! @item GSL_CONST_MKS_PHOT The illuminance of 1 phot. ! @item GSL_CONST_MKS_FOOTCANDLE The illuminance of 1 footcandle. ! @item GSL_CONST_MKS_LAMBERT The luminance of 1 lambert. ! @item GSL_CONST_MKS_FOOTLAMBERT The luminance of 1 footlambert. @end table --- 386,408 ---- @table @code ! @item GSL_CONST_MKSA_STILB The luminance of 1 stilb. ! @item GSL_CONST_MKSA_LUMEN The luminous flux of 1 lumen. ! @item GSL_CONST_MKSA_LUX The illuminance of 1 lux. ! @item GSL_CONST_MKSA_PHOT The illuminance of 1 phot. ! @item GSL_CONST_MKSA_FOOTCANDLE The illuminance of 1 footcandle. ! @item GSL_CONST_MKSA_LAMBERT The luminance of 1 lambert. ! @item GSL_CONST_MKSA_FOOTLAMBERT The luminance of 1 footlambert. @end table *************** *** 412,422 **** @cindex radioactivity, units of @table @code ! @item GSL_CONST_MKS_CURIE The activity of 1 curie. ! @item GSL_CONST_MKS_ROENTGEN The exposure of 1 roentgen. ! @item GSL_CONST_MKS_RAD The absorbed dose of 1 rad. @end table --- 413,423 ---- @cindex radioactivity, units of @table @code ! @item GSL_CONST_MKSA_CURIE The activity of 1 curie. ! @item GSL_CONST_MKSA_ROENTGEN The exposure of 1 roentgen. ! @item GSL_CONST_MKSA_RAD The absorbed dose of 1 rad. @end table *************** *** 427,441 **** @cindex force and energy, units of @table @code ! @item GSL_CONST_MKS_NEWTON The SI unit of force, 1 Newton. ! @item GSL_CONST_MKS_DYNE The force of 1 Dyne = @c{$10^{-5}$} @math{10^-5} Newton. ! @item GSL_CONST_MKS_JOULE The SI unit of energy, 1 Joule. ! @item GSL_CONST_MKS_ERG The energy 1 erg = @c{$10^{-7}$} @math{10^-7} Joule. --- 428,442 ---- @cindex force and energy, units of @table @code ! @item GSL_CONST_MKSA_NEWTON The SI unit of force, 1 Newton. ! @item GSL_CONST_MKSA_DYNE The force of 1 Dyne = @c{$10^{-5}$} @math{10^-5} Newton. ! @item GSL_CONST_MKSA_JOULE The SI unit of energy, 1 Joule. ! @item GSL_CONST_MKSA_ERG The energy 1 erg = @c{$10^{-7}$} @math{10^-7} Joule. *************** *** 525,529 **** of Mars is 1.52 astronomical units, and for the orbit of Earth it is 1 astronomical unit (by definition). These values are combined with the ! MKS values of the constants for the speed of light and the length of an astronomical unit to produce a result for the shortest and longest light-travel times in seconds. The figures are converted into minutes --- 526,530 ---- of Mars is 1.52 astronomical units, and for the orbit of Earth it is 1 astronomical unit (by definition). These values are combined with the ! MKSA values of the constants for the speed of light and the length of an astronomical unit to produce a result for the shortest and longest light-travel times in seconds. The figures are converted into minutes *************** *** 531,559 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! double c = GSL_CONST_MKS_SPEED_OF_LIGHT; ! double au = GSL_CONST_MKS_ASTRONOMICAL_UNIT; ! double minutes = GSL_CONST_MKS_MINUTE; ! ! /* distance stored in meters */ ! double r_earth = 1.00 * au; ! double r_mars = 1.52 * au; ! ! double t_min, t_max; ! ! t_min = (r_mars - r_earth) / c; ! t_max = (r_mars + r_earth) / c; ! ! printf("light travel time from Earth to Mars:\n"); ! printf("minimum = %.1f minutes\n", t_min / minutes); ! printf("maximum = %.1f minutes\n", t_max / minutes); ! ! return 0; ! @} @end example @noindent --- 532,536 ---- @example ! @verbatiminclude examples/const.c @end example @noindent *************** *** 561,567 **** @example ! light travel time from Earth to Mars: ! minimum = 4.3 minutes ! maximum = 21.0 minutes @end example --- 538,542 ---- @example ! @verbatiminclude examples/const.out @end example diff -x.info* -rc2P gsl-1.3/doc/debug.texi gsl-1.4/doc/debug.texi *** gsl-1.3/doc/debug.texi Fri Oct 19 14:42:52 2001 --- gsl-1.4/doc/debug.texi Mon Jun 2 10:34:50 2003 *************** *** 31,35 **** (@code{bt}) to see the call-tree, and the arguments which possibly caused the error. By moving up into the calling function you can ! investigate the values of variable at that point. Here is an example from the program @code{fft/test_trap}, which contains the following line, --- 31,35 ---- (@code{bt}) to see the call-tree, and the arguments which possibly caused the error. By moving up into the calling function you can ! investigate the values of variables at that point. Here is an example from the program @code{fft/test_trap}, which contains the following line, *************** *** 121,125 **** The contents of floating point registers can be examined using the ! command @code{info float} (not available on all platforms). @smallexample --- 121,125 ---- The contents of floating point registers can be examined using the ! command @code{info float} (on supported platforms). @smallexample *************** *** 276,280 **** Turn on optimization. The warnings for uninitialized variables in @code{-Wall} rely on the optimizer to analyze the code. If there is no ! optimization then the warnings aren't generated. @item -W This turns on some extra warnings not included in @code{-Wall}, such as --- 276,280 ---- Turn on optimization. The warnings for uninitialized variables in @code{-Wall} rely on the optimizer to analyze the code. If there is no ! optimization then these warnings aren't generated. @item -W This turns on some extra warnings not included in @code{-Wall}, such as *************** *** 315,319 **** @code{extern} declaration. @item -Wnested-externs ! This warns if an @code{extern} declaration is encountered within an function. @item -Dinline= --- 315,319 ---- @code{extern} declaration. @item -Wnested-externs ! This warns if an @code{extern} declaration is encountered within a function. @item -Dinline= diff -x.info* -rc2P gsl-1.3/doc/dht.texi gsl-1.4/doc/dht.texi *** gsl-1.3/doc/dht.texi Thu Oct 18 19:08:20 2001 --- gsl-1.4/doc/dht.texi Thu May 8 18:58:51 2003 *************** *** 23,27 **** Specifically, let @math{f(t)} be a function on the unit interval. Then the finite @math{\nu}-Hankel transform of @math{f(t)} is defined ! to be the set of numbers @math{g_m} given by @tex --- 23,27 ---- Specifically, let @math{f(t)} be a function on the unit interval. Then the finite @math{\nu}-Hankel transform of @math{f(t)} is defined ! to be the set of numbers @math{g_m} given by, @tex *************** *** 34,38 **** @noindent ! so that @tex --- 34,38 ---- @noindent ! so that, @tex *************** *** 70,74 **** sample vectors, for fixed @math{\nu} and @math{M}, using the @code{gsl_dht_apply} function. The implementation allows a scaling of ! the fundamental interval, for convenience, so that one take assume the function is defined on the interval @math{[0,X]}, rather than the unit interval. --- 70,74 ---- sample vectors, for fixed @math{\nu} and @math{M}, using the @code{gsl_dht_apply} function. The implementation allows a scaling of ! the fundamental interval, for convenience, so that one can assume the function is defined on the interval @math{[0,X]}, rather than the unit interval. diff -x.info* -rc2P gsl-1.3/doc/diff.texi gsl-1.4/doc/diff.texi *** gsl-1.3/doc/diff.texi Sat Oct 20 18:31:29 2001 --- gsl-1.4/doc/diff.texi Sun Jul 27 08:39:16 2003 *************** *** 11,15 **** @menu * Numerical Differentiation functions:: ! * Numerical Differentiation Example:: * Numerical Differentiation References:: @end menu --- 11,15 ---- @menu * Numerical Differentiation functions:: ! * Numerical Differentiation Examples:: * Numerical Differentiation References:: @end menu *************** *** 47,52 **** @end deftypefun ! @node Numerical Differentiation Example ! @section Example The following code estimates the derivative of the function --- 47,52 ---- @end deftypefun ! @node Numerical Differentiation Examples ! @section Examples The following code estimates the derivative of the function *************** *** 58,107 **** @example ! #include ! #include ! #include ! ! double f (double x, void * params) ! @{ ! return pow (x, 1.5); ! @} ! ! int ! main (void) ! @{ ! gsl_function F; ! double result, abserr; ! ! F.function = &f; ! F.params = 0; ! ! printf("f(x) = x^(3/2)\n"); ! ! gsl_diff_central (&F, 2.0, &result, &abserr); ! printf("x = 2.0\n"); ! printf("f'(x) = %.10f +/- %.5f\n", result, abserr); ! printf("exact = %.10f\n\n", 1.5 * sqrt(2.0)); ! ! gsl_diff_forward (&F, 0.0, &result, &abserr); ! printf("x = 0.0\n"); ! printf("f'(x) = %.10f +/- %.5f\n", result, abserr); ! printf("exact = %.10f\n", 0.0); ! ! return 0; ! @} @end example @noindent Here is the output of the program, - @example - $ ./demo - f(x) = x^(3/2) ! x = 2.0 ! f'(x) = 2.1213203435 +/- 0.01490 ! exact = 2.1213203436 ! ! x = 0.0 ! f'(x) = 0.0012172897 +/- 0.05028 ! exact = 0.0000000000 @end example --- 58,69 ---- @example ! @verbatiminclude examples/diff.c @end example @noindent Here is the output of the program, ! @example ! $ ./a.out ! @verbatiminclude examples/diff.out @end example diff -x.info* -rc2P gsl-1.3/doc/eigen.texi gsl-1.4/doc/eigen.texi *** gsl-1.3/doc/eigen.texi Fri Oct 26 09:44:55 2001 --- gsl-1.4/doc/eigen.texi Mon Jun 2 15:40:59 2003 *************** *** 175,225 **** @example ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! double data[] = @{ 1.0 , 1/2.0, 1/3.0, 1/4.0, ! 1/2.0, 1/3.0, 1/4.0, 1/5.0, ! 1/3.0, 1/4.0, 1/5.0, 1/6.0, ! 1/4.0, 1/5.0, 1/6.0, 1/7.0 @}; ! ! gsl_matrix_view m ! = gsl_matrix_view_array(data, 4, 4); ! ! gsl_vector *eval = gsl_vector_alloc (4); ! gsl_matrix *evec = gsl_matrix_alloc (4, 4); ! ! gsl_eigen_symmv_workspace * w = ! gsl_eigen_symmv_alloc (4); ! ! gsl_eigen_symmv (&m.matrix, eval, evec, w); ! ! gsl_eigen_symmv_free(w); ! ! gsl_eigen_symmv_sort (eval, evec, ! GSL_EIGEN_SORT_ABS_ASC); ! ! @{ ! int i; ! ! for (i = 0; i < 4; i++) ! @{ ! double eval_i ! = gsl_vector_get(eval, i); ! gsl_vector_view evec_i ! = gsl_matrix_column(evec, i); ! ! printf("eigenvalue = %g\n", eval_i); ! printf("eigenvector = \n"); ! gsl_vector_fprintf(stdout, ! &evec_i.vector, "%g"); ! @} ! @} ! ! return 0; ! @} @end example @noindent --- 175,179 ---- @example ! @verbatiminclude examples/eigen.c @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/err.texi gsl-1.4/doc/err.texi *** gsl-1.3/doc/err.texi Wed Dec 11 14:10:30 2002 --- gsl-1.4/doc/err.texi Mon Jun 2 15:43:49 2003 *************** *** 26,30 **** @example ! int status = gsl_function(...) if (status) @{ /* an error occurred */ --- 26,30 ---- @example ! int status = gsl_function (...) if (status) @{ /* an error occurred */ *************** *** 107,111 **** @example ! printf("error: %s\n", gsl_strerror (status)); @end example @noindent --- 107,111 ---- @example ! printf ("error: %s\n", gsl_strerror (status)); @end example @noindent *************** *** 161,165 **** @deftypefun {gsl_error_handler_t *} gsl_set_error_handler (gsl_error_handler_t @var{new_handler}) ! This functions sets a new error handler, @var{new_handler}, for the GSL library routines. The previous handler is returned (so that you can restore it later). Note that the pointer to a user defined error --- 161,165 ---- @deftypefun {gsl_error_handler_t *} gsl_set_error_handler (gsl_error_handler_t @var{new_handler}) ! This function sets a new error handler, @var{new_handler}, for the GSL library routines. The previous handler is returned (so that you can restore it later). Note that the pointer to a user defined error *************** *** 244,248 **** This macro is the same as @code{GSL_ERROR} but returns a user-defined ! status value of @var{value} instead of an error code. It can be used for mathematical functions that return a floating point value. @end deffn --- 244,248 ---- This macro is the same as @code{GSL_ERROR} but returns a user-defined ! value of @var{value} instead of an error code. It can be used for mathematical functions that return a floating point value. @end deffn *************** *** 271,278 **** #include ! int ! main (void) ! @{ int status; gsl_set_error_handler_off(); --- 271,277 ---- #include ! ... int status; + size_t n = 37; gsl_set_error_handler_off(); *************** *** 289,295 **** exit (-1); @} ! ! exit (0); ! @} @end example @comment --- 288,292 ---- exit (-1); @} ! ... @end example @comment diff -x.info* -rc2P gsl-1.3/doc/examples/blas.c gsl-1.4/doc/examples/blas.c *** gsl-1.3/doc/examples/blas.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/blas.c Mon Jun 2 15:23:13 2003 *************** *** 0 **** --- 1,31 ---- + #include + #include + + int + main (void) + { + double a[] = { 0.11, 0.12, 0.13, + 0.21, 0.22, 0.23 }; + + double b[] = { 1011, 1012, + 1021, 1022, + 1031, 1032 }; + + double c[] = { 0.00, 0.00, + 0.00, 0.00 }; + + gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3); + gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2); + gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2); + + /* Compute C = A B */ + + gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, + 1.0, &A.matrix, &B.matrix, + 0.0, &C.matrix); + + printf ("[ %g, %g\n", c[0], c[1]); + printf (" %g, %g ]\n", c[2], c[3]); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/blas.out gsl-1.4/doc/examples/blas.out *** gsl-1.3/doc/examples/blas.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/blas.out Mon Jun 2 15:26:39 2003 *************** *** 0 **** --- 1,2 ---- + [ 367.76, 368.12 + 674.06, 674.72 ] \ No newline at end of file diff -x.info* -rc2P gsl-1.3/doc/examples/block.c gsl-1.4/doc/examples/block.c *** gsl-1.3/doc/examples/block.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/block.c Mon Jun 2 16:18:20 2003 *************** *** 0 **** --- 1,14 ---- + #include + #include + + int + main (void) + { + gsl_block * b = gsl_block_alloc (100); + + printf ("length of block = %u\n", b->size); + printf ("block data address = %#x\n", b->data); + + gsl_block_free (b); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/block.out gsl-1.4/doc/examples/block.out *** gsl-1.3/doc/examples/block.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/block.out Mon Jun 2 16:18:35 2003 *************** *** 0 **** --- 1,2 ---- + length of block = 100 + block data address = 0x804b0d8 diff -x.info* -rc2P gsl-1.3/doc/examples/cblas.c gsl-1.4/doc/examples/cblas.c *** gsl-1.3/doc/examples/cblas.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/cblas.c Mon Jun 2 15:27:30 2003 *************** *** 0 **** --- 1,33 ---- + #include + #include + + int + main (void) + { + int lda = 3; + + float A[] = { 0.11, 0.12, 0.13, + 0.21, 0.22, 0.23 }; + + int ldb = 2; + + float B[] = { 1011, 1012, + 1021, 1022, + 1031, 1032 }; + + int ldc = 2; + + float C[] = { 0.00, 0.00, + 0.00, 0.00 }; + + /* Compute C = A B */ + + cblas_sgemm (CblasRowMajor, + CblasNoTrans, CblasNoTrans, 2, 2, 3, + 1.0, A, lda, B, ldb, 0.0, C, ldc); + + printf ("[ %g, %g\n", C[0], C[1]); + printf (" %g, %g ]\n", C[2], C[3]); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/cblas.out gsl-1.4/doc/examples/cblas.out *** gsl-1.3/doc/examples/cblas.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/cblas.out Mon Jun 2 15:27:40 2003 *************** *** 0 **** --- 1,2 ---- + [ 367.76, 368.12 + 674.06, 674.72 ] diff -x.info* -rc2P gsl-1.3/doc/examples/cdf.c gsl-1.4/doc/examples/cdf.c *** gsl-1.3/doc/examples/cdf.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/cdf.c Sun Jul 27 08:41:27 2003 *************** *** 0 **** --- 1,23 ---- + #include + #include + + int + main (void) + { + double P, Q; + double x = 2.0; + + P = gsl_cdf_ugaussian_P (x); + printf ("prob(x < %f) = %f\n", x, P); + + Q = gsl_cdf_ugaussian_Q (x); + printf ("prob(x > %f) = %f\n", x, Q); + + x = gsl_cdf_ugaussian_Pinv (P); + printf ("Pinv(%f) = %f\n", P, x); + + x = gsl_cdf_ugaussian_Qinv (Q); + printf ("Qinv(%f) = %f\n", Q, x); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/cdf.out gsl-1.4/doc/examples/cdf.out *** gsl-1.3/doc/examples/cdf.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/cdf.out Sun Jul 27 08:41:43 2003 *************** *** 0 **** --- 1,4 ---- + prob(x < 2.000000) = 0.977250 + prob(x > 2.000000) = 0.022750 + Pinv(0.977250) = 2.000000 + Qinv(0.022750) = 2.000000 diff -x.info* -rc2P gsl-1.3/doc/examples/cheb.c gsl-1.4/doc/examples/cheb.c *** gsl-1.3/doc/examples/cheb.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/cheb.c Mon Jun 2 15:28:46 2003 *************** *** 0 **** --- 1,40 ---- + #include + #include + #include + + double + f (double x, void *p) + { + if (x < 0.5) + return 0.25; + else + return 0.75; + } + + int + main (void) + { + int i, n = 10000; + + gsl_cheb_series *cs = gsl_cheb_alloc (40); + + gsl_function F; + + F.function = f; + F.params = 0; + + gsl_cheb_init (cs, &F, 0.0, 1.0); + + for (i = 0; i < n; i++) + { + double x = i / (double)n; + double r10 = gsl_cheb_eval_n (cs, 10, x); + double r40 = gsl_cheb_eval (cs, x); + printf ("%g %g %g %g\n", + x, GSL_FN_EVAL (&F, x), r10, r40); + } + + gsl_cheb_free (cs); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/combination.c gsl-1.4/doc/examples/combination.c *** gsl-1.3/doc/examples/combination.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/combination.c Mon Jun 2 15:37:43 2003 *************** *** 0 **** --- 1,25 ---- + #include + #include + + int + main (void) + { + gsl_combination * c; + size_t i; + + printf ("All subsets of {0,1,2,3} by size:\n") ; + for (i = 0; i <= 4; i++) + { + c = gsl_combination_calloc (4, i); + do + { + printf ("{"); + gsl_combination_fprintf (stdout, c, " %u"); + printf (" }\n"); + } + while (gsl_combination_next (c) == GSL_SUCCESS); + gsl_combination_free (c); + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/combination.out gsl-1.4/doc/examples/combination.out *** gsl-1.3/doc/examples/combination.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/combination.out Mon Jun 2 15:37:55 2003 *************** *** 0 **** --- 1,17 ---- + All subsets of {0,1,2,3} by size: + { } + { 0 } + { 1 } + { 2 } + { 3 } + { 0 1 } + { 0 2 } + { 0 3 } + { 1 2 } + { 1 3 } + { 2 3 } + { 0 1 2 } + { 0 1 3 } + { 0 2 3 } + { 1 2 3 } + { 0 1 2 3 } diff -x.info* -rc2P gsl-1.3/doc/examples/const.c gsl-1.4/doc/examples/const.c *** gsl-1.3/doc/examples/const.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/const.c Fri Jun 20 15:14:20 2003 *************** *** 0 **** --- 1,25 ---- + #include + #include + + int + main (void) + { + double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; + double au = GSL_CONST_MKSA_ASTRONOMICAL_UNIT; + double minutes = GSL_CONST_MKSA_MINUTE; + + /* distance stored in meters */ + double r_earth = 1.00 * au; + double r_mars = 1.52 * au; + + double t_min, t_max; + + t_min = (r_mars - r_earth) / c; + t_max = (r_mars + r_earth) / c; + + printf ("light travel time from Earth to Mars:\n"); + printf ("minimum = %.1f minutes\n", t_min / minutes); + printf ("maximum = %.1f minutes\n", t_max / minutes); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/const.out gsl-1.4/doc/examples/const.out *** gsl-1.3/doc/examples/const.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/const.out Mon Jun 2 15:39:26 2003 *************** *** 0 **** --- 1,3 ---- + light travel time from Earth to Mars: + minimum = 4.3 minutes + maximum = 21.0 minutes diff -x.info* -rc2P gsl-1.3/doc/examples/demo_fn.c gsl-1.4/doc/examples/demo_fn.c *** gsl-1.3/doc/examples/demo_fn.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/demo_fn.c Mon Jun 2 16:12:42 2003 *************** *** 0 **** --- 1,40 ---- + double + quadratic (double x, void *params) + { + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + return (a * x + b) * x + c; + } + + double + quadratic_deriv (double x, void *params) + { + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + return 2.0 * a * x + b; + } + + void + quadratic_fdf (double x, void *params, + double *y, double *dy) + { + struct quadratic_params *p + = (struct quadratic_params *) params; + + double a = p->a; + double b = p->b; + double c = p->c; + + *y = (a * x + b) * x + c; + *dy = 2.0 * a * x + b; + } diff -x.info* -rc2P gsl-1.3/doc/examples/demo_fn.h gsl-1.4/doc/examples/demo_fn.h *** gsl-1.3/doc/examples/demo_fn.h Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/demo_fn.h Mon Jun 2 16:12:07 2003 *************** *** 0 **** --- 1,9 ---- + struct quadratic_params + { + double a, b, c; + }; + + double quadratic (double x, void *params); + double quadratic_deriv (double x, void *params); + void quadratic_fdf (double x, void *params, + double *y, double *dy); diff -x.info* -rc2P gsl-1.3/doc/examples/diff.c gsl-1.4/doc/examples/diff.c *** gsl-1.3/doc/examples/diff.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/diff.c Mon Jun 2 15:40:08 2003 *************** *** 0 **** --- 1,32 ---- + #include + #include + #include + + double f (double x, void * params) + { + return pow (x, 1.5); + } + + int + main (void) + { + gsl_function F; + double result, abserr; + + F.function = &f; + F.params = 0; + + printf ("f(x) = x^(3/2)\n"); + + gsl_diff_central (&F, 2.0, &result, &abserr); + printf ("x = 2.0\n"); + printf ("f'(x) = %.10f +/- %.5f\n", result, abserr); + printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0)); + + gsl_diff_forward (&F, 0.0, &result, &abserr); + printf ("x = 0.0\n"); + printf ("f'(x) = %.10f +/- %.5f\n", result, abserr); + printf ("exact = %.10f\n", 0.0); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/diff.out gsl-1.4/doc/examples/diff.out *** gsl-1.3/doc/examples/diff.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/diff.out Mon Jun 2 15:40:27 2003 *************** *** 0 **** --- 1,9 ---- + f(x) = x^(3/2) + + x = 2.0 + f'(x) = 2.1213203435 +/- 0.01490 + exact = 2.1213203436 + + x = 0.0 + f'(x) = 0.0012172897 +/- 0.05028 + exact = 0.0000000000 diff -x.info* -rc2P gsl-1.3/doc/examples/eigen.c gsl-1.4/doc/examples/eigen.c *** gsl-1.3/doc/examples/eigen.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/eigen.c Mon Jun 2 15:41:08 2003 *************** *** 0 **** --- 1,47 ---- + #include + #include + #include + + int + main (void) + { + double data[] = { 1.0 , 1/2.0, 1/3.0, 1/4.0, + 1/2.0, 1/3.0, 1/4.0, 1/5.0, + 1/3.0, 1/4.0, 1/5.0, 1/6.0, + 1/4.0, 1/5.0, 1/6.0, 1/7.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (data, 4, 4); + + gsl_vector *eval = gsl_vector_alloc (4); + gsl_matrix *evec = gsl_matrix_alloc (4, 4); + + gsl_eigen_symmv_workspace * w = + gsl_eigen_symmv_alloc (4); + + gsl_eigen_symmv (&m.matrix, eval, evec, w); + + gsl_eigen_symmv_free (w); + + gsl_eigen_symmv_sort (eval, evec, + GSL_EIGEN_SORT_ABS_ASC); + + { + int i; + + for (i = 0; i < 4; i++) + { + double eval_i + = gsl_vector_get (eval, i); + gsl_vector_view evec_i + = gsl_matrix_column (evec, i); + + printf ("eigenvalue = %g\n", eval_i); + printf ("eigenvector = \n"); + gsl_vector_fprintf (stdout, + &evec_i.vector, "%g"); + } + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/fft.c gsl-1.4/doc/examples/fft.c *** gsl-1.3/doc/examples/fft.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/fft.c Mon Jun 2 15:44:49 2003 *************** *** 0 **** --- 1,45 ---- + #include + #include + #include + #include + + #define REAL(z,i) ((z)[2*(i)]) + #define IMAG(z,i) ((z)[2*(i)+1]) + + int + main (void) + { + int i; + double data[2*128]; + + for (i = 0; i < 128; i++) + { + REAL(data,i) = 0.0; + IMAG(data,i) = 0.0; + } + + REAL(data,0) = 1.0; + + for (i = 1; i <= 10; i++) + { + REAL(data,i) = REAL(data,128-i) = 1.0; + } + + for (i = 0; i < 128; i++) + { + printf ("%d %e %e\n", i, + REAL(data,i), IMAG(data,i)); + } + printf ("\n"); + + gsl_fft_complex_radix2_forward (data, 1, 128); + + for (i = 0; i < 128; i++) + { + printf ("%d %e %e\n", i, + REAL(data,i)/sqrt(128), + IMAG(data,i)/sqrt(128)); + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/fftmr.c gsl-1.4/doc/examples/fftmr.c *** gsl-1.3/doc/examples/fftmr.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/fftmr.c Fri Jun 20 15:15:02 2003 *************** *** 0 **** --- 1,60 ---- + #include + #include + #include + #include + + #define REAL(z,i) ((z)[2*(i)]) + #define IMAG(z,i) ((z)[2*(i)+1]) + + int + main (void) + { + int i; + const int n = 630; + double data[2*n]; + + gsl_fft_complex_wavetable * wavetable; + gsl_fft_complex_workspace * workspace; + + for (i = 0; i < n; i++) + { + REAL(data,i) = 0.0; + IMAG(data,i) = 0.0; + } + + data[0] = 1.0; + + for (i = 1; i <= 10; i++) + { + REAL(data,i) = REAL(data,n-i) = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e %e\n", i, REAL(data,i), + IMAG(data,i)); + } + printf ("\n"); + + wavetable = gsl_fft_complex_wavetable_alloc (n); + workspace = gsl_fft_complex_workspace_alloc (n); + + for (i = 0; i < wavetable->nf; i++) + { + printf ("# factor %d: %d\n", i, + wavetable->factor[i]); + } + + gsl_fft_complex_forward (data, 1, n, + wavetable, workspace); + + for (i = 0; i < n; i++) + { + printf ("%d: %e %e\n", i, REAL(data,i), + IMAG(data,i)); + } + + gsl_fft_complex_wavetable_free (wavetable); + gsl_fft_complex_workspace_free (workspace); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/fftreal.c gsl-1.4/doc/examples/fftreal.c *** gsl-1.3/doc/examples/fftreal.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/fftreal.c Fri Jun 20 15:15:28 2003 *************** *** 0 **** --- 1,59 ---- + #include + #include + #include + #include + #include + + int + main (void) + { + int i, n = 100; + double data[n]; + + gsl_fft_real_wavetable * real; + gsl_fft_halfcomplex_wavetable * hc; + gsl_fft_real_workspace * work; + + for (i = 0; i < n; i++) + { + data[i] = 0.0; + } + + for (i = n / 3; i < 2 * n / 3; i++) + { + data[i] = 1.0; + } + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + printf ("\n"); + + work = gsl_fft_real_workspace_alloc (n); + real = gsl_fft_real_wavetable_alloc (n); + + gsl_fft_real_transform (data, 1, n, + real, work); + + gsl_fft_real_wavetable_free (real); + + for (i = 11; i < n; i++) + { + data[i] = 0; + } + + hc = gsl_fft_halfcomplex_wavetable_alloc (n); + + gsl_fft_halfcomplex_inverse (data, 1, n, + hc, work); + gsl_fft_halfcomplex_wavetable_free (hc); + + for (i = 0; i < n; i++) + { + printf ("%d: %e\n", i, data[i]); + } + + gsl_fft_real_workspace_free (work); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/fitting.c gsl-1.4/doc/examples/fitting.c *** gsl-1.3/doc/examples/fitting.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/fitting.c Mon Jun 2 15:47:07 2003 *************** *** 0 **** --- 1,45 ---- + #include + #include + + int + main (void) + { + int i, n = 4; + double x[4] = { 1970, 1980, 1990, 2000 }; + double y[4] = { 12, 11, 14, 13 }; + double w[4] = { 0.1, 0.2, 0.3, 0.4 }; + + double c0, c1, cov00, cov01, cov11, chisq; + + gsl_fit_wlinear (x, 1, w, 1, y, 1, n, + &c0, &c1, &cov00, &cov01, &cov11, + &chisq); + + printf ("# best fit: Y = %g + %g X\n", c0, c1); + printf ("# covariance matrix:\n"); + printf ("# [ %g, %g\n# %g, %g]\n", + cov00, cov01, cov01, cov11); + printf ("# chisq = %g\n", chisq); + + for (i = 0; i < n; i++) + printf ("data: %g %g %g\n", + x[i], y[i], 1/sqrt(w[i])); + + printf ("\n"); + + for (i = -30; i < 130; i++) + { + double xf = x[0] + (i/100.0) * (x[n-1] - x[0]); + double yf, yf_err; + + gsl_fit_linear_est (xf, + c0, c1, + cov00, cov01, cov11, + &yf, &yf_err); + + printf ("fit: %g %g\n", xf, yf); + printf ("hi : %g %g\n", xf, yf + yf_err); + printf ("lo : %g %g\n", xf, yf - yf_err); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/fitting2.c gsl-1.4/doc/examples/fitting2.c *** gsl-1.3/doc/examples/fitting2.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/fitting2.c Mon Jun 2 15:47:41 2003 *************** *** 0 **** --- 1,73 ---- + #include + #include + + int + main (int argc, char **argv) + { + int i, n; + double xi, yi, ei, chisq; + gsl_matrix *X, *cov; + gsl_vector *y, *w, *c; + + if (argc != 2) + { + fprintf (stderr,"usage: fit n < data\n"); + exit (-1); + } + + n = atoi (argv[1]); + + X = gsl_matrix_alloc (n, 3); + y = gsl_vector_alloc (n); + w = gsl_vector_alloc (n); + + c = gsl_vector_alloc (3); + cov = gsl_matrix_alloc (3, 3); + + for (i = 0; i < n; i++) + { + int count = fscanf (stdin, "%lg %lg %lg", + &xi, &yi, &ei); + + if (count != 3) + { + fprintf (stderr, "error reading file\n"); + exit (-1); + } + + printf ("%g %g +/- %g\n", xi, yi, ei); + + gsl_matrix_set (X, i, 0, 1.0); + gsl_matrix_set (X, i, 1, xi); + gsl_matrix_set (X, i, 2, xi*xi); + + gsl_vector_set (y, i, yi); + gsl_vector_set (w, i, 1.0/(ei*ei)); + } + + { + gsl_multifit_linear_workspace * work + = gsl_multifit_linear_alloc (n, 3); + gsl_multifit_wlinear (X, w, y, c, cov, + &chisq, work); + gsl_multifit_linear_free (work); + } + + #define C(i) (gsl_vector_get(c,(i))) + #define COV(i,j) (gsl_matrix_get(cov,(i),(j))) + + { + printf ("# best fit: Y = %g + %g X + %g X^2\n", + C(0), C(1), C(2)); + + printf ("# covariance matrix:\n"); + printf ("[ %+.5e, %+.5e, %+.5e \n", + COV(0,0), COV(0,1), COV(0,2)); + printf (" %+.5e, %+.5e, %+.5e \n", + COV(1,0), COV(1,1), COV(1,2)); + printf (" %+.5e, %+.5e, %+.5e ]\n", + COV(2,0), COV(2,1), COV(2,2)); + printf ("# chisq = %g\n", chisq); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/fitting3.c gsl-1.4/doc/examples/fitting3.c *** gsl-1.3/doc/examples/fitting3.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/fitting3.c Mon Jun 2 15:48:04 2003 *************** *** 0 **** --- 1,26 ---- + #include + #include + #include + + int + main (void) + { + double x; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (x = 0.1; x < 2; x+= 0.1) + { + double y0 = exp (x); + double sigma = 0.1 * y0; + double dy = gsl_ran_gaussian (r, sigma); + + printf ("%g %g %g\n", x, y0 + dy, sigma); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/histogram.c gsl-1.4/doc/examples/histogram.c *** gsl-1.3/doc/examples/histogram.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/histogram.c Fri Jun 20 15:19:08 2003 *************** *** 0 **** --- 1,42 ---- + #include + #include + #include + + int + main (int argc, char **argv) + { + double a, b; + size_t n; + + if (argc != 4) + { + printf ("Usage: gsl-histogram xmin xmax n\n" + "Computes a histogram of the data " + "on stdin using n bins from xmin " + "to xmax\n"); + exit (0); + } + + a = atof (argv[1]); + b = atof (argv[2]); + n = atoi (argv[3]); + + { + double x; + + gsl_histogram * h = gsl_histogram_alloc (n); + + gsl_histogram_set_ranges_uniform (h, a, b); + + while (fscanf (stdin, "%lg", &x) == 1) + { + gsl_histogram_increment (h, x); + } + + gsl_histogram_fprintf (stdout, h, "%g", "%g"); + + gsl_histogram_free (h); + } + + exit (0); + } diff -x.info* -rc2P gsl-1.3/doc/examples/histogram2d.c gsl-1.4/doc/examples/histogram2d.c *** gsl-1.3/doc/examples/histogram2d.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/histogram2d.c Fri Jun 20 15:16:28 2003 *************** *** 0 **** --- 1,45 ---- + #include + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + gsl_histogram2d * h = gsl_histogram2d_alloc (10, 10); + + gsl_histogram2d_set_ranges_uniform (h, + 0.0, 1.0, + 0.0, 1.0); + + gsl_histogram2d_accumulate (h, 0.3, 0.3, 1); + gsl_histogram2d_accumulate (h, 0.8, 0.1, 5); + gsl_histogram2d_accumulate (h, 0.7, 0.9, 0.5); + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + { + int i; + gsl_histogram2d_pdf * p + = gsl_histogram2d_pdf_alloc (h->nx, h->ny); + + gsl_histogram2d_pdf_init (p, h); + + for (i = 0; i < 1000; i++) { + double x, y; + double u = gsl_rng_uniform (r); + double v = gsl_rng_uniform (r); + + gsl_histogram2d_pdf_sample (p, u, v, &x, &y); + + printf ("%g %g\n", x, y); + } + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/ieee.c gsl-1.4/doc/examples/ieee.c *** gsl-1.3/doc/examples/ieee.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/ieee.c Mon Jun 2 15:55:17 2003 *************** *** 0 **** --- 1,22 ---- + #include + #include + + int + main (void) + { + float f = 1.0/3.0; + double d = 1.0/3.0; + + double fd = f; /* promote from float to double */ + + printf (" f="); gsl_ieee_printf_float(&f); + printf ("\n"); + + printf ("fd="); gsl_ieee_printf_double(&fd); + printf ("\n"); + + printf (" d="); gsl_ieee_printf_double(&d); + printf ("\n"); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/ieeeround.c gsl-1.4/doc/examples/ieeeround.c *** gsl-1.3/doc/examples/ieeeround.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/ieeeround.c Fri Jun 20 15:20:39 2003 *************** *** 0 **** --- 1,30 ---- + #include + #include + #include + + int + main (void) + { + double x = 1, oldsum = 0, sum = 0; + int i = 0; + + gsl_ieee_env_setup (); /* read GSL_IEEE_MODE */ + + do + { + i++; + + oldsum = sum; + sum += x; + x = x / i; + + printf ("i=%2d sum=%.18f error=%g\n", + i, sum, sum - M_E); + + if (i > 30) + break; + } + while (sum != oldsum); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/integration.c gsl-1.4/doc/examples/integration.c *** gsl-1.3/doc/examples/integration.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/integration.c Mon Jun 2 15:56:25 2003 *************** *** 0 **** --- 1,35 ---- + #include + #include + #include + + double f (double x, void * params) { + double alpha = *(double *) params; + double f = log(alpha*x) / sqrt(x); + return f; + } + + int + main (void) + { + gsl_integration_workspace * w + = gsl_integration_workspace_alloc (1000); + + double result, error; + double expected = -4.0; + double alpha = 1.0; + + gsl_function F; + F.function = &f; + F.params = α + + gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, + w, &result, &error); + + printf ("result = % .18f\n", result); + printf ("exact result = % .18f\n", expected); + printf ("estimated error = % .18f\n", error); + printf ("actual error = % .18f\n", result - expected); + printf ("intervals = %d\n", w->size); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/integration.out gsl-1.4/doc/examples/integration.out *** gsl-1.3/doc/examples/integration.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/integration.out Mon Jun 2 15:56:40 2003 *************** *** 0 **** --- 1,5 ---- + result = -3.999999999999973799 + exact result = -4.000000000000000000 + estimated error = 0.000000000000246025 + actual error = 0.000000000000026201 + intervals = 8 diff -x.info* -rc2P gsl-1.3/doc/examples/interp.c gsl-1.4/doc/examples/interp.c *** gsl-1.3/doc/examples/interp.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/interp.c Mon Jun 2 15:57:16 2003 *************** *** 0 **** --- 1,41 ---- + #include + #include + #include + #include + #include + + int + main (void) + { + int i; + double xi, yi, x[10], y[10]; + + printf ("#m=0,S=2\n"); + + for (i = 0; i < 10; i++) + { + x[i] = i + 0.5 * sin (i); + y[i] = i + cos (i * i); + printf ("%g %g\n", x[i], y[i]); + } + + printf ("#m=1,S=0\n"); + + { + gsl_interp_accel *acc + = gsl_interp_accel_alloc (); + gsl_spline *spline + = gsl_spline_alloc (gsl_interp_cspline, 10); + + gsl_spline_init (spline, x, y, 10); + + for (xi = x[0]; xi < x[9]; xi += 0.01) + { + yi = gsl_spline_eval (spline, xi, acc); + printf ("%g %g\n", xi, yi); + } + gsl_spline_free (spline); + gsl_interp_accel_free (acc); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/intro.c gsl-1.4/doc/examples/intro.c *** gsl-1.3/doc/examples/intro.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/intro.c Mon Jun 2 15:57:59 2003 *************** *** 0 **** --- 1,11 ---- + #include + #include + + int + main (void) + { + double x = 5.0; + double y = gsl_sf_bessel_J0 (x); + printf ("J0(%g) = %.18e\n", x, y); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/intro.out gsl-1.4/doc/examples/intro.out *** gsl-1.3/doc/examples/intro.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/intro.out Mon Jun 2 15:58:15 2003 *************** *** 0 **** --- 1 ---- + J0(5) = -1.775967713143382920e-01 diff -x.info* -rc2P gsl-1.3/doc/examples/linalglu.c gsl-1.4/doc/examples/linalglu.c *** gsl-1.3/doc/examples/linalglu.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/linalglu.c Mon Jun 2 15:58:56 2003 *************** *** 0 **** --- 1,35 ---- + #include + #include + + int + main (void) + { + double a_data[] = { 0.18, 0.60, 0.57, 0.96, + 0.41, 0.24, 0.99, 0.58, + 0.14, 0.30, 0.97, 0.66, + 0.51, 0.13, 0.19, 0.85 }; + + double b_data[] = { 1.0, 2.0, 3.0, 4.0 }; + + gsl_matrix_view m + = gsl_matrix_view_array (a_data, 4, 4); + + gsl_vector_view b + = gsl_vector_view_array (b_data, 4); + + gsl_vector *x = gsl_vector_alloc (4); + + int s; + + gsl_permutation * p = gsl_permutation_alloc (4); + + gsl_linalg_LU_decomp (&m.matrix, p, &s); + + gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x); + + printf ("x = \n"); + gsl_vector_fprintf (stdout, x, "%g"); + + gsl_permutation_free (p); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/linalglu.out gsl-1.4/doc/examples/linalglu.out *** gsl-1.3/doc/examples/linalglu.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/linalglu.out Mon Jun 2 15:59:09 2003 *************** *** 0 **** --- 1,4 ---- + x = -4.05205 + -12.6056 + 1.66091 + 8.69377 diff -x.info* -rc2P gsl-1.3/doc/examples/matrix.c gsl-1.4/doc/examples/matrix.c *** gsl-1.3/doc/examples/matrix.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/matrix.c Mon Jun 2 16:19:51 2003 *************** *** 0 **** --- 1,20 ---- + #include + #include + + int + main (void) + { + int i, j; + gsl_matrix * m = gsl_matrix_alloc (10, 3); + + for (i = 0; i < 10; i++) + for (j = 0; j < 3; j++) + gsl_matrix_set (m, i, j, 0.23 + 100*i + j); + + for (i = 0; i < 100; i++) + for (j = 0; j < 3; j++) + printf ("m(%d,%d) = %g\n", i, j, + gsl_matrix_get (m, i, j)); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/matrixw.c gsl-1.4/doc/examples/matrixw.c *** gsl-1.3/doc/examples/matrixw.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/matrixw.c Mon Jun 2 16:20:13 2003 *************** *** 0 **** --- 1,37 ---- + #include + #include + + int + main (void) + { + int i, j, k = 0; + gsl_matrix * m = gsl_matrix_alloc (100, 100); + gsl_matrix * a = gsl_matrix_alloc (100, 100); + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + gsl_matrix_set (m, i, j, 0.23 + i + j); + + { + FILE * f = fopen ("test.dat", "wb"); + gsl_matrix_fwrite (f, m); + fclose (f); + } + + { + FILE * f = fopen ("test.dat", "rb"); + gsl_matrix_fread (f, a); + fclose (f); + } + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + { + double mij = gsl_matrix_get (m, i, j); + double aij = gsl_matrix_get (a, i, j); + if (mij != aij) k++; + } + + printf ("differences = %d (should be zero)\n", k); + return (k > 0); + } diff -x.info* -rc2P gsl-1.3/doc/examples/min.c gsl-1.4/doc/examples/min.c *** gsl-1.3/doc/examples/min.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/min.c Mon Jun 2 15:59:51 2003 *************** *** 0 **** --- 1,63 ---- + #include + #include + #include + #include + + double fn1 (double x, void * params) + { + return cos(x) + 1.0; + } + + int + main (void) + { + int status; + int iter = 0, max_iter = 100; + const gsl_min_fminimizer_type *T; + gsl_min_fminimizer *s; + double m = 2.0, m_expected = M_PI; + double a = 0.0, b = 6.0; + gsl_function F; + + F.function = &fn1; + F.params = 0; + + T = gsl_min_fminimizer_brent; + s = gsl_min_fminimizer_alloc (T); + gsl_min_fminimizer_set (s, &F, m, a, b); + + printf ("using %s method\n", + gsl_min_fminimizer_name (s)); + + printf ("%5s [%9s, %9s] %9s %10s %9s\n", + "iter", "lower", "upper", "min", + "err", "err(est)"); + + printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", + iter, a, b, + m, m - m_expected, b - a); + + do + { + iter++; + status = gsl_min_fminimizer_iterate (s); + + m = gsl_min_fminimizer_x_minimum (s); + a = gsl_min_fminimizer_x_lower (s); + b = gsl_min_fminimizer_x_upper (s); + + status + = gsl_min_test_interval (a, b, 0.001, 0.0); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d [%.7f, %.7f] " + "%.7f %.7f %+.7f %.7f\n", + iter, a, b, + m, m_expected, m - m_expected, b - a); + } + while (status == GSL_CONTINUE && iter < max_iter); + + return status; + } diff -x.info* -rc2P gsl-1.3/doc/examples/min.out gsl-1.4/doc/examples/min.out *** gsl-1.3/doc/examples/min.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/min.out Mon Jun 2 16:00:07 2003 *************** *** 0 **** --- 1,13 ---- + 0 [0.0000000, 6.0000000] 2.0000000 -1.1415927 6.0000000 + 1 [2.0000000, 6.0000000] 3.2758640 +0.1342713 4.0000000 + 2 [2.0000000, 3.2831929] 3.2758640 +0.1342713 1.2831929 + 3 [2.8689068, 3.2831929] 3.2758640 +0.1342713 0.4142862 + 4 [2.8689068, 3.2831929] 3.2758640 +0.1342713 0.4142862 + 5 [2.8689068, 3.2758640] 3.1460585 +0.0044658 0.4069572 + 6 [3.1346075, 3.2758640] 3.1460585 +0.0044658 0.1412565 + 7 [3.1346075, 3.1874620] 3.1460585 +0.0044658 0.0528545 + 8 [3.1346075, 3.1460585] 3.1460585 +0.0044658 0.0114510 + 9 [3.1346075, 3.1460585] 3.1424060 +0.0008133 0.0114510 + 10 [3.1346075, 3.1424060] 3.1415885 -0.0000041 0.0077985 + Converged: + 11 [3.1415885, 3.1424060] 3.1415927 -0.0000000 0.0008175 diff -x.info* -rc2P gsl-1.3/doc/examples/monte.c gsl-1.4/doc/examples/monte.c *** gsl-1.3/doc/examples/monte.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/monte.c Mon Jun 2 16:00:39 2003 *************** *** 0 **** --- 1,103 ---- + #include + #include + #include + #include + #include + #include + + /* Computation of the integral, + + I = int (dx dy dz)/(2pi)^3 1/(1-cos(x)cos(y)cos(z)) + + over (-pi,-pi,-pi) to (+pi, +pi, +pi). The exact answer + is Gamma(1/4)^4/(4 pi^3). This example is taken from + C.Itzykson, J.M.Drouffe, "Statistical Field Theory - + Volume 1", Section 1.1, p21, which cites the original + paper M.L.Glasser, I.J.Zucker, Proc.Natl.Acad.Sci.USA 74 + 1800 (1977) */ + + /* For simplicity we compute the integral over the region + (0,0,0) -> (pi,pi,pi) and multiply by 8 */ + + double exact = 1.3932039296856768591842462603255; + + double + g (double *k, size_t dim, void *params) + { + double A = 1.0 / (M_PI * M_PI * M_PI); + return A / (1.0 - cos (k[0]) * cos (k[1]) * cos (k[2])); + } + + void + display_results (char *title, double result, double error) + { + printf ("%s ==================\n", title); + printf ("result = % .6f\n", result); + printf ("sigma = % .6f\n", error); + printf ("exact = % .6f\n", exact); + printf ("error = % .6f = %.1g sigma\n", result - exact, + fabs (result - exact) / error); + } + + int + main (void) + { + double res, err; + + double xl[3] = { 0, 0, 0 }; + double xu[3] = { M_PI, M_PI, M_PI }; + + const gsl_rng_type *T; + gsl_rng *r; + + gsl_monte_function G = { &g, 3, 0 }; + + size_t calls = 500000; + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + { + gsl_monte_plain_state *s = gsl_monte_plain_alloc (3); + gsl_monte_plain_integrate (&G, xl, xu, 3, calls, r, s, + &res, &err); + gsl_monte_plain_free (s); + + display_results ("plain", res, err); + } + + { + gsl_monte_miser_state *s = gsl_monte_miser_alloc (3); + gsl_monte_miser_integrate (&G, xl, xu, 3, calls, r, s, + &res, &err); + gsl_monte_miser_free (s); + + display_results ("miser", res, err); + } + + { + gsl_monte_vegas_state *s = gsl_monte_vegas_alloc (3); + + gsl_monte_vegas_integrate (&G, xl, xu, 3, 10000, r, s, + &res, &err); + display_results ("vegas warm-up", res, err); + + printf ("converging...\n"); + + do + { + gsl_monte_vegas_integrate (&G, xl, xu, 3, calls/5, r, s, + &res, &err); + printf ("result = % .6f sigma = % .6f " + "chisq/dof = %.1f\n", res, err, s->chisq); + } + while (fabs (s->chisq - 1.0) > 0.5); + + display_results ("vegas final", res, err); + + gsl_monte_vegas_free (s); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/ntupler.c gsl-1.4/doc/examples/ntupler.c *** gsl-1.3/doc/examples/ntupler.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/ntupler.c Fri Jun 20 15:16:46 2003 *************** *** 0 **** --- 1,72 ---- + #include + #include + #include + + struct data + { + double x; + double y; + double z; + }; + + int sel_func (void *ntuple_data, void *params); + double val_func (void *ntuple_data, void *params); + + int + main (void) + { + struct data ntuple_row; + + gsl_ntuple *ntuple + = gsl_ntuple_open ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + double lower = 1.5; + + gsl_ntuple_select_fn S; + gsl_ntuple_value_fn V; + + gsl_histogram *h = gsl_histogram_alloc (100); + gsl_histogram_set_ranges_uniform(h, 0.0, 10.0); + + S.function = &sel_func; + S.params = &lower; + + V.function = &val_func; + V.params = 0; + + gsl_ntuple_project (h, ntuple, &V, &S); + gsl_histogram_fprintf (stdout, h, "%f", "%f"); + gsl_histogram_free (h); + gsl_ntuple_close (ntuple); + + return 0; + } + + int + sel_func (void *ntuple_data, void *params) + { + struct data * data = (struct data *) ntuple_data; + double x, y, z, E2, scale; + scale = *(double *) params; + + x = data->x; + y = data->y; + z = data->z; + + E2 = x * x + y * y + z * z; + + return E2 > scale; + } + + double + val_func (void *ntuple_data, void *params) + { + struct data * data = (struct data *) ntuple_data; + double x, y, z; + + x = data->x; + y = data->y; + z = data->z; + + return x * x + y * y + z * z; + } diff -x.info* -rc2P gsl-1.3/doc/examples/ntuplew.c gsl-1.4/doc/examples/ntuplew.c *** gsl-1.3/doc/examples/ntuplew.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/ntuplew.c Mon Jun 2 16:03:54 2003 *************** *** 0 **** --- 1,41 ---- + #include + #include + #include + + struct data + { + double x; + double y; + double z; + }; + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + struct data ntuple_row; + int i; + + gsl_ntuple *ntuple + = gsl_ntuple_create ("test.dat", &ntuple_row, + sizeof (ntuple_row)); + + gsl_rng_env_setup (); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < 10000; i++) + { + ntuple_row.x = gsl_ran_ugaussian (r); + ntuple_row.y = gsl_ran_ugaussian (r); + ntuple_row.z = gsl_ran_ugaussian (r); + + gsl_ntuple_write (ntuple); + } + + gsl_ntuple_close (ntuple); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/ode-initval.c gsl-1.4/doc/examples/ode-initval.c *** gsl-1.3/doc/examples/ode-initval.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/ode-initval.c Mon Jun 2 16:04:50 2003 *************** *** 0 **** --- 1,70 ---- + #include + #include + #include + #include + + int + func (double t, const double y[], double f[], + void *params) + { + double mu = *(double *)params; + f[0] = y[1]; + f[1] = -y[0] - mu*y[1]*(y[0]*y[0] - 1); + return GSL_SUCCESS; + } + + int + jac (double t, const double y[], double *dfdy, + double dfdt[], void *params) + { + double mu = *(double *)params; + gsl_matrix_view dfdy_mat + = gsl_matrix_view_array (dfdy, 2, 2); + gsl_matrix * m = &dfdy_mat.matrix; + gsl_matrix_set (m, 0, 0, 0.0); + gsl_matrix_set (m, 0, 1, 1.0); + gsl_matrix_set (m, 1, 0, -2.0*mu*y[0]*y[1] - 1.0); + gsl_matrix_set (m, 1, 1, -mu*(y[0]*y[0] - 1.0)); + dfdt[0] = 0.0; + dfdt[1] = 0.0; + return GSL_SUCCESS; + } + + int + main (void) + { + const gsl_odeiv_step_type * T + = gsl_odeiv_step_rk8pd; + + gsl_odeiv_step * s + = gsl_odeiv_step_alloc (T, 2); + gsl_odeiv_control * c + = gsl_odeiv_control_y_new (1e-6, 0.0); + gsl_odeiv_evolve * e + = gsl_odeiv_evolve_alloc (2); + + double mu = 10; + gsl_odeiv_system sys = {func, jac, 2, &mu}; + + double t = 0.0, t1 = 100.0; + double h = 1e-6; + double y[2] = { 1.0, 0.0 }; + + while (t < t1) + { + int status = gsl_odeiv_evolve_apply (e, c, s, + &sys, + &t, t1, + &h, y); + + if (status != GSL_SUCCESS) + break; + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv_evolve_free (e); + gsl_odeiv_control_free (c); + gsl_odeiv_step_free (s); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/odefixed.c gsl-1.4/doc/examples/odefixed.c *** gsl-1.3/doc/examples/odefixed.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/odefixed.c Mon Jun 2 16:05:19 2003 *************** *** 0 **** --- 1,42 ---- + int + main (void) + { + const gsl_odeiv_step_type * T + = gsl_odeiv_step_rk4; + + gsl_odeiv_step * s + = gsl_odeiv_step_alloc (T, 2); + + double mu = 10; + gsl_odeiv_system sys = {func, jac, 2, &mu}; + + double t = 0.0, t1 = 100.0; + double h = 1e-2; + double y[2] = { 1.0, 0.0 }, y_err[2]; + double dfdy[4], dydt_in[2], dydt_out[2]; + + /* initialise dydt_in */ + GSL_ODEIV_JA_EVAL(&sys, t, y, dfdy, dydt_in); + + while (t < t1) + { + int status = gsl_odeiv_step_apply (s, t, h, + y, y_err, + dydt_in, + dydt_out, + &sys); + + if (status != GSL_SUCCESS) + break; + + dydt_in[0] = dydt_out[0]; + dydt_in[1] = dydt_out[1]; + + t += h; + + printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); + } + + gsl_odeiv_step_free (s); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/permseq.c gsl-1.4/doc/examples/permseq.c *** gsl-1.3/doc/examples/permseq.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/permseq.c Mon Jun 2 16:06:07 2003 *************** *** 0 **** --- 1,19 ---- + #include + #include + + int + main (void) + { + gsl_permutation * p = gsl_permutation_alloc (3); + + gsl_permutation_init (p); + + do + { + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/permshuffle.c gsl-1.4/doc/examples/permshuffle.c *** gsl-1.3/doc/examples/permshuffle.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/permshuffle.c Mon Jun 2 16:05:45 2003 *************** *** 0 **** --- 1,36 ---- + #include + #include + #include + #include + + int + main (void) + { + const size_t N = 10; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_permutation * p = gsl_permutation_alloc (N); + gsl_permutation * q = gsl_permutation_alloc (N); + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("initial permutation:"); + gsl_permutation_init (p); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf (" random permutation:"); + gsl_ran_shuffle (r, p->data, N, sizeof(size_t)); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf ("inverse permutation:"); + gsl_permutation_inverse (q, p); + gsl_permutation_fprintf (stdout, q, " %u"); + printf ("\n"); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/polyroots.c gsl-1.4/doc/examples/polyroots.c *** gsl-1.3/doc/examples/polyroots.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/polyroots.c Mon Jun 2 16:06:41 2003 *************** *** 0 **** --- 1,26 ---- + #include + #include + + int + main (void) + { + int i; + /* coefficient of P(x) = -1 + x^5 */ + double a[6] = { -1, 0, 0, 0, 0, 1 }; + double z[10]; + + gsl_poly_complex_workspace * w + = gsl_poly_complex_workspace_alloc (6); + + gsl_poly_complex_solve (a, 6, w, z); + + gsl_poly_complex_workspace_free (w); + + for (i = 0; i < 5; i++) + { + printf ("z%d = %+.18f %+.18f\n", + i, z[2*i], z[2*i+1]); + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/polyroots.out gsl-1.4/doc/examples/polyroots.out *** gsl-1.3/doc/examples/polyroots.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/polyroots.out Mon Jun 2 16:06:56 2003 *************** *** 0 **** --- 1,5 ---- + z0 = -0.809016994374947451 +0.587785252292473137 + z1 = -0.809016994374947451 -0.587785252292473137 + z2 = +0.309016994374947451 +0.951056516295153642 + z3 = +0.309016994374947451 -0.951056516295153642 + z4 = +1.000000000000000000 +0.000000000000000000 diff -x.info* -rc2P gsl-1.3/doc/examples/qrng.c gsl-1.4/doc/examples/qrng.c *** gsl-1.3/doc/examples/qrng.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/qrng.c Mon Jun 2 16:07:33 2003 *************** *** 0 **** --- 1,19 ---- + #include + #include + + int + main (void) + { + int i; + gsl_qrng * q = gsl_qrng_alloc (gsl_qrng_sobol, 2); + + for (i = 0; i < 1024; i++) + { + double v[2]; + gsl_qrng_get (q, v); + printf ("%.5f %.5f\n", v[0], v[1]); + } + + gsl_qrng_free (q); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/randpoisson.2.out gsl-1.4/doc/examples/randpoisson.2.out *** gsl-1.3/doc/examples/randpoisson.2.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/randpoisson.2.out Tue Jul 29 09:36:12 2003 *************** *** 0 **** --- 1,2 ---- + GSL_RNG_SEED=123 + 4 5 6 3 3 1 4 2 5 5 diff -x.info* -rc2P gsl-1.3/doc/examples/randpoisson.c gsl-1.4/doc/examples/randpoisson.c *** gsl-1.3/doc/examples/randpoisson.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/randpoisson.c Mon Jun 2 16:08:08 2003 *************** *** 0 **** --- 1,34 ---- + #include + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + int i, n = 10; + double mu = 3.0; + + /* create a generator chosen by the + environment variable GSL_RNG_TYPE */ + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + /* print n random variates chosen from + the poisson distribution with mean + parameter mu */ + + for (i = 0; i < n; i++) + { + unsigned int k = gsl_ran_poisson (r, mu); + printf (" %u", k); + } + + printf ("\n"); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/randpoisson.out gsl-1.4/doc/examples/randpoisson.out *** gsl-1.3/doc/examples/randpoisson.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/randpoisson.out Mon Jul 28 14:24:43 2003 *************** *** 0 **** --- 1 ---- + 2 5 5 2 1 0 3 4 1 1 diff -x.info* -rc2P gsl-1.3/doc/examples/randwalk.c gsl-1.4/doc/examples/randwalk.c *** gsl-1.3/doc/examples/randwalk.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/randwalk.c Mon Jun 2 16:08:44 2003 *************** *** 0 **** --- 1,27 ---- + #include + #include + #include + + int + main (void) + { + int i; + double x = 0, y = 0, dx, dy; + + const gsl_rng_type * T; + gsl_rng * r; + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("%g %g\n", x, y); + + for (i = 0; i < 10; i++) + { + gsl_ran_dir_2d (r, &dx, &dy); + x += dx; y += dy; + printf ("%g %g\n", x, y); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/rng.c gsl-1.4/doc/examples/rng.c *** gsl-1.3/doc/examples/rng.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/rng.c Fri Jun 20 15:19:49 2003 *************** *** 0 **** --- 1,20 ---- + #include + #include + + gsl_rng * r; /* global generator */ + + int + main (void) + { + const gsl_rng_type * T; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("generator type: %s\n", gsl_rng_name (r)); + printf ("seed = %lu\n", gsl_rng_default_seed); + printf ("first value = %lu\n", gsl_rng_get (r)); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/rng.out gsl-1.4/doc/examples/rng.out *** gsl-1.3/doc/examples/rng.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/rng.out Mon Jun 2 16:09:33 2003 *************** *** 0 **** --- 1,3 ---- + generator type: mt19937 + seed = 0 + first value = 4293858116 diff -x.info* -rc2P gsl-1.3/doc/examples/rngunif.2.out gsl-1.4/doc/examples/rngunif.2.out *** gsl-1.3/doc/examples/rngunif.2.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/rngunif.2.out Tue Jul 29 09:38:23 2003 *************** *** 0 **** --- 1,12 ---- + GSL_RNG_TYPE=mrg + GSL_RNG_SEED=123 + 0.33050 + 0.86631 + 0.32982 + 0.67620 + 0.53391 + 0.06457 + 0.16847 + 0.70229 + 0.04371 + 0.86374 diff -x.info* -rc2P gsl-1.3/doc/examples/rngunif.c gsl-1.4/doc/examples/rngunif.c *** gsl-1.3/doc/examples/rngunif.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/rngunif.c Mon Jun 2 16:10:15 2003 *************** *** 0 **** --- 1,26 ---- + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + int i, n = 10; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < n; i++) + { + double u = gsl_rng_uniform (r); + printf ("%.5f\n", u); + } + + gsl_rng_free (r); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/rngunif.out gsl-1.4/doc/examples/rngunif.out *** gsl-1.3/doc/examples/rngunif.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/rngunif.out Mon Jun 2 16:10:31 2003 *************** *** 0 **** --- 1,10 ---- + 0.99974 + 0.16291 + 0.28262 + 0.94720 + 0.23166 + 0.48497 + 0.95748 + 0.74431 + 0.54004 + 0.73995 diff -x.info* -rc2P gsl-1.3/doc/examples/rootnewt.c gsl-1.4/doc/examples/rootnewt.c *** gsl-1.3/doc/examples/rootnewt.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/rootnewt.c Mon Jun 2 16:13:08 2003 *************** *** 0 **** --- 1,50 ---- + #include + #include + #include + #include + + #include "demo_fn.h" + #include "demo_fn.c" + + int + main (void) + { + int status; + int iter = 0, max_iter = 100; + const gsl_root_fdfsolver_type *T; + gsl_root_fdfsolver *s; + double x0, x = 5.0, r_expected = sqrt (5.0); + gsl_function_fdf FDF; + struct quadratic_params params = {1.0, 0.0, -5.0}; + + FDF.f = &quadratic; + FDF.df = &quadratic_deriv; + FDF.fdf = &quadratic_fdf; + FDF.params = ¶ms; + + T = gsl_root_fdfsolver_newton; + s = gsl_root_fdfsolver_alloc (T); + gsl_root_fdfsolver_set (s, &FDF, x); + + printf ("using %s method\n", + gsl_root_fdfsolver_name (s)); + + printf ("%-5s %10s %10s %10s\n", + "iter", "root", "err", "err(est)"); + do + { + iter++; + status = gsl_root_fdfsolver_iterate (s); + x0 = x; + x = gsl_root_fdfsolver_root (s); + status = gsl_root_test_delta (x, x0, 0, 1e-3); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d %10.7f %+10.7f %10.7f\n", + iter, x, x - r_expected, x - x0); + } + while (status == GSL_CONTINUE && iter < max_iter); + return status; + } diff -x.info* -rc2P gsl-1.3/doc/examples/roots.c gsl-1.4/doc/examples/roots.c *** gsl-1.3/doc/examples/roots.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/roots.c Mon Jun 2 16:11:04 2003 *************** *** 0 **** --- 1,55 ---- + #include + #include + #include + #include + + #include "demo_fn.h" + #include "demo_fn.c" + + int + main (void) + { + int status; + int iter = 0, max_iter = 100; + const gsl_root_fsolver_type *T; + gsl_root_fsolver *s; + double r = 0, r_expected = sqrt (5.0); + double x_lo = 0.0, x_hi = 5.0; + gsl_function F; + struct quadratic_params params = {1.0, 0.0, -5.0}; + + F.function = &quadratic; + F.params = ¶ms; + + T = gsl_root_fsolver_brent; + s = gsl_root_fsolver_alloc (T); + gsl_root_fsolver_set (s, &F, x_lo, x_hi); + + printf ("using %s method\n", + gsl_root_fsolver_name (s)); + + printf ("%5s [%9s, %9s] %9s %10s %9s\n", + "iter", "lower", "upper", "root", + "err", "err(est)"); + + do + { + iter++; + status = gsl_root_fsolver_iterate (s); + r = gsl_root_fsolver_root (s); + x_lo = gsl_root_fsolver_x_lower (s); + x_hi = gsl_root_fsolver_x_upper (s); + status = gsl_root_test_interval (x_lo, x_hi, + 0, 0.001); + + if (status == GSL_SUCCESS) + printf ("Converged:\n"); + + printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", + iter, x_lo, x_hi, + r, r - r_expected, + x_hi - x_lo); + } + while (status == GSL_CONTINUE && iter < max_iter); + return status; + } diff -x.info* -rc2P gsl-1.3/doc/examples/siman.c gsl-1.4/doc/examples/siman.c *** gsl-1.3/doc/examples/siman.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/siman.c Fri Jun 20 15:17:43 2003 *************** *** 0 **** --- 1,79 ---- + #include + #include + #include + + /* set up parameters for this simulated annealing run */ + + /* how many points do we try before stepping */ + #define N_TRIES 200 + + /* how many iterations for each T? */ + #define ITERS_FIXED_T 10 + + /* max step size in random walk */ + #define STEP_SIZE 10 + + /* Boltzmann constant */ + #define K 1.0 + + /* initial temperature */ + #define T_INITIAL 0.002 + + /* damping factor for temperature */ + #define MU_T 1.005 + #define T_MIN 2.0e-6 + + gsl_siman_params_t params + = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + + /* now some functions to test in one dimension */ + double E1(void *xp) + { + double x = * ((double *) xp); + + return exp(-pow((x-1.0),2.0))*sin(8*x); + } + + double M1(void *xp, void *yp) + { + double x = *((double *) xp); + double y = *((double *) yp); + + return fabs(x - y); + } + + void S1(const gsl_rng * r, void *xp, double step_size) + { + double old_x = *((double *) xp); + double new_x; + + double u = gsl_rng_uniform(r); + new_x = u * 2 * step_size - step_size + old_x; + + memcpy(xp, &new_x, sizeof(new_x)); + } + + void P1(void *xp) + { + printf ("%12g", *((double *) xp)); + } + + int + main(int argc, char *argv[]) + { + const gsl_rng_type * T; + gsl_rng * r; + + double x_initial = 15.5; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc(T); + + gsl_siman_solve(r, &x_initial, E1, S1, M1, P1, + NULL, NULL, NULL, + sizeof(double), params); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/sortsmall.c gsl-1.4/doc/examples/sortsmall.c *** gsl-1.3/doc/examples/sortsmall.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/sortsmall.c Mon Jun 2 16:14:28 2003 *************** *** 0 **** --- 1,34 ---- + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + size_t i, k = 5, N = 100000; + + double * x = malloc (N * sizeof(double)); + double * small = malloc (k * sizeof(double)); + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < N; i++) + { + x[i] = gsl_rng_uniform(r); + } + + gsl_sort_smallest (small, k, x, 1, N); + + printf ("%d smallest values from %d\n", k, N); + + for (i = 0; i < k; i++) + { + printf ("%d: %.18f\n", i, small[i]); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/sortsmall.out gsl-1.4/doc/examples/sortsmall.out *** gsl-1.3/doc/examples/sortsmall.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/sortsmall.out Tue Jul 29 09:51:28 2003 *************** *** 0 **** --- 1,6 ---- + 5 smallest values from 100000 + 0: 0.000003489200025797 + 1: 0.000008199829608202 + 2: 0.000008953968062997 + 3: 0.000010712770745158 + 4: 0.000033531803637743 diff -x.info* -rc2P gsl-1.3/doc/examples/specfun.c gsl-1.4/doc/examples/specfun.c *** gsl-1.3/doc/examples/specfun.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/specfun.c Mon Jun 2 16:15:52 2003 *************** *** 0 **** --- 1,15 ---- + #include + #include + + int + main (void) + { + double x = 5.0; + double expected = -0.17759677131433830434739701; + + double y = gsl_sf_bessel_J0 (x); + + printf ("J0(5.0) = %.18f\n", y); + printf ("exact = %.18f\n", expected); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/specfun.out gsl-1.4/doc/examples/specfun.out *** gsl-1.3/doc/examples/specfun.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/specfun.out Mon Jun 2 16:16:07 2003 *************** *** 0 **** --- 1,2 ---- + J0(5.0) = -0.177596771314338292 + exact = -0.177596771314338292 diff -x.info* -rc2P gsl-1.3/doc/examples/specfun_e.c gsl-1.4/doc/examples/specfun_e.c *** gsl-1.3/doc/examples/specfun_e.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/specfun_e.c Fri Jun 20 15:18:16 2003 *************** *** 0 **** --- 1,21 ---- + #include + #include + #include + + int + main (void) + { + double x = 5.0; + gsl_sf_result result; + + double expected = -0.17759677131433830434739701; + + int status = gsl_sf_bessel_J0_e (x, &result); + + printf ("status = %s\n", gsl_strerror(status)); + printf ("J0(5.0) = %.18f\n" + " +/- % .18f\n", + result.val, result.err); + printf ("exact = %.18f\n", expected); + return status; + } diff -x.info* -rc2P gsl-1.3/doc/examples/specfun_e.out gsl-1.4/doc/examples/specfun_e.out *** gsl-1.3/doc/examples/specfun_e.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/specfun_e.out Mon Jun 2 16:15:30 2003 *************** *** 0 **** --- 1,4 ---- + status = success + J0(5.0) = -0.177596771314338292 + +/- 0.000000000000000193 + exact = -0.177596771314338292 diff -x.info* -rc2P gsl-1.3/doc/examples/stat.c gsl-1.4/doc/examples/stat.c *** gsl-1.3/doc/examples/stat.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/stat.c Mon Jun 2 16:16:34 2003 *************** *** 0 **** --- 1,23 ---- + #include + #include + + int + main(void) + { + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double mean, variance, largest, smallest; + + mean = gsl_stats_mean(data, 1, 5); + variance = gsl_stats_variance(data, 1, 5); + largest = gsl_stats_max(data, 1, 5); + smallest = gsl_stats_min(data, 1, 5); + + printf ("The dataset is %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + printf ("The sample mean is %g\n", mean); + printf ("The estimated variance is %g\n", variance); + printf ("The largest value is %g\n", largest); + printf ("The smallest value is %g\n", smallest); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/stat.out gsl-1.4/doc/examples/stat.out *** gsl-1.3/doc/examples/stat.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/stat.out Mon Jun 2 16:16:45 2003 *************** *** 0 **** --- 1,5 ---- + The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 + The sample mean is 16.54 + The estimated variance is 4.2984 + The largest value is 18.3 + The smallest value is 12.6 diff -x.info* -rc2P gsl-1.3/doc/examples/statsort.c gsl-1.4/doc/examples/statsort.c *** gsl-1.3/doc/examples/statsort.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/statsort.c Mon Jun 2 16:17:02 2003 *************** *** 0 **** --- 1,36 ---- + #include + #include + #include + + int + main(void) + { + double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; + double median, upperq, lowerq; + + printf ("Original dataset: %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + gsl_sort (data, 1, 5); + + printf ("Sorted dataset: %g, %g, %g, %g, %g\n", + data[0], data[1], data[2], data[3], data[4]); + + median + = gsl_stats_median_from_sorted_data (data, + 1, 5); + + upperq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.75); + lowerq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.25); + + printf ("The median is %g\n", median); + printf ("The upper quartile is %g\n", upperq); + printf ("The lower quartile is %g\n", lowerq); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/statsort.out gsl-1.4/doc/examples/statsort.out *** gsl-1.3/doc/examples/statsort.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/statsort.out Mon Jun 2 16:17:17 2003 *************** *** 0 **** --- 1,5 ---- + Original dataset: 17.2, 18.1, 16.5, 18.3, 12.6 + Sorted dataset: 12.6, 16.5, 17.2, 18.1, 18.3 + The median is 17.2 + The upper quartile is 18.1 + The lower quartile is 16.5 diff -x.info* -rc2P gsl-1.3/doc/examples/sum.c gsl-1.4/doc/examples/sum.c *** gsl-1.3/doc/examples/sum.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/sum.c Sun Jul 27 08:49:46 2003 *************** *** 0 **** --- 1,47 ---- + #include + #include + #include + + #define N 20 + + int + main (void) + { + double t[N]; + double sum_accel, err; + double sum = 0; + int n; + + gsl_sum_levin_u_workspace * w + = gsl_sum_levin_u_alloc (N); + + const double zeta_2 = M_PI * M_PI / 6.0; + + /* terms for zeta(2) = \sum_{n=1}^{\infty} 1/n^2 */ + + for (n = 0; n < N; n++) + { + double np1 = n + 1.0; + t[n] = 1.0 / (np1 * np1); + sum += t[n]; + } + + gsl_sum_levin_u_accel (t, N, w, &sum_accel, &err); + + printf ("term-by-term sum = % .16f using %d terms\n", + sum, N); + + printf ("term-by-term sum = % .16f using %d terms\n", + w->sum_plain, w->terms_used); + + printf ("exact value = % .16f\n", zeta_2); + printf ("accelerated sum = % .16f using %d terms\n", + sum_accel, w->terms_used); + + printf ("estimated error = % .16f\n", err); + printf ("actual error = % .16f\n", + sum_accel - zeta_2); + + gsl_sum_levin_u_free (w); + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/sum.out gsl-1.4/doc/examples/sum.out *** gsl-1.3/doc/examples/sum.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/sum.out Mon Jun 2 16:17:53 2003 *************** *** 0 **** --- 1,6 ---- + term-by-term sum = 1.5961632439130233 using 20 terms + term-by-term sum = 1.5759958390005426 using 13 terms + exact value = 1.6449340668482264 + accelerated sum = 1.6449340668166479 using 13 terms + estimated error = 0.0000000000508580 + actual error = -0.0000000000315785 diff -x.info* -rc2P gsl-1.3/doc/examples/vector.c gsl-1.4/doc/examples/vector.c *** gsl-1.3/doc/examples/vector.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/vector.c Mon Jun 2 16:18:55 2003 *************** *** 0 **** --- 1,21 ---- + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (3); + + for (i = 0; i < 3; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + for (i = 0; i < 100; i++) + { + printf ("v_%d = %g\n", i, gsl_vector_get (v, i)); + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/vectorr.c gsl-1.4/doc/examples/vectorr.c *** gsl-1.3/doc/examples/vectorr.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/vectorr.c Mon Jun 2 16:19:33 2003 *************** *** 0 **** --- 1,22 ---- + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (10); + + { + FILE * f = fopen ("test.dat", "r"); + gsl_vector_fscanf (f, v); + fclose (f); + } + + for (i = 0; i < 10; i++) + { + printf ("%g\n", gsl_vector_get(v, i)); + } + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/vectorview.c gsl-1.4/doc/examples/vectorview.c *** gsl-1.3/doc/examples/vectorview.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/vectorview.c Fri Jun 20 15:18:37 2003 *************** *** 0 **** --- 1,30 ---- + #include + #include + #include + #include + + int + main (void) + { + size_t i,j; + + gsl_matrix *m = gsl_matrix_alloc (10, 10); + + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + gsl_matrix_set (m, i, j, sin (i) + cos (j)); + + for (j = 0; j < 10; j++) + { + gsl_vector_view column = gsl_matrix_column (m, j); + double d; + + d = gsl_blas_dnrm2 (&column.vector); + + printf ("matrix column %d, norm = %g\n", j, d); + } + + gsl_matrix_free (m); + + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/examples/vectorview.out gsl-1.4/doc/examples/vectorview.out *** gsl-1.3/doc/examples/vectorview.out Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/vectorview.out Mon Jun 2 16:21:02 2003 *************** *** 0 **** --- 1,10 ---- + matrix column 0, norm = 4.31461 + matrix column 1, norm = 3.1205 + matrix column 2, norm = 2.19316 + matrix column 3, norm = 3.26114 + matrix column 4, norm = 2.53416 + matrix column 5, norm = 2.57281 + matrix column 6, norm = 4.20469 + matrix column 7, norm = 3.65202 + matrix column 8, norm = 2.08524 + matrix column 9, norm = 3.07313 diff -x.info* -rc2P gsl-1.3/doc/examples/vectorw.c gsl-1.4/doc/examples/vectorw.c *** gsl-1.3/doc/examples/vectorw.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/examples/vectorw.c Mon Jun 2 16:19:16 2003 *************** *** 0 **** --- 1,21 ---- + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (100); + + for (i = 0; i < 100; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + { + FILE * f = fopen ("test.dat", "w"); + gsl_vector_fprintf (f, v, "%.5g"); + fclose (f); + } + return 0; + } diff -x.info* -rc2P gsl-1.3/doc/fdl.texi gsl-1.4/doc/fdl.texi *** gsl-1.3/doc/fdl.texi Thu Oct 18 21:35:58 2001 --- gsl-1.4/doc/fdl.texi Sun Aug 10 16:54:53 2003 *************** *** 6,11 **** 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. @end display --- 6,11 ---- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA ! Everyone is permitted to copy and distribute verbatim copies of this ! license document, but changing it is not allowed. @end display diff -x.info* -rc2P gsl-1.3/doc/fft.texi gsl-1.4/doc/fft.texi *** gsl-1.3/doc/fft.texi Sun Dec 15 13:20:56 2002 --- gsl-1.4/doc/fft.texi Mon Jun 2 15:46:19 2003 *************** *** 146,150 **** @example ! gsl_complex_packed_array data[6]; @end example --- 146,151 ---- @example ! double x[3*2]; ! gsl_complex_packed_array data = x; @end example *************** *** 222,237 **** All these functions are declared in the header file @file{gsl_fft_complex.h}. ! @deftypefun int gsl_fft_complex_radix2_forward (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_transform (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_backward (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) These functions compute forward, backward and inverse FFTs of length @var{n} with stride @var{stride}, on the packed complex array @var{data} using an in-place radix-2 decimation-in-time algorithm. The length of ! the transform @var{n} is restricted to powers of two. The functions return a value of @code{GSL_SUCCESS} if no errors were --- 223,240 ---- All these functions are declared in the header file @file{gsl_fft_complex.h}. ! @deftypefun int gsl_fft_complex_radix2_forward (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_transform (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}, gsl_fft_direction @var{sign}) ! @deftypefunx int gsl_fft_complex_radix2_backward (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_inverse (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}) These functions compute forward, backward and inverse FFTs of length @var{n} with stride @var{stride}, on the packed complex array @var{data} using an in-place radix-2 decimation-in-time algorithm. The length of ! the transform @var{n} is restricted to powers of two. For the ! @code{transform} version of the function the @var{sign} argument can be ! either @code{forward} (-1) or @code{backward} (+1). The functions return a value of @code{GSL_SUCCESS} if no errors were *************** *** 240,250 **** @end deftypefun ! @deftypefun int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}) These are decimation-in-frequency versions of the radix-2 FFT functions. --- 243,253 ---- @end deftypefun ! @deftypefun int gsl_fft_complex_radix2_dif_forward (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_dif_transform (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}, gsl_fft_direction @var{sign}) ! @deftypefunx int gsl_fft_complex_radix2_dif_backward (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}) ! @deftypefunx int gsl_fft_complex_radix2_dif_inverse (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}) These are decimation-in-frequency versions of the radix-2 FFT functions. *************** *** 263,311 **** @example ! #include ! #include ! #include ! #include ! ! #define REAL(z,i) ((z)[2*(i)]) ! #define IMAG(z,i) ((z)[2*(i)+1]) ! ! int ! main (void) ! @{ ! int i; ! double data[2*128]; ! ! for (i = 0; i < 128; i++) ! @{ ! REAL(data,i) = 0.0; ! IMAG(data,i) = 0.0; ! @} ! ! REAL(data,0) = 1.0; ! ! for (i = 1; i <= 10; i++) ! @{ ! REAL(data,i) = REAL(data,128-i) = 1.0; ! @} ! ! for (i = 0; i < 128; i++) ! @{ ! printf ("%d %e %e\n", i, ! REAL(data,i), IMAG(data,i)); ! @} ! printf ("\n"); ! ! gsl_fft_complex_radix2_forward (data, 1, 128); ! ! for (i = 0; i < 128; i++) ! @{ ! printf ("%d %e %e\n", i, ! REAL(data,i)/sqrt(128), ! IMAG(data,i)/sqrt(128)); ! @} ! ! return 0; ! @} @end example @noindent --- 266,270 ---- @example ! @verbatiminclude examples/fft.c @end example @noindent *************** *** 464,468 **** @end deftp @noindent ! The mixed radix algorithms require an additional working space to hold the intermediate steps of the transform. --- 423,427 ---- @end deftp @noindent ! The mixed radix algorithms require additional working space to hold the intermediate steps of the transform. *************** *** 492,499 **** The following functions compute the transform, ! @deftypefun int gsl_fft_complex_forward (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) ! @deftypefunx int gsl_fft_complex_transform (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) ! @deftypefunx int gsl_fft_complex_backward (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) ! @deftypefunx int gsl_fft_complex_inverse (gsl_complex_packed_array @var{data}[], size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) These functions compute forward, backward and inverse FFTs of length --- 451,458 ---- The following functions compute the transform, ! @deftypefun int gsl_fft_complex_forward (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) ! @deftypefunx int gsl_fft_complex_transform (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}, gsl_fft_direction @var{sign}) ! @deftypefunx int gsl_fft_complex_backward (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) ! @deftypefunx int gsl_fft_complex_inverse (gsl_complex_packed_array @var{data}, size_t @var{stride}, size_t @var{n}, const gsl_fft_complex_wavetable * @var{wavetable}, gsl_fft_complex_workspace * @var{work}) These functions compute forward, backward and inverse FFTs of length *************** *** 504,508 **** factors are computed with a slow, @math{O(n^2)}, general-@math{n} module. The caller must supply a @var{wavetable} containing the ! trigonometric lookup tables and a workspace @var{work}. The functions return a value of @code{0} if no errors were detected. The --- 463,469 ---- factors are computed with a slow, @math{O(n^2)}, general-@math{n} module. The caller must supply a @var{wavetable} containing the ! trigonometric lookup tables and a workspace @var{work}. For the ! @code{transform} version of the function the @var{sign} argument can be ! either @code{forward} (-1) or @code{backward} (+1). The functions return a value of @code{0} if no errors were detected. The *************** *** 528,591 **** @example ! #include ! #include ! #include ! #include ! ! #define REAL(z,i) ((z)[2*(i)]) ! #define IMAG(z,i) ((z)[2*(i)+1]) ! ! int ! main (void) ! @{ ! int i; ! const int n = 630; ! double data[2*n]; ! ! gsl_fft_complex_wavetable * wavetable; ! gsl_fft_complex_workspace * workspace; ! ! for (i = 0; i < n; i++) ! @{ ! REAL(data,i) = 0.0; ! IMAG(data,i) = 0.0; ! @} ! ! data[0].real = 1.0; ! ! for (i = 1; i <= 10; i++) ! @{ ! REAL(data,i) = REAL(data,n-i) = 1.0; ! @} ! ! for (i = 0; i < n; i++) ! @{ ! printf ("%d: %e %e\n", i, REAL(data,i), ! IMAG(data,i)); ! @} ! printf ("\n"); ! ! wavetable = gsl_fft_complex_wavetable_alloc (n); ! workspace = gsl_fft_complex_workspace_alloc (n); ! ! for (i = 0; i < wavetable->nf; i++) ! @{ ! printf("# factor %d: %d\n", i, ! wavetable->factor[i]); ! @} ! ! gsl_fft_complex_forward (data, 1, n, ! wavetable, workspace); ! ! for (i = 0; i < n; i++) ! @{ ! printf ("%d: %e %e\n", i, REAL(data,i), ! IMAG(data,i)); ! @} ! ! gsl_fft_complex_wavetable_free (wavetable); ! gsl_fft_complex_workspace_free (workspace); ! return 0; ! @} @end example --- 489,493 ---- @example ! @verbatiminclude examples/fftmr.c @end example *************** *** 853,862 **** @end deftypefun @noindent ! The mixed radix algorithms require an additional working space to hold the intermediate steps of the transform, @deftypefun {gsl_fft_real_workspace *} gsl_fft_real_workspace_alloc (size_t @var{n}) This function allocates a workspace for a real transform of length ! @var{n}. The same workspace is used for both forward real and inverse halfcomplex transforms. @end deftypefun --- 755,764 ---- @end deftypefun @noindent ! The mixed radix algorithms require additional working space to hold the intermediate steps of the transform, @deftypefun {gsl_fft_real_workspace *} gsl_fft_real_workspace_alloc (size_t @var{n}) This function allocates a workspace for a real transform of length ! @var{n}. The same workspace can be used for both forward real and inverse halfcomplex transforms. @end deftypefun *************** *** 903,907 **** @end deftypefun ! @deftypefun int gsl_fft_halfcomplex_unpack (const double @var{halfcomplex_coefficient}[], gsl_complex_packed_array @var{complex_coefficient}[], size_t @var{stride}, size_t @var{n}) This function converts @var{halfcomplex_coefficient}, an array of --- 805,809 ---- @end deftypefun ! @deftypefun int gsl_fft_halfcomplex_unpack (const double @var{halfcomplex_coefficient}[], gsl_complex_packed_array @var{complex_coefficient}, size_t @var{stride}, size_t @var{n}) This function converts @var{halfcomplex_coefficient}, an array of *************** *** 959,1026 **** @example ! #include ! #include ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! int i, n = 100; ! double data[n]; ! ! gsl_fft_real_wavetable * real; ! gsl_fft_halfcomplex_wavetable * hc; ! gsl_fft_real_workspace * work; ! ! for (i = 0; i < n; i++) ! @{ ! data[i] = 0.0; ! @} ! ! for (i = n / 3; i < 2 * n / 3; i++) ! @{ ! data[i] = 1.0; ! @} ! ! for (i = 0; i < n; i++) ! @{ ! printf ("%d: %e\n", i, data[i]); ! @} ! printf ("\n"); ! ! work = gsl_fft_real_workspace_alloc (n); ! real = gsl_fft_real_wavetable_alloc (n); ! ! gsl_fft_real_transform (data, 1, n, ! real, work); ! ! gsl_fft_real_wavetable_free (real); ! ! for (i = 11; i < n; i++) ! @{ ! data[i] = 0; ! @} ! ! hc = gsl_fft_halfcomplex_wavetable_alloc (n); ! ! gsl_fft_halfcomplex_inverse (data, 1, n, ! hc, work); ! gsl_fft_halfcomplex_wavetable_free (hc); ! ! for (i = 0; i < n; i++) ! @{ ! printf ("%d: %e\n", i, data[i]); ! @} ! ! gsl_fft_real_workspace_free (work); ! return 0; ! @} @end example @iftex @sp 1 ! @center @image{fft-real-mixedradix} @center Low-pass filtered version of a real pulse, --- 861,870 ---- @example ! @verbatiminclude examples/fftreal.c @end example @iftex @sp 1 ! @center @image{fft-real-mixedradix,3.4in} @center Low-pass filtered version of a real pulse, *************** *** 1044,1048 **** @noindent To find out about the algorithms used in the GSL routines you may want ! to consult the latex document @cite{GSL FFT Algorithms} (it is included in GSL, as @file{doc/fftalgorithms.tex}). This has general information on FFTs and explicit derivations of the implementation for each --- 888,892 ---- @noindent To find out about the algorithms used in the GSL routines you may want ! to consult the document @cite{GSL FFT Algorithms} (it is included in GSL, as @file{doc/fftalgorithms.tex}). This has general information on FFTs and explicit derivations of the implementation for each *************** *** 1127,1131 **** --- 971,981 ---- FFTW Website, @url{http://www.fftw.org/} @end itemize + @noindent + The source code for @sc{fftpack} is available from Netlib, + @itemize @asis + @item + FFTPACK, @url{http://www.netlib.org/fftpack/} + @end itemize diff -x.info* -rc2P gsl-1.3/doc/fitting.texi gsl-1.4/doc/fitting.texi *** gsl-1.3/doc/fitting.texi Sun Dec 15 13:13:39 2002 --- gsl-1.4/doc/fitting.texi Mon Jun 2 15:47:55 2003 *************** *** 2,6 **** @cindex least squares fit @cindex regression, least squares ! This chapter describes routines for performing least squares fits to experimental data using linear combinations of functions. The data may --- 2,6 ---- @cindex least squares fit @cindex regression, least squares ! @cindex weighted linear fits This chapter describes routines for performing least squares fits to experimental data using linear combinations of functions. The data may *************** *** 23,27 **** @node Linear regression @section Linear regression ! The functions described in this section can be used to perform least-squares fits to a straight line model, @math{Y = c_0 + c_1 X}. --- 23,27 ---- @node Linear regression @section Linear regression ! @cindex linear regression The functions described in this section can be used to perform least-squares fits to a straight line model, @math{Y = c_0 + c_1 X}. *************** *** 46,49 **** --- 46,50 ---- sum is computed with @math{w_i = 1}. + @cindex covariance matrix, from linear regression @deftypefun int gsl_fit_linear (const double * @var{x}, const size_t @var{xstride}, const double * @var{y}, const size_t @var{ystride}, size_t @var{n}, double * @var{c0}, double * @var{c1}, double * @var{cov00}, double * @var{cov01}, double * @var{cov11}, double * @var{sumsq}) This function computes the best-fit linear regression coefficients *************** *** 138,142 **** @node Multi-parameter fitting @section Multi-parameter fitting ! The functions described in this section perform least-squares fits to a general linear model, @math{y = X c} where @math{y} is a vector of --- 139,144 ---- @node Multi-parameter fitting @section Multi-parameter fitting ! @cindex multi-parameter regression ! @cindex fits, multi-parameter linear The functions described in this section perform least-squares fits to a general linear model, @math{y = X c} where @math{y} is a vector of *************** *** 275,323 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i, n = 4; ! double x[4] = @{ 1970, 1980, 1990, 2000 @}; ! double y[4] = @{ 12, 11, 14, 13 @}; ! double w[4] = @{ 0.1, 0.2, 0.3, 0.4 @}; ! ! double c0, c1, cov00, cov01, cov11, chisq; ! ! gsl_fit_wlinear (x, 1, w, 1, y, 1, n, ! &c0, &c1, &cov00, &cov01, &cov11, ! &chisq); ! ! printf("# best fit: Y = %g + %g X\n", c0, c1); ! printf("# covariance matrix:\n"); ! printf("# [ %g, %g\n# %g, %g]\n", ! cov00, cov01, cov01, cov11); ! printf("# chisq = %g\n", chisq); ! ! for (i = 0; i < n; i++) ! printf("data: %g %g %g\n", ! x[i], y[i], 1/sqrt(w[i])); ! ! printf("\n"); ! ! for (i = -30; i < 130; i++) ! @{ ! double xf = x[0] + (i/100.0) * (x[n-1] - x[0]); ! double yf, yf_err; ! ! gsl_fit_linear_est (xf, ! c0, c1, ! cov00, cov01, cov11, ! &yf, &yf_err); ! ! printf("fit: %g %g\n", xf, yf); ! printf("hi : %g %g\n", xf, yf + yf_err); ! printf("lo : %g %g\n", xf, yf - yf_err); ! @} ! return 0; ! @} @end example @noindent --- 277,281 ---- @example ! @verbatiminclude examples/fitting.c @end example @noindent *************** *** 344,348 **** @iftex @sp 1 ! @center @image{fit-wlinear,4in} @end iftex --- 302,306 ---- @iftex @sp 1 ! @center @image{fit-wlinear,3.4in} @end iftex *************** *** 380,456 **** @example ! #include ! #include ! ! int ! main (int argc, char **argv) ! @{ ! int i, n; ! double xi, yi, ei, chisq; ! gsl_matrix *X, *cov; ! gsl_vector *y, *w, *c; ! ! if (argc != 2) ! @{ ! fprintf(stderr,"usage: fit n < data\n"); ! exit (-1); ! @} ! ! n = atoi(argv[1]); ! ! X = gsl_matrix_alloc (n, 3); ! y = gsl_vector_alloc (n); ! w = gsl_vector_alloc (n); ! ! c = gsl_vector_alloc (3); ! cov = gsl_matrix_alloc (3, 3); ! ! for (i = 0; i < n; i++) ! @{ ! int count = fscanf(stdin, "%lg %lg %lg", ! &xi, &yi, &ei); ! ! if (count != 3) ! @{ ! fprintf(stderr, "error reading file\n"); ! exit(-1); ! @} ! ! printf("%g %g +/- %g\n", xi, yi, ei); ! ! gsl_matrix_set (X, i, 0, 1.0); ! gsl_matrix_set (X, i, 1, xi); ! gsl_matrix_set (X, i, 2, xi*xi); ! ! gsl_vector_set (y, i, yi); ! gsl_vector_set (w, i, 1.0/(ei*ei)); ! @} ! ! @{ ! gsl_multifit_linear_workspace * work ! = gsl_multifit_linear_alloc (n, 3); ! gsl_multifit_wlinear (X, w, y, c, cov, ! &chisq, work); ! gsl_multifit_linear_free (work); ! @} ! ! #define C(i) (gsl_vector_get(c,(i))) ! #define COV(i,j) (gsl_matrix_get(cov,(i),(j))) ! ! @{ ! printf("# best fit: Y = %g + %g X + %g X^2\n", ! C(0), C(1), C(2)); ! ! printf("# covariance matrix:\n"); ! printf("[ %+.5e, %+.5e, %+.5e \n", ! COV(0,0), COV(0,1), COV(0,2)); ! printf(" %+.5e, %+.5e, %+.5e \n", ! COV(1,0), COV(1,1), COV(1,2)); ! printf(" %+.5e, %+.5e, %+.5e ]\n", ! COV(2,0), COV(2,1), COV(2,2)); ! printf("# chisq = %g\n", chisq); ! @} ! return 0; ! @} @end example @noindent --- 338,342 ---- @example ! @verbatiminclude examples/fitting2.c @end example @noindent *************** *** 460,489 **** @example ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! double x; ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc(T); ! ! for (x = 0.1; x < 2; x+= 0.1) ! @{ ! double y0 = exp(x); ! double sigma = 0.1*y0; ! double dy = gsl_ran_gaussian(r, sigma); ! ! printf("%g %g %g\n", x, y0 + dy, sigma); ! @} ! return 0; ! @} @end example @noindent --- 346,350 ---- @example ! @verbatiminclude examples/fitting3.c @end example @noindent *************** *** 528,532 **** @iftex @sp 1 ! @center @image{fit-wlinear2,4in} @end iftex --- 389,393 ---- @iftex @sp 1 ! @center @image{fit-wlinear2,3.4in} @end iftex *************** *** 549,552 **** --- 410,415 ---- @noindent + @cindex NIST Statistical Reference Datasets + @cindex Statistical Reference Datasets (StRD) The tests used to prepare these routines are based on the NIST Statistical Reference Datasets. The datasets and their documentation are diff -x.info* -rc2P gsl-1.3/doc/freemanuals.texi gsl-1.4/doc/freemanuals.texi *** gsl-1.3/doc/freemanuals.texi Thu Jan 1 00:00:00 1970 --- gsl-1.4/doc/freemanuals.texi Sun Aug 10 16:52:36 2003 *************** *** 0 **** --- 1,95 ---- + @cindex free documentation + + @quotation + @i{The following article was written by Richard Stallman, founder of the + GNU Project.} + @end quotation + + + The biggest deficiency in the free software community today is not in + the software---it is the lack of good free documentation that we can + include with the free software. Many of our most important + programs do not come with free reference manuals and free introductory + texts. Documentation is an essential part of any software package; + when an important free software package does not come with a free + manual and a free tutorial, that is a major gap. We have many such + gaps today. + + Consider Perl, for instance. The tutorial manuals that people + normally use are non-free. How did this come about? Because the + authors of those manuals published them with restrictive terms---no + copying, no modification, source files not available---which exclude + them from the free software world. + + That wasn't the first time this sort of thing happened, and it was far + from the last. Many times we have heard a GNU user eagerly describe a + manual that he is writing, his intended contribution to the community, + only to learn that he had ruined everything by signing a publication + contract to make it non-free. + + Free documentation, like free software, is a matter of freedom, not + price. The problem with the non-free manual is not that publishers + charge a price for printed copies---that in itself is fine. (The Free + Software Foundation sells printed copies of manuals, too.) The + problem is the restrictions on the use of the manual. Free manuals + are available in source code form, and give you permission to copy and + modify. Non-free manuals do not allow this. + + The criteria of freedom for a free manual are roughly the same as for + free software. Redistribution (including the normal kinds of + commercial redistribution) must be permitted, so that the manual can + accompany every copy of the program, both on-line and on paper. + + Permission for modification of the technical content is crucial too. + When people modify the software, adding or changing features, if they + are conscientious they will change the manual too---so they can + provide accurate and clear documentation for the modified program. A + manual that leaves you no choice but to write a new manual to document + a changed version of the program is not really available to our + community. + + Some kinds of limits on the way modification is handled are + acceptable. For example, requirements to preserve the original + author's copyright notice, the distribution terms, or the list of + authors, are ok. It is also no problem to require modified versions + to include notice that they were modified. Even entire sections that + may not be deleted or changed are acceptable, as long as they deal + with nontechnical topics (like this one). These kinds of restrictions + are acceptable because they don't obstruct the community's normal use + of the manual. + + However, it must be possible to modify all the @emph{technical} + content of the manual, and then distribute the result in all the usual + media, through all the usual channels. Otherwise, the restrictions + obstruct the use of the manual, it is not free, and we need another + manual to replace it. + + Please spread the word about this issue. Our community continues to + lose manuals to proprietary publishing. If we spread the word that + free software needs free reference manuals and free tutorials, perhaps + the next person who wants to contribute by writing documentation will + realize, before it is too late, that only free manuals contribute to + the free software community. + + If you are writing documentation, please insist on publishing it under + the GNU Free Documentation License or another free documentation + license. Remember that this decision requires your approval---you + don't have to let the publisher decide. Some commercial publishers + will use a free license if you insist, but they will not propose the + option; it is up to you to raise the issue and say firmly that this is + what you want. If the publisher you are dealing with refuses, please + try other publishers. If you're not sure whether a proposed license + is free, write to @email{licensing@@gnu.org}. + + You can encourage commercial publishers to sell more free, copylefted + manuals and tutorials by buying them, and particularly by buying + copies from the publishers that paid for their writing or for major + improvements. Meanwhile, try to avoid buying non-free documentation + at all. Check the distribution terms of a manual before you buy it, + and insist that whoever seeks your business must respect your freedom. + Check the history of the book, and try reward the publishers that have + paid or pay the authors to work on it. + + The Free Software Foundation maintains a list of free documentation + published by other publishers, at + @url{http://www.fsf.org/doc/other-free-books.html}. diff -x.info* -rc2P gsl-1.3/doc/gpl.texi gsl-1.4/doc/gpl.texi *** gsl-1.3/doc/gpl.texi Thu Oct 18 21:35:10 2001 --- gsl-1.4/doc/gpl.texi Sun Aug 10 16:54:40 2003 *************** *** 7,12 **** 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ! Everyone is permitted to copy and distribute verbatim copies ! of this license document, but changing it is not allowed. @end display --- 7,12 ---- 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ! Everyone is permitted to copy and distribute verbatim copies of this ! license document, but changing it is not allowed. @end display diff -x.info* -rc2P gsl-1.3/doc/gsl-design.texi gsl-1.4/doc/gsl-design.texi *** gsl-1.3/doc/gsl-design.texi Sat Oct 5 20:12:16 2002 --- gsl-1.4/doc/gsl-design.texi Wed Jul 23 13:57:52 2003 *************** *** 391,394 **** --- 391,403 ---- are going to draw the line. + Whenever possible choose algorithms which scale well and always remember + to handle asymptotic cases. This is particularly relevant for functions + with integer arguments. It is tempting to implement these using the + simple @math{O(n)} algorithms used to define the functions, such as the + many recurrence relations found in Abramowitz and Stegun. While such + methods might be acceptable for @math{n=O(10-100)} they will not be + satisfactory for a user who needs to compute the same function for + @math{n=1000000}. + @node Code Reuse, Standards and conventions, Design of Numerical Libraries, Design @section Code Reuse *************** *** 418,421 **** --- 427,434 ---- @cite{GNU C Library Manual} (version 2), and the Glib source code. + For mathematical formulas, always follow the conventions in Abramowitz & + Stegun, the @cite{Handbook of Mathematical Functions}, since it is the + definitive reference and also in the public domain. + If the project has a philosophy it is to "Think in C". Since we are working in C we should only do what is natural in C, rather than trying *************** *** 642,646 **** this more readable by introducing a struct, ! @example struct grid @{ int nd; /* number of dimensions */ --- 655,659 ---- this more readable by introducing a struct, ! @smallexample struct grid @{ int nd; /* number of dimensions */ *************** *** 654,658 **** ... @} ! @end example --- 667,675 ---- ... @} ! @end smallexample ! @noindent ! Similarly, if you have a frequently recurring code fragment within a ! single file you can define a static or static inline function for it. ! This is typesafe and saves writing out everything in full. *************** *** 790,794 **** Only dump out the blocks of memory, not any associated parameters such as lengths. The idea is for the user to build higher level input/output ! facilities using the functions the library provides. Use the functions @smallexample --- 807,813 ---- Only dump out the blocks of memory, not any associated parameters such as lengths. The idea is for the user to build higher level input/output ! facilities using the functions the library provides. The fprintf/fscanf ! versions should be portable between architectures, while the binary ! versions should be the "raw" version of the data. Use the functions @smallexample *************** *** 927,931 **** required to be unity, the pointer form is preferred. ! @example /* real value, set on output */ int foo (double * x); --- 946,950 ---- required to be unity, the pointer form is preferred. ! @smallexample /* real value, set on output */ int foo (double * x); *************** *** 942,951 **** /* real array, not modified */ int baz (const double x[], size_t n); ! @end example @node Pointers, Constness, Arrays vs Pointers, Design @section Pointers ! Avoid deferencing pointers on the right-hand side of an expression where possible. It's better to introduce a temporary variable. This is easier for the compiler to optimise and also more readable since it --- 961,970 ---- /* real array, not modified */ int baz (const double x[], size_t n); ! @end smallexample @node Pointers, Constness, Arrays vs Pointers, Design @section Pointers ! Avoid dereferencing pointers on the right-hand side of an expression where possible. It's better to introduce a temporary variable. This is easier for the compiler to optimise and also more readable since it *************** *** 1088,1092 **** If your test uses multiple values make sure there are no simple relations between them that could allow bugs to be missed through silent ! cancelations. If you need some random floats to put in the test programs use @code{od -f --- 1107,1111 ---- If your test uses multiple values make sure there are no simple relations between them that could allow bugs to be missed through silent ! cancellations. If you need some random floats to put in the test programs use @code{od -f diff -x.info* -rc2P gsl-1.3/doc/gsl-ref.info gsl-1.4/doc/gsl-ref.info *** gsl-1.3/doc/gsl-ref.info Wed Dec 18 22:41:20 2002 --- gsl-1.4/doc/gsl-ref.info Thu Aug 14 12:36:46 2003 *************** *** 1,3 **** ! This is gsl-ref.info, produced by makeinfo version 4.2 from gsl-ref.texi. --- 1,3 ---- ! This is gsl-ref.info, produced by makeinfo version 4.6 from gsl-ref.texi. *************** *** 10,555 **** Indirect: gsl-ref.info-1: 228 ! gsl-ref.info-2: 49982 ! gsl-ref.info-3: 98941 ! gsl-ref.info-4: 142431 ! gsl-ref.info-5: 190772 ! gsl-ref.info-6: 239733 ! gsl-ref.info-7: 285784 ! gsl-ref.info-8: 334854 ! gsl-ref.info-9: 383200 ! gsl-ref.info-10: 431822 ! gsl-ref.info-11: 480601 ! gsl-ref.info-12: 528532 ! gsl-ref.info-13: 575830 ! gsl-ref.info-14: 624478 ! gsl-ref.info-15: 674155 ! gsl-ref.info-16: 723810 ! gsl-ref.info-17: 771481 ! gsl-ref.info-18: 817112 ! gsl-ref.info-19: 865801 ! gsl-ref.info-20: 908703 ! gsl-ref.info-21: 939900 ! gsl-ref.info-22: 959816 ! gsl-ref.info-23: 1072308  Tag Table: (Indirect) Node: Top228 ! Node: Introduction1980 ! Node: Routines available in GSL2599 ! Node: GSL is Free Software4240 ! Node: Obtaining GSL6418 ! Node: An Example Program7596 ! Node: No Warranty8336 ! Node: Further Information8777 ! Node: Using the library9288 ! Node: ANSI C Compliance9845 ! Node: Compiling and Linking10907 ! Node: Shared Libraries13443 ! Node: Autoconf macros14010 ! Node: Inline functions16301 ! Node: Long double17625 ! Node: Portability functions19018 ! Node: Alternative optimized functions20475 ! Node: Support for different numeric types21926 ! Node: Compatibility with C++24988 ! Node: Aliasing of arrays25303 ! Node: Thread-safety26047 ! Node: Code Reuse27118 ! Node: Error Handling27748 ! Node: Error Reporting28497 ! Node: Error Codes30388 ! Node: Error Handlers32140 ! Node: Using GSL error reporting in your own functions35790 ! Node: Error Reporting Examples37748 ! Node: Mathematical Functions38992 ! Node: Mathematical Constants39752 ! Node: Infinities and Not-a-number40875 ! Node: Elementary Functions41929 ! Node: Small integer powers44169 ! Node: Testing the Sign of Numbers45745 ! Node: Testing for Odd and Even Numbers46167 ! Node: Maximum and Minimum functions46713 ! Node: Approximate Comparison of Floating Point Numbers48779 ! Node: Complex Numbers49982 ! Node: Complex numbers51326 ! Node: Properties of complex numbers53117 ! Node: Complex arithmetic operators54092 ! Node: Elementary Complex Functions56815 ! Node: Complex Trigonometric Functions58619 ! Node: Inverse Complex Trigonometric Functions59826 ! Node: Complex Hyperbolic Functions62412 ! Node: Inverse Complex Hyperbolic Functions63694 ! Node: Complex Number References and Further Reading65518 ! Node: Polynomials66907 ! Node: Polynomial Evaluation67674 ! Node: Divided Difference Representation of Polynomials68125 ! Node: Quadratic Equations69783 ! Node: Cubic Equations71550 ! Node: General Polynomial Equations72895 ! Node: Roots of Polynomials Examples74766 ! Node: Roots of Polynomials References and Further Reading76181 ! Node: Special Functions76941 ! Node: Special Function Usage78886 ! Node: The gsl_sf_result struct80065 ! Node: Special Function Modes81324 ! Node: Airy Functions and Derivatives82256 ! Node: Airy Functions82947 ! Node: Derivatives of Airy Functions84287 ! Node: Zeros of Airy Functions85626 ! Node: Zeros of Derivatives of Airy Functions86329 ! Node: Bessel Functions87072 ! Node: Regular Cylindrical Bessel Functions88259 ! Node: Irregular Cylindrical Bessel Functions89565 ! Node: Regular Modified Cylindrical Bessel Functions91003 ! Node: Irregular Modified Cylindrical Bessel Functions93806 ! Node: Regular Spherical Bessel Functions96750 ! Node: Irregular Spherical Bessel Functions98941 ! Node: Regular Modified Spherical Bessel Functions100608 ! Node: Irregular Modified Spherical Bessel Functions102594 ! Node: Regular Bessel Function - Fractional Order104640 ! Node: Irregular Bessel Functions - Fractional Order105624 ! Node: Regular Modified Bessel Functions - Fractional Order106191 ! Node: Irregular Modified Bessel Functions - Fractional Order107098 ! Node: Zeros of Regular Bessel Functions108313 ! Node: Clausen Functions109323 ! Node: Coulomb Functions109920 ! Node: Normalized Hydrogenic Bound States110346 ! Node: Coulomb Wave Functions111352 ! Node: Coulomb Wave Function Normalization Constant114737 ! Node: Coupling Coefficients115479 ! Node: 3-j Symbols116197 ! Node: 6-j Symbols116787 ! Node: 9-j Symbols117397 ! Node: Dawson Function118089 ! Node: Debye Functions118648 ! Node: Dilogarithm119928 ! Node: Real Argument120216 ! Node: Complex Argument120769 ! Node: Elementary Operations121223 ! Node: Elliptic Integrals122038 ! Node: Definition of Legendre Forms122504 ! Node: Definition of Carlson Forms123342 ! Node: Legendre Form of Complete Elliptic Integrals124043 ! Node: Legendre Form of Incomplete Elliptic Integrals124909 ! Node: Carlson Forms126626 ! Node: Elliptic Functions (Jacobi)128151 ! Node: Error Functions128724 ! Node: Error Function129167 ! Node: Complementary Error Function129511 ! Node: Log Complementary Error Function129956 ! Node: Probability functions130392 ! Node: Exponential Functions131131 ! Node: Exponential Function131507 ! Node: Relative Exponential Functions132700 ! Node: Exponentiation With Error Estimate134349 ! Node: Exponential Integrals135540 ! Node: Exponential Integral136015 ! Node: Ei(x)136642 ! Node: Hyperbolic Integrals137074 ! Node: Ei_3(x)137711 ! Node: Trigonometric Integrals138076 ! Node: Arctangent Integral138657 ! Node: Fermi-Dirac Function139020 ! Node: Complete Fermi-Dirac Integrals139373 ! Node: Incomplete Fermi-Dirac Integrals141804 ! Node: Gamma Function142431 ! Node: Gegenbauer Functions150042 ! Node: Hypergeometric Functions151666 ! Node: Laguerre Functions155870 ! Node: Lambert W Functions157124 ! Node: Legendre Functions and Spherical Harmonics158141 ! Node: Legendre Polynomials158723 ! Node: Associated Legendre Polynomials and Spherical Harmonics160540 ! Node: Conical Functions162948 ! Node: Radial Functions for Hyperbolic Space165045 ! Node: Logarithm and Related Functions167203 ! Node: Power Function168808 ! Node: Psi (Digamma) Function169740 ! Node: Digamma Function170244 ! Node: Trigamma Function171053 ! Node: Polygamma Function171421 ! Node: Synchrotron Functions171789 ! Node: Transport Functions172541 ! Node: Trigonometric Functions173633 ! Node: Circular Trigonometric Functions174248 ! Node: Trigonometric Functions for Complex Arguments175235 ! Node: Hyperbolic Trigonometric Functions176252 ! Node: Conversion Functions176837 ! Node: Restriction Functions177604 ! Node: Trigonometric Functions With Error Estimates178215 ! Node: Zeta Functions178959 ! Node: Riemann Zeta Function179374 ! Node: Hurwitz Zeta Function180028 ! Node: Eta Function180510 ! Node: Special Functions Examples181054 ! Node: Special Functions References and Further Reading182735 ! Node: Vectors and Matrices183831 ! Node: Data types184589 ! Node: Blocks185787 ! Node: Block allocation186698 ! Node: Reading and writing blocks188090 ! Node: Example programs for blocks190141 ! Node: Vectors190772 ! Node: Vector allocation192637 ! Node: Accessing vector elements194161 ! Node: Initializing vector elements196272 ! Node: Reading and writing vectors196951 ! Node: Vector views199018 ! Node: Copying vectors206199 ! Node: Exchanging elements207048 ! Node: Vector operations207595 ! Node: Finding maximum and minimum elements of vectors209094 ! Node: Vector properties210601 ! Node: Example programs for vectors210949 ! Node: Matrices213120 ! Node: Matrix allocation215973 ! Node: Accessing matrix elements217546 ! Node: Initializing matrix elements219228 ! Node: Reading and writing matrices220009 ! Node: Matrix views222089 ! Node: Creating row and column views229210 ! Node: Copying matrices232359 ! Node: Copying rows and columns232957 ! Node: Exchanging rows and columns234621 ! Node: Matrix operations236079 ! Node: Finding maximum and minimum elements of matrices237695 ! Node: Matrix properties239382 ! Node: Example programs for matrices239733 ! Node: Vector and Matrix References and Further Reading243646 ! Node: Permutations244124 ! Node: The Permutation struct245411 ! Node: Permutation allocation245907 ! Node: Accessing permutation elements247328 ! Node: Permutation properties248084 ! Node: Permutation functions248772 ! Node: Applying Permutations250017 ! Node: Reading and writing permutations251929 ! Node: Permutations in Cyclic Form254101 ! Node: Permutation Examples257331 ! Node: Permutation References and Further Reading259769 ! Node: Combinations260433 ! Node: The Combination struct261259 ! Node: Combination allocation261802 ! Node: Accessing combination elements263305 ! Node: Combination properties263868 ! Node: Combination functions264743 ! Node: Reading and writing combinations265672 ! Node: Combination Examples267851 ! Node: Sorting269114 ! Node: Sorting objects270060 ! Node: Sorting vectors272962 ! Node: Selecting the k-th smallest or largest elements275527 ! Node: Computing the rank278973 ! Node: Sorting Examples280183 ! Node: Sorting References and Further Reading281800 ! Node: BLAS Support282336 ! Node: GSL BLAS Interface285304 ! Node: Level 1 GSL BLAS Interface285784 ! Node: Level 2 GSL BLAS Interface292294 ! Node: Level 3 GSL BLAS Interface301548 ! Node: BLAS Examples312621 ! Node: BLAS References and Further Reading314072 ! Node: Linear Algebra315416 ! Node: LU Decomposition316623 ! Node: QR Decomposition321543 ! Node: QR Decomposition with Column Pivoting327185 ! Node: Singular Value Decomposition331557 ! Node: Cholesky Decomposition334854 ! Node: Tridiagonal Decomposition of Real Symmetric Matrices336755 ! Node: Tridiagonal Decomposition of Hermitian Matrices338593 ! Node: Bidiagonalization340511 ! Node: Householder solver for linear systems342823 ! Node: Tridiagonal Systems343704 ! Node: Linear Algebra Examples344799 ! Node: Linear Algebra References and Further Reading346827 ! Node: Eigensystems348284 ! Node: Real Symmetric Matrices349323 ! Node: Complex Hermitian Matrices351539 ! Node: Sorting Eigenvalues and Eigenvectors354041 ! Node: Eigenvalue and Eigenvector Examples355360 ! Node: Eigenvalue and Eigenvector References357710 ! Node: Fast Fourier Transforms358408 ! Node: Mathematical Definitions359614 ! Node: Overview of complex data FFTs362012 ! Node: Radix-2 FFT routines for complex data364631 ! Node: Mixed-radix FFT routines for complex data368696 ! Node: Overview of real data FFTs377941 ! Node: Radix-2 FFT routines for real data380371 ! Node: Mixed-radix FFT routines for real data383200 ! Node: FFT References and Further Reading393851 ! Node: Numerical Integration396611 ! Node: Numerical Integration Introduction398153 ! Node: QNG non-adaptive Gauss-Kronrod integration401616 ! Node: QAG adaptive integration402876 ! Node: QAGS adaptive integration with singularities405506 ! Node: QAGP adaptive integration with known singular points407296 ! Node: QAGI adaptive integration on infinite intervals408596 ! Node: QAWC adaptive integration for Cauchy principal values410818 ! Node: QAWS adaptive integration for singular functions411981 ! Node: QAWO adaptive integration for oscillatory functions415210 ! Node: QAWF adaptive integration for Fourier integrals418964 ! Node: Numerical integration error codes421542 ! Node: Numerical integration examples422301 ! Node: Numerical integration References and Further Reading424327 ! Node: Random Number Generation425043 ! Node: General comments on random numbers426531 ! Node: The Random Number Generator Interface428474 ! Node: Random number generator initialization429825 ! Node: Sampling from a random number generator431822 ! Node: Auxiliary random number generator functions434297 ! Node: Random number environment variables436617 ! Node: Saving and restoring random number generator state439150 ! Node: Random number generator algorithms440319 ! Node: Unix random number generators449660 ! Node: Numerical Recipes generators453375 ! Node: Other random number generators454758 ! Node: Random Number Generator Performance464047 ! Node: Random Number Generator Examples465326 ! Node: Random Number References and Further Reading466902 ! Node: Random Number Acknowledgements468096 ! Node: Quasi-Random Sequences468570 ! Node: Quasi-random number generator initialization469594 ! Node: Sampling from a quasi-random number generator470492 ! Node: Auxiliary quasi-random number generator functions471086 ! Node: Saving and resorting quasi-random number generator state472018 ! Node: Quasi-random number generator algorithms472804 ! Node: Quasi-random number generator examples473570 ! Node: Quasi-random number references474560 ! Node: Random Number Distributions475073 ! Node: The Gaussian Distribution477401 ! Node: The Gaussian Tail Distribution478986 ! Node: The Bivariate Gaussian Distribution480601 ! Node: The Exponential Distribution481880 ! Node: The Laplace Distribution482583 ! Node: The Exponential Power Distribution483268 ! Node: The Cauchy Distribution484221 ! Node: The Rayleigh Distribution485054 ! Node: The Rayleigh Tail Distribution485780 ! Node: The Landau Distribution486636 ! Node: The Levy alpha-Stable Distributions487574 ! Node: The Levy skew alpha-Stable Distribution488617 ! Node: The Gamma Distribution490214 ! Node: The Flat (Uniform) Distribution490924 ! Node: The Lognormal Distribution491628 ! Node: The Chi-squared Distribution492427 ! Node: The F-distribution493403 ! Node: The t-distribution494534 ! Node: The Beta Distribution495514 ! Node: The Logistic Distribution496214 ! Node: The Pareto Distribution496915 ! Node: The Spherical Distribution (2D & 3D)497618 ! Node: The Weibull Distribution500430 ! Node: The Type-1 Gumbel Distribution501161 ! Node: The Type-2 Gumbel Distribution501928 ! Node: The Dirichlet Distribution502689 ! Node: General Discrete Distributions504302 ! Node: The Poisson Distribution508153 ! Node: The Bernoulli Distribution508868 ! Node: The Binomial Distribution509594 ! Node: The Multinomial Distribution510456 ! Node: The Negative Binomial Distribution512116 ! Node: The Pascal Distribution513119 ! Node: The Geometric Distribution513942 ! Node: The Hypergeometric Distribution514746 ! Node: The Logarithmic Distribution515711 ! Node: Shuffling and Sampling516487 ! Node: Random Number Distribution Examples519326 ! Node: Random Number Distribution References and Further Reading521725 ! Node: Statistics522928 ! Node: Mean and standard deviation and variance524205 ! Node: Absolute deviation527248 ! Node: Higher moments (skewness and kurtosis)528532 ! Node: Autocorrelation530659 ! Node: Covariance531462 ! Node: Weighted Samples532281 ! Node: Maximum and Minimum values537540 ! Node: Median and Percentiles539976 ! Node: Example statistical programs542386 ! Node: Statistics References and Further Reading545120 ! Node: Histograms546304 ! Node: The histogram struct548058 ! Node: Histogram allocation549858 ! Node: Copying Histograms552839 ! Node: Updating and accessing histogram elements553503 ! Node: Searching histogram ranges556752 ! Node: Histogram Statistics557743 ! Node: Histogram Operations559586 ! Node: Reading and writing histograms561629 ! Node: Resampling from histograms564650 ! Node: The histogram probability distribution struct565441 ! Node: Example programs for histograms568458 ! Node: Two dimensional histograms570579 ! Node: The 2D histogram struct571291 ! Node: 2D Histogram allocation573081 ! Node: Copying 2D Histograms575139 ! Node: Updating and accessing 2D histogram elements575830 ! Node: Searching 2D histogram ranges579456 ! Node: 2D Histogram Statistics580465 ! Node: 2D Histogram Operations583246 ! Node: Reading and writing 2D histograms585396 ! Node: Resampling from 2D histograms589040 ! Node: Example programs for 2D histograms592045 ! Node: N-tuples594099 ! Node: The ntuple struct595359 ! Node: Creating ntuples595830 ! Node: Opening an existing ntuple file596487 ! Node: Writing ntuples597105 ! Node: Reading ntuples597553 ! Node: Closing an ntuple file597872 ! Node: Histogramming ntuple values598201 ! Node: Example ntuple programs600197 ! Node: Ntuple References and Further Reading603749 ! Node: Monte Carlo Integration604060 ! Node: Monte Carlo Interface605304 ! Node: PLAIN Monte Carlo607931 ! Node: MISER610358 ! Node: VEGAS616181 ! Node: Monte Carlo Examples624478 ! Node: Monte Carlo Integration References and Further Reading630506 ! Node: Simulated Annealing631258 ! Node: Simulated Annealing algorithm632407 ! Node: Simulated Annealing functions633580 ! Node: Examples with Simulated Annealing638076 ! Node: Trivial example638614 ! Node: Traveling Salesman Problem641301 ! Node: Ordinary Differential Equations644719 ! Node: Defining the ODE System645537 ! Node: Stepping Functions647347 ! Node: Adaptive Step-size Control650902 ! Node: Evolution656243 ! Node: ODE Example programs658298 ! Node: ODE References and Further Reading663296 ! Node: Interpolation663925 ! Node: Introduction to Interpolation664935 ! Node: Interpolation Functions665369 ! Node: Interpolation Types666535 ! Node: Index Look-up and Acceleration668342 ! Node: Evaluation of Interpolating Functions669955 ! Node: Higher-level Interface672307 ! Node: Interpolation Example programs674155 ! Node: Interpolation References and Further Reading675885 ! Node: Numerical Differentiation676315 ! Node: Numerical Differentiation functions676895 ! Node: Numerical Differentiation Example678502 ! Node: Numerical Differentiation References679914 ! Node: Chebyshev Approximations680312 ! Node: The gsl_cheb_series struct681268 ! Node: Creation and Calculation of Chebyshev Series681913 ! Node: Chebyshev Series Evaluation682877 ! Node: Derivatives and Integrals684237 ! Node: Chebyshev Approximation examples685470 ! Node: Chebyshev Approximation References and Further Reading687004 ! Node: Series Acceleration687443 ! Node: Acceleration functions688213 ! Node: Acceleration functions without error estimation690445 ! Node: Example of accelerating a series693051 ! Node: Series Acceleration References695492 ! Node: Discrete Hankel Transforms696371 ! Node: Discrete Hankel Transform Definition696837 ! Node: Discrete Hankel Transform Functions698675 ! Node: Discrete Hankel Transform References700179 ! Node: One dimensional Root-Finding700573 ! Node: Root Finding Overview701830 ! Node: Root Finding Caveats703681 ! Node: Initializing the Solver705439 ! Node: Providing the function to solve708052 ! Node: Search Bounds and Guesses711856 ! Node: Root Finding Iteration712710 ! Node: Search Stopping Parameters714546 ! Node: Root Bracketing Algorithms717050 ! Node: Root Finding Algorithms using Derivatives720339 ! Node: Root Finding Examples723810 ! Node: Root Finding References and Further Reading731158 ! Node: One dimensional Minimization731785 ! Node: Minimization Overview733084 ! Node: Minimization Caveats734774 ! Node: Initializing the Minimizer736104 ! Node: Providing the function to minimize738329 ! Node: Minimization Iteration738800 ! Node: Minimization Stopping Parameters740915 ! Node: Minimization Algorithms742516 ! Node: Minimization Examples744948 ! Node: Minimization References and Further Reading747917 ! Node: Multidimensional Root-Finding748363 ! Node: Overview of Multidimensional Root Finding749849 ! Node: Initializing the Multidimensional Solver752029 ! Node: Providing the multidimensional system of equations to solve755190 ! Node: Iteration of the multidimensional solver760066 ! Node: Search Stopping Parameters for the multidimensional solver762236 ! Node: Algorithms using Derivatives763964 ! Node: Algorithms without Derivatives768699 ! Node: Example programs for Multidimensional Root finding771481 ! Node: References and Further Reading for Multidimensional Root Finding780205 ! Node: Multidimensional Minimization781434 ! Node: Multimin Overview782723 ! Node: Multimin Caveats784711 ! Node: Initializing the Multidimensional Minimizer785453 ! Node: Providing a function to minimize788353 ! Node: Multimin Iteration792052 ! Node: Multimin Stopping Criteria794024 ! Node: Multimin Algorithms795567 ! Node: Multimin Examples799644 ! Node: Multimin References and Further Reading806834 ! Node: Least-Squares Fitting807444 ! Node: Linear regression808375 ! Node: Linear fitting without a constant term810968 ! Node: Multi-parameter fitting813360 ! Node: Fitting Examples817112 ! Node: Fitting References and Further Reading823883 ! Node: Nonlinear Least-Squares Fitting824692 ! Node: Overview of Nonlinear Least-Squares Fitting826143 ! Node: Initializing the Nonlinear Least-Squares Solver827026 ! Node: Providing the Function to be Minimized829683 ! Node: Iteration of the Minimization Algorithm832322 ! Node: Search Stopping Parameters for Minimization Algorithms833649 ! Node: Minimization Algorithms using Derivatives835734 ! Node: Minimization Algorithms without Derivatives838970 ! Node: Computing the covariance matrix of best fit parameters839355 ! Node: Example programs for Nonlinear Least-Squares Fitting840413 ! Node: References and Further Reading for Nonlinear Least-Squares Fitting847352 ! Node: Physical Constants848075 ! Node: Fundamental Constants849452 ! Node: Astronomy and Astrophysics850462 ! Node: Atomic and Nuclear Physics851111 ! Node: Measurement of Time852570 ! Node: Imperial Units852986 ! Node: Nautical Units853403 ! Node: Printers Units853718 ! Node: Volume854003 ! Node: Mass and Weight854514 ! Node: Thermal Energy and Power855296 ! Node: Pressure855703 ! Node: Viscosity856297 ! Node: Light and Illumination856559 ! Node: Radioactivity857132 ! Node: Force and Energy857452 ! Node: Prefixes857840 ! Node: Physical Constant Examples858574 ! Node: Physical Constant References and Further Reading860359 ! Node: IEEE floating-point arithmetic860715 ! Node: Representation of floating point numbers861298 ! Node: Setting up your IEEE environment865801 ! Node: IEEE References and Further Reading871888 ! Node: Debugging Numerical Programs872886 ! Node: Using gdb873348 ! Node: Examining floating point registers876704 ! Node: Handling floating point exceptions877992 ! Node: GCC warning options for numerical programs879401 ! Node: Debugging References883588 ! Node: Contributors to GSL884130 ! Node: Autoconf Macros885912 ! Node: GSL CBLAS Library886711 ! Node: Level 1 CBLAS Functions887195 ! Node: Level 2 CBLAS Functions892341 ! Node: Level 3 CBLAS Functions908703 ! Node: GSL CBLAS Examples918222 ! Node: Reporting Bugs919818 ! Node: GNU General Public License920625 ! Node: GNU Free Documentation License939900 ! Node: Function Index959816 ! Node: Variable Index1072308 ! Node: Type Index1073118 ! Node: Concept Index1075047  End Tag Table --- 10,539 ---- Indirect: gsl-ref.info-1: 228 ! gsl-ref.info-2: 292512 ! gsl-ref.info-3: 589353 ! gsl-ref.info-4: 887502  Tag Table: (Indirect) Node: Top228 ! Node: Introduction1930 ! Node: Routines available in GSL2565 ! Node: GSL is Free Software4203 ! Node: Obtaining GSL6437 ! Node: No Warranty7567 ! Node: Reporting Bugs8000 ! Node: Further Information8795 ! Node: Using the library9306 ! Node: An Example Program9840 ! Node: ANSI C Compliance10548 ! Node: Compiling and Linking11607 ! Node: Shared Libraries14164 ! Node: Inline functions15117 ! Node: Long double16115 ! Node: Portability functions17505 ! Node: Alternative optimized functions18899 ! Node: Support for different numeric types20347 ! Node: Compatibility with C++23405 ! Node: Aliasing of arrays23717 ! Node: Thread-safety24458 ! Node: Code Reuse25525 ! Node: Error Handling26152 ! Node: Error Reporting26898 ! Node: Error Codes28787 ! Node: Error Handlers30537 ! Node: Using GSL error reporting in your own functions34183 ! Node: Error Reporting Examples36131 ! Node: Mathematical Functions37349 ! Node: Mathematical Constants38106 ! Node: Infinities and Not-a-number39227 ! Node: Elementary Functions40281 ! Node: Small integer powers42518 ! Node: Testing the Sign of Numbers44062 ! Node: Testing for Odd and Even Numbers44484 ! Node: Maximum and Minimum functions45030 ! Node: Approximate Comparison of Floating Point Numbers47096 ! Node: Complex Numbers48295 ! Node: Complex numbers49636 ! Node: Properties of complex numbers51424 ! Node: Complex arithmetic operators52399 ! Node: Elementary Complex Functions55122 ! Node: Complex Trigonometric Functions56926 ! Node: Inverse Complex Trigonometric Functions58133 ! Node: Complex Hyperbolic Functions60719 ! Node: Inverse Complex Hyperbolic Functions62001 ! Node: Complex Number References and Further Reading63825 ! Node: Polynomials65214 ! Node: Polynomial Evaluation65977 ! Node: Divided Difference Representation of Polynomials66428 ! Node: Quadratic Equations68083 ! Node: Cubic Equations69850 ! Node: General Polynomial Equations71195 ! Node: Roots of Polynomials Examples73063 ! Node: Roots of Polynomials References and Further Reading74484 ! Node: Special Functions75245 ! Node: Special Function Usage77187 ! Node: The gsl_sf_result struct78363 ! Node: Special Function Modes79619 ! Node: Airy Functions and Derivatives80547 ! Node: Airy Functions81235 ! Node: Derivatives of Airy Functions82575 ! Node: Zeros of Airy Functions83914 ! Node: Zeros of Derivatives of Airy Functions84617 ! Node: Bessel Functions85360 ! Node: Regular Cylindrical Bessel Functions86544 ! Node: Irregular Cylindrical Bessel Functions87850 ! Node: Regular Modified Cylindrical Bessel Functions89288 ! Node: Irregular Modified Cylindrical Bessel Functions92091 ! Node: Regular Spherical Bessel Functions95035 ! Node: Irregular Spherical Bessel Functions97226 ! Node: Regular Modified Spherical Bessel Functions98893 ! Node: Irregular Modified Spherical Bessel Functions100876 ! Node: Regular Bessel Function - Fractional Order102919 ! Node: Irregular Bessel Functions - Fractional Order103903 ! Node: Regular Modified Bessel Functions - Fractional Order104470 ! Node: Irregular Modified Bessel Functions - Fractional Order105377 ! Node: Zeros of Regular Bessel Functions106592 ! Node: Clausen Functions107675 ! Node: Coulomb Functions108269 ! Node: Normalized Hydrogenic Bound States108692 ! Node: Coulomb Wave Functions109698 ! Node: Coulomb Wave Function Normalization Constant113080 ! Node: Coupling Coefficients113819 ! Node: 3-j Symbols114534 ! Node: 6-j Symbols115124 ! Node: 9-j Symbols115734 ! Node: Dawson Function116426 ! Node: Debye Functions116983 ! Node: Dilogarithm118260 ! Node: Real Argument118545 ! Node: Complex Argument119098 ! Node: Elementary Operations119552 ! Node: Elliptic Integrals120364 ! Node: Definition of Legendre Forms120827 ! Node: Definition of Carlson Forms121662 ! Node: Legendre Form of Complete Elliptic Integrals122360 ! Node: Legendre Form of Incomplete Elliptic Integrals123226 ! Node: Carlson Forms124943 ! Node: Elliptic Functions (Jacobi)126468 ! Node: Error Functions127038 ! Node: Error Function127479 ! Node: Complementary Error Function127823 ! Node: Log Complementary Error Function128268 ! Node: Probability functions128704 ! Node: Exponential Functions129910 ! Node: Exponential Function130283 ! Node: Relative Exponential Functions131476 ! Node: Exponentiation With Error Estimate133125 ! Node: Exponential Integrals134316 ! Node: Exponential Integral134788 ! Node: Ei(x)135415 ! Node: Hyperbolic Integrals135847 ! Node: Ei_3(x)136484 ! Node: Trigonometric Integrals136849 ! Node: Arctangent Integral137430 ! Node: Fermi-Dirac Function137793 ! Node: Complete Fermi-Dirac Integrals138143 ! Node: Incomplete Fermi-Dirac Integrals140574 ! Node: Gamma Function141201 ! Node: Gegenbauer Functions149179 ! Node: Hypergeometric Functions150800 ! Node: Laguerre Functions155001 ! Node: Lambert W Functions156252 ! Node: Legendre Functions and Spherical Harmonics157266 ! Node: Legendre Polynomials157845 ! Node: Associated Legendre Polynomials and Spherical Harmonics159662 ! Node: Conical Functions162066 ! Node: Radial Functions for Hyperbolic Space164160 ! Node: Logarithm and Related Functions166315 ! Node: Power Function167917 ! Node: Psi (Digamma) Function168846 ! Node: Digamma Function169347 ! Node: Trigamma Function170156 ! Node: Polygamma Function170524 ! Node: Synchrotron Functions170892 ! Node: Transport Functions171641 ! Node: Trigonometric Functions172730 ! Node: Circular Trigonometric Functions173343 ! Node: Trigonometric Functions for Complex Arguments174330 ! Node: Hyperbolic Trigonometric Functions175347 ! Node: Conversion Functions175932 ! Node: Restriction Functions176699 ! Node: Trigonometric Functions With Error Estimates177310 ! Node: Zeta Functions178054 ! Node: Riemann Zeta Function178466 ! Node: Hurwitz Zeta Function179117 ! Node: Eta Function179596 ! Node: Special Functions Examples180137 ! Node: Special Functions References and Further Reading181862 ! Node: Vectors and Matrices182958 ! Node: Data types183713 ! Node: Blocks184908 ! Node: Block allocation185816 ! Node: Reading and writing blocks187205 ! Node: Example programs for blocks189253 ! Node: Vectors189885 ! Node: Vector allocation191747 ! Node: Accessing vector elements193268 ! Node: Initializing vector elements195382 ! Node: Reading and writing vectors196061 ! Node: Vector views198125 ! Node: Copying vectors205303 ! Node: Exchanging elements206149 ! Node: Vector operations206693 ! Node: Finding maximum and minimum elements of vectors208189 ! Node: Vector properties209696 ! Node: Example programs for vectors210044 ! Node: Matrices212228 ! Node: Matrix allocation215078 ! Node: Accessing matrix elements216648 ! Node: Initializing matrix elements218337 ! Node: Reading and writing matrices219118 ! Node: Matrix views221195 ! Node: Creating row and column views228313 ! Node: Copying matrices231459 ! Node: Copying rows and columns232041 ! Node: Exchanging rows and columns233702 ! Node: Matrix operations235163 ! Node: Finding maximum and minimum elements of matrices236783 ! Node: Matrix properties238637 ! Node: Example programs for matrices238988 ! Node: Vector and Matrix References and Further Reading242939 ! Node: Permutations243417 ! Node: The Permutation struct244701 ! Node: Permutation allocation245195 ! Node: Accessing permutation elements246616 ! Node: Permutation properties247369 ! Node: Permutation functions248057 ! Node: Applying Permutations249302 ! Node: Reading and writing permutations251214 ! Node: Permutations in Cyclic Form253383 ! Node: Permutation Examples256610 ! Node: Permutation References and Further Reading259061 ! Node: Combinations259725 ! Node: The Combination struct260595 ! Node: Combination allocation261135 ! Node: Accessing combination elements262905 ! Node: Combination properties263465 ! Node: Combination functions264340 ! Node: Reading and writing combinations265268 ! Node: Combination Examples267444 ! Node: Combination References and Further Reading268764 ! Node: Sorting269332 ! Node: Sorting objects270272 ! Node: Sorting vectors273171 ! Node: Selecting the k smallest or largest elements275730 ! Node: Computing the rank279029 ! Node: Sorting Examples280235 ! Node: Sorting References and Further Reading281856 ! Node: BLAS Support282392 ! Node: GSL BLAS Interface285360 ! Node: Level 1 GSL BLAS Interface285837 ! Node: Level 2 GSL BLAS Interface292512 ! Node: Level 3 GSL BLAS Interface301766 ! Node: BLAS Examples312843 ! Node: BLAS References and Further Reading314296 ! Node: Linear Algebra315640 ! Node: LU Decomposition316876 ! Node: QR Decomposition321857 ! Node: QR Decomposition with Column Pivoting327496 ! Node: Singular Value Decomposition331861 ! Node: Cholesky Decomposition335155 ! Node: Tridiagonal Decomposition of Real Symmetric Matrices337053 ! Node: Tridiagonal Decomposition of Hermitian Matrices338888 ! Node: Bidiagonalization340803 ! Node: Householder Transformations343205 ! Node: Householder solver for linear systems345039 ! Node: Tridiagonal Systems345930 ! Node: Linear Algebra Examples347025 ! Node: Linear Algebra References and Further Reading349056 ! Node: Eigensystems350534 ! Node: Real Symmetric Matrices351570 ! Node: Complex Hermitian Matrices353786 ! Node: Sorting Eigenvalues and Eigenvectors356288 ! Node: Eigenvalue and Eigenvector Examples357607 ! Node: Eigenvalue and Eigenvector References359972 ! Node: Fast Fourier Transforms360670 ! Node: Mathematical Definitions361873 ! Node: Overview of complex data FFTs364268 ! Node: Radix-2 FFT routines for complex data366905 ! Node: Mixed-radix FFT routines for complex data371144 ! Node: Overview of real data FFTs380523 ! Node: Radix-2 FFT routines for real data382950 ! Node: Mixed-radix FFT routines for real data385776 ! Node: FFT References and Further Reading396425 ! Node: Numerical Integration399282 ! Node: Numerical Integration Introduction400821 ! Node: QNG non-adaptive Gauss-Kronrod integration404275 ! Node: QAG adaptive integration405534 ! Node: QAGS adaptive integration with singularities408161 ! Node: QAGP adaptive integration with known singular points409948 ! Node: QAGI adaptive integration on infinite intervals411248 ! Node: QAWC adaptive integration for Cauchy principal values413470 ! Node: QAWS adaptive integration for singular functions414633 ! Node: QAWO adaptive integration for oscillatory functions417858 ! Node: QAWF adaptive integration for Fourier integrals421608 ! Node: Numerical integration error codes424186 ! Node: Numerical integration examples424942 ! Node: Numerical integration References and Further Reading426975 ! Node: Random Number Generation427691 ! Node: General comments on random numbers429187 ! Node: The Random Number Generator Interface431127 ! Node: Random number generator initialization432475 ! Node: Sampling from a random number generator434472 ! Node: Auxiliary random number generator functions436944 ! Node: Random number environment variables439266 ! Node: Copying random number generator state441791 ! Node: Reading and writing random number generator state442743 ! Node: Random number generator algorithms444143 ! Node: Unix random number generators453528 ! Node: Other random number generators457242 ! Node: Random Number Generator Performance466527 ! Node: Random Number Generator Examples467838 ! Node: Random Number References and Further Reading469415 ! Node: Random Number Acknowledgements470912 ! Node: Quasi-Random Sequences471386 ! Node: Quasi-random number generator initialization472406 ! Node: Sampling from a quasi-random number generator473304 ! Node: Auxiliary quasi-random number generator functions473898 ! Node: Saving and resorting quasi-random number generator state474831 ! Node: Quasi-random number generator algorithms475617 ! Node: Quasi-random number generator examples476380 ! Node: Quasi-random number references477370 ! Node: Random Number Distributions477880 ! Node: Random Number Distribution Introduction480731 ! Node: The Gaussian Distribution481778 ! Node: The Gaussian Tail Distribution484188 ! Node: The Bivariate Gaussian Distribution485803 ! Node: The Exponential Distribution487102 ! Node: The Laplace Distribution488223 ! Node: The Exponential Power Distribution489302 ! Node: The Cauchy Distribution490254 ! Node: The Rayleigh Distribution491486 ! Node: The Rayleigh Tail Distribution492640 ! Node: The Landau Distribution493496 ! Node: The Levy alpha-Stable Distributions494434 ! Node: The Levy skew alpha-Stable Distribution495477 ! Node: The Gamma Distribution497074 ! Node: The Flat (Uniform) Distribution498219 ! Node: The Lognormal Distribution499341 ! Node: The Chi-squared Distribution500669 ! Node: The F-distribution502051 ! Node: The t-distribution503473 ! Node: The Beta Distribution504847 ! Node: The Logistic Distribution505817 ! Node: The Pareto Distribution506926 ! Node: The Spherical Distribution (2D & 3D)508072 ! Node: The Weibull Distribution510862 ! Node: The Type-1 Gumbel Distribution512042 ! Node: The Type-2 Gumbel Distribution513259 ! Node: The Dirichlet Distribution514470 ! Node: General Discrete Distributions516121 ! Node: The Poisson Distribution519969 ! Node: The Bernoulli Distribution520684 ! Node: The Binomial Distribution521410 ! Node: The Multinomial Distribution522272 ! Node: The Negative Binomial Distribution523908 ! Node: The Pascal Distribution524911 ! Node: The Geometric Distribution525734 ! Node: The Hypergeometric Distribution526538 ! Node: The Logarithmic Distribution527503 ! Node: Shuffling and Sampling528279 ! Node: Random Number Distribution Examples531115 ! Node: Random Number Distribution References and Further Reading534339 ! Node: Statistics536393 ! Node: Mean and standard deviation and variance537667 ! Node: Absolute deviation540710 ! Node: Higher moments (skewness and kurtosis)541994 ! Node: Autocorrelation544121 ! Node: Covariance544924 ! Node: Weighted Samples545862 ! Node: Maximum and Minimum values551118 ! Node: Median and Percentiles553554 ! Node: Example statistical programs555961 ! Node: Statistics References and Further Reading558671 ! Node: Histograms559855 ! Node: The histogram struct561609 ! Node: Histogram allocation563406 ! Node: Copying Histograms566384 ! Node: Updating and accessing histogram elements567048 ! Node: Searching histogram ranges570297 ! Node: Histogram Statistics571285 ! Node: Histogram Operations573128 ! Node: Reading and writing histograms575171 ! Node: Resampling from histograms578189 ! Node: The histogram probability distribution struct578977 ! Node: Example programs for histograms581991 ! Node: Two dimensional histograms584111 ! Node: The 2D histogram struct584820 ! Node: 2D Histogram allocation586607 ! Node: Copying 2D Histograms588662 ! Node: Updating and accessing 2D histogram elements589353 ! Node: Searching 2D histogram ranges592983 ! Node: 2D Histogram Statistics593989 ! Node: 2D Histogram Operations596770 ! Node: Reading and writing 2D histograms598920 ! Node: Resampling from 2D histograms602561 ! Node: Example programs for 2D histograms605563 ! Node: N-tuples607615 ! Node: The ntuple struct608865 ! Node: Creating ntuples609333 ! Node: Opening an existing ntuple file609990 ! Node: Writing ntuples610608 ! Node: Reading ntuples611057 ! Node: Closing an ntuple file611377 ! Node: Histogramming ntuple values611706 ! Node: Example ntuple programs613699 ! Node: Ntuple References and Further Reading617140 ! Node: Monte Carlo Integration617451 ! Node: Monte Carlo Interface618692 ! Node: PLAIN Monte Carlo621335 ! Node: MISER623759 ! Node: VEGAS629579 ! Node: Monte Carlo Examples637872 ! Node: Monte Carlo Integration References and Further Reading643899 ! Node: Simulated Annealing644651 ! Node: Simulated Annealing algorithm645797 ! Node: Simulated Annealing functions646967 ! Node: Examples with Simulated Annealing651462 ! Node: Trivial example651947 ! Node: Traveling Salesman Problem654716 ! Node: Ordinary Differential Equations658131 ! Node: Defining the ODE System658946 ! Node: Stepping Functions660807 ! Node: Adaptive Step-size Control664361 ! Node: Evolution669701 ! Node: ODE Example programs671750 ! Node: ODE References and Further Reading676793 ! Node: Interpolation677422 ! Node: Introduction to Interpolation678429 ! Node: Interpolation Functions678860 ! Node: Interpolation Types680023 ! Node: Index Look-up and Acceleration681989 ! Node: Evaluation of Interpolating Functions683605 ! Node: Higher-level Interface685971 ! Node: Interpolation Example programs687831 ! Node: Interpolation References and Further Reading689536 ! Node: Numerical Differentiation689966 ! Node: Numerical Differentiation functions690547 ! Node: Numerical Differentiation Examples692155 ! Node: Numerical Differentiation References693577 ! Node: Chebyshev Approximations693976 ! Node: The gsl_cheb_series struct694991 ! Node: Creation and Calculation of Chebyshev Series695795 ! Node: Chebyshev Series Evaluation696759 ! Node: Derivatives and Integrals698119 ! Node: Chebyshev Approximation examples699349 ! Node: Chebyshev Approximation References and Further Reading700882 ! Node: Series Acceleration701321 ! Node: Acceleration functions702088 ! Node: Acceleration functions without error estimation704317 ! Node: Example of accelerating a series706923 ! Node: Series Acceleration References709335 ! Node: Discrete Hankel Transforms710214 ! Node: Discrete Hankel Transform Definition710677 ! Node: Discrete Hankel Transform Functions712513 ! Node: Discrete Hankel Transform References714017 ! Node: One dimensional Root-Finding714411 ! Node: Root Finding Overview715665 ! Node: Root Finding Caveats717513 ! Node: Initializing the Solver719267 ! Node: Providing the function to solve721882 ! Node: Search Bounds and Guesses725683 ! Node: Root Finding Iteration726534 ! Node: Search Stopping Parameters728367 ! Node: Root Bracketing Algorithms730868 ! Node: Root Finding Algorithms using Derivatives734154 ! Node: Root Finding Examples737645 ! Node: Root Finding References and Further Reading744999 ! Node: One dimensional Minimization745626 ! Node: Minimization Overview746922 ! Node: Minimization Caveats748608 ! Node: Initializing the Minimizer749935 ! Node: Providing the function to minimize752162 ! Node: Minimization Iteration752630 ! Node: Minimization Stopping Parameters754742 ! Node: Minimization Algorithms756340 ! Node: Minimization Examples758769 ! Node: Minimization References and Further Reading761765 ! Node: Multidimensional Root-Finding762211 ! Node: Overview of Multidimensional Root Finding763694 ! Node: Initializing the Multidimensional Solver765871 ! Node: Providing the multidimensional system of equations to solve769041 ! Node: Iteration of the multidimensional solver773985 ! Node: Search Stopping Parameters for the multidimensional solver776152 ! Node: Algorithms using Derivatives777877 ! Node: Algorithms without Derivatives782610 ! Node: Example programs for Multidimensional Root finding785389 ! Node: References and Further Reading for Multidimensional Root Finding794176 ! Node: Multidimensional Minimization795405 ! Node: Multimin Overview796691 ! Node: Multimin Caveats798679 ! Node: Initializing the Multidimensional Minimizer799418 ! Node: Providing a function to minimize802317 ! Node: Multimin Iteration806015 ! Node: Multimin Stopping Criteria807984 ! Node: Multimin Algorithms809524 ! Node: Multimin Examples813773 ! Node: Multimin References and Further Reading820530 ! Node: Least-Squares Fitting821140 ! Node: Linear regression822071 ! Node: Linear fitting without a constant term824661 ! Node: Multi-parameter fitting827050 ! Node: Fitting Examples830799 ! Node: Fitting References and Further Reading837629 ! Node: Nonlinear Least-Squares Fitting838438 ! Node: Overview of Nonlinear Least-Squares Fitting839886 ! Node: Initializing the Nonlinear Least-Squares Solver840766 ! Node: Providing the Function to be Minimized843425 ! Node: Iteration of the Minimization Algorithm846061 ! Node: Search Stopping Parameters for Minimization Algorithms847385 ! Node: Minimization Algorithms using Derivatives849467 ! Node: Minimization Algorithms without Derivatives852700 ! Node: Computing the covariance matrix of best fit parameters853082 ! Node: Example programs for Nonlinear Least-Squares Fitting854140 ! Node: References and Further Reading for Nonlinear Least-Squares Fitting861534 ! Node: Physical Constants862257 ! Node: Fundamental Constants863653 ! Node: Astronomy and Astrophysics864675 ! Node: Atomic and Nuclear Physics865330 ! Node: Measurement of Time866804 ! Node: Imperial Units867224 ! Node: Nautical Units867646 ! Node: Printers Units867964 ! Node: Volume868251 ! Node: Mass and Weight868769 ! Node: Thermal Energy and Power869562 ! Node: Pressure869973 ! Node: Viscosity870574 ! Node: Light and Illumination870838 ! Node: Radioactivity871418 ! Node: Force and Energy871741 ! Node: Prefixes872133 ! Node: Physical Constant Examples872864 ! Node: Physical Constant References and Further Reading874656 ! Node: IEEE floating-point arithmetic875012 ! Node: Representation of floating point numbers875592 ! Node: Setting up your IEEE environment880105 ! Node: IEEE References and Further Reading886042 ! Node: Debugging Numerical Programs887040 ! Node: Using gdb887502 ! Node: Examining floating point registers890856 ! Node: Handling floating point exceptions892133 ! Node: GCC warning options for numerical programs893539 ! Node: Debugging References897724 ! Node: Contributors to GSL898266 ! Node: Autoconf Macros900274 ! Node: GSL CBLAS Library904324 ! Node: Level 1 CBLAS Functions904829 ! Node: Level 2 CBLAS Functions909975 ! Node: Level 3 CBLAS Functions926337 ! Node: GSL CBLAS Examples935856 ! Node: Free Software Needs Free Documentation937457 ! Node: GNU General Public License942524 ! Node: GNU Free Documentation License961817 ! Node: Function Index981730 ! Node: Variable Index1099332 ! Node: Type Index1100142 ! Node: Concept Index1102071  End Tag Table diff -x.info* -rc2P gsl-1.3/doc/gsl-ref.info-1 gsl-1.4/doc/gsl-ref.info-1 *** gsl-1.3/doc/gsl-ref.info-1 Wed Dec 18 22:41:19 2002 --- gsl-1.4/doc/gsl-ref.info-1 Thu Aug 14 12:36:46 2003 *************** *** 1,3 **** ! This is gsl-ref.info, produced by makeinfo version 4.2 from gsl-ref.texi. --- 1,3 ---- ! This is gsl-ref.info, produced by makeinfo version 4.6 from gsl-ref.texi. *************** *** 13,25 **** *** ! This file documents the GNU Scientific Library (GSL), a collection ! of numerical routines for scientific computing. It corresponds to ! release 1.3 of the library. More information about GSL can be found at the project homepage, . - This manual is also available as a printed book (ISBN 095416170X). - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. --- 13,23 ---- *** ! This file documents the GNU Scientific Library (GSL), a collection of ! numerical routines for scientific computing. It corresponds to release ! 1.4 of the library. More information about GSL can be found at the project homepage, . Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. *************** *** 69,73 **** * Autoconf Macros:: * GSL CBLAS Library:: ! * Reporting Bugs:: * GNU General Public License:: * GNU Free Documentation License:: --- 67,71 ---- * Autoconf Macros:: * GSL CBLAS Library:: ! * Free Software Needs Free Documentation:: * GNU General Public License:: * GNU Free Documentation License:: *************** *** 83,87 **** ************ ! The GNU Scientific Library (GSL) is a collection of routines for numerical computing. The routines have been written from scratch in C, and present a modern Applications Programming Interface (API) for C --- 81,85 ---- ************ ! The GNU Scientific Library (GSL) is a collection of routines for numerical computing. The routines have been written from scratch in C, and present a modern Applications Programming Interface (API) for C *************** *** 97,100 **** --- 95,99 ---- * An Example Program:: * No Warranty:: + * Reporting Bugs:: * Further Information:: *************** *** 105,109 **** ========================= ! The library covers a wide range of topics in numerical computing. Routines are available for the following areas, --- 104,108 ---- ========================= ! The library covers a wide range of topics in numerical computing. Routines are available for the following areas, *************** *** 112,116 **** Permutations Combinations Sorting BLAS Support ! Linear Algebra BLAS Support Fast Fourier Transforms Eigensystems Random Numbers Quadrature --- 111,115 ---- Permutations Combinations Sorting BLAS Support ! Linear Algebra CBLAS Library Fast Fourier Transforms Eigensystems Random Numbers Quadrature *************** *** 136,142 **** ==================== ! The subroutines in the GNU Scientific Library are "free software"; ! this means that everyone is free to use them, and to redistribute them ! in other free programs. The library is not in the public domain; it is copyrighted and there are conditions on its distribution. These conditions are designed to permit everything that a good cooperating --- 135,141 ---- ==================== ! The subroutines in the GNU Scientific Library are "free software"; this ! means that everyone is free to use them, and to redistribute them in ! other free programs. The library is not in the public domain; it is copyrighted and there are conditions on its distribution. These conditions are designed to permit everything that a good cooperating *************** *** 145,161 **** get from you. ! Specifically, we want to make sure that you have the right to give ! away copies of any programs related to the GNU Scientific Library, that ! you receive their source code or else can get it if you want it, that ! you can change these programs or use pieces of them in new free ! programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute ! copies of any related code which uses the GNU Scientific Library, you ! must give the recipients all the rights that you have. You must make ! sure that they, too, receive or can get the source code. And you must ! tell them their rights. This means that the library should not be ! redistributed in proprietary programs. Also, for our own protection, we must make certain that everyone --- 144,161 ---- get from you. ! Specifically, we want to make sure that you have the right to share ! copies of programs that you are given which use the GNU Scientific ! Library, that you receive their source code or else can get it if you ! want it, that you can change these programs or use pieces of them in new ! free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute ! copies of any code which uses the GNU Scientific Library, you must give ! the recipients all the rights that you have received. You must make ! sure that they, too, receive or can get the source code, both to the ! library and the code which uses it. And you must tell them their ! rights. This means that the library should not be redistributed in ! proprietary programs. Also, for our own protection, we must make certain that everyone *************** *** 180,184 **** ============= ! The source code for the library can be obtained in different ways, by copying it from a friend, purchasing it on CDROM or downloading it from the internet. A list of public ftp servers which carry the source code --- 180,184 ---- ============= ! The source code for the library can be obtained in different ways, by copying it from a friend, purchasing it on CDROM or downloading it from the internet. A list of public ftp servers which carry the source code *************** *** 189,196 **** The preferred platform for the library is a GNU system, which allows it to take advantage of additional features in the GNU C compiler and GNU C ! library. However, the library is fully portable and compiles on most ! Unix platforms. It is also available for Microsoft Windows. Precompiled ! versions of the library can be purchased from commercial redistributors ! listed on the website. Announcements of new releases, updates and other relevant events are --- 189,195 ---- The preferred platform for the library is a GNU system, which allows it to take advantage of additional features in the GNU C compiler and GNU C ! library. However, the library is fully portable and should compile on ! most systems. Precompiled versions of the library can be purchased from ! commercial redistributors listed on the website. Announcements of new releases, updates and other relevant events are *************** *** 205,261 ****  ! File: gsl-ref.info, Node: An Example Program, Next: No Warranty, Prev: Obtaining GSL, Up: Introduction ! An Example Program ! ================== ! The following short program demonstrates the use of the library by ! computing the value of the Bessel function J_0(x) for x=5, ! #include ! #include ! ! int ! main (void) ! { ! double x = 5.0; ! ! double y = gsl_sf_bessel_J0 (x); ! ! printf("J0(%g) = %.18e\n", x, y); ! ! return 0; ! } ! The output is shown below, and should be correct to double-precision ! accuracy, ! J0(5) = -1.775967713143382920e-01 ! The steps needed to compile programs which use the library are described ! in the next chapter. !  ! File: gsl-ref.info, Node: No Warranty, Next: Further Information, Prev: An Example Program, Up: Introduction ! No Warranty ! =========== ! The software described in this manual has no warranty, it is provided ! "as is". It is your responsibility to validate the behavior of the ! routines and their accuracy using the source code provided. Consult the ! GNU General Public license for further details (*note GNU General ! Public License::).  ! File: gsl-ref.info, Node: Further Information, Prev: No Warranty, Up: Introduction Further Information =================== ! Additional information, including online copies of this manual, ! links to related projects, and mailing list archives are available from ! the development website mentioned above. The developers of the library ! can be reached via the project's public mailing list, `gsl-discuss@sources.redhat.com' --- 204,256 ----  ! File: gsl-ref.info, Node: No Warranty, Next: Reporting Bugs, Prev: An Example Program, Up: Introduction ! No Warranty ! =========== ! The software described in this manual has no warranty, it is provided ! "as is". It is your responsibility to validate the behavior of the ! routines and their accuracy using the source code provided. Consult the ! GNU General Public license for further details (*note GNU General ! Public License::). !  ! File: gsl-ref.info, Node: Reporting Bugs, Next: Further Information, Prev: No Warranty, Up: Introduction ! Reporting Bugs ! ============== ! A list of known bugs can be found in the `BUGS' file included in the ! GSL distribution. Details of compilation problems can be found in the ! `INSTALL' file. ! If you find a bug which is not listed in these files please report ! it to . ! All bug reports should include: ! * The version number of GSL ! * The hardware and operating system ! ! * The compiler used, including version number and compilation options ! ! * A description of the bug behavior ! ! * A short program which exercises the bug ! ! It is also useful if you can report whether the same problem occurs ! when the library is compiled without optimization. Thank you.  ! File: gsl-ref.info, Node: Further Information, Prev: Reporting Bugs, Up: Introduction Further Information =================== ! Additional information, including online copies of this manual, links to ! related projects, and mailing list archives are available from the ! development website mentioned above. The developers of the library can ! be reached via the project's public mailing list, `gsl-discuss@sources.redhat.com' *************** *** 270,274 **** ***************** ! This chapter describes how to compile programs that use GSL, and introduces its conventions. --- 265,269 ---- ***************** ! This chapter describes how to compile programs that use GSL, and introduces its conventions. *************** *** 278,282 **** * Compiling and Linking:: * Shared Libraries:: - * Autoconf macros:: * Inline functions:: * Long double:: --- 273,276 ---- *************** *** 290,293 **** --- 284,316 ----  + File: gsl-ref.info, Node: An Example Program, Next: No Warranty, Prev: Obtaining GSL, Up: Introduction + + An Example Program + ================== + + The following short program demonstrates the use of the library by + computing the value of the Bessel function J_0(x) for x=5, + + #include + #include + + int + main (void) + { + double x = 5.0; + double y = gsl_sf_bessel_J0 (x); + printf ("J0(%g) = %.18e\n", x, y); + return 0; + } + + The output is shown below, and should be correct to double-precision + accuracy, + + J0(5) = -1.775967713143382920e-01 + + The steps needed to compile this program are described in the following + sections. + +  File: gsl-ref.info, Node: ANSI C Compliance, Next: Compiling and Linking, Up: Using the library *************** *** 295,301 **** ================= ! The library is written in ANSI C and is intended to conform to the ! ANSI C standard. It should be portable to any system with a working ! ANSI C compiler. The library does not rely on any non-ANSI extensions in the --- 318,324 ---- ================= ! The library is written in ANSI C and is intended to conform to the ANSI ! C standard. It should be portable to any system with a working ANSI C ! compiler. The library does not rely on any non-ANSI extensions in the *************** *** 321,325 **** ===================== ! The library header files are installed in their own `gsl' directory. You should write any preprocessor include statements with a `gsl/' directory prefix thus, --- 344,348 ---- ===================== ! The library header files are installed in their own `gsl' directory. You should write any preprocessor include statements with a `gsl/' directory prefix thus, *************** *** 331,340 **** as a command line flag. The default location of the `gsl' directory is `/usr/local/include/gsl'. A typical compilation command for a source ! file `app.c' with the GNU C compiler `gcc' is, ! gcc -I/usr/local/include -c app.c ! This results in an object file `app.o'. The default include path for ! `gcc' searches `/usr/local/include' automatically so the `-I' option ! can be omitted when GSL is installed in its default location. The library is installed as a single file, `libgsl.a'. A shared --- 354,363 ---- as a command line flag. The default location of the `gsl' directory is `/usr/local/include/gsl'. A typical compilation command for a source ! file `example.c' with the GNU C compiler `gcc' is, ! gcc -I/usr/local/include -c example.c ! This results in an object file `example.o'. The default include path ! for `gcc' searches `/usr/local/include' automatically so the `-I' ! option can be omitted when GSL is installed in its default location. The library is installed as a single file, `libgsl.a'. A shared *************** *** 347,356 **** following example shows how to link an application with the library, ! gcc app.o -lgsl -lgslcblas -lm The following command line shows how you would link the same application with an alternative blas library called `libcblas', ! gcc app.o -lgsl -lcblas -lm For the best performance an optimized platform-specific CBLAS library --- 370,379 ---- following example shows how to link an application with the library, ! gcc example.o -lgsl -lgslcblas -lm The following command line shows how you would link the same application with an alternative blas library called `libcblas', ! gcc example.o -lgsl -lcblas -lm For the best performance an optimized platform-specific CBLAS library *************** *** 362,366 **** CBLAS interface, ! gcc app.o -lgsl -lcblas -latlas -lm For more information see *Note BLAS Support::. --- 385,389 ---- CBLAS interface, ! gcc example.o -lgsl -lcblas -latlas -lm For more information see *Note BLAS Support::. *************** *** 376,460 ****  ! File: gsl-ref.info, Node: Shared Libraries, Next: Autoconf macros, Prev: Compiling and Linking, Up: Using the library Shared Libraries ================ ! To run a program linked with the shared version of the library it ! may be necessary to define the shell variable `LD_LIBRARY_PATH' to ! include the directory where the library is installed. For example, ! LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./app ! To compile a statically linked version of the program instead, use the ! `-static' flag in `gcc', ! gcc -static app.o -lgsl -lgslcblas -lm !  ! File: gsl-ref.info, Node: Autoconf macros, Next: Inline functions, Prev: Shared Libraries, Up: Using the library ! Autoconf macros ! =============== ! For applications using `autoconf' the standard macro `AC_CHECK_LIB' ! can be used to link with the library automatically from a `configure' ! script. The library itself depends on the presence of a CBLAS and math ! library as well, so these must also be located before linking with the ! main `libgsl' file. The following commands should be placed in the ! `configure.in' file to perform these tests, ! ! AC_CHECK_LIB(m,main) ! AC_CHECK_LIB(gslcblas,main) ! AC_CHECK_LIB(gsl,main) ! ! Assuming the libraries are found the output during the configure stage ! looks like this, ! ! checking for main in -lm... yes ! checking for main in -lgslcblas... yes ! checking for main in -lgsl... yes ! ! If the library is found then the tests will define the macros ! `HAVE_LIBGSL', `HAVE_LIBGSLCBLAS', `HAVE_LIBM' and add the options ! `-lgsl -lgslcblas -lm' to the variable `LIBS'. ! ! The tests above will find any version of the library. They are ! suitable for general use, where the versions of the functions are not ! important. An alternative macro is available in the file `gsl.m4' to ! test for a specific version of the library. To use this macro simply ! add the following line to your `configure.in' file instead of the tests ! above: ! ! AM_PATH_GSL(GSL_VERSION, ! [action-if-found], ! [action-if-not-found]) ! ! The argument `GSL_VERSION' should be the two or three digit MAJOR.MINOR ! or MAJOR.MINOR.MICRO version number of the release you require. A ! suitable choice for `action-if-not-found' is, ! ! AC_MSG_ERROR(could not find required version of GSL) ! ! Then you can add the variables `GSL_LIBS' and `GSL_CFLAGS' to your ! Makefile.am files to obtain the correct compiler flags. `GSL_LIBS' is ! equal to the output of the `gsl-config --libs' command and `GSL_CFLAGS' ! is equal to `gsl-config --cflags' command. For example, ! ! libgsdv_la_LDFLAGS = \ ! $(GTK_LIBDIR) \ ! $(GTK_LIBS) -lgsdvgsl $(GSL_LIBS) -lgslcblas ! ! Note that the macro `AM_PATH_GSL' needs to use the C compiler so it ! should appear in the `configure.in' file before the macro ! `AC_LANG_CPLUSPLUS' for programs that use C++.  ! File: gsl-ref.info, Node: Inline functions, Next: Long double, Prev: Autoconf macros, Up: Using the library Inline functions ================ ! The `inline' keyword is not part of ANSI C and the library does not export any inline function definitions by default. However, the library provides optional inline versions of performance-critical functions by --- 399,436 ----  ! File: gsl-ref.info, Node: Shared Libraries, Next: Inline functions, Prev: Compiling and Linking, Up: Using the library Shared Libraries ================ ! To run a program linked with the shared version of the library it may be ! necessary to define the shell variable `LD_LIBRARY_PATH' to include the ! directory where the library is installed. For example, in the Bourne ! shell (`/bin/sh' or `/bin/bash'), the library path can be set with the ! following commands: ! LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ! export LD_LIBRARY_PATH ! ./example ! In the C-shell (`/bin/csh' or `/bin/tcsh') the equivalent command is, ! setenv LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH ! To save retyping these commands each session they should be placed ! in an individual or system-wide login file. ! To compile a statically linked version of the program, use the ! `-static' flag in `gcc', ! gcc -static example.o -lgsl -lgslcblas -lm  ! File: gsl-ref.info, Node: Inline functions, Next: Long double, Prev: Shared Libraries, Up: Using the library Inline functions ================ ! The `inline' keyword is not part of ANSI C and the library does not export any inline function definitions by default. However, the library provides optional inline versions of performance-critical functions by *************** *** 463,482 **** application. ! gcc -c -DHAVE_INLINE app.c ! ! If you use `autoconf' this macro can be defined automatically. The ! following test should be placed in your `configure.in' file, ! AC_C_INLINE ! ! if test "$ac_cv_c_inline" != no ; then ! AC_DEFINE(HAVE_INLINE,1) ! AC_SUBST(HAVE_INLINE) ! fi ! ! and the macro will then be defined in the compilation flags or by ! including the file `config.h' before any library headers. If you do ! not define the macro `HAVE_INLINE' then the slower non-inlined versions ! of the functions will be used instead. Note that the actual usage of the inline keyword is `extern inline', --- 439,447 ---- application. ! gcc -c -DHAVE_INLINE example.c ! If you use `autoconf' this macro can be defined automatically. If you ! do not define the macro `HAVE_INLINE' then the slower non-inlined ! versions of the functions will be used instead. Note that the actual usage of the inline keyword is `extern inline', *************** *** 491,495 **** =========== ! The extended numerical type `long double' is part of the ANSI C standard and should be available in every modern compiler. However, the precision of `long double' is platform dependent, and this should be --- 456,460 ---- =========== ! The extended numerical type `long double' is part of the ANSI C standard and should be available in every modern compiler. However, the precision of `long double' is platform dependent, and this should be *************** *** 522,538 **** ===================== ! To help in writing portable applications GSL provides some implementations of functions that are found in other libraries, such as the BSD math library. You can write your application to use the native versions of these functions, and substitute the GSL versions via a ! preprocessor macro if they are unavailable on another platform. The ! substitution can be made automatically if you use `autoconf'. For ! example, to test whether the BSD function `hypot' is available you can ! include the following line in the configure file `configure.in' for ! your application, ! ! AC_CHECK_FUNCS(hypot) ! and place the following macro definitions in the file `config.h.in', /* Substitute gsl_hypot for missing system hypot */ --- 487,499 ---- ===================== ! To help in writing portable applications GSL provides some implementations of functions that are found in other libraries, such as the BSD math library. You can write your application to use the native versions of these functions, and substitute the GSL versions via a ! preprocessor macro if they are unavailable on another platform. ! For example, after determining whether the BSD function `hypot' is ! available you can include the following macro definitions in a file ! `config.h' with your application, /* Substitute gsl_hypot for missing system hypot */ *************** *** 543,548 **** The application source files can then use the include command `#include ! ' to substitute `gsl_hypot' for each occurrence of `hypot' ! when `hypot' is not available. In most circumstances the best strategy is to use the native --- 504,510 ---- The application source files can then use the include command `#include ! ' to replace each occurrence of `hypot' by `gsl_hypot' when ! `hypot' is not available. This substitution can be made automatically ! if you use `autoconf', see *Note Autoconf Macros::. In most circumstances the best strategy is to use the native *************** *** 558,562 **** =============================== ! The main implementation of some functions in the library will not be optimal on all architectures. For example, there are several ways to compute a Gaussian random variate and their relative speeds are --- 520,524 ---- =============================== ! The main implementation of some functions in the library will not be optimal on all architectures. For example, there are several ways to compute a Gaussian random variate and their relative speeds are *************** *** 590,596 **** =================================== ! Many functions in the library are defined for different numeric ! types. This feature is implemented by varying the name of the function ! with a type-related modifier -- a primitive form of C++ templates. The modifier is inserted into the function name after the initial module prefix. The following table shows the function names defined for all --- 552,558 ---- =================================== ! Many functions in the library are defined for different numeric types. ! This feature is implemented by varying the name of the function with a ! type-related modifier -- a primitive form of C++ templates. The modifier is inserted into the function name after the initial module prefix. The following table shows the function names defined for all *************** *** 657,662 **** ====================== ! The library header files automatically define functions to have ! `extern "C"' linkage when included in C++ programs.  --- 619,624 ---- ====================== ! The library header files automatically define functions to have `extern ! "C"' linkage when included in C++ programs.  *************** *** 666,670 **** ================== ! The library assumes that arrays, vectors and matrices passed as modifiable arguments are not aliased and do not overlap with each other. This removes the need for the library to handle overlapping memory --- 628,632 ---- ================== ! The library assumes that arrays, vectors and matrices passed as modifiable arguments are not aliased and do not overlap with each other. This removes the need for the library to handle overlapping memory *************** *** 682,694 **** ============= ! The library can be used in multi-threaded programs. All the ! functions are thread-safe, in the sense that they do not use static ! variables. Memory is always associated with objects and not with ! functions. For functions which use "workspace" objects as temporary ! storage the workspaces should be allocated on a per-thread basis. For ! functions which use "table" objects as read-only memory the tables can ! be used by multiple threads simultaneously. Table arguments are always ! declared `const' in function prototypes, to indicate that they may be ! safely accessed by different threads. There are a small number of static global variables which are used to --- 644,656 ---- ============= ! The library can be used in multi-threaded programs. All the functions ! are thread-safe, in the sense that they do not use static variables. ! Memory is always associated with objects and not with functions. For ! functions which use "workspace" objects as temporary storage the ! workspaces should be allocated on a per-thread basis. For functions ! which use "table" objects as read-only memory the tables can be used by ! multiple threads simultaneously. Table arguments are always declared ! `const' in function prototypes, to indicate that they may be safely ! accessed by different threads. There are a small number of static global variables which are used to *************** *** 704,708 **** ========== ! Where possible the routines in the library have been written to avoid dependencies between modules and files. This should make it possible to extract individual functions for use in your own applications, without --- 666,670 ---- ========== ! Where possible the routines in the library have been written to avoid dependencies between modules and files. This should make it possible to extract individual functions for use in your own applications, without *************** *** 719,723 **** ************** ! This chapter describes the way that GSL functions report and handle errors. By examining the status information returned by every function you can determine whether it succeeded or failed, and if it failed you --- 681,685 ---- ************** ! This chapter describes the way that GSL functions report and handle errors. By examining the status information returned by every function you can determine whether it succeeded or failed, and if it failed you *************** *** 743,751 **** =============== ! The library follows the thread-safe error reporting conventions of ! the POSIX Threads library. Functions return a non-zero error code to indicate an error and `0' to indicate success. ! int status = gsl_function(...) if (status) { /* an error occurred */ --- 705,713 ---- =============== ! The library follows the thread-safe error reporting conventions of the ! POSIX Threads library. Functions return a non-zero error code to indicate an error and `0' to indicate success. ! int status = gsl_function (...) if (status) { /* an error occurred */ *************** *** 788,793 **** =========== ! The error code numbers returned by library functions are defined in ! the file `gsl_errno.h'. They all have the prefix `GSL_' and expand to non-zero constant integer values. Many of the error codes use the same base name as a corresponding error code in C library. Here are some of --- 750,755 ---- =========== ! The error code numbers returned by library functions are defined in the ! file `gsl_errno.h'. They all have the prefix `GSL_' and expand to non-zero constant integer values. Many of the error codes use the same base name as a corresponding error code in C library. Here are some of *************** *** 822,826 **** code GSL_ERRNO. For example, ! printf("error: %s\n", gsl_strerror (status)); would print an error message like `error: output range error' for a --- 784,788 ---- code GSL_ERRNO. For example, ! printf ("error: %s\n", gsl_strerror (status)); would print an error message like `error: output range error' for a *************** *** 833,837 **** ============== ! The default behavior of the GSL error handler is to print a short message and call `abort()'. When this default is in use programs will stop with a core-dump whenever a library routine reports an error. --- 795,799 ---- ============== ! The default behavior of the GSL error handler is to print a short message and call `abort()'. When this default is in use programs will stop with a core-dump whenever a library routine reports an error. *************** *** 871,875 **** - Function: gsl_error_handler_t * gsl_set_error_handler (gsl_error_handler_t NEW_HANDLER) ! This functions sets a new error handler, NEW_HANDLER, for the GSL library routines. The previous handler is returned (so that you can restore it later). Note that the pointer to a user defined --- 833,837 ---- - Function: gsl_error_handler_t * gsl_set_error_handler (gsl_error_handler_t NEW_HANDLER) ! This function sets a new error handler, NEW_HANDLER, for the GSL library routines. The previous handler is returned (so that you can restore it later). Note that the pointer to a user defined *************** *** 912,917 **** =============================================== ! If you are writing numerical functions in a program which also uses ! GSL code you may find it convenient to adopt the same error reporting conventions as in the library. --- 874,879 ---- =============================================== ! If you are writing numerical functions in a program which also uses GSL ! code you may find it convenient to adopt the same error reporting conventions as in the library. *************** *** 943,947 **** - Macro: GSL_ERROR_VAL (REASON, GSL_ERRNO, VALUE) This macro is the same as `GSL_ERROR' but returns a user-defined ! status value of VALUE instead of an error code. It can be used for mathematical functions that return a floating point value. --- 905,909 ---- - Macro: GSL_ERROR_VAL (REASON, GSL_ERRNO, VALUE) This macro is the same as `GSL_ERROR' but returns a user-defined ! value of VALUE instead of an error code. It can be used for mathematical functions that return a floating point value. *************** *** 961,965 **** ======== ! Here is an example of some code which checks the return value of a function where an error might be reported, --- 923,927 ---- ======== ! Here is an example of some code which checks the return value of a function where an error might be reported, *************** *** 968,975 **** #include ! int ! main (void) ! { int status; gsl_set_error_handler_off(); --- 930,936 ---- #include ! ... int status; + size_t n = 37; gsl_set_error_handler_off(); *************** *** 986,992 **** exit (-1); } ! ! exit (0); ! } The function `gsl_fft_complex_radix2' only accepts integer lengths --- 947,951 ---- exit (-1); } ! ... The function `gsl_fft_complex_radix2' only accepts integer lengths *************** *** 1004,1008 **** ********************** ! This chapter describes basic mathematical functions. Some of these functions are present in system libraries, but the alternative versions given here can be used as a substitute when the system functions are not --- 963,967 ---- ********************** ! This chapter describes basic mathematical functions. Some of these functions are present in system libraries, but the alternative versions given here can be used as a substitute when the system functions are not *************** *** 1029,1033 **** ====================== ! The library ensures that the standard BSD mathematical constants are defined. For reference here is a list of the constants. --- 988,992 ---- ====================== ! The library ensures that the standard BSD mathematical constants are defined. For reference here is a list of the constants. *************** *** 1083,1086 **** --- 1042,1046 ---- Euler's constant, \gamma +  File: gsl-ref.info, Node: Infinities and Not-a-number, Next: Elementary Functions, Prev: Mathematical Constants, Up: Mathematical Functions *************** *** 1118,1122 **** ==================== ! The following routines provide portable implementations of functions found in the BSD math library. When native versions are not available the functions described here can be used instead. The substitution can --- 1078,1082 ---- ==================== ! The following routines provide portable implementations of functions found in the BSD math library. When native versions are not available the functions described here can be used instead. The substitution can *************** *** 1168,1172 **** ==================== ! A common complaint about the standard C library is its lack of a function for calculating (small) integer powers. GSL provides a simple functions to fill this gap. For reasons of efficiency, these functions --- 1128,1132 ---- ==================== ! A common complaint about the standard C library is its lack of a function for calculating (small) integer powers. GSL provides a simple functions to fill this gap. For reasons of efficiency, these functions *************** *** 1175,1182 **** - Function: double gsl_pow_int (double X, int N) This routine computes the power x^n for integer N. The power is ! computed using the minimum number of multiplications. For example, ! x^8 is computed as ((x^2)^2)^2, requiring only 3 multiplications. ! A version of this function which also computes the numerical error ! in the result is available as `gsl_sf_pow_int_e'. - Function: double gsl_pow_2 (const double X) --- 1135,1142 ---- - Function: double gsl_pow_int (double X, int N) This routine computes the power x^n for integer N. The power is ! computed efficiently -- for example, x^8 is computed as ! ((x^2)^2)^2, requiring only 3 multiplications. A version of this ! function which also computes the numerical error in the result is ! available as `gsl_sf_pow_int_e'. - Function: double gsl_pow_2 (const double X) *************** *** 1272,1280 **** ================================================ ! It is sometimes useful to be able to compare two floating point ! numbers approximately, to allow for rounding and truncation errors. ! The following function implements the approximate floating-point ! comparison algorithm proposed by D.E. Knuth in Section 4.2.2 of ! `Seminumerical Algorithms' (3rd edition). - Function: int gsl_fcmp (double X, double Y, double EPSILON) --- 1232,1240 ---- ================================================ ! It is sometimes useful to be able to compare two floating point numbers ! approximately, to allow for rounding and truncation errors. The ! following function implements the approximate floating-point comparison ! algorithm proposed by D.E. Knuth in Section 4.2.2 of `Seminumerical ! Algorithms' (3rd edition). - Function: int gsl_fcmp (double X, double Y, double EPSILON) *************** *** 1283,1287 **** The relative accuracy is measured using an interval of size 2 ! \delta, where \delta = 2^k \epsilon and k is the maximimum base-2 exponent of x and y as computed by the function `frexp()'. --- 1243,1247 ---- The relative accuracy is measured using an interval of size 2 ! \delta, where \delta = 2^k \epsilon and k is the maximum base-2 exponent of x and y as computed by the function `frexp()'. *************** *** 1291,1293 **** --- 1251,7362 ---- The implementation is based on the package `fcmp' by T.C. Belding. + +  + File: gsl-ref.info, Node: Complex Numbers, Next: Polynomials, Prev: Mathematical Functions, Up: Top + + Complex Numbers + *************** + + The functions described in this chapter provide support for complex + numbers. The algorithms take care to avoid unnecessary intermediate + underflows and overflows, allowing the functions to be evaluated over + as much of the complex plane as possible. + + For multiple-valued functions the branch cuts have been chosen to + follow the conventions of Abramowitz and Stegun in the `Handbook of + Mathematical Functions'. The functions return principal values which are + the same as those in GNU Calc, which in turn are the same as those in + `Common Lisp, The Language (Second Edition)' (n.b. The second edition + uses different definitions from the first edition) and the HP-28/48 + series of calculators. + + The complex types are defined in the header file `gsl_complex.h', + while the corresponding complex functions and arithmetic operations are + defined in `gsl_complex_math.h'. + + * Menu: + + * Complex numbers:: + * Properties of complex numbers:: + * Complex arithmetic operators:: + * Elementary Complex Functions:: + * Complex Trigonometric Functions:: + * Inverse Complex Trigonometric Functions:: + * Complex Hyperbolic Functions:: + * Inverse Complex Hyperbolic Functions:: + * Complex Number References and Further Reading:: + +  + File: gsl-ref.info, Node: Complex numbers, Next: Properties of complex numbers, Up: Complex Numbers + + Complex numbers + =============== + + Complex numbers are represented using the type `gsl_complex'. The + internal representation of this type may vary across platforms and + should not be accessed directly. The functions and macros described + below allow complex numbers to be manipulated in a portable way. + + For reference, the default form of the `gsl_complex' type is given + by the following struct, + + typedef struct + { + double dat[2]; + } gsl_complex; + + The real and imaginary part are stored in contiguous elements of a two + element array. This eliminates any padding between the real and + imaginary parts, `dat[0]' and `dat[1]', allowing the struct to be + mapped correctly onto packed complex arrays. + + - Function: gsl_complex gsl_complex_rect (double X, double Y) + This function uses the rectangular cartesian components (X,Y) to + return the complex number z = x + i y. + + - Function: gsl_complex gsl_complex_polar (double R, double THETA) + This function returns the complex number z = r \exp(i \theta) = r + (\cos(\theta) + i \sin(\theta)) from the polar representation + (R,THETA). + + - Macro: GSL_REAL (Z) + - Macro: GSL_IMAG (Z) + These macros return the real and imaginary parts of the complex + number Z. + + - Macro: GSL_SET_COMPLEX (ZP, X, Y) + This macro uses the cartesian components (X,Y) to set the real and + imaginary parts of the complex number pointed to by ZP. For + example, + + GSL_SET_COMPLEX(&z, 3, 4) + + sets Z to be 3 + 4i. + + - Macro: GSL_SET_REAL (ZP,X) + - Macro: GSL_SET_IMAG (ZP,Y) + These macros allow the real and imaginary parts of the complex + number pointed to by ZP to be set independently. + +  + File: gsl-ref.info, Node: Properties of complex numbers, Next: Complex arithmetic operators, Prev: Complex numbers, Up: Complex Numbers + + Properties of complex numbers + ============================= + + - Function: double gsl_complex_arg (gsl_complex Z) + This function returns the argument of the complex number Z, + \arg(z), where -\pi < \arg(z) <= \pi. + + - Function: double gsl_complex_abs (gsl_complex Z) + This function returns the magnitude of the complex number Z, |z|. + + - Function: double gsl_complex_abs2 (gsl_complex Z) + This function returns the squared magnitude of the complex number + Z, |z|^2. + + - Function: double gsl_complex_logabs (gsl_complex Z) + This function returns the natural logarithm of the magnitude of the + complex number Z, \log|z|. It allows an accurate evaluation of + \log|z| when |z| is close to one. The direct evaluation of + `log(gsl_complex_abs(z))' would lead to a loss of precision in + this case. + +  + File: gsl-ref.info, Node: Complex arithmetic operators, Next: Elementary Complex Functions, Prev: Properties of complex numbers, Up: Complex Numbers + + Complex arithmetic operators + ============================ + + - Function: gsl_complex gsl_complex_add (gsl_complex A, gsl_complex B) + This function returns the sum of the complex numbers A and B, + z=a+b. + + - Function: gsl_complex gsl_complex_sub (gsl_complex A, gsl_complex B) + This function returns the difference of the complex numbers A and + B, z=a-b. + + - Function: gsl_complex gsl_complex_mul (gsl_complex A, gsl_complex B) + This function returns the product of the complex numbers A and B, + z=ab. + + - Function: gsl_complex gsl_complex_div (gsl_complex A, gsl_complex B) + This function returns the quotient of the complex numbers A and B, + z=a/b. + + - Function: gsl_complex gsl_complex_add_real (gsl_complex A, double X) + This function returns the sum of the complex number A and the real + number X, z=a+x. + + - Function: gsl_complex gsl_complex_sub_real (gsl_complex A, double X) + This function returns the difference of the complex number A and + the real number X, z=a-x. + + - Function: gsl_complex gsl_complex_mul_real (gsl_complex A, double X) + This function returns the product of the complex number A and the + real number X, z=ax. + + - Function: gsl_complex gsl_complex_div_real (gsl_complex A, double X) + This function returns the quotient of the complex number A and the + real number X, z=a/x. + + - Function: gsl_complex gsl_complex_add_imag (gsl_complex A, double Y) + This function returns the sum of the complex number A and the + imaginary number iY, z=a+iy. + + - Function: gsl_complex gsl_complex_sub_imag (gsl_complex A, double Y) + This function returns the difference of the complex number A and + the imaginary number iY, z=a-iy. + + - Function: gsl_complex gsl_complex_mul_imag (gsl_complex A, double Y) + This function returns the product of the complex number A and the + imaginary number iY, z=a*(iy). + + - Function: gsl_complex gsl_complex_div_imag (gsl_complex A, double Y) + This function returns the quotient of the complex number A and the + imaginary number iY, z=a/(iy). + + - Function: gsl_complex gsl_complex_conjugate (gsl_complex Z) + This function returns the complex conjugate of the complex number + Z, z^* = x - i y. + + - Function: gsl_complex gsl_complex_inverse (gsl_complex Z) + This function returns the inverse, or reciprocal, of the complex + number Z, 1/z = (x - i y)/(x^2 + y^2). + + - Function: gsl_complex gsl_complex_negative (gsl_complex Z) + This function returns the negative of the complex number Z, -z = + (-x) + i(-y). + +  + File: gsl-ref.info, Node: Elementary Complex Functions, Next: Complex Trigonometric Functions, Prev: Complex arithmetic operators, Up: Complex Numbers + + Elementary Complex Functions + ============================ + + - Function: gsl_complex gsl_complex_sqrt (gsl_complex Z) + This function returns the square root of the complex number Z, + \sqrt z. The branch cut is the negative real axis. The result + always lies in the right half of the complex plane. + + - Function: gsl_complex gsl_complex_sqrt_real (double X) + This function returns the complex square root of the real number + X, where X may be negative. + + - Function: gsl_complex gsl_complex_pow (gsl_complex Z, gsl_complex A) + The function returns the complex number Z raised to the complex + power A, z^a. This is computed as \exp(\log(z)*a) using complex + logarithms and complex exponentials. + + - Function: gsl_complex gsl_complex_pow_real (gsl_complex Z, double X) + This function returns the complex number Z raised to the real + power X, z^x. + + - Function: gsl_complex gsl_complex_exp (gsl_complex Z) + This function returns the complex exponential of the complex number + Z, \exp(z). + + - Function: gsl_complex gsl_complex_log (gsl_complex Z) + This function returns the complex natural logarithm (base e) of + the complex number Z, \log(z). The branch cut is the negative + real axis. + + - Function: gsl_complex gsl_complex_log10 (gsl_complex Z) + This function returns the complex base-10 logarithm of the complex + number Z, \log_10 (z). + + - Function: gsl_complex gsl_complex_log_b (gsl_complex Z, gsl_complex + B) + This function returns the complex base-B logarithm of the complex + number Z, \log_b(z). This quantity is computed as the ratio + \log(z)/\log(b). + +  + File: gsl-ref.info, Node: Complex Trigonometric Functions, Next: Inverse Complex Trigonometric Functions, Prev: Elementary Complex Functions, Up: Complex Numbers + + Complex Trigonometric Functions + =============================== + + - Function: gsl_complex gsl_complex_sin (gsl_complex Z) + This function returns the complex sine of the complex number Z, + \sin(z) = (\exp(iz) - \exp(-iz))/(2i). + + - Function: gsl_complex gsl_complex_cos (gsl_complex Z) + This function returns the complex cosine of the complex number Z, + \cos(z) = (\exp(iz) + \exp(-iz))/2. + + - Function: gsl_complex gsl_complex_tan (gsl_complex Z) + This function returns the complex tangent of the complex number Z, + \tan(z) = \sin(z)/\cos(z). + + - Function: gsl_complex gsl_complex_sec (gsl_complex Z) + This function returns the complex secant of the complex number Z, + \sec(z) = 1/\cos(z). + + - Function: gsl_complex gsl_complex_csc (gsl_complex Z) + This function returns the complex cosecant of the complex number Z, + \csc(z) = 1/\sin(z). + + - Function: gsl_complex gsl_complex_cot (gsl_complex Z) + This function returns the complex cotangent of the complex number + Z, \cot(z) = 1/\tan(z). + +  + File: gsl-ref.info, Node: Inverse Complex Trigonometric Functions, Next: Complex Hyperbolic Functions, Prev: Complex Trigonometric Functions, Up: Complex Numbers + + Inverse Complex Trigonometric Functions + ======================================= + + - Function: gsl_complex gsl_complex_arcsin (gsl_complex Z) + This function returns the complex arcsine of the complex number Z, + \arcsin(z). The branch cuts are on the real axis, less than -1 and + greater than 1. + + - Function: gsl_complex gsl_complex_arcsin_real (double Z) + This function returns the complex arcsine of the real number Z, + \arcsin(z). For z between -1 and 1, the function returns a real + value in the range (-\pi,\pi]. For z less than -1 the result has a + real part of -\pi/2 and a positive imaginary part. For z greater + than 1 the result has a real part of \pi/2 and a negative + imaginary part. + + - Function: gsl_complex gsl_complex_arccos (gsl_complex Z) + This function returns the complex arccosine of the complex number + Z, \arccos(z). The branch cuts are on the real axis, less than -1 + and greater than 1. + + - Function: gsl_complex gsl_complex_arccos_real (double Z) + This function returns the complex arccosine of the real number Z, + \arccos(z). For z between -1 and 1, the function returns a real + value in the range [0,\pi]. For z less than -1 the result has a + real part of \pi/2 and a negative imaginary part. For z greater + than 1 the result is purely imaginary and positive. + + - Function: gsl_complex gsl_complex_arctan (gsl_complex Z) + This function returns the complex arctangent of the complex number + Z, \arctan(z). The branch cuts are on the imaginary axis, below -i + and above i. + + - Function: gsl_complex gsl_complex_arcsec (gsl_complex Z) + This function returns the complex arcsecant of the complex number + Z, \arcsec(z) = \arccos(1/z). + + - Function: gsl_complex gsl_complex_arcsec_real (double Z) + This function returns the complex arcsecant of the real number Z, + \arcsec(z) = \arccos(1/z). + + - Function: gsl_complex gsl_complex_arccsc (gsl_complex Z) + This function returns the complex arccosecant of the complex + number Z, \arccsc(z) = \arcsin(1/z). + + - Function: gsl_complex gsl_complex_arccsc_real (double Z) + This function returns the complex arccosecant of the real number Z, + \arccsc(z) = \arcsin(1/z). + + - Function: gsl_complex gsl_complex_arccot (gsl_complex Z) + This function returns the complex arccotangent of the complex + number Z, \arccot(z) = \arctan(1/z). + +  + File: gsl-ref.info, Node: Complex Hyperbolic Functions, Next: Inverse Complex Hyperbolic Functions, Prev: Inverse Complex Trigonometric Functions, Up: Complex Numbers + + Complex Hyperbolic Functions + ============================ + + - Function: gsl_complex gsl_complex_sinh (gsl_complex Z) + This function returns the complex hyperbolic sine of the complex + number Z, \sinh(z) = (\exp(z) - \exp(-z))/2. + + - Function: gsl_complex gsl_complex_cosh (gsl_complex Z) + This function returns the complex hyperbolic cosine of the complex + number Z, \cosh(z) = (\exp(z) + \exp(-z))/2. + + - Function: gsl_complex gsl_complex_tanh (gsl_complex Z) + This function returns the complex hyperbolic tangent of the + complex number Z, \tanh(z) = \sinh(z)/\cosh(z). + + - Function: gsl_complex gsl_complex_sech (gsl_complex Z) + This function returns the complex hyperbolic secant of the complex + number Z, \sech(z) = 1/\cosh(z). + + - Function: gsl_complex gsl_complex_csch (gsl_complex Z) + This function returns the complex hyperbolic cosecant of the + complex number Z, \csch(z) = 1/\sinh(z). + + - Function: gsl_complex gsl_complex_coth (gsl_complex Z) + This function returns the complex hyperbolic cotangent of the + complex number Z, \coth(z) = 1/\tanh(z). + +  + File: gsl-ref.info, Node: Inverse Complex Hyperbolic Functions, Next: Complex Number References and Further Reading, Prev: Complex Hyperbolic Functions, Up: Complex Numbers + + Inverse Complex Hyperbolic Functions + ==================================== + + - Function: gsl_complex gsl_complex_arcsinh (gsl_complex Z) + This function returns the complex hyperbolic arcsine of the + complex number Z, \arcsinh(z). The branch cuts are on the + imaginary axis, below -i and above i. + + - Function: gsl_complex gsl_complex_arccosh (gsl_complex Z) + This function returns the complex hyperbolic arccosine of the + complex number Z, \arccosh(z). The branch cut is on the real axis, + less than 1. + + - Function: gsl_complex gsl_complex_arccosh_real (double Z) + This function returns the complex hyperbolic arccosine of the real + number Z, \arccosh(z). + + - Function: gsl_complex gsl_complex_arctanh (gsl_complex Z) + This function returns the complex hyperbolic arctangent of the + complex number Z, \arctanh(z). The branch cuts are on the real + axis, less than -1 and greater than 1. + + - Function: gsl_complex gsl_complex_arctanh_real (double Z) + This function returns the complex hyperbolic arctangent of the real + number Z, \arctanh(z). + + - Function: gsl_complex gsl_complex_arcsech (gsl_complex Z) + This function returns the complex hyperbolic arcsecant of the + complex number Z, \arcsech(z) = \arccosh(1/z). + + - Function: gsl_complex gsl_complex_arccsch (gsl_complex Z) + This function returns the complex hyperbolic arccosecant of the + complex number Z, \arccsch(z) = \arcsin(1/z). + + - Function: gsl_complex gsl_complex_arccoth (gsl_complex Z) + This function returns the complex hyperbolic arccotangent of the + complex number Z, \arccoth(z) = \arctanh(1/z). + +  + File: gsl-ref.info, Node: Complex Number References and Further Reading, Prev: Inverse Complex Hyperbolic Functions, Up: Complex Numbers + + References and Further Reading + ============================== + + The implementations of the elementary and trigonometric functions are + based on the following papers, + + T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, + "Implementing Complex Elementary Functions Using Exception + Handling", `ACM Transactions on Mathematical Software', Volume 20 + (1994), pp 215-244, Corrigenda, p553 + + T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, + "Implementing the complex arcsin and arccosine functions using + exception handling", `ACM Transactions on Mathematical Software', + Volume 23 (1997) pp 299-335 + + The general formulas and details of branch cuts can be found in the + following books, + + Abramowitz and Stegun, `Handbook of Mathematical Functions', + "Circular Functions in Terms of Real and Imaginary Parts", Formulas + 4.3.55-58, "Inverse Circular Functions in Terms of Real and + Imaginary Parts", Formulas 4.4.37-39, "Hyperbolic Functions in + Terms of Real and Imaginary Parts", Formulas 4.5.49-52, "Inverse + Hyperbolic Functions - relation to Inverse Circular Functions", + Formulas 4.6.14-19. + + Dave Gillespie, `Calc Manual', Free Software Foundation, ISBN + 1-882114-18-3 + +  + File: gsl-ref.info, Node: Polynomials, Next: Special Functions, Prev: Complex Numbers, Up: Top + + Polynomials + *********** + + This chapter describes functions for evaluating and solving polynomials. + There are routines for finding real and complex roots of quadratic and + cubic equations using analytic methods. An iterative polynomial solver + is also available for finding the roots of general polynomials with real + coefficients (of any order). The functions are declared in the header + file `gsl_poly.h'. + + * Menu: + + * Polynomial Evaluation:: + * Divided Difference Representation of Polynomials:: + * Quadratic Equations:: + * Cubic Equations:: + * General Polynomial Equations:: + * Roots of Polynomials Examples:: + * Roots of Polynomials References and Further Reading:: + +  + File: gsl-ref.info, Node: Polynomial Evaluation, Next: Divided Difference Representation of Polynomials, Up: Polynomials + + Polynomial Evaluation + ===================== + + - Function: double gsl_poly_eval (const double C[], const int LEN, + const double X) + This function evaluates the polynomial c[0] + c[1] x + c[2] x^2 + + \dots + c[len-1] x^{len-1} using Horner's method for stability. + The function is inlined when possible. + +  + File: gsl-ref.info, Node: Divided Difference Representation of Polynomials, Next: Quadratic Equations, Prev: Polynomial Evaluation, Up: Polynomials + + Divided Difference Representation of Polynomials + ================================================ + + The functions described here manipulate polynomials stored in Newton's + divided-difference representation. The use of divided-differences is + described in Abramowitz & Stegun sections 25.1.4, 25.2.26. + + - Function: int gsl_poly_dd_init (double DD[], const double XA[], + const double YA[], size_t SIZE) + This function computes a divided-difference representation of the + interpolating polynomial for the points (XA, YA) stored in the + arrays XA and YA of length SIZE. On output the + divided-differences of (XA,YA) are stored in the array DD, also of + length SIZE. + + - Function: double gsl_poly_dd_eval (const double DD[], const double + XA[], const size_t SIZE, const double X) + This function evaluates the polynomial stored in + divided-difference form in the arrays DD and XA of length SIZE at + the point X. + + - Function: int gsl_poly_dd_taylor (double C[], double XP, const + double DD[], const double XA[], size_t SIZE, double W[]) + This function converts the divided-difference representation of a + polynomial to a Taylor expansion. The divided-difference + representation is supplied in the arrays DD and XA of length SIZE. + On output the Taylor coefficients of the polynomial expanded about + the point XP are stored in the array C also of length SIZE. A + workspace of length SIZE must be provided in the array W. + +  + File: gsl-ref.info, Node: Quadratic Equations, Next: Cubic Equations, Prev: Divided Difference Representation of Polynomials, Up: Polynomials + + Quadratic Equations + =================== + + - Function: int gsl_poly_solve_quadratic (double A, double B, double + C, double *X0, double *X1) + This function finds the real roots of the quadratic equation, + + a x^2 + b x + c = 0 + + The number of real roots (either zero or two) is returned, and + their locations are stored in X0 and X1. If no real roots are + found then X0 and X1 are not modified. When two real roots are + found they are stored in X0 and X1 in ascending order. The case + of coincident roots is not considered special. For example + (x-1)^2=0 will have two roots, which happen to have exactly equal + values. + + The number of roots found depends on the sign of the discriminant + b^2 - 4 a c. This will be subject to rounding and cancellation + errors when computed in double precision, and will also be subject + to errors if the coefficients of the polynomial are inexact. + These errors may cause a discrete change in the number of roots. + However, for polynomials with small integer coefficients the + discriminant can always be computed exactly. + + + - Function: int gsl_poly_complex_solve_quadratic (double A, double B, + double C, gsl_complex *Z0, gsl_complex *Z1) + This function finds the complex roots of the quadratic equation, + + a z^2 + b z + c = 0 + + The number of complex roots is returned (always two) and the + locations of the roots are stored in Z0 and Z1. The roots are + returned in ascending order, sorted first by their real components + and then by their imaginary components. + + +  + File: gsl-ref.info, Node: Cubic Equations, Next: General Polynomial Equations, Prev: Quadratic Equations, Up: Polynomials + + Cubic Equations + =============== + + - Function: int gsl_poly_solve_cubic (double A, double B, double C, + double *X0, double *X1, double *X2) + This function finds the real roots of the cubic equation, + + x^3 + a x^2 + b x + c = 0 + + with a leading coefficient of unity. The number of real roots + (either one or three) is returned, and their locations are stored + in X0, X1 and X2. If one real root is found then only X0 is + modified. When three real roots are found they are stored in X0, + X1 and X2 in ascending order. The case of coincident roots is not + considered special. For example, the equation (x-1)^3=0 will have + three roots with exactly equal values. + + + - Function: int gsl_poly_complex_solve_cubic (double A, double B, + double C, gsl_complex *Z0, gsl_complex *Z1, gsl_complex *Z2) + This function finds the complex roots of the cubic equation, + + z^3 + a z^2 + b z + c = 0 + + The number of complex roots is returned (always three) and the + locations of the roots are stored in Z0, Z1 and Z2. The roots are + returned in ascending order, sorted first by their real components + and then by their imaginary components. + + +  + File: gsl-ref.info, Node: General Polynomial Equations, Next: Roots of Polynomials Examples, Prev: Cubic Equations, Up: Polynomials + + General Polynomial Equations + ============================ + + The roots of polynomial equations cannot be found analytically beyond + the special cases of the quadratic, cubic and quartic equation. The + algorithm described in this section uses an iterative method to find the + approximate locations of roots of higher order polynomials. + + - Function: gsl_poly_complex_workspace * + gsl_poly_complex_workspace_alloc (size_t N) + This function allocates space for a `gsl_poly_complex_workspace' + struct and a workspace suitable for solving a polynomial with N + coefficients using the routine `gsl_poly_complex_solve'. + + The function returns a pointer to the newly allocated + `gsl_poly_complex_workspace' if no errors were detected, and a null + pointer in the case of error. + + - Function: void gsl_poly_complex_workspace_free + (gsl_poly_complex_workspace * W) + This function frees all the memory associated with the workspace W. + + - Function: int gsl_poly_complex_solve (const double * A, size_t N, + gsl_poly_complex_workspace * W, gsl_complex_packed_ptr Z) + This function computes the roots of the general polynomial P(x) = + a_0 + a_1 x + a_2 x^2 + ... + a_{n-1} x^{n-1} using balanced-QR + reduction of the companion matrix. The parameter N specifies the + length of the coefficient array. The coefficient of the highest + order term must be non-zero. The function requires a workspace W + of the appropriate size. The n-1 roots are returned in the packed + complex array Z of length 2(n-1), alternating real and imaginary + parts. + + The function returns `GSL_SUCCESS' if all the roots are found and + `GSL_EFAILED' if the QR reduction does not converge. + +  + File: gsl-ref.info, Node: Roots of Polynomials Examples, Next: Roots of Polynomials References and Further Reading, Prev: General Polynomial Equations, Up: Polynomials + + Examples + ======== + + To demonstrate the use of the general polynomial solver we will take the + polynomial P(x) = x^5 - 1 which has the following roots, + + 1, e^{2\pi i /5}, e^{4\pi i /5}, e^{6\pi i /5}, e^{8\pi i /5} + + The following program will find these roots. + + #include + #include + + int + main (void) + { + int i; + /* coefficient of P(x) = -1 + x^5 */ + double a[6] = { -1, 0, 0, 0, 0, 1 }; + double z[10]; + + gsl_poly_complex_workspace * w + = gsl_poly_complex_workspace_alloc (6); + + gsl_poly_complex_solve (a, 6, w, z); + + gsl_poly_complex_workspace_free (w); + + for (i = 0; i < 5; i++) + { + printf ("z%d = %+.18f %+.18f\n", + i, z[2*i], z[2*i+1]); + } + + return 0; + } + + The output of the program is, + + bash$ ./a.out + + z0 = -0.809016994374947451 +0.587785252292473137 + z1 = -0.809016994374947451 -0.587785252292473137 + z2 = +0.309016994374947451 +0.951056516295153642 + z3 = +0.309016994374947451 -0.951056516295153642 + z4 = +1.000000000000000000 +0.000000000000000000 + + which agrees with the analytic result, z_n = \exp(2 \pi n i/5). + +  + File: gsl-ref.info, Node: Roots of Polynomials References and Further Reading, Prev: Roots of Polynomials Examples, Up: Polynomials + + References and Further Reading + ============================== + + The balanced-QR method and its error analysis are described in the + following papers. + + R.S. Martin, G. Peters and J.H. Wilkinson, "The QR Algorithm for + Real Hessenberg Matrices", `Numerische Mathematik', 14 (1970), + 219-231. + + B.N. Parlett and C. Reinsch, "Balancing a Matrix for Calculation of + Eigenvalues and Eigenvectors", `Numerische Mathematik', 13 (1969), + 293-304. + + A. Edelman and H. Murakami, "Polynomial roots from companion matrix + eigenvalues", `Mathematics of Computation', Vol. 64 No. 210 + (1995), 763-776. + +  + File: gsl-ref.info, Node: Special Functions, Next: Vectors and Matrices, Prev: Polynomials, Up: Top + + Special Functions + ***************** + + This chapter describes the GSL special function library. The library + includes routines for calculating the values of Airy functions, Bessel + functions, Clausen functions, Coulomb wave functions, Coupling + coefficients, the Dawson function, Debye functions, Dilogarithms, + Elliptic integrals, Jacobi elliptic functions, Error functions, + Exponential integrals, Fermi-Dirac functions, Gamma functions, + Gegenbauer functions, Hypergeometric functions, Laguerre functions, + Legendre functions and Spherical Harmonics, the Psi (Digamma) Function, + Synchrotron functions, Transport functions, Trigonometric functions and + Zeta functions. Each routine also computes an estimate of the numerical + error in the calculated value of the function. + + The functions are declared in individual header files, such as + `gsl_sf_airy.h', `gsl_sf_bessel.h', etc. The complete set of header + files can be included using the file `gsl_sf.h'. + + * Menu: + + * Special Function Usage:: + * The gsl_sf_result struct:: + * Special Function Modes:: + * Airy Functions and Derivatives:: + * Bessel Functions:: + * Clausen Functions:: + * Coulomb Functions:: + * Coupling Coefficients:: + * Dawson Function:: + * Debye Functions:: + * Dilogarithm:: + * Elementary Operations:: + * Elliptic Integrals:: + * Elliptic Functions (Jacobi):: + * Error Functions:: + * Exponential Functions:: + * Exponential Integrals:: + * Fermi-Dirac Function:: + * Gamma Function:: + * Gegenbauer Functions:: + * Hypergeometric Functions:: + * Laguerre Functions:: + * Lambert W Functions:: + * Legendre Functions and Spherical Harmonics:: + * Logarithm and Related Functions:: + * Power Function:: + * Psi (Digamma) Function:: + * Synchrotron Functions:: + * Transport Functions:: + * Trigonometric Functions:: + * Zeta Functions:: + * Special Functions Examples:: + * Special Functions References and Further Reading:: + +  + File: gsl-ref.info, Node: Special Function Usage, Next: The gsl_sf_result struct, Up: Special Functions + + Usage + ===== + + The special functions are available in two calling conventions, a + "natural form" which returns the numerical value of the function and an + "error-handling form" which returns an error code. The two types of + function provide alternative ways of accessing the same underlying code. + + The "natural form" returns only the value of the function and can be + used directly in mathematical expressions.. For example, the following + function call will compute the value of the Bessel function J_0(x), + + double y = gsl_sf_bessel_J0 (x); + + There is no way to access an error code or to estimate the error using + this method. To allow access to this information the alternative + error-handling form stores the value and error in a modifiable argument, + + gsl_sf_result result; + int status = gsl_sf_bessel_J0_e (x, &result); + + The error-handling functions have the suffix `_e'. The returned status + value indicates error conditions such as overflow, underflow or loss of + precision. If there are no errors the error-handling functions return + `GSL_SUCCESS'. + +  + File: gsl-ref.info, Node: The gsl_sf_result struct, Next: Special Function Modes, Prev: Special Function Usage, Up: Special Functions + + The gsl_sf_result struct + ======================== + + The error handling form of the special functions always calculate an + error estimate along with the value of the result. Therefore, + structures are provided for amalgamating a value and error estimate. + These structures are declared in the header file `gsl_sf_result.h'. + + The `gsl_sf_result' struct contains value and error fields. + + typedef struct + { + double val; + double err; + } gsl_sf_result; + + The field VAL contains the value and the field ERR contains an estimate + of the absolute error in the value. + + In some cases, an overflow or underflow can be detected and handled + by a function. In this case, it may be possible to return a scaling + exponent as well as an error/value pair in order to save the result from + exceeding the dynamic range of the built-in types. The + `gsl_sf_result_e10' struct contains value and error fields as well as + an exponent field such that the actual result is obtained as `result * + 10^(e10)'. + + typedef struct + { + double val; + double err; + int e10; + } gsl_sf_result_e10; + +  + File: gsl-ref.info, Node: Special Function Modes, Next: Airy Functions and Derivatives, Prev: The gsl_sf_result struct, Up: Special Functions + + Modes + ===== + + The goal of the library is to achieve double precision accuracy wherever + possible. However the cost of evaluating some special functions to + double precision can be significant, particularly where very high order + terms are required. In these cases a `mode' argument allows the + accuracy of the function to be reduced in order to improve performance. + The following precision levels are available for the mode argument, + + `GSL_PREC_DOUBLE' + Double-precision, a relative accuracy of approximately 2 * 10^-16. + + `GSL_PREC_SINGLE' + Single-precision, a relative accuracy of approximately 10^-7. + + `GSL_PREC_APPROX' + Approximate values, a relative accuracy of approximately 5 * 10^-4. + + The approximate mode provides the fastest evaluation at the lowest + accuracy. + +  + File: gsl-ref.info, Node: Airy Functions and Derivatives, Next: Bessel Functions, Prev: Special Function Modes, Up: Special Functions + + Airy Functions and Derivatives + ============================== + + The Airy functions Ai(x) and Bi(x) are defined by the integral + representations, + + Ai(x) = (1/\pi) \int_0^\infty \cos((1/3) t^3 + xt) dt + Bi(x) = (1/\pi) \int_0^\infty (e^(-(1/3) t^3) + \sin((1/3) t^3 + xt)) dt + + For further information see Abramowitz & Stegun, Section 10.4. The Airy + functions are defined in the header file `gsl_sf_airy.h'. + + * Menu: + + * Airy Functions:: + * Derivatives of Airy Functions:: + * Zeros of Airy Functions:: + * Zeros of Derivatives of Airy Functions:: + +  + File: gsl-ref.info, Node: Airy Functions, Next: Derivatives of Airy Functions, Up: Airy Functions and Derivatives + + Airy Functions + -------------- + + - Function: double gsl_sf_airy_Ai (double X, gsl_mode_t MODE) + - Function: int gsl_sf_airy_Ai_e (double X, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute the Airy function Ai(x) with an accuracy + specified by MODE. + + - Function: double gsl_sf_airy_Bi (double X, gsl_mode_t MODE) + - Function: int gsl_sf_airy_Bi_e (double X, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute the Airy function Bi(x) with an accuracy + specified by MODE. + + - Function: double gsl_sf_airy_Ai_scaled (double X, gsl_mode_t MODE) + - Function: int gsl_sf_airy_Ai_scaled_e (double X, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute a scaled version of the Airy function + S_A(x) Ai(x). For x>0 the scaling factor S_A(x) is \exp(+(2/3) + x^(3/2)), and is 1 for x<0. + + - Function: double gsl_sf_airy_Bi_scaled (double X, gsl_mode_t MODE) + - Function: int gsl_sf_airy_Bi_scaled_e (double X, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute a scaled version of the Airy function + S_B(x) Bi(x). For x>0 the scaling factor S_B(x) is exp(-(2/3) + x^(3/2)), and is 1 for x<0. + +  + File: gsl-ref.info, Node: Derivatives of Airy Functions, Next: Zeros of Airy Functions, Prev: Airy Functions, Up: Airy Functions and Derivatives + + Derivatives of Airy Functions + ----------------------------- + + - Function: double gsl_sf_airy_Ai_deriv (double X, gsl_mode_t MODE) + - Function: int gsl_sf_airy_Ai_deriv_e (double X, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute the Airy function derivative Ai'(x) with an + accuracy specified by MODE. + + - Function: double gsl_sf_airy_Bi_deriv (double X, gsl_mode_t MODE) + - Function: int gsl_sf_airy_Bi_deriv_e (double X, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute the Airy function derivative Bi'(x) with an + accuracy specified by MODE. + + - Function: double gsl_sf_airy_Ai_deriv_scaled (double X, gsl_mode_t + MODE) + - Function: int gsl_sf_airy_Ai_deriv_scaled_e (double X, gsl_mode_t + MODE, gsl_sf_result * RESULT) + These routines compute the derivative of the scaled Airy function + S_A(x) Ai(x). + + - Function: double gsl_sf_airy_Bi_deriv_scaled (double X, gsl_mode_t + MODE) + - Function: int gsl_sf_airy_Bi_deriv_scaled_e (double X, gsl_mode_t + MODE, gsl_sf_result * RESULT) + These routines compute the derivative of the scaled Airy function + S_B(x) Bi(x). + +  + File: gsl-ref.info, Node: Zeros of Airy Functions, Next: Zeros of Derivatives of Airy Functions, Prev: Derivatives of Airy Functions, Up: Airy Functions and Derivatives + + Zeros of Airy Functions + ----------------------- + + - Function: double gsl_sf_airy_zero_Ai (unsigned int S) + - Function: int gsl_sf_airy_zero_Ai_e (unsigned int S, gsl_sf_result * + RESULT) + These routines compute the location of the S-th zero of the Airy + function Ai(x). + + - Function: double gsl_sf_airy_zero_Bi (unsigned int S) + - Function: int gsl_sf_airy_zero_Bi_e (unsigned int S, gsl_sf_result * + RESULT) + These routines compute the location of the S-th zero of the Airy + function Bi(x). + +  + File: gsl-ref.info, Node: Zeros of Derivatives of Airy Functions, Prev: Zeros of Airy Functions, Up: Airy Functions and Derivatives + + Zeros of Derivatives of Airy Functions + -------------------------------------- + + - Function: double gsl_sf_airy_zero_Ai_deriv (unsigned int S) + - Function: int gsl_sf_airy_zero_Ai_deriv_e (unsigned int S, + gsl_sf_result * RESULT) + These routines compute the location of the S-th zero of the Airy + function derivative Ai'(x). + + - Function: double gsl_sf_airy_zero_Bi_deriv (unsigned int S) + - Function: int gsl_sf_airy_zero_Bi_deriv_e (unsigned int S, + gsl_sf_result * RESULT) + These routines compute the location of the S-th zero of the Airy + function derivative Bi'(x). + +  + File: gsl-ref.info, Node: Bessel Functions, Next: Clausen Functions, Prev: Airy Functions and Derivatives, Up: Special Functions + + Bessel Functions + ================ + + The routines described in this section compute the Cylindrical Bessel + functions J_n(x), Y_n(x), Modified cylindrical Bessel functions I_n(x), + K_n(x), Spherical Bessel functions j_l(x), y_l(x), and Modified + Spherical Bessel functions i_l(x), k_l(x). For more information see + Abramowitz & Stegun, Chapters 9 and 10. The Bessel functions are + defined in the header file `gsl_sf_bessel.h'. + + * Menu: + + * Regular Cylindrical Bessel Functions:: + * Irregular Cylindrical Bessel Functions:: + * Regular Modified Cylindrical Bessel Functions:: + * Irregular Modified Cylindrical Bessel Functions:: + * Regular Spherical Bessel Functions:: + * Irregular Spherical Bessel Functions:: + * Regular Modified Spherical Bessel Functions:: + * Irregular Modified Spherical Bessel Functions:: + * Regular Bessel Function - Fractional Order:: + * Irregular Bessel Functions - Fractional Order:: + * Regular Modified Bessel Functions - Fractional Order:: + * Irregular Modified Bessel Functions - Fractional Order:: + * Zeros of Regular Bessel Functions:: + +  + File: gsl-ref.info, Node: Regular Cylindrical Bessel Functions, Next: Irregular Cylindrical Bessel Functions, Up: Bessel Functions + + Regular Cylindrical Bessel Functions + ------------------------------------ + + - Function: double gsl_sf_bessel_J0 (double X) + - Function: int gsl_sf_bessel_J0_e (double X, gsl_sf_result * RESULT) + These routines compute the regular cylindrical Bessel function of + zeroth order, J_0(x). + + - Function: double gsl_sf_bessel_J1 (double X) + - Function: int gsl_sf_bessel_J1_e (double X, gsl_sf_result * RESULT) + These routines compute the regular cylindrical Bessel function of + first order, J_1(x). + + - Function: double gsl_sf_bessel_Jn (int N, double X) + - Function: int gsl_sf_bessel_Jn_e (int N, double X, gsl_sf_result * + RESULT) + These routines compute the regular cylindrical Bessel function of + order N, J_n(x). + + - Function: int gsl_sf_bessel_Jn_array (int NMIN, int NMAX, double X, + double RESULT_ARRAY[]) + This routine computes the values of the regular cylindrical Bessel + functions J_n(x) for n from NMIN to NMAX inclusive, storing the + results in the array RESULT_ARRAY. The values are computed using + recurrence relations, for efficiency, and therefore may differ + slightly from the exact values. + +  + File: gsl-ref.info, Node: Irregular Cylindrical Bessel Functions, Next: Regular Modified Cylindrical Bessel Functions, Prev: Regular Cylindrical Bessel Functions, Up: Bessel Functions + + Irregular Cylindrical Bessel Functions + -------------------------------------- + + - Function: double gsl_sf_bessel_Y0 (double X) + - Function: int gsl_sf_bessel_Y0_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular cylindrical Bessel function + of zeroth order, Y_0(x), for x>0. + + - Function: double gsl_sf_bessel_Y1 (double X) + - Function: int gsl_sf_bessel_Y1_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular cylindrical Bessel function + of first order, Y_1(x), for x>0. + + - Function: double gsl_sf_bessel_Yn (int N,double X) + - Function: int gsl_sf_bessel_Yn_e (int N,double X, gsl_sf_result * + RESULT) + These routines compute the irregular cylindrical Bessel function of + order N, Y_n(x), for x>0. + + - Function: int gsl_sf_bessel_Yn_array (int NMIN, int NMAX, double X, + double RESULT_ARRAY[]) + This routine computes the values of the irregular cylindrical + Bessel functions Y_n(x) for n from NMIN to NMAX inclusive, storing + the results in the array RESULT_ARRAY. The domain of the function + is x>0. The values are computed using recurrence relations, for + efficiency, and therefore may differ slightly from the exact + values. + +  + File: gsl-ref.info, Node: Regular Modified Cylindrical Bessel Functions, Next: Irregular Modified Cylindrical Bessel Functions, Prev: Irregular Cylindrical Bessel Functions, Up: Bessel Functions + + Regular Modified Cylindrical Bessel Functions + --------------------------------------------- + + - Function: double gsl_sf_bessel_I0 (double X) + - Function: int gsl_sf_bessel_I0_e (double X, gsl_sf_result * RESULT) + These routines compute the regular modified cylindrical Bessel + function of zeroth order, I_0(x). + + - Function: double gsl_sf_bessel_I1 (double X) + - Function: int gsl_sf_bessel_I1_e (double X, gsl_sf_result * RESULT) + These routines compute the regular modified cylindrical Bessel + function of first order, I_1(x). + + - Function: double gsl_sf_bessel_In (int N, double X) + - Function: int gsl_sf_bessel_In_e (int N, double X, gsl_sf_result * + RESULT) + These routines compute the regular modified cylindrical Bessel + function of order N, I_n(x). + + - Function: int gsl_sf_bessel_In_array (int NMIN, int NMAX, double X, + double RESULT_ARRAY[]) + This routine computes the values of the regular modified + cylindrical Bessel functions I_n(x) for n from NMIN to NMAX + inclusive, storing the results in the array RESULT_ARRAY. The + start of the range NMIN must be positive or zero. The values are + computed using recurrence relations, for efficiency, and therefore + may differ slightly from the exact values. + + - Function: double gsl_sf_bessel_I0_scaled (double X) + - Function: int gsl_sf_bessel_I0_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled regular modified cylindrical + Bessel function of zeroth order \exp(-|x|) I_0(x). + + - Function: double gsl_sf_bessel_I1_scaled (double X) + - Function: int gsl_sf_bessel_I1_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled regular modified cylindrical + Bessel function of first order \exp(-|x|) I_1(x). + + - Function: double gsl_sf_bessel_In_scaled (int N, double X) + - Function: int gsl_sf_bessel_In_scaled_e (int N, double X, + gsl_sf_result * RESULT) + These routines compute the scaled regular modified cylindrical + Bessel function of order N, \exp(-|x|) I_n(x) + + - Function: int gsl_sf_bessel_In_scaled_array (int NMIN, int NMAX, + double X, double RESULT_ARRAY[]) + This routine computes the values of the scaled regular cylindrical + Bessel functions \exp(-|x|) I_n(x) for n from NMIN to NMAX + inclusive, storing the results in the array RESULT_ARRAY. The + start of the range NMIN must be positive or zero. The values are + computed using recurrence relations, for efficiency, and therefore + may differ slightly from the exact values. + +  + File: gsl-ref.info, Node: Irregular Modified Cylindrical Bessel Functions, Next: Regular Spherical Bessel Functions, Prev: Regular Modified Cylindrical Bessel Functions, Up: Bessel Functions + + Irregular Modified Cylindrical Bessel Functions + ----------------------------------------------- + + - Function: double gsl_sf_bessel_K0 (double X) + - Function: int gsl_sf_bessel_K0_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular modified cylindrical Bessel + function of zeroth order, K_0(x), for x > 0. + + - Function: double gsl_sf_bessel_K1 (double X) + - Function: int gsl_sf_bessel_K1_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular modified cylindrical Bessel + function of first order, K_1(x), for x > 0. + + - Function: double gsl_sf_bessel_Kn (int N, double X) + - Function: int gsl_sf_bessel_Kn_e (int N, double X, gsl_sf_result * + RESULT) + These routines compute the irregular modified cylindrical Bessel + function of order N, K_n(x), for x > 0. + + - Function: int gsl_sf_bessel_Kn_array (int NMIN, int NMAX, double X, + double RESULT_ARRAY[]) + This routine computes the values of the irregular modified + cylindrical Bessel functions K_n(x) for n from NMIN to NMAX + inclusive, storing the results in the array RESULT_ARRAY. The + start of the range NMIN must be positive or zero. The domain of + the function is x>0. The values are computed using recurrence + relations, for efficiency, and therefore may differ slightly from + the exact values. + + - Function: double gsl_sf_bessel_K0_scaled (double X) + - Function: int gsl_sf_bessel_K0_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled irregular modified cylindrical + Bessel function of zeroth order \exp(x) K_0(x) for x>0. + + - Function: double gsl_sf_bessel_K1_scaled (double X) + - Function: int gsl_sf_bessel_K1_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled irregular modified cylindrical + Bessel function of first order \exp(x) K_1(x) for x>0. + + - Function: double gsl_sf_bessel_Kn_scaled (int N, double X) + - Function: int gsl_sf_bessel_Kn_scaled_e (int N, double X, + gsl_sf_result * RESULT) + These routines compute the scaled irregular modified cylindrical + Bessel function of order N, \exp(x) K_n(x), for x>0. + + - Function: int gsl_sf_bessel_Kn_scaled_array (int NMIN, int NMAX, + double X, double RESULT_ARRAY[]) + This routine computes the values of the scaled irregular + cylindrical Bessel functions \exp(x) K_n(x) for n from NMIN to + NMAX inclusive, storing the results in the array RESULT_ARRAY. The + start of the range NMIN must be positive or zero. The domain of + the function is x>0. The values are computed using recurrence + relations, for efficiency, and therefore may differ slightly from + the exact values. + +  + File: gsl-ref.info, Node: Regular Spherical Bessel Functions, Next: Irregular Spherical Bessel Functions, Prev: Irregular Modified Cylindrical Bessel Functions, Up: Bessel Functions + + Regular Spherical Bessel Functions + ---------------------------------- + + - Function: double gsl_sf_bessel_j0 (double X) + - Function: int gsl_sf_bessel_j0_e (double X, gsl_sf_result * RESULT) + These routines compute the regular spherical Bessel function of + zeroth order, j_0(x) = \sin(x)/x. + + - Function: double gsl_sf_bessel_j1 (double X) + - Function: int gsl_sf_bessel_j1_e (double X, gsl_sf_result * RESULT) + These routines compute the regular spherical Bessel function of + first order, j_1(x) = (\sin(x)/x - \cos(x))/x. + + - Function: double gsl_sf_bessel_j2 (double X) + - Function: int gsl_sf_bessel_j2_e (double X, gsl_sf_result * RESULT) + These routines compute the regular spherical Bessel function of + second order, j_2(x) = ((3/x^2 - 1)\sin(x) - 3\cos(x)/x)/x. + + - Function: double gsl_sf_bessel_jl (int L, double X) + - Function: int gsl_sf_bessel_jl_e (int L, double X, gsl_sf_result * + RESULT) + These routines compute the regular spherical Bessel function of + order L, j_l(x), for l >= 0 and x >= 0. + + - Function: int gsl_sf_bessel_jl_array (int LMAX, double X, double + RESULT_ARRAY[]) + This routine computes the values of the regular spherical Bessel + functions j_l(x) for l from 0 to LMAX inclusive for lmax >= 0 and + x >= 0, storing the results in the array RESULT_ARRAY. The values + are computed using recurrence relations, for efficiency, and + therefore may differ slightly from the exact values. + + - Function: int gsl_sf_bessel_jl_steed_array (int LMAX, double X, + double * JL_X_ARRAY) + This routine uses Steed's method to compute the values of the + regular spherical Bessel functions j_l(x) for l from 0 to LMAX + inclusive for lmax >= 0 and x >= 0, storing the results in the + array RESULT_ARRAY. The Steed/Barnett algorithm is described in + `Comp. Phys. Comm.' 21, 297 (1981). Steed's method is more stable + than the recurrence used in the other functions but is also slower. + +  + File: gsl-ref.info, Node: Irregular Spherical Bessel Functions, Next: Regular Modified Spherical Bessel Functions, Prev: Regular Spherical Bessel Functions, Up: Bessel Functions + + Irregular Spherical Bessel Functions + ------------------------------------ + + - Function: double gsl_sf_bessel_y0 (double X) + - Function: int gsl_sf_bessel_y0_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular spherical Bessel function of + zeroth order, y_0(x) = -\cos(x)/x. + + - Function: double gsl_sf_bessel_y1 (double X) + - Function: int gsl_sf_bessel_y1_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular spherical Bessel function of + first order, y_1(x) = -(\cos(x)/x + \sin(x))/x. + + - Function: double gsl_sf_bessel_y2 (double X) + - Function: int gsl_sf_bessel_y2_e (double X, gsl_sf_result * RESULT) + These routines compute the irregular spherical Bessel function of + second order, y_2(x) = (-3/x^3 + 1/x)\cos(x) - (3/x^2)\sin(x). + + - Function: double gsl_sf_bessel_yl (int L, double X) + - Function: int gsl_sf_bessel_yl_e (int L, double X, gsl_sf_result * + RESULT) + These routines compute the irregular spherical Bessel function of + order L, y_l(x), for l >= 0. + + - Function: int gsl_sf_bessel_yl_array (int LMAX, double X, double + RESULT_ARRAY[]) + This routine computes the values of the irregular spherical Bessel + functions y_l(x) for l from 0 to LMAX inclusive for lmax >= 0, + storing the results in the array RESULT_ARRAY. The values are + computed using recurrence relations, for efficiency, and therefore + may differ slightly from the exact values. + +  + File: gsl-ref.info, Node: Regular Modified Spherical Bessel Functions, Next: Irregular Modified Spherical Bessel Functions, Prev: Irregular Spherical Bessel Functions, Up: Bessel Functions + + Regular Modified Spherical Bessel Functions + ------------------------------------------- + + The regular modified spherical Bessel functions i_l(x) are related to + the modified Bessel functions of fractional order, i_l(x) = + \sqrt{\pi/(2x)} I_{l+1/2}(x) + + - Function: double gsl_sf_bessel_i0_scaled (double X) + - Function: int gsl_sf_bessel_i0_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled regular modified spherical Bessel + function of zeroth order, \exp(-|x|) i_0(x). + + - Function: double gsl_sf_bessel_i1_scaled (double X) + - Function: int gsl_sf_bessel_i1_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled regular modified spherical Bessel + function of first order, \exp(-|x|) i_1(x). + + - Function: double gsl_sf_bessel_i2_scaled (double X) + - Function: int gsl_sf_bessel_i2_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled regular modified spherical Bessel + function of second order, \exp(-|x|) i_2(x) + + - Function: double gsl_sf_bessel_il_scaled (int L, double X) + - Function: int gsl_sf_bessel_il_scaled_e (int L, double X, + gsl_sf_result * RESULT) + These routines compute the scaled regular modified spherical Bessel + function of order L, \exp(-|x|) i_l(x) + + - Function: int gsl_sf_bessel_il_scaled_array (int LMAX, double X, + double RESULT_ARRAY[]) + This routine computes the values of the scaled regular modified + cylindrical Bessel functions \exp(-|x|) i_l(x) for l from 0 to + LMAX inclusive for lmax >= 0, storing the results in the array + RESULT_ARRAY. The values are computed using recurrence relations, + for efficiency, and therefore may differ slightly from the exact + values. + +  + File: gsl-ref.info, Node: Irregular Modified Spherical Bessel Functions, Next: Regular Bessel Function - Fractional Order, Prev: Regular Modified Spherical Bessel Functions, Up: Bessel Functions + + Irregular Modified Spherical Bessel Functions + --------------------------------------------- + + The irregular modified spherical Bessel functions k_l(x) are related to + the irregular modified Bessel functions of fractional order, k_l(x) = + \sqrt{\pi/(2x)} K_{l+1/2}(x). + + - Function: double gsl_sf_bessel_k0_scaled (double X) + - Function: int gsl_sf_bessel_k0_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled irregular modified spherical + Bessel function of zeroth order, \exp(x) k_0(x), for x>0. + + - Function: double gsl_sf_bessel_k1_scaled (double X) + - Function: int gsl_sf_bessel_k1_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled irregular modified spherical + Bessel function of first order, \exp(x) k_1(x), for x>0. + + - Function: double gsl_sf_bessel_k2_scaled (double X) + - Function: int gsl_sf_bessel_k2_scaled_e (double X, gsl_sf_result * + RESULT) + These routines compute the scaled irregular modified spherical + Bessel function of second order, \exp(x) k_2(x), for x>0. + + - Function: double gsl_sf_bessel_kl_scaled (int L, double X) + - Function: int gsl_sf_bessel_kl_scaled_e (int L, double X, + gsl_sf_result * RESULT) + These routines compute the scaled irregular modified spherical + Bessel function of order L, \exp(x) k_l(x), for x>0. + + - Function: int gsl_sf_bessel_kl_scaled_array (int LMAX, double X, + double RESULT_ARRAY[]) + This routine computes the values of the scaled irregular modified + spherical Bessel functions \exp(x) k_l(x) for l from 0 to LMAX + inclusive for lmax >= 0 and x>0, storing the results in the array + RESULT_ARRAY. The values are computed using recurrence relations, + for efficiency, and therefore may differ slightly from the exact + values. + +  + File: gsl-ref.info, Node: Regular Bessel Function - Fractional Order, Next: Irregular Bessel Functions - Fractional Order, Prev: Irregular Modified Spherical Bessel Functions, Up: Bessel Functions + + Regular Bessel Function - Fractional Order + ------------------------------------------ + + - Function: double gsl_sf_bessel_Jnu (double NU, double X) + - Function: int gsl_sf_bessel_Jnu_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the regular cylindrical Bessel function of + fractional order nu, J_\nu(x). + + - Function: int gsl_sf_bessel_sequence_Jnu_e (double NU, gsl_mode_t + MODE, size_t SIZE, double V[]) + This function computes the regular cylindrical Bessel function of + fractional order \nu, J_\nu(x), evaluated at a series of x values. + The array V of length SIZE contains the x values. They are + assumed to be strictly ordered and positive. The array is + over-written with the values of J_\nu(x_i). + +  + File: gsl-ref.info, Node: Irregular Bessel Functions - Fractional Order, Next: Regular Modified Bessel Functions - Fractional Order, Prev: Regular Bessel Function - Fractional Order, Up: Bessel Functions + + Irregular Bessel Functions - Fractional Order + --------------------------------------------- + + - Function: double gsl_sf_bessel_Ynu (double NU, double X) + - Function: int gsl_sf_bessel_Ynu_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the irregular cylindrical Bessel function of + fractional order nu, Y_\nu(x). + +  + File: gsl-ref.info, Node: Regular Modified Bessel Functions - Fractional Order, Next: Irregular Modified Bessel Functions - Fractional Order, Prev: Irregular Bessel Functions - Fractional Order, Up: Bessel Functions + + Regular Modified Bessel Functions - Fractional Order + ---------------------------------------------------- + + - Function: double gsl_sf_bessel_Inu (double NU, double X) + - Function: int gsl_sf_bessel_Inu_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the regular modified Bessel function of + fractional order nu, I_\nu(x) for x>0, \nu>0. + + - Function: double gsl_sf_bessel_Inu_scaled (double NU, double X) + - Function: int gsl_sf_bessel_Inu_scaled_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the scaled regular modified Bessel function + of fractional order nu, \exp(-|x|)I_\nu(x) for x>0, \nu>0. + +  + File: gsl-ref.info, Node: Irregular Modified Bessel Functions - Fractional Order, Next: Zeros of Regular Bessel Functions, Prev: Regular Modified Bessel Functions - Fractional Order, Up: Bessel Functions + + Irregular Modified Bessel Functions - Fractional Order + ------------------------------------------------------ + + - Function: double gsl_sf_bessel_Knu (double NU, double X) + - Function: int gsl_sf_bessel_Knu_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the irregular modified Bessel function of + fractional order nu, K_\nu(x) for x>0, \nu>0. + + - Function: double gsl_sf_bessel_lnKnu (double NU, double X) + - Function: int gsl_sf_bessel_lnKnu_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the logarithm of the irregular modified + Bessel function of fractional order nu, \ln(K_\nu(x)) for x>0, + \nu>0. + + - Function: double gsl_sf_bessel_Knu_scaled (double NU, double X) + - Function: int gsl_sf_bessel_Knu_scaled_e (double NU, double X, + gsl_sf_result * RESULT) + These routines compute the scaled irregular modified Bessel + function of fractional order nu, \exp(+|x|) K_\nu(x) for x>0, + \nu>0. + +  + File: gsl-ref.info, Node: Zeros of Regular Bessel Functions, Prev: Irregular Modified Bessel Functions - Fractional Order, Up: Bessel Functions + + Zeros of Regular Bessel Functions + --------------------------------- + + - Function: double gsl_sf_bessel_zero_J0 (unsigned int S) + - Function: int gsl_sf_bessel_zero_J0_e (unsigned int S, gsl_sf_result + * RESULT) + These routines compute the location of the S-th positive zero of + the Bessel function J_0(x). + + - Function: double gsl_sf_bessel_zero_J1 (unsigned int S) + - Function: int gsl_sf_bessel_zero_J1_e (unsigned int S, gsl_sf_result + * RESULT) + These routines compute the location of the S-th positive zero of + the Bessel function J_1(x). + + - Function: double gsl_sf_bessel_zero_Jnu (double NU, unsigned int S) + - Function: int gsl_sf_bessel_zero_Jnu_e (double NU, unsigned int S, + gsl_sf_result * RESULT) + These routines compute the location of the S-th positive zero of + the Bessel function J_\nu(x). The current implementation does not + support negative values of NU. + +  + File: gsl-ref.info, Node: Clausen Functions, Next: Coulomb Functions, Prev: Bessel Functions, Up: Special Functions + + Clausen Functions + ================= + + The Clausen function is defined by the following integral, + Cl_2(x) = - \int_0^x dt \log(2 \sin(t/2)) + + It is related to the dilogarithm by Cl_2(\theta) = \Im Li_2(\exp(i + \theta)). The Clausen functions are declared in the header file + `gsl_sf_clausen.h'. + + - Function: double gsl_sf_clausen (double X) + - Function: int gsl_sf_clausen_e (double X, gsl_sf_result * RESULT) + These routines compute the Clausen integral Cl_2(x). + +  + File: gsl-ref.info, Node: Coulomb Functions, Next: Coupling Coefficients, Prev: Clausen Functions, Up: Special Functions + + Coulomb Functions + ================= + + The Coulomb functions are declared in the header file + `gsl_sf_coulomb.h'. Both bound state and scattering solutions are + available. + + * Menu: + + * Normalized Hydrogenic Bound States:: + * Coulomb Wave Functions:: + * Coulomb Wave Function Normalization Constant:: + +  + File: gsl-ref.info, Node: Normalized Hydrogenic Bound States, Next: Coulomb Wave Functions, Up: Coulomb Functions + + Normalized Hydrogenic Bound States + ---------------------------------- + + - Function: double gsl_sf_hydrogenicR_1 (double Z, double R) + - Function: int gsl_sf_hydrogenicR_1_e (double Z, double R, + gsl_sf_result * RESULT) + These routines compute the lowest-order normalized hydrogenic bound + state radial wavefunction R_1 := 2Z \sqrt{Z} \exp(-Z r). + + - Function: double gsl_sf_hydrogenicR (int N, int L, double Z, double + R) + - Function: int gsl_sf_hydrogenicR_e (int N, int L, double Z, double + R, gsl_sf_result * RESULT) + These routines compute the N-th normalized hydrogenic bound state + radial wavefunction, + R_n := 2 (Z^{3/2}/n^2) \sqrt{(n-l-1)!/(n+l)!} \exp(-Z r/n) (2Z/n)^l + L^{2l+1}_{n-l-1}(2Z/n r). + + The normalization is chosen such that the wavefunction \psi is + given by \psi(n,l,r) = R_n Y_{lm}. + +  + File: gsl-ref.info, Node: Coulomb Wave Functions, Next: Coulomb Wave Function Normalization Constant, Prev: Normalized Hydrogenic Bound States, Up: Coulomb Functions + + Coulomb Wave Functions + ---------------------- + + The Coulomb wave functions F_L(\eta,x), G_L(\eta,x) are described in + Abramowitz & Stegun, Chapter 14. Because there can be a large dynamic + range of values for these functions, overflows are handled gracefully. + If an overflow occurs, `GSL_EOVRFLW' is signalled and exponent(s) are + returned through the modifiable parameters EXP_F, EXP_G. The full + solution can be reconstructed from the following relations, + + F_L(eta,x) = fc[k_L] * exp(exp_F) + G_L(eta,x) = gc[k_L] * exp(exp_G) + + F_L'(eta,x) = fcp[k_L] * exp(exp_F) + G_L'(eta,x) = gcp[k_L] * exp(exp_G) + + - Function: int gsl_sf_coulomb_wave_FG_e (double ETA, double X, double + L_F, int K, gsl_sf_result * F, gsl_sf_result * FP, + gsl_sf_result * G, gsl_sf_result * GP, double * EXP_F, double + * EXP_G) + This function computes the coulomb wave functions F_L(\eta,x), + G_{L-k}(\eta,x) and their derivatives with respect to x, + F'_L(\eta,x) G'_{L-k}(\eta,x). The parameters are restricted to L, + L-k > -1/2, x > 0 and integer k. Note that L itself is not + restricted to being an integer. The results are stored in the + parameters F, G for the function values and FP, GP for the + derivative values. If an overflow occurs, `GSL_EOVRFLW' is + returned and scaling exponents are stored in the modifiable + parameters EXP_F, EXP_G. + + - Function: int gsl_sf_coulomb_wave_F_array (double L_MIN, int KMAX, + double ETA, double X, double FC_ARRAY[], double * F_EXPONENT) + This function computes the function F_L(eta,x) for L = Lmin \dots + Lmin + kmax storing the results in FC_ARRAY. In the case of + overflow the exponent is stored in F_EXPONENT. + + - Function: int gsl_sf_coulomb_wave_FG_array (double L_MIN, int KMAX, + double ETA, double X, double FC_ARRAY[], double GC_ARRAY[], + double * F_EXPONENT, double * G_EXPONENT) + This function computes the functions F_L(\eta,x), G_L(\eta,x) for + L = Lmin \dots Lmin + kmax storing the results in FC_ARRAY and + GC_ARRAY. In the case of overflow the exponents are stored in + F_EXPONENT and G_EXPONENT. + + - Function: int gsl_sf_coulomb_wave_FGp_array (double L_MIN, int KMAX, + double ETA, double X, double FC_ARRAY[], double FCP_ARRAY[], + double GC_ARRAY[], double GCP_ARRAY[], double * F_EXPONENT, + double * G_EXPONENT) + This function computes the functions F_L(\eta,x), G_L(\eta,x) and + their derivatives F'_L(\eta,x), G'_L(\eta,x) for L = Lmin \dots + Lmin + kmax storing the results in FC_ARRAY, GC_ARRAY, FCP_ARRAY + and GCP_ARRAY. In the case of overflow the exponents are stored + in F_EXPONENT and G_EXPONENT. + + - Function: int gsl_sf_coulomb_wave_sphF_array (double L_MIN, int + KMAX, double ETA, double X, double FC_ARRAY[], double + F_EXPONENT[]) + This function computes the Coulomb wave function divided by the + argument F_L(\eta, x)/x for L = Lmin \dots Lmin + kmax, storing the + results in FC_ARRAY. In the case of overflow the exponent is + stored in F_EXPONENT. This function reduces to spherical Bessel + functions in the limit \eta \to 0. + +  + File: gsl-ref.info, Node: Coulomb Wave Function Normalization Constant, Prev: Coulomb Wave Functions, Up: Coulomb Functions + + Coulomb Wave Function Normalization Constant + -------------------------------------------- + + The Coulomb wave function normalization constant is defined in + Abramowitz 14.1.7. + + - Function: int gsl_sf_coulomb_CL_e (double L, double ETA, + gsl_sf_result * RESULT) + This function computes the Coulomb wave function normalization + constant C_L(\eta) for L > -1. + + - Function: int gsl_sf_coulomb_CL_array (double LMIN, int KMAX, double + ETA, double CL[]) + This function computes the coulomb wave function normalization + constant C_L(\eta) for L = Lmin \dots Lmin + kmax, Lmin > -1. + +  + File: gsl-ref.info, Node: Coupling Coefficients, Next: Dawson Function, Prev: Coulomb Functions, Up: Special Functions + + Coupling Coefficients + ===================== + + The Wigner 3-j, 6-j and 9-j symbols give the coupling coefficients for + combined angular momentum vectors. Since the arguments of the standard + coupling coefficient functions are integer or half-integer, the + arguments of the following functions are, by convention, integers equal + to twice the actual spin value. For information on the 3-j coefficients + see Abramowitz & Stegun, Section 27.9. The functions described in this + section are declared in the header file `gsl_sf_coupling.h'. + + * Menu: + + * 3-j Symbols:: + * 6-j Symbols:: + * 9-j Symbols:: + +  + File: gsl-ref.info, Node: 3-j Symbols, Next: 6-j Symbols, Up: Coupling Coefficients + + 3-j Symbols + ----------- + + - Function: double gsl_sf_coupling_3j (int TWO_JA, int TWO_JB, int + TWO_JC, int TWO_MA, int TWO_MB, int TWO_MC) + - Function: int gsl_sf_coupling_3j_e (int TWO_JA, int TWO_JB, int + TWO_JC, int TWO_MA, int TWO_MB, int TWO_MC, gsl_sf_result * + RESULT) + These routines compute the Wigner 3-j coefficient, + + (ja jb jc + ma mb mc) + + where the arguments are given in half-integer units, ja = + TWO_JA/2, ma = TWO_MA/2, etc. + +  + File: gsl-ref.info, Node: 6-j Symbols, Next: 9-j Symbols, Prev: 3-j Symbols, Up: Coupling Coefficients + + 6-j Symbols + ----------- + + - Function: double gsl_sf_coupling_6j (int TWO_JA, int TWO_JB, int + TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF) + - Function: int gsl_sf_coupling_6j_e (int TWO_JA, int TWO_JB, int + TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF, gsl_sf_result * + RESULT) + These routines compute the Wigner 6-j coefficient, + + {ja jb jc + jd je jf} + + where the arguments are given in half-integer units, ja = + TWO_JA/2, ma = TWO_MA/2, etc. + +  + File: gsl-ref.info, Node: 9-j Symbols, Prev: 6-j Symbols, Up: Coupling Coefficients + + 9-j Symbols + ----------- + + - Function: double gsl_sf_coupling_9j (int TWO_JA, int TWO_JB, int + TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF, int TWO_JG, int + TWO_JH, int TWO_JI) + - Function: int gsl_sf_coupling_9j_e (int TWO_JA, int TWO_JB, int + TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF, int TWO_JG, int + TWO_JH, int TWO_JI, gsl_sf_result * RESULT) + These routines compute the Wigner 9-j coefficient, + + {ja jb jc + jd je jf + jg jh ji} + + where the arguments are given in half-integer units, ja = + TWO_JA/2, ma = TWO_MA/2, etc. + +  + File: gsl-ref.info, Node: Dawson Function, Next: Debye Functions, Prev: Coupling Coefficients, Up: Special Functions + + Dawson Function + =============== + + The Dawson integral is defined by \exp(-x^2) \int_0^x dt \exp(t^2). A + table of Dawson's integral can be found in Abramowitz & Stegun, Table + 7.5. The Dawson functions are declared in the header file + `gsl_sf_dawson.h'. + + - Function: double gsl_sf_dawson (double X) + - Function: int gsl_sf_dawson_e (double X, gsl_sf_result * RESULT) + These routines compute the value of Dawson's integral for X. + +  + File: gsl-ref.info, Node: Debye Functions, Next: Dilogarithm, Prev: Dawson Function, Up: Special Functions + + Debye Functions + =============== + + The Debye functions are defined by the integral D_n(x) = n/x^n \int_0^x + dt (t^n/(e^t - 1)). For further information see Abramowitz & Stegun, + Section 27.1. The Debye functions are declared in the header file + `gsl_sf_debye.h'. + + - Function: double gsl_sf_debye_1 (double X) + - Function: int gsl_sf_debye_1_e (double X, gsl_sf_result * RESULT) + These routines compute the first-order Debye function D_1(x) = + (1/x) \int_0^x dt (t/(e^t - 1)). + + - Function: double gsl_sf_debye_2 (double X) + - Function: int gsl_sf_debye_2_e (double X, gsl_sf_result * RESULT) + These routines compute the second-order Debye function D_2(x) = + (2/x^2) \int_0^x dt (t^2/(e^t - 1)). + + - Function: double gsl_sf_debye_3 (double X) + - Function: int gsl_sf_debye_3_e (double X, gsl_sf_result * RESULT) + These routines compute the third-order Debye function D_3(x) = + (3/x^3) \int_0^x dt (t^3/(e^t - 1)). + + - Function: double gsl_sf_debye_4 (double X) + - Function: int gsl_sf_debye_4_e (double X, gsl_sf_result * RESULT) + These routines compute the fourth-order Debye function D_4(x) = + (4/x^4) \int_0^x dt (t^4/(e^t - 1)). + +  + File: gsl-ref.info, Node: Dilogarithm, Next: Elementary Operations, Prev: Debye Functions, Up: Special Functions + + Dilogarithm + =========== + + The functions described in this section are declared in the header file + `gsl_sf_dilog.h'. + + * Menu: + + * Real Argument:: + * Complex Argument:: + +  + File: gsl-ref.info, Node: Real Argument, Next: Complex Argument, Up: Dilogarithm + + Real Argument + ------------- + + - Function: double gsl_sf_dilog (double X) + - Function: int gsl_sf_dilog_e (double X, gsl_sf_result * RESULT) + These routines compute the dilogarithm for a real argument. In + Lewin's notation this is Li_2(x), the real part of the dilogarithm + of a real x. It is defined by the integral representation Li_2(x) + = - \Re \int_0^x ds \log(1-s) / s. Note that \Im(Li_2(x)) = 0 for + x <= 1, and -\pi\log(x) for x > 1. + + +  + File: gsl-ref.info, Node: Complex Argument, Prev: Real Argument, Up: Dilogarithm + + Complex Argument + ---------------- + + - Function: int gsl_sf_complex_dilog_e (double R, double THETA, + gsl_sf_result * RESULT_RE, gsl_sf_result * RESULT_IM) + This function computes the full complex-valued dilogarithm for the + complex argument z = r \exp(i \theta). The real and imaginary + parts of the result are returned in RESULT_RE, RESULT_IM. + +  + File: gsl-ref.info, Node: Elementary Operations, Next: Elliptic Integrals, Prev: Dilogarithm, Up: Special Functions + + Elementary Operations + ===================== + + The following functions allow for the propagation of errors when + combining quantities by multiplication. The functions are declared in + the header file `gsl_sf_elementary.h'. + + - Function: int gsl_sf_multiply_e (double X, double Y, gsl_sf_result * + RESULT) + This function multiplies X and Y storing the product and its + associated error in RESULT. + + - Function: int gsl_sf_multiply_err_e (double X, double DX, double Y, + double DY, gsl_sf_result * RESULT) + This function multiplies X and Y with associated absolute errors + DX and DY. The product xy +/- xy \sqrt((dx/x)^2 +(dy/y)^2) is + stored in RESULT. + +  + File: gsl-ref.info, Node: Elliptic Integrals, Next: Elliptic Functions (Jacobi), Prev: Elementary Operations, Up: Special Functions + + Elliptic Integrals + ================== + + The functions described in this section are declared in the header file + `gsl_sf_ellint.h'. + + * Menu: + + * Definition of Legendre Forms:: + * Definition of Carlson Forms:: + * Legendre Form of Complete Elliptic Integrals:: + * Legendre Form of Incomplete Elliptic Integrals:: + * Carlson Forms:: + +  + File: gsl-ref.info, Node: Definition of Legendre Forms, Next: Definition of Carlson Forms, Up: Elliptic Integrals + + Definition of Legendre Forms + ---------------------------- + + The Legendre forms of elliptic integrals F(\phi,k), E(\phi,k) and + P(\phi,k,n) are defined by, + + F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))) + + E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))) + + P(\phi,k,n) = \int_0^\phi dt 1/((1 + n \sin^2(t))\sqrt(1 - k^2 \sin^2(t))) + + The complete Legendre forms are denoted by K(k) = F(\pi/2, k) and E(k) + = E(\pi/2, k). Further information on the Legendre forms of elliptic + integrals can be found in Abramowitz & Stegun, Chapter 17. The + notation used here is based on Carlson, `Numerische Mathematik' 33 + (1979) 1 and differs slightly from that used by Abramowitz & Stegun. + +  + File: gsl-ref.info, Node: Definition of Carlson Forms, Next: Legendre Form of Complete Elliptic Integrals, Prev: Definition of Legendre Forms, Up: Elliptic Integrals + + Definition of Carlson Forms + --------------------------- + + The Carlson symmetric forms of elliptical integrals RC(x,y), RD(x,y,z), + RF(x,y,z) and RJ(x,y,z,p) are defined by, + + RC(x,y) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1) + + RD(x,y,z) = 3/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2) + + RF(x,y,z) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) + + RJ(x,y,z,p) = 3/2 \int_0^\infty dt + (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1) + +  + File: gsl-ref.info, Node: Legendre Form of Complete Elliptic Integrals, Next: Legendre Form of Incomplete Elliptic Integrals, Prev: Definition of Carlson Forms, Up: Elliptic Integrals + + Legendre Form of Complete Elliptic Integrals + -------------------------------------------- + + - Function: double gsl_sf_ellint_Kcomp (double K, gsl_mode_t MODE) + - Function: int gsl_sf_ellint_Kcomp_e (double K, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute the complete elliptic integral K(k) to the + accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_Ecomp (double K, gsl_mode_t MODE) + - Function: int gsl_sf_ellint_Ecomp_e (double K, gsl_mode_t MODE, + gsl_sf_result * RESULT) + These routines compute the complete elliptic integral E(k) to the + accuracy specified by the mode variable MODE. + +  + File: gsl-ref.info, Node: Legendre Form of Incomplete Elliptic Integrals, Next: Carlson Forms, Prev: Legendre Form of Complete Elliptic Integrals, Up: Elliptic Integrals + + Legendre Form of Incomplete Elliptic Integrals + ---------------------------------------------- + + - Function: double gsl_sf_ellint_F (double PHI, double K, gsl_mode_t + MODE) + - Function: int gsl_sf_ellint_F_e (double PHI, double K, gsl_mode_t + MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral F(\phi,k) + to the accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_E (double PHI, double K, gsl_mode_t + MODE) + - Function: int gsl_sf_ellint_E_e (double PHI, double K, gsl_mode_t + MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral E(\phi,k) + to the accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_P (double PHI, double K, double N, + gsl_mode_t MODE) + - Function: int gsl_sf_ellint_P_e (double PHI, double K, double N, + gsl_mode_t MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral P(\phi,k,n) + to the accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_D (double PHI, double K, double N, + gsl_mode_t MODE) + - Function: int gsl_sf_ellint_D_e (double PHI, double K, double N, + gsl_mode_t MODE, gsl_sf_result * RESULT) + These functions compute the incomplete elliptic integral + D(\phi,k,n) which is defined through the Carlson form RD(x,y,z) by + the following relation, + D(\phi,k,n) = RD (1-\sin^2(\phi), 1-k^2 \sin^2(\phi), 1). + + +  + File: gsl-ref.info, Node: Carlson Forms, Prev: Legendre Form of Incomplete Elliptic Integrals, Up: Elliptic Integrals + + Carlson Forms + ------------- + + - Function: double gsl_sf_ellint_RC (double X, double Y, gsl_mode_t + MODE) + - Function: int gsl_sf_ellint_RC_e (double X, double Y, gsl_mode_t + MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral RC(x,y) to + the accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_RD (double X, double Y, double Z, + gsl_mode_t MODE) + - Function: int gsl_sf_ellint_RD_e (double X, double Y, double Z, + gsl_mode_t MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral RD(x,y,z) + to the accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_RF (double X, double Y, double Z, + gsl_mode_t MODE) + - Function: int gsl_sf_ellint_RF_e (double X, double Y, double Z, + gsl_mode_t MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral RF(x,y,z) + to the accuracy specified by the mode variable MODE. + + - Function: double gsl_sf_ellint_RJ (double X, double Y, double Z, + double P, gsl_mode_t MODE) + - Function: int gsl_sf_ellint_RJ_e (double X, double Y, double Z, + double P, gsl_mode_t MODE, gsl_sf_result * RESULT) + These routines compute the incomplete elliptic integral RJ(x,y,z,p) + to the accuracy specified by the mode variable MODE. + +  + File: gsl-ref.info, Node: Elliptic Functions (Jacobi), Next: Error Functions, Prev: Elliptic Integrals, Up: Special Functions + + Elliptic Functions (Jacobi) + =========================== + + The Jacobian Elliptic functions are defined in Abramowitz & Stegun, + Chapter 16. The functions are declared in the header file + `gsl_sf_elljac.h'. + + - Function: int gsl_sf_elljac_e (double U, double M, double * SN, + double * CN, double * DN) + This function computes the Jacobian elliptic functions sn(u|m), + cn(u|m), dn(u|m) by descending Landen transformations. + +  + File: gsl-ref.info, Node: Error Functions, Next: Exponential Functions, Prev: Elliptic Functions (Jacobi), Up: Special Functions + + Error Functions + =============== + + The error function is described in Abramowitz & Stegun, Chapter 7. The + functions in this section are declared in the header file + `gsl_sf_erf.h'. + + * Menu: + + * Error Function:: + * Complementary Error Function:: + * Log Complementary Error Function:: + * Probability functions:: + +  + File: gsl-ref.info, Node: Error Function, Next: Complementary Error Function, Up: Error Functions + + Error Function + -------------- + + - Function: double gsl_sf_erf (double X) + - Function: int gsl_sf_erf_e (double X, gsl_sf_result * RESULT) + These routines compute the error function erf(x) = (2/\sqrt(\pi)) + \int_0^x dt \exp(-t^2). + + +  + File: gsl-ref.info, Node: Complementary Error Function, Next: Log Complementary Error Function, Prev: Error Function, Up: Error Functions + + Complementary Error Function + ---------------------------- + + - Function: double gsl_sf_erfc (double X) + - Function: int gsl_sf_erfc_e (double X, gsl_sf_result * RESULT) + These routines compute the complementary error function erfc(x) = + 1 - erf(x) = (2/\sqrt(\pi)) \int_x^\infty \exp(-t^2). + + +  + File: gsl-ref.info, Node: Log Complementary Error Function, Next: Probability functions, Prev: Complementary Error Function, Up: Error Functions + + Log Complementary Error Function + -------------------------------- + + - Function: double gsl_sf_log_erfc (double X) + - Function: int gsl_sf_log_erfc_e (double X, gsl_sf_result * RESULT) + These routines compute the logarithm of the complementary error + function \log(\erfc(x)). + +  + File: gsl-ref.info, Node: Probability functions, Prev: Log Complementary Error Function, Up: Error Functions + + Probability functions + --------------------- + + The probability functions for the Normal or Gaussian distribution are + described in Abramowitz & Stegun, Section 26.2. + + - Function: double gsl_sf_erf_Z (double X) + - Function: int gsl_sf_erf_Z_e (double X, gsl_sf_result * RESULT) + These routines compute the Gaussian probability function Z(x) = + (1/(2\pi)) \exp(-x^2/2). + + - Function: double gsl_sf_erf_Q (double X) + - Function: int gsl_sf_erf_Q_e (double X, gsl_sf_result * RESULT) + These routines compute the upper tail of the Gaussian probability + function Q(x) = (1/(2\pi)) \int_x^\infty dt \exp(-t^2/2). + + The "hazard function" for the normal distrbution, also known as the + inverse Mill's ratio, is defined as h(x) = Z(x)/Q(x) = \sqrt2/\pi + \exp(-x^2 / 2) / \erfc(x/\sqrt 2). It decreases rapidly as x + approaches -\infty and asymptotes to h(x) \sim x as x approaches + +\infty. + + - Function: double gsl_sf_hazard (double X) + - Function: int gsl_sf_hazard_e (double X, gsl_sf_result * RESULT) + These routines compute the hazard function for the normal + distribution. + +  + File: gsl-ref.info, Node: Exponential Functions, Next: Exponential Integrals, Prev: Error Functions, Up: Special Functions + + Exponential Functions + ===================== + + The functions described in this section are declared in the header file + `gsl_sf_exp.h'. + + * Menu: + + * Exponential Function:: + * Relative Exponential Functions:: + * Exponentiation With Error Estimate:: + +  + File: gsl-ref.info, Node: Exponential Function, Next: Relative Exponential Functions, Up: Exponential Functions + + Exponential Function + -------------------- + + - Function: double gsl_sf_exp (double X) + - Function: int gsl_sf_exp_e (double X, gsl_sf_result * RESULT) + These routines provide an exponential function \exp(x) using GSL + semantics and error checking. + + - Function: int gsl_sf_exp_e10_e (double X, gsl_sf_result_e10 * RESULT) + This function computes the exponential \exp(x) using the + `gsl_sf_result_e10' type to return a result with extended range. + This function may be useful if the value of \exp(x) would overflow + the numeric range of `double'. + + - Function: double gsl_sf_exp_mult (double X, double Y) + - Function: int gsl_sf_exp_mult_e (double X, double Y, gsl_sf_result * + RESULT) + These routines exponentiate X and multiply by the factor Y to + return the product y \exp(x). + + - Function: int gsl_sf_exp_mult_e10_e (const double X, const double Y, + gsl_sf_result_e10 * RESULT) + This function computes the product y \exp(x) using the + `gsl_sf_result_e10' type to return a result with extended numeric + range. + +  + File: gsl-ref.info, Node: Relative Exponential Functions, Next: Exponentiation With Error Estimate, Prev: Exponential Function, Up: Exponential Functions + + Relative Exponential Functions + ------------------------------ + + - Function: double gsl_sf_expm1 (double X) + - Function: int gsl_sf_expm1_e (double X, gsl_sf_result * RESULT) + These routines compute the quantity \exp(x)-1 using an algorithm + that is accurate for small x. + + - Function: double gsl_sf_exprel (double X) + - Function: int gsl_sf_exprel_e (double X, gsl_sf_result * RESULT) + These routines compute the quantity (\exp(x)-1)/x using an + algorithm that is accurate for small x. For small x the algorithm + is based on the expansion (\exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + + x^3/(2*3*4) + \dots. + + - Function: double gsl_sf_exprel_2 (double X) + - Function: int gsl_sf_exprel_2_e (double X, gsl_sf_result * RESULT) + These routines compute the quantity 2(\exp(x)-1-x)/x^2 using an + algorithm that is accurate for small x. For small x the algorithm + is based on the expansion 2(\exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) + + x^3/(3*4*5) + \dots. + + - Function: double gsl_sf_exprel_n (int N, double X) + - Function: int gsl_sf_exprel_n_e (int N, double X, gsl_sf_result * + RESULT) + These routines compute the N-relative exponential, which is the + N-th generalization of the functions `gsl_sf_exprel' and + `gsl_sf_exprel2'. The N-relative exponential is given by, + + exprel_N(x) = N!/x^N (\exp(x) - \sum_{k=0}^{N-1} x^k/k!) + = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ... + = 1F1 (1,1+N,x) + +  + File: gsl-ref.info, Node: Exponentiation With Error Estimate, Prev: Relative Exponential Functions, Up: Exponential Functions + + Exponentiation With Error Estimate + ---------------------------------- + + - Function: int gsl_sf_exp_err_e (double X, double DX, gsl_sf_result * + RESULT) + This function exponentiates X with an associated absolute error DX. + + - Function: int gsl_sf_exp_err_e10_e (double X, double DX, + gsl_sf_result_e10 * RESULT) + This function exponentiates a quantity X with an associated + absolute error DX using the `gsl_sf_result_e10' type to return a + result with extended range. + + - Function: int gsl_sf_exp_mult_err_e (double X, double DX, double Y, + double DY, gsl_sf_result * RESULT) + This routine computes the product y \exp(x) for the quantities X, + Y with associated absolute errors DX, DY. + + - Function: int gsl_sf_exp_mult_err_e10_e (double X, double DX, double + Y, double DY, gsl_sf_result_e10 * RESULT) + This routine computes the product y \exp(x) for the quantities X, + Y with associated absolute errors DX, DY using the + `gsl_sf_result_e10' type to return a result with extended range. + +  + File: gsl-ref.info, Node: Exponential Integrals, Next: Fermi-Dirac Function, Prev: Exponential Functions, Up: Special Functions + + Exponential Integrals + ===================== + + Information on the exponential integrals can be found in Abramowitz & + Stegun, Chapter 5. These functions are declared in the header file + `gsl_sf_expint.h'. + + * Menu: + + * Exponential Integral:: + * Ei(x):: + * Hyperbolic Integrals:: + * Ei_3(x):: + * Trigonometric Integrals:: + * Arctangent Integral:: + +  + File: gsl-ref.info, Node: Exponential Integral, Next: Ei(x), Up: Exponential Integrals + + Exponential Integral + -------------------- + + - Function: double gsl_sf_expint_E1 (double X) + - Function: int gsl_sf_expint_E1_e (double X, gsl_sf_result * RESULT) + These routines compute the exponential integral E_1(x), + E_1(x) := Re \int_1^\infty dt \exp(-xt)/t. + + + - Function: double gsl_sf_expint_E2 (double X) + - Function: int gsl_sf_expint_E2_e (double X, gsl_sf_result * RESULT) + These routines compute the second-order exponential integral + E_2(x), + E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2. + + +  + File: gsl-ref.info, Node: Ei(x), Next: Hyperbolic Integrals, Prev: Exponential Integral, Up: Exponential Integrals + + Ei(x) + ----- + + - Function: double gsl_sf_expint_Ei (double X) + - Function: int gsl_sf_expint_Ei_e (double X, gsl_sf_result * RESULT) + These routines compute the exponential integral E_i(x), + Ei(x) := - PV(\int_{-x}^\infty dt \exp(-t)/t) + + where PV denotes the principal value of the integral. + +  + File: gsl-ref.info, Node: Hyperbolic Integrals, Next: Ei_3(x), Prev: Ei(x), Up: Exponential Integrals + + Hyperbolic Integrals + -------------------- + + - Function: double gsl_sf_Shi (double X) + - Function: int gsl_sf_Shi_e (double X, gsl_sf_result * RESULT) + These routines compute the integral Shi(x) = \int_0^x dt + \sinh(t)/t. + + - Function: double gsl_sf_Chi (double X) + - Function: int gsl_sf_Chi_e (double X, gsl_sf_result * RESULT) + These routines compute the integral Chi(x) := Re[ \gamma_E + + \log(x) + \int_0^x dt (\cosh[t]-1)/t] , where \gamma_E is the + Euler constant (available as the macro `M_EULER'). + +  + File: gsl-ref.info, Node: Ei_3(x), Next: Trigonometric Integrals, Prev: Hyperbolic Integrals, Up: Exponential Integrals + + Ei_3(x) + ------- + + - Function: double gsl_sf_expint_3 (double X) + - Function: int gsl_sf_expint_3_e (double X, gsl_sf_result * RESULT) + These routines compute the exponential integral Ei_3(x) = \int_0^x + dt \exp(-t^3) for x >= 0. + +  + File: gsl-ref.info, Node: Trigonometric Integrals, Next: Arctangent Integral, Prev: Ei_3(x), Up: Exponential Integrals + + Trigonometric Integrals + ----------------------- + + - Function: double gsl_sf_Si (const double X) + - Function: int gsl_sf_Si_e (double X, gsl_sf_result * RESULT) + These routines compute the Sine integral Si(x) = \int_0^x dt + \sin(t)/t. + + - Function: double gsl_sf_Ci (const double X) + - Function: int gsl_sf_Ci_e (double X, gsl_sf_result * RESULT) + These routines compute the Cosine integral Ci(x) = -\int_x^\infty + dt \cos(t)/t for x > 0. + +  + File: gsl-ref.info, Node: Arctangent Integral, Prev: Trigonometric Integrals, Up: Exponential Integrals + + Arctangent Integral + ------------------- + + - Function: double gsl_sf_atanint (double X) + - Function: int gsl_sf_atanint_e (double X, gsl_sf_result * RESULT) + These routines compute the Arctangent integral AtanInt(x) = + \int_0^x dt \arctan(t)/t. + +  + File: gsl-ref.info, Node: Fermi-Dirac Function, Next: Gamma Function, Prev: Exponential Integrals, Up: Special Functions + + Fermi-Dirac Function + ==================== + + The functions described in this section are declared in the header file + `gsl_sf_fermi_dirac.h'. + + * Menu: + + * Complete Fermi-Dirac Integrals:: + * Incomplete Fermi-Dirac Integrals:: + +  + File: gsl-ref.info, Node: Complete Fermi-Dirac Integrals, Next: Incomplete Fermi-Dirac Integrals, Up: Fermi-Dirac Function + + Complete Fermi-Dirac Integrals + ------------------------------ + + The complete Fermi-Dirac integral F_j(x) is given by, + + F_j(x) := (1/r\Gamma(j+1)) \int_0^\infty dt (t^j / (\exp(t-x) + 1)) + + - Function: double gsl_sf_fermi_dirac_m1 (double X) + - Function: int gsl_sf_fermi_dirac_m1_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral with an + index of -1. This integral is given by F_{-1}(x) = e^x / (1 + + e^x). + + - Function: double gsl_sf_fermi_dirac_0 (double X) + - Function: int gsl_sf_fermi_dirac_0_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral with an + index of 0. This integral is given by F_0(x) = \ln(1 + e^x). + + - Function: double gsl_sf_fermi_dirac_1 (double X) + - Function: int gsl_sf_fermi_dirac_1_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral with an + index of 1, F_1(x) = \int_0^\infty dt (t /(\exp(t-x)+1)). + + - Function: double gsl_sf_fermi_dirac_2 (double X) + - Function: int gsl_sf_fermi_dirac_2_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral with an + index of 2, F_2(x) = (1/2) \int_0^\infty dt (t^2 /(\exp(t-x)+1)). + + - Function: double gsl_sf_fermi_dirac_int (int J, double X) + - Function: int gsl_sf_fermi_dirac_int_e (int J, double X, + gsl_sf_result * RESULT) + These routines compute the complete Fermi-Dirac integral with an + integer index of j, F_j(x) = (1/\Gamma(j+1)) \int_0^\infty dt (t^j + /(\exp(t-x)+1)). + + - Function: double gsl_sf_fermi_dirac_mhalf (double X) + - Function: int gsl_sf_fermi_dirac_mhalf_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral + F_{-1/2}(x). + + - Function: double gsl_sf_fermi_dirac_half (double X) + - Function: int gsl_sf_fermi_dirac_half_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral + F_{1/2}(x). + + - Function: double gsl_sf_fermi_dirac_3half (double X) + - Function: int gsl_sf_fermi_dirac_3half_e (double X, gsl_sf_result * + RESULT) + These routines compute the complete Fermi-Dirac integral + F_{3/2}(x). + +  + File: gsl-ref.info, Node: Incomplete Fermi-Dirac Integrals, Prev: Complete Fermi-Dirac Integrals, Up: Fermi-Dirac Function + + Incomplete Fermi-Dirac Integrals + -------------------------------- + + The incomplete Fermi-Dirac integral F_j(x,b) is given by, + + F_j(x,b) := (1/\Gamma(j+1)) \int_b^\infty dt (t^j / (\Exp(t-x) + 1)) + + - Function: double gsl_sf_fermi_dirac_inc_0 (double X, double B) + - Function: int gsl_sf_fermi_dirac_inc_0_e (double X, double B, + gsl_sf_result * RESULT) + These routines compute the incomplete Fermi-Dirac integral with an + index of zero, F_0(x,b) = \ln(1 + e^{b-x}) - (b-x). + +  + File: gsl-ref.info, Node: Gamma Function, Next: Gegenbauer Functions, Prev: Fermi-Dirac Function, Up: Special Functions + + Gamma Function + ============== + + The Gamma function is defined by the following integral, + + \Gamma(x) = \int_0^\infty dt t^{x-1} \exp(-t) + + Further information on the Gamma function can be found in Abramowitz & + Stegun, Chapter 6. The functions described in this section are + declared in the header file `gsl_sf_gamma.h'. + + - Function: double gsl_sf_gamma (double X) + - Function: int gsl_sf_gamma_e (double X, gsl_sf_result * RESULT) + These routines compute the Gamma function \Gamma(x), subject to x + not being a negative integer. The function is computed using the + real Lanczos method. The maximum value of x such that \Gamma(x) is + not considered an overflow is given by the macro + `GSL_SF_GAMMA_XMAX' and is 171.0. + + - Function: double gsl_sf_lngamma (double X) + - Function: int gsl_sf_lngamma_e (double X, gsl_sf_result * RESULT) + These routines compute the logarithm of the Gamma function, + \log(\Gamma(x)), subject to x not a being negative integer. For + x<0 the real part of \log(\Gamma(x)) is returned, which is + equivalent to \log(|\Gamma(x)|). The function is computed using + the real Lanczos method. + + - Function: int gsl_sf_lngamma_sgn_e (double X, gsl_sf_result * + RESULT_LG, double * SGN) + This routine computes the sign of the gamma function and the + logarithm its magnitude, subject to x not being a negative + integer. The function is computed using the real Lanczos method. + The value of the gamma function can be reconstructed using the + relation \Gamma(x) = sgn * \exp(resultlg). + + - Function: double gsl_sf_gammastar (double X) + - Function: int gsl_sf_gammastar_e (double X, gsl_sf_result * RESULT) + These routines compute the regulated Gamma Function \Gamma^*(x) + for x > 0. The regulated gamma function is given by, + + \Gamma^*(x) = \Gamma(x)/(\sqrt{2\pi} x^{(x-1/2)} \exp(-x)) + = (1 + (1/12x) + ...) for x \to \infty + and is a useful suggestion of Temme. + + - Function: double gsl_sf_gammainv (double X) + - Function: int gsl_sf_gammainv_e (double X, gsl_sf_result * RESULT) + These routines compute the reciprocal of the gamma function, + 1/\Gamma(x) using the real Lanczos method. + + - Function: int gsl_sf_lngamma_complex_e (double ZR, double ZI, + gsl_sf_result * LNR, gsl_sf_result * ARG) + This routine computes \log(\Gamma(z)) for complex z=z_r+i z_i and + z not a negative integer, using the complex Lanczos method. The + returned parameters are lnr = \log|\Gamma(z)| and arg = + \arg(\Gamma(z)) in (-\pi,\pi]. Note that the phase part (ARG) is + not well-determined when |z| is very large, due to inevitable + roundoff in restricting to (-\pi,\pi]. This will result in a + `GSL_ELOSS' error when it occurs. The absolute value part (LNR), + however, never suffers from loss of precision. + + - Function: double gsl_sf_taylorcoeff (int N, double X) + - Function: int gsl_sf_taylorcoeff_e (int N, double X, gsl_sf_result * + RESULT) + These routines compute the Taylor coefficient x^n / n! for x >= 0, + n >= 0. + + - Function: double gsl_sf_fact (unsigned int N) + - Function: int gsl_sf_fact_e (unsigned int N, gsl_sf_result * RESULT) + These routines compute the factorial n!. The factorial is related + to the Gamma function by n! = \Gamma(n+1). + + - Function: double gsl_sf_doublefact (unsigned int N) + - Function: int gsl_sf_doublefact_e (unsigned int N, gsl_sf_result * + RESULT) + These routines compute the double factorial n!! = n(n-2)(n-4) + \dots. + + - Function: double gsl_sf_lnfact (unsigned int N) + - Function: int gsl_sf_lnfact_e (unsigned int N, gsl_sf_result * + RESULT) + These routines compute the logarithm of the factorial of N, + \log(n!). The algorithm is faster than computing \ln(\Gamma(n+1)) + via `gsl_sf_lngamma' for n < 170, but defers for larger N. + + - Function: double gsl_sf_lndoublefact (unsigned int N) + - Function: int gsl_sf_lndoublefact_e (unsigned int N, gsl_sf_result * + RESULT) + These routines compute the logarithm of the double factorial of N, + \log(n!!). + + - Function: double gsl_sf_choose (unsigned int N, unsigned int M) + - Function: int gsl_sf_choose_e (unsigned int N, unsigned int M, + gsl_sf_result * RESULT) + These routines compute the combinatorial factor `n choose m' = + n!/(m!(n-m)!) + + - Function: double gsl_sf_lnchoose (unsigned int N, unsigned int M) + - Function: int gsl_sf_lnchoose_e (unsigned int N, unsigned int M, + gsl_sf_result * RESULT) + These routines compute the logarithm of `n choose m'. This is + equivalent to the sum \log(n!) - \log(m!) - \log((n-m)!). + + - Function: double gsl_sf_poch (double A, double X) + - Function: int gsl_sf_poch_e (double A, double X, gsl_sf_result * + RESULT) + These routines compute the Pochhammer symbol (a)_x := \Gamma(a + + x)/\Gamma(a), subject to a and a+x not being negative integers. + The Pochhammer symbol is also known as the Apell symbol. + + - Function: double gsl_sf_lnpoch (double A, double X) + - Function: int gsl_sf_lnpoch_e (double A, double X, gsl_sf_result * + RESULT) + These routines compute the logarithm of the Pochhammer symbol, + \log((a)_x) = \log(\Gamma(a + x)/\Gamma(a)) for a > 0, a+x > 0. + + - Function: int gsl_sf_lnpoch_sgn_e (double A, double X, gsl_sf_result + * RESULT, double * SGN) + These routines compute the sign of the Pochhammer symbol and the + logarithm of its magnitude. The computed parameters are result = + \log(|(a)_x|) and sgn = sgn((a)_x) where (a)_x := \Gamma(a + + x)/\Gamma(a), subject to a, a+x not being negative integers. + + - Function: double gsl_sf_pochrel (double A, double X) + - Function: int gsl_sf_pochrel_e (double A, double X, gsl_sf_result * + RESULT) + These routines compute the relative Pochhammer symbol ((a,x) - + 1)/x where (a,x) = (a)_x := \Gamma(a + x)/\Gamma(a). + + - Function: double gsl_sf_gamma_inc_Q (double A, double X) + - Function: int gsl_sf_gamma_inc_Q_e (double A, double X, + gsl_sf_result * RESULT) + These routines compute the normalized incomplete Gamma Function + Q(a,x) = 1/\Gamma(a) \int_x\infty dt t^{a-1} \exp(-t) for a > 0, x + >= 0. + + - Function: double gsl_sf_gamma_inc_P (double A, double X) + - Function: int gsl_sf_gamma_inc_P_e (double A, double X, + gsl_sf_result * RESULT) + These routines compute the complementary normalized incomplete + Gamma Function P(a,x) = 1/\Gamma(a) \int_0^x dt t^{a-1} \exp(-t) + for a > 0, x >= 0. + + Note that Abramowitz & Stegun call P(a,x) the incomplete gamma + function (section 6.5). + + - Function: double gsl_sf_gamma_inc (double A, double X) + - Function: int gsl_sf_gamma_inc_e (double A, double X, gsl_sf_result + * RESULT) + These functions compute the incomplete Gamma Function the + normalization factor included in the previously defined functions: + \Gamma(a,x) = \int_x\infty dt t^{a-1} \exp(-t) for a real and x >= + 0. + + - Function: double gsl_sf_beta (double A, double B) + - Function: int gsl_sf_beta_e (double A, double B, gsl_sf_result * + RESULT) + These routines compute the Beta Function, B(a,b) = + \Gamma(a)\Gamma(b)/\Gamma(a+b) for a > 0, b > 0. + + - Function: double gsl_sf_lnbeta (double A, double B) + - Function: int gsl_sf_lnbeta_e (double A, double B, gsl_sf_result * + RESULT) + These routines compute the logarithm of the Beta Function, + \log(B(a,b)) for a > 0, b > 0. + + - Function: double gsl_sf_beta_inc (double A, double B, double X) + - Function: int gsl_sf_beta_inc_e (double A, double B, double X, + gsl_sf_result * RESULT) + These routines compute the normalize incomplete Beta function + B_x(a,b)/B(a,b) for a > 0, b > 0, and 0 <= x <= 1. + +  + File: gsl-ref.info, Node: Gegenbauer Functions, Next: Hypergeometric Functions, Prev: Gamma Function, Up: Special Functions + + Gegenbauer Functions + ==================== + + The Gegenbauer polynomials are defined in Abramowitz & Stegun, Chapter + 22, where they are known as Ultraspherical polynomials. The functions + described in this section are declared in the header file + `gsl_sf_gegenbauer.h'. + + - Function: double gsl_sf_gegenpoly_1 (double LAMBDA, double X) + - Function: double gsl_sf_gegenpoly_2 (double LAMBDA, double X) + - Function: double gsl_sf_gegenpoly_3 (double LAMBDA, double X) + - Function: int gsl_sf_gegenpoly_1_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + - Function: int gsl_sf_gegenpoly_2_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + - Function: int gsl_sf_gegenpoly_3_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + These functions evaluate the Gegenbauer polynomials + C^{(\lambda)}_n(x) using explicit representations for n =1, 2, 3. + + - Function: double gsl_sf_gegenpoly_n (int N, double LAMBDA, double X) + - Function: int gsl_sf_gegenpoly_n_e (int N, double LAMBDA, double X, + gsl_sf_result * RESULT) + These functions evaluate the Gegenbauer polynomial + C^{(\lambda)}_n(x) for a specific value of N, LAMBDA, X subject to + \lambda > -1/2, n >= 0. + + - Function: int gsl_sf_gegenpoly_array (int NMAX, double LAMBDA, + double X, double RESULT_ARRAY[]) + This function computes an array of Gegenbauer polynomials + C^{(\lambda)}_n(x) for n = 0, 1, 2, \dots, nmax, subject to + \lambda > -1/2, nmax >= 0. + +  + File: gsl-ref.info, Node: Hypergeometric Functions, Next: Laguerre Functions, Prev: Gegenbauer Functions, Up: Special Functions + + Hypergeometric Functions + ======================== + + Hypergeometric functions are described in Abramowitz & Stegun, Chapters + 13 and 15. These functions are declared in the header file + `gsl_sf_hyperg.h'. + + - Function: double gsl_sf_hyperg_0F1 (double C, double X) + - Function: int gsl_sf_hyperg_0F1_e (double C, double X, gsl_sf_result + * RESULT) + These routines compute the hypergeometric function 0F1(c,x). + + - Function: double gsl_sf_hyperg_1F1_int (int M, int N, double X) + - Function: int gsl_sf_hyperg_1F1_int_e (int M, int N, double X, + gsl_sf_result * RESULT) + These routines compute the confluent hypergeometric function + 1F1(m,n,x) = M(m,n,x) for integer parameters M, N. + + - Function: double gsl_sf_hyperg_1F1 (double A, double B, double X) + - Function: int gsl_sf_hyperg_1F1_e (double A, double B, double X, + gsl_sf_result * RESULT) + These routines compute the confluent hypergeometric function + 1F1(a,b,x) = M(a,b,x) for general parameters A, B. + + - Function: double gsl_sf_hyperg_U_int (int M, int N, double X) + - Function: int gsl_sf_hyperg_U_int_e (int M, int N, double X, + gsl_sf_result * RESULT) + These routines compute the confluent hypergeometric function + U(m,n,x) for integer parameters M, N. + + - Function: int gsl_sf_hyperg_U_int_e10_e (int M, int N, double X, + gsl_sf_result_e10 * RESULT) + This routine computes the confluent hypergeometric function + U(m,n,x) for integer parameters M, N using the `gsl_sf_result_e10' + type to return a result with extended range. + + - Function: double gsl_sf_hyperg_U (double A, double B, double X) + - Function: int gsl_sf_hyperg_U_e (double A, double B, double X) + These routines compute the confluent hypergeometric function + U(a,b,x). + + - Function: int gsl_sf_hyperg_U_e10_e (double A, double B, double X, + gsl_sf_result_e10 * RESULT) + This routine computes the confluent hypergeometric function + U(a,b,x) using the `gsl_sf_result_e10' type to return a result + with extended range. + + - Function: double gsl_sf_hyperg_2F1 (double A, double B, double C, + double X) + - Function: int gsl_sf_hyperg_2F1_e (double A, double B, double C, + double X, gsl_sf_result * RESULT) + These routines compute the Gauss hypergeometric function + 2F1(a,b,c,x) for |x| < 1. + + If the arguments (a,b,c,x) are too close to a singularity then the + function can return the error code `GSL_EMAXITER' when the series + approximation converges too slowly. This occurs in the region of + x=1, c - a - b = m for integer m. + + - Function: double gsl_sf_hyperg_2F1_conj (double AR, double AI, + double C, double X) + - Function: int gsl_sf_hyperg_2F1_conj_e (double AR, double AI, double + C, double X, gsl_sf_result * RESULT) + These routines compute the Gauss hypergeometric function 2F1(a_R + + i a_I, a_R - i a_I, c, x) with complex parameters for |x| < 1. + exceptions: + + - Function: double gsl_sf_hyperg_2F1_renorm (double A, double B, + double C, double X) + - Function: int gsl_sf_hyperg_2F1_renorm_e (double A, double B, double + C, double X, gsl_sf_result * RESULT) + These routines compute the renormalized Gauss hypergeometric + function 2F1(a,b,c,x) / \Gamma(c) for |x| < 1. + + - Function: double gsl_sf_hyperg_2F1_conj_renorm (double AR, double + AI, double C, double X) + - Function: int gsl_sf_hyperg_2F1_conj_renorm_e (double AR, double AI, + double C, double X, gsl_sf_result * RESULT) + These routines compute the renormalized Gauss hypergeometric + function 2F1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c) for |x| < + 1. + + - Function: double gsl_sf_hyperg_2F0 (double A, double B, double X) + - Function: int gsl_sf_hyperg_2F0_e (double A, double B, double X, + gsl_sf_result * RESULT) + These routines compute the hypergeometric function 2F0(a,b,x). + The series representation is a divergent hypergeometric series. + However, for x < 0 we have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x) + +  + File: gsl-ref.info, Node: Laguerre Functions, Next: Lambert W Functions, Prev: Hypergeometric Functions, Up: Special Functions + + Laguerre Functions + ================== + + The Laguerre polynomials are defined in terms of confluent + hypergeometric functions as L^a_n(x) = ((a+1)_n / n!) 1F1(-n,a+1,x). + These functions are declared in the header file `gsl_sf_laguerre.h'. + + - Function: double gsl_sf_laguerre_1 (double A, double X) + - Function: double gsl_sf_laguerre_2 (double A, double X) + - Function: double gsl_sf_laguerre_3 (double A, double X) + - Function: int gsl_sf_laguerre_1_e (double A, double X, gsl_sf_result + * RESULT) + - Function: int gsl_sf_laguerre_2_e (double A, double X, gsl_sf_result + * RESULT) + - Function: int gsl_sf_laguerre_3_e (double A, double X, gsl_sf_result + * RESULT) + These routines evaluate the generalized Laguerre polynomials + L^a_1(x), L^a_2(x), L^a_3(x) using explicit representations. + + - Function: double gsl_sf_laguerre_n (const int N, const double A, + const double X) + - Function: int gsl_sf_laguerre_n_e (int N, double A, double X, + gsl_sf_result * RESULT) + Thse routines evaluate the generalized Laguerre polynomials + L^a_n(x) for a > -1, n >= 0. + + +  + File: gsl-ref.info, Node: Lambert W Functions, Next: Legendre Functions and Spherical Harmonics, Prev: Laguerre Functions, Up: Special Functions + + Lambert W Functions + =================== + + Lambert's W functions, W(x), are defined to be solutions of the + equation W(x) \exp(W(x)) = x. This function has multiple branches for x + < 0; however, it has only two real-valued branches. We define W_0(x) to + be the principal branch, where W > -1 for x < 0, and W_{-1}(x) to be + the other real branch, where W < -1 for x < 0. The Lambert functions + are declared in the header file `gsl_sf_lambert.h'. + + - Function: double gsl_sf_lambert_W0 (double X) + - Function: int gsl_sf_lambert_W0_e (double X, gsl_sf_result * RESULT) + These compute the principal branch of the Lambert W function, + W_0(x). + + - Function: double gsl_sf_lambert_Wm1 (double X) + - Function: int gsl_sf_lambert_Wm1_e (double X, gsl_sf_result * RESULT) + These compute the secondary real-valued branch of the Lambert W + function, W_{-1}(x). + +  + File: gsl-ref.info, Node: Legendre Functions and Spherical Harmonics, Next: Logarithm and Related Functions, Prev: Lambert W Functions, Up: Special Functions + + Legendre Functions and Spherical Harmonics + ========================================== + + The Legendre Functions and Legendre Polynomials are described in + Abramowitz & Stegun, Chapter 8. These functions are declared in the + header file `gsl_sf_legendre.h'. + + * Menu: + + * Legendre Polynomials:: + * Associated Legendre Polynomials and Spherical Harmonics:: + * Conical Functions:: + * Radial Functions for Hyperbolic Space:: + +  + File: gsl-ref.info, Node: Legendre Polynomials, Next: Associated Legendre Polynomials and Spherical Harmonics, Up: Legendre Functions and Spherical Harmonics + + Legendre Polynomials + -------------------- + + - Function: double gsl_sf_legendre_P1 (double X) + - Function: double gsl_sf_legendre_P2 (double X) + - Function: double gsl_sf_legendre_P3 (double X) + - Function: int gsl_sf_legendre_P1_e (double X, gsl_sf_result * RESULT) + - Function: int gsl_sf_legendre_P2_e (double X, gsl_sf_result * RESULT) + - Function: int gsl_sf_legendre_P3_e (double X, gsl_sf_result * RESULT) + These functions evaluate the Legendre polynomials P_l(x) using + explicit representations for l=1, 2, 3. + + - Function: double gsl_sf_legendre_Pl (int L, double X) + - Function: int gsl_sf_legendre_Pl_e (int L, double X, gsl_sf_result * + RESULT) + These functions evaluate the Legendre polynomial P_l(x) for a + specific value of L, X subject to l >= 0, |x| <= 1 + + - Function: int gsl_sf_legendre_Pl_array (int LMAX, double X, double + RESULT_ARRAY[]) + This function computes an array of Legendre polynomials P_l(x) for + l = 0, \dots, lmax, |x| <= 1 + + - Function: double gsl_sf_legendre_Q0 (double X) + - Function: int gsl_sf_legendre_Q0_e (double X, gsl_sf_result * RESULT) + These routines compute the Legendre function Q_0(x) for x > -1, x + != 1. + + - Function: double gsl_sf_legendre_Q1 (double X) + - Function: int gsl_sf_legendre_Q1_e (double X, gsl_sf_result * RESULT) + These routines compute the Legendre function Q_1(x) for x > -1, x + != 1. + + - Function: double gsl_sf_legendre_Ql (int L, double X) + - Function: int gsl_sf_legendre_Ql_e (int L, double X, gsl_sf_result * + RESULT) + These routines compute the Legendre function Q_l(x) for x > -1, x + != 1 and l >= 0. + +  + File: gsl-ref.info, Node: Associated Legendre Polynomials and Spherical Harmonics, Next: Conical Functions, Prev: Legendre Polynomials, Up: Legendre Functions and Spherical Harmonics + + Associated Legendre Polynomials and Spherical Harmonics + ------------------------------------------------------- + + The following functions compute the associated Legendre Polynomials + P_l^m(x). Note that this function grows combinatorially with l and can + overflow for l larger than about 150. There is no trouble for small m, + but overflow occurs when m and l are both large. Rather than allow + overflows, these functions refuse to calculate P_l^m(x) and return + `GSL_EOVRFLW' when they can sense that l and m are too big. + + If you want to calculate a spherical harmonic, then _do not_ use + these functions. Instead use `gsl_sf_legendre_sphPlm()' below, which + uses a similar recursion, but with the normalized functions. + + - Function: double gsl_sf_legendre_Plm (int L, int M, double X) + - Function: int gsl_sf_legendre_Plm_e (int L, int M, double X, + gsl_sf_result * RESULT) + These routines compute the associated Legendre polynomial P_l^m(x) + for m >= 0, l >= m, |x| <= 1. + + - Function: int gsl_sf_legendre_Plm_array (int LMAX, int M, double X, + double RESULT_ARRAY[]) + This function computes an array of Legendre polynomials P_l^m(x) + for m >= 0, l = |m|, ..., lmax, |x| <= 1. + + - Function: double gsl_sf_legendre_sphPlm (int L, int M, double X) + - Function: int gsl_sf_legendre_sphPlm_e (int L, int M, double X, + gsl_sf_result * RESULT) + These routines compute the normalized associated Legendre + polynomial $\sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(x)$ + suitable for use in spherical harmonics. The parameters must + satisfy m >= 0, l >= m, |x| <= 1. Theses routines avoid the + overflows that occur for the standard normalization of P_l^m(x). + + - Function: int gsl_sf_legendre_sphPlm_array (int LMAX, int M, double + X, double RESULT_ARRAY[]) + This function computes an array of normalized associated Legendre + functions $\sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(x)$ for + m >= 0, l = |m|, ..., lmax, |x| <= 1.0 + + - Function: int gsl_sf_legendre_array_size (const int LMAX, const int + M) + This function returns the size of RESULT_ARRAY[] needed for the + array versions of P_l^m(x), LMAX - M + 1. + +  + File: gsl-ref.info, Node: Conical Functions, Next: Radial Functions for Hyperbolic Space, Prev: Associated Legendre Polynomials and Spherical Harmonics, Up: Legendre Functions and Spherical Harmonics + + Conical Functions + ----------------- + + The Conical Functions P^\mu_{-(1/2)+i\lambda}(x), + Q^\mu_{-(1/2)+i\lambda} are described in Abramowitz & Stegun, Section + 8.12. + + - Function: double gsl_sf_conicalP_half (double LAMBDA, double X) + - Function: int gsl_sf_conicalP_half_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + These routines compute the irregular Spherical Conical Function + P^{1/2}_{-1/2 + i \lambda}(x) for x > -1. + + - Function: double gsl_sf_conicalP_mhalf (double LAMBDA, double X) + - Function: int gsl_sf_conicalP_mhalf_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + These routines compute the regular Spherical Conical Function + P^{-1/2}_{-1/2 + i \lambda}(x) for x > -1. + + - Function: double gsl_sf_conicalP_0 (double LAMBDA, double X) + - Function: int gsl_sf_conicalP_0_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + These routines compute the conical function P^0_{-1/2 + i + \lambda}(x) for x > -1. + + - Function: double gsl_sf_conicalP_1 (double LAMBDA, double X) + - Function: int gsl_sf_conicalP_1_e (double LAMBDA, double X, + gsl_sf_result * RESULT) + These routines compute the conical function P^1_{-1/2 + i + \lambda}(x) for x > -1. + + - Function: double gsl_sf_conicalP_sph_reg (int L, double LAMBDA, + double X) + - Function: int gsl_sf_conicalP_sph_reg_e (int L, double LAMBDA, + double X, gsl_sf_result * RESULT) + These routines compute the Regular Spherical Conical Function + P^{-1/2-l}_{-1/2 + i \lambda}(x) for x > -1, l >= -1. + + - Function: double gsl_sf_conicalP_cyl_reg (int M, double LAMBDA, + double X) + - Function: int gsl_sf_conicalP_cyl_reg_e (int M, double LAMBDA, + double X, gsl_sf_result * RESULT) + These routines compute the Regular Cylindrical Conical Function + P^{-m}_{-1/2 + i \lambda}(x) for x > -1, m >= -1. + +  + File: gsl-ref.info, Node: Radial Functions for Hyperbolic Space, Prev: Conical Functions, Up: Legendre Functions and Spherical Harmonics + + Radial Functions for Hyperbolic Space + ------------------------------------- + + The following spherical functions are specializations of Legendre + functions which give the regular eigenfunctions of the Laplacian on a + 3-dimensional hyperbolic space H3d. Of particular interest is the flat + limit, \lambda \to \infty, \eta \to 0, \lambda\eta fixed. + + - Function: double gsl_sf_legendre_H3d_0 (double LAMBDA, double ETA) + - Function: int gsl_sf_legendre_H3d_0_e (double LAMBDA, double ETA, + gsl_sf_result * RESULT) + These routines compute the zeroth radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space, + L^{H3d}_0(\lambda,\eta) := \sin(\lambda\eta)/(\lambda\sinh(\eta)) + for \eta >= 0. In the flat limit this takes the form + L^{H3d}_0(\lambda,\eta) = j_0(\lambda\eta) + + - Function: double gsl_sf_legendre_H3d_1 (double LAMBDA, double ETA) + - Function: int gsl_sf_legendre_H3d_1_e (double LAMBDA, double ETA, + gsl_sf_result * RESULT) + These routines compute the first radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space, + L^{H3d}_1(\lambda,\eta) := 1/\sqrt{\lambda^2 + 1} \sin(\lambda + \eta)/(\lambda \sinh(\eta)) (\coth(\eta) - \lambda + \cot(\lambda\eta)) for \eta >= 0. In the flat limit this takes + the form L^{H3d}_1(\lambda,\eta) = j_1(\lambda\eta). + + - Function: double gsl_sf_legendre_H3d (int L, double LAMBDA, double + ETA) + - Function: int gsl_sf_legendre_H3d_e (int L, double LAMBDA, double + ETA, gsl_sf_result * RESULT) + These routines compute the L'th radial eigenfunction of the + Laplacian on the 3-dimensional hyperbolic space \eta >= 0, l >= 0. + In the flat limit this takes the form L^{H3d}_l(\lambda,\eta) = + j_l(\lambda\eta). + + - Function: int gsl_sf_legendre_H3d_array (int LMAX, double LAMBDA, + double ETA, double RESULT_ARRAY[]) + This function computes an array of radial eigenfunctions + L^{H3d}_l(\lambda, \eta) for 0 <= l <= lmax. + +  + File: gsl-ref.info, Node: Logarithm and Related Functions, Next: Power Function, Prev: Legendre Functions and Spherical Harmonics, Up: Special Functions + + Logarithm and Related Functions + =============================== + + Information on the properties of the Logarithm function can be found in + Abramowitz & Stegun, Chapter 4. The functions described in this section + are declared in the header file `gsl_sf_log.h'. + + - Function: double gsl_sf_log (double X) + - Function: int gsl_sf_log_e (double X, gsl_sf_result * RESULT) + These routines compute the logarithm of X, \log(x), for x > 0. + + - Function: double gsl_sf_log_abs (double X) + - Function: int gsl_sf_log_abs_e (double X, gsl_sf_result * RESULT) + These routines compute the logarithm of the magnitude of X, + \log(|x|), for x \ne 0. + + - Function: int gsl_sf_complex_log_e (double ZR, double ZI, + gsl_sf_result * LNR, gsl_sf_result * THETA) + This routine computes the complex logarithm of z = z_r + i z_i. + The results are returned as LNR, THETA such that \exp(lnr + i + \theta) = z_r + i z_i, where \theta lies in the range [-\pi,\pi]. + + - Function: double gsl_sf_log_1plusx (double X) + - Function: int gsl_sf_log_1plusx_e (double X, gsl_sf_result * RESULT) + These routines compute \log(1 + x) for x > -1 using an algorithm + that is accurate for small x. + + - Function: double gsl_sf_log_1plusx_mx (double X) + - Function: int gsl_sf_log_1plusx_mx_e (double X, gsl_sf_result * + RESULT) + These routines compute \log(1 + x) - x for x > -1 using an + algorithm that is accurate for small x. + +  + File: gsl-ref.info, Node: Power Function, Next: Psi (Digamma) Function, Prev: Logarithm and Related Functions, Up: Special Functions + + Power Function + ============== + + The following functions are equivalent to the function `gsl_pow_int' + (*note Small integer powers::) with an error estimate. These functions + are declared in the header file `gsl_sf_pow_int.h'. + + - Function: double gsl_sf_pow_int (double X, int N) + - Function: int gsl_sf_pow_int_e (double X, int N, gsl_sf_result * + RESULT) + These routines compute the power x^n for integer N. The power is + computed using the minimum number of multiplications. For example, + x^8 is computed as ((x^2)^2)^2, requiring only 3 multiplications. + For reasons of efficiency, these functions do not check for + overflow or underflow conditions. + + #include + /* compute 3.0**12 */ + double y = gsl_sf_pow_int(3.0, 12); + +  + File: gsl-ref.info, Node: Psi (Digamma) Function, Next: Synchrotron Functions, Prev: Power Function, Up: Special Functions + + Psi (Digamma) Function + ====================== + + The polygamma functions of order m defined by \psi^{(m)}(x) = (d/dx)^m + \psi(x) = (d/dx)^{m+1} \log(\Gamma(x)), where \psi(x) = + \Gamma'(x)/\Gamma(x) is known as the digamma function. These functions + are declared in the header file `gsl_sf_psi.h'. + + * Menu: + + * Digamma Function:: + * Trigamma Function:: + * Polygamma Function:: + +  + File: gsl-ref.info, Node: Digamma Function, Next: Trigamma Function, Up: Psi (Digamma) Function + + Digamma Function + ---------------- + + - Function: double gsl_sf_psi_int (int N) + - Function: int gsl_sf_psi_int_e (int N, gsl_sf_result * RESULT) + These routines compute the digamma function \psi(n) for positive + integer N. The digamma function is also called the Psi function. + + - Function: double gsl_sf_psi (double X) + - Function: int gsl_sf_psi_e (double X, gsl_sf_result * RESULT) + These routines compute the digamma function \psi(x) for general x, + x \ne 0. + + - Function: double gsl_sf_psi_1piy (double Y) + - Function: int gsl_sf_psi_1piy_e (double Y, gsl_sf_result * RESULT) + These routines compute the real part of the digamma function on + the line 1+i y, Re[\psi(1 + i y)]. + +  + File: gsl-ref.info, Node: Trigamma Function, Next: Polygamma Function, Prev: Digamma Function, Up: Psi (Digamma) Function + + Trigamma Function + ----------------- + + - Function: double gsl_sf_psi_1_int (int N) + - Function: int gsl_sf_psi_1_int_e (int N, gsl_sf_result * RESULT) + These routines compute the Trigamma function \psi'(n) for positive + integer n. + +  + File: gsl-ref.info, Node: Polygamma Function, Prev: Trigamma Function, Up: Psi (Digamma) Function + + Polygamma Function + ------------------ + + - Function: double gsl_sf_psi_n (int M, double X) + - Function: int gsl_sf_psi_n_e (int M, double X, gsl_sf_result * + RESULT) + These routines compute the polygamma function \psi^{(m)}(x) for m + >= 0, x > 0. + +  + File: gsl-ref.info, Node: Synchrotron Functions, Next: Transport Functions, Prev: Psi (Digamma) Function, Up: Special Functions + + Synchrotron Functions + ===================== + + The functions described in this section are declared in the header file + `gsl_sf_synchrotron.h'. + + - Function: double gsl_sf_synchrotron_1 (double X) + - Function: int gsl_sf_synchrotron_1_e (double X, gsl_sf_result * + RESULT) + These routines compute the first synchrotron function x + \int_x^\infty dt K_{5/3}(t) for x >= 0. + + - Function: double gsl_sf_synchrotron_2 (double X) + - Function: int gsl_sf_synchrotron_2_e (double X, gsl_sf_result * + RESULT) + These routines compute the second synchrotron function x + K_{2/3}(x) for x >= 0. + +  + File: gsl-ref.info, Node: Transport Functions, Next: Trigonometric Functions, Prev: Synchrotron Functions, Up: Special Functions + + Transport Functions + =================== + + The transport functions J(n,x) are defined by the integral + representations J(n,x) := \int_0^x dt t^n e^t /(e^t - 1)^2. They are + declared in the header file `gsl_sf_transport.h'. + + - Function: double gsl_sf_transport_2 (double X) + - Function: int gsl_sf_transport_2_e (double X, gsl_sf_result * RESULT) + These routines compute the transport function J(2,x). + + - Function: double gsl_sf_transport_3 (double X) + - Function: int gsl_sf_transport_3_e (double X, gsl_sf_result * RESULT) + These routines compute the transport function J(3,x). + + - Function: double gsl_sf_transport_4 (double X) + - Function: int gsl_sf_transport_4_e (double X, gsl_sf_result * RESULT) + These routines compute the transport function J(4,x). + + - Function: double gsl_sf_transport_5 (double X) + - Function: int gsl_sf_transport_5_e (double X, gsl_sf_result * RESULT) + These routines compute the transport function J(5,x). + +  + File: gsl-ref.info, Node: Trigonometric Functions, Next: Zeta Functions, Prev: Transport Functions, Up: Special Functions + + Trigonometric Functions + ======================= + + The library includes its own trigonometric functions in order to provide + consistency across platforms and reliable error estimates. These + functions are declared in the header file `gsl_sf_trig.h'. + + * Menu: + + * Circular Trigonometric Functions:: + * Trigonometric Functions for Complex Arguments:: + * Hyperbolic Trigonometric Functions:: + * Conversion Functions:: + * Restriction Functions:: + * Trigonometric Functions With Error Estimates:: + +  + File: gsl-ref.info, Node: Circular Trigonometric Functions, Next: Trigonometric Functions for Complex Arguments, Up: Trigonometric Functions + + Circular Trigonometric Functions + -------------------------------- + + - Function: double gsl_sf_sin (double X) + - Function: int gsl_sf_sin_e (double X, gsl_sf_result * RESULT) + These routines compute the sine function \sin(x). + + - Function: double gsl_sf_cos (double X) + - Function: int gsl_sf_cos_e (double X, gsl_sf_result * RESULT) + These routines compute the cosine function \cos(x). + + - Function: double gsl_sf_hypot (double X, double Y) + - Function: int gsl_sf_hypot_e (double X, double Y, gsl_sf_result * + RESULT) + These routines compute the hypotenuse function \sqrt{x^2 + y^2} + avoiding overflow and underflow. + + - Function: double gsl_sf_sinc (double X) + - Function: int gsl_sf_sinc_e (double X, gsl_sf_result * RESULT) + These routines compute \sinc(x) = \sin(\pi x) / (\pi x) for any + value of X. + +  + File: gsl-ref.info, Node: Trigonometric Functions for Complex Arguments, Next: Hyperbolic Trigonometric Functions, Prev: Circular Trigonometric Functions, Up: Trigonometric Functions + + Trigonometric Functions for Complex Arguments + --------------------------------------------- + + - Function: int gsl_sf_complex_sin_e (double ZR, double ZI, + gsl_sf_result * SZR, gsl_sf_result * SZI) + This function computes the complex sine, \sin(z_r + i z_i) storing + the real and imaginary parts in SZR, SZI. + + - Function: int gsl_sf_complex_cos_e (double ZR, double ZI, + gsl_sf_result * CZR, gsl_sf_result * CZI) + This function computes the complex cosine, \cos(z_r + i z_i) + storing the real and imaginary parts in SZR, SZI. + + - Function: int gsl_sf_complex_logsin_e (double ZR, double ZI, + gsl_sf_result * LSZR, gsl_sf_result * LSZI) + This function computes the logarithm of the complex sine, + \log(\sin(z_r + i z_i)) storing the real and imaginary parts in + SZR, SZI. + +  + File: gsl-ref.info, Node: Hyperbolic Trigonometric Functions, Next: Conversion Functions, Prev: Trigonometric Functions for Complex Arguments, Up: Trigonometric Functions + + Hyperbolic Trigonometric Functions + ---------------------------------- + + - Function: double gsl_sf_lnsinh (double X) + - Function: int gsl_sf_lnsinh_e (double X, gsl_sf_result * RESULT) + These routines compute \log(\sinh(x)) for x > 0. + + - Function: double gsl_sf_lncosh (double X) + - Function: int gsl_sf_lncosh_e (double X, gsl_sf_result * RESULT) + These routines compute \log(\cosh(x)) for any X. + +  + File: gsl-ref.info, Node: Conversion Functions, Next: Restriction Functions, Prev: Hyperbolic Trigonometric Functions, Up: Trigonometric Functions + + Conversion Functions + -------------------- + + - Function: int gsl_sf_polar_to_rect (double R, double THETA, + gsl_sf_result * X, gsl_sf_result * Y); + This function converts the polar coordinates (R,THETA) to + rectilinear coordinates (X,Y), x = r\cos(\theta), y = + r\sin(\theta). + + - Function: int gsl_sf_rect_to_polar (double X, double Y, + gsl_sf_result * R, gsl_sf_result * THETA) + This function converts the rectilinear coordinates (X,Y) to polar + coordinates (R,THETA), such that x = r\cos(\theta), y = + r\sin(\theta). The argument THETA lies in the range [-\pi, \pi]. + +  + File: gsl-ref.info, Node: Restriction Functions, Next: Trigonometric Functions With Error Estimates, Prev: Conversion Functions, Up: Trigonometric Functions + + Restriction Functions + --------------------- + + - Function: double gsl_sf_angle_restrict_symm (double THETA) + - Function: int gsl_sf_angle_restrict_symm_e (double * THETA) + These routines force the angle THETA to lie in the range + (-\pi,\pi]. + + - Function: double gsl_sf_angle_restrict_pos (double THETA) + - Function: int gsl_sf_angle_restrict_pos_e (double * THETA) + These routines force the angle THETA to lie in the range [0, 2\pi). + +  + File: gsl-ref.info, Node: Trigonometric Functions With Error Estimates, Prev: Restriction Functions, Up: Trigonometric Functions + + Trigonometric Functions With Error Estimates + -------------------------------------------- + + - Function: double gsl_sf_sin_err (double X, double DX) + - Function: int gsl_sf_sin_err_e (double X, double DX, gsl_sf_result * + RESULT) + These routines compute the sine of an angle X with an associated + absolute error DX, \sin(x \pm dx). + + - Function: double gsl_sf_cos_err (double X, double DX) + - Function: int gsl_sf_cos_err_e (double X, double DX, gsl_sf_result * + RESULT) + These routines compute the cosine of an angle X with an associated + absolute error DX, \cos(x \pm dx). + +  + File: gsl-ref.info, Node: Zeta Functions, Next: Special Functions Examples, Prev: Trigonometric Functions, Up: Special Functions + + Zeta Functions + ============== + + The Riemann zeta function is defined in Abramowitz & Stegun, Section + 23.2. The functions described in this section are declared in the + header file `gsl_sf_zeta.h'. + + * Menu: + + * Riemann Zeta Function:: + * Hurwitz Zeta Function:: + * Eta Function:: + +  + File: gsl-ref.info, Node: Riemann Zeta Function, Next: Hurwitz Zeta Function, Up: Zeta Functions + + Riemann Zeta Function + --------------------- + + The Riemann zeta function is defined by the infinite sum \zeta(s) = + \sum_{k=1}^\infty k^{-s}. + + - Function: double gsl_sf_zeta_int (int N) + - Function: int gsl_sf_zeta_int_e (int N, gsl_sf_result * RESULT) + These routines compute the Riemann zeta function \zeta(n) for + integer N, n \ne 1. + + - Function: double gsl_sf_zeta (double S) + - Function: int gsl_sf_zeta_e (double S, gsl_sf_result * RESULT) + These routines compute the Riemann zeta function \zeta(s) for + arbitrary S, s \ne 1. + +  + File: gsl-ref.info, Node: Hurwitz Zeta Function, Next: Eta Function, Prev: Riemann Zeta Function, Up: Zeta Functions + + Hurwitz Zeta Function + --------------------- + + The Hurwitz zeta function is defined by \zeta(s,q) = \sum_0^\infty + (k+q)^{-s}. + + - Function: double gsl_sf_hzeta (double S, double Q) + - Function: int gsl_sf_hzeta_e (double S, double Q, gsl_sf_result * + RESULT) + These routines compute the Hurwitz zeta function \zeta(s,q) for s + > 1, q > 0. + +  + File: gsl-ref.info, Node: Eta Function, Prev: Hurwitz Zeta Function, Up: Zeta Functions + + Eta Function + ------------ + + The eta function is defined by \eta(s) = (1-2^{1-s}) \zeta(s). + + - Function: double gsl_sf_eta_int (int N) + - Function: int gsl_sf_eta_int_e (int N, gsl_sf_result * RESULT) + These routines compute the eta function \eta(n) for integer N. + + - Function: double gsl_sf_eta (double S) + - Function: int gsl_sf_eta_e (double S, gsl_sf_result * RESULT) + These routines compute the eta function \eta(s) for arbitrary S. + +  + File: gsl-ref.info, Node: Special Functions Examples, Next: Special Functions References and Further Reading, Prev: Zeta Functions, Up: Special Functions + + Examples + ======== + + The following example demonstrates the use of the error handling form of + the special functions, in this case to compute the Bessel function + J_0(5.0), + + #include + #include + #include + + int + main (void) + { + double x = 5.0; + gsl_sf_result result; + + double expected = -0.17759677131433830434739701; + + int status = gsl_sf_bessel_J0_e (x, &result); + + printf ("status = %s\n", gsl_strerror(status)); + printf ("J0(5.0) = %.18f\n" + " +/- % .18f\n", + result.val, result.err); + printf ("exact = %.18f\n", expected); + return status; + } + + Here are the results of running the program, + $ ./a.out + + status = success + J0(5.0) = -0.177596771314338292 + +/- 0.000000000000000193 + exact = -0.177596771314338292 + + The next program computes the same quantity using the natural form of + the function. In this case the error term RESULT.ERR and return status + are not accessible. + + #include + #include + + int + main (void) + { + double x = 5.0; + double expected = -0.17759677131433830434739701; + + double y = gsl_sf_bessel_J0 (x); + + printf ("J0(5.0) = %.18f\n", y); + printf ("exact = %.18f\n", expected); + return 0; + } + + The results of the function are the same, + $ ./a.out + + J0(5.0) = -0.177596771314338292 + exact = -0.177596771314338292 + +  + File: gsl-ref.info, Node: Special Functions References and Further Reading, Prev: Special Functions Examples, Up: Special Functions + + References and Further Reading + ============================== + + The library follows the conventions of `Abramowitz & Stegun' where + possible, + Abramowitz & Stegun (eds.), `Handbook of Mathematical Functions' + + The following papers contain information on the algorithms used to + compute the special functions, + MISCFUN: A software package to compute uncommon special functions. + `ACM Trans. Math. Soft.', vol. 22, 1996, 288-301 + + G.N. Watson, A Treatise on the Theory of Bessel Functions, 2nd + Edition (Cambridge University Press, 1944). + + G. Nemeth, Mathematical Approximations of Special Functions, Nova + Science Publishers, ISBN 1-56072-052-2 + + B.C. Carlson, Special Functions of Applied Mathematics (1977) + + W.J. Thompson, Atlas for Computing Mathematical Functions, John + Wiley & Sons, New York (1997). + + Y.Y. Luke, Algorithms for the Computation of Mathematical + Functions, Academic Press, New York (1977). + + +  + File: gsl-ref.info, Node: Vectors and Matrices, Next: Permutations, Prev: Special Functions, Up: Top + + Vectors and Matrices + ******************** + + The functions described in this chapter provide a simple vector and + matrix interface to ordinary C arrays. The memory management of these + arrays is implemented using a single underlying type, known as a block. + By writing your functions in terms of vectors and matrices you can pass + a single structure containing both data and dimensions as an argument + without needing additional function parameters. The structures are + compatible with the vector and matrix formats used by BLAS routines. + + * Menu: + + * Data types:: + * Blocks:: + * Vectors:: + * Matrices:: + * Vector and Matrix References and Further Reading:: + +  + File: gsl-ref.info, Node: Data types, Next: Blocks, Up: Vectors and Matrices + + Data types + ========== + + All the functions are available for each of the standard data-types. + The versions for `double' have the prefix `gsl_block', `gsl_vector' and + `gsl_matrix'. Similarly the versions for single-precision `float' + arrays have the prefix `gsl_block_float', `gsl_vector_float' and + `gsl_matrix_float'. The full list of available types is given below, + + gsl_block double + gsl_block_float float + gsl_block_long_double long double + gsl_block_int int + gsl_block_uint unsigned int + gsl_block_long long + gsl_block_ulong unsigned long + gsl_block_short short + gsl_block_ushort unsigned short + gsl_block_char char + gsl_block_uchar unsigned char + gsl_block_complex complex double + gsl_block_complex_float complex float + gsl_block_complex_long_double complex long double + + Corresponding types exist for the `gsl_vector' and `gsl_matrix' + functions. + +  + File: gsl-ref.info, Node: Blocks, Next: Vectors, Prev: Data types, Up: Vectors and Matrices + + Blocks + ====== + + For consistency all memory is allocated through a `gsl_block' + structure. The structure contains two components, the size of an area + of memory and a pointer to the memory. The `gsl_block' structure looks + like this, + + typedef struct + { + size_t size; + double * data; + } gsl_block; + + Vectors and matrices are made by "slicing" an underlying block. A slice + is a set of elements formed from an initial offset and a combination of + indices and step-sizes. In the case of a matrix the step-size for the + column index represents the row-length. The step-size for a vector is + known as the "stride". + + The functions for allocating and deallocating blocks are defined in + `gsl_block.h' + + * Menu: + + * Block allocation:: + * Reading and writing blocks:: + * Example programs for blocks:: + +  + File: gsl-ref.info, Node: Block allocation, Next: Reading and writing blocks, Up: Blocks + + Block allocation + ---------------- + + The functions for allocating memory to a block follow the style of + `malloc' and `free'. In addition they also perform their own error + checking. If there is insufficient memory available to allocate a + block then the functions call the GSL error handler (with an error + number of `GSL_ENOMEM') in addition to returning a null pointer. Thus + if you use the library error handler to abort your program then it + isn't necessary to check every `alloc'. + + - Function: gsl_block * gsl_block_alloc (size_t N) + This function allocates memory for a block of N double-precision + elements, returning a pointer to the block struct. The block is + not initialized and so the values of its elements are undefined. + Use the function `gsl_block_calloc' if you want to ensure that all + the elements are initialized to zero. + + A null pointer is returned if insufficient memory is available to + create the block. + + - Function: gsl_block * gsl_block_calloc (size_t N) + This function allocates memory for a block and initializes all the + elements of the block to zero. + + - Function: void gsl_block_free (gsl_block * B) + This function frees the memory used by a block B previously + allocated with `gsl_block_alloc' or `gsl_block_calloc'. + +  + File: gsl-ref.info, Node: Reading and writing blocks, Next: Example programs for blocks, Prev: Block allocation, Up: Blocks + + Reading and writing blocks + -------------------------- + + The library provides functions for reading and writing blocks to a file + as binary data or formatted text. + + - Function: int gsl_block_fwrite (FILE * STREAM, const gsl_block * B) + This function writes the elements of the block B to the stream + STREAM in binary format. The return value is 0 for success and + `GSL_EFAILED' if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + - Function: int gsl_block_fread (FILE * STREAM, gsl_block * B) + This function reads into the block B from the open stream STREAM + in binary format. The block B must be preallocated with the + correct length since the function uses the size of B to determine + how many bytes to read. The return value is 0 for success and + `GSL_EFAILED' if there was a problem reading from the file. The + data is assumed to have been written in the native binary format + on the same architecture. + + - Function: int gsl_block_fprintf (FILE * STREAM, const gsl_block * B, + const char * FORMAT) + This function writes the elements of the block B line-by-line to + the stream STREAM using the format specifier FORMAT, which should + be one of the `%g', `%e' or `%f' formats for floating point + numbers and `%d' for integers. The function returns 0 for success + and `GSL_EFAILED' if there was a problem writing to the file. + + - Function: int gsl_block_fscanf (FILE * STREAM, gsl_block * B) + This function reads formatted data from the stream STREAM into the + block B. The block B must be preallocated with the correct length + since the function uses the size of B to determine how many + numbers to read. The function returns 0 for success and + `GSL_EFAILED' if there was a problem reading from the file. + +  + File: gsl-ref.info, Node: Example programs for blocks, Prev: Reading and writing blocks, Up: Blocks + + Example programs for blocks + --------------------------- + + The following program shows how to allocate a block, + + #include + #include + + int + main (void) + { + gsl_block * b = gsl_block_alloc (100); + + printf ("length of block = %u\n", b->size); + printf ("block data address = %#x\n", b->data); + + gsl_block_free (b); + return 0; + } + + Here is the output from the program, + + length of block = 100 + block data address = 0x804b0d8 + +  + File: gsl-ref.info, Node: Vectors, Next: Matrices, Prev: Blocks, Up: Vectors and Matrices + + Vectors + ======= + + Vectors are defined by a `gsl_vector' structure which describes a slice + of a block. Different vectors can be created which point to the same + block. A vector slice is a set of equally-spaced elements of an area + of memory. + + The `gsl_vector' structure contains five components, the "size", the + "stride", a pointer to the memory where the elements are stored, DATA, + a pointer to the block owned by the vector, BLOCK, if any, and an + ownership flag, OWNER. The structure is very simple and looks like + this, + + typedef struct + { + size_t size; + size_t stride; + double * data; + gsl_block * block; + int owner; + } gsl_vector; + + The SIZE is simply the number of vector elements. The range of valid + indices runs from 0 to `size-1'. The STRIDE is the step-size from one + element to the next in physical memory, measured in units of the + appropriate datatype. The pointer DATA gives the location of the first + element of the vector in memory. The pointer BLOCK stores the location + of the memory block in which the vector elements are located (if any). + If the vector owns this block then the OWNER field is set to one and + the block will be deallocated when the vector is freed. If the vector + points to a block owned by another object then the OWNER field is zero + and any underlying block will not be deallocated. + + The functions for allocating and accessing vectors are defined in + `gsl_vector.h' + + * Menu: + + * Vector allocation:: + * Accessing vector elements:: + * Initializing vector elements:: + * Reading and writing vectors:: + * Vector views:: + * Copying vectors:: + * Exchanging elements:: + * Vector operations:: + * Finding maximum and minimum elements of vectors:: + * Vector properties:: + * Example programs for vectors:: + +  + File: gsl-ref.info, Node: Vector allocation, Next: Accessing vector elements, Up: Vectors + + Vector allocation + ----------------- + + The functions for allocating memory to a vector follow the style of + `malloc' and `free'. In addition they also perform their own error + checking. If there is insufficient memory available to allocate a + vector then the functions call the GSL error handler (with an error + number of `GSL_ENOMEM') in addition to returning a null pointer. Thus + if you use the library error handler to abort your program then it + isn't necessary to check every `alloc'. + + - Function: gsl_vector * gsl_vector_alloc (size_t N) + This function creates a vector of length N, returning a pointer to + a newly initialized vector struct. A new block is allocated for the + elements of the vector, and stored in the BLOCK component of the + vector struct. The block is "owned" by the vector, and will be + deallocated when the vector is deallocated. + + - Function: gsl_vector * gsl_vector_calloc (size_t N) + This function allocates memory for a vector of length N and + initializes all the elements of the vector to zero. + + - Function: void gsl_vector_free (gsl_vector * V) + This function frees a previously allocated vector V. If the + vector was created using `gsl_vector_alloc' then the block + underlying the vector will also be deallocated. If the vector has + been created from another object then the memory is still owned by + that object and will not be deallocated. + +  + File: gsl-ref.info, Node: Accessing vector elements, Next: Initializing vector elements, Prev: Vector allocation, Up: Vectors + + Accessing vector elements + ------------------------- + + Unlike FORTRAN compilers, C compilers do not usually provide support + for range checking of vectors and matrices. Range checking is + available in the GNU C Compiler extension `checkergcc' but it is not + available on every platform. The functions `gsl_vector_get' and + `gsl_vector_set' can perform portable range checking for you and report + an error if you attempt to access elements outside the allowed range. + + The functions for accessing the elements of a vector or matrix are + defined in `gsl_vector.h' and declared `extern inline' to eliminate + function-call overhead. If necessary you can turn off range checking + completely without modifying any source files by recompiling your + program with the preprocessor definition `GSL_RANGE_CHECK_OFF'. + Provided your compiler supports inline functions the effect of turning + off range checking is to replace calls to `gsl_vector_get(v,i)' by + `v->data[i*v->stride]' and calls to `gsl_vector_set(v,i,x)' by + `v->data[i*v->stride]=x'. Thus there should be no performance penalty + for using the range checking functions when range checking is turned + off. + + - Function: double gsl_vector_get (const gsl_vector * V, size_t I) + This function returns the I-th element of a vector V. If I lies + outside the allowed range of 0 to N-1 then the error handler is + invoked and 0 is returned. + + - Function: void gsl_vector_set (gsl_vector * V, size_t I, double X) + This function sets the value of the I-th element of a vector V to + X. If I lies outside the allowed range of 0 to N-1 then the error + handler is invoked. + + - Function: double * gsl_vector_ptr (gsl_vector * V, size_t I) + - Function: const double * gsl_vector_const_ptr (const gsl_vector * V, + size_t I) + These functions return a pointer to the I-th element of a vector + V. If I lies outside the allowed range of 0 to N-1 then the error + handler is invoked and a null pointer is returned. + +  + File: gsl-ref.info, Node: Initializing vector elements, Next: Reading and writing vectors, Prev: Accessing vector elements, Up: Vectors + + Initializing vector elements + ---------------------------- + + - Function: void gsl_vector_set_all (gsl_vector * V, double X) + This function sets all the elements of the vector V to the value X. + + - Function: void gsl_vector_set_zero (gsl_vector * V) + This function sets all the elements of the vector V to zero. + + - Function: int gsl_vector_set_basis (gsl_vector * V, size_t I) + This function makes a basis vector by setting all the elements of + the vector V to zero except for the I-th element which is set to + one. + +  + File: gsl-ref.info, Node: Reading and writing vectors, Next: Vector views, Prev: Initializing vector elements, Up: Vectors + + Reading and writing vectors + --------------------------- + + The library provides functions for reading and writing vectors to a file + as binary data or formatted text. + + - Function: int gsl_vector_fwrite (FILE * STREAM, const gsl_vector * V) + This function writes the elements of the vector V to the stream + STREAM in binary format. The return value is 0 for success and + `GSL_EFAILED' if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + - Function: int gsl_vector_fread (FILE * STREAM, gsl_vector * V) + This function reads into the vector V from the open stream STREAM + in binary format. The vector V must be preallocated with the + correct length since the function uses the size of V to determine + how many bytes to read. The return value is 0 for success and + `GSL_EFAILED' if there was a problem reading from the file. The + data is assumed to have been written in the native binary format + on the same architecture. + + - Function: int gsl_vector_fprintf (FILE * STREAM, const gsl_vector * + V, const char * FORMAT) + This function writes the elements of the vector V line-by-line to + the stream STREAM using the format specifier FORMAT, which should + be one of the `%g', `%e' or `%f' formats for floating point + numbers and `%d' for integers. The function returns 0 for success + and `GSL_EFAILED' if there was a problem writing to the file. + + - Function: int gsl_vector_fscanf (FILE * STREAM, gsl_vector * V) + This function reads formatted data from the stream STREAM into the + vector V. The vector V must be preallocated with the correct + length since the function uses the size of V to determine how many + numbers to read. The function returns 0 for success and + `GSL_EFAILED' if there was a problem reading from the file. + +  + File: gsl-ref.info, Node: Vector views, Next: Copying vectors, Prev: Reading and writing vectors, Up: Vectors + + Vector views + ------------ + + In addition to creating vectors from slices of blocks it is also + possible to slice vectors and create vector views. For example, a + subvector of another vector can be described with a view, or two views + can be made which provide access to the even and odd elements of a + vector. + + A vector view is a temporary object, stored on the stack, which can + be used to operate on a subset of vector elements. Vector views can be + defined for both constant and non-constant vectors, using separate types + that preserve constness. A vector view has the type `gsl_vector_view' + and a constant vector view has the type `gsl_vector_const_view'. In + both cases the elements of the view can be accessed as a `gsl_vector' + using the `vector' component of the view object. A pointer to a vector + of type `gsl_vector *' or `const gsl_vector *' can be obtained by + taking the address of this component with the `&' operator. + + - Function: gsl_vector_view gsl_vector_subvector (gsl_vector *V, + size_t OFFSET, size_t N) + - Function: gsl_vector_const_view gsl_vector_const_subvector (const + gsl_vector * V, size_t OFFSET, size_t N) + These functions return a vector view of a subvector of another + vector V. The start of the new vector is offset by OFFSET elements + from the start of the original vector. The new vector has N + elements. Mathematically, the I-th element of the new vector V' + is given by, + + v'(i) = v->data[(offset + i)*v->stride] + + where the index I runs from 0 to `n-1'. + + The `data' pointer of the returned vector struct is set to null if + the combined parameters (OFFSET,N) overrun the end of the original + vector. + + The new vector is only a view of the block underlying the original + vector, V. The block containing the elements of V is not owned by + the new vector. When the view goes out of scope the original + vector V and its block will continue to exist. The original + memory can only be deallocated by freeing the original vector. Of + course, the original vector should not be deallocated while the + view is still in use. + + The function `gsl_vector_const_subvector' is equivalent to + `gsl_vector_subvector' but can be used for vectors which are + declared `const'. + + - Function: gsl_vector gsl_vector_subvector_with_stride (gsl_vector + *V, size_t OFFSET, size_t STRIDE, size_t N) + - Function: gsl_vector_const_view + gsl_vector_const_subvector_with_stride (const gsl_vector * V, size_t + OFFSET, size_t STRIDE, size_t N) + These functions return a vector view of a subvector of another + vector V with an additional stride argument. The subvector is + formed in the same way as for `gsl_vector_subvector' but the new + vector has N elements with a step-size of STRIDE from one element + to the next in the original vector. Mathematically, the I-th + element of the new vector V' is given by, + + v'(i) = v->data[(offset + i*stride)*v->stride] + + where the index I runs from 0 to `n-1'. + + Note that subvector views give direct access to the underlying + elements of the original vector. For example, the following code + will zero the even elements of the vector `v' of length `n', while + leaving the odd elements untouched, + + gsl_vector_view v_even + = gsl_vector_subvector_with_stride (v, 0, 2, n/2); + gsl_vector_set_zero (&v_even.vector); + + A vector view can be passed to any subroutine which takes a vector + argument just as a directly allocated vector would be, using + `&'VIEW`.vector'. For example, the following code computes the + norm of odd elements of `v' using the BLAS routine DNRM2, + + gsl_vector_view v_odd + = gsl_vector_subvector_with_stride (v, 1, 2, n/2); + double r = gsl_blas_dnrm2 (&v_odd.vector); + + The function `gsl_vector_const_subvector_with_stride' is equivalent + to `gsl_vector_subvector_with_stride' but can be used for vectors + which are declared `const'. + + - Function: gsl_vector_view gsl_vector_complex_real + (gsl_vector_complex *V) + - Function: gsl_vector_const_view gsl_vector_complex_const_real (const + gsl_vector_complex *V) + These functions return a vector view of the real parts of the + complex vector V. + + The function `gsl_vector_complex_const_real' is equivalent to + `gsl_vector_complex_real' but can be used for vectors which are + declared `const'. + + - Function: gsl_vector_view gsl_vector_complex_imag + (gsl_vector_complex *V) + - Function: gsl_vector_const_view gsl_vector_complex_const_imag (const + gsl_vector_complex *V) + These functions return a vector view of the imaginary parts of the + complex vector V. + + The function `gsl_vector_complex_const_imag' is equivalent to + `gsl_vector_complex_imag' but can be used for vectors which are + declared `const'. + + - Function: gsl_vector_view gsl_vector_view_array (double *BASE, + size_t N) + - Function: gsl_vector_const_view gsl_vector_const_view_array (const + double *BASE, size_t N) + These functions return a vector view of an array. The start of + the new vector is given by BASE and has N elements. + Mathematically, the I-th element of the new vector V' is given by, + + v'(i) = base[i] + + where the index I runs from 0 to `n-1'. + + The array containing the elements of V is not owned by the new + vector view. When the view goes out of scope the original array + will continue to exist. The original memory can only be + deallocated by freeing the original pointer BASE. Of course, the + original array should not be deallocated while the view is still + in use. + + The function `gsl_vector_const_view_array' is equivalent to + `gsl_vector_view_array' but can be used for arrays which are + declared `const'. + + - Function: gsl_vector_view gsl_vector_view_array_with_stride (double + * BASE, size_t STRIDE, size_t N) + - Function: gsl_vector_const_view + gsl_vector_const_view_array_with_stride (const double * BASE, size_t + STRIDE, size_t N) + These functions return a vector view of an array BASE with an + additional stride argument. The subvector is formed in the same + way as for `gsl_vector_view_array' but the new vector has N + elements with a step-size of STRIDE from one element to the next + in the original array. Mathematically, the I-th element of the new + vector V' is given by, + + v'(i) = base[i*stride] + + where the index I runs from 0 to `n-1'. + + Note that the view gives direct access to the underlying elements + of the original array. A vector view can be passed to any + subroutine which takes a vector argument just as a directly + allocated vector would be, using `&'VIEW`.vector'. + + The function `gsl_vector_const_view_array_with_stride' is + equivalent to `gsl_vector_view_array_with_stride' but can be used + for arrays which are declared `const'. + +  + File: gsl-ref.info, Node: Copying vectors, Next: Exchanging elements, Prev: Vector views, Up: Vectors + + Copying vectors + --------------- + + Common operations on vectors such as addition and multiplication are + available in the BLAS part of the library (*note BLAS Support::). + However, it is useful to have a small number of utility functions which + do not require the full BLAS code. The following functions fall into + this category. + + - Function: int gsl_vector_memcpy (gsl_vector * DEST, const gsl_vector + * SRC) + This function copies the elements of the vector SRC into the + vector DEST. The two vectors must have the same length. + + - Function: int gsl_vector_swap (gsl_vector * V, gsl_vector * W) + This function exchanges the elements of the vectors V and W by + copying. The two vectors must have the same length. + +  + File: gsl-ref.info, Node: Exchanging elements, Next: Vector operations, Prev: Copying vectors, Up: Vectors + + Exchanging elements + ------------------- + + The following function can be used to exchange, or permute, the elements + of a vector. + + - Function: int gsl_vector_swap_elements (gsl_vector * V, size_t I, + size_t J) + This function exchanges the I-th and J-th elements of the vector V + in-place. + + - Function: int gsl_vector_reverse (gsl_vector * V) + This function reverses the order of the elements of the vector V. + +  + File: gsl-ref.info, Node: Vector operations, Next: Finding maximum and minimum elements of vectors, Prev: Exchanging elements, Up: Vectors + + Vector operations + ----------------- + + The following operations are only defined for real vectors. + + - Function: int gsl_vector_add (gsl_vector * A, const gsl_vector * B) + This function adds the elements of vector B to the elements of + vector A, a'_i = a_i + b_i. The two vectors must have the same + length. + + - Function: int gsl_vector_sub (gsl_vector * A, const gsl_vector * B) + This function subtracts the elements of vector B from the elements + of vector A, a'_i = a_i - b_i. The two vectors must have the same + length. + + - Function: int gsl_vector_mul (gsl_vector * A, const gsl_vector * B) + This function multiplies the elements of vector A by the elements + of vector B, a'_i = a_i * b_i. The two vectors must have the same + length. + + - Function: int gsl_vector_div (gsl_vector * A, const gsl_vector * B) + This function divides the elements of vector A by the elements of + vector B, a'_i = a_i / b_i. The two vectors must have the same + length. + + - Function: int gsl_vector_scale (gsl_vector * A, const double X) + This function multiplies the elements of vector A by the constant + factor X, a'_i = x a_i. + + - Function: int gsl_vector_add_constant (gsl_vector * A, const double + X) + This function adds the constant value X to the elements of the + vector A, a'_i = a_i + x. + +  + File: gsl-ref.info, Node: Finding maximum and minimum elements of vectors, Next: Vector properties, Prev: Vector operations, Up: Vectors + + Finding maximum and minimum elements of vectors + ----------------------------------------------- + + - Function: double gsl_vector_max (const gsl_vector * V) + This function returns the maximum value in the vector V. + + - Function: double gsl_vector_min (const gsl_vector * V) + This function returns the minimum value in the vector V. + + - Function: void gsl_vector_minmax (const gsl_vector * V, double * + MIN_OUT, double * MAX_OUT) + This function returns the minimum and maximum values in the vector + V, storing them in MIN_OUT and MAX_OUT. + + - Function: size_t gsl_vector_max_index (const gsl_vector * V) + This function returns the index of the maximum value in the vector + V. When there are several equal maximum elements then the lowest + index is returned. + + - Function: size_t gsl_vector_min_index (const gsl_vector * V) + This function returns the index of the minimum value in the vector + V. When there are several equal minimum elements then the lowest + index is returned. + + - Function: void gsl_vector_minmax_index (const gsl_vector * V, size_t + * IMIN, size_t * IMAX) + This function returns the indices of the minimum and maximum + values in the vector V, storing them in IMIN and IMAX. When there + are several equal minimum or maximum elements then the lowest + indices are returned. + +  + File: gsl-ref.info, Node: Vector properties, Next: Example programs for vectors, Prev: Finding maximum and minimum elements of vectors, Up: Vectors + + Vector properties + ----------------- + + - Function: int gsl_vector_isnull (const gsl_vector * V) + This function returns 1 if all the elements of the vector V are + zero, and 0 otherwise. + +  + File: gsl-ref.info, Node: Example programs for vectors, Prev: Vector properties, Up: Vectors + + Example programs for vectors + ---------------------------- + + This program shows how to allocate, initialize and read from a vector + using the functions `gsl_vector_alloc', `gsl_vector_set' and + `gsl_vector_get'. + + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (3); + + for (i = 0; i < 3; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + for (i = 0; i < 100; i++) + { + printf ("v_%d = %g\n", i, gsl_vector_get (v, i)); + } + + return 0; + } + + Here is the output from the program. The final loop attempts to read + outside the range of the vector `v', and the error is trapped by the + range-checking code in `gsl_vector_get'. + + v_0 = 1.23 + v_1 = 2.23 + v_2 = 3.23 + gsl: vector_source.c:12: ERROR: index out of range + IOT trap/Abort (core dumped) + + The next program shows how to write a vector to a file. + + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (100); + + for (i = 0; i < 100; i++) + { + gsl_vector_set (v, i, 1.23 + i); + } + + { + FILE * f = fopen ("test.dat", "w"); + gsl_vector_fprintf (f, v, "%.5g"); + fclose (f); + } + return 0; + } + + After running this program the file `test.dat' should contain the + elements of `v', written using the format specifier `%.5g'. The vector + could then be read back in using the function `gsl_vector_fscanf (f, + v)' as follows: + + #include + #include + + int + main (void) + { + int i; + gsl_vector * v = gsl_vector_alloc (10); + + { + FILE * f = fopen ("test.dat", "r"); + gsl_vector_fscanf (f, v); + fclose (f); + } + + for (i = 0; i < 10; i++) + { + printf ("%g\n", gsl_vector_get(v, i)); + } + + return 0; + } + +  + File: gsl-ref.info, Node: Matrices, Next: Vector and Matrix References and Further Reading, Prev: Vectors, Up: Vectors and Matrices + + Matrices + ======== + + Matrices are defined by a `gsl_matrix' structure which describes a + generalized slice of a block. Like a vector it represents a set of + elements in an area of memory, but uses two indices instead of one. + + The `gsl_matrix' structure contains six components, the two + dimensions of the matrix, a physical dimension, a pointer to the memory + where the elements of the matrix are stored, DATA, a pointer to the + block owned by the matrix BLOCK, if any, and an ownership flag, OWNER. + The physical dimension determines the memory layout and can differ from + the matrix dimension to allow the use of submatrices. The `gsl_matrix' + structure is very simple and looks like this, + + typedef struct + { + size_t size1; + size_t size2; + size_t tda; + double * data; + gsl_block * block; + int owner; + } gsl_matrix; + + Matrices are stored in row-major order, meaning that each row of + elements forms a contiguous block in memory. This is the standard + "C-language ordering" of two-dimensional arrays. Note that FORTRAN + stores arrays in column-major order. The number of rows is SIZE1. The + range of valid row indices runs from 0 to `size1-1'. Similarly SIZE2 + is the number of columns. The range of valid column indices runs from + 0 to `size2-1'. The physical row dimension TDA, or "trailing + dimension", specifies the size of a row of the matrix as laid out in + memory. + + For example, in the following matrix SIZE1 is 3, SIZE2 is 4, and TDA + is 8. The physical memory layout of the matrix begins in the top left + hand-corner and proceeds from left to right along each row in turn. + + 00 01 02 03 XX XX XX XX + 10 11 12 13 XX XX XX XX + 20 21 22 23 XX XX XX XX + + Each unused memory location is represented by "`XX'". The pointer DATA + gives the location of the first element of the matrix in memory. The + pointer BLOCK stores the location of the memory block in which the + elements of the matrix are located (if any). If the matrix owns this + block then the OWNER field is set to one and the block will be + deallocated when the matrix is freed. If the matrix is only a slice of + a block owned by another object then the OWNER field is zero and any + underlying block will not be freed. + + The functions for allocating and accessing matrices are defined in + `gsl_matrix.h' + + * Menu: + + * Matrix allocation:: + * Accessing matrix elements:: + * Initializing matrix elements:: + * Reading and writing matrices:: + * Matrix views:: + * Creating row and column views:: + * Copying matrices:: + * Copying rows and columns:: + * Exchanging rows and columns:: + * Matrix operations:: + * Finding maximum and minimum elements of matrices:: + * Matrix properties:: + * Example programs for matrices:: + +  + File: gsl-ref.info, Node: Matrix allocation, Next: Accessing matrix elements, Up: Matrices + + Matrix allocation + ----------------- + + The functions for allocating memory to a matrix follow the style of + `malloc' and `free'. They also perform their own error checking. If + there is insufficient memory available to allocate a vector then the + functions call the GSL error handler (with an error number of + `GSL_ENOMEM') in addition to returning a null pointer. Thus if you use + the library error handler to abort your program then it isn't necessary + to check every `alloc'. + + - Function: gsl_matrix * gsl_matrix_alloc (size_t N1, size_t N2) + This function creates a matrix of size N1 rows by N2 columns, + returning a pointer to a newly initialized matrix struct. A new + block is allocated for the elements of the matrix, and stored in + the BLOCK component of the matrix struct. The block is "owned" by + the matrix, and will be deallocated when the matrix is deallocated. + + - Function: gsl_matrix * gsl_matrix_calloc (size_t N1, size_t N2) + This function allocates memory for a matrix of size N1 rows by N2 + columns and initializes all the elements of the matrix to zero. + + - Function: void gsl_matrix_free (gsl_matrix * M) + This function frees a previously allocated matrix M. If the + matrix was created using `gsl_matrix_alloc' then the block + underlying the matrix will also be deallocated. If the matrix has + been created from another object then the memory is still owned by + that object and will not be deallocated. + +  + File: gsl-ref.info, Node: Accessing matrix elements, Next: Initializing matrix elements, Prev: Matrix allocation, Up: Matrices + + Accessing matrix elements + ------------------------- + + The functions for accessing the elements of a matrix use the same range + checking system as vectors. You can turn off range checking by + recompiling your program with the preprocessor definition + `GSL_RANGE_CHECK_OFF'. + + The elements of the matrix are stored in "C-order", where the second + index moves continuously through memory. More precisely, the element + accessed by the function `gsl_matrix_get(m,i,j)' and + `gsl_matrix_set(m,i,j,x)' is + + m->data[i * m->tda + j] + + where TDA is the physical row-length of the matrix. + + - Function: double gsl_matrix_get (const gsl_matrix * M, size_t I, + size_t J) + This function returns the (I,J)th element of a matrix M. If I or + J lie outside the allowed range of 0 to N1-1 and 0 to N2-1 then + the error handler is invoked and 0 is returned. + + - Function: void gsl_matrix_set (gsl_matrix * M, size_t I, size_t J, + double X) + This function sets the value of the (I,J)th element of a matrix M + to X. If I or J lies outside the allowed range of 0 to N1-1 and 0 + to N2-1 then the error handler is invoked. + + - Function: double * gsl_matrix_ptr (gsl_matrix * M, size_t I, size_t + J) + - Function: const double * gsl_matrix_const_ptr (const gsl_matrix * M, + size_t I, size_t J) + These functions return a pointer to the (I,J)th element of a + matrix M. If I or J lie outside the allowed range of 0 to N1-1 + and 0 to N2-1 then the error handler is invoked and a null pointer + is returned. + +  + File: gsl-ref.info, Node: Initializing matrix elements, Next: Reading and writing matrices, Prev: Accessing matrix elements, Up: Matrices + + Initializing matrix elements + ---------------------------- + + - Function: void gsl_matrix_set_all (gsl_matrix * M, double X) + This function sets all the elements of the matrix M to the value X. + + - Function: void gsl_matrix_set_zero (gsl_matrix * M) + This function sets all the elements of the matrix M to zero. + + - Function: void gsl_matrix_set_identity (gsl_matrix * M) + This function sets the elements of the matrix M to the + corresponding elements of the identity matrix, m(i,j) = + \delta(i,j), i.e. a unit diagonal with all off-diagonal elements + zero. This applies to both square and rectangular matrices. + +  + File: gsl-ref.info, Node: Reading and writing matrices, Next: Matrix views, Prev: Initializing matrix elements, Up: Matrices + + Reading and writing matrices + ---------------------------- + + The library provides functions for reading and writing matrices to a + file as binary data or formatted text. + + - Function: int gsl_matrix_fwrite (FILE * STREAM, const gsl_matrix * M) + This function writes the elements of the matrix M to the stream + STREAM in binary format. The return value is 0 for success and + `GSL_EFAILED' if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + - Function: int gsl_matrix_fread (FILE * STREAM, gsl_matrix * M) + This function reads into the matrix M from the open stream STREAM + in binary format. The matrix M must be preallocated with the + correct dimensions since the function uses the size of M to + determine how many bytes to read. The return value is 0 for + success and `GSL_EFAILED' if there was a problem reading from the + file. The data is assumed to have been written in the native + binary format on the same architecture. + + - Function: int gsl_matrix_fprintf (FILE * STREAM, const gsl_matrix * + M, const char * FORMAT) + This function writes the elements of the matrix M line-by-line to + the stream STREAM using the format specifier FORMAT, which should + be one of the `%g', `%e' or `%f' formats for floating point + numbers and `%d' for integers. The function returns 0 for success + and `GSL_EFAILED' if there was a problem writing to the file. + + - Function: int gsl_matrix_fscanf (FILE * STREAM, gsl_matrix * M) + This function reads formatted data from the stream STREAM into the + matrix M. The matrix M must be preallocated with the correct + dimensions since the function uses the size of M to determine how + many numbers to read. The function returns 0 for success and + `GSL_EFAILED' if there was a problem reading from the file. + +  + File: gsl-ref.info, Node: Matrix views, Next: Creating row and column views, Prev: Reading and writing matrices, Up: Matrices + + Matrix views + ------------ + + A matrix view is a temporary object, stored on the stack, which can be + used to operate on a subset of matrix elements. Matrix views can be + defined for both constant and non-constant matrices using separate types + that preserve constness. A matrix view has the type `gsl_matrix_view' + and a constant matrix view has the type `gsl_matrix_const_view'. In + both cases the elements of the view can by accessed using the `matrix' + component of the view object. A pointer `gsl_matrix *' or `const + gsl_matrix *' can be obtained by taking the address of the `matrix' + component with the `&' operator. In addition to matrix views it is + also possible to create vector views of a matrix, such as row or column + views. + + - Function: gsl_matrix_view gsl_matrix_submatrix (gsl_matrix * M, + size_t K1, size_t K2, size_t N1, size_t N2) + - Function: gsl_matrix_const_view gsl_matrix_const_submatrix (const + gsl_matrix * M, size_t K1, size_t K2, size_t N1, size_t N2) + These functions return a matrix view of a submatrix of the matrix + M. The upper-left element of the submatrix is the element (K1,K2) + of the original matrix. The submatrix has N1 rows and N2 columns. + The physical number of columns in memory given by TDA is + unchanged. Mathematically, the (I,J)-th element of the new matrix + is given by, + + m'(i,j) = m->data[(k1*m->tda + k1) + i*m->tda + j] + + where the index I runs from 0 to `n1-1' and the index J runs from + 0 to `n2-1'. + + The `data' pointer of the returned matrix struct is set to null if + the combined parameters (I,J,N1,N2,TDA) overrun the ends of the + original matrix. + + The new matrix view is only a view of the block underlying the + existing matrix, M. The block containing the elements of M is not + owned by the new matrix view. When the view goes out of scope the + original matrix M and its block will continue to exist. The + original memory can only be deallocated by freeing the original + matrix. Of course, the original matrix should not be deallocated + while the view is still in use. + + The function `gsl_matrix_const_submatrix' is equivalent to + `gsl_matrix_submatrix' but can be used for matrices which are + declared `const'. + + - Function: gsl_matrix_view gsl_matrix_view_array (double * BASE, + size_t N1, size_t N2) + - Function: gsl_matrix_const_view gsl_matrix_const_view_array (const + double * BASE, size_t N1, size_t N2) + These functions return a matrix view of the array BASE. The + matrix has N1 rows and N2 columns. The physical number of columns + in memory is also given by N2. Mathematically, the (I,J)-th + element of the new matrix is given by, + + m'(i,j) = base[i*n2 + j] + + where the index I runs from 0 to `n1-1' and the index J runs from + 0 to `n2-1'. + + The new matrix is only a view of the array BASE. When the view + goes out of scope the original array BASE will continue to exist. + The original memory can only be deallocated by freeing the original + array. Of course, the original array should not be deallocated + while the view is still in use. + + The function `gsl_matrix_const_view_array' is equivalent to + `gsl_matrix_view_array' but can be used for matrices which are + declared `const'. + + - Function: gsl_matrix_view gsl_matrix_view_array_with_tda (double * + BASE, size_t N1, size_t N2, size_t TDA) + - Function: gsl_matrix_const_view gsl_matrix_const_view_array_with_tda + (const double * BASE, size_t N1, size_t N2, size_t TDA) + These functions return a matrix view of the array BASE with a + physical number of columns TDA which may differ from corresponding + the dimension of the matrix. The matrix has N1 rows and N2 + columns, and the physical number of columns in memory is given by + TDA. Mathematically, the (I,J)-th element of the new matrix is + given by, + + m'(i,j) = base[i*tda + j] + + where the index I runs from 0 to `n1-1' and the index J runs from + 0 to `n2-1'. + + The new matrix is only a view of the array BASE. When the view + goes out of scope the original array BASE will continue to exist. + The original memory can only be deallocated by freeing the original + array. Of course, the original array should not be deallocated + while the view is still in use. + + The function `gsl_matrix_const_view_array_with_tda' is equivalent + to `gsl_matrix_view_array_with_tda' but can be used for matrices + which are declared `const'. + + - Function: gsl_matrix_view gsl_matrix_view_vector (gsl_vector * V, + size_t N1, size_t N2) + - Function: gsl_matrix_const_view gsl_matrix_const_view_vector (const + gsl_vector * V, size_t N1, size_t N2) + These functions return a matrix view of the vector V. The matrix + has N1 rows and N2 columns. The vector must have unit stride. The + physical number of columns in memory is also given by N2. + Mathematically, the (I,J)-th element of the new matrix is given by, + + m'(i,j) = v->data[i*n2 + j] + + where the index I runs from 0 to `n1-1' and the index J runs from + 0 to `n2-1'. + + The new matrix is only a view of the vector V. When the view goes + out of scope the original vector V will continue to exist. The + original memory can only be deallocated by freeing the original + vector. Of course, the original vector should not be deallocated + while the view is still in use. + + The function `gsl_matrix_const_view_vector' is equivalent to + `gsl_matrix_view_vector' but can be used for matrices which are + declared `const'. + + - Function: gsl_matrix_view gsl_matrix_view_vector_with_tda + (gsl_vector * V, size_t N1, size_t N2, size_t TDA) + - Function: gsl_matrix_const_view + gsl_matrix_const_view_vector_with_tda (const gsl_vector * V, + size_t N1, size_t N2, size_t TDA) + These functions return a matrix view of the vector V with a + physical number of columns TDA which may differ from the + corresponding matrix dimension. The vector must have unit stride. + The matrix has N1 rows and N2 columns, and the physical number of + columns in memory is given by TDA. Mathematically, the (I,J)-th + element of the new matrix is given by, + + m'(i,j) = v->data[i*tda + j] + + where the index I runs from 0 to `n1-1' and the index J runs from + 0 to `n2-1'. + + The new matrix is only a view of the vector V. When the view goes + out of scope the original vector V will continue to exist. The + original memory can only be deallocated by freeing the original + vector. Of course, the original vector should not be deallocated + while the view is still in use. + + The function `gsl_matrix_const_view_vector_with_tda' is equivalent + to `gsl_matrix_view_vector_with_tda' but can be used for matrices + which are declared `const'. + +  + File: gsl-ref.info, Node: Creating row and column views, Next: Copying matrices, Prev: Matrix views, Up: Matrices + + Creating row and column views + ----------------------------- + + In general there are two ways to access an object, by reference or by + copying. The functions described in this section create vector views + which allow access to a row or column of a matrix by reference. + Modifying elements of the view is equivalent to modifying the matrix, + since both the vector view and the matrix point to the same memory + block. + + - Function: gsl_vector_view gsl_matrix_row (gsl_matrix * M, size_t I) + - Function: gsl_vector_const_view gsl_matrix_const_row (const + gsl_matrix * M, size_t I) + These functions return a vector view of the I-th row of the matrix + M. The `data' pointer of the new vector is set to null if I is + out of range. + + The function `gsl_vector_const_row' is equivalent to + `gsl_matrix_row' but can be used for matrices which are declared + `const'. + + - Function: gsl_vector_view gsl_matrix_column (gsl_matrix * M, size_t + J) + - Function: gsl_vector_const_view gsl_matrix_const_column (const + gsl_matrix * M, size_t J) + These functions return a vector view of the J-th column of the + matrix M. The `data' pointer of the new vector is set to null if + J is out of range. + + The function `gsl_vector_const_column' equivalent to + `gsl_matrix_column' but can be used for matrices which are declared + `const'. + + - Function: gsl_vector_view gsl_matrix_diagonal (gsl_matrix * M) + - Function: gsl_vector_const_view gsl_matrix_const_diagonal (const + gsl_matrix * M) + These functions returns a vector view of the diagonal of the matrix + M. The matrix M is not required to be square. For a rectangular + matrix the length of the diagonal is the same as the smaller + dimension of the matrix. + + The function `gsl_matrix_const_diagonal' is equivalent to + `gsl_matrix_diagonal' but can be used for matrices which are + declared `const'. + + - Function: gsl_vector_view gsl_matrix_subdiagonal (gsl_matrix * M, + size_t K) + - Function: gsl_vector_const_view gsl_matrix_const_subdiagonal (const + gsl_matrix * M, size_t K) + These functions return a vector view of the K-th subdiagonal of + the matrix M. The matrix M is not required to be square. The + diagonal of the matrix corresponds to k = 0. + + The function `gsl_matrix_const_subdiagonal' is equivalent to + `gsl_matrix_subdiagonal' but can be used for matrices which are + declared `const'. + + - Function: gsl_vector_view gsl_matrix_superdiagonal (gsl_matrix * M, + size_t K) + - Function: gsl_vector_const_view gsl_matrix_const_superdiagonal + (const gsl_matrix * M, size_t K) + These functions return a vector view of the K-th superdiagonal of + the matrix M. The matrix M is not required to be square. The + diagonal of the matrix corresponds to k = 0. + + The function `gsl_matrix_const_superdiagonal' is equivalent to + `gsl_matrix_superdiagonal' but can be used for matrices which are + declared `const'. + +  + File: gsl-ref.info, Node: Copying matrices, Next: Copying rows and columns, Prev: Creating row and column views, Up: Matrices + + Copying matrices + ---------------- + + - Function: int gsl_matrix_memcpy (gsl_matrix * DEST, const gsl_matrix + * SRC) + This function copies the elements of the matrix SRC into the + matrix DEST. The two matrices must have the same size. + + - Function: int gsl_matrix_swap (gsl_matrix * M1, gsl_matrix * M2) + This function exchanges the elements of the matrices M1 and M2 by + copying. The two matrices must have the same size. + +  + File: gsl-ref.info, Node: Copying rows and columns, Next: Exchanging rows and columns, Prev: Copying matrices, Up: Matrices + + Copying rows and columns + ------------------------ + + The functions described in this section copy a row or column of a matrix + into a vector. This allows the elements of the vector and the matrix to + be modified independently. Note that if the matrix and the vector point + to overlapping regions of memory then the result will be undefined. The + same effect can be achieved with more generality using + `gsl_vector_memcpy' with vector views of rows and columns. + + - Function: int gsl_matrix_get_row (gsl_vector * V, const gsl_matrix * + M, size_t I) + This function copies the elements of the I-th row of the matrix M + into the vector V. The length of the vector must be the same as + the length of the row. + + - Function: int gsl_matrix_get_col (gsl_vector * V, const gsl_matrix * + M, size_t J) + This function copies the elements of the J-th column of the matrix + M into the vector V. The length of the vector must be the same as + the length of the column. + + - Function: int gsl_matrix_set_row (gsl_matrix * M, size_t I, const + gsl_vector * V) + This function copies the elements of the vector V into the I-th + row of the matrix M. The length of the vector must be the same as + the length of the row. + + - Function: int gsl_matrix_set_col (gsl_matrix * M, size_t J, const + gsl_vector * V) + This function copies the elements of the vector V into the J-th + column of the matrix M. The length of the vector must be the same + as the length of the column. + +  + File: gsl-ref.info, Node: Exchanging rows and columns, Next: Matrix operations, Prev: Copying rows and columns, Up: Matrices + + Exchanging rows and columns + --------------------------- + + The following functions can be used to exchange the rows and columns of + a matrix. + + - Function: int gsl_matrix_swap_rows (gsl_matrix * M, size_t I, size_t + J) + This function exchanges the I-th and J-th rows of the matrix M + in-place. + + - Function: int gsl_matrix_swap_columns (gsl_matrix * M, size_t I, + size_t J) + This function exchanges the I-th and J-th columns of the matrix M + in-place. + + - Function: int gsl_matrix_swap_rowcol (gsl_matrix * M, size_t I, + size_t J) + This function exchanges the I-th row and J-th column of the matrix + M in-place. The matrix must be square for this operation to be + possible. + + - Function: int gsl_matrix_transpose_memcpy (gsl_matrix * DEST, const + gsl_matrix * SRC) + This function makes the matrix DEST the transpose of the matrix + SRC by copying the elements of SRC into DEST. This function works + for all matrices provided that the dimensions of the matrix DEST + match the transposed dimensions of the matrix SRC. + + - Function: int gsl_matrix_transpose (gsl_matrix * M) + This function replaces the matrix M by its transpose by copying + the elements of the matrix in-place. The matrix must be square + for this operation to be possible. + +  + File: gsl-ref.info, Node: Matrix operations, Next: Finding maximum and minimum elements of matrices, Prev: Exchanging rows and columns, Up: Matrices + + Matrix operations + ----------------- + + The following operations are defined for real and complex matrices. + + - Function: int gsl_matrix_add (gsl_matrix * A, const gsl_matrix * B) + This function adds the elements of matrix B to the elements of + matrix A, a'(i,j) = a(i,j) + b(i,j). The two matrices must have the + same dimensions. + + - Function: int gsl_matrix_sub (gsl_matrix * A, const gsl_matrix * B) + This function subtracts the elements of matrix B from the elements + of matrix A, a'(i,j) = a(i,j) - b(i,j). The two matrices must have + the same dimensions. + + - Function: int gsl_matrix_mul_elements (gsl_matrix * A, const + gsl_matrix * B) + This function multiplies the elements of matrix A by the elements + of matrix B, a'(i,j) = a(i,j) * b(i,j). The two matrices must have + the same dimensions. + + - Function: int gsl_matrix_div_elements (gsl_matrix * A, const + gsl_matrix * B) + This function divides the elements of matrix A by the elements of + matrix B, a'(i,j) = a(i,j) / b(i,j). The two matrices must have the + same dimensions. + + - Function: int gsl_matrix_scale (gsl_matrix * A, const double X) + This function multiplies the elements of matrix A by the constant + factor X, a'(i,j) = x a(i,j). + + - Function: int gsl_matrix_add_constant (gsl_matrix * A, const double + X) + This function adds the constant value X to the elements of the + matrix A, a'(i,j) = a(i,j) + x. + +  + File: gsl-ref.info, Node: Finding maximum and minimum elements of matrices, Next: Matrix properties, Prev: Matrix operations, Up: Matrices + + Finding maximum and minimum elements of matrices + ------------------------------------------------ + + The following operations are only defined for real matrices. + + - Function: double gsl_matrix_max (const gsl_matrix * M) + This function returns the maximum value in the matrix M. + + - Function: double gsl_matrix_min (const gsl_matrix * M) + This function returns the minimum value in the matrix M. + + - Function: void gsl_matrix_minmax (const gsl_matrix * M, double * + MIN_OUT, double * MAX_OUT) + This function returns the minimum and maximum values in the matrix + M, storing them in MIN_OUT and MAX_OUT. + + - Function: void gsl_matrix_max_index (const gsl_matrix * M, size_t * + IMAX, size_t * JMAX) + This function returns the indices of the maximum value in the + matrix M, storing them in IMAX and JMAX. When there are several + equal maximum elements then the first element found is returned, + searching in row-major order. + + - Function: void gsl_matrix_min_index (const gsl_matrix * M, size_t * + IMAX, size_t * JMAX) + This function returns the indices of the minimum value in the + matrix M, storing them in IMAX and JMAX. When there are several + equal minimum elements then the first element found is returned, + searching in row-major order. + + - Function: void gsl_matrix_minmax_index (const gsl_matrix * M, size_t + * IMIN, size_t * IMAX) + This function returns the indices of the minimum and maximum + values in the matrix M, storing them in (IMIN,JMIN) and + (IMAX,JMAX). When there are several equal minimum or maximum + elements then the first elements found are returned, searching in + row-major order. + +  + File: gsl-ref.info, Node: Matrix properties, Next: Example programs for matrices, Prev: Finding maximum and minimum elements of matrices, Up: Matrices + + Matrix properties + ----------------- + + - Function: int gsl_matrix_isnull (const gsl_matrix * M) + This function returns 1 if all the elements of the matrix M are + zero, and 0 otherwise. + +  + File: gsl-ref.info, Node: Example programs for matrices, Prev: Matrix properties, Up: Matrices + + Example programs for matrices + ----------------------------- + + The program below shows how to allocate, initialize and read from a + matrix using the functions `gsl_matrix_alloc', `gsl_matrix_set' and + `gsl_matrix_get'. + + #include + #include + + int + main (void) + { + int i, j; + gsl_matrix * m = gsl_matrix_alloc (10, 3); + + for (i = 0; i < 10; i++) + for (j = 0; j < 3; j++) + gsl_matrix_set (m, i, j, 0.23 + 100*i + j); + + for (i = 0; i < 100; i++) + for (j = 0; j < 3; j++) + printf ("m(%d,%d) = %g\n", i, j, + gsl_matrix_get (m, i, j)); + + return 0; + } + + Here is the output from the program. The final loop attempts to read + outside the range of the matrix `m', and the error is trapped by the + range-checking code in `gsl_matrix_get'. + + m(0,0) = 0.23 + m(0,1) = 1.23 + m(0,2) = 2.23 + m(1,0) = 100.23 + m(1,1) = 101.23 + m(1,2) = 102.23 + ... + m(9,2) = 902.23 + gsl: matrix_source.c:13: ERROR: first index out of range + IOT trap/Abort (core dumped) + + The next program shows how to write a matrix to a file. + + #include + #include + + int + main (void) + { + int i, j, k = 0; + gsl_matrix * m = gsl_matrix_alloc (100, 100); + gsl_matrix * a = gsl_matrix_alloc (100, 100); + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + gsl_matrix_set (m, i, j, 0.23 + i + j); + + { + FILE * f = fopen ("test.dat", "wb"); + gsl_matrix_fwrite (f, m); + fclose (f); + } + + { + FILE * f = fopen ("test.dat", "rb"); + gsl_matrix_fread (f, a); + fclose (f); + } + + for (i = 0; i < 100; i++) + for (j = 0; j < 100; j++) + { + double mij = gsl_matrix_get (m, i, j); + double aij = gsl_matrix_get (a, i, j); + if (mij != aij) k++; + } + + printf ("differences = %d (should be zero)\n", k); + return (k > 0); + } + + After running this program the file `test.dat' should contain the + elements of `m', written in binary format. The matrix which is read + back in using the function `gsl_matrix_fread' should be exactly equal + to the original matrix. + + The following program demonstrates the use of vector views. The + program computes the column-norms of a matrix. + + #include + #include + #include + #include + + int + main (void) + { + size_t i,j; + + gsl_matrix *m = gsl_matrix_alloc (10, 10); + + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + gsl_matrix_set (m, i, j, sin (i) + cos (j)); + + for (j = 0; j < 10; j++) + { + gsl_vector_view column = gsl_matrix_column (m, j); + double d; + + d = gsl_blas_dnrm2 (&column.vector); + + printf ("matrix column %d, norm = %g\n", j, d); + } + + gsl_matrix_free (m); + + return 0; + } + + Here is the output of the program, which can be confirmed using GNU + OCTAVE, + + $ ./a.out + + matrix column 0, norm = 4.31461 + matrix column 1, norm = 3.1205 + matrix column 2, norm = 2.19316 + matrix column 3, norm = 3.26114 + matrix column 4, norm = 2.53416 + matrix column 5, norm = 2.57281 + matrix column 6, norm = 4.20469 + matrix column 7, norm = 3.65202 + matrix column 8, norm = 2.08524 + matrix column 9, norm = 3.07313 + + octave> m = sin(0:9)' * ones(1,10) + + ones(10,1) * cos(0:9); + octave> sqrt(sum(m.^2)) + ans = + + 4.3146 3.1205 2.1932 3.2611 2.5342 2.5728 + 4.2047 3.6520 2.0852 3.0731 + +  + File: gsl-ref.info, Node: Vector and Matrix References and Further Reading, Prev: Matrices, Up: Vectors and Matrices + + References and Further Reading + ============================== + + The block, vector and matrix objects in GSL follow the `valarray' model + of C++. A description of this model can be found in the following + reference, + + B. Stroustrup, `The C++ Programming Language' (3rd Ed), Section + 22.4 Vector Arithmetic. Addison-Wesley 1997, ISBN 0-201-88954-4. + +  + File: gsl-ref.info, Node: Permutations, Next: Combinations, Prev: Vectors and Matrices, Up: Top + + Permutations + ************ + + This chapter describes functions for creating and manipulating + permutations. A permutation p is represented by an array of n integers + in the range 0 .. n-1, where each value p_i occurs once and only once. + The application of a permutation p to a vector v yields a new vector v' + where v'_i = v_{p_i}. For example, the array (0,1,3,2) represents a + permutation which exchanges the last two elements of a four element + vector. The corresponding identity permutation is (0,1,2,3). + + Note that the permutations produced by the linear algebra routines + correspond to the exchange of matrix columns, and so should be + considered as applying to row-vectors in the form v' = v P rather than + column-vectors, when permuting the elements of a vector. + + The functions described in this chapter are defined in the header + file `gsl_permutation.h'. + + * Menu: + + * The Permutation struct:: + * Permutation allocation:: + * Accessing permutation elements:: + * Permutation properties:: + * Permutation functions:: + * Applying Permutations:: + * Reading and writing permutations:: + * Permutations in Cyclic Form:: + * Permutation Examples:: + * Permutation References and Further Reading:: + +  + File: gsl-ref.info, Node: The Permutation struct, Next: Permutation allocation, Up: Permutations + + The Permutation struct + ====================== + + A permutation is stored by a structure containing two components, the + size of the permutation and a pointer to the permutation array. The + elements of the permutation array are all of type `size_t'. The + `gsl_permutation' structure looks like this, + + typedef struct + { + size_t size; + size_t * data; + } gsl_permutation; + +  + File: gsl-ref.info, Node: Permutation allocation, Next: Accessing permutation elements, Prev: The Permutation struct, Up: Permutations + + Permutation allocation + ====================== + + - Function: gsl_permutation * gsl_permutation_alloc (size_t N) + This function allocates memory for a new permutation of size N. + The permutation is not initialized and its elements are undefined. + Use the function `gsl_permutation_calloc' if you want to create a + permutation which is initialized to the identity. A null pointer is + returned if insufficient memory is available to create the + permutation. + + - Function: gsl_permutation * gsl_permutation_calloc (size_t N) + This function allocates memory for a new permutation of size N and + initializes it to the identity. A null pointer is returned if + insufficient memory is available to create the permutation. + + - Function: void gsl_permutation_init (gsl_permutation * P) + This function initializes the permutation P to the identity, i.e. + (0,1,2,...,n-1). + + - Function: void gsl_permutation_free (gsl_permutation * P) + This function frees all the memory used by the permutation P. + + - Function: int gsl_permutation_memcpy (gsl_permutation * DEST, const + gsl_permutation * SRC) + This function copies the elements of the permutation SRC into the + permutation DEST. The two permutations must have the same size. + +  + File: gsl-ref.info, Node: Accessing permutation elements, Next: Permutation properties, Prev: Permutation allocation, Up: Permutations + + Accessing permutation elements + ============================== + + The following functions can be used to access and manipulate + permutations. + + - Function: size_t gsl_permutation_get (const gsl_permutation * P, + const size_t I) + This function returns the value of the I-th element of the + permutation P. If I lies outside the allowed range of 0 to N-1 + then the error handler is invoked and 0 is returned. + + - Function: int gsl_permutation_swap (gsl_permutation * P, const + size_t I, const size_t J) + This function exchanges the I-th and J-th elements of the + permutation P. + +  + File: gsl-ref.info, Node: Permutation properties, Next: Permutation functions, Prev: Accessing permutation elements, Up: Permutations + + Permutation properties + ====================== + + - Function: size_t gsl_permutation_size (const gsl_permutation * P) + This function returns the size of the permutation P. + + - Function: size_t * gsl_permutation_data (const gsl_permutation * P) + This function returns a pointer to the array of elements in the + permutation P. + + - Function: int gsl_permutation_valid (gsl_permutation * P) + This function checks that the permutation P is valid. The N + elements should contain each of the numbers 0 .. N-1 once and only + once. + +  + File: gsl-ref.info, Node: Permutation functions, Next: Applying Permutations, Prev: Permutation properties, Up: Permutations + + Permutation functions + ===================== + + - Function: void gsl_permutation_reverse (gsl_permutation * P) + This function reverses the elements of the permutation P. + + - Function: int gsl_permutation_inverse (gsl_permutation * INV, const + gsl_permutation * P) + This function computes the inverse of the permutation P, storing + the result in INV. + + - Function: int gsl_permutation_next (gsl_permutation * P) + This function advances the permutation P to the next permutation + in lexicographic order and returns `GSL_SUCCESS'. If no further + permutations are available it returns `GSL_FAILURE' and leaves P + unmodified. Starting with the identity permutation and repeatedly + applying this function will iterate through all possible + permutations of a given order. + + - Function: int gsl_permutation_prev (gsl_permutation * P) + This function steps backwards from the permutation P to the + previous permutation in lexicographic order, returning + `GSL_SUCCESS'. If no previous permutation is available it returns + `GSL_FAILURE' and leaves P unmodified. + +  + File: gsl-ref.info, Node: Applying Permutations, Next: Reading and writing permutations, Prev: Permutation functions, Up: Permutations + + Applying Permutations + ===================== + + - Function: int gsl_permute (const size_t * P, double * DATA, size_t + STRIDE, size_t N) + This function applies the permutation P to the array DATA of size + N with stride STRIDE. + + - Function: int gsl_permute_inverse (const size_t * P, double * DATA, + size_t STRIDE, size_t N) + This function applies the inverse of the permutation P to the + array DATA of size N with stride STRIDE. + + - Function: int gsl_permute_vector (const gsl_permutation * P, + gsl_vector * V) + This function applies the permutation P to the elements of the + vector V, considered as a row-vector acted on by a permutation + matrix from the right, v' = v P. The j-th column of the + permutation matrix P is given by the p_j-th column of the identity + matrix. The permutation P and the vector V must have the same + length. + + - Function: int gsl_permute_vector_inverse (const gsl_permutation * P, + gsl_vector * V) + This function applies the inverse of the permutation P to the + elements of the vector V, considered as a row-vector acted on by + an inverse permutation matrix from the right, v' = v P^T. Note + that for permutation matrices the inverse is the same as the + transpose. The j-th column of the permutation matrix P is given by + the p_j-th column of the identity matrix. The permutation P and + the vector V must have the same length. + + - Function: int gsl_permutation_mul (gsl_permutation * P, const + gsl_permutation * PA, const gsl_permutation * PB) + This function combines the two permutations PA and PB into a + single permutation P, where p = pa . pb. The permutation P is + equivalent to applying pb first and then PA. + +  + File: gsl-ref.info, Node: Reading and writing permutations, Next: Permutations in Cyclic Form, Prev: Applying Permutations, Up: Permutations + + Reading and writing permutations + ================================ + + The library provides functions for reading and writing permutations to a + file as binary data or formatted text. + + - Function: int gsl_permutation_fwrite (FILE * STREAM, const + gsl_permutation * P) + This function writes the elements of the permutation P to the + stream STREAM in binary format. The function returns + `GSL_EFAILED' if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + - Function: int gsl_permutation_fread (FILE * STREAM, gsl_permutation + * P) + This function reads into the permutation P from the open stream + STREAM in binary format. The permutation P must be preallocated + with the correct length since the function uses the size of P to + determine how many bytes to read. The function returns + `GSL_EFAILED' if there was a problem reading from the file. The + data is assumed to have been written in the native binary format + on the same architecture. + + - Function: int gsl_permutation_fprintf (FILE * STREAM, const + gsl_permutation * P, const char *FORMAT) + This function writes the elements of the permutation P + line-by-line to the stream STREAM using the format specifier + FORMAT, which should be suitable for a type of SIZE_T. On a GNU + system the type modifier `Z' represents `size_t', so `"%Zu\n"' is + a suitable format. The function returns `GSL_EFAILED' if there + was a problem writing to the file. + + - Function: int gsl_permutation_fscanf (FILE * STREAM, gsl_permutation + * P) + This function reads formatted data from the stream STREAM into the + permutation P. The permutation P must be preallocated with the + correct length since the function uses the size of P to determine + how many numbers to read. The function returns `GSL_EFAILED' if + there was a problem reading from the file. + +  + File: gsl-ref.info, Node: Permutations in Cyclic Form, Next: Permutation Examples, Prev: Reading and writing permutations, Up: Permutations + + Permutations in Cyclic Form + =========================== + + A permutation can be represented in both linear and cyclic notations. + The functions described in this section can be used to convert between + the two forms. + + The linear notation is an index mapping, and has already been + described above. The cyclic notation represents a permutation as a + series of circular rearrangements of groups of elements, or "cycles". + + Any permutation can be decomposed into a combination of cycles. For + example, under the cycle (1 2 3), 1 is replaced by 2, 2 is replaced by 3 + and 3 is replaced by 1 in a circular fashion. Cycles of different sets + of elements can be combined independently, for example (1 2 3) (4 5) + combines the cycle (1 2 3) with the cycle (4 5), which is an exchange of + elements 4 and 5. A cycle of length one represents an element which is + unchanged by the permutation and is referred to as a "singleton". + + The cyclic notation for a permutation is not unique, but can be + rearranged into a unique "canonical form" by a reordering of elements. + The library uses the canonical form defined in Knuth's `Art of Computer + Programming' (Vol 1, 3rd Ed, 1997) Section 1.3.3, p.178. + + The procedure for obtaining the canonical form given by Knuth is, + + 1. Write all singleton cycles explicitly + + 2. Within each cycle, put the smallest number first + + 3. Order the cycles in decreasing order of the first number in the + cycle. + + For example, the linear representation (2 4 3 0 1) is represented as (1 + 4) (0 2 3) in canonical form. The permutation corresponds to an + exchange of elements 1 and 4, and rotation of elements 0, 2 and 3. + + The important property of the canonical form is that it can be + reconstructed from the contents of each cycle without the brackets. In + addition, by removing the brackets it can be considered as a linear + representation of a different permutation. In the example given above + the permutation (2 4 3 0 1) would become (1 4 0 2 3). This mapping + between linear permutations defined by the canonical form has many + important uses in the theory of permutations. + + - Function: int gsl_permutation_linear_to_canonical (gsl_permutation * + Q, const gsl_permutation * P) + This function computes the canonical form of the permutation P and + stores it in the output argument Q. + + - Function: int gsl_permutation_canonical_to_linear (gsl_permutation * + P, const gsl_permutation * Q) + This function converts a permutation Q in canonical form back into + linear form storing it in the output argument P. + + - Function: size_t gsl_permutation_inversions (const gsl_permutation * + P) + This function counts the number of inversions in the permutation P. + + - Function: size_t gsl_permutation_linear_cycles (const + gsl_permutation * P) + This function counts the number of cycles in the permutation P. + + - Function: size_t gsl_permutation_canonical_cycles (const + gsl_permutation * Q) + This function counts the number of cycles in the permutation Q, + where Q is given in canonical form. + +  + File: gsl-ref.info, Node: Permutation Examples, Next: Permutation References and Further Reading, Prev: Permutations in Cyclic Form, Up: Permutations + + Examples + ======== + + The example program below creates a random permutation by shuffling and + finds its inverse. + + #include + #include + #include + #include + + int + main (void) + { + const size_t N = 10; + const gsl_rng_type * T; + gsl_rng * r; + + gsl_permutation * p = gsl_permutation_alloc (N); + gsl_permutation * q = gsl_permutation_alloc (N); + + gsl_rng_env_setup(); + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + printf ("initial permutation:"); + gsl_permutation_init (p); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf (" random permutation:"); + gsl_ran_shuffle (r, p->data, N, sizeof(size_t)); + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + + printf ("inverse permutation:"); + gsl_permutation_inverse (q, p); + gsl_permutation_fprintf (stdout, q, " %u"); + printf ("\n"); + + return 0; + } + + Here is the output from the program, + + bash$ ./a.out + initial permutation: 0 1 2 3 4 5 6 7 8 9 + random permutation: 1 3 5 2 7 6 0 4 9 8 + inverse permutation: 6 0 3 1 7 2 5 4 9 8 + + The random permutation `p[i]' and its inverse `q[i]' are related + through the identity `p[q[i]] = i', which can be verified from the + output. + + The next example program steps forwards through all possible 3-rd + order permutations, starting from the identity, + + #include + #include + + int + main (void) + { + gsl_permutation * p = gsl_permutation_alloc (3); + + gsl_permutation_init (p); + + do + { + gsl_permutation_fprintf (stdout, p, " %u"); + printf ("\n"); + } + while (gsl_permutation_next(p) == GSL_SUCCESS); + + return 0; + } + + Here is the output from the program, + + bash$ ./a.out + 0 1 2 + 0 2 1 + 1 0 2 + 1 2 0 + 2 0 1 + 2 1 0 + + All 6 permutations are generated in lexicographic order. To reverse the + sequence, begin with the final permutation (which is the reverse of the + identity) and replace `gsl_permutation_next' with + `gsl_permutation_prev'. + +  + File: gsl-ref.info, Node: Permutation References and Further Reading, Prev: Permutation Examples, Up: Permutations + + References and Further Reading + ============================== + + The subject of permutations is covered extensively in Knuth's `Sorting + and Searching', + + Donald E. Knuth, `The Art of Computer Programming: Sorting and + Searching' (Vol 3, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + + For the definition of the "canonical form" see, + + Donald E. Knuth, `The Art of Computer Programming: Fundamental + Algorithms' (Vol 1, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + Section 1.3.3, `An Unusual Correspondence', p.178-179. + +  + File: gsl-ref.info, Node: Combinations, Next: Sorting, Prev: Permutations, Up: Top + + Combinations + ************ + + This chapter describes functions for creating and manipulating + combinations. A combination c is represented by an array of k integers + in the range 0 .. n-1, where each value c_i is from the range 0 .. n-1 + and occurs at most once. The combination c corresponds to indices of k + elements chosen from an n element vector. Combinations are useful for + iterating over all k-element subsets of a set. + + The functions described in this chapter are defined in the header + file `gsl_combination.h'. + + * Menu: + + * The Combination struct:: + * Combination allocation:: + * Accessing combination elements:: + * Combination properties:: + * Combination functions:: + * Reading and writing combinations:: + * Combination Examples:: + * Combination References and Further Reading:: + +  + File: gsl-ref.info, Node: The Combination struct, Next: Combination allocation, Up: Combinations + + The Combination struct + ====================== + + A combination is stored by a structure containing three components, the + values of n and k, and a pointer to the combination array. The + elements of the combination array are all of type `size_t', and are + stored in increasing order. The `gsl_combination' structure looks like + this, + + typedef struct + { + size_t n; + size_t k; + size_t *data; + } gsl_combination; + +  + File: gsl-ref.info, Node: Combination allocation, Next: Accessing combination elements, Prev: The Combination struct, Up: Combinations + + Combination allocation + ====================== + + - Function: gsl_combination * gsl_combination_alloc (size_t N, size_t + K) + This function allocates memory for a new combination with + parameters N, K. The combination is not initialized and its + elements are undefined. Use the function `gsl_combination_calloc' + if you want to create a combination which is initialized to the + lexicographically first combination. A null pointer is returned if + insufficient memory is available to create the combination. + + - Function: gsl_combination * gsl_combination_calloc (size_t N, size_t + K) + This function allocates memory for a new combination with + parameters N, K and initializes it to the lexicographically first + combination. A null pointer is returned if insufficient memory is + available to create the combination. + + - Function: void gsl_combination_init_first (gsl_combination * C) + This function initializes the combination C to the + lexicographically first combination, i.e. (0,1,2,...,k-1). + + - Function: void gsl_combination_init_last (gsl_combination * C) + This function initializes the combination C to the + lexicographically last combination, i.e. (n-k,n-k+1,...,n-1). + + - Function: void gsl_combination_free (gsl_combination * C) + This function frees all the memory used by the combination C. + + - Function: int gsl_combination_memcpy (gsl_combination * DEST, const + gsl_combination * SRC) + This function copies the elements of the combination SRC into the + combination DEST. The two combinations must have the same sizes. + +  + File: gsl-ref.info, Node: Accessing combination elements, Next: Combination properties, Prev: Combination allocation, Up: Combinations + + Accessing combination elements + ============================== + + The following function can be used to access combinations elements. + + - Function: size_t gsl_combination_get (const gsl_combination * C, + const size_t I) + This function returns the value of the I-th element of the + combination C. If I lies outside the allowed range of 0 to K-1 + then the error handler is invoked and 0 is returned. + +  + File: gsl-ref.info, Node: Combination properties, Next: Combination functions, Prev: Accessing combination elements, Up: Combinations + + Combination properties + ====================== + + - Function: size_t gsl_combination_n (const gsl_combination * C) + This function returns the n parameter of the combination C. + + - Function: size_t gsl_combination_k (const gsl_combination * C) + This function returns the k parameter of the combination C. + + - Function: size_t * gsl_combination_data (const gsl_combination * C) + This function returns a pointer to the array of elements in the + combination C. + + - Function: int gsl_combination_valid (gsl_combination * C) + This function checks that the combination C is valid. The K + elements should contain numbers from range 0 .. N-1, each number + at most once. The numbers have to be in increasing order. + +  + File: gsl-ref.info, Node: Combination functions, Next: Reading and writing combinations, Prev: Combination properties, Up: Combinations + + Combination functions + ===================== + + - Function: int gsl_combination_next (gsl_combination * C) + This function advances the combination C to the next combination + in lexicographic order and returns `GSL_SUCCESS'. If no further + combinations are available it returns `GSL_FAILURE' and leaves C + unmodified. Starting with the first combination and repeatedly + applying this function will iterate through all possible + combinations of a given order. + + - Function: int gsl_combination_prev (gsl_combination * C) + This function steps backwards from the combination C to the + previous combination in lexicographic order, returning + `GSL_SUCCESS'. If no previous combination is available it returns + `GSL_FAILURE' and leaves C unmodified. + +  + File: gsl-ref.info, Node: Reading and writing combinations, Next: Combination Examples, Prev: Combination functions, Up: Combinations + + Reading and writing combinations + ================================ + + The library provides functions for reading and writing combinations to a + file as binary data or formatted text. + + - Function: int gsl_combination_fwrite (FILE * STREAM, const + gsl_combination * C) + This function writes the elements of the combination C to the + stream STREAM in binary format. The function returns + `GSL_EFAILED' if there was a problem writing to the file. Since + the data is written in the native binary format it may not be + portable between different architectures. + + - Function: int gsl_combination_fread (FILE * STREAM, gsl_combination + * C) + This function reads into the combination C from the open stream + STREAM in binary format. The combination C must be preallocated + with correct values of n and k since the function uses the size of + C to determine how many bytes to read. The function returns + `GSL_EFAILED' if there was a problem reading from the file. The + data is assumed to have been written in the native binary format + on the same architecture. + + - Function: int gsl_combination_fprintf (FILE * STREAM, const + gsl_combination * C, const char *FORMAT) + This function writes the elements of the combination C + line-by-line to the stream STREAM using the format specifier + FORMAT, which should be suitable for a type of SIZE_T. On a GNU + system the type modifier `Z' represents `size_t', so `"%Zu\n"' is + a suitable format. The function returns `GSL_EFAILED' if there + was a problem writing to the file. + + - Function: int gsl_combination_fscanf (FILE * STREAM, gsl_combination + * C) + This function reads formatted data from the stream STREAM into the + combination C. The combination C must be preallocated with + correct values of n and k since the function uses the size of C to + determine how many numbers to read. The function returns + `GSL_EFAILED' if there was a problem reading from the file. + +  + File: gsl-ref.info, Node: Combination Examples, Next: Combination References and Further Reading, Prev: Reading and writing combinations, Up: Combinations + + Examples + ======== + + The example program below prints all subsets of the set {1,2,3,4} + ordered by size. Subsets of the same size are ordered + lexicographically. + + #include + #include + + int + main (void) + { + gsl_combination * c; + size_t i; + + printf ("All subsets of {0,1,2,3} by size:\n") ; + for (i = 0; i <= 4; i++) + { + c = gsl_combination_calloc (4, i); + do + { + printf ("{"); + gsl_combination_fprintf (stdout, c, " %u"); + printf (" }\n"); + } + while (gsl_combination_next (c) == GSL_SUCCESS); + gsl_combination_free (c); + } + + return 0; + } + + Here is the output from the program, + + bash$ ./a.out + + All subsets of {0,1,2,3} by size: + { } + { 0 } + { 1 } + { 2 } + { 3 } + { 0 1 } + { 0 2 } + { 0 3 } + { 1 2 } + { 1 3 } + { 2 3 } + { 0 1 2 } + { 0 1 3 } + { 0 2 3 } + { 1 2 3 } + { 0 1 2 3 } + + All 16 subsets are generated, and the subsets of each size are sorted + lexicographically. + +  + File: gsl-ref.info, Node: Combination References and Further Reading, Prev: Combination Examples, Up: Combinations + + References and Further Reading + ============================== + + Further information on combinations can be found in, + + Donald L. Kreher, Douglas R. Stinson, `Combinatorial Algorithms: + Generation, Enumeration and Search', 1998, CRC Press LLC, ISBN + 084933988X + + Donald E. Knuth, `The Art of Computer Programming: Combinatorial + Algorithms' (Vol 4, pre-fascicle 2c) + + +  + File: gsl-ref.info, Node: Sorting, Next: BLAS Support, Prev: Combinations, Up: Top + + Sorting + ******* + + This chapter describes functions for sorting data, both directly and + indirectly (using an index). All the functions use the "heapsort" + algorithm. Heapsort is an O(N \log N) algorithm which operates + in-place. It does not require any additional storage and provides + consistent performance. The running time for its worst-case (ordered + data) is not significantly longer than the average and best cases. + Note that the heapsort algorithm does not preserve the relative + ordering of equal elements -- it is an "unstable" sort. However the + resulting order of equal elements will be consistent across different + platforms when using these functions. + + * Menu: + + * Sorting objects:: + * Sorting vectors:: + * Selecting the k smallest or largest elements:: + * Computing the rank:: + * Sorting Examples:: + * Sorting References and Further Reading:: + +  + File: gsl-ref.info, Node: Sorting objects, Next: Sorting vectors, Up: Sorting + + Sorting objects + =============== + + The following function provides a simple alternative to the standard + library function `qsort'. It is intended for systems lacking `qsort', + not as a replacement for it. The function `qsort' should be used + whenever possible, as it will be faster and can provide stable ordering + of equal elements. Documentation for `qsort' is available in the `GNU + C Library Reference Manual'. + + The functions described in this section are defined in the header + file `gsl_heapsort.h'. + + - Function: void gsl_heapsort (void * ARRAY, size_t COUNT, size_t + SIZE, gsl_comparison_fn_t COMPARE) + This function sorts the COUNT elements of the array ARRAY, each of + size SIZE, into ascending order using the comparison function + COMPARE. The type of the comparison function is defined by, + + int (*gsl_comparison_fn_t) (const void * a, + const void * b) + + A comparison function should return a negative integer if the first + argument is less than the second argument, `0' if the two arguments + are equal and a positive integer if the first argument is greater + than the second argument. + + For example, the following function can be used to sort doubles + into ascending numerical order. + + int + compare_doubles (const double * a, + const double * b) + { + if (*a > *b) + return 1; + else if (*a < *b) + return -1; + else + return 0; + } + + The appropriate function call to perform the sort is, + + gsl_heapsort (array, count, sizeof(double), + compare_doubles); + + Note that unlike `qsort' the heapsort algorithm cannot be made into + a stable sort by pointer arithmetic. The trick of comparing + pointers for equal elements in the comparison function does not + work for the heapsort algorithm. The heapsort algorithm performs + an internal rearrangement of the data which destroys its initial + ordering. + + - Function: int gsl_heapsort_index (size_t * P, const void * ARRAY, + size_t COUNT, size_t SIZE, gsl_comparison_fn_t COMPARE) + This function indirectly sorts the COUNT elements of the array + ARRAY, each of size SIZE, into ascending order using the + comparison function COMPARE. The resulting permutation is stored + in P, an array of length N. The elements of P give the index of + the array element which would have been stored in that position if + the array had been sorted in place. The first element of P gives + the index of the least element in ARRAY, and the last element of P + gives the index of the greatest element in ARRAY. The array + itself is not changed. + +  + File: gsl-ref.info, Node: Sorting vectors, Next: Selecting the k smallest or largest elements, Prev: Sorting objects, Up: Sorting + + Sorting vectors + =============== + + The following functions will sort the elements of an array or vector, + either directly or indirectly. They are defined for all real and + integer types using the normal suffix rules. For example, the `float' + versions of the array functions are `gsl_sort_float' and + `gsl_sort_float_index'. The corresponding vector functions are + `gsl_sort_vector_float' and `gsl_sort_vector_float_index'. The + prototypes are available in the header files `gsl_sort_float.h' + `gsl_sort_vector_float.h'. The complete set of prototypes can be + included using the header files `gsl_sort.h' and `gsl_sort_vector.h'. + + There are no functions for sorting complex arrays or vectors, since + the ordering of complex numbers is not uniquely defined. To sort a + complex vector by magnitude compute a real vector containing the + magnitudes of the complex elements, and sort this vector indirectly. + The resulting index gives the appropriate ordering of the original + complex vector. + + - Function: void gsl_sort (double * DATA, size_t STRIDE, size_t N) + This function sorts the N elements of the array DATA with stride + STRIDE into ascending numerical order. + + - Function: void gsl_sort_vector (gsl_vector * V) + This function sorts the elements of the vector V into ascending + numerical order. + + - Function: int gsl_sort_index (size_t * P, const double * DATA, + size_t STRIDE, size_t N) + This function indirectly sorts the N elements of the array DATA + with stride STRIDE into ascending order, storing the resulting + permutation in P. The array P must be allocated to a sufficient + length to store the N elements of the permutation. The elements + of P give the index of the array element which would have been + stored in that position if the array had been sorted in place. + The array DATA is not changed. + + - Function: int gsl_sort_vector_index (gsl_permutation * P, const + gsl_vector * V) + This function indirectly sorts the elements of the vector V into + ascending order, storing the resulting permutation in P. The + elements of P give the index of the vector element which would + have been stored in that position if the vector had been sorted in + place. The first element of P gives the index of the least element + in V, and the last element of P gives the index of the greatest + element in V. The vector V is not changed. + +  + File: gsl-ref.info, Node: Selecting the k smallest or largest elements, Next: Computing the rank, Prev: Sorting vectors, Up: Sorting + + Selecting the k smallest or largest elements + ============================================ + + The functions described in this section select the k smallest or + largest elements of a data set of size N. The routines use an O(kN) + direct insertion algorithm which is suited to subsets that are small + compared with the total size of the dataset. For example, the routines + are useful for selecting the 10 largest values from one million data + points, but not for selecting the largest 100,000 values. If the + subset is a significant part of the total dataset it may be faster to + sort all the elements of the dataset directly with an O(N \log N) + algorithm and obtain the smallest or largest values that way. + + - Function: void gsl_sort_smallest (double * DEST, size_t K, const + double * SRC, size_t STRIDE, size_t N) + This function copies the K smallest elements of the array SRC, of + size N and stride STRIDE, in ascending numerical order in DEST. + The size K of the subset must be less than or equal to N. The + data SRC is not modified by this operation. + + - Function: void gsl_sort_largest (double * DEST, size_t K, const + double * SRC, size_t STRIDE, size_t N) + This function copies the K largest elements of the array SRC, of + size N and stride STRIDE, in descending numerical order in DEST. K + must be less than or equal to N. The data SRC is not modified by + this operation. + + - Function: void gsl_sort_vector_smallest (double * DEST, size_t K, + const gsl_vector * V) + - Function: void gsl_sort_vector_largest (double * DEST, size_t K, + const gsl_vector * V) + These functions copy the K smallest or largest elements of the + vector V into the array DEST. K must be less than or equal to the + length of the vector V. + + The following functions find the indices of the k smallest or + largest elements of a dataset, + + - Function: void gsl_sort_smallest_index (size_t * P, size_t K, const + double * SRC, size_t STRIDE, size_t N) + This function stores the indices of the K smallest elements of the + array SRC, of size N and stride STRIDE, in the array P. The + indices are chosen so that the corresponding data is in ascending + numerical order. K must be less than or equal to N. The data SRC + is not modified by this operation. + + - Function: void gsl_sort_largest_index (size_t * P, size_t K, const + double * SRC, size_t STRIDE, size_t N) + This function stores the indices of the K largest elements of the + array SRC, of size N and stride STRIDE, in the array P. The + indices are chosen so that the corresponding data is in descending + numerical order. K must be less than or equal to N. The data SRC + is not modified by this operation. + + - Function: void gsl_sort_vector_smallest_index (size_t * P, size_t K, + const gsl_vector * V) + - Function: void gsl_sort_vector_largest_index (size_t * P, size_t K, + const gsl_vector * V) + These functions store the indices of the K smallest or largest + elements of the vector V in the array P. K must be less than or + equal to the length of the vector V. + +  + File: gsl-ref.info, Node: Computing the rank, Next: Sorting Examples, Prev: Selecting the k smallest or largest elements, Up: Sorting + + Computing the rank + ================== + + The "rank" of an element is its order in the sorted data. The rank is + the inverse of the index permutation, P. It can be computed using the + following algorithm, + + for (i = 0; i < p->size; i++) + { + size_t pi = p->data[i]; + rank->data[pi] = i; + } + + This can be computed directly from the function + `gsl_permutation_inverse(rank,p)'. + + The following function will print the rank of each element of the + vector V, + + void + print_rank (gsl_vector * v) + { + size_t i; + size_t n = v->size; + gsl_permutation * perm = gsl_permutation_alloc(n); + gsl_permutation * rank = gsl_permutation_alloc(n); + + gsl_sort_vector_index (perm, v); + gsl_permutation_inverse (rank, perm); + + for (i = 0; i < n; i++) + { + double vi = gsl_vector_get(v, i); + printf ("element = %d, value = %g, rank = %d\n", + i, vi, rank->data[i]); + } + + gsl_permutation_free (perm); + gsl_permutation_free (rank); + } + +  + File: gsl-ref.info, Node: Sorting Examples, Next: Sorting References and Further Reading, Prev: Computing the rank, Up: Sorting + + Examples + ======== + + The following example shows how to use the permutation P to print the + elements of the vector V in ascending order, + + gsl_sort_vector_index (p, v); + + for (i = 0; i < v->size; i++) + { + double vpi = gsl_vector_get (v, p->data[i]); + printf ("order = %d, value = %g\n", i, vpi); + } + + The next example uses the function `gsl_sort_smallest' to select the 5 + smallest numbers from 100000 uniform random variates stored in an array, + + #include + #include + + int + main (void) + { + const gsl_rng_type * T; + gsl_rng * r; + + size_t i, k = 5, N = 100000; + + double * x = malloc (N * sizeof(double)); + double * small = malloc (k * sizeof(double)); + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc (T); + + for (i = 0; i < N; i++) + { + x[i] = gsl_rng_uniform(r); + } + + gsl_sort_smallest (small, k, x, 1, N); + + printf ("%d smallest values from %d\n", k, N); + + for (i = 0; i < k; i++) + { + printf ("%d: %.18f\n", i, small[i]); + } + return 0; + } + The output lists the 5 smallest values, in ascending order, + + $ ./a.out + + 5 smallest values from 100000 + 0: 0.000003489200025797 + 1: 0.000008199829608202 + 2: 0.000008953968062997 + 3: 0.000010712770745158 + 4: 0.000033531803637743 + +  + File: gsl-ref.info, Node: Sorting References and Further Reading, Prev: Sorting Examples, Up: Sorting + + References and Further Reading + ============================== + + The subject of sorting is covered extensively in Knuth's `Sorting and + Searching', + + Donald E. Knuth, `The Art of Computer Programming: Sorting and + Searching' (Vol 3, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896850. + + The Heapsort algorithm is described in the following book, + + Robert Sedgewick, `Algorithms in C', Addison-Wesley, ISBN + 0201514257. + +  + File: gsl-ref.info, Node: BLAS Support, Next: Linear Algebra, Prev: Sorting, Up: Top + + BLAS Support + ************ + + The Basic Linear Algebra Subprograms (BLAS) define a set of fundamental + operations on vectors and matrices which can be used to create optimized + higher-level linear algebra functionality. + + The library provides a low-level layer which corresponds directly to + the C-language BLAS standard, referred to here as "CBLAS", and a + higher-level interface for operations on GSL vectors and matrices. + Users who are interested in simple operations on GSL vector and matrix + objects should use the high-level layer, which is declared in the file + `gsl_blas.h'. This should satisfy the needs of most users. Note that + GSL matrices are implemented using dense-storage so the interface only + includes the corresponding dense-storage BLAS functions. The full BLAS + functionality for band-format and packed-format matrices is available + through the low-level CBLAS interface. + + The interface for the `gsl_cblas' layer is specified in the file + `gsl_cblas.h'. This interface corresponds to the BLAS Technical + Forum's draft standard for the C interface to legacy BLAS + implementations. Users who have access to other conforming CBLAS + implementations can use these in place of the version provided by the + library. Note that users who have only a Fortran BLAS library can use + a CBLAS conformant wrapper to convert it into a CBLAS library. A + reference CBLAS wrapper for legacy Fortran implementations exists as + part of the draft CBLAS standard and can be obtained from Netlib. The + complete set of CBLAS functions is listed in an appendix (*note GSL + CBLAS Library::). + + There are three levels of BLAS operations, + + Level 1 + Vector operations, e.g. y = \alpha x + y + + Level 2 + Matrix-vector operations, e.g. y = \alpha A x + \beta y + + Level 3 + Matrix-matrix operations, e.g. C = \alpha A B + C + + Each routine has a name which specifies the operation, the type of + matrices involved and their precisions. Some of the most common + operations and their names are given below, + + DOT + scalar product, x^T y + + AXPY + vector sum, \alpha x + y + + MV + matrix-vector product, A x + + SV + matrix-vector solve, inv(A) x + + MM + matrix-matrix product, A B + + SM + matrix-matrix solve, inv(A) B + + The type of matrices are, + + GE + general + + GB + general band + + SY + symmetric + + SB + symmetric band + + SP + symmetric packed + + HE + hermitian + + HB + hermitian band + + HP + hermitian packed + + TR + triangular + + TB + triangular band + + TP + triangular packed + + Each operation is defined for four precisions, + + S + single real + + D + double real + + C + single complex + + Z + double complex + + Thus, for example, the name SGEMM stands for "single-precision general + matrix-matrix multiply" and ZGEMM stands for "double-precision complex + matrix-matrix multiply". + + * Menu: + + * GSL BLAS Interface:: + * BLAS Examples:: + * BLAS References and Further Reading:: + +  + File: gsl-ref.info, Node: GSL BLAS Interface, Next: BLAS Examples, Up: BLAS Support + + GSL BLAS Interface + ================== + + GSL provides dense vector and matrix objects, based on the relevant + built-in types. The library provides an interface to the BLAS + operations which apply to these objects. The interface to this + functionality is given in the file `gsl_blas.h'. + + * Menu: + + * Level 1 GSL BLAS Interface:: + * Level 2 GSL BLAS Interface:: + * Level 3 GSL BLAS Interface:: + +  + File: gsl-ref.info, Node: Level 1 GSL BLAS Interface, Next: Level 2 GSL BLAS Interface, Up: GSL BLAS Interface + + Level 1 + ------- + + - Function: int gsl_blas_sdsdot (float ALPHA, const gsl_vector_float * + X, const gsl_vector_float * Y, float * RESULT) + This function computes the sum \alpha + x^T y for the vectors X + and Y, returning the result in RESULT. + + - Function: int gsl_blas_sdot (const gsl_vector_float * X, const + gsl_vector_float * Y, float * RESULT) + - Function: int gsl_blas_dsdot (const gsl_vector_float * X, const + gsl_vector_float * Y, double * RESULT) + - Function: int gsl_blas_ddot (const gsl_vector * X, const gsl_vector + * Y, double * RESULT) + These functions compute the scalar product x^T y for the vectors X + and Y, returning the result in RESULT. + + - Function: int gsl_blas_cdotu (const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, gsl_complex_float * DOTU) + - Function: int gsl_blas_zdotu (const gsl_vector_complex * X, const + gsl_vector_complex * Y, gsl_complex * DOTU) + These functions compute the complex scalar product x^T y for the + vectors X and Y, returning the result in RESULT + + - Function: int gsl_blas_cdotc (const gsl_vector_complex_float * X, + const gsl_vector_complex_float * Y, gsl_complex_float * DOTC) + - Function: int gsl_blas_zdotc (const gsl_vector_complex * X, const + gsl_vector_complex * Y, gsl_complex * DOTC) + These functions compute the complex conjugate scalar product x^H y + for the vectors X and Y, returning the result in RESULT + + - Function: float gsl_blas_snrm2 (const gsl_vector_float * X) + - Function: double gsl_blas_dnrm2 (const gsl_vector * X) + These functions compute the Euclidean norm ||x||_2 = \sqrt {\sum + x_i^2} of the vector X. + + - Function: float gsl_blas_scnrm2 (const gsl_vector_complex_float * X) + - Function: double gsl_blas_dznrm2 (const gsl_vector_complex * X) + These functions compute the Euclidean norm of the complex vector X, + ||x||_2 = \sqrt {\sum (\Re(x_i)^2 + \Im(x_i)^2)}. + + + - Function: float gsl_blas_sasum (const gsl_vector_float * X) + - Function: double gsl_blas_dasum (const gsl_vector * X) + These functions compute the absolute sum \sum |x_i| of the + elements of the vector X. + + - Function: float gsl_blas_scasum (const gsl_vector_complex_float * X) + - Function: double gsl_blas_dzasum (const gsl_vector_complex * X) + These functions compute the sum of the magnitudes of the real and + imaginary parts of the complex vector X, \sum |\Re(x_i)| + + |\Im(x_i)|. + + - Function: CBLAS_INDEX_t gsl_blas_isamax (const gsl_vector_float * X) + - Function: CBLAS_INDEX_t gsl_blas_idamax (const gsl_vector * X) + - Function: CBLAS_INDEX_t gsl_blas_icamax (const + gsl_vector_complex_float * X) + - Function: CBLAS_INDEX_t gsl_blas_izamax (const gsl_vector_complex * + X) + These functions return the index of the largest element of the + vector X. The largest element is determined by its absolute + magnitude for real vector and by the sum of the magnitudes of the + real and imaginary parts |\Re(x_i)| + |\Im(x_i)| for complex + vectors. If the largest value occurs several times then the index + of the first occurrence is returned. + + - Function: int gsl_blas_sswap (gsl_vector_float * X, gsl_vector_float + * Y) + - Function: int gsl_blas_dswap (gsl_vector * X, gsl_vector * Y) + - Function: int gsl_blas_cswap (gsl_vector_complex_float * X, + gsl_vector_complex_float * Y) + - Function: int gsl_blas_zswap (gsl_vector_complex * X, + gsl_vector_complex * Y) + These functions exchange the elements of the vectors X and Y. + + - Function: int gsl_blas_scopy (const gsl_vector_float * X, + gsl_vector_float * Y) + - Function: int gsl_blas_dcopy (const gsl_vector * X, gsl_vector * Y) + - Function: int gsl_blas_ccopy (const gsl_vector_complex_float * X, + gsl_vector_complex_float * Y) + - Function: int gsl_blas_zcopy (const gsl_vector_complex * X, + gsl_vector_complex * Y) + These functions copy the elements of the vector X into the vector + Y. + + - Function: int gsl_blas_saxpy (float ALPHA, const gsl_vector_float * + X, gsl_vector_float * Y) + - Function: int gsl_blas_daxpy (double ALPHA, const gsl_vector * X, + gsl_vector * Y) + - Function: int gsl_blas_caxpy (const gsl_complex_float ALPHA, const + gsl_vector_complex_float * X, gsl_vector_complex_float * Y) + - Function: int gsl_blas_zaxpy (const gsl_complex ALPHA, const + gsl_vector_complex * X, gsl_vector_complex * Y) + These functions compute the sum y = \alpha x + y for the vectors X + and Y. + + - Function: void gsl_blas_sscal (float ALPHA, gsl_vector_float * X) + - Function: void gsl_blas_dscal (double ALPHA, gsl_vector * X) + - Function: void gsl_blas_cscal (const gsl_complex_float ALPHA, + gsl_vector_complex_float * X) + - Function: void gsl_blas_zscal (const gsl_complex ALPHA, + gsl_vector_complex * X) + - Function: void gsl_blas_csscal (float ALPHA, + gsl_vector_complex_float * X) + - Function: void gsl_blas_zdscal (double ALPHA, gsl_vector_complex * X) + These functions rescale the vector X by the multiplicative factor + ALPHA. + + - Function: int gsl_blas_srotg (float A[], float B[], float C[], float + S[]) + - Function: int gsl_blas_drotg (double A[], double B[], double C[], + double S[]) + These functions compute a Givens rotation (c,s) which zeroes the + vector (a,b), + + [ c s ] [ a ] = [ r ] + [ -s c ] [ b ] [ 0 ] + + The variables A and B are overwritten by the routine. + + - Function: int gsl_blas_srot (gsl_vector_float * X, gsl_vector_float + * Y, float C, float S) + - Function: int gsl_blas_drot (gsl_vector * X, gsl_vector * Y, const + double C, const double S) + These functions apply a Givens rotation (x', y') = (c x + s y, -s + x + c y) to the vectors X, Y. + + - Function: int gsl_blas_srotmg (float D1[], float D2[], float B1[], + float B2, float P[]) + - Function: int gsl_blas_drotmg (double D1[], double D2[], double + B1[], double B2, double P[]) + These functions compute a modified Given's transformation. The + modified Given's transformation is defined in the original Level-1 + BLAS specification, given in the references. + + - Function: int gsl_blas_srotm (gsl_vector_float * X, gsl_vector_float + * Y, const float P[]) + - Function: int gsl_blas_drotm (gsl_vector * X, gsl_vector * Y, const + double P[]) + These functions apply a modified Given's transformation. Only in gsl-1.3/doc: gsl-ref.info-10 Only in gsl-1.3/doc: gsl-ref.info-11 Only in gsl-1.3/doc: gsl-ref.info-12 Only in gsl-1.3/doc: gsl-ref.info-13 Only in gsl-1.3/doc: gsl-ref.info-14 Only in gsl-1.3/doc: gsl-ref.info-15 Only in gsl-1.3/doc: gsl-ref.info-16 Only in gsl-1.3/doc: gsl-ref.info-17 Only in gsl-1.3/doc: gsl-ref.info-18 Only in gsl-1.3/doc: gsl-ref.info-19 diff -x.info* -rc2P gsl-1.3/doc/gsl-ref.info-2 gsl-1.4/doc/gsl-ref.info-2 *** gsl-1.3/doc/gsl-ref.info-2 Wed Dec 18 22:41:19 2002 --- gsl-1.4/doc/gsl-ref.info-2 Thu Aug 14 12:36:46 2003 *************** *** 1,3 **** ! This is gsl-ref.info, produced by makeinfo version 4.2 from gsl-ref.texi. --- 1,3 ---- ! This is gsl-ref.info, produced by makeinfo version 4.6 from gsl-ref.texi. *************** *** 8,1196 ****  ! File: gsl-ref.info, Node: Complex Numbers, Next: Polynomials, Prev: Mathematical Functions, Up: Top ! Complex Numbers ! *************** ! The functions described in this chapter provide support for complex ! numbers. The algorithms take care to avoid unnecessary intermediate ! underflows and overflows, allowing the functions to be evaluated over ! as much of the complex plane as possible. ! ! For multiple-valued functions the branch cuts have been chosen to ! follow the conventions of Abramowitz and Stegun in the `Handbook of ! Mathematical Functions'. The functions return principal values which are ! the same as those in GNU Calc, which in turn are the same as those in ! `Common Lisp, The Language (Second Edition)' (n.b. The second edition ! uses different definitions from the first edition) and the HP-28/48 ! series of calculators. ! ! The complex types are defined in the header file `gsl_complex.h', ! while the corresponding complex functions and arithmetic operations are ! defined in `gsl_complex_math.h'. * Menu: ! * Complex numbers:: ! * Properties of complex numbers:: ! * Complex arithmetic operators:: ! * Elementary Complex Functions:: ! * Complex Trigonometric Functions:: ! * Inverse Complex Trigonometric Functions:: ! * Complex Hyperbolic Functions:: ! * Inverse Complex Hyperbolic Functions:: ! * Complex Number References and Further Reading::  ! File: gsl-ref.info, Node: Complex numbers, Next: Properties of complex numbers, Up: Complex Numbers ! Complex numbers ! =============== ! Complex numbers are represented using the type `gsl_complex'. The ! internal representation of this type may vary across platforms and ! should not be accessed directly. The functions and macros described ! below allow complex numbers to be manipulated in a portable way. ! For reference, the default form of the `gsl_complex' type is given ! by the following struct, ! typedef struct ! { ! double dat[2]; ! } gsl_complex; ! The real and imaginary part are stored in contiguous elements of a two ! element array. This eliminates any padding between the real and ! imaginary parts, `dat[0]' and `dat[1]', allowing the struct to be ! mapped correctly onto packed complex arrays. ! ! - Function: gsl_complex gsl_complex_rect (double X, double Y) ! This function uses the rectangular cartesian components (X,Y) to ! return the complex number z = x + i y. ! ! - Function: gsl_complex gsl_complex_polar (double R, double THETA) ! This function returns the complex number z = r \exp(i \theta) = r ! (\cos(\theta) + i \sin(\theta)) from the polar representation ! (R,THETA). ! ! - Macro: GSL_REAL (Z) ! - Macro: GSL_IMAG (Z) ! These macros return the real and imaginary parts of the complex ! number Z. ! ! - Macro: GSL_SET_COMPLEX (ZP, X, Y) ! This macro uses the cartesian components (X,Y) to set the real and ! imaginary parts of the complex number pointed to by ZP. For ! example, - GSL_SET_COMPLEX(&z, 3, 4) ! sets Z to be 3 + 4i. ! - Macro: GSL_SET_REAL (ZP,X) ! - Macro: GSL_SET_IMAG (ZP,Y) ! These macros allow the real and imaginary parts of the complex ! number pointed to by ZP to be set independently.  ! File: gsl-ref.info, Node: Properties of complex numbers, Next: Complex arithmetic operators, Prev: Complex numbers, Up: Complex Numbers ! Properties of complex numbers ! ============================= ! - Function: double gsl_complex_arg (gsl_complex Z) ! This function returns the argument of the complex number Z, ! \arg(z), where -\pi < \arg(z) <= \pi. ! - Function: double gsl_complex_abs (gsl_complex Z) ! This function returns the magnitude of the complex number Z, |z|. ! - Function: double gsl_complex_abs2 (gsl_complex Z) ! This function returns the squared magnitude of the complex number ! Z, |z|^2. ! - Function: double gsl_complex_logabs (gsl_complex Z) ! This function returns the natural logarithm of the magnitude of the ! complex number Z, \log|z|. It allows an accurate evaluation of ! \log|z| when |z| is close to one. The direct evaluation of ! `log(gsl_complex_abs(z))' would lead to a loss of precision in ! this case.  ! File: gsl-ref.info, Node: Complex arithmetic operators, Next: Elementary Complex Functions, Prev: Properties of complex numbers, Up: Complex Numbers ! Complex arithmetic operators ! ============================ ! - Function: gsl_complex gsl_complex_add (gsl_complex A, gsl_complex B) ! This function returns the sum of the complex numbers A and B, ! z=a+b. ! - Function: gsl_complex gsl_complex_sub (gsl_complex A, gsl_complex B) ! This function returns the difference of the complex numbers A and ! B, z=a-b. ! - Function: gsl_complex gsl_complex_mul (gsl_complex A, gsl_complex B) ! This function returns the product of the complex numbers A and B, ! z=ab. ! - Function: gsl_complex gsl_complex_div (gsl_complex A, gsl_complex B) ! This function returns the quotient of the complex numbers A and B, ! z=a/b. ! - Function: gsl_complex gsl_complex_add_real (gsl_complex A, double X) ! This function returns the sum of the complex number A and the real ! number X, z=a+x. - - Function: gsl_complex gsl_complex_sub_real (gsl_complex A, double X) - This function returns the difference of the complex number A and - the real number X, z=a-x. ! - Function: gsl_complex gsl_complex_mul_real (gsl_complex A, double X) ! This function returns the product of the complex number A and the ! real number X, z=ax. ! - Function: gsl_complex gsl_complex_div_real (gsl_complex A, double X) ! This function returns the quotient of the complex number A and the ! real number X, z=a/x. ! - Function: gsl_complex gsl_complex_add_imag (gsl_complex A, double Y) ! This function returns the sum of the complex number A and the ! imaginary number iY, z=a+iy. - - Function: gsl_complex gsl_complex_sub_imag (gsl_complex A, double Y) - This function returns the difference of the complex number A and - the imaginary number iY, z=a-iy. ! - Function: gsl_complex gsl_complex_mul_imag (gsl_complex A, double Y) ! This function returns the product of the complex number A and the ! imaginary number iY, z=a*(iy). - - Function: gsl_complex gsl_complex_div_imag (gsl_complex A, double Y) - This function returns the quotient of the complex number A and the - imaginary number iY, z=a/(iy). ! - Function: gsl_complex gsl_complex_conjugate (gsl_complex Z) ! This function returns the complex conjugate of the complex number ! Z, z^* = x - i y. ! - Function: gsl_complex gsl_complex_inverse (gsl_complex Z) ! This function returns the inverse, or reciprocal, of the complex ! number Z, 1/z = (x - i y)/(x^2 + y^2). - - Function: gsl_complex gsl_complex_negative (gsl_complex Z) - This function returns the negative of the complex number Z, -z = - (-x) + i(-y).  ! File: gsl-ref.info, Node: Elementary Complex Functions, Next: Complex Trigonometric Functions, Prev: Complex arithmetic operators, Up: Complex Numbers ! Elementary Complex Functions ============================ ! - Function: gsl_complex gsl_complex_sqrt (gsl_complex Z) ! This function returns the square root of the complex number Z, ! \sqrt z. The branch cut is the negative real axis. The result ! always lies in the right half of the complex plane. ! ! - Function: gsl_complex gsl_complex_sqrt_real (double x) ! This function returns the complex square root of the real number ! X, where X may be negative. ! ! - Function: gsl_complex gsl_complex_pow (gsl_complex Z, gsl_complex A) ! The function returns the complex number Z raised to the complex ! power A, z^a. This is computed as \exp(\log(z)*a) using complex ! logarithms and complex exponentials. ! ! - Function: gsl_complex gsl_complex_pow_real (gsl_complex Z, double X) ! This function returns the complex number Z raised to the real ! power X, z^x. ! ! - Function: gsl_complex gsl_complex_exp (gsl_complex Z) ! This function returns the complex exponential of the complex number ! Z, \exp(z). ! ! - Function: gsl_complex gsl_complex_log (gsl_complex Z) ! This function returns the complex natural logarithm (base e) of ! the complex number Z, \log(z). The branch cut is the negative ! real axis. ! ! - Function: gsl_complex gsl_complex_log10 (gsl_complex Z) ! This function returns the complex base-10 logarithm of the complex ! number Z, \log_10 (z). - - Function: gsl_complex gsl_complex_log_b (gsl_complex Z, gsl_complex - B) - This function returns the complex base-B logarithm of the complex - number Z, \log_b(z). This quantity is computed as the ratio - \log(z)/\log(b).  ! File: gsl-ref.info, Node: Complex Trigonometric Functions, Next: Inverse Complex Trigonometric Functions, Prev: Elementary Complex Functions, Up: Complex Numbers - Complex Trigonometric Functions - =============================== ! - Function: gsl_complex gsl_complex_sin (gsl_complex Z) ! This function returns the complex sine of the complex number Z, ! \sin(z) = (\exp(iz) - \exp(-iz))/(2i). ! - Function: gsl_complex gsl_complex_cos (gsl_complex Z) ! This function returns the complex cosine of the complex number Z, ! \cos(z) = (\exp(iz) + \exp(-iz))/2. ! - Function: gsl_complex gsl_complex_tan (gsl_complex Z) ! This function returns the complex tangent of the complex number Z, ! \tan(z) = \sin(z)/\cos(z). ! - Function: gsl_complex gsl_complex_sec (gsl_complex Z) ! This function returns the complex secant of the complex number Z, ! \sec(z) = 1/\cos(z). ! - Function: gsl_complex gsl_complex_csc (gsl_complex Z) ! This function returns the complex cosecant of the complex number Z, ! \csc(z) = 1/\sin(z). - - Function: gsl_complex gsl_complex_cot (gsl_complex Z) - This function returns the complex cotangent of the complex number - Z, \cot(z) = 1/\tan(z).  ! File: gsl-ref.info, Node: Inverse Complex Trigonometric Functions, Next: Complex Hyperbolic Functions, Prev: Complex Trigonometric Functions, Up: Complex Numbers ! Inverse Complex Trigonometric Functions ! ======================================= - - Function: gsl_complex gsl_complex_arcsin (gsl_complex Z) - This function returns the complex arcsine of the complex number Z, - \arcsin(z). The branch cuts are on the real axis, less than -1 and - greater than 1. - - - Function: gsl_complex gsl_complex_arcsin_real (double Z) - This function returns the complex arcsine of the real number Z, - \arcsin(z). For z between -1 and 1, the function returns a real - value in the range (-\pi,\pi]. For z less than -1 the result has a - real part of -\pi/2 and a positive imaginary part. For z greater - than 1 the result has a real part of \pi/2 and a negative - imaginary part. - - - Function: gsl_complex gsl_complex_arccos (gsl_complex Z) - This function returns the complex arccosine of the complex number - Z, \arccos(z). The branch cuts are on the real axis, less than -1 - and greater than 1. - - - Function: gsl_complex gsl_complex_arccos_real (double Z) - This function returns the complex arccosine of the real number Z, - \arccos(z). For z between -1 and 1, the function returns a real - value in the range [0,\pi]. For z less than -1 the result has a - real part of \pi/2 and a negative imaginary part. For z greater - than 1 the result is purely imaginary and positive. - - - Function: gsl_complex gsl_complex_arctan (gsl_complex Z) - This function returns the complex arctangent of the complex number - Z, \arctan(z). The branch cuts are on the imaginary axis, below -i - and above i. - - - Function: gsl_complex gsl_complex_arcsec (gsl_complex Z) - This function returns the complex arcsecant of the complex number - Z, \arcsec(z) = \arccos(1/z). - - - Function: gsl_complex gsl_complex_arcsec_real (double Z) - This function returns the complex arcsecant of the real number Z, - \arcsec(z) = \arccos(1/z). - - - Function: gsl_complex gsl_complex_arccsc (gsl_complex Z) - This function returns the complex arccosecant of the complex - number Z, \arccsc(z) = \arcsin(1/z). - - - Function: gsl_complex gsl_complex_arccsc_real (double Z) - This function returns the complex arccosecant of the real number Z, - \arccsc(z) = \arcsin(1/z). - - - Function: gsl_complex gsl_complex_arccot (gsl_complex Z) - This function returns the complex arccotangent of the complex - number Z, \arccot(z) = \arctan(1/z).  ! File: gsl-ref.info, Node: Complex Hyperbolic Functions, Next: Inverse Complex Hyperbolic Functions, Prev: Inverse Complex Trigonometric Functions, Up: Complex Numbers ! Complex Hyperbolic Functions ============================ ! - Function: gsl_complex gsl_complex_sinh (gsl_complex Z) ! This function returns the complex hyperbolic sine of the complex ! number Z, \sinh(z) = (\exp(z) - \exp(-z))/2. ! ! - Function: gsl_complex gsl_complex_cosh (gsl_complex Z) ! This function returns the complex hyperbolic cosine of the complex ! number Z, \cosh(z) = (\exp(z) + \exp(-z))/2. - - Function: gsl_complex gsl_complex_tanh (gsl_complex Z) - This function returns the complex hyperbolic tangent of the - complex number Z, \tanh(z) = \sinh(z)/\cosh(z). ! - Function: gsl_complex gsl_complex_sech (gsl_complex Z) ! This function returns the complex hyperbolic secant of the complex ! number Z, \sech(z) = 1/\cosh(z). ! - Function: gsl_complex gsl_complex_csch (gsl_complex Z) ! This function returns the complex hyperbolic cosecant of the ! complex number Z, \csch(z) = 1/\sinh(z). ! - Function: gsl_complex gsl_complex_coth (gsl_complex Z) ! This function returns the complex hyperbolic cotangent of the ! complex number Z, \coth(z) = 1/\tanh(z).  ! File: gsl-ref.info, Node: Inverse Complex Hyperbolic Functions, Next: Complex Number References and Further Reading, Prev: Complex Hyperbolic Functions, Up: Complex Numbers ! Inverse Complex Hyperbolic Functions ! ==================================== ! - Function: gsl_complex gsl_complex_arcsinh (gsl_complex Z) ! This function returns the complex hyperbolic arcsine of the ! complex number Z, \arcsinh(z). The branch cuts are on the ! imaginary axis, below -i and above i. ! ! - Function: gsl_complex gsl_complex_arccosh (gsl_complex Z) ! This function returns the complex hyperbolic arccosine of the ! complex number Z, \arccosh(z). The branch cut is on the real axis, ! less than 1. ! ! - Function: gsl_complex gsl_complex_arccosh_real (double Z) ! This function returns the complex hyperbolic arccosine of the real ! number Z, \arccosh(z). ! ! - Function: gsl_complex gsl_complex_arctanh (gsl_complex Z) ! This function returns the complex hyperbolic arctangent of the ! complex number Z, \arctanh(z). The branch cuts are on the real ! axis, less than -1 and greater than 1. ! ! - Function: gsl_complex gsl_complex_arctanh_real (double Z) ! This function returns the complex hyperbolic arctangent of the real ! number Z, \arctanh(z). ! ! - Function: gsl_complex gsl_complex_arcsech (gsl_complex Z) ! This function returns the complex hyperbolic arcsecant of the ! complex number Z, \arcsech(z) = \arccosh(1/z). ! ! - Function: gsl_complex gsl_complex_arccsch (gsl_complex Z) ! This function returns the complex hyperbolic arccosecant of the ! complex number Z, \arccsch(z) = \arcsin(1/z). ! ! - Function: gsl_complex gsl_complex_arccoth (gsl_complex Z) ! This function returns the complex hyperbolic arccotangent of the ! complex number Z, \arccoth(z) = \arctanh(1/z).  ! File: gsl-ref.info, Node: Complex Number References and Further Reading, Prev: Inverse Complex Hyperbolic Functions, Up: Complex Numbers References and Further Reading ============================== ! The implementations of the elementary and trigonometric functions are based on the following papers, ! T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, ! "Implementing Complex Elementary Functions Using Exception ! Handling", `ACM Transactions on Mathematical Software', Volume 20 ! (1994), pp 215-244, Corrigenda, p553 ! ! T. E. Hull, Thomas F. Fairgrieve, Ping Tak Peter Tang, ! "Implementing the complex arcsin and arccosine functions using ! exception handling", `ACM Transactions on Mathematical Software', ! Volume 23 (1997) pp 299-335 ! ! The general formulas and details of branch cuts can be found in the ! following books, ! ! Abramowitz and Stegun, `Handbook of Mathematical Functions', ! "Circular Functions in Terms of Real and Imaginary Parts", Formulas ! 4.3.55-58, "Inverse Circular Functions in Terms of Real and ! Imaginary Parts", Formulas 4.4.37-39, "Hyperbolic Functions in ! Terms of Real and Imaginary Parts", Formulas 4.5.49-52, "Inverse ! Hyperbolic Functions - relation to Inverse Circular Functions", ! Formulas 4.6.14-19. ! ! Dave Gillespie, `Calc Manual', Free Software Foundation, ISBN ! 1-882114-18-3 ! !  ! File: gsl-ref.info, Node: Polynomials, Next: Special Functions, Prev: Complex Numbers, Up: Top ! ! Polynomials ! *********** ! ! This chapter describes functions for evaluating and solving ! polynomials. There are routines for finding real and complex roots of ! quadratic and cubic equations using analytic methods. An iterative ! polynomial solver is also available for finding the roots of general ! polynomials with real coefficients (of any order). The functions are ! declared in the header file `gsl_poly.h'. * Menu: ! * Polynomial Evaluation:: ! * Divided Difference Representation of Polynomials:: ! * Quadratic Equations:: ! * Cubic Equations:: ! * General Polynomial Equations:: ! * Roots of Polynomials Examples:: ! * Roots of Polynomials References and Further Reading::  ! File: gsl-ref.info, Node: Polynomial Evaluation, Next: Divided Difference Representation of Polynomials, Up: Polynomials ! Polynomial Evaluation ! ===================== ! - Function: double gsl_poly_eval (const double c[], const int LEN, ! const double X) ! This function evaluates the polynomial c[0] + c[1] x + c[2] x^2 + ! \dots + c[len-1] x^{len-1} using Horner's method for stability. ! The function is inlined when possible.  ! File: gsl-ref.info, Node: Divided Difference Representation of Polynomials, Next: Quadratic Equations, Prev: Polynomial Evaluation, Up: Polynomials ! Divided Difference Representation of Polynomials ! ================================================ ! The functions described here manipulate polynomials stored in ! Newton's divided-difference representation. The use of ! divided-differences is described in Abramowitz & Stegun sections ! 25.1.4, 25.2.26. ! ! - Function: int gsl_poly_dd_init (double dd[], const double xa[], ! const double ya[], size_t SIZE) ! This function computes a divided-difference representation of the ! interpolating polynomial for the points (XA, YA) stored in the ! arrays XA and YA of length SIZE. On output the ! divided-differences of (XA,YA) are stored in the array DD, also of ! length SIZE. ! ! - Function: double gsl_poly_dd_eval (const double dd[], const double ! xa[], const size_t SIZE, const double X) ! This function evaluates the polynomial stored in ! divided-difference form in the arrays DD and XA of length SIZE at ! the point X. ! ! - Function: int gsl_poly_dd_taylor (double c[], double XP, const ! double dd[], const double xa[], size_t SIZE, double w[]) ! This function converts the divided-difference representation of a ! polynomial to a Taylor expansion. The divided-difference ! representation is supplied in the arrays DD and XA of length SIZE. ! On output the Taylor coefficients of the polynomial expanded about ! the point XP are stored in the array C also of length SIZE. A ! workspace of length SIZE must be provided in the array W.  ! File: gsl-ref.info, Node: Quadratic Equations, Next: Cubic Equations, Prev: Divided Difference Representation of Polynomials, Up: Polynomials ! Quadratic Equations ! =================== ! - Function: int gsl_poly_solve_quadratic (double A, double B, double ! C, double *X0, double *X1) ! This function finds the real roots of the quadratic equation, ! a x^2 + b x + c = 0 ! The number of real roots (either zero or two) is returned, and ! their locations are stored in X0 and X1. If no real roots are ! found then X0 and X1 are not modified. When two real roots are ! found they are stored in X0 and X1 in ascending order. The case ! of coincident roots is not considered special. For example ! (x-1)^2=0 will have two roots, which happen to have exactly equal ! values. ! The number of roots found depends on the sign of the discriminant ! b^2 - 4 a c. This will be subject to rounding and cancellation ! errors when computed in double precision, and will also be subject ! to errors if the coefficients of the polynomial are inexact. ! These errors may cause a discrete change in the number of roots. ! However, for polynomials with small integer coefficients the ! discriminant can always be computed exactly. ! - Function: int gsl_poly_complex_solve_quadratic (double A, double B, ! double C, gsl_complex *Z0, gsl_complex *Z1) ! This function finds the complex roots of the quadratic equation, ! a z^2 + b z + c = 0 ! The number of complex roots is returned (always two) and the ! locations of the roots are stored in Z0 and Z1. The roots are ! returned in ascending order, sorted first by their real components ! and then by their imaginary components.  ! File: gsl-ref.info, Node: Cubic Equations, Next: General Polynomial Equations, Prev: Quadratic Equations, Up: Polynomials ! Cubic Equations =============== ! - Function: int gsl_poly_solve_cubic (double A, double B, double C, ! double *X0, double *X1, double *X2) ! This function finds the real roots of the cubic equation, ! x^3 + a x^2 + b x + c = 0 - with a leading coefficient of unity. The number of real roots - (either one or three) is returned, and their locations are stored - in X0, X1 and X2. If one real root is found then only X0 is - modified. When three real roots are found they are stored in X0, - X1 and X2 in ascending order. The case of coincident roots is not - considered special. For example, the equation (x-1)^3=0 will have - three roots with exactly equal values. ! - Function: int gsl_poly_complex_solve_cubic (double A, double B, ! double C, gsl_complex *Z0, gsl_complex *Z1, gsl_complex *Z2) ! This function finds the complex roots of the cubic equation, ! z^3 + a z^2 + b z + c = 0 ! The number of complex roots is returned (always three) and the ! locations of the roots are stored in Z0, Z1 and Z2. The roots are ! returned in ascending order, sorted first by their real components ! and then by their imaginary components.  ! File: gsl-ref.info, Node: General Polynomial Equations, Next: Roots of Polynomials Examples, Prev: Cubic Equations, Up: Polynomials ! General Polynomial Equations ! ============================ ! The roots of polynomial equations cannot be found analytically beyond ! the special cases of the quadratic, cubic and quartic equation. The ! algorithm described in this section uses an iterative method to find the ! approximate locations of roots of higher order polynomials. ! ! - Function: gsl_poly_complex_workspace * ! gsl_poly_complex_workspace_alloc (size_t N) ! This function allocates space for a `gsl_poly_complex_workspace' ! struct and a workspace suitable for solving a polynomial with N ! coefficients using the routine `gsl_poly_complex_solve'. ! The function returns a pointer to the newly allocated ! `gsl_poly_complex_workspace' if no errors were detected, and a null ! pointer in the case of error. ! - Function: void gsl_poly_complex_workspace_free ! (gsl_poly_complex_workspace * W) ! This function frees all the memory associated with the workspace W. ! ! - Function: int gsl_poly_complex_solve (const double * A, size_t N, ! gsl_poly_complex_workspace * W, gsl_complex_packed_ptr Z) ! This function computes the roots of the general polynomial P(x) = ! a_0 + a_1 x + a_2 x^2 + ... + a_{n-1} x^{n-1} using balanced-QR ! reduction of the companion matrix. The parameter N specifies the ! length of the coefficient array. The coefficient of the highest ! order term must be non-zero. The function requires a workspace W ! of the appropriate size. The n-1 roots are returned in the packed ! complex array Z of length 2(n-1), alternating real and imaginary ! parts. ! The function returns `GSL_SUCCESS' if all the roots are found and ! `GSL_EFAILED' if the QR reduction does not converge.  ! File: gsl-ref.info, Node: Roots of Polynomials Examples, Next: Roots of Polynomials References and Further Reading, Prev: General Polynomial Equations, Up: Polynomials Examples ======== ! To demonstrate the use of the general polynomial solver we will take ! the polynomial P(x) = x^5 - 1 which has the following roots, ! 1, e^{2\pi i /5}, e^{4\pi i /5}, e^{6\pi i /5}, e^{8\pi i /5} ! The following program will find these roots. #include ! #include int ! main (void) { ! int i; ! /* coefficient of P(x) = -1 + x^5 */ ! double a[6] = { -1, 0, 0, 0, 0, 1 }; ! double z[10]; ! gsl_poly_complex_workspace * w ! = gsl_poly_complex_workspace_alloc (6); ! gsl_poly_complex_solve (a, 6, w, z); ! gsl_poly_complex_workspace_free (w); ! for (i = 0; i < 5; i++) ! { ! printf("z%d = %+.18f %+.18f\n", ! i, z[2*i], z[2*i+1]); ! } return 0; } ! The output of the program is, ! ! bash$ ./a.out ! z0 = -0.809016994374947451 +0.587785252292473137 ! z1 = -0.809016994374947451 -0.587785252292473137 ! z2 = +0.309016994374947451 +0.951056516295153642 ! z3 = +0.309016994374947451 -0.951056516295153642 ! z4 = +1.000000000000000000 +0.000000000000000000 ! which agrees with the analytic result, z_n = \exp(2 \pi n i/5).  ! File: gsl-ref.info, Node: Roots of Polynomials References and Further Reading, Prev: Roots of Polynomials Examples, Up: Polynomials References and Further Reading ============================== ! The balanced-QR method and its error analysis is described in the ! following papers. ! R.S. Martin, G. Peters and J.H. Wilkinson, "The QR Algorithm for ! Real Hessenberg Matrices", `Numerische Mathematik', 14 (1970), ! 219-231. ! ! B.N. Parlett and C. Reinsch, "Balancing a Matrix for Calculation of ! Eigenvalues and Eigenvectors", `Numerische Mathematik', 13 (1969), ! 293-304. ! ! A. Edelman and H. Murakami, "Polynomial roots from companion matrix ! eigenvalues", `Mathematics of Computation', Vol. 64 No. 210 ! (1995), 763-776. ! !  ! File: gsl-ref.info, Node: Special Functions, Next: Vectors and Matrices, Prev: Polynomials, Up: Top ! ! Special Functions ! ***************** ! ! This chapter describes the GSL special function library. The library ! includes routines for calculating the values of Airy functions, Bessel ! functions, Clausen functions, Coulomb wave functions, Coupling ! coefficients, the Dawson function, Debye functions, Dilogarithms, ! Elliptic integrals, Jacobi elliptic functions, Error functions, ! Exponential integrals, Fermi-Dirac functions, Gamma functions, ! Gegenbauer functions, Hypergeometric functions, Laguerre functions, ! Legendre functions and Spherical Harmonics, the Psi (Digamma) Function, ! Synchrotron functions, Transport functions, Trigonometric functions and ! Zeta functions. Each routine also computes an estimate of the numerical ! error in the calculated value of the function. ! ! The functions are declared in individual header files, such as ! `gsl_sf_airy.h', `gsl_sf_bessel.h', etc. The complete set of header ! files can be included using the file `gsl_sf.h'. * Menu: ! * Special Function Usage:: ! * The gsl_sf_result struct:: ! * Special Function Modes:: ! * Airy Functions and Derivatives:: ! * Bessel Functions:: ! * Clausen Functions:: ! * Coulomb Functions:: ! * Coupling Coefficients:: ! * Dawson Function:: ! * Debye Functions:: ! * Dilogarithm:: ! * Elementary Operations:: ! * Elliptic Integrals:: ! * Elliptic Functions (Jacobi):: ! * Error Functions:: ! * Exponential Functions:: ! * Exponential Integrals:: ! * Fermi-Dirac Function:: ! * Gamma Function:: ! * Gegenbauer Functions:: ! * Hypergeometric Functions:: ! * Laguerre Functions:: ! * Lambert W Functions:: ! * Legendre Functions and Spherical Harmonics:: ! * Logarithm and Related Functions:: ! * Power Function:: ! * Psi (Digamma) Function:: ! * Synchrotron Functions:: ! * Transport Functions:: ! * Trigonometric Functions:: ! * Zeta Functions:: ! * Special Functions Examples:: ! * Special Functions References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Special Function Usage, Next: The gsl_sf_result struct, Up: Special Functions ! ! Usage ! ===== ! ! The special functions are available in two calling conventions, a ! "natural form" which returns the numerical value of the function and an ! "error-handling form" which returns an error code. The two types of ! function provide alternative ways of accessing the same underlying code. ! ! The "natural form" returns only the value of the function and can be ! used directly in mathematical expressions.. For example, the following ! function call will compute the value of the Bessel function J_0(x), ! ! double y = gsl_sf_bessel_J0 (x); ! ! There is no way to access an error code or to estimate the error using ! this method. To allow access to this information the alternative ! error-handling form stores the value and error in a modifiable argument, ! ! gsl_sf_result result; ! int status = gsl_sf_bessel_J0_e (x, &result); ! ! The error-handling functions have the suffix `_e'. The returned status ! value indicates error conditions such as overflow, underflow or loss of ! precision. If there are no errors the error-handling functions return ! `GSL_SUCCESS'.  ! File: gsl-ref.info, Node: The gsl_sf_result struct, Next: Special Function Modes, Prev: Special Function Usage, Up: Special Functions ! The gsl_sf_result struct ! ======================== ! The error handling form of the special functions always calculate an ! error estimate along with the value of the result. Therefore, ! structures are provided for amalgamating a value and error estimate. ! These structures are declared in the header file `gsl_sf_result.h'. ! The `gsl_sf_result' struct contains value and error fields. ! typedef struct ! { ! double val; ! double err; ! } gsl_sf_result; ! ! The field VAL contains the value and the field ERR contains an estimate ! of the absolute error in the value. ! ! In some cases, an overflow or underflow can be detected and handled ! by a function. In this case, it may be possible to return a scaling ! exponent as well as an error/value pair in order to save the result from ! exceeding the dynamic range of the built-in types. The ! `gsl_sf_result_e10' struct contains value and error fields as well as ! an exponent field such that the actual result is obtained as `result * ! 10^(e10)'. ! typedef struct ! { ! double val; ! double err; ! int e10; ! } gsl_sf_result_e10;  ! File: gsl-ref.info, Node: Special Function Modes, Next: Airy Functions and Derivatives, Prev: The gsl_sf_result struct, Up: Special Functions ! Modes ! ===== ! The goal of the library is to achieve double precision accuracy ! wherever possible. However the cost of evaluating some special ! functions to double precision can be significant, particularly where ! very high order terms are required. In these cases a `mode' argument ! allows the accuracy of the function to be reduced in order to improve ! performance. The following precision levels are available for the mode ! argument, ! `GSL_PREC_DOUBLE' ! Double-precision, a relative accuracy of approximately 2 * 10^-16. ! `GSL_PREC_SINGLE' ! Single-precision, a relative accuracy of approximately 10^-7. ! `GSL_PREC_APPROX' ! Approximate values, a relative accuracy of approximately 5 * 10^-4. ! The approximate mode provides the fastest evaluation at the lowest ! accuracy.  ! File: gsl-ref.info, Node: Airy Functions and Derivatives, Next: Bessel Functions, Prev: Special Function Modes, Up: Special Functions ! Airy Functions and Derivatives ============================== ! The Airy functions Ai(x) and Bi(x) are defined by the integral ! representations, ! Ai(x) = (1/\pi) \int_0^\infty \cos((1/3) t^3 + xt) dt ! Bi(x) = (1/\pi) \int_0^\infty (e^(-(1/3) t^3) + \sin((1/3) t^3 + xt)) dt ! For further information see Abramowitz & Stegun, Section 10.4. The Airy ! functions are defined in the header file `gsl_sf_airy.h'. ! * Menu: ! * Airy Functions:: ! * Derivatives of Airy Functions:: ! * Zeros of Airy Functions:: ! * Zeros of Derivatives of Airy Functions:: ! !  ! File: gsl-ref.info, Node: Airy Functions, Next: Derivatives of Airy Functions, Up: Airy Functions and Derivatives ! ! Airy Functions ! -------------- ! ! - Function: double gsl_sf_airy_Ai (double X, gsl_mode_t MODE) ! - Function: int gsl_sf_airy_Ai_e (double X, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute the Airy function Ai(x) with an accuracy ! specified by MODE. ! ! - Function: double gsl_sf_airy_Bi (double X, gsl_mode_t MODE) ! - Function: int gsl_sf_airy_Bi_e (double X, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute the Airy function Bi(x) with an accuracy ! specified by MODE. ! ! - Function: double gsl_sf_airy_Ai_scaled (double X, gsl_mode_t MODE) ! - Function: int gsl_sf_airy_Ai_scaled_e (double X, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute a scaled version of the Airy function ! S_A(x) Ai(x). For x>0 the scaling factor S_A(x) is \exp(+(2/3) ! x^(3/2)), and is 1 for x<0. ! ! - Function: double gsl_sf_airy_Bi_scaled (double X, gsl_mode_t MODE) ! - Function: int gsl_sf_airy_Bi_scaled_e (double X, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute a scaled version of the Airy function ! S_B(x) Bi(x). For x>0 the scaling factor S_B(x) is exp(-(2/3) ! x^(3/2)), and is 1 for x<0. ! !  ! File: gsl-ref.info, Node: Derivatives of Airy Functions, Next: Zeros of Airy Functions, Prev: Airy Functions, Up: Airy Functions and Derivatives ! ! Derivatives of Airy Functions ! ----------------------------- ! ! - Function: double gsl_sf_airy_Ai_deriv (double X, gsl_mode_t MODE) ! - Function: int gsl_sf_airy_Ai_deriv_e (double X, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute the Airy function derivative Ai'(x) with an ! accuracy specified by MODE. ! ! - Function: double gsl_sf_airy_Bi_deriv (double X, gsl_mode_t MODE) ! - Function: int gsl_sf_airy_Bi_deriv_e (double X, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute the Airy function derivative Bi'(x) with an ! accuracy specified by MODE. ! ! - Function: double gsl_sf_airy_Ai_deriv_scaled (double X, gsl_mode_t ! MODE) ! - Function: int gsl_sf_airy_Ai_deriv_scaled_e (double X, gsl_mode_t ! MODE, gsl_sf_result * RESULT) ! These routines compute the derivative of the scaled Airy function ! S_A(x) Ai(x). ! ! - Function: double gsl_sf_airy_Bi_deriv_scaled (double X, gsl_mode_t ! MODE) ! - Function: int gsl_sf_airy_Bi_deriv_scaled_e (double X, gsl_mode_t ! MODE, gsl_sf_result * RESULT) ! These routines compute the derivative of the scaled Airy function ! S_B(x) Bi(x). ! !  ! File: gsl-ref.info, Node: Zeros of Airy Functions, Next: Zeros of Derivatives of Airy Functions, Prev: Derivatives of Airy Functions, Up: Airy Functions and Derivatives ! ! Zeros of Airy Functions ! ----------------------- ! ! - Function: double gsl_sf_airy_zero_Ai (unsigned int S) ! - Function: int gsl_sf_airy_zero_Ai_e (unsigned int S, gsl_sf_result * ! RESULT) ! These routines compute the location of the S-th zero of the Airy ! function Ai(x). ! ! - Function: double gsl_sf_airy_zero_Bi (unsigned int S) ! - Function: int gsl_sf_airy_zero_Bi_e (unsigned int S, gsl_sf_result * ! RESULT) ! These routines compute the location of the S-th zero of the Airy ! function Bi(x). ! !  ! File: gsl-ref.info, Node: Zeros of Derivatives of Airy Functions, Prev: Zeros of Airy Functions, Up: Airy Functions and Derivatives ! ! Zeros of Derivatives of Airy Functions ! -------------------------------------- ! ! - Function: double gsl_sf_airy_zero_Ai_deriv (unsigned int S) ! - Function: int gsl_sf_airy_zero_Ai_deriv_e (unsigned int S, ! gsl_sf_result * RESULT) ! These routines compute the location of the S-th zero of the Airy ! function derivative Ai'(x). ! ! - Function: double gsl_sf_airy_zero_Bi_deriv (unsigned int S) ! - Function: int gsl_sf_airy_zero_Bi_deriv_e (unsigned int S, ! gsl_sf_result * RESULT) ! These routines compute the location of the S-th zero of the Airy ! function derivative Bi'(x).  ! File: gsl-ref.info, Node: Bessel Functions, Next: Clausen Functions, Prev: Airy Functions and Derivatives, Up: Special Functions ! Bessel Functions ! ================ ! The routines described in this section compute the Cylindrical Bessel ! functions J_n(x), Y_n(x), Modified cylindrical Bessel functions I_n(x), ! K_n(x), Spherical Bessel functions j_l(x), y_l(x), and Modified ! Spherical Bessel functions i_l(x), k_l(x). For more information see ! Abramowitz & Stegun, Chapters 9 and 10. The Bessel functions are ! defined in the header file `gsl_sf_bessel.h'. ! * Menu: ! * Regular Cylindrical Bessel Functions:: ! * Irregular Cylindrical Bessel Functions:: ! * Regular Modified Cylindrical Bessel Functions:: ! * Irregular Modified Cylindrical Bessel Functions:: ! * Regular Spherical Bessel Functions:: ! * Irregular Spherical Bessel Functions:: ! * Regular Modified Spherical Bessel Functions:: ! * Irregular Modified Spherical Bessel Functions:: ! * Regular Bessel Function - Fractional Order:: ! * Irregular Bessel Functions - Fractional Order:: ! * Regular Modified Bessel Functions - Fractional Order:: ! * Irregular Modified Bessel Functions - Fractional Order:: ! * Zeros of Regular Bessel Functions:: ! !  ! File: gsl-ref.info, Node: Regular Cylindrical Bessel Functions, Next: Irregular Cylindrical Bessel Functions, Up: Bessel Functions ! ! Regular Cylindrical Bessel Functions ! ------------------------------------ ! ! - Function: double gsl_sf_bessel_J0 (double X) ! - Function: int gsl_sf_bessel_J0_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular cylindrical Bessel function of ! zeroth order, J_0(x). ! ! - Function: double gsl_sf_bessel_J1 (double X) ! - Function: int gsl_sf_bessel_J1_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular cylindrical Bessel function of ! first order, J_1(x). ! ! - Function: double gsl_sf_bessel_Jn (int N, double X) ! - Function: int gsl_sf_bessel_Jn_e (int N, double X, gsl_sf_result * ! RESULT) ! These routines compute the regular cylindrical Bessel function of ! order N, J_n(x). ! ! - Function: int gsl_sf_bessel_Jn_array (int NMIN, int NMAX, double X, ! double RESULT_ARRAY[]) ! This routine computes the values of the regular cylindrical Bessel ! functions J_n(x) for n from NMIN to NMAX inclusive, storing the ! results in the array RESULT_ARRAY. The values are computed using ! recurrence relations, for efficiency, and therefore may differ ! slightly from the exact values. ! !  ! File: gsl-ref.info, Node: Irregular Cylindrical Bessel Functions, Next: Regular Modified Cylindrical Bessel Functions, Prev: Regular Cylindrical Bessel Functions, Up: Bessel Functions ! ! Irregular Cylindrical Bessel Functions ! -------------------------------------- ! ! - Function: double gsl_sf_bessel_Y0 (double X) ! - Function: int gsl_sf_bessel_Y0_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular cylindrical Bessel function ! of zeroth order, Y_0(x), for x>0. ! ! - Function: double gsl_sf_bessel_Y1 (double X) ! - Function: int gsl_sf_bessel_Y1_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular cylindrical Bessel function ! of first order, Y_1(x), for x>0. ! ! - Function: double gsl_sf_bessel_Yn (int N,double X) ! - Function: int gsl_sf_bessel_Yn_e (int N,double X, gsl_sf_result * ! RESULT) ! These routines compute the irregular cylindrical Bessel function of ! order N, Y_n(x), for x>0. ! ! - Function: int gsl_sf_bessel_Yn_array (int NMIN, int NMAX, double X, ! double RESULT_ARRAY[]) ! This routine computes the values of the irregular cylindrical ! Bessel functions Y_n(x) for n from NMIN to NMAX inclusive, storing ! the results in the array RESULT_ARRAY. The domain of the function ! is x>0. The values are computed using recurrence relations, for ! efficiency, and therefore may differ slightly from the exact ! values. ! !  ! File: gsl-ref.info, Node: Regular Modified Cylindrical Bessel Functions, Next: Irregular Modified Cylindrical Bessel Functions, Prev: Irregular Cylindrical Bessel Functions, Up: Bessel Functions ! ! Regular Modified Cylindrical Bessel Functions ! --------------------------------------------- ! ! - Function: double gsl_sf_bessel_I0 (double X) ! - Function: int gsl_sf_bessel_I0_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular modified cylindrical Bessel ! function of zeroth order, I_0(x). ! ! - Function: double gsl_sf_bessel_I1 (double X) ! - Function: int gsl_sf_bessel_I1_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular modified cylindrical Bessel ! function of first order, I_1(x). ! ! - Function: double gsl_sf_bessel_In (int N, double X) ! - Function: int gsl_sf_bessel_In_e (int N, double X, gsl_sf_result * ! RESULT) ! These routines compute the regular modified cylindrical Bessel ! function of order N, I_n(x). ! ! - Function: int gsl_sf_bessel_In_array (int NMIN, int NMAX, double X, ! double RESULT_ARRAY[]) ! This routine computes the values of the regular modified ! cylindrical Bessel functions I_n(x) for n from NMIN to NMAX ! inclusive, storing the results in the array RESULT_ARRAY. The ! start of the range NMIN must be positive or zero. The values are ! computed using recurrence relations, for efficiency, and therefore ! may differ slightly from the exact values. ! ! - Function: double gsl_sf_bessel_I0_scaled (double X) ! - Function: int gsl_sf_bessel_I0_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled regular modified cylindrical ! Bessel function of zeroth order \exp(-|x|) I_0(x). ! ! - Function: double gsl_sf_bessel_I1_scaled (double X) ! - Function: int gsl_sf_bessel_I1_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled regular modified cylindrical ! Bessel function of first order \exp(-|x|) I_1(x). ! ! - Function: double gsl_sf_bessel_In_scaled (int N, double X) ! - Function: int gsl_sf_bessel_In_scaled_e (int N, double X, ! gsl_sf_result * RESULT) ! These routines compute the scaled regular modified cylindrical ! Bessel function of order N, \exp(-|x|) I_n(x) ! ! - Function: int gsl_sf_bessel_In_scaled_array (int NMIN, int NMAX, ! double X, double RESULT_ARRAY[]) ! This routine computes the values of the scaled regular cylindrical ! Bessel functions \exp(-|x|) I_n(x) for n from NMIN to NMAX ! inclusive, storing the results in the array RESULT_ARRAY. The ! start of the range NMIN must be positive or zero. The values are ! computed using recurrence relations, for efficiency, and therefore ! may differ slightly from the exact values. ! !  ! File: gsl-ref.info, Node: Irregular Modified Cylindrical Bessel Functions, Next: Regular Spherical Bessel Functions, Prev: Regular Modified Cylindrical Bessel Functions, Up: Bessel Functions ! ! Irregular Modified Cylindrical Bessel Functions ! ----------------------------------------------- ! ! - Function: double gsl_sf_bessel_K0 (double X) ! - Function: int gsl_sf_bessel_K0_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular modified cylindrical Bessel ! function of zeroth order, K_0(x), for x > 0. ! ! - Function: double gsl_sf_bessel_K1 (double X) ! - Function: int gsl_sf_bessel_K1_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular modified cylindrical Bessel ! function of first order, K_1(x), for x > 0. ! ! - Function: double gsl_sf_bessel_Kn (int N, double X) ! - Function: int gsl_sf_bessel_Kn_e (int N, double X, gsl_sf_result * ! RESULT) ! These routines compute the irregular modified cylindrical Bessel ! function of order N, K_n(x), for x > 0. ! ! - Function: int gsl_sf_bessel_Kn_array (int NMIN, int NMAX, double X, ! double RESULT_ARRAY[]) ! This routine computes the values of the irregular modified ! cylindrical Bessel functions K_n(x) for n from NMIN to NMAX ! inclusive, storing the results in the array RESULT_ARRAY. The ! start of the range NMIN must be positive or zero. The domain of ! the function is x>0. The values are computed using recurrence ! relations, for efficiency, and therefore may differ slightly from ! the exact values. ! ! - Function: double gsl_sf_bessel_K0_scaled (double X) ! - Function: int gsl_sf_bessel_K0_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled irregular modified cylindrical ! Bessel function of zeroth order \exp(x) K_0(x) for x>0. ! ! - Function: double gsl_sf_bessel_K1_scaled (double X) ! - Function: int gsl_sf_bessel_K1_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled irregular modified cylindrical ! Bessel function of first order \exp(x) K_1(x) for x>0. ! ! - Function: double gsl_sf_bessel_Kn_scaled (int N, double X) ! - Function: int gsl_sf_bessel_Kn_scaled_e (int N, double X, ! gsl_sf_result * RESULT) ! These routines compute the scaled irregular modified cylindrical ! Bessel function of order N, \exp(x) K_n(x), for x>0. ! ! - Function: int gsl_sf_bessel_Kn_scaled_array (int NMIN, int NMAX, ! double X, double RESULT_ARRAY[]) ! This routine computes the values of the scaled irregular ! cylindrical Bessel functions \exp(x) K_n(x) for n from NMIN to ! NMAX inclusive, storing the results in the array RESULT_ARRAY. The ! start of the range NMIN must be positive or zero. The domain of ! the function is x>0. The values are computed using recurrence ! relations, for efficiency, and therefore may differ slightly from ! the exact values. ! !  ! File: gsl-ref.info, Node: Regular Spherical Bessel Functions, Next: Irregular Spherical Bessel Functions, Prev: Irregular Modified Cylindrical Bessel Functions, Up: Bessel Functions ! ! Regular Spherical Bessel Functions ! ---------------------------------- ! ! - Function: double gsl_sf_bessel_j0 (double X) ! - Function: int gsl_sf_bessel_j0_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular spherical Bessel function of ! zeroth order, j_0(x) = \sin(x)/x. ! ! - Function: double gsl_sf_bessel_j1 (double X) ! - Function: int gsl_sf_bessel_j1_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular spherical Bessel function of ! first order, j_1(x) = (\sin(x)/x - \cos(x))/x. ! ! - Function: double gsl_sf_bessel_j2 (double X) ! - Function: int gsl_sf_bessel_j2_e (double X, gsl_sf_result * RESULT) ! These routines compute the regular spherical Bessel function of ! second order, j_2(x) = ((3/x^2 - 1)\sin(x) - 3\cos(x)/x)/x. ! ! - Function: double gsl_sf_bessel_jl (int L, double X) ! - Function: int gsl_sf_bessel_jl_e (int L, double X, gsl_sf_result * ! RESULT) ! These routines compute the regular spherical Bessel function of ! order L, j_l(x), for l >= 0 and x >= 0. ! ! - Function: int gsl_sf_bessel_jl_array (int LMAX, double X, double ! RESULT_ARRAY[]) ! This routine computes the values of the regular spherical Bessel ! functions j_l(x) for l from 0 to LMAX inclusive for lmax >= 0 and ! x >= 0, storing the results in the array RESULT_ARRAY. The values ! are computed using recurrence relations, for efficiency, and ! therefore may differ slightly from the exact values. ! ! - Function: int gsl_sf_bessel_jl_steed_array (int LMAX, double X, ! double * JL_X_ARRAY) ! This routine uses Steed's method to compute the values of the ! regular spherical Bessel functions j_l(x) for l from 0 to LMAX ! inclusive for lmax >= 0 and x >= 0, storing the results in the ! array RESULT_ARRAY. The Steed/Barnett algorithm is described in ! `Comp. Phys. Comm.' 21, 297 (1981). Steed's method is more stable ! than the recurrence used in the other functions but is also slower. --- 8,6974 ----  ! File: gsl-ref.info, Node: Level 2 GSL BLAS Interface, Next: Level 3 GSL BLAS Interface, Prev: Level 1 GSL BLAS Interface, Up: GSL BLAS Interface ! Level 2 ! ------- ! - Function: int gsl_blas_sgemv (CBLAS_TRANSPOSE_t TRANSA, float ALPHA, ! const gsl_matrix_float * A, const gsl_vector_float * X, float ! BETA, gsl_vector_float * Y) ! - Function: int gsl_blas_dgemv (CBLAS_TRANSPOSE_t TRANSA, double ! ALPHA, const gsl_matrix * A, const gsl_vector * X, double ! BETA, gsl_vector * Y) ! - Function: int gsl_blas_cgemv (CBLAS_TRANSPOSE_t TRANSA, const ! gsl_complex_float ALPHA, const gsl_matrix_complex_float * A, ! const gsl_vector_complex_float * X, const gsl_complex_float ! BETA, gsl_vector_complex_float * Y) ! - Function: int gsl_blas_zgemv (CBLAS_TRANSPOSE_t TRANSA, const ! gsl_complex ALPHA, const gsl_matrix_complex * A, const ! gsl_vector_complex * X, const gsl_complex BETA, ! gsl_vector_complex * Y) ! These functions compute the matrix-vector product and sum y = ! \alpha op(A) x + \beta y, where op(A) = A, A^T, A^H for TRANSA = ! `CblasNoTrans', `CblasTrans', `CblasConjTrans'. ! ! - Function: int gsl_blas_strmv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix_float * A, ! gsl_vector_float * X) ! - Function: int gsl_blas_dtrmv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix * A, gsl_vector * ! X) ! - Function: int gsl_blas_ctrmv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix_complex_float * ! A, gsl_vector_complex_float * X) ! - Function: int gsl_blas_ztrmv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix_complex * A, ! gsl_vector_complex * X) ! These functions compute the matrix-vector product x =\alpha op(A) ! x for the triangular matrix A, where op(A) = A, A^T, A^H for ! TRANSA = `CblasNoTrans', `CblasTrans', `CblasConjTrans'. When ! UPLO is `CblasUpper' then the upper triangle of A is used, and ! when UPLO is `CblasLower' then the lower triangle of A is used. ! If DIAG is `CblasNonUnit' then the diagonal of the matrix is used, ! but if DIAG is `CblasUnit' then the diagonal elements of the ! matrix A are taken as unity and are not referenced. ! ! - Function: int gsl_blas_strsv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix_float * A, ! gsl_vector_float * X) ! - Function: int gsl_blas_dtrsv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix * A, gsl_vector * ! X) ! - Function: int gsl_blas_ctrsv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix_complex_float * ! A, gsl_vector_complex_float * X) ! - Function: int gsl_blas_ztrsv (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANSA, CBLAS_DIAG_t DIAG, const gsl_matrix_complex * A, ! gsl_vector_complex *X) ! These functions compute inv(op(A)) x for X, where op(A) = A, A^T, ! A^H for TRANSA = `CblasNoTrans', `CblasTrans', `CblasConjTrans'. ! When UPLO is `CblasUpper' then the upper triangle of A is used, ! and when UPLO is `CblasLower' then the lower triangle of A is ! used. If DIAG is `CblasNonUnit' then the diagonal of the matrix ! is used, but if DIAG is `CblasUnit' then the diagonal elements of ! the matrix A are taken as unity and are not referenced. ! ! - Function: int gsl_blas_ssymv (CBLAS_UPLO_t UPLO, float ALPHA, const ! gsl_matrix_float * A, const gsl_vector_float * X, float BETA, ! gsl_vector_float * Y) ! - Function: int gsl_blas_dsymv (CBLAS_UPLO_t UPLO, double ALPHA, const ! gsl_matrix * A, const gsl_vector * X, double BETA, gsl_vector ! * Y) ! These functions compute the matrix-vector product and sum y = ! \alpha A x + \beta y for the symmetric matrix A. Since the matrix ! A is symmetric only its upper half or lower half need to be ! stored. When UPLO is `CblasUpper' then the upper triangle and ! diagonal of A are used, and when UPLO is `CblasLower' then the ! lower triangle and diagonal of A are used. ! ! - Function: int gsl_blas_chemv (CBLAS_UPLO_t UPLO, const ! gsl_complex_float ALPHA, const gsl_matrix_complex_float * A, ! const gsl_vector_complex_float * X, const gsl_complex_float ! BETA, gsl_vector_complex_float * Y) ! - Function: int gsl_blas_zhemv (CBLAS_UPLO_t UPLO, const gsl_complex ! ALPHA, const gsl_matrix_complex * A, const gsl_vector_complex ! * X, const gsl_complex BETA, gsl_vector_complex * Y) ! These functions compute the matrix-vector product and sum y = ! \alpha A x + \beta y for the hermitian matrix A. Since the matrix ! A is hermitian only its upper half or lower half need to be ! stored. When UPLO is `CblasUpper' then the upper triangle and ! diagonal of A are used, and when UPLO is `CblasLower' then the ! lower triangle and diagonal of A are used. The imaginary elements ! of the diagonal are automatically assumed to be zero and are not ! referenced. ! ! - Function: int gsl_blas_sger (float ALPHA, const gsl_vector_float * ! X, const gsl_vector_float * Y, gsl_matrix_float * A) ! - Function: int gsl_blas_dger (double ALPHA, const gsl_vector * X, ! const gsl_vector * Y, gsl_matrix * A) ! - Function: int gsl_blas_cgeru (const gsl_complex_float ALPHA, const ! gsl_vector_complex_float * X, const gsl_vector_complex_float ! * Y, gsl_matrix_complex_float * A) ! - Function: int gsl_blas_zgeru (const gsl_complex ALPHA, const ! gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_matrix_complex * A) ! These functions compute the rank-1 update A = \alpha x y^T + A of ! the matrix A. ! ! - Function: int gsl_blas_cgerc (const gsl_complex_float ALPHA, const ! gsl_vector_complex_float * X, const gsl_vector_complex_float ! * Y, gsl_matrix_complex_float * A) ! - Function: int gsl_blas_zgerc (const gsl_complex ALPHA, const ! gsl_vector_complex * X, const gsl_vector_complex * Y, ! gsl_matrix_complex * A) ! These functions compute the conjugate rank-1 update A = \alpha x ! y^H + A of the matrix A. ! ! - Function: int gsl_blas_ssyr (CBLAS_UPLO_t UPLO, float ALPHA, const ! gsl_vector_float * X, gsl_matrix_float * A) ! - Function: int gsl_blas_dsyr (CBLAS_UPLO_t UPLO, double ALPHA, const ! gsl_vector * X, gsl_matrix * A) ! These functions compute the symmetric rank-1 update A = \alpha x ! x^T + A of the symmetric matrix A. Since the matrix A is ! symmetric only its upper half or lower half need to be stored. ! When UPLO is `CblasUpper' then the upper triangle and diagonal of ! A are used, and when UPLO is `CblasLower' then the lower triangle ! and diagonal of A are used. ! ! - Function: int gsl_blas_cher (CBLAS_UPLO_t UPLO, float ALPHA, const ! gsl_vector_complex_float * X, gsl_matrix_complex_float * A) ! - Function: int gsl_blas_zher (CBLAS_UPLO_t UPLO, double ALPHA, const ! gsl_vector_complex * X, gsl_matrix_complex * A) ! These functions compute the hermitian rank-1 update A = \alpha x ! x^H + A of the hermitian matrix A. Since the matrix A is ! hermitian only its upper half or lower half need to be stored. ! When UPLO is `CblasUpper' then the upper triangle and diagonal of ! A are used, and when UPLO is `CblasLower' then the lower triangle ! and diagonal of A are used. The imaginary elements of the ! diagonal are automatically set to zero. ! ! - Function: int gsl_blas_ssyr2 (CBLAS_UPLO_t UPLO, float ALPHA, const ! gsl_vector_float * X, const gsl_vector_float * Y, ! gsl_matrix_float * A) ! - Function: int gsl_blas_dsyr2 (CBLAS_UPLO_t UPLO, double ALPHA, const ! gsl_vector * X, const gsl_vector * Y, gsl_matrix * A) ! These functions compute the symmetric rank-2 update A = \alpha x ! y^T + \alpha y x^T + A of the symmetric matrix A. Since the ! matrix A is symmetric only its upper half or lower half need to be ! stored. When UPLO is `CblasUpper' then the upper triangle and ! diagonal of A are used, and when UPLO is `CblasLower' then the ! lower triangle and diagonal of A are used. ! ! - Function: int gsl_blas_cher2 (CBLAS_UPLO_t UPLO, const ! gsl_complex_float ALPHA, const gsl_vector_complex_float * X, ! const gsl_vector_complex_float * Y, gsl_matrix_complex_float ! * A) ! - Function: int gsl_blas_zher2 (CBLAS_UPLO_t UPLO, const gsl_complex ! ALPHA, const gsl_vector_complex * X, const gsl_vector_complex ! * Y, gsl_matrix_complex * A) ! These functions compute the hermitian rank-2 update A = \alpha x ! y^H + \alpha^* y x^H A of the hermitian matrix A. Since the ! matrix A is hermitian only its upper half or lower half need to be ! stored. When UPLO is `CblasUpper' then the upper triangle and ! diagonal of A are used, and when UPLO is `CblasLower' then the ! lower triangle and diagonal of A are used. The imaginary elements ! of the diagonal are automatically set to zero. ! !  ! File: gsl-ref.info, Node: Level 3 GSL BLAS Interface, Prev: Level 2 GSL BLAS Interface, Up: GSL BLAS Interface ! ! Level 3 ! ------- ! ! - Function: int gsl_blas_sgemm (CBLAS_TRANSPOSE_t TRANSA, ! CBLAS_TRANSPOSE_t TRANSB, float ALPHA, const gsl_matrix_float ! * A, const gsl_matrix_float * B, float BETA, gsl_matrix_float ! * C) ! - Function: int gsl_blas_dgemm (CBLAS_TRANSPOSE_t TRANSA, ! CBLAS_TRANSPOSE_t TRANSB, double ALPHA, const gsl_matrix * A, ! const gsl_matrix * B, double BETA, gsl_matrix * C) ! - Function: int gsl_blas_cgemm (CBLAS_TRANSPOSE_t TRANSA, ! CBLAS_TRANSPOSE_t TRANSB, const gsl_complex_float ALPHA, ! const gsl_matrix_complex_float * A, const ! gsl_matrix_complex_float * B, const gsl_complex_float BETA, ! gsl_matrix_complex_float * C) ! - Function: int gsl_blas_zgemm (CBLAS_TRANSPOSE_t TRANSA, ! CBLAS_TRANSPOSE_t TRANSB, const gsl_complex ALPHA, const ! gsl_matrix_complex * A, const gsl_matrix_complex * B, const ! gsl_complex BETA, gsl_matrix_complex * C) ! These functions compute the matrix-matrix product and sum C = ! \alpha op(A) op(B) + \beta C where op(A) = A, A^T, A^H for TRANSA ! = `CblasNoTrans', `CblasTrans', `CblasConjTrans' and similarly for ! the parameter TRANSB. ! ! - Function: int gsl_blas_ssymm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! float ALPHA, const gsl_matrix_float * A, const ! gsl_matrix_float * B, float BETA, gsl_matrix_float * C) ! - Function: int gsl_blas_dsymm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! double ALPHA, const gsl_matrix * A, const gsl_matrix * B, ! double BETA, gsl_matrix * C) ! - Function: int gsl_blas_csymm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! const gsl_complex_float ALPHA, const gsl_matrix_complex_float ! * A, const gsl_matrix_complex_float * B, const ! gsl_complex_float BETA, gsl_matrix_complex_float * C) ! - Function: int gsl_blas_zsymm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! const gsl_complex ALPHA, const gsl_matrix_complex * A, const ! gsl_matrix_complex * B, const gsl_complex BETA, ! gsl_matrix_complex * C) ! These functions compute the matrix-matrix product and sum C = ! \alpha A B + \beta C for SIDE is `CblasLeft' and C = \alpha B A + ! \beta C for SIDE is `CblasRight', where the matrix A is symmetric. ! When UPLO is `CblasUpper' then the upper triangle and diagonal of ! A are used, and when UPLO is `CblasLower' then the lower triangle ! and diagonal of A are used. ! ! - Function: int gsl_blas_chemm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! const gsl_complex_float ALPHA, const gsl_matrix_complex_float ! * A, const gsl_matrix_complex_float * B, const ! gsl_complex_float BETA, gsl_matrix_complex_float * C) ! - Function: int gsl_blas_zhemm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! const gsl_complex ALPHA, const gsl_matrix_complex * A, const ! gsl_matrix_complex * B, const gsl_complex BETA, ! gsl_matrix_complex * C) ! These functions compute the matrix-matrix product and sum C = ! \alpha A B + \beta C for SIDE is `CblasLeft' and C = \alpha B A + ! \beta C for SIDE is `CblasRight', where the matrix A is hermitian. ! When UPLO is `CblasUpper' then the upper triangle and diagonal of ! A are used, and when UPLO is `CblasLower' then the lower triangle ! and diagonal of A are used. The imaginary elements of the ! diagonal are automatically set to zero. ! ! - Function: int gsl_blas_strmm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, float ALPHA, ! const gsl_matrix_float * A, gsl_matrix_float * B) ! - Function: int gsl_blas_dtrmm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, double ALPHA, ! const gsl_matrix * A, gsl_matrix * B) ! - Function: int gsl_blas_ctrmm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, const ! gsl_complex_float ALPHA, const gsl_matrix_complex_float * A, ! gsl_matrix_complex_float * B) ! - Function: int gsl_blas_ztrmm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, const ! gsl_complex ALPHA, const gsl_matrix_complex * A, ! gsl_matrix_complex * B) ! These functions compute the matrix-matrix product B = \alpha op(A) ! B for SIDE is `CblasLeft' and B = \alpha B op(A) for SIDE is ! `CblasRight'. The matrix A is triangular and op(A) = A, A^T, A^H ! for TRANSA = `CblasNoTrans', `CblasTrans', `CblasConjTrans' When ! UPLO is `CblasUpper' then the upper triangle of A is used, and ! when UPLO is `CblasLower' then the lower triangle of A is used. ! If DIAG is `CblasNonUnit' then the diagonal of A is used, but if ! DIAG is `CblasUnit' then the diagonal elements of the matrix A are ! taken as unity and are not referenced. ! ! - Function: int gsl_blas_strsm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, float ALPHA, ! const gsl_matrix_float * A, gsl_matrix_float * B) ! - Function: int gsl_blas_dtrsm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, double ALPHA, ! const gsl_matrix * A, gsl_matrix * B) ! - Function: int gsl_blas_ctrsm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, const ! gsl_complex_float ALPHA, const gsl_matrix_complex_float * A, ! gsl_matrix_complex_float * B) ! - Function: int gsl_blas_ztrsm (CBLAS_SIDE_t SIDE, CBLAS_UPLO_t UPLO, ! CBLAS_TRANSPOSE_t TRANSA, CBLAS_DIAG_t DIAG, const ! gsl_complex ALPHA, const gsl_matrix_complex * A, ! gsl_matrix_complex * B) ! These functions compute the matrix-matrix product B = \alpha ! op(inv(A)) B for SIDE is `CblasLeft' and B = \alpha B op(inv(A)) ! for SIDE is `CblasRight'. The matrix A is triangular and op(A) = ! A, A^T, A^H for TRANSA = `CblasNoTrans', `CblasTrans', ! `CblasConjTrans' When UPLO is `CblasUpper' then the upper triangle ! of A is used, and when UPLO is `CblasLower' then the lower triangle ! of A is used. If DIAG is `CblasNonUnit' then the diagonal of A is ! used, but if DIAG is `CblasUnit' then the diagonal elements of the ! matrix A are taken as unity and are not referenced. ! ! - Function: int gsl_blas_ssyrk (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, float ALPHA, const gsl_matrix_float * A, float BETA, ! gsl_matrix_float * C) ! - Function: int gsl_blas_dsyrk (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, double ALPHA, const gsl_matrix * A, double BETA, ! gsl_matrix * C) ! - Function: int gsl_blas_csyrk (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, const gsl_complex_float ALPHA, const ! gsl_matrix_complex_float * A, const gsl_complex_float BETA, ! gsl_matrix_complex_float * C) ! - Function: int gsl_blas_zsyrk (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, const gsl_complex ALPHA, const gsl_matrix_complex * A, ! const gsl_complex BETA, gsl_matrix_complex * C) ! These functions compute a rank-k update of the symmetric matrix C, ! C = \alpha A A^T + \beta C when TRANS is `CblasNoTrans' and C = ! \alpha A^T A + \beta C when TRANS is `CblasTrans'. Since the ! matrix C is symmetric only its upper half or lower half need to be ! stored. When UPLO is `CblasUpper' then the upper triangle and ! diagonal of C are used, and when UPLO is `CblasLower' then the ! lower triangle and diagonal of C are used. ! ! - Function: int gsl_blas_cherk (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, float ALPHA, const gsl_matrix_complex_float * A, float ! BETA, gsl_matrix_complex_float * C) ! - Function: int gsl_blas_zherk (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, double ALPHA, const gsl_matrix_complex * A, double ! BETA, gsl_matrix_complex * C) ! These functions compute a rank-k update of the hermitian matrix C, ! C = \alpha A A^H + \beta C when TRANS is `CblasNoTrans' and C = ! \alpha A^H A + \beta C when TRANS is `CblasTrans'. Since the ! matrix C is hermitian only its upper half or lower half need to be ! stored. When UPLO is `CblasUpper' then the upper triangle and ! diagonal of C are used, and when UPLO is `CblasLower' then the ! lower triangle and diagonal of C are used. The imaginary elements ! of the diagonal are automatically set to zero. ! ! - Function: int gsl_blas_ssyr2k (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, float ALPHA, const gsl_matrix_float * A, const ! gsl_matrix_float * B, float BETA, gsl_matrix_float * C) ! - Function: int gsl_blas_dsyr2k (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, double ALPHA, const gsl_matrix * A, const gsl_matrix * ! B, double BETA, gsl_matrix * C) ! - Function: int gsl_blas_csyr2k (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, const gsl_complex_float ALPHA, const ! gsl_matrix_complex_float * A, const gsl_matrix_complex_float ! * B, const gsl_complex_float BETA, gsl_matrix_complex_float * ! C) ! - Function: int gsl_blas_zsyr2k (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, const gsl_complex ALPHA, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, const gsl_complex BETA, ! gsl_matrix_complex *C) ! These functions compute a rank-2k update of the symmetric matrix C, ! C = \alpha A B^T + \alpha B A^T + \beta C when TRANS is ! `CblasNoTrans' and C = \alpha A^T B + \alpha B^T A + \beta C when ! TRANS is `CblasTrans'. Since the matrix C is symmetric only its ! upper half or lower half need to be stored. When UPLO is ! `CblasUpper' then the upper triangle and diagonal of C are used, ! and when UPLO is `CblasLower' then the lower triangle and diagonal ! of C are used. ! ! - Function: int gsl_blas_cher2k (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, const gsl_complex_float ALPHA, const ! gsl_matrix_complex_float * A, const gsl_matrix_complex_float ! * B, float BETA, gsl_matrix_complex_float * C) ! - Function: int gsl_blas_zher2k (CBLAS_UPLO_t UPLO, CBLAS_TRANSPOSE_t ! TRANS, const gsl_complex ALPHA, const gsl_matrix_complex * A, ! const gsl_matrix_complex * B, double BETA, gsl_matrix_complex ! * C) ! These functions compute a rank-2k update of the hermitian matrix C, ! C = \alpha A B^H + \alpha^* B A^H + \beta C when TRANS is ! `CblasNoTrans' and C = \alpha A^H B + \alpha^* B^H A + \beta C when ! TRANS is `CblasConjTrans'. Since the matrix C is hermitian only ! its upper half or lower half need to be stored. When UPLO is ! `CblasUpper' then the upper triangle and diagonal of C are used, ! and when UPLO is `CblasLower' then the lower triangle and diagonal ! of C are used. The imaginary elements of the diagonal are ! automatically set to zero. ! !  ! File: gsl-ref.info, Node: BLAS Examples, Next: BLAS References and Further Reading, Prev: GSL BLAS Interface, Up: BLAS Support ! ! Examples ! ======== ! ! The following program computes the product of two matrices using the ! Level-3 BLAS function DGEMM, ! ! [ 0.11 0.12 0.13 ] [ 1011 1012 ] [ 367.76 368.12 ] ! [ 0.21 0.22 0.23 ] [ 1021 1022 ] = [ 674.06 674.72 ] ! [ 1031 1032 ] ! ! The matrices are stored in row major order, according to the C ! convention for arrays. ! ! #include ! #include ! ! int ! main (void) ! { ! double a[] = { 0.11, 0.12, 0.13, ! 0.21, 0.22, 0.23 }; ! ! double b[] = { 1011, 1012, ! 1021, 1022, ! 1031, 1032 }; ! ! double c[] = { 0.00, 0.00, ! 0.00, 0.00 }; ! ! gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3); ! gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2); ! gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2); ! ! /* Compute C = A B */ ! ! gsl_blas_dgemm (CblasNoTrans, CblasNoTrans, ! 1.0, &A.matrix, &B.matrix, ! 0.0, &C.matrix); ! ! printf ("[ %g, %g\n", c[0], c[1]); ! printf (" %g, %g ]\n", c[2], c[3]); ! ! return 0; ! } ! ! Here is the output from the program, ! $ ./a.out ! ! [ 367.76, 368.12 ! 674.06, 674.72 ] ! !  ! File: gsl-ref.info, Node: BLAS References and Further Reading, Prev: BLAS Examples, Up: BLAS Support ! ! References and Further Reading ! ============================== ! ! Information on the BLAS standards, including both the legacy and draft ! interface standards, is available online from the BLAS Homepage and ! BLAS Technical Forum web-site. ! ! `BLAS Homepage' ! ! `BLAS Technical Forum' ! ! ! The following papers contain the specifications for Level 1, Level 2 and ! Level 3 BLAS. ! ! C. Lawson, R. Hanson, D. Kincaid, F. Krogh, "Basic Linear Algebra ! Subprograms for Fortran Usage", `ACM Transactions on Mathematical ! Software', Vol. 5 (1979), Pages 308-325. ! ! J.J. Dongarra, J. DuCroz, S. Hammarling, R. Hanson, "An Extended ! Set of Fortran Basic Linear Algebra Subprograms", `ACM ! Transactions on Mathematical Software', Vol. 14, No. 1 (1988), ! Pages 1-32. ! ! J.J. Dongarra, I. Duff, J. DuCroz, S. Hammarling, "A Set of Level ! 3 Basic Linear Algebra Subprograms", `ACM Transactions on ! Mathematical Software', Vol. 16 (1990), Pages 1-28. ! ! Postscript versions of the latter two papers are available from ! . A CBLAS wrapper for Fortran BLAS ! libraries is available from the same location. ! !  ! File: gsl-ref.info, Node: Linear Algebra, Next: Eigensystems, Prev: BLAS Support, Up: Top ! ! Linear Algebra ! ************** ! ! This chapter describes functions for solving linear systems. The ! library provides simple linear algebra operations which operate directly ! on the `gsl_vector' and `gsl_matrix' objects. These are intended for ! use with "small" systems where simple algorithms are acceptable. ! ! Anyone interested in large systems will want to use the sophisticated ! routines found in LAPACK. The Fortran version of LAPACK is recommended ! as the standard package for linear algebra. It supports blocked ! algorithms, specialized data representations and other optimizations. ! ! The functions described in this chapter are declared in the header ! file `gsl_linalg.h'. ! ! * Menu: ! ! * LU Decomposition:: ! * QR Decomposition:: ! * QR Decomposition with Column Pivoting:: ! * Singular Value Decomposition:: ! * Cholesky Decomposition:: ! * Tridiagonal Decomposition of Real Symmetric Matrices:: ! * Tridiagonal Decomposition of Hermitian Matrices:: ! * Bidiagonalization:: ! * Householder Transformations:: ! * Householder solver for linear systems:: ! * Tridiagonal Systems:: ! * Linear Algebra Examples:: ! * Linear Algebra References and Further Reading:: ! !  ! File: gsl-ref.info, Node: LU Decomposition, Next: QR Decomposition, Up: Linear Algebra ! ! LU Decomposition ! ================ ! ! A general square matrix A has an LU decomposition into upper and lower ! triangular matrices, ! ! P A = L U ! ! where P is a permutation matrix, L is unit lower triangular matrix and ! U is upper triangular matrix. For square matrices this decomposition ! can be used to convert the linear system A x = b into a pair of ! triangular systems (L y = P b, U x = y), which can be solved by forward ! and back-substitution. Note that the LU decomposition is valid for ! singular matrices. ! ! - Function: int gsl_linalg_LU_decomp (gsl_matrix * A, gsl_permutation ! * P, int *SIGNUM) ! - Function: int gsl_linalg_complex_LU_decomp (gsl_matrix_complex * A, ! gsl_permutation * P, int *SIGNUM) ! These functions factorize the square matrix A into the LU ! decomposition PA = LU. On output the diagonal and upper ! triangular part of the input matrix A contain the matrix U. The ! lower triangular part of the input matrix (excluding the diagonal) ! contains L. The diagonal elements of L are unity, and are not ! stored. ! ! The permutation matrix P is encoded in the permutation P. The j-th ! column of the matrix P is given by the k-th column of the identity ! matrix, where k = p_j the j-th element of the permutation vector. ! The sign of the permutation is given by SIGNUM. It has the value ! (-1)^n, where n is the number of interchanges in the permutation. ! ! The algorithm used in the decomposition is Gaussian Elimination ! with partial pivoting (Golub & Van Loan, `Matrix Computations', ! Algorithm 3.4.1). ! ! - Function: int gsl_linalg_LU_solve (const gsl_matrix * LU, const ! gsl_permutation * P, const gsl_vector * B, gsl_vector * X) ! - Function: int gsl_linalg_complex_LU_solve (const gsl_matrix_complex ! * LU, const gsl_permutation * P, const gsl_vector_complex * ! B, gsl_vector_complex * X) ! These functions solve the system A x = b using the LU ! decomposition of A into (LU, P) given by `gsl_linalg_LU_decomp' or ! `gsl_linalg_complex_LU_decomp'. ! ! - Function: int gsl_linalg_LU_svx (const gsl_matrix * LU, const ! gsl_permutation * P, gsl_vector * X) ! - Function: int gsl_linalg_complex_LU_svx (const gsl_matrix_complex * ! LU, const gsl_permutation * P, gsl_vector_complex * X) ! These functions solve the system A x = b in-place using the LU ! decomposition of A into (LU,P). On input X should contain the ! right-hand side b, which is replaced by the solution on output. ! ! - Function: int gsl_linalg_LU_refine (const gsl_matrix * A, const ! gsl_matrix * LU, const gsl_permutation * P, const gsl_vector ! * B, gsl_vector * X, gsl_vector * RESIDUAL) ! - Function: int gsl_linalg_complex_LU_refine (const gsl_matrix_complex ! * A, const gsl_matrix_complex * LU, const gsl_permutation * ! P, const gsl_vector_complex * B, gsl_vector_complex * X, ! gsl_vector_complex * RESIDUAL) ! These functions apply an iterative improvement to X, the solution ! of A x = b, using the LU decomposition of A into (LU,P). The ! initial residual r = A x - b is also computed and stored in ! RESIDUAL. ! ! - Function: int gsl_linalg_LU_invert (const gsl_matrix * LU, const ! gsl_permutation * P, gsl_matrix * INVERSE) ! - Function: int gsl_complex_linalg_LU_invert (const gsl_matrix_complex ! * LU, const gsl_permutation * P, gsl_matrix_complex * INVERSE) ! These functions compute the inverse of a matrix A from its LU ! decomposition (LU,P), storing the result in the matrix INVERSE. ! The inverse is computed by solving the system A x = b for each ! column of the identity matrix. It is preferable to avoid direct ! computation of the inverse whenever possible. ! ! - Function: double gsl_linalg_LU_det (gsl_matrix * LU, int SIGNUM) ! - Function: gsl_complex gsl_linalg_complex_LU_det (gsl_matrix_complex ! * LU, int SIGNUM) ! These functions compute the determinant of a matrix A from its LU ! decomposition, LU. The determinant is computed as the product of ! the diagonal elements of U and the sign of the row permutation ! SIGNUM. ! ! - Function: double gsl_linalg_LU_lndet (gsl_matrix * LU) ! - Function: double gsl_linalg_complex_LU_lndet (gsl_matrix_complex * ! LU) ! These functions compute the logarithm of the absolute value of the ! determinant of a matrix A, \ln|det(A)|, from its LU decomposition, ! LU. This function may be useful if the direct computation of the ! determinant would overflow or underflow. ! ! - Function: int gsl_linalg_LU_sgndet (gsl_matrix * LU, int SIGNUM) ! - Function: gsl_complex gsl_linalg_complex_LU_sgndet ! (gsl_matrix_complex * LU, int SIGNUM) ! These functions compute the sign or phase factor of the ! determinant of a matrix A, det(A)/|det(A)|, from its LU ! decomposition, LU. ! !  ! File: gsl-ref.info, Node: QR Decomposition, Next: QR Decomposition with Column Pivoting, Prev: LU Decomposition, Up: Linear Algebra ! ! QR Decomposition ! ================ ! ! A general rectangular M-by-N matrix A has a QR decomposition into the ! product of an orthogonal M-by-M square matrix Q (where Q^T Q = I) and ! an M-by-N right-triangular matrix R, ! ! A = Q R ! ! This decomposition can be used to convert the linear system A x = b ! into the triangular system R x = Q^T b, which can be solved by ! back-substitution. Another use of the QR decomposition is to compute an ! orthonormal basis for a set of vectors. The first N columns of Q form ! an orthonormal basis for the range of A, ran(A), when A has full column ! rank. ! ! - Function: int gsl_linalg_QR_decomp (gsl_matrix * A, gsl_vector * TAU) ! This function factorizes the M-by-N matrix A into the QR ! decomposition A = Q R. On output the diagonal and upper ! triangular part of the input matrix contain the matrix R. The ! vector TAU and the columns of the lower triangular part of the ! matrix A contain the Householder coefficients and Householder ! vectors which encode the orthogonal matrix Q. The vector TAU must ! be of length k=\min(M,N). The matrix Q is related to these ! components by, Q = Q_k ... Q_2 Q_1 where Q_i = I - \tau_i v_i ! v_i^T and v_i is the Householder vector v_i = ! (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i)). This is the same storage ! scheme as used by LAPACK. ! ! The algorithm used to perform the decomposition is Householder QR ! (Golub & Van Loan, `Matrix Computations', Algorithm 5.2.1). ! ! - Function: int gsl_linalg_QR_solve (const gsl_matrix * QR, const ! gsl_vector * TAU, const gsl_vector * B, gsl_vector * X) ! This function solves the system A x = b using the QR decomposition ! of A into (QR, TAU) given by `gsl_linalg_QR_decomp'. ! ! - Function: int gsl_linalg_QR_svx (const gsl_matrix * QR, const ! gsl_vector * TAU, gsl_vector * X) ! This function solves the system A x = b in-place using the QR ! decomposition of A into (QR,TAU) given by `gsl_linalg_QR_decomp'. ! On input X should contain the right-hand side b, which is replaced ! by the solution on output. ! ! - Function: int gsl_linalg_QR_lssolve (const gsl_matrix * QR, const ! gsl_vector * TAU, const gsl_vector * B, gsl_vector * X, ! gsl_vector * RESIDUAL) ! This function finds the least squares solution to the ! overdetermined system A x = b where the matrix A has more rows than ! columns. The least squares solution minimizes the Euclidean norm ! of the residual, ||Ax - b||.The routine uses the QR decomposition ! of A into (QR, TAU) given by `gsl_linalg_QR_decomp'. The solution ! is returned in X. The residual is computed as a by-product and ! stored in RESIDUAL. ! ! - Function: int gsl_linalg_QR_QTvec (const gsl_matrix * QR, const ! gsl_vector * TAU, gsl_vector * V) ! This function applies the matrix Q^T encoded in the decomposition ! (QR,TAU) to the vector V, storing the result Q^T v in V. The ! matrix multiplication is carried out directly using the encoding ! of the Householder vectors without needing to form the full matrix ! Q^T. ! ! - Function: int gsl_linalg_QR_Qvec (const gsl_matrix * QR, const ! gsl_vector * TAU, gsl_vector * V) ! This function applies the matrix Q encoded in the decomposition ! (QR,TAU) to the vector V, storing the result Q v in V. The matrix ! multiplication is carried out directly using the encoding of the ! Householder vectors without needing to form the full matrix Q. ! ! - Function: int gsl_linalg_QR_Rsolve (const gsl_matrix * QR, const ! gsl_vector * B, gsl_vector * X) ! This function solves the triangular system R x = b for X. It may ! be useful if the product b' = Q^T b has already been computed ! using `gsl_linalg_QR_QTvec'. ! ! - Function: int gsl_linalg_QR_Rsvx (const gsl_matrix * QR, gsl_vector ! * X) ! This function solves the triangular system R x = b for X in-place. ! On input X should contain the right-hand side b and is replaced by ! the solution on output. This function may be useful if the product ! b' = Q^T b has already been computed using `gsl_linalg_QR_QTvec'. ! ! - Function: int gsl_linalg_QR_unpack (const gsl_matrix * QR, const ! gsl_vector * TAU, gsl_matrix * Q, gsl_matrix * R) ! This function unpacks the encoded QR decomposition (QR,TAU) into ! the matrices Q and R, where Q is M-by-M and R is M-by-N. ! ! - Function: int gsl_linalg_QR_QRsolve (gsl_matrix * Q, gsl_matrix * R, ! const gsl_vector * B, gsl_vector * X) ! This function solves the system R x = Q^T b for X. It can be used ! when the QR decomposition of a matrix is available in unpacked ! form as (Q,R). ! ! - Function: int gsl_linalg_QR_update (gsl_matrix * Q, gsl_matrix * R, ! gsl_vector * W, const gsl_vector * V) ! This function performs a rank-1 update w v^T of the QR ! decomposition (Q, R). The update is given by Q'R' = Q R + w v^T ! where the output matrices Q' and R' are also orthogonal and right ! triangular. Note that W is destroyed by the update. ! ! - Function: int gsl_linalg_R_solve (const gsl_matrix * R, const ! gsl_vector * B, gsl_vector * X) ! This function solves the triangular system R x = b for the N-by-N ! matrix R. ! ! - Function: int gsl_linalg_R_svx (const gsl_matrix * R, gsl_vector * X) ! This function solves the triangular system R x = b in-place. On ! input X should contain the right-hand side b, which is replaced by ! the solution on output. ! !  ! File: gsl-ref.info, Node: QR Decomposition with Column Pivoting, Next: Singular Value Decomposition, Prev: QR Decomposition, Up: Linear Algebra ! ! QR Decomposition with Column Pivoting ! ===================================== ! ! The QR decomposition can be extended to the rank deficient case by ! introducing a column permutation P, ! ! A P = Q R ! ! The first r columns of this Q form an orthonormal basis for the range ! of A for a matrix with column rank r. This decomposition can also be ! used to convert the linear system A x = b into the triangular system R ! y = Q^T b, x = P y, which can be solved by back-substitution and ! permutation. We denote the QR decomposition with column pivoting by ! QRP^T since A = Q R P^T. ! ! - Function: int gsl_linalg_QRPT_decomp (gsl_matrix * A, gsl_vector * ! TAU, gsl_permutation * P, int *SIGNUM, gsl_vector * NORM) ! This function factorizes the M-by-N matrix A into the QRP^T ! decomposition A = Q R P^T. On output the diagonal and upper ! triangular part of the input matrix contain the matrix R. The ! permutation matrix P is stored in the permutation P. The sign of ! the permutation is given by SIGNUM. It has the value (-1)^n, where ! n is the number of interchanges in the permutation. The vector TAU ! and the columns of the lower triangular part of the matrix A ! contain the Householder coefficients and vectors which encode the ! orthogonal matrix Q. The vector TAU must be of length ! k=\min(M,N). The matrix Q is related to these components by, Q = ! Q_k ... Q_2 Q_1 where Q_i = I - \tau_i v_i v_i^T and v_i is the ! Householder vector v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i)). ! This is the same storage scheme as used by LAPACK. The vector ! NORM is workspace of length N used for column pivoting. ! ! The algorithm used to perform the decomposition is Householder QR ! with column pivoting (Golub & Van Loan, `Matrix Computations', ! Algorithm 5.4.1). ! ! - Function: int gsl_linalg_QRPT_decomp2 (const gsl_matrix * A, ! gsl_matrix * Q, gsl_matrix * R, gsl_vector * TAU, ! gsl_permutation * P, int *SIGNUM, gsl_vector * NORM) ! This function factorizes the matrix A into the decomposition A = Q ! R P^T without modifying A itself and storing the output in the ! separate matrices Q and R. ! ! - Function: int gsl_linalg_QRPT_solve (const gsl_matrix * QR, const ! gsl_vector * TAU, const gsl_permutation * P, const gsl_vector ! * B, gsl_vector * X) ! This function solves the system A x = b using the QRP^T ! decomposition of A into (QR, TAU, P) given by ! `gsl_linalg_QRPT_decomp'. ! ! - Function: int gsl_linalg_QRPT_svx (const gsl_matrix * QR, const ! gsl_vector * TAU, const gsl_permutation * P, gsl_vector * X) ! This function solves the system A x = b in-place using the QRP^T ! decomposition of A into (QR,TAU,P). On input X should contain the ! right-hand side b, which is replaced by the solution on output. ! ! - Function: int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, const ! gsl_matrix * R, const gsl_permutation * P, const gsl_vector * ! B, gsl_vector * X) ! This function solves the system R P^T x = Q^T b for X. It can be ! used when the QR decomposition of a matrix is available in ! unpacked form as (Q,R). ! ! - Function: int gsl_linalg_QRPT_update (gsl_matrix * Q, gsl_matrix * ! R, const gsl_permutation * P, gsl_vector * U, const ! gsl_vector * V) ! This function performs a rank-1 update w v^T of the QRP^T ! decomposition (Q, R,P). The update is given by Q'R' = Q R + w v^T ! where the output matrices Q' and R' are also orthogonal and right ! triangular. Note that W is destroyed by the update. The ! permutation P is not changed. ! ! - Function: int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, const ! gsl_permutation * P, const gsl_vector * B, gsl_vector * X) ! This function solves the triangular system R P^T x = b for the ! N-by-N matrix R contained in QR. ! ! - Function: int gsl_linalg_QRPT_Rsvx (const gsl_matrix * QR, const ! gsl_permutation * P, gsl_vector * X) ! This function solves the triangular system R P^T x = b in-place ! for the N-by-N matrix R contained in QR. On input X should contain ! the right-hand side b, which is replaced by the solution on output. ! !  ! File: gsl-ref.info, Node: Singular Value Decomposition, Next: Cholesky Decomposition, Prev: QR Decomposition with Column Pivoting, Up: Linear Algebra ! ! Singular Value Decomposition ! ============================ ! ! A general rectangular M-by-N matrix A has a singular value ! decomposition (SVD) into the product of an M-by-N orthogonal matrix U, ! an N-by-N diagonal matrix of singular values S and the transpose of an ! N-by-N orthogonal square matrix V, ! ! A = U S V^T ! ! The singular values \sigma_i = S_{ii} are all non-negative and are ! generally chosen to form a non-increasing sequence \sigma_1 >= \sigma_2 ! >= ... >= \sigma_N >= 0. ! ! The singular value decomposition of a matrix has many practical uses. ! The condition number of the matrix is given by the ratio of the largest ! singular value to the smallest singular value. The presence of a zero ! singular value indicates that the matrix is singular. The number of ! non-zero singular values indicates the rank of the matrix. In practice ! singular value decomposition of a rank-deficient matrix will not produce ! exact zeroes for singular values, due to finite numerical precision. ! Small singular values should be edited by choosing a suitable tolerance. ! ! - Function: int gsl_linalg_SV_decomp (gsl_matrix * A, gsl_matrix * V, ! gsl_vector * S, gsl_vector * WORK) ! This function factorizes the M-by-N matrix A into the singular ! value decomposition A = U S V^T. On output the matrix A is ! replaced by U. The diagonal elements of the singular value matrix ! S are stored in the vector S. The singular values are non-negative ! and form a non-increasing sequence from S_1 to S_N. The matrix V ! contains the elements of V in untransposed form. To form the ! product U S V^T it is necessary to take the transpose of V. A ! workspace of length N is required in WORK. ! ! This routine uses the Golub-Reinsch SVD algorithm. ! ! - Function: int gsl_linalg_SV_decomp_mod (gsl_matrix * A, gsl_matrix * ! X, gsl_matrix * V, gsl_vector * S, gsl_vector * WORK) ! This function computes the SVD using the modified Golub-Reinsch ! algorithm, which is faster for M>>N. It requires the vector WORK ! and the N-by-N matrix X as additional working space. ! ! - Function: int gsl_linalg_SV_decomp_jacobi (gsl_matrix * A, ! gsl_matrix * V, gsl_vector * S) ! This function computes the SVD using one-sided Jacobi ! orthogonalization (see references for details). The Jacobi method ! can compute singular values to higher relative accuracy than ! Golub-Reinsch algorithms. ! ! - Function: int gsl_linalg_SV_solve (gsl_matrix * U, gsl_matrix * V, ! gsl_vector * S, const gsl_vector * B, gsl_vector * X) ! This function solves the system A x = b using the singular value ! decomposition (U, S, V) of A given by `gsl_linalg_SV_decomp'. ! ! Only non-zero singular values are used in computing the solution. ! The parts of the solution corresponding to singular values of zero ! are ignored. Other singular values can be edited out by setting ! them to zero before calling this function. ! ! In the over-determined case where A has more rows than columns the ! system is solved in the least squares sense, returning the solution ! X which minimizes ||A x - b||_2. ! !  ! File: gsl-ref.info, Node: Cholesky Decomposition, Next: Tridiagonal Decomposition of Real Symmetric Matrices, Prev: Singular Value Decomposition, Up: Linear Algebra ! ! Cholesky Decomposition ! ====================== ! ! A symmetric, positive definite square matrix A has a Cholesky ! decomposition into a product of a lower triangular matrix L and its ! transpose L^T, ! ! A = L L^T ! ! This is sometimes referred to as taking the square-root of a matrix. The ! Cholesky decomposition can only be carried out when all the eigenvalues ! of the matrix are positive. This decomposition can be used to convert ! the linear system A x = b into a pair of triangular systems (L y = b, ! L^T x = y), which can be solved by forward and back-substitution. ! ! - Function: int gsl_linalg_cholesky_decomp (gsl_matrix * A) ! This function factorizes the positive-definite square matrix A ! into the Cholesky decomposition A = L L^T. On output the diagonal ! and lower triangular part of the input matrix A contain the matrix ! L. The upper triangular part of the input matrix contains L^T, the ! diagonal terms being identical for both L and L^T. If the matrix ! is not positive-definite then the decomposition will fail, ! returning the error code `GSL_EDOM'. ! ! - Function: int gsl_linalg_cholesky_solve (const gsl_matrix * ! CHOLESKY, const gsl_vector * B, gsl_vector * X) ! This function solves the system A x = b using the Cholesky ! decomposition of A into the matrix CHOLESKY given by ! `gsl_linalg_cholesky_decomp'. ! ! - Function: int gsl_linalg_cholesky_svx (const gsl_matrix * CHOLESKY, ! gsl_vector * X) ! This function solves the system A x = b in-place using the ! Cholesky decomposition of A into the matrix CHOLESKY given by ! `gsl_linalg_cholesky_decomp'. On input X should contain the ! right-hand side b, which is replaced by the solution on output. ! !  ! File: gsl-ref.info, Node: Tridiagonal Decomposition of Real Symmetric Matrices, Next: Tridiagonal Decomposition of Hermitian Matrices, Prev: Cholesky Decomposition, Up: Linear Algebra ! ! Tridiagonal Decomposition of Real Symmetric Matrices ! ==================================================== ! ! A symmetric matrix A can be factorized by similarity transformations ! into the form, ! ! A = Q T Q^T ! ! where Q is an orthogonal matrix and T is a symmetric tridiagonal matrix. ! ! - Function: int gsl_linalg_symmtd_decomp (gsl_matrix * A, gsl_vector * ! TAU) ! This function factorizes the symmetric square matrix A into the ! symmetric tridiagonal decomposition Q T Q^T. On output the ! diagonal and subdiagonal part of the input matrix A contain the ! tridiagonal matrix T. The remaining lower triangular part of the ! input matrix contains the Householder vectors which, together with ! the Householder coefficients TAU, encode the orthogonal matrix Q. ! This storage scheme is the same as used by LAPACK. The upper ! triangular part of A is not referenced. ! ! - Function: int gsl_linalg_symmtd_unpack (const gsl_matrix * A, const ! gsl_vector * TAU, gsl_matrix * Q, gsl_vector * DIAG, ! gsl_vector * SUBDIAG) ! This function unpacks the encoded symmetric tridiagonal ! decomposition (A, TAU) obtained from `gsl_linalg_symmtd_decomp' ! into the orthogonal matrix Q, the vector of diagonal elements DIAG ! and the vector of subdiagonal elements SUBDIAG. ! ! - Function: int gsl_linalg_symmtd_unpack_T (const gsl_matrix * A, ! gsl_vector * DIAG, gsl_vector * SUBDIAG) ! This function unpacks the diagonal and subdiagonal of the encoded ! symmetric tridiagonal decomposition (A, TAU) obtained from ! `gsl_linalg_symmtd_decomp' into the vectors DIAG and SUBDIAG. ! !  ! File: gsl-ref.info, Node: Tridiagonal Decomposition of Hermitian Matrices, Next: Bidiagonalization, Prev: Tridiagonal Decomposition of Real Symmetric Matrices, Up: Linear Algebra ! ! Tridiagonal Decomposition of Hermitian Matrices ! =============================================== ! ! A hermitian matrix A can be factorized by similarity transformations ! into the form, ! ! A = U T U^T ! ! where U is an unitary matrix and T is a real symmetric tridiagonal ! matrix. ! ! - Function: int gsl_linalg_hermtd_decomp (gsl_matrix_complex * A, ! gsl_vector_complex * TAU) ! This function factorizes the hermitian matrix A into the symmetric ! tridiagonal decomposition U T U^T. On output the real parts of ! the diagonal and subdiagonal part of the input matrix A contain ! the tridiagonal matrix T. The remaining lower triangular part of ! the input matrix contains the Householder vectors which, together ! with the Householder coefficients TAU, encode the orthogonal matrix ! Q. This storage scheme is the same as used by LAPACK. The upper ! triangular part of A and imaginary parts of the diagonal are not ! referenced. ! ! - Function: int gsl_linalg_hermtd_unpack (const gsl_matrix_complex * ! A, const gsl_vector_complex * TAU, gsl_matrix_complex * Q, ! gsl_vector * DIAG, gsl_vector * SUBDIAG) ! This function unpacks the encoded tridiagonal decomposition (A, ! TAU) obtained from `gsl_linalg_hermtd_decomp' into the unitary ! matrix U, the real vector of diagonal elements DIAG and the real ! vector of subdiagonal elements SUBDIAG. ! ! - Function: int gsl_linalg_hermtd_unpack_T (const gsl_matrix_complex * ! A, gsl_vector * DIAG, gsl_vector * SUBDIAG) ! This function unpacks the diagonal and subdiagonal of the encoded ! tridiagonal decomposition (A, TAU) obtained from ! `gsl_linalg_hermtd_decomp' into the real vectors DIAG and SUBDIAG. ! !  ! File: gsl-ref.info, Node: Bidiagonalization, Next: Householder Transformations, Prev: Tridiagonal Decomposition of Hermitian Matrices, Up: Linear Algebra ! ! Bidiagonalization ! ================= ! ! A general matrix A can be factorized by similarity transformations into ! the form, ! ! A = U B V^T ! ! where U and V are orthogonal matrices and B is a N-by-N bidiagonal ! matrix with non-zero entries only on the diagonal and superdiagonal. ! The size of U is M-by-N and the size of V is N-by-N. ! ! - Function: int gsl_linalg_bidiag_decomp (gsl_matrix * A, gsl_vector * ! TAU_U, gsl_vector * TAU_V) ! This function factorizes the M-by-N matrix A into bidiagonal form ! U B V^T. The diagonal and superdiagonal of the matrix B are ! stored in the diagonal and superdiagonal of A. The orthogonal ! matrices U and V are stored as compressed Householder vectors in ! the remaining elements of A. The Householder coefficients are ! stored in the vectors TAU_U and TAU_V. The length of TAU_U must ! equal the number of elements in the diagonal of A and the length ! of TAU_V should be one element shorter. ! ! - Function: int gsl_linalg_bidiag_unpack (const gsl_matrix * A, const ! gsl_vector * TAU_U, gsl_matrix * U, const gsl_vector * TAU_V, ! gsl_matrix * V, gsl_vector * DIAG, gsl_vector * SUPERDIAG) ! This function unpacks the bidiagonal decomposition of A given by ! `gsl_linalg_bidiag_decomp', (A, TAU_U, TAU_V) into the separate ! orthogonal matrices U, V and the diagonal vector DIAG and ! superdiagonal SUPERDIAG. Note that U is stored as a compact ! M-by-N orthogonal matrix satisfying U^T U = I for efficiency. ! ! - Function: int gsl_linalg_bidiag_unpack2 (gsl_matrix * A, gsl_vector ! * TAU_U, gsl_vector * TAU_V, gsl_matrix * V) ! This function unpacks the bidiagonal decomposition of A given by ! `gsl_linalg_bidiag_decomp', (A, TAU_U, TAU_V) into the separate ! orthogonal matrices U, V and the diagonal vector DIAG and ! superdiagonal SUPERDIAG. The matrix U is stored in-place in A. ! ! - Function: int gsl_linalg_bidiag_unpack_B (const gsl_matrix * A, ! gsl_vector * DIAG, gsl_vector * SUPERDIAG) ! This function unpacks the diagonal and superdiagonal of the ! bidiagonal decomposition of A given by `gsl_linalg_bidiag_decomp', ! into the diagonal vector DIAG and superdiagonal vector SUPERDIAG. ! !  ! File: gsl-ref.info, Node: Householder Transformations, Next: Householder solver for linear systems, Prev: Bidiagonalization, Up: Linear Algebra ! ! Householder Transformations ! =========================== ! ! A Householder transformation is a rank-1 modification of the identity ! matrix which can be used to zero out selected elements of a vector. A ! Householder matrix P takes the form, ! ! P = I - \tau v v^T ! ! where v is a vector (called the "Householder vector") and \tau = 2/(v^T ! v). The functions described in this section use the rank-1 structure ! of the Householder matrix to create and apply Householder ! transformations efficiently. ! ! - Function: double gsl_linalg_houlsehoulder_transform (gsl_vector * V) ! This function prepares a Householder transformation P = I - \tau v ! v^T which can be used to zero all the elements of the input vector ! except the first. On output the transformation is stored in the ! vector V and the scalar \tau is returned. ! ! - Function: int gsl_linalg_householder_hm (double tau, const ! gsl_vector * v, gsl_matrix * A) ! This function applies the Householder matrix P defined by the ! scalar TAU and the vector V to the left-hand side of the matrix A. ! On output the result P A is stored in A. ! ! - Function: int gsl_linalg_householder_mh (double tau, const ! gsl_vector * v, gsl_matrix * A) ! This function applies the Householder matrix P defined by the ! scalar TAU and the vector V to the right-hand side of the matrix ! A. On output the result A P is stored in A. ! ! - Function: int gsl_linalg_householder_hv (double tau, const ! gsl_vector * v, gsl_vector * w) ! This function applies the Householder transformation P defined by ! the scalar TAU and the vector V to the vector W. On output the ! result P w is stored in W. ! !  ! File: gsl-ref.info, Node: Householder solver for linear systems, Next: Tridiagonal Systems, Prev: Householder Transformations, Up: Linear Algebra ! ! Householder solver for linear systems ! ===================================== ! ! - Function: int gsl_linalg_HH_solve (gsl_matrix * A, const gsl_vector ! * B, gsl_vector * X) ! This function solves the system A x = b directly using Householder ! transformations. On output the solution is stored in X and B is ! not modified. The matrix A is destroyed by the Householder ! transformations. ! ! - Function: int gsl_linalg_HH_svx (gsl_matrix * A, gsl_vector * X) ! This function solves the system A x = b in-place using Householder ! transformations. On input X should contain the right-hand side b, ! which is replaced by the solution on output. The matrix A is ! destroyed by the Householder transformations. ! !  ! File: gsl-ref.info, Node: Tridiagonal Systems, Next: Linear Algebra Examples, Prev: Householder solver for linear systems, Up: Linear Algebra ! ! Tridiagonal Systems ! =================== ! ! - Function: int gsl_linalg_solve_symm_tridiag (const gsl_vector * ! DIAG, const gsl_vector * E, const gsl_vector * B, gsl_vector ! * X) ! This function solves the general N-by-N system A x = b where A is ! symmetric tridiagonal. The form of A for the 4-by-4 case is shown ! below, ! ! A = ( d_0 e_0 ) ! ( e_0 d_1 e_1 ) ! ( e_1 d_2 e_2 ) ! ( e_2 d_3 ) ! ! ! - Function: int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * ! DIAG, const gsl_vector * E, const gsl_vector * B, gsl_vector ! * X) ! This function solves the general N-by-N system A x = b where A is ! symmetric cyclic tridiagonal. The form of A for the 4-by-4 case ! is shown below, ! ! A = ( d_0 e_0 e_3 ) ! ( e_0 d_1 e_1 ) ! ( e_1 d_2 e_2 ) ! ( e_3 e_2 d_3 ) ! ! !  ! File: gsl-ref.info, Node: Linear Algebra Examples, Next: Linear Algebra References and Further Reading, Prev: Tridiagonal Systems, Up: Linear Algebra ! ! Examples ! ======== ! ! The following program solves the linear system A x = b. The system to ! be solved is, ! ! [ 0.18 0.60 0.57 0.96 ] [x0] [1.0] ! [ 0.41 0.24 0.99 0.58 ] [x1] = [2.0] ! [ 0.14 0.30 0.97 0.66 ] [x2] [3.0] ! [ 0.51 0.13 0.19 0.85 ] [x3] [4.0] ! ! and the solution is found using LU decomposition of the matrix A. ! ! #include ! #include ! ! int ! main (void) ! { ! double a_data[] = { 0.18, 0.60, 0.57, 0.96, ! 0.41, 0.24, 0.99, 0.58, ! 0.14, 0.30, 0.97, 0.66, ! 0.51, 0.13, 0.19, 0.85 }; ! ! double b_data[] = { 1.0, 2.0, 3.0, 4.0 }; ! ! gsl_matrix_view m ! = gsl_matrix_view_array (a_data, 4, 4); ! ! gsl_vector_view b ! = gsl_vector_view_array (b_data, 4); ! ! gsl_vector *x = gsl_vector_alloc (4); ! ! int s; ! ! gsl_permutation * p = gsl_permutation_alloc (4); ! ! gsl_linalg_LU_decomp (&m.matrix, p, &s); ! ! gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x); ! ! printf ("x = \n"); ! gsl_vector_fprintf (stdout, x, "%g"); ! ! gsl_permutation_free (p); ! return 0; ! } ! ! Here is the output from the program, ! ! x = -4.05205 ! -12.6056 ! 1.66091 ! 8.69377 ! ! This can be verified by multiplying the solution x by the original ! matrix A using GNU OCTAVE, ! octave> A = [ 0.18, 0.60, 0.57, 0.96; ! 0.41, 0.24, 0.99, 0.58; ! 0.14, 0.30, 0.97, 0.66; ! 0.51, 0.13, 0.19, 0.85 ]; ! ! octave> x = [ -4.05205; -12.6056; 1.66091; 8.69377]; ! ! octave> A * x ! ans = ! ! 1.0000 ! 2.0000 ! 3.0000 ! 4.0000 ! ! This reproduces the original right-hand side vector, b, in accordance ! with the equation A x = b. ! !  ! File: gsl-ref.info, Node: Linear Algebra References and Further Reading, Prev: Linear Algebra Examples, Up: Linear Algebra ! ! References and Further Reading ! ============================== ! ! Further information on the algorithms described in this section can be ! found in the following book, ! ! G. H. Golub, C. F. Van Loan, `Matrix Computations' (3rd Ed, 1996), ! Johns Hopkins University Press, ISBN 0-8018-5414-8. ! ! The LAPACK library is described in the following manual, ! ! `LAPACK Users' Guide' (Third Edition, 1999), Published by SIAM, ! ISBN 0-89871-447-8. ! ! ! ! The LAPACK source code can be found at the website above, along with an ! online copy of the users guide. ! ! The Modified Golub-Reinsch algorithm is described in the following ! paper, ! ! T.F. Chan, "An Improved Algorithm for Computing the Singular Value ! Decomposition", `ACM Transactions on Mathematical Software', 8 ! (1982), pp 72-83. ! ! The Jacobi algorithm for singular value decomposition is described in ! the following papers, ! ! J.C.Nash, "A one-sided transformation method for the singular value ! decomposition and algebraic eigenproblem", `Computer Journal', ! Volume 18, Number 1 (1973), p 74--76 ! ! James Demmel, Kresimir Veselic, "Jacobi's Method is more accurate ! than QR", `Lapack Working Note 15' (LAWN-15), October 1989. ! Available from netlib, in the ! `lawns' or `lawnspdf' directories. ! !  ! File: gsl-ref.info, Node: Eigensystems, Next: Fast Fourier Transforms, Prev: Linear Algebra, Up: Top ! ! Eigensystems ! ************ ! ! This chapter describes functions for computing eigenvalues and ! eigenvectors of matrices. There are routines for real symmetric and ! complex hermitian matrices, and eigenvalues can be computed with or ! without eigenvectors. The algorithms used are symmetric ! bidiagonalization followed by QR reduction. ! ! These routines are intended for "small" systems where simple ! algorithms are acceptable. Anyone interested finding eigenvalues and ! eigenvectors of large matrices will want to use the sophisticated ! routines found in LAPACK. The Fortran version of LAPACK is recommended ! as the standard package for linear algebra. ! ! The functions described in this chapter are declared in the header ! file `gsl_eigen.h'. ! ! * Menu: ! ! * Real Symmetric Matrices:: ! * Complex Hermitian Matrices:: ! * Sorting Eigenvalues and Eigenvectors:: ! * Eigenvalue and Eigenvector Examples:: ! * Eigenvalue and Eigenvector References:: ! !  ! File: gsl-ref.info, Node: Real Symmetric Matrices, Next: Complex Hermitian Matrices, Up: Eigensystems ! ! Real Symmetric Matrices ! ======================= ! ! - Function: gsl_eigen_symm_workspace * gsl_eigen_symm_alloc (const ! size_t N) ! This function allocates a workspace for computing eigenvalues of ! N-by-N real symmetric matrices. The size of the workspace is ! O(2n). ! ! - Function: void gsl_eigen_symm_free (gsl_eigen_symm_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_eigen_symm (gsl_matrix * A, gsl_vector * EVAL, ! gsl_eigen_symm_workspace * W) ! This function computes the eigenvalues of the real symmetric matrix ! A. Additional workspace of the appropriate size must be provided ! in W. The diagonal and lower triangular part of A are destroyed ! during the computation, but the strict upper triangular part is ! not referenced. The eigenvalues are stored in the vector EVAL and ! are unordered. ! ! - Function: gsl_eigen_symmv_workspace * gsl_eigen_symmv_alloc (const ! size_t N) ! This function allocates a workspace for computing eigenvalues and ! eigenvectors of N-by-N real symmetric matrices. The size of the ! workspace is O(4n). ! ! - Function: void gsl_eigen_symmv_free (gsl_eigen_symmv_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_eigen_symmv (gsl_matrix * A, gsl_vector * EVAL, ! gsl_matrix * EVEC, gsl_eigen_symmv_workspace * W) ! This function computes the eigenvalues and eigenvectors of the real ! symmetric matrix A. Additional workspace of the appropriate size ! must be provided in W. The diagonal and lower triangular part of ! A are destroyed during the computation, but the strict upper ! triangular part is not referenced. The eigenvalues are stored in ! the vector EVAL and are unordered. The corresponding eigenvectors ! are stored in the columns of the matrix EVEC. For example, the ! eigenvector in the first column corresponds to the first ! eigenvalue. The eigenvectors are guaranteed to be mutually ! orthogonal and normalised to unit magnitude. ! !  ! File: gsl-ref.info, Node: Complex Hermitian Matrices, Next: Sorting Eigenvalues and Eigenvectors, Prev: Real Symmetric Matrices, Up: Eigensystems ! ! Complex Hermitian Matrices ! ========================== ! ! - Function: gsl_eigen_herm_workspace * gsl_eigen_herm_alloc (const ! size_t N) ! This function allocates a workspace for computing eigenvalues of ! N-by-N complex hermitian matrices. The size of the workspace is ! O(3n). ! ! - Function: void gsl_eigen_herm_free (gsl_eigen_herm_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_eigen_herm (gsl_matrix_complex * A, gsl_vector * ! EVAL, gsl_eigen_herm_workspace * W) ! This function computes the eigenvalues of the complex hermitian ! matrix A. Additional workspace of the appropriate size must be ! provided in W. The diagonal and lower triangular part of A are ! destroyed during the computation, but the strict upper triangular ! part is not referenced. The imaginary parts of the diagonal are ! assumed to be zero and are not referenced. The eigenvalues are ! stored in the vector EVAL and are unordered. ! ! - Function: gsl_eigen_hermv_workspace * gsl_eigen_hermv_alloc (const ! size_t N) ! This function allocates a workspace for computing eigenvalues and ! eigenvectors of N-by-N complex hermitian matrices. The size of ! the workspace is O(5n). ! ! - Function: void gsl_eigen_hermv_free (gsl_eigen_hermv_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_eigen_hermv (gsl_matrix_complex * A, gsl_vector * ! EVAL, gsl_matrix_complex * EVEC, gsl_eigen_hermv_workspace * ! W) ! This function computes the eigenvalues and eigenvectors of the ! complex hermitian matrix A. Additional workspace of the ! appropriate size must be provided in W. The diagonal and lower ! triangular part of A are destroyed during the computation, but the ! strict upper triangular part is not referenced. The imaginary ! parts of the diagonal are assumed to be zero and are not ! referenced. The eigenvalues are stored in the vector EVAL and are ! unordered. The corresponding complex eigenvectors are stored in ! the columns of the matrix EVEC. For example, the eigenvector in ! the first column corresponds to the first eigenvalue. The ! eigenvectors are guaranteed to be mutually orthogonal and ! normalised to unit magnitude. ! !  ! File: gsl-ref.info, Node: Sorting Eigenvalues and Eigenvectors, Next: Eigenvalue and Eigenvector Examples, Prev: Complex Hermitian Matrices, Up: Eigensystems ! ! Sorting Eigenvalues and Eigenvectors ! ==================================== ! ! - Function: int gsl_eigen_symmv_sort (gsl_vector * EVAL, gsl_matrix * ! EVEC, gsl_eigen_sort_t SORT_TYPE) ! This function simultaneously sorts the eigenvalues stored in the ! vector EVAL and the corresponding real eigenvectors stored in the ! columns of the matrix EVEC into ascending or descending order ! according to the value of the parameter SORT_TYPE, ! ! `GSL_EIGEN_SORT_VAL_ASC' ! ascending order in numerical value ! ! `GSL_EIGEN_SORT_VAL_DESC' ! descending order in numerical value ! ! `GSL_EIGEN_SORT_ABS_ASC' ! ascending order in magnitude ! ! `GSL_EIGEN_SORT_ABS_DESC' ! descending order in magnitude ! ! ! - Function: int gsl_eigen_hermv_sort (gsl_vector * EVAL, ! gsl_matrix_complex * EVEC, gsl_eigen_sort_t SORT_TYPE) ! This function simultaneously sorts the eigenvalues stored in the ! vector EVAL and the corresponding complex eigenvectors stored in ! the columns of the matrix EVEC into ascending or descending order ! according to the value of the parameter SORT_TYPE as shown above. ! !  ! File: gsl-ref.info, Node: Eigenvalue and Eigenvector Examples, Next: Eigenvalue and Eigenvector References, Prev: Sorting Eigenvalues and Eigenvectors, Up: Eigensystems ! ! Examples ! ======== ! ! The following program computes the eigenvalues and eigenvectors of the ! 4-th order Hilbert matrix, H(i,j) = 1/(i + j + 1). ! ! #include ! #include ! #include ! ! int ! main (void) ! { ! double data[] = { 1.0 , 1/2.0, 1/3.0, 1/4.0, ! 1/2.0, 1/3.0, 1/4.0, 1/5.0, ! 1/3.0, 1/4.0, 1/5.0, 1/6.0, ! 1/4.0, 1/5.0, 1/6.0, 1/7.0 }; ! ! gsl_matrix_view m ! = gsl_matrix_view_array (data, 4, 4); ! ! gsl_vector *eval = gsl_vector_alloc (4); ! gsl_matrix *evec = gsl_matrix_alloc (4, 4); ! ! gsl_eigen_symmv_workspace * w = ! gsl_eigen_symmv_alloc (4); ! ! gsl_eigen_symmv (&m.matrix, eval, evec, w); ! ! gsl_eigen_symmv_free (w); ! ! gsl_eigen_symmv_sort (eval, evec, ! GSL_EIGEN_SORT_ABS_ASC); ! ! { ! int i; ! ! for (i = 0; i < 4; i++) ! { ! double eval_i ! = gsl_vector_get (eval, i); ! gsl_vector_view evec_i ! = gsl_matrix_column (evec, i); ! ! printf ("eigenvalue = %g\n", eval_i); ! printf ("eigenvector = \n"); ! gsl_vector_fprintf (stdout, ! &evec_i.vector, "%g"); ! } ! } ! ! return 0; ! } ! ! Here is the beginning of the output from the program, ! ! $ ./a.out ! eigenvalue = 9.67023e-05 ! eigenvector = ! -0.0291933 ! 0.328712 ! -0.791411 ! 0.514553 ! ... ! ! This can be compared with the corresponding output from GNU OCTAVE, ! ! octave> [v,d] = eig(hilb(4)); ! octave> diag(d) ! ans = ! ! 9.6702e-05 ! 6.7383e-03 ! 1.6914e-01 ! 1.5002e+00 ! ! octave> v ! v = ! ! 0.029193 0.179186 -0.582076 0.792608 ! -0.328712 -0.741918 0.370502 0.451923 ! 0.791411 0.100228 0.509579 0.322416 ! -0.514553 0.638283 0.514048 0.252161 ! ! Note that the eigenvectors can differ by a change of sign, since the ! sign of an eigenvector is arbitrary. ! !  ! File: gsl-ref.info, Node: Eigenvalue and Eigenvector References, Prev: Eigenvalue and Eigenvector Examples, Up: Eigensystems ! ! References and Further Reading ! ============================== ! ! Further information on the algorithms described in this section can be ! found in the following book, ! ! G. H. Golub, C. F. Van Loan, `Matrix Computations' (3rd Ed, 1996), ! Johns Hopkins University Press, ISBN 0-8018-5414-8. ! ! The LAPACK library is described in, ! ! `LAPACK Users' Guide' (Third Edition, 1999), Published by SIAM, ! ISBN 0-89871-447-8. ! ! ! ! The LAPACK source code can be found at the website above along with an ! online copy of the users guide. ! !  ! File: gsl-ref.info, Node: Fast Fourier Transforms, Next: Numerical Integration, Prev: Eigensystems, Up: Top ! ! Fast Fourier Transforms (FFTs) ! ****************************** ! ! This chapter describes functions for performing Fast Fourier Transforms ! (FFTs). The library includes radix-2 routines (for lengths which are a ! power of two) and mixed-radix routines (which work for any length). For ! efficiency there are separate versions of the routines for real data and ! for complex data. The mixed-radix routines are a reimplementation of ! the FFTPACK library by Paul Swarztrauber. Fortran code for FFTPACK is ! available on Netlib (FFTPACK also includes some routines for sine and ! cosine transforms but these are currently not available in GSL). For ! details and derivations of the underlying algorithms consult the ! document `GSL FFT Algorithms' (*note FFT References and Further ! Reading::) ! ! * Menu: ! ! * Mathematical Definitions:: ! * Overview of complex data FFTs:: ! * Radix-2 FFT routines for complex data:: ! * Mixed-radix FFT routines for complex data:: ! * Overview of real data FFTs:: ! * Radix-2 FFT routines for real data:: ! * Mixed-radix FFT routines for real data:: ! * FFT References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Mathematical Definitions, Next: Overview of complex data FFTs, Up: Fast Fourier Transforms ! ! Mathematical Definitions ! ======================== ! ! Fast Fourier Transforms are efficient algorithms for calculating the ! discrete fourier transform (DFT), ! ! x_j = \sum_{k=0}^{N-1} z_k \exp(-2\pi i j k / N) ! ! The DFT usually arises as an approximation to the continuous fourier ! transform when functions are sampled at discrete intervals in space or ! time. The naive evaluation of the discrete fourier transform is a ! matrix-vector multiplication W\vec{z}. A general matrix-vector ! multiplication takes O(N^2) operations for N data-points. Fast fourier ! transform algorithms use a divide-and-conquer strategy to factorize the ! matrix W into smaller sub-matrices, corresponding to the integer ! factors of the length N. If N can be factorized into a product of ! integers f_1 f_2 ... f_n then the DFT can be computed in O(N \sum f_i) ! operations. For a radix-2 FFT this gives an operation count of O(N ! \log_2 N). ! ! All the FFT functions offer three types of transform: forwards, ! inverse and backwards, based on the same mathematical definitions. The ! definition of the "forward fourier transform", x = FFT(z), is, ! ! x_j = \sum_{k=0}^{N-1} z_k \exp(-2\pi i j k / N) ! ! and the definition of the "inverse fourier transform", x = IFFT(z), is, ! ! z_j = {1 \over N} \sum_{k=0}^{N-1} x_k \exp(2\pi i j k / N). ! ! The factor of 1/N makes this a true inverse. For example, a call to ! `gsl_fft_complex_forward' followed by a call to ! `gsl_fft_complex_inverse' should return the original data (within ! numerical errors). ! ! In general there are two possible choices for the sign of the ! exponential in the transform/ inverse-transform pair. GSL follows the ! same convention as FFTPACK, using a negative exponential for the forward ! transform. The advantage of this convention is that the inverse ! transform recreates the original function with simple fourier ! synthesis. Numerical Recipes uses the opposite convention, a positive ! exponential in the forward transform. ! ! The "backwards FFT" is simply our terminology for an unscaled ! version of the inverse FFT, ! ! z^{backwards}_j = \sum_{k=0}^{N-1} x_k \exp(2\pi i j k / N). ! ! When the overall scale of the result is unimportant it is often ! convenient to use the backwards FFT instead of the inverse to save ! unnecessary divisions. ! !  ! File: gsl-ref.info, Node: Overview of complex data FFTs, Next: Radix-2 FFT routines for complex data, Prev: Mathematical Definitions, Up: Fast Fourier Transforms ! ! Overview of complex data FFTs ! ============================= ! ! The inputs and outputs for the complex FFT routines are "packed arrays" ! of floating point numbers. In a packed array the real and imaginary ! parts of each complex number are placed in alternate neighboring ! elements. For example, the following definition of a packed array of ! length 6, ! ! double x[3*2]; ! gsl_complex_packed_array data = x; ! ! can be used to hold an array of three complex numbers, `z[3]', in the ! following way, ! ! data[0] = Re(z[0]) ! data[1] = Im(z[0]) ! data[2] = Re(z[1]) ! data[3] = Im(z[1]) ! data[4] = Re(z[2]) ! data[5] = Im(z[2]) ! ! A "stride" parameter allows the user to perform transforms on the ! elements `z[stride*i]' instead of `z[i]'. A stride greater than 1 can ! be used to take an in-place FFT of the column of a matrix. A stride of ! 1 accesses the array without any additional spacing between elements. ! ! The array indices have the same ordering as those in the definition ! of the DFT -- i.e. there are no index transformations or permutations of ! the data. ! ! For physical applications it is important to remember that the index ! appearing in the DFT does not correspond directly to a physical ! frequency. If the time-step of the DFT is \Delta then the ! frequency-domain includes both positive and negative frequencies, ! ranging from -1/(2\Delta) through 0 to +1/(2\Delta). The positive ! frequencies are stored from the beginning of the array up to the ! middle, and the negative frequencies are stored backwards from the end ! of the array. ! ! Here is a table which shows the layout of the array DATA, and the ! correspondence between the time-domain data z, and the frequency-domain ! data x. ! ! index z x = FFT(z) ! ! 0 z(t = 0) x(f = 0) ! 1 z(t = 1) x(f = 1/(N Delta)) ! 2 z(t = 2) x(f = 2/(N Delta)) ! . ........ .................. ! N/2 z(t = N/2) x(f = +1/(2 Delta), ! -1/(2 Delta)) ! . ........ .................. ! N-3 z(t = N-3) x(f = -3/(N Delta)) ! N-2 z(t = N-2) x(f = -2/(N Delta)) ! N-1 z(t = N-1) x(f = -1/(N Delta)) ! ! When N is even the location N/2 contains the most positive and negative ! frequencies +1/(2 \Delta), -1/(2 \Delta)) which are equivalent. If N ! is odd then general structure of the table above still applies, but N/2 ! does not appear. ! !  ! File: gsl-ref.info, Node: Radix-2 FFT routines for complex data, Next: Mixed-radix FFT routines for complex data, Prev: Overview of complex data FFTs, Up: Fast Fourier Transforms ! ! Radix-2 FFT routines for complex data ! ===================================== ! ! The radix-2 algorithms described in this section are simple and compact, ! although not necessarily the most efficient. They use the Cooley-Tukey ! algorithm to compute in-place complex FFTs for lengths which are a power ! of 2 -- no additional storage is required. The corresponding ! self-sorting mixed-radix routines offer better performance at the ! expense of requiring additional working space. ! ! All these functions are declared in the header file ! `gsl_fft_complex.h'. ! ! - Function: int gsl_fft_complex_radix2_forward ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N) ! - Function: int gsl_fft_complex_radix2_transform ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N, ! gsl_fft_direction SIGN) ! - Function: int gsl_fft_complex_radix2_backward ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N) ! - Function: int gsl_fft_complex_radix2_inverse ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N) ! These functions compute forward, backward and inverse FFTs of ! length N with stride STRIDE, on the packed complex array DATA ! using an in-place radix-2 decimation-in-time algorithm. The ! length of the transform N is restricted to powers of two. For the ! `transform' version of the function the SIGN argument can be ! either `forward' (-1) or `backward' (+1). ! ! The functions return a value of `GSL_SUCCESS' if no errors were ! detected, or `GSL_EDOM' if the length of the data N is not a power ! of two. ! ! - Function: int gsl_fft_complex_radix2_dif_forward ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N) ! - Function: int gsl_fft_complex_radix2_dif_transform ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N, ! gsl_fft_direction SIGN) ! - Function: int gsl_fft_complex_radix2_dif_backward ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N) ! - Function: int gsl_fft_complex_radix2_dif_inverse ! (gsl_complex_packed_array DATA, size_t STRIDE, size_t N) ! These are decimation-in-frequency versions of the radix-2 FFT ! functions. ! ! ! Here is an example program which computes the FFT of a short pulse ! in a sample of length 128. To make the resulting fourier transform ! real the pulse is defined for equal positive and negative times (-10 ! ... 10), where the negative times wrap around the end of the array. ! ! #include ! #include ! #include ! #include ! ! #define REAL(z,i) ((z)[2*(i)]) ! #define IMAG(z,i) ((z)[2*(i)+1]) ! ! int ! main (void) ! { ! int i; ! double data[2*128]; ! ! for (i = 0; i < 128; i++) ! { ! REAL(data,i) = 0.0; ! IMAG(data,i) = 0.0; ! } ! ! REAL(data,0) = 1.0; ! ! for (i = 1; i <= 10; i++) ! { ! REAL(data,i) = REAL(data,128-i) = 1.0; ! } ! ! for (i = 0; i < 128; i++) ! { ! printf ("%d %e %e\n", i, ! REAL(data,i), IMAG(data,i)); ! } ! printf ("\n"); ! ! gsl_fft_complex_radix2_forward (data, 1, 128); ! ! for (i = 0; i < 128; i++) ! { ! printf ("%d %e %e\n", i, ! REAL(data,i)/sqrt(128), ! IMAG(data,i)/sqrt(128)); ! } ! ! return 0; ! } ! ! Note that we have assumed that the program is using the default error ! handler (which calls `abort' for any errors). If you are not using a ! safe error handler you would need to check the return status of ! `gsl_fft_complex_radix2_forward'. ! ! The transformed data is rescaled by 1/\sqrt N so that it fits on the ! same plot as the input. Only the real part is shown, by the choice of ! the input data the imaginary part is zero. Allowing for the ! wrap-around of negative times at t=128, and working in units of k/N, ! the DFT approximates the continuum fourier transform, giving a ! modulated \sin function. ! !  ! File: gsl-ref.info, Node: Mixed-radix FFT routines for complex data, Next: Overview of real data FFTs, Prev: Radix-2 FFT routines for complex data, Up: Fast Fourier Transforms ! ! Mixed-radix FFT routines for complex data ! ========================================= ! ! This section describes mixed-radix FFT algorithms for complex data. The ! mixed-radix functions work for FFTs of any length. They are a ! reimplementation of the Fortran FFTPACK library by Paul Swarztrauber. ! The theory is explained in the review article `Self-sorting Mixed-radix ! FFTs' by Clive Temperton. The routines here use the same indexing ! scheme and basic algorithms as FFTPACK. ! ! The mixed-radix algorithm is based on sub-transform modules - highly ! optimized small length FFTs which are combined to create larger FFTs. ! There are efficient modules for factors of 2, 3, 4, 5, 6 and 7. The ! modules for the composite factors of 4 and 6 are faster than combining ! the modules for 2*2 and 2*3. ! ! For factors which are not implemented as modules there is a ! fall-back to a general length-n module which uses Singleton's method for ! efficiently computing a DFT. This module is O(n^2), and slower than a ! dedicated module would be but works for any length n. Of course, ! lengths which use the general length-n module will still be factorized ! as much as possible. For example, a length of 143 will be factorized ! into 11*13. Large prime factors are the worst case scenario, e.g. as ! found in n=2*3*99991, and should be avoided because their O(n^2) ! scaling will dominate the run-time (consult the document `GSL FFT ! Algorithms' included in the GSL distribution if you encounter this ! problem). ! ! The mixed-radix initialization function ! `gsl_fft_complex_wavetable_alloc' returns the list of factors chosen by ! the library for a given length N. It can be used to check how well the ! length has been factorized, and estimate the run-time. To a first ! approximation the run-time scales as N \sum f_i, where the f_i are the ! factors of N. For programs under user control you may wish to issue a ! warning that the transform will be slow when the length is poorly ! factorized. If you frequently encounter data lengths which cannot be ! factorized using the existing small-prime modules consult `GSL FFT ! Algorithms' for details on adding support for other factors. ! ! All these functions are declared in the header file ! `gsl_fft_complex.h'. ! ! - Function: gsl_fft_complex_wavetable * ! gsl_fft_complex_wavetable_alloc (size_t N) ! This function prepares a trigonometric lookup table for a complex ! FFT of length N. The function returns a pointer to the newly ! allocated `gsl_fft_complex_wavetable' if no errors were detected, ! and a null pointer in the case of error. The length N is ! factorized into a product of subtransforms, and the factors and ! their trigonometric coefficients are stored in the wavetable. The ! trigonometric coefficients are computed using direct calls to ! `sin' and `cos', for accuracy. Recursion relations could be used ! to compute the lookup table faster, but if an application performs ! many FFTs of the same length then this computation is a one-off ! overhead which does not affect the final throughput. ! ! The wavetable structure can be used repeatedly for any transform ! of the same length. The table is not modified by calls to any of ! the other FFT functions. The same wavetable can be used for both ! forward and backward (or inverse) transforms of a given length. ! ! - Function: void gsl_fft_complex_wavetable_free ! (gsl_fft_complex_wavetable * WAVETABLE) ! This function frees the memory associated with the wavetable ! WAVETABLE. The wavetable can be freed if no further FFTs of the ! same length will be needed. ! ! These functions operate on a `gsl_fft_complex_wavetable' structure ! which contains internal parameters for the FFT. It is not necessary to ! set any of the components directly but it can sometimes be useful to ! examine them. For example, the chosen factorization of the FFT length ! is given and can be used to provide an estimate of the run-time or ! numerical error. ! ! The wavetable structure is declared in the header file ! `gsl_fft_complex.h'. ! ! - Data Type: gsl_fft_complex_wavetable ! This is a structure that holds the factorization and trigonometric ! lookup tables for the mixed radix fft algorithm. It has the ! following components: ! ! `size_t n' ! This is the number of complex data points ! ! `size_t nf' ! This is the number of factors that the length `n' was ! decomposed into. ! ! `size_t factor[64]' ! This is the array of factors. Only the first `nf' elements ! are used. ! ! `gsl_complex * trig' ! This is a pointer to a preallocated trigonometric lookup ! table of `n' complex elements. ! ! `gsl_complex * twiddle[64]' ! This is an array of pointers into `trig', giving the twiddle ! factors for each pass. ! ! The mixed radix algorithms require additional working space to hold the ! intermediate steps of the transform. ! ! - Function: gsl_fft_complex_workspace * ! gsl_fft_complex_workspace_alloc (size_t N) ! This function allocates a workspace for a complex transform of ! length N. ! ! - Function: void gsl_fft_complex_workspace_free ! (gsl_fft_complex_workspace * WORKSPACE) ! This function frees the memory associated with the workspace ! WORKSPACE. The workspace can be freed if no further FFTs of the ! same length will be needed. ! ! The following functions compute the transform, ! ! - Function: int gsl_fft_complex_forward (gsl_complex_packed_array ! DATA, size_t STRIDE, size_t N, const ! gsl_fft_complex_wavetable * WAVETABLE, ! gsl_fft_complex_workspace * WORK) ! - Function: int gsl_fft_complex_transform (gsl_complex_packed_array ! DATA, size_t STRIDE, size_t N, const ! gsl_fft_complex_wavetable * WAVETABLE, ! gsl_fft_complex_workspace * WORK, gsl_fft_direction SIGN) ! - Function: int gsl_fft_complex_backward (gsl_complex_packed_array ! DATA, size_t STRIDE, size_t N, const ! gsl_fft_complex_wavetable * WAVETABLE, ! gsl_fft_complex_workspace * WORK) ! - Function: int gsl_fft_complex_inverse (gsl_complex_packed_array ! DATA, size_t STRIDE, size_t N, const ! gsl_fft_complex_wavetable * WAVETABLE, ! gsl_fft_complex_workspace * WORK) ! These functions compute forward, backward and inverse FFTs of ! length N with stride STRIDE, on the packed complex array DATA, ! using a mixed radix decimation-in-frequency algorithm. There is ! no restriction on the length N. Efficient modules are provided ! for subtransforms of length 2, 3, 4, 5, 6 and 7. Any remaining ! factors are computed with a slow, O(n^2), general-n module. The ! caller must supply a WAVETABLE containing the trigonometric lookup ! tables and a workspace WORK. For the `transform' version of the ! function the SIGN argument can be either `forward' (-1) or ! `backward' (+1). ! ! The functions return a value of `0' if no errors were detected. The ! following `gsl_errno' conditions are defined for these functions: ! ! `GSL_EDOM' ! The length of the data N is not a positive integer (i.e. N is ! zero). ! ! `GSL_EINVAL' ! The length of the data N and the length used to compute the ! given WAVETABLE do not match. ! ! Here is an example program which computes the FFT of a short pulse ! in a sample of length 630 (=2*3*3*5*7) using the mixed-radix algorithm. ! ! #include ! #include ! #include ! #include ! ! #define REAL(z,i) ((z)[2*(i)]) ! #define IMAG(z,i) ((z)[2*(i)+1]) ! ! int ! main (void) ! { ! int i; ! const int n = 630; ! double data[2*n]; ! ! gsl_fft_complex_wavetable * wavetable; ! gsl_fft_complex_workspace * workspace; ! ! for (i = 0; i < n; i++) ! { ! REAL(data,i) = 0.0; ! IMAG(data,i) = 0.0; ! } ! ! data[0] = 1.0; ! ! for (i = 1; i <= 10; i++) ! { ! REAL(data,i) = REAL(data,n-i) = 1.0; ! } ! ! for (i = 0; i < n; i++) ! { ! printf ("%d: %e %e\n", i, REAL(data,i), ! IMAG(data,i)); ! } ! printf ("\n"); ! ! wavetable = gsl_fft_complex_wavetable_alloc (n); ! workspace = gsl_fft_complex_workspace_alloc (n); ! ! for (i = 0; i < wavetable->nf; i++) ! { ! printf ("# factor %d: %d\n", i, ! wavetable->factor[i]); ! } ! ! gsl_fft_complex_forward (data, 1, n, ! wavetable, workspace); ! ! for (i = 0; i < n; i++) ! { ! printf ("%d: %e %e\n", i, REAL(data,i), ! IMAG(data,i)); ! } ! ! gsl_fft_complex_wavetable_free (wavetable); ! gsl_fft_complex_workspace_free (workspace); ! return 0; ! } ! ! Note that we have assumed that the program is using the default `gsl' ! error handler (which calls `abort' for any errors). If you are not ! using a safe error handler you would need to check the return status of ! all the `gsl' routines. ! !  ! File: gsl-ref.info, Node: Overview of real data FFTs, Next: Radix-2 FFT routines for real data, Prev: Mixed-radix FFT routines for complex data, Up: Fast Fourier Transforms ! ! Overview of real data FFTs ! ========================== ! ! The functions for real data are similar to those for complex data. ! However, there is an important difference between forward and inverse ! transforms. The fourier transform of a real sequence is not real. It ! is a complex sequence with a special symmetry: ! ! z_k = z_{N-k}^* ! ! A sequence with this symmetry is called "conjugate-complex" or ! "half-complex". This different structure requires different storage ! layouts for the forward transform (from real to half-complex) and ! inverse transform (from half-complex back to real). As a consequence ! the routines are divided into two sets: functions in `gsl_fft_real' ! which operate on real sequences and functions in `gsl_fft_halfcomplex' ! which operate on half-complex sequences. ! ! Functions in `gsl_fft_real' compute the frequency coefficients of a ! real sequence. The half-complex coefficients c of a real sequence x ! are given by fourier analysis, ! ! c_k = \sum_{j=0}^{N-1} x_k \exp(-2 \pi i j k /N) ! ! Functions in `gsl_fft_halfcomplex' compute inverse or backwards ! transforms. They reconstruct real sequences by fourier synthesis from ! their half-complex frequency coefficients, c, ! ! x_j = {1 \over N} \sum_{k=0}^{N-1} c_k \exp(2 \pi i j k /N) ! ! The symmetry of the half-complex sequence implies that only half of the ! complex numbers in the output need to be stored. The remaining half can ! be reconstructed using the half-complex symmetry condition. (This works ! for all lengths, even and odd. When the length is even the middle ! value, where k=N/2, is also real). Thus only N real numbers are ! required to store the half-complex sequence, and the transform of a real ! sequence can be stored in the same size array as the original data. ! ! The precise storage arrangements depend on the algorithm, and are ! different for radix-2 and mixed-radix routines. The radix-2 function ! operates in-place, which constrain the locations where each element can ! be stored. The restriction forces real and imaginary parts to be stored ! far apart. The mixed-radix algorithm does not have this restriction, ! and it stores the real and imaginary parts of a given term in ! neighboring locations. This is desirable for better locality of memory ! accesses. ! !  ! File: gsl-ref.info, Node: Radix-2 FFT routines for real data, Next: Mixed-radix FFT routines for real data, Prev: Overview of real data FFTs, Up: Fast Fourier Transforms ! ! Radix-2 FFT routines for real data ! ================================== ! ! This section describes radix-2 FFT algorithms for real data. They use ! the Cooley-Tukey algorithm to compute in-place FFTs for lengths which ! are a power of 2. ! ! The radix-2 FFT functions for real data are declared in the header ! files `gsl_fft_real.h' ! ! - Function: int gsl_fft_real_radix2_transform (double DATA[], size_t ! STRIDE, size_t N) ! This function computes an in-place radix-2 FFT of length N and ! stride STRIDE on the real array DATA. The output is a ! half-complex sequence, which is stored in-place. The arrangement ! of the half-complex terms uses the following scheme: for k < N/2 ! the real part of the k-th term is stored in location k, and the ! corresponding imaginary part is stored in location N-k. Terms ! with k > N/2 can be reconstructed using the symmetry z_k = ! z^*_{N-k}. The terms for k=0 and k=N/2 are both purely real, and ! count as a special case. Their real parts are stored in locations ! 0 and N/2 respectively, while their imaginary parts which are zero ! are not stored. ! ! The following table shows the correspondence between the output ! DATA and the equivalent results obtained by considering the input ! data as a complex sequence with zero imaginary part, ! ! complex[0].real = data[0] ! complex[0].imag = 0 ! complex[1].real = data[1] ! complex[1].imag = data[N-1] ! ............... ................ ! complex[k].real = data[k] ! complex[k].imag = data[N-k] ! ............... ................ ! complex[N/2].real = data[N/2] ! complex[N/2].real = 0 ! ............... ................ ! complex[k'].real = data[k] k' = N - k ! complex[k'].imag = -data[N-k] ! ............... ................ ! complex[N-1].real = data[1] ! complex[N-1].imag = -data[N-1] ! ! The radix-2 FFT functions for halfcomplex data are declared in the ! header file `gsl_fft_halfcomplex.h'. ! ! - Function: int gsl_fft_halfcomplex_radix2_inverse (double DATA[], ! size_t STRIDE, size_t N) ! - Function: int gsl_fft_halfcomplex_radix2_backward (double DATA[], ! size_t STRIDE, size_t N) ! These functions compute the inverse or backwards in-place radix-2 ! FFT of length N and stride STRIDE on the half-complex sequence ! DATA stored according the output scheme used by ! `gsl_fft_real_radix2'. The result is a real array stored in ! natural order. ! ! !  ! File: gsl-ref.info, Node: Mixed-radix FFT routines for real data, Next: FFT References and Further Reading, Prev: Radix-2 FFT routines for real data, Up: Fast Fourier Transforms ! ! Mixed-radix FFT routines for real data ! ====================================== ! ! This section describes mixed-radix FFT algorithms for real data. The ! mixed-radix functions work for FFTs of any length. They are a ! reimplementation of the real-FFT routines in the Fortran FFTPACK library ! by Paul Swarztrauber. The theory behind the algorithm is explained in ! the article `Fast Mixed-Radix Real Fourier Transforms' by Clive ! Temperton. The routines here use the same indexing scheme and basic ! algorithms as FFTPACK. ! ! The functions use the FFTPACK storage convention for half-complex ! sequences. In this convention the half-complex transform of a real ! sequence is stored with frequencies in increasing order, starting at ! zero, with the real and imaginary parts of each frequency in neighboring ! locations. When a value is known to be real the imaginary part is not ! stored. The imaginary part of the zero-frequency component is never ! stored. It is known to be zero (since the zero frequency component is ! simply the sum of the input data (all real)). For a sequence of even ! length the imaginary part of the frequency n/2 is not stored either, ! since the symmetry z_k = z_{N-k}^* implies that this is purely real too. ! ! The storage scheme is best shown by some examples. The table below ! shows the output for an odd-length sequence, n=5. The two columns give ! the correspondence between the 5 values in the half-complex sequence ! returned by `gsl_fft_real_transform', HALFCOMPLEX[] and the values ! COMPLEX[] that would be returned if the same real input sequence were ! passed to `gsl_fft_complex_backward' as a complex sequence (with ! imaginary parts set to `0'), ! ! complex[0].real = halfcomplex[0] ! complex[0].imag = 0 ! complex[1].real = halfcomplex[1] ! complex[1].imag = halfcomplex[2] ! complex[2].real = halfcomplex[3] ! complex[2].imag = halfcomplex[4] ! complex[3].real = halfcomplex[3] ! complex[3].imag = -halfcomplex[4] ! complex[4].real = halfcomplex[1] ! complex[4].imag = -halfcomplex[2] ! ! The upper elements of the COMPLEX array, `complex[3]' and `complex[4]' ! are filled in using the symmetry condition. The imaginary part of the ! zero-frequency term `complex[0].imag' is known to be zero by the ! symmetry. ! ! The next table shows the output for an even-length sequence, n=5 In ! the even case there are two values which are purely real, ! ! complex[0].real = halfcomplex[0] ! complex[0].imag = 0 ! complex[1].real = halfcomplex[1] ! complex[1].imag = halfcomplex[2] ! complex[2].real = halfcomplex[3] ! complex[2].imag = halfcomplex[4] ! complex[3].real = halfcomplex[5] ! complex[3].imag = 0 ! complex[4].real = halfcomplex[3] ! complex[4].imag = -halfcomplex[4] ! complex[5].real = halfcomplex[1] ! complex[5].imag = -halfcomplex[2] ! ! The upper elements of the COMPLEX array, `complex[4]' and `complex[5]' ! are filled in using the symmetry condition. Both `complex[0].imag' and ! `complex[3].imag' are known to be zero. ! ! All these functions are declared in the header files ! `gsl_fft_real.h' and `gsl_fft_halfcomplex.h'. ! ! - Function: gsl_fft_real_wavetable * gsl_fft_real_wavetable_alloc ! (size_t N) ! - Function: gsl_fft_halfcomplex_wavetable * ! gsl_fft_halfcomplex_wavetable_alloc (size_t N) ! These functions prepare trigonometric lookup tables for an FFT of ! size n real elements. The functions return a pointer to the newly ! allocated struct if no errors were detected, and a null pointer in ! the case of error. The length N is factorized into a product of ! subtransforms, and the factors and their trigonometric ! coefficients are stored in the wavetable. The trigonometric ! coefficients are computed using direct calls to `sin' and `cos', ! for accuracy. Recursion relations could be used to compute the ! lookup table faster, but if an application performs many FFTs of ! the same length then computing the wavetable is a one-off overhead ! which does not affect the final throughput. ! ! The wavetable structure can be used repeatedly for any transform ! of the same length. The table is not modified by calls to any of ! the other FFT functions. The appropriate type of wavetable must ! be used for forward real or inverse half-complex transforms. ! ! - Function: void gsl_fft_real_wavetable_free (gsl_fft_real_wavetable * ! WAVETABLE) ! - Function: void gsl_fft_halfcomplex_wavetable_free ! (gsl_fft_halfcomplex_wavetable * WAVETABLE) ! These functions free the memory associated with the wavetable ! WAVETABLE. The wavetable can be freed if no further FFTs of the ! same length will be needed. ! ! The mixed radix algorithms require additional working space to hold the ! intermediate steps of the transform, ! ! - Function: gsl_fft_real_workspace * gsl_fft_real_workspace_alloc ! (size_t N) ! This function allocates a workspace for a real transform of length ! N. The same workspace can be used for both forward real and ! inverse halfcomplex transforms. ! ! - Function: void gsl_fft_real_workspace_free (gsl_fft_real_workspace * ! WORKSPACE) ! This function frees the memory associated with the workspace ! WORKSPACE. The workspace can be freed if no further FFTs of the ! same length will be needed. ! ! The following functions compute the transforms of real and half-complex ! data, ! ! - Function: int gsl_fft_real_transform (double DATA[], size_t STRIDE, ! size_t N, const gsl_fft_real_wavetable * WAVETABLE, ! gsl_fft_real_workspace * WORK) ! - Function: int gsl_fft_halfcomplex_transform (double DATA[], size_t ! STRIDE, size_t N, const gsl_fft_halfcomplex_wavetable * ! WAVETABLE, gsl_fft_real_workspace * WORK) ! These functions compute the FFT of DATA, a real or half-complex ! array of length N, using a mixed radix decimation-in-frequency ! algorithm. For `gsl_fft_real_transform' DATA is an array of ! time-ordered real data. For `gsl_fft_halfcomplex_transform' DATA ! contains fourier coefficients in the half-complex ordering ! described above. There is no restriction on the length N. ! Efficient modules are provided for subtransforms of length 2, 3, 4 ! and 5. Any remaining factors are computed with a slow, O(n^2), ! general-n module. The caller must supply a WAVETABLE containing ! trigonometric lookup tables and a workspace WORK. ! ! - Function: int gsl_fft_real_unpack (const double REAL_COEFFICIENT[], ! gsl_complex_packed_array COMPLEX_COEFFICIENT[], size_t ! STRIDE, size_t N) ! This function converts a single real array, REAL_COEFFICIENT into ! an equivalent complex array, COMPLEX_COEFFICIENT, (with imaginary ! part set to zero), suitable for `gsl_fft_complex' routines. The ! algorithm for the conversion is simply, ! ! for (i = 0; i < n; i++) ! { ! complex_coefficient[i].real ! = real_coefficient[i]; ! complex_coefficient[i].imag ! = 0.0; ! } ! ! - Function: int gsl_fft_halfcomplex_unpack (const double ! HALFCOMPLEX_COEFFICIENT[], gsl_complex_packed_array ! COMPLEX_COEFFICIENT, size_t STRIDE, size_t N) ! This function converts HALFCOMPLEX_COEFFICIENT, an array of ! half-complex coefficients as returned by `gsl_fft_real_transform', ! into an ordinary complex array, COMPLEX_COEFFICIENT. It fills in ! the complex array using the symmetry z_k = z_{N-k}^* to ! reconstruct the redundant elements. The algorithm for the ! conversion is, ! ! complex_coefficient[0].real ! = halfcomplex_coefficient[0]; ! complex_coefficient[0].imag ! = 0.0; ! ! for (i = 1; i < n - i; i++) ! { ! double hc_real ! = halfcomplex_coefficient[2 * i - 1]; ! double hc_imag ! = halfcomplex_coefficient[2 * i]; ! complex_coefficient[i].real = hc_real; ! complex_coefficient[i].imag = hc_imag; ! complex_coefficient[n - i].real = hc_real; ! complex_coefficient[n - i].imag = -hc_imag; ! } ! ! if (i == n - i) ! { ! complex_coefficient[i].real ! = halfcomplex_coefficient[n - 1]; ! complex_coefficient[i].imag ! = 0.0; ! } ! ! Here is an example program using `gsl_fft_real_transform' and ! `gsl_fft_halfcomplex_inverse'. It generates a real signal in the shape ! of a square pulse. The pulse is fourier transformed to frequency ! space, and all but the lowest ten frequency components are removed from ! the array of fourier coefficients returned by `gsl_fft_real_transform'. ! ! The remaining fourier coefficients are transformed back to the ! time-domain, to give a filtered version of the square pulse. Since ! fourier coefficients are stored using the half-complex symmetry both ! positive and negative frequencies are removed and the final filtered ! signal is also real. ! ! #include ! #include ! #include ! #include ! #include ! ! int ! main (void) ! { ! int i, n = 100; ! double data[n]; ! ! gsl_fft_real_wavetable * real; ! gsl_fft_halfcomplex_wavetable * hc; ! gsl_fft_real_workspace * work; ! ! for (i = 0; i < n; i++) ! { ! data[i] = 0.0; ! } ! ! for (i = n / 3; i < 2 * n / 3; i++) ! { ! data[i] = 1.0; ! } ! ! for (i = 0; i < n; i++) ! { ! printf ("%d: %e\n", i, data[i]); ! } ! printf ("\n"); ! ! work = gsl_fft_real_workspace_alloc (n); ! real = gsl_fft_real_wavetable_alloc (n); ! ! gsl_fft_real_transform (data, 1, n, ! real, work); ! ! gsl_fft_real_wavetable_free (real); ! ! for (i = 11; i < n; i++) ! { ! data[i] = 0; ! } ! ! hc = gsl_fft_halfcomplex_wavetable_alloc (n); ! ! gsl_fft_halfcomplex_inverse (data, 1, n, ! hc, work); ! gsl_fft_halfcomplex_wavetable_free (hc); ! ! for (i = 0; i < n; i++) ! { ! printf ("%d: %e\n", i, data[i]); ! } ! ! gsl_fft_real_workspace_free (work); ! return 0; ! } ! !  ! File: gsl-ref.info, Node: FFT References and Further Reading, Prev: Mixed-radix FFT routines for real data, Up: Fast Fourier Transforms ! ! References and Further Reading ! ============================== ! ! A good starting point for learning more about the FFT is the review ! article `Fast Fourier Transforms: A Tutorial Review and A State of the ! Art' by Duhamel and Vetterli, ! ! P. Duhamel and M. Vetterli. Fast fourier transforms: A tutorial ! review and a state of the art. `Signal Processing', 19:259-299, ! 1990. ! ! To find out about the algorithms used in the GSL routines you may want ! to consult the document `GSL FFT Algorithms' (it is included in GSL, as ! `doc/fftalgorithms.tex'). This has general information on FFTs and ! explicit derivations of the implementation for each routine. There are ! also references to the relevant literature. For convenience some of ! the more important references are reproduced below. ! ! There are several introductory books on the FFT with example programs, ! such as `The Fast Fourier Transform' by Brigham and `DFT/FFT and ! Convolution Algorithms' by Burrus and Parks, ! ! E. Oran Brigham. `The Fast Fourier Transform'. Prentice Hall, ! 1974. ! ! C. S. Burrus and T. W. Parks. `DFT/FFT and Convolution ! Algorithms'. Wiley, 1984. ! ! Both these introductory books cover the radix-2 FFT in some detail. ! The mixed-radix algorithm at the heart of the FFTPACK routines is ! reviewed in Clive Temperton's paper, ! ! Clive Temperton. Self-sorting mixed-radix fast fourier transforms. ! `Journal of Computational Physics', 52(1):1-23, 1983. ! ! The derivation of FFTs for real-valued data is explained in the ! following two articles, ! ! Henrik V. Sorenson, Douglas L. Jones, Michael T. Heideman, and C. ! Sidney Burrus. Real-valued fast fourier transform algorithms. ! `IEEE Transactions on Acoustics, Speech, and Signal Processing', ! ASSP-35(6):849-863, 1987. ! ! Clive Temperton. Fast mixed-radix real fourier transforms. ! `Journal of Computational Physics', 52:340-350, 1983. ! ! In 1979 the IEEE published a compendium of carefully-reviewed Fortran ! FFT programs in `Programs for Digital Signal Processing'. It is a ! useful reference for implementations of many different FFT algorithms, ! ! Digital Signal Processing Committee and IEEE Acoustics, Speech, ! and Signal Processing Committee, editors. `Programs for Digital ! Signal Processing'. IEEE Press, 1979. ! ! For serious FFT work we recommend the use of the dedicated FFTW library ! by Frigo and Johnson. The FFTW library is self-optimizing -- it ! automatically tunes itself for each hardware platform in order to ! achieve maximum performance. It is available under the GNU GPL. ! ! FFTW Website, ! ! The source code for FFTPACK is available from Netlib, ! ! FFTPACK, ! !  ! File: gsl-ref.info, Node: Numerical Integration, Next: Random Number Generation, Prev: Fast Fourier Transforms, Up: Top ! ! Numerical Integration ! ********************* ! ! This chapter describes routines for performing numerical integration ! (quadrature) of a function in one dimension. There are routines for ! adaptive and non-adaptive integration of general functions, with ! specialised routines for specific cases. These include integration over ! infinite and semi-infinite ranges, singular integrals, including ! logarithmic singularities, computation of Cauchy principal values and ! oscillatory integrals. The library reimplements the algorithms used in ! QUADPACK, a numerical integration package written by Piessens, ! Doncker-Kapenga, Uberhuber and Kahaner. Fortran code for QUADPACK is ! available on Netlib. ! ! The functions described in this chapter are declared in the header ! file `gsl_integration.h'. ! ! * Menu: ! ! * Numerical Integration Introduction:: ! * QNG non-adaptive Gauss-Kronrod integration:: ! * QAG adaptive integration:: ! * QAGS adaptive integration with singularities:: ! * QAGP adaptive integration with known singular points:: ! * QAGI adaptive integration on infinite intervals:: ! * QAWC adaptive integration for Cauchy principal values:: ! * QAWS adaptive integration for singular functions:: ! * QAWO adaptive integration for oscillatory functions:: ! * QAWF adaptive integration for Fourier integrals:: ! * Numerical integration error codes:: ! * Numerical integration examples:: ! * Numerical integration References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Numerical Integration Introduction, Next: QNG non-adaptive Gauss-Kronrod integration, Up: Numerical Integration ! ! Introduction ! ============ ! ! Each algorithm computes an approximation to a definite integral of the ! form, ! ! I = \int_a^b f(x) w(x) dx ! ! where w(x) is a weight function (for general integrands w(x)=1). The ! user provides absolute and relative error bounds (epsabs, epsrel) which ! specify the following accuracy requirement, ! ! |RESULT - I| <= max(epsabs, epsrel |I|) ! ! where RESULT is the numerical approximation obtained by the algorithm. ! The algorithms attempt to estimate the absolute error ABSERR = |RESULT ! - I| in such a way that the following inequality holds, ! ! |RESULT - I| <= ABSERR <= max(epsabs, epsrel |I|) ! ! The routines will fail to converge if the error bounds are too ! stringent, but always return the best approximation obtained up to that ! stage. ! ! The algorithms in QUADPACK use a naming convention based on the ! following letters, ! ! `Q' - quadrature routine ! ! `N' - non-adaptive integrator ! `A' - adaptive integrator ! ! `G' - general integrand (user-defined) ! `W' - weight function with integrand ! ! `S' - singularities can be more readily integrated ! `P' - points of special difficulty can be supplied ! `I' - infinite range of integration ! `O' - oscillatory weight function, cos or sin ! `F' - Fourier integral ! `C' - Cauchy principal value ! ! The algorithms are built on pairs of quadrature rules, a higher order ! rule and a lower order rule. The higher order rule is used to compute ! the best approximation to an integral over a small range. The ! difference between the results of the higher order rule and the lower ! order rule gives an estimate of the error in the approximation. ! ! The algorithms for general functions (without a weight function) are ! based on Gauss-Kronrod rules. A Gauss-Kronrod rule begins with a ! classical Gaussian quadrature rule of order m. This is extended with ! additional points between each of the abscissae to give a higher order ! Kronrod rule of order 2m+1. The Kronrod rule is efficient because it ! reuses existing function evaluations from the Gaussian rule. The ! higher order Kronrod rule is used as the best approximation to the ! integral, and the difference between the two rules is used as an ! estimate of the error in the approximation. ! ! For integrands with weight functions the algorithms use ! Clenshaw-Curtis quadrature rules. A Clenshaw-Curtis rule begins with ! an n-th order Chebyshev polynomial approximation to the integrand. This ! polynomial can be integrated exactly to give an approximation to the ! integral of the original function. The Chebyshev expansion can be ! extended to higher orders to improve the approximation. The presence of ! singularities (or other behavior) in the integrand can cause slow ! convergence in the Chebyshev approximation. The modified ! Clenshaw-Curtis rules used in QUADPACK separate out several common ! weight functions which cause slow convergence. These weight functions ! are integrated analytically against the Chebyshev polynomials to ! precompute "modified Chebyshev moments". Combining the moments with ! the Chebyshev approximation to the function gives the desired integral. ! The use of analytic integration for the singular part of the function ! allows exact cancellations and substantially improves the overall ! convergence behavior of the integration. ! !  ! File: gsl-ref.info, Node: QNG non-adaptive Gauss-Kronrod integration, Next: QAG adaptive integration, Prev: Numerical Integration Introduction, Up: Numerical Integration ! ! QNG non-adaptive Gauss-Kronrod integration ! ========================================== ! ! The QNG algorithm is a non-adaptive procedure which uses fixed ! Gauss-Kronrod abscissae to sample the integrand at a maximum of 87 ! points. It is provided for fast integration of smooth functions. ! ! - Function: int gsl_integration_qng (const gsl_function *F, double A, ! double B, double EPSABS, double EPSREL, double * RESULT, ! double * ABSERR, size_t * NEVAL) ! This function applies the Gauss-Kronrod 10-point, 21-point, ! 43-point and 87-point integration rules in succession until an ! estimate of the integral of f over (a,b) is achieved within the ! desired absolute and relative error limits, EPSABS and EPSREL. The ! function returns the final approximation, RESULT, an estimate of ! the absolute error, ABSERR and the number of function evaluations ! used, NEVAL. The Gauss-Kronrod rules are designed in such a way ! that each rule uses all the results of its predecessors, in order ! to minimize the total number of function evaluations. ! !  ! File: gsl-ref.info, Node: QAG adaptive integration, Next: QAGS adaptive integration with singularities, Prev: QNG non-adaptive Gauss-Kronrod integration, Up: Numerical Integration ! ! QAG adaptive integration ! ======================== ! ! The QAG algorithm is a simple adaptive integration procedure. The ! integration region is divided into subintervals, and on each iteration ! the subinterval with the largest estimated error is bisected. This ! reduces the overall error rapidly, as the subintervals become ! concentrated around local difficulties in the integrand. These ! subintervals are managed by a `gsl_integration_workspace' struct, which ! handles the memory for the subinterval ranges, results and error ! estimates. ! ! - Function: gsl_integration_workspace * ! gsl_integration_workspace_alloc (size_t N) ! This function allocates a workspace sufficient to hold N double ! precision intervals, their integration results and error estimates. ! ! - Function: void gsl_integration_workspace_free ! (gsl_integration_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_integration_qag (const gsl_function *F, double A, ! double B, double EPSABS, double EPSREL, size_t LIMIT, int ! KEY, gsl_integration_workspace * WORKSPACE, double * RESULT, ! double * ABSERR) ! This function applies an integration rule adaptively until an ! estimate of the integral of f over (a,b) is achieved within the ! desired absolute and relative error limits, EPSABS and EPSREL. ! The function returns the final approximation, RESULT, and an ! estimate of the absolute error, ABSERR. The integration rule is ! determined by the value of KEY, which should be chosen from the ! following symbolic names, ! ! GSL_INTEG_GAUSS15 (key = 1) ! GSL_INTEG_GAUSS21 (key = 2) ! GSL_INTEG_GAUSS31 (key = 3) ! GSL_INTEG_GAUSS41 (key = 4) ! GSL_INTEG_GAUSS51 (key = 5) ! GSL_INTEG_GAUSS61 (key = 6) ! ! corresponding to the 15, 21, 31, 41, 51 and 61 point Gauss-Kronrod ! rules. The higher-order rules give better accuracy for smooth ! functions, while lower-order rules save time when the function ! contains local difficulties, such as discontinuities. ! ! On each iteration the adaptive integration strategy bisects the ! interval with the largest error estimate. The subintervals and ! their results are stored in the memory provided by WORKSPACE. The ! maximum number of subintervals is given by LIMIT, which may not ! exceed the allocated size of the workspace. ! !  ! File: gsl-ref.info, Node: QAGS adaptive integration with singularities, Next: QAGP adaptive integration with known singular points, Prev: QAG adaptive integration, Up: Numerical Integration ! ! QAGS adaptive integration with singularities ! ============================================ ! ! The presence of an integrable singularity in the integration region ! causes an adaptive routine to concentrate new subintervals around the ! singularity. As the subintervals decrease in size the successive ! approximations to the integral converge in a limiting fashion. This ! approach to the limit can be accelerated using an extrapolation ! procedure. The QAGS algorithm combines adaptive bisection with the Wynn ! epsilon-algorithm to speed up the integration of many types of ! integrable singularities. ! ! - Function: int gsl_integration_qags (const gsl_function * F, double ! A, double B, double EPSABS, double EPSREL, size_t LIMIT, ! gsl_integration_workspace * WORKSPACE, double *RESULT, double ! *ABSERR) ! This function applies the Gauss-Kronrod 21-point integration rule ! adaptively until an estimate of the integral of f over (a,b) is ! achieved within the desired absolute and relative error limits, ! EPSABS and EPSREL. The results are extrapolated using the ! epsilon-algorithm, which accelerates the convergence of the ! integral in the presence of discontinuities and integrable ! singularities. The function returns the final approximation from ! the extrapolation, RESULT, and an estimate of the absolute error, ! ABSERR. The subintervals and their results are stored in the ! memory provided by WORKSPACE. The maximum number of subintervals ! is given by LIMIT, which may not exceed the allocated size of the ! workspace. ! ! !  ! File: gsl-ref.info, Node: QAGP adaptive integration with known singular points, Next: QAGI adaptive integration on infinite intervals, Prev: QAGS adaptive integration with singularities, Up: Numerical Integration ! ! QAGP adaptive integration with known singular points ! ==================================================== ! ! - Function: int gsl_integration_qagp (const gsl_function * F, double ! *PTS, size_t NPTS, double EPSABS, double EPSREL, size_t ! LIMIT, gsl_integration_workspace * WORKSPACE, double *RESULT, ! double *ABSERR) ! This function applies the adaptive integration algorithm QAGS ! taking account of the user-supplied locations of singular points. ! The array PTS of length NPTS should contain the endpoints of the ! integration ranges defined by the integration region and locations ! of the singularities. For example, to integrate over the region ! (a,b) with break-points at x_1, x_2, x_3 (where a < x_1 < x_2 < ! x_3 < b) the following PTS array should be used ! ! pts[0] = a ! pts[1] = x_1 ! pts[2] = x_2 ! pts[3] = x_3 ! pts[4] = b ! ! with NPTS = 5. ! ! If you know the locations of the singular points in the integration ! region then this routine will be faster than `QAGS'. ! ! !  ! File: gsl-ref.info, Node: QAGI adaptive integration on infinite intervals, Next: QAWC adaptive integration for Cauchy principal values, Prev: QAGP adaptive integration with known singular points, Up: Numerical Integration ! ! QAGI adaptive integration on infinite intervals ! =============================================== ! ! - Function: int gsl_integration_qagi (gsl_function * F, double EPSABS, ! double EPSREL, size_t LIMIT, gsl_integration_workspace * ! WORKSPACE, double *RESULT, double *ABSERR) ! This function computes the integral of the function F over the ! infinite interval (-\infty,+\infty). The integral is mapped onto ! the interval (0,1] using the transformation x = (1-t)/t, ! ! \int_{-\infty}^{+\infty} dx f(x) = ! \int_0^1 dt (f((1-t)/t) + f((-1+t)/t))/t^2. ! ! It is then integrated using the QAGS algorithm. The normal ! 21-point Gauss-Kronrod rule of QAGS is replaced by a 15-point ! rule, because the transformation can generate an integrable ! singularity at the origin. In this case a lower-order rule is ! more efficient. ! ! - Function: int gsl_integration_qagiu (gsl_function * F, double A, ! double EPSABS, double EPSREL, size_t LIMIT, ! gsl_integration_workspace * WORKSPACE, double *RESULT, double ! *ABSERR) ! This function computes the integral of the function F over the ! semi-infinite interval (a,+\infty). The integral is mapped onto ! the interval (0,1] using the transformation x = a + (1-t)/t, ! ! \int_{a}^{+\infty} dx f(x) = ! \int_0^1 dt f(a + (1-t)/t)/t^2 ! ! and then integrated using the QAGS algorithm. ! ! - Function: int gsl_integration_qagil (gsl_function * F, double B, ! double EPSABS, double EPSREL, size_t LIMIT, ! gsl_integration_workspace * WORKSPACE, double *RESULT, double ! *ABSERR) ! This function computes the integral of the function F over the ! semi-infinite interval (-\infty,b). The integral is mapped onto ! the region (0,1] using the transformation x = b - (1-t)/t, ! ! \int_{+\infty}^{b} dx f(x) = ! \int_0^1 dt f(b - (1-t)/t)/t^2 ! ! and then integrated using the QAGS algorithm. ! !  ! File: gsl-ref.info, Node: QAWC adaptive integration for Cauchy principal values, Next: QAWS adaptive integration for singular functions, Prev: QAGI adaptive integration on infinite intervals, Up: Numerical Integration ! ! QAWC adaptive integration for Cauchy principal values ! ===================================================== ! ! - Function: int gsl_integration_qawc (gsl_function *F, double A, ! double B, double C, double EPSABS, double EPSREL, size_t ! LIMIT, gsl_integration_workspace * WORKSPACE, double * ! RESULT, double * ABSERR) ! This function computes the Cauchy principal value of the integral ! of f over (a,b), with a singularity at C, ! ! I = \int_a^b dx f(x) / (x - c) ! ! The adaptive bisection algorithm of QAG is used, with ! modifications to ensure that subdivisions do not occur at the ! singular point x = c. When a subinterval contains the point x = c ! or is close to it then a special 25-point modified Clenshaw-Curtis ! rule is used to control the singularity. Further away from the ! singularity the algorithm uses an ordinary 15-point Gauss-Kronrod ! integration rule. ! ! !  ! File: gsl-ref.info, Node: QAWS adaptive integration for singular functions, Next: QAWO adaptive integration for oscillatory functions, Prev: QAWC adaptive integration for Cauchy principal values, Up: Numerical Integration ! ! QAWS adaptive integration for singular functions ! ================================================ ! ! The QAWS algorithm is designed for integrands with algebraic-logarithmic ! singularities at the end-points of an integration region. In order to ! work efficiently the algorithm requires a precomputed table of ! Chebyshev moments. ! ! - Function: gsl_integration_qaws_table * ! gsl_integration_qaws_table_alloc (double ALPHA, double BETA, int MU, ! int NU) ! This function allocates space for a `gsl_integration_qaws_table' ! struct and associated workspace describing a singular weight ! function W(x) with the parameters (\alpha, \beta, \mu, \nu), ! ! W(x) = (x-a)^alpha (b-x)^beta log^mu (x-a) log^nu (b-x) ! ! where \alpha > -1, \beta > -1, and \mu = 0, 1, \nu = 0, 1. The ! weight function can take four different forms depending on the ! values of \mu and \nu, ! ! W(x) = (x-a)^alpha (b-x)^beta (mu = 0, nu = 0) ! W(x) = (x-a)^alpha (b-x)^beta log(x-a) (mu = 1, nu = 0) ! W(x) = (x-a)^alpha (b-x)^beta log(b-x) (mu = 0, nu = 1) ! W(x) = (x-a)^alpha (b-x)^beta log(x-a) log(b-x) (mu = 1, nu = 1) ! ! The singular points (a,b) do not have to be specified until the ! integral is computed, where they are the endpoints of the ! integration range. ! ! The function returns a pointer to the newly allocated ! `gsl_integration_qaws_table' if no errors were detected, and 0 in ! the case of error. ! ! - Function: int gsl_integration_qaws_table_set ! (gsl_integration_qaws_table * T, double ALPHA, double BETA, ! int MU, int NU) ! This function modifies the parameters (\alpha, \beta, \mu, \nu) of ! an existing `gsl_integration_qaws_table' struct T. ! ! - Function: void gsl_integration_qaws_table_free ! (gsl_integration_qaws_table * T) ! This function frees all the memory associated with the ! `gsl_integration_qaws_table' struct T. ! ! - Function: int gsl_integration_qaws (gsl_function * F, const double ! A, const double B, gsl_integration_qaws_table * T, const ! double EPSABS, const double EPSREL, const size_t LIMIT, ! gsl_integration_workspace * WORKSPACE, double *RESULT, double ! *ABSERR) ! This function computes the integral of the function f(x) over the ! interval (a,b) with the singular weight function (x-a)^\alpha ! (b-x)^\beta \log^\mu (x-a) \log^\nu (b-x). The parameters of the ! weight function (\alpha, \beta, \mu, \nu) are taken from the table ! T. The integral is, ! ! I = \int_a^b dx f(x) (x-a)^alpha (b-x)^beta log^mu (x-a) log^nu (b-x). ! ! The adaptive bisection algorithm of QAG is used. When a ! subinterval contains one of the endpoints then a special 25-point ! modified Clenshaw-Curtis rule is used to control the ! singularities. For subintervals which do not include the ! endpoints an ordinary 15-point Gauss-Kronrod integration rule is ! used. ! ! !  ! File: gsl-ref.info, Node: QAWO adaptive integration for oscillatory functions, Next: QAWF adaptive integration for Fourier integrals, Prev: QAWS adaptive integration for singular functions, Up: Numerical Integration ! ! QAWO adaptive integration for oscillatory functions ! =================================================== ! ! The QAWO algorithm is designed for integrands with an oscillatory ! factor, \sin(\omega x) or \cos(\omega x). In order to work efficiently ! the algorithm requires a table of Chebyshev moments which must be ! pre-computed with calls to the functions below. ! ! - Function: gsl_integration_qawo_table * ! gsl_integration_qawo_table_alloc (double OMEGA, double L, enum ! gsl_integration_qawo_enum SINE, size_t N) ! This function allocates space for a `gsl_integration_qawo_table' ! struct and its associated workspace describing a sine or cosine ! weight function W(x) with the parameters (\omega, L), ! ! W(x) = sin(omega x) ! W(x) = cos(omega x) ! ! The parameter L must be the length of the interval over which the ! function will be integrated L = b - a. The choice of sine or ! cosine is made with the parameter SINE which should be chosen from ! one of the two following symbolic values: ! ! GSL_INTEG_COSINE ! GSL_INTEG_SINE ! ! The `gsl_integration_qawo_table' is a table of the trigonometric ! coefficients required in the integration process. The parameter N ! determines the number of levels of coefficients that are computed. ! Each level corresponds to one bisection of the interval L, so that ! N levels are sufficient for subintervals down to the length L/2^n. ! The integration routine `gsl_integration_qawo' returns the error ! `GSL_ETABLE' if the number of levels is insufficient for the ! requested accuracy. ! ! ! - Function: int gsl_integration_qawo_table_set ! (gsl_integration_qawo_table * T, double OMEGA, double L, enum ! gsl_integration_qawo_enum SINE) ! This function changes the parameters OMEGA, L and SINE of the ! existing workspace T. ! ! - Function: int gsl_integration_qawo_table_set_length ! (gsl_integration_qawo_table * T, double L) ! This function allows the length parameter L of the workspace T to ! be changed. ! ! - Function: void gsl_integration_qawo_table_free ! (gsl_integration_qawo_table * T) ! This function frees all the memory associated with the workspace T. ! ! - Function: int gsl_integration_qawo (gsl_function * F, const double ! A, const double EPSABS, const double EPSREL, const size_t ! LIMIT, gsl_integration_workspace * WORKSPACE, ! gsl_integration_qawo_table * WF, double *RESULT, double ! *ABSERR) ! This function uses an adaptive algorithm to compute the integral of ! f over (a,b) with the weight function \sin(\omega x) or ! \cos(\omega x) defined by the table WF, ! ! I = \int_a^b dx f(x) sin(omega x) ! I = \int_a^b dx f(x) cos(omega x) ! ! The results are extrapolated using the epsilon-algorithm to ! accelerate the convergence of the integral. The function returns ! the final approximation from the extrapolation, RESULT, and an ! estimate of the absolute error, ABSERR. The subintervals and ! their results are stored in the memory provided by WORKSPACE. The ! maximum number of subintervals is given by LIMIT, which may not ! exceed the allocated size of the workspace. ! ! Those subintervals with "large" widths d, d\omega > 4 are computed ! using a 25-point Clenshaw-Curtis integration rule, which handles ! the oscillatory behavior. Subintervals with a "small" width ! d\omega < 4 are computed using a 15-point Gauss-Kronrod ! integration. ! ! !  ! File: gsl-ref.info, Node: QAWF adaptive integration for Fourier integrals, Next: Numerical integration error codes, Prev: QAWO adaptive integration for oscillatory functions, Up: Numerical Integration ! ! QAWF adaptive integration for Fourier integrals ! =============================================== ! ! - Function: int gsl_integration_qawf (gsl_function * F, const double ! A, const double EPSABS, const size_t LIMIT, ! gsl_integration_workspace * WORKSPACE, ! gsl_integration_workspace * CYCLE_WORKSPACE, ! gsl_integration_qawo_table * WF, double *RESULT, double ! *ABSERR) ! This function attempts to compute a Fourier integral of the ! function F over the semi-infinite interval [a,+\infty). ! ! I = \int_a^{+\infty} dx f(x) sin(omega x) ! I = \int_a^{+\infty} dx f(x) cos(omega x) ! ! The parameter \omega is taken from the table WF (the length L can ! take any value, since it is overridden by this function to a value ! appropriate for the fourier integration). The integral is computed ! using the QAWO algorithm over each of the subintervals, ! ! C_1 = [a, a + c] ! C_2 = [a + c, a + 2 c] ! ... = ... ! C_k = [a + (k-1) c, a + k c] ! ! where c = (2 floor(|\omega|) + 1) \pi/|\omega|. The width c is ! chosen to cover an odd number of periods so that the contributions ! from the intervals alternate in sign and are monotonically ! decreasing when F is positive and monotonically decreasing. The ! sum of this sequence of contributions is accelerated using the ! epsilon-algorithm. ! ! This function works to an overall absolute tolerance of ABSERR. ! The following strategy is used: on each interval C_k the algorithm ! tries to achieve the tolerance ! ! TOL_k = u_k abserr ! ! where u_k = (1 - p)p^{k-1} and p = 9/10. The sum of the geometric ! series of contributions from each interval gives an overall ! tolerance of ABSERR. ! ! If the integration of a subinterval leads to difficulties then the ! accuracy requirement for subsequent intervals is relaxed, ! ! TOL_k = u_k max(abserr, max_{i ! #include ! #include ! ! double f (double x, void * params) { ! double alpha = *(double *) params; ! double f = log(alpha*x) / sqrt(x); ! return f; ! } ! ! int ! main (void) ! { ! gsl_integration_workspace * w ! = gsl_integration_workspace_alloc (1000); ! ! double result, error; ! double expected = -4.0; ! double alpha = 1.0; ! ! gsl_function F; ! F.function = &f; ! F.params = α ! ! gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, ! w, &result, &error); ! ! printf ("result = % .18f\n", result); ! printf ("exact result = % .18f\n", expected); ! printf ("estimated error = % .18f\n", error); ! printf ("actual error = % .18f\n", result - expected); ! printf ("intervals = %d\n", w->size); ! ! return 0; ! } ! ! The results below show that the desired accuracy is achieved after 8 ! subdivisions. ! ! bash$ ./a.out ! ! result = -3.999999999999973799 ! exact result = -4.000000000000000000 ! estimated error = 0.000000000000246025 ! actual error = 0.000000000000026201 ! intervals = 8 ! ! In fact, the extrapolation procedure used by `QAGS' produces an ! accuracy of almost twice as many digits. The error estimate returned by ! the extrapolation procedure is larger than the actual error, giving a ! margin of safety of one order of magnitude. ! !  ! File: gsl-ref.info, Node: Numerical integration References and Further Reading, Prev: Numerical integration examples, Up: Numerical Integration ! ! References and Further Reading ! ============================== ! ! The following book is the definitive reference for QUADPACK, and was ! written by the original authors. It provides descriptions of the ! algorithms, program listings, test programs and examples. It also ! includes useful advice on numerical integration and many references to ! the numerical integration literature used in developing QUADPACK. ! ! R. Piessens, E. de Doncker-Kapenga, C.W. Uberhuber, D.K. Kahaner. ! `QUADPACK A subroutine package for automatic integration' Springer ! Verlag, 1983. ! !  ! File: gsl-ref.info, Node: Random Number Generation, Next: Quasi-Random Sequences, Prev: Numerical Integration, Up: Top ! ! Random Number Generation ! ************************ ! ! The library provides a large collection of random number generators ! which can be accessed through a uniform interface. Environment ! variables allow you to select different generators and seeds at runtime, ! so that you can easily switch between generators without needing to ! recompile your program. Each instance of a generator keeps track of its ! own state, allowing the generators to be used in multi-threaded ! programs. Additional functions are available for transforming uniform ! random numbers into samples from continuous or discrete probability ! distributions such as the Gaussian, log-normal or Poisson distributions. ! ! These functions are declared in the header file `gsl_rng.h'. ! ! * Menu: ! ! * General comments on random numbers:: ! * The Random Number Generator Interface:: ! * Random number generator initialization:: ! * Sampling from a random number generator:: ! * Auxiliary random number generator functions:: ! * Random number environment variables:: ! * Copying random number generator state:: ! * Reading and writing random number generator state:: ! * Random number generator algorithms:: ! * Unix random number generators:: ! * Other random number generators:: ! * Random Number Generator Performance:: ! * Random Number Generator Examples:: ! * Random Number References and Further Reading:: ! * Random Number Acknowledgements:: ! !  ! File: gsl-ref.info, Node: General comments on random numbers, Next: The Random Number Generator Interface, Up: Random Number Generation ! ! General comments on random numbers ! ================================== ! ! In 1988, Park and Miller wrote a paper entitled "Random number ! generators: good ones are hard to find." [Commun. ACM, 31, 1192-1201]. ! Fortunately, some excellent random number generators are available, ! though poor ones are still in common use. You may be happy with the ! system-supplied random number generator on your computer, but you should ! be aware that as computers get faster, requirements on random number ! generators increase. Nowadays, a simulation that calls a random number ! generator millions of times can often finish before you can make it down ! the hall to the coffee machine and back. ! ! A very nice review of random number generators was written by Pierre ! L'Ecuyer, as Chapter 4 of the book: Handbook on Simulation, Jerry Banks, ! ed. (Wiley, 1997). The chapter is available in postscript from ! L'Ecuyer's ftp site (see references). Knuth's volume on Seminumerical ! Algorithms (originally published in 1968) devotes 170 pages to random ! number generators, and has recently been updated in its 3rd edition ! (1997). It is brilliant, a classic. If you don't own it, you should ! stop reading right now, run to the nearest bookstore, and buy it. ! ! A good random number generator will satisfy both theoretical and ! statistical properties. Theoretical properties are often hard to obtain ! (they require real math!), but one prefers a random number generator ! with a long period, low serial correlation, and a tendency _not_ to ! "fall mainly on the planes." Statistical tests are performed with ! numerical simulations. Generally, a random number generator is used to ! estimate some quantity for which the theory of probability provides an ! exact answer. Comparison to this exact answer provides a measure of ! "randomness". ! !  ! File: gsl-ref.info, Node: The Random Number Generator Interface, Next: Random number generator initialization, Prev: General comments on random numbers, Up: Random Number Generation ! ! The Random Number Generator Interface ! ===================================== ! ! It is important to remember that a random number generator is not a ! "real" function like sine or cosine. Unlike real functions, successive ! calls to a random number generator yield different return values. Of ! course that is just what you want for a random number generator, but to ! achieve this effect, the generator must keep track of some kind of ! "state" variable. Sometimes this state is just an integer (sometimes ! just the value of the previously generated random number), but often it ! is more complicated than that and may involve a whole array of numbers, ! possibly with some indices thrown in. To use the random number ! generators, you do not need to know the details of what comprises the ! state, and besides that varies from algorithm to algorithm. ! ! The random number generator library uses two special structs, ! `gsl_rng_type' which holds static information about each type of ! generator and `gsl_rng' which describes an instance of a generator ! created from a given `gsl_rng_type'. ! ! The functions described in this section are declared in the header ! file `gsl_rng.h'. ! !  ! File: gsl-ref.info, Node: Random number generator initialization, Next: Sampling from a random number generator, Prev: The Random Number Generator Interface, Up: Random Number Generation ! ! Random number generator initialization ! ====================================== ! ! - Random: gsl_rng * gsl_rng_alloc (const gsl_rng_type * T) ! This function returns a pointer to a newly-created instance of a ! random number generator of type T. For example, the following ! code creates an instance of the Tausworthe generator, ! ! gsl_rng * r = gsl_rng_alloc (gsl_rng_taus); ! ! If there is insufficient memory to create the generator then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! The generator is automatically initialized with the default seed, ! `gsl_rng_default_seed'. This is zero by default but can be changed ! either directly or by using the environment variable `GSL_RNG_SEED' ! (*note Random number environment variables::). ! ! The details of the available generator types are described later ! in this chapter. ! ! - Random: void gsl_rng_set (const gsl_rng * R, unsigned long int S) ! This function initializes (or `seeds') the random number ! generator. If the generator is seeded with the same value of S on ! two different runs, the same stream of random numbers will be ! generated by successive calls to the routines below. If different ! values of S are supplied, then the generated streams of random ! numbers should be completely different. If the seed S is zero ! then the standard seed from the original implementation is used ! instead. For example, the original Fortran source code for the ! `ranlux' generator used a seed of 314159265, and so choosing S ! equal to zero reproduces this when using `gsl_rng_ranlux'. ! ! - Random: void gsl_rng_free (gsl_rng * R) ! This function frees all the memory associated with the generator R. ! !  ! File: gsl-ref.info, Node: Sampling from a random number generator, Next: Auxiliary random number generator functions, Prev: Random number generator initialization, Up: Random Number Generation ! ! Sampling from a random number generator ! ======================================= ! ! The following functions return uniformly distributed random numbers, ! either as integers or double precision floating point numbers. To ! obtain non-uniform distributions *note Random Number Distributions::. ! ! - Random: unsigned long int gsl_rng_get (const gsl_rng * R) ! This function returns a random integer from the generator R. The ! minimum and maximum values depend on the algorithm used, but all ! integers in the range [MIN,MAX] are equally likely. The values of ! MIN and MAX can determined using the auxiliary functions ! `gsl_rng_max (r)' and `gsl_rng_min (r)'. ! ! - Random: double gsl_rng_uniform (const gsl_rng * R) ! This function returns a double precision floating point number ! uniformly distributed in the range [0,1). The range includes 0.0 ! but excludes 1.0. The value is typically obtained by dividing the ! result of `gsl_rng_get(r)' by `gsl_rng_max(r) + 1.0' in double ! precision. Some generators compute this ratio internally so that ! they can provide floating point numbers with more than 32 bits of ! randomness (the maximum number of bits that can be portably ! represented in a single `unsigned long int'). ! ! - Random: double gsl_rng_uniform_pos (const gsl_rng * R) ! This function returns a positive double precision floating point ! number uniformly distributed in the range (0,1), excluding both ! 0.0 and 1.0. The number is obtained by sampling the generator ! with the algorithm of `gsl_rng_uniform' until a non-zero value is ! obtained. You can use this function if you need to avoid a ! singularity at 0.0. ! ! - Random: unsigned long int gsl_rng_uniform_int (const gsl_rng * R, ! unsigned long int N) ! This function returns a random integer from 0 to N-1 inclusive. ! All integers in the range [0,N-1] are equally likely, regardless ! of the generator used. An offset correction is applied so that ! zero is always returned with the correct probability, for any ! minimum value of the underlying generator. ! ! If N is larger than the range of the generator then the function ! calls the error handler with an error code of `GSL_EINVAL' and ! returns zero. ! !  ! File: gsl-ref.info, Node: Auxiliary random number generator functions, Next: Random number environment variables, Prev: Sampling from a random number generator, Up: Random Number Generation ! ! Auxiliary random number generator functions ! =========================================== ! ! The following functions provide information about an existing ! generator. You should use them in preference to hard-coding the ! generator parameters into your own code. ! ! - Random: const char * gsl_rng_name (const gsl_rng * R) ! This function returns a pointer to the name of the generator. For ! example, ! ! printf ("r is a '%s' generator\n", ! gsl_rng_name (r)); ! ! would print something like `r is a 'taus' generator'. ! ! - Random: unsigned long int gsl_rng_max (const gsl_rng * R) ! `gsl_rng_max' returns the largest value that `gsl_rng_get' can ! return. ! ! - Random: unsigned long int gsl_rng_min (const gsl_rng * R) ! `gsl_rng_min' returns the smallest value that `gsl_rng_get' can ! return. Usually this value is zero. There are some generators ! with algorithms that cannot return zero, and for these generators ! the minimum value is 1. ! ! - Random: void * gsl_rng_state (const gsl_rng * R) ! - Random: size_t gsl_rng_size (const gsl_rng * R) ! These functions return a pointer to the state of generator R and ! its size. You can use this information to access the state ! directly. For example, the following code will write the state of ! a generator to a stream, ! ! void * state = gsl_rng_state (r); ! size_t n = gsl_rng_size (r); ! fwrite (state, n, 1, stream); ! ! - Random: const gsl_rng_type ** gsl_rng_types_setup (void) ! This function returns a pointer to an array of all the available ! generator types, terminated by a null pointer. The function should ! be called once at the start of the program, if needed. The ! following code fragment shows how to iterate over the array of ! generator types to print the names of the available algorithms, ! ! const gsl_rng_type **t, **t0; ! ! t0 = gsl_rng_types_setup (); ! ! printf ("Available generators:\n"); ! ! for (t = t0; *t != 0; t++) ! { ! printf ("%s\n", (*t)->name); ! } ! !  ! File: gsl-ref.info, Node: Random number environment variables, Next: Copying random number generator state, Prev: Auxiliary random number generator functions, Up: Random Number Generation ! ! Random number environment variables ! =================================== ! ! The library allows you to choose a default generator and seed from the ! environment variables `GSL_RNG_TYPE' and `GSL_RNG_SEED' and the ! function `gsl_rng_env_setup'. This makes it easy try out different ! generators and seeds without having to recompile your program. ! ! - Function: const gsl_rng_type * gsl_rng_env_setup (void) ! This function reads the environment variables `GSL_RNG_TYPE' and ! `GSL_RNG_SEED' and uses their values to set the corresponding ! library variables `gsl_rng_default' and `gsl_rng_default_seed'. ! These global variables are defined as follows, ! ! extern const gsl_rng_type *gsl_rng_default ! extern unsigned long int gsl_rng_default_seed ! ! The environment variable `GSL_RNG_TYPE' should be the name of a ! generator, such as `taus' or `mt19937'. The environment variable ! `GSL_RNG_SEED' should contain the desired seed value. It is ! converted to an `unsigned long int' using the C library function ! `strtoul'. ! ! If you don't specify a generator for `GSL_RNG_TYPE' then ! `gsl_rng_mt19937' is used as the default. The initial value of ! `gsl_rng_default_seed' is zero. ! ! ! Here is a short program which shows how to create a global generator ! using the environment variables `GSL_RNG_TYPE' and `GSL_RNG_SEED', ! ! #include ! #include ! ! gsl_rng * r; /* global generator */ ! ! int ! main (void) ! { ! const gsl_rng_type * T; ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! printf ("generator type: %s\n", gsl_rng_name (r)); ! printf ("seed = %lu\n", gsl_rng_default_seed); ! printf ("first value = %lu\n", gsl_rng_get (r)); ! return 0; ! } ! ! Running the program without any environment variables uses the initial ! defaults, an `mt19937' generator with a seed of 0, ! ! bash$ ./a.out ! ! generator type: mt19937 ! seed = 0 ! first value = 4293858116 ! ! By setting the two variables on the command line we can change the ! default generator and the seed, ! ! bash$ GSL_RNG_TYPE="taus" GSL_RNG_SEED=123 ./a.out ! GSL_RNG_TYPE=taus ! GSL_RNG_SEED=123 ! generator type: taus ! seed = 123 ! first value = 2720986350 ! !  ! File: gsl-ref.info, Node: Copying random number generator state, Next: Reading and writing random number generator state, Prev: Random number environment variables, Up: Random Number Generation ! ! Copying random number generator state ! ===================================== ! ! The above methods ignore the random number `state' which changes from ! call to call. It is often useful to be able to save and restore the ! state. To permit these practices, a few somewhat more advanced ! functions are supplied. These include: ! ! - Random: int gsl_rng_memcpy (gsl_rng * DEST, const gsl_rng * SRC) ! This function copies the random number generator SRC into the ! pre-existing generator DEST, making DEST into an exact copy of ! SRC. The two generators must be of the same type. ! ! - Random: gsl_rng * gsl_rng_clone (const gsl_rng * R) ! This function returns a pointer to a newly created generator which ! is an exact copy of the generator R. ! !  ! File: gsl-ref.info, Node: Reading and writing random number generator state, Next: Random number generator algorithms, Prev: Copying random number generator state, Up: Random Number Generation ! ! Reading and writing random number generator state ! ================================================= ! ! The library provides functions for reading and writing the random ! number state to a file as binary data or formatted text. ! ! - Function: int gsl_rng_fwrite (FILE * STREAM, const gsl_rng * R) ! This function writes the random number state of the random number ! generator R to the stream STREAM in binary format. The return ! value is 0 for success and `GSL_EFAILED' if there was a problem ! writing to the file. Since the data is written in the native ! binary format it may not be portable between different ! architectures. ! ! - Function: int gsl_rng_fread (FILE * STREAM, gsl_rng * R) ! This function reads the random number state into the random number ! generator R from the open stream STREAM in binary format. The ! random number generator R must be preinitialized with the correct ! random number generator type since type information is not saved. ! The return value is 0 for success and `GSL_EFAILED' if there was a ! problem reading from the file. The data is assumed to have been ! written in the native binary format on the same architecture. ! !  ! File: gsl-ref.info, Node: Random number generator algorithms, Next: Unix random number generators, Prev: Reading and writing random number generator state, Up: Random Number Generation ! ! Random number generator algorithms ! ================================== ! ! The functions described above make no reference to the actual algorithm ! used. This is deliberate so that you can switch algorithms without ! having to change any of your application source code. The library ! provides a large number of generators of different types, including ! simulation quality generators, generators provided for compatibility ! with other libraries and historical generators from the past. ! ! The following generators are recommended for use in simulation. They ! have extremely long periods, low correlation and pass most statistical ! tests. ! ! - Generator: gsl_rng_mt19937 ! The MT19937 generator of Makoto Matsumoto and Takuji Nishimura is a ! variant of the twisted generalized feedback shift-register ! algorithm, and is known as the "Mersenne Twister" generator. It ! has a Mersenne prime period of 2^19937 - 1 (about 10^6000) and is ! equi-distributed in 623 dimensions. It has passed the DIEHARD ! statistical tests. It uses 624 words of state per generator and is ! comparable in speed to the other generators. The original ! generator used a default seed of 4357 and choosing S equal to zero ! in `gsl_rng_set' reproduces this. ! ! For more information see, ! Makoto Matsumoto and Takuji Nishimura, "Mersenne Twister: A ! 623-dimensionally equidistributed uniform pseudorandom number ! generator". `ACM Transactions on Modeling and Computer ! Simulation', Vol. 8, No. 1 (Jan. 1998), Pages 3-30 ! ! The generator `gsl_rng_19937' uses the second revision of the ! seeding procedure published by the two authors above in 2002. The ! original seeding procedures could cause spurious artifacts for ! some seed values. They are still available through the alternate ! generators `gsl_rng_mt19937_1999' and `gsl_rng_mt19937_1998'. ! ! - Generator: gsl_rng_ranlxs0 ! - Generator: gsl_rng_ranlxs1 ! - Generator: gsl_rng_ranlxs2 ! The generator `ranlxs0' is a second-generation version of the ! RANLUX algorithm of Lu"scher, which produces "luxury random ! numbers". This generator provides single precision output (24 ! bits) at three luxury levels `ranlxs0', `ranlxs1' and `ranlxs2'. ! It uses double-precision floating point arithmetic internally and ! can be significantly faster than the integer version of `ranlux', ! particularly on 64-bit architectures. The period of the generator ! is about 10^171. The algorithm has mathematically proven ! properties and can provide truly decorrelated numbers at a known ! level of randomness. The higher luxury levels provide additional ! decorrelation between samples as an additional safety margin. ! ! - Generator: gsl_rng_ranlxd1 ! - Generator: gsl_rng_ranlxd2 ! These generators produce double precision output (48 bits) from the ! RANLXS generator. The library provides two luxury levels ! `ranlxd1' and `ranlxd2'. ! ! - Generator: gsl_rng_ranlux ! - Generator: gsl_rng_ranlux389 ! The `ranlux' generator is an implementation of the original ! algorithm developed by Lu"scher. It uses a ! lagged-fibonacci-with-skipping algorithm to produce "luxury random ! numbers". It is a 24-bit generator, originally designed for ! single-precision IEEE floating point numbers. This implementation ! is based on integer arithmetic, while the second-generation ! versions RANLXS and RANLXD described above provide floating-point ! implementations which will be faster on many platforms. The ! period of the generator is about 10^171. The algorithm has ! mathematically proven properties and it can provide truly ! decorrelated numbers at a known level of randomness. The default ! level of decorrelation recommended by Lu"scher is provided by ! `gsl_rng_ranlux', while `gsl_rng_ranlux389' gives the highest ! level of randomness, with all 24 bits decorrelated. Both types of ! generator use 24 words of state per generator. ! ! For more information see, ! M. Lu"scher, "A portable high-quality random number generator ! for lattice field theory calculations", `Computer Physics ! Communications', 79 (1994) 100-110. ! ! F. James, "RANLUX: A Fortran implementation of the ! high-quality pseudo-random number generator of Lu"scher", ! `Computer Physics Communications', 79 (1994) 111-114 ! ! - Generator: gsl_rng_cmrg ! This is a combined multiple recursive generator by L'Ecuyer. Its ! sequence is, ! ! z_n = (x_n - y_n) mod m_1 ! ! where the two underlying generators x_n and y_n are, ! ! x_n = (a_1 x_{n-1} + a_2 x_{n-2} + a_3 x_{n-3}) mod m_1 ! y_n = (b_1 y_{n-1} + b_2 y_{n-2} + b_3 y_{n-3}) mod m_2 ! ! with coefficients a_1 = 0, a_2 = 63308, a_3 = -183326, b_1 = 86098, ! b_2 = 0, b_3 = -539608, and moduli m_1 = 2^31 - 1 = 2147483647 and ! m_2 = 2145483479. ! ! The period of this generator is 2^205 (about 10^61). It uses 6 ! words of state per generator. For more information see, ! ! P. L'Ecuyer, "Combined Multiple Recursive Random Number ! Generators," `Operations Research', 44, 5 (1996), 816-822. ! ! - Generator: gsl_rng_mrg ! This is a fifth-order multiple recursive generator by L'Ecuyer, ! Blouin and Coutre. Its sequence is, ! ! x_n = (a_1 x_{n-1} + a_5 x_{n-5}) mod m ! ! with a_1 = 107374182, a_2 = a_3 = a_4 = 0, a_5 = 104480 and m = ! 2^31 - 1. ! ! The period of this generator is about 10^46. It uses 5 words of ! state per generator. More information can be found in the ! following paper, ! P. L'Ecuyer, F. Blouin, and R. Coutre, "A search for good ! multiple recursive random number generators", `ACM ! Transactions on Modeling and Computer Simulation' 3, 87-98 ! (1993). ! ! - Generator: gsl_rng_taus ! - Generator: gsl_rng_taus2 ! This is a maximally equidistributed combined Tausworthe generator ! by L'Ecuyer. The sequence is, ! ! x_n = (s1_n ^^ s2_n ^^ s3_n) ! ! where, ! ! s1_{n+1} = (((s1_n&4294967294)<<12)^^(((s1_n<<13)^^s1_n)>>19)) ! s2_{n+1} = (((s2_n&4294967288)<< 4)^^(((s2_n<< 2)^^s2_n)>>25)) ! s3_{n+1} = (((s3_n&4294967280)<<17)^^(((s3_n<< 3)^^s3_n)>>11)) ! ! computed modulo 2^32. In the formulas above ^^ denotes ! "exclusive-or". Note that the algorithm relies on the properties ! of 32-bit unsigned integers and has been implemented using a ! bitmask of `0xFFFFFFFF' to make it work on 64 bit machines. ! ! The period of this generator is 2^88 (about 10^26). It uses 3 ! words of state per generator. For more information see, ! ! P. L'Ecuyer, "Maximally Equidistributed Combined Tausworthe ! Generators", `Mathematics of Computation', 65, 213 (1996), ! 203-213. ! ! The generator `gsl_rng_taus2' uses the same algorithm as ! `gsl_rng_taus' but with an improved seeding procedure described in ! the paper, ! ! P. L'Ecuyer, "Tables of Maximally Equidistributed Combined ! LFSR Generators", `Mathematics of Computation', 68, 225 ! (1999), 261-269 ! ! The generator `gsl_rng_taus2' should now be used in preference to ! `gsl_rng_taus'. ! ! - Generator: gsl_rng_gfsr4 ! The `gfsr4' generator is like a lagged-fibonacci generator, and ! produces each number as an `xor''d sum of four previous values. ! ! r_n = r_{n-A} ^^ r_{n-B} ^^ r_{n-C} ^^ r_{n-D} ! ! Ziff (ref below) notes that "it is now widely known" that two-tap ! registers (such as R250, which is described below) have serious ! flaws, the most obvious one being the three-point correlation that ! comes from the definition of the generator. Nice mathematical ! properties can be derived for GFSR's, and numerics bears out the ! claim that 4-tap GFSR's with appropriately chosen offsets are as ! random as can be measured, using the author's test. ! ! This implementation uses the values suggested the example on p392 ! of Ziff's article: A=471, B=1586, C=6988, D=9689. ! ! If the offsets are appropriately chosen (such as the one ones in ! this implementation), then the sequence is said to be maximal; ! that means that the period is 2^D - 1, where D is the longest lag. ! (It is one less than 2^D because it is not permitted to have all ! zeros in the `ra[]' array.) For this implementation with D=9689 ! that works out to about 10^2917. ! ! Note that the implementation of this generator using a 32-bit ! integer amounts to 32 parallel implementations of one-bit ! generators. One consequence of this is that the period of this ! 32-bit generator is the same as for the one-bit generator. ! Moreover, this inedpendence means that all 32-bit patterns are ! equally likely, and in particular that 0 is an allowed random ! value. (We are grateful to Heiko Bauke for clarifying for us these ! properties of GFSR random number generators.) ! ! For more information see, ! Robert M. Ziff, "Four-tap shift-register-sequence ! random-number generators", `Computers in Physics', 12(4), ! Jul/Aug 1998, pp 385-392. ! !  ! File: gsl-ref.info, Node: Unix random number generators, Next: Other random number generators, Prev: Random number generator algorithms, Up: Random Number Generation ! ! Unix random number generators ! ============================= ! ! The standard Unix random number generators `rand', `random' and ! `rand48' are provided as part of GSL. Although these generators are ! widely available individually often they aren't all available on the ! same platform. This makes it difficult to write portable code using ! them and so we have included the complete set of Unix generators in GSL ! for convenience. Note that these generators don't produce high-quality ! randomness and aren't suitable for work requiring accurate statistics. ! However, if you won't be measuring statistical quantities and just want ! to introduce some variation into your program then these generators are ! quite acceptable. ! ! - Generator: gsl_rng_rand ! This is the BSD `rand()' generator. Its sequence is ! ! x_{n+1} = (a x_n + c) mod m ! ! with a = 1103515245, c = 12345 and m = 2^31. The seed specifies ! the initial value, x_1. The period of this generator is 2^31, and ! it uses 1 word of storage per generator. ! ! - Generator: gsl_rng_random_bsd ! - Generator: gsl_rng_random_libc5 ! - Generator: gsl_rng_random_glibc2 ! These generators implement the `random()' family of functions, a ! set of linear feedback shift register generators originally used ! in BSD Unix. There are several versions of `random()' in use ! today: the original BSD version (e.g. on SunOS4), a libc5 version ! (found on older GNU/Linux systems) and a glibc2 version. Each ! version uses a different seeding procedure, and thus produces ! different sequences. ! ! The original BSD routines accepted a variable length buffer for the ! generator state, with longer buffers providing higher-quality ! randomness. The `random()' function implemented algorithms for ! buffer lengths of 8, 32, 64, 128 and 256 bytes, and the algorithm ! with the largest length that would fit into the user-supplied ! buffer was used. To support these algorithms additional ! generators are available with the following names, ! ! gsl_rng_random8_bsd ! gsl_rng_random32_bsd ! gsl_rng_random64_bsd ! gsl_rng_random128_bsd ! gsl_rng_random256_bsd ! ! where the numeric suffix indicates the buffer length. The ! original BSD `random' function used a 128-byte default buffer and ! so `gsl_rng_random_bsd' has been made equivalent to ! `gsl_rng_random128_bsd'. Corresponding versions of the `libc5' ! and `glibc2' generators are also available, with the names ! `gsl_rng_random8_libc5', `gsl_rng_random8_glibc2', etc. ! ! - Generator: gsl_rng_rand48 ! This is the Unix `rand48' generator. Its sequence is ! ! x_{n+1} = (a x_n + c) mod m ! ! defined on 48-bit unsigned integers with a = 25214903917, c = 11 ! and m = 2^48. The seed specifies the upper 32 bits of the initial ! value, x_1, with the lower 16 bits set to `0x330E'. The function ! `gsl_rng_get' returns the upper 32 bits from each term of the ! sequence. This does not have a direct parallel in the original ! `rand48' functions, but forcing the result to type `long int' ! reproduces the output of `mrand48'. The function ! `gsl_rng_uniform' uses the full 48 bits of internal state to return ! the double precision number x_n/m, which is equivalent to the ! function `drand48'. Note that some versions of the GNU C Library ! contained a bug in `mrand48' function which caused it to produce ! different results (only the lower 16-bits of the return value were ! set). ! !  ! File: gsl-ref.info, Node: Other random number generators, Next: Random Number Generator Performance, Prev: Unix random number generators, Up: Random Number Generation ! ! Other random number generators ! ============================== ! ! The generators in this section are provided for compatibility with ! existing libraries. If you are converting an existing program to use ! GSL then you can select these generators to check your new ! implementation against the original one, using the same random number ! generator. After verifying that your new program reproduces the ! original results you can then switch to a higher-quality generator. ! ! Note that most of the generators in this section are based on single ! linear congruence relations, which are the least sophisticated type of ! generator. In particular, linear congruences have poor properties when ! used with a non-prime modulus, as several of these routines do (e.g. ! with a power of two modulus, 2^31 or 2^32). This leads to periodicity ! in the least significant bits of each number, with only the higher bits ! having any randomness. Thus if you want to produce a random bitstream ! it is best to avoid using the least significant bits. ! ! - Generator: gsl_rng_ranf ! This is the CRAY random number generator `RANF'. Its sequence is ! ! x_{n+1} = (a x_n) mod m ! ! defined on 48-bit unsigned integers with a = 44485709377909 and m ! = 2^48. The seed specifies the lower 32 bits of the initial value, ! x_1, with the lowest bit set to prevent the seed taking an even ! value. The upper 16 bits of x_1 are set to 0. A consequence of ! this procedure is that the pairs of seeds 2 and 3, 4 and 5, etc ! produce the same sequences. ! ! The generator compatibile with the CRAY MATHLIB routine RANF. It ! produces double precision floating point numbers which should be ! identical to those from the original RANF. ! ! There is a subtlety in the implementation of the seeding. The ! initial state is reversed through one step, by multiplying by the ! modular inverse of a mod m. This is done for compatibility with ! the original CRAY implementation. ! ! Note that you can only seed the generator with integers up to ! 2^32, while the original CRAY implementation uses non-portable ! wide integers which can cover all 2^48 states of the generator. ! ! The function `gsl_rng_get' returns the upper 32 bits from each term ! of the sequence. The function `gsl_rng_uniform' uses the full 48 ! bits to return the double precision number x_n/m. ! ! The period of this generator is 2^46. ! ! - Generator: gsl_rng_ranmar ! This is the RANMAR lagged-fibonacci generator of Marsaglia, Zaman ! and Tsang. It is a 24-bit generator, originally designed for ! single-precision IEEE floating point numbers. It was included in ! the CERNLIB high-energy physics library. ! ! - Generator: gsl_rng_r250 ! This is the shift-register generator of Kirkpatrick and Stoll. The ! sequence is ! ! x_n = x_{n-103} ^^ x_{n-250} ! ! where ^^ denote "exclusive-or", defined on 32-bit words. The ! period of this generator is about 2^250 and it uses 250 words of ! state per generator. ! ! For more information see, ! S. Kirkpatrick and E. Stoll, "A very fast shift-register ! sequence random number generator", `Journal of Computational ! Physics', 40, 517-526 (1981) ! ! - Generator: gsl_rng_tt800 ! This is an earlier version of the twisted generalized feedback ! shift-register generator, and has been superseded by the ! development of MT19937. However, it is still an acceptable ! generator in its own right. It has a period of 2^800 and uses 33 ! words of storage per generator. ! ! For more information see, ! Makoto Matsumoto and Yoshiharu Kurita, "Twisted GFSR ! Generators II", `ACM Transactions on Modelling and Computer ! Simulation', Vol. 4, No. 3, 1994, pages 254-266. ! ! - Generator: gsl_rng_vax ! This is the VAX generator `MTH$RANDOM'. Its sequence is, ! ! x_{n+1} = (a x_n + c) mod m ! ! with a = 69069, c = 1 and m = 2^32. The seed specifies the ! initial value, x_1. The period of this generator is 2^32 and it ! uses 1 word of storage per generator. ! ! - Generator: gsl_rng_transputer ! This is the random number generator from the INMOS Transputer ! Development system. Its sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 1664525 and m = 2^32. The seed specifies the initial ! value, x_1. ! ! - Generator: gsl_rng_randu ! This is the IBM `RANDU' generator. Its sequence is ! ! x_{n+1} = (a x_n) mod m ! ! with a = 65539 and m = 2^31. The seed specifies the initial value, ! x_1. The period of this generator was only 2^29. It has become a ! textbook example of a poor generator. ! ! - Generator: gsl_rng_minstd ! This is Park and Miller's "minimal standard" MINSTD generator, a ! simple linear congruence which takes care to avoid the major ! pitfalls of such algorithms. Its sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 16807 and m = 2^31 - 1 = 2147483647. The seed specifies ! the initial value, x_1. The period of this generator is about ! 2^31. ! ! This generator is used in the IMSL Library (subroutine RNUN) and in ! MATLAB (the RAND function). It is also sometimes known by the ! acronym "GGL" (I'm not sure what that stands for). ! ! For more information see, ! Park and Miller, "Random Number Generators: Good ones are ! hard to find", `Communications of the ACM', October 1988, ! Volume 31, No 10, pages 1192-1201. ! ! - Generator: gsl_rng_uni ! - Generator: gsl_rng_uni32 ! This is a reimplementation of the 16-bit SLATEC random number ! generator RUNIF. A generalization of the generator to 32 bits is ! provided by `gsl_rng_uni32'. The original source code is ! available from NETLIB. ! ! - Generator: gsl_rng_slatec ! This is the SLATEC random number generator RAND. It is ancient. ! The original source code is available from NETLIB. ! ! - Generator: gsl_rng_zuf ! This is the ZUFALL lagged Fibonacci series generator of Peterson. ! Its sequence is, ! ! t = u_{n-273} + u_{n-607} ! u_n = t - floor(t) ! ! The original source code is available from NETLIB. For more ! information see, ! W. Petersen, "Lagged Fibonacci Random Number Generators for ! the NEC SX-3", `International Journal of High Speed ! Computing' (1994). ! ! - Generator: gsl_rng_borosh13 ! This is the Borosh, Niederreiter random number generator. It is ! taken from Knuth's `Seminumerical Algorithms', 3rd Ed., pages ! 106-108. Its sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 1812433253 and m = 2^32. The seed specifies the initial ! value, x_1. ! ! - Generator: gsl_rng_coveyou ! This is the Coveyou random number generator. It is taken from ! Knuth's `Seminumerical Algorithms', 3rd Ed., Section 3.2.2. Its ! sequence is, ! ! x_{n+1} = (x_n (x_n + 1)) mod m ! ! with m = 2^32. The seed specifies the initial value, x_1. ! ! - Generator: gsl_rng_fishman18 ! This is the Fishman, Moore III random number generator. It is ! taken from Knuth's `Seminumerical Algorithms', 3rd Ed., pages ! 106-108. Its sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 62089911 and m = 2^31 - 1. The seed specifies the ! initial value, x_1. ! ! - Generator: gsl_rng_fishman20 ! This is the Fishman random number generator. It is taken from ! Knuth's `Seminumerical Algorithms', 3rd Ed., page 108. Its ! sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 48271 and m = 2^31 - 1. The seed specifies the initial ! value, x_1. ! ! - Generator: gsl_rng_fishman2x ! This is the L'Ecuyer-Fishman random number generator. It is taken ! from Knuth's `Seminumerical Algorithms', 3rd Ed., page 108. Its ! sequence is, ! ! z_{n+1} = (x_n - y_n) mod m ! ! with m = 2^31 - 1. x_n and y_n are given by the `fishman20' and ! `lecuyer21' algorithms. The seed specifies the initial value, x_1. ! ! ! - Generator: gsl_rng_knuthran2 ! This is a second-order multiple recursive generator described by ! Knuth in `Seminumerical Algorithms', 3rd Ed., page 108. Its ! sequence is, ! ! x_n = (a_1 x_{n-1} + a_2 x_{n-2}) mod m ! ! with a_1 = 271828183, a_2 = 314159269, and m = 2^31 - 1. ! ! - Generator: gsl_rng_knuthran ! This is a second-order multiple recursive generator described by ! Knuth in `Seminumerical Algorithms', 3rd Ed., Section 3.6. Knuth ! provides its C code. ! ! - Generator: gsl_rng_lecuyer21 ! This is the L'Ecuyer random number generator. It is taken from ! Knuth's `Seminumerical Algorithms', 3rd Ed., page 106-108. Its ! sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 40692 and m = 2^31 - 249. The seed specifies the initial ! value, x_1. ! ! - Generator: gsl_rng_waterman14 ! This is the Waterman random number generator. It is taken from ! Knuth's `Seminumerical Algorithms', 3rd Ed., page 106-108. Its ! sequence is, ! ! x_{n+1} = (a x_n) mod m ! ! with a = 1566083941 and m = 2^32. The seed specifies the initial ! value, x_1. ! !  ! File: gsl-ref.info, Node: Random Number Generator Performance, Next: Random Number Generator Examples, Prev: Other random number generators, Up: Random Number Generation ! ! Performance ! =========== ! ! The following table shows the relative performance of a selection the ! available random number generators. The fastest simulation quality ! generators are `taus', `gfsr4' and `mt19937'. The generators which ! offer the best mathematically-proven quality are those based on the ! RANLUX algorithm. ! ! 1754 k ints/sec, 870 k doubles/sec, taus ! 1613 k ints/sec, 855 k doubles/sec, gfsr4 ! 1370 k ints/sec, 769 k doubles/sec, mt19937 ! 565 k ints/sec, 571 k doubles/sec, ranlxs0 ! 400 k ints/sec, 405 k doubles/sec, ranlxs1 ! 490 k ints/sec, 389 k doubles/sec, mrg ! 407 k ints/sec, 297 k doubles/sec, ranlux ! 243 k ints/sec, 254 k doubles/sec, ranlxd1 ! 251 k ints/sec, 253 k doubles/sec, ranlxs2 ! 238 k ints/sec, 215 k doubles/sec, cmrg ! 247 k ints/sec, 198 k doubles/sec, ranlux389 ! 141 k ints/sec, 140 k doubles/sec, ranlxd2 ! ! 1852 k ints/sec, 935 k doubles/sec, ran3 ! 813 k ints/sec, 575 k doubles/sec, ran0 ! 787 k ints/sec, 476 k doubles/sec, ran1 ! 379 k ints/sec, 292 k doubles/sec, ran2 ! !  ! File: gsl-ref.info, Node: Random Number Generator Examples, Next: Random Number References and Further Reading, Prev: Random Number Generator Performance, Up: Random Number Generation ! ! Examples ! ======== ! ! The following program demonstrates the use of a random number generator ! to produce uniform random numbers in range [0.0, 1.0), ! ! #include ! #include ! ! int ! main (void) ! { ! const gsl_rng_type * T; ! gsl_rng * r; ! ! int i, n = 10; ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! for (i = 0; i < n; i++) ! { ! double u = gsl_rng_uniform (r); ! printf ("%.5f\n", u); ! } ! ! gsl_rng_free (r); ! ! return 0; ! } ! ! Here is the output of the program, ! ! $ ./a.out ! ! 0.99974 ! 0.16291 ! 0.28262 ! 0.94720 ! 0.23166 ! 0.48497 ! 0.95748 ! 0.74431 ! 0.54004 ! 0.73995 ! ! The numbers depend on the seed used by the generator. The default seed ! can be changed with the `GSL_RNG_SEED' environment variable to produce ! a different stream of numbers. The generator itself can be changed ! using the environment variable `GSL_RNG_TYPE'. Here is the output of ! the program using a seed value of 123 and the mutiple-recursive ! generator `mrg', ! ! $ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out ! ! GSL_RNG_TYPE=mrg ! GSL_RNG_SEED=123 ! 0.33050 ! 0.86631 ! 0.32982 ! 0.67620 ! 0.53391 ! 0.06457 ! 0.16847 ! 0.70229 ! 0.04371 ! 0.86374 ! !  ! File: gsl-ref.info, Node: Random Number References and Further Reading, Next: Random Number Acknowledgements, Prev: Random Number Generator Examples, Up: Random Number Generation ! ! References and Further Reading ! ============================== ! ! The subject of random number generation and testing is reviewed ! extensively in Knuth's `Seminumerical Algorithms'. ! ! Donald E. Knuth, `The Art of Computer Programming: Seminumerical ! Algorithms' (Vol 2, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896842. ! ! Further information is available in the review paper written by Pierre ! L'Ecuyer, ! ! P. L'Ecuyer, "Random Number Generation", Chapter 4 of the Handbook ! on Simulation, Jerry Banks Ed., Wiley, 1998, 93-137. ! ! in the file ! `handsim.ps'. ! ! On the World Wide Web, see the pLab home page ! () for a lot of information on the ! state-of-the-art in random number generation, and for numerous links to ! various "random" WWW sites. ! ! The source code for the DIEHARD random number generator tests is also ! available online. ! ! `DIEHARD source code' G. Marsaglia, ! ! ! ! A comprehensive set of random number generator tests is available from ! NIST, ! ! NIST Special Publication 800-22, "A Statistical Test Suite for the ! Validation of Random Number Generators and Pseudo Random Number ! Generators for Cryptographic Applications". ! ! ! !  ! File: gsl-ref.info, Node: Random Number Acknowledgements, Prev: Random Number References and Further Reading, Up: Random Number Generation ! ! Acknowledgements ! ================ ! ! Thanks to Makoto Matsumoto, Takuji Nishimura and Yoshiharu Kurita for ! making the source code to their generators (MT19937, MM&TN; TT800, ! MM&YK) available under the GNU General Public License. Thanks to Martin ! Lu"scher for providing notes and source code for the RANLXS and RANLXD ! generators. ! !  ! File: gsl-ref.info, Node: Quasi-Random Sequences, Next: Random Number Distributions, Prev: Random Number Generation, Up: Top ! ! Quasi-Random Sequences ! ********************** ! ! This chapter describes functions for generating quasi-random sequences ! in arbitrary dimensions. A quasi-random sequence progressively covers a ! d-dimensional space with a set of points that are uniformly distributed. ! Quasi-random sequences are also known as low-discrepancy sequences. The ! quasi-random sequence generators use an interface that is similar to the ! interface for random number generators. ! ! The functions described in this section are declared in the header ! file `gsl_qrng.h'. ! ! * Menu: ! ! * Quasi-random number generator initialization:: ! * Sampling from a quasi-random number generator:: ! * Auxiliary quasi-random number generator functions:: ! * Saving and resorting quasi-random number generator state:: ! * Quasi-random number generator algorithms:: ! * Quasi-random number generator examples:: ! * Quasi-random number references:: ! !  ! File: gsl-ref.info, Node: Quasi-random number generator initialization, Next: Sampling from a quasi-random number generator, Up: Quasi-Random Sequences ! ! Quasi-random number generator initialization ! ============================================ ! ! - Function: gsl_qrng * gsl_qrng_alloc (const gsl_qrng_type * T, ! unsigned int D) ! This function returns a pointer to a newly-created instance of a ! quasi-random sequence generator of type T and dimension D. If ! there is insufficient memory to create the generator then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: void gsl_qrng_free (gsl_qrng * Q) ! This function frees all the memory associated with the generator Q. ! ! - Function: void gsl_qrng_init (gsl_qrng * Q) ! This function reinitializes the generator Q to its starting point. ! !  ! File: gsl-ref.info, Node: Sampling from a quasi-random number generator, Next: Auxiliary quasi-random number generator functions, Prev: Quasi-random number generator initialization, Up: Quasi-Random Sequences ! ! Sampling from a quasi-random number generator ! ============================================= ! ! - Function: int gsl_qrng_get (const gsl_qrng * Q, double X[]) ! This function returns the next point X from the sequence generator ! Q. The space available for X must match the dimension of the ! generator. The point X will lie in the range 0 < x_i < 1 for each ! x_i. ! !  ! File: gsl-ref.info, Node: Auxiliary quasi-random number generator functions, Next: Saving and resorting quasi-random number generator state, Prev: Sampling from a quasi-random number generator, Up: Quasi-Random Sequences ! ! Auxiliary quasi-random number generator functions ! ================================================= ! ! - Function: const char * gsl_qrng_name (const gsl_qrng * Q) ! This function returns a pointer to the name of the generator. ! ! - Function: size_t gsl_qrng_size (const gsl_qrng * Q) ! - Function: void * gsl_qrng_state (const gsl_qrng * Q) ! These functions return a pointer to the state of generator R and ! its size. You can use this information to access the state ! directly. For example, the following code will write the state of ! a generator to a stream, ! ! void * state = gsl_qrng_state (q); ! size_t n = gsl_qrng_size (q); ! fwrite (state, n, 1, stream); ! !  ! File: gsl-ref.info, Node: Saving and resorting quasi-random number generator state, Next: Quasi-random number generator algorithms, Prev: Auxiliary quasi-random number generator functions, Up: Quasi-Random Sequences ! ! Saving and resorting quasi-random number generator state ! ======================================================== ! ! - Function: int gsl_qrng_memcpy (gsl_qrng * DEST, const gsl_qrng * SRC) ! This function copies the quasi-random sequence generator SRC into ! the pre-existing generator DEST, making DEST into an exact copy of ! SRC. The two generators must be of the same type. ! ! - Function: gsl_qrng * gsl_qrng_clone (const gsl_qrng * Q) ! This function returns a pointer to a newly created generator which ! is an exact copy of the generator R. ! !  ! File: gsl-ref.info, Node: Quasi-random number generator algorithms, Next: Quasi-random number generator examples, Prev: Saving and resorting quasi-random number generator state, Up: Quasi-Random Sequences ! ! Quasi-random number generator algorithms ! ======================================== ! ! The following quasi-random sequence algorithms are available, ! ! - Generator: gsl_qrng_niederreiter_2 ! This generator uses the algorithm described in Bratley, Fox, ! Niederreiter, `ACM Trans. Model. Comp. Sim.' 2, 195 (1992). It is ! valid up to 12 dimensions. ! ! - Generator: gsl_qrng_sobol ! This generator uses the Sobol sequence described in Antonov, ! Saleev, `USSR Comput. Maths. Math. Phys.' 19, 252 (1980). It is ! valid up to 40 dimensions. ! !  ! File: gsl-ref.info, Node: Quasi-random number generator examples, Next: Quasi-random number references, Prev: Quasi-random number generator algorithms, Up: Quasi-Random Sequences ! ! Examples ! ======== ! ! The following program prints the first 1024 points of the 2-dimensional ! Sobol sequence. ! ! #include ! #include ! ! int ! main (void) ! { ! int i; ! gsl_qrng * q = gsl_qrng_alloc (gsl_qrng_sobol, 2); ! ! for (i = 0; i < 1024; i++) ! { ! double v[2]; ! gsl_qrng_get (q, v); ! printf ("%.5f %.5f\n", v[0], v[1]); ! } ! ! gsl_qrng_free (q); ! return 0; ! } ! ! Here is the output from the program, ! ! $ ./a.out ! 0.50000 0.50000 ! 0.75000 0.25000 ! 0.25000 0.75000 ! 0.37500 0.37500 ! 0.87500 0.87500 ! 0.62500 0.12500 ! 0.12500 0.62500 ! .... ! ! It can be seen that successive points progressively fill-in the spaces ! between previous points. ! !  ! File: gsl-ref.info, Node: Quasi-random number references, Prev: Quasi-random number generator examples, Up: Quasi-Random Sequences ! ! References ! ========== ! ! The implementations of the quasi-random sequence routines are based on ! the algorithms described in the following paper, ! ! P. Bratley and B.L. Fox and H. Niederreiter, "Algorithm 738: ! Programs to Generate Niederreiter's Low-discrepancy Sequences", ! Transactions on Mathematical Software, Vol. 20, No. 4, December, ! 1994, p. 494-495. ! !  ! File: gsl-ref.info, Node: Random Number Distributions, Next: Statistics, Prev: Quasi-Random Sequences, Up: Top ! ! Random Number Distributions ! *************************** ! ! This chapter describes functions for generating random variates and ! computing their probability distributions. Samples from the ! distributions described in this chapter can be obtained using any of the ! random number generators in the library as an underlying source of ! randomness. In the simplest cases a non-uniform distribution can be ! obtained analytically from the uniform distribution of a random number ! generator by applying an appropriate transformation. This method uses ! one call to the random number generator. ! ! More complicated distributions are created by the ! "acceptance-rejection" method, which compares the desired distribution ! against a distribution which is similar and known analytically. This ! usually requires several samples from the generator. ! ! The library also provides cumulative distribution functions and ! inverse cumulative distribution functions, sometimes referred to as ! quantile functions. The cumulative distribution functions and their ! inverses are computed separately for the upper and lower tails of the ! distribution, allowing full accuracy to be retained for small results. ! ! The functions for random variates and probability density functions ! described in this section are declared in `gsl_randist.h'. The ! corresponding cumulative distribution functions are declared in ! `gsl_cdf.h'. * Menu: ! * Random Number Distribution Introduction:: ! * The Gaussian Distribution:: ! * The Gaussian Tail Distribution:: ! * The Bivariate Gaussian Distribution:: ! * The Exponential Distribution:: ! * The Laplace Distribution:: ! * The Exponential Power Distribution:: ! * The Cauchy Distribution:: ! * The Rayleigh Distribution:: ! * The Rayleigh Tail Distribution:: ! * The Landau Distribution:: ! * The Levy alpha-Stable Distributions:: ! * The Levy skew alpha-Stable Distribution:: ! * The Gamma Distribution:: ! * The Flat (Uniform) Distribution:: ! * The Lognormal Distribution:: ! * The Chi-squared Distribution:: ! * The F-distribution:: ! * The t-distribution:: ! * The Beta Distribution:: ! * The Logistic Distribution:: ! * The Pareto Distribution:: ! * The Spherical Distribution (2D & 3D):: ! * The Weibull Distribution:: ! * The Type-1 Gumbel Distribution:: ! * The Type-2 Gumbel Distribution:: ! * The Dirichlet Distribution:: ! * General Discrete Distributions:: ! * The Poisson Distribution:: ! * The Bernoulli Distribution:: ! * The Binomial Distribution:: ! * The Multinomial Distribution:: ! * The Negative Binomial Distribution:: ! * The Pascal Distribution:: ! * The Geometric Distribution:: ! * The Hypergeometric Distribution:: ! * The Logarithmic Distribution:: ! * Shuffling and Sampling:: ! * Random Number Distribution Examples:: ! * Random Number Distribution References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Random Number Distribution Introduction, Next: The Gaussian Distribution, Up: Random Number Distributions ! ! Introduction ! ============ ! ! Continuous random number distributions are defined by a probability ! density function, p(x), such that the probability of x occurring in the ! infinitesimal range x to x+dx is p dx. ! ! The cumulative distribution function for the lower tail is defined ! by, ! P(x) = \int_{-\infty}^{x} dx' p(x') ! ! and gives the probability of a variate taking a value less than x. ! ! The cumulative distribution function for the upper tail is defined ! by, ! P(x) = \int_{x}^{-\infty} dx' p(x') ! ! and gives the probability of a variate taking a greater than x. The ! upper and lower cumulative distribution functions are related by P(x) + ! Q(x) = 1 and satisfy 0 <= P(x) <= 1, 0 <= Q(x) <= 1. ! ! The inverse cumulative distributions, x=P^{-1}(P) and x=Q^{-1}(Q) ! give the values of x which correspond to a specific value of P or Q. ! They can be used to find confidence limits from probability values. ! !  ! File: gsl-ref.info, Node: The Gaussian Distribution, Next: The Gaussian Tail Distribution, Prev: Random Number Distribution Introduction, Up: Random Number Distributions ! ! The Gaussian Distribution ! ========================= ! ! - Random: double gsl_ran_gaussian (const gsl_rng * R, double SIGMA) ! This function returns a Gaussian random variate, with mean zero and ! standard deviation SIGMA. The probability distribution for ! Gaussian random variates is, ! ! p(x) dx = {1 \over \sqrt{2 \pi \sigma^2}} \exp (-x^2 / 2\sigma^2) dx ! ! for x in the range -\infty to +\infty. Use the transformation z = ! \mu + x on the numbers returned by `gsl_ran_gaussian' to obtain a ! Gaussian distribution with mean \mu. This function uses the ! Box-Mueller algorithm which requires two calls to the random ! number generator R. ! ! - Function: double gsl_ran_gaussian_pdf (double X, double SIGMA) ! This function computes the probability density p(x) at X for a ! Gaussian distribution with standard deviation SIGMA, using the ! formula given above. ! ! ! - Function: double gsl_ran_gaussian_ratio_method (const gsl_rng * R, ! double SIGMA) ! This function computes a Gaussian random variate using the ! Kinderman-Monahan ratio method. ! ! - Random: double gsl_ran_ugaussian (const gsl_rng * R) ! - Function: double gsl_ran_ugaussian_pdf (double X) ! - Random: double gsl_ran_ugaussian_ratio_method (const gsl_rng * R) ! These functions compute results for the unit Gaussian ! distribution. They are equivalent to the functions above with a ! standard deviation of one, SIGMA = 1. ! ! - Function: double gsl_cdf_gaussian_P (double X, double SIGMA) ! - Function: double gsl_cdf_gaussian_Q (double X, double SIGMA) ! - Function: double gsl_cdf_gaussian_Pinv (double P, double SIGMA) ! - Function: double gsl_cdf_gaussian_Qinv (double Q, double SIGMA) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Gaussian distribution with ! standard deviation SIGMA. ! ! - Function: double gsl_cdf_ugaussian_P (double X) ! - Function: double gsl_cdf_ugaussian_Q (double X) ! - Function: double gsl_cdf_ugaussian_Pinv (double P) ! - Function: double gsl_cdf_ugaussian_Qinv (double Q) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the unit Gaussian distribution. ! !  ! File: gsl-ref.info, Node: The Gaussian Tail Distribution, Next: The Bivariate Gaussian Distribution, Prev: The Gaussian Distribution, Up: Random Number Distributions ! ! The Gaussian Tail Distribution ! ============================== ! ! - Random: double gsl_ran_gaussian_tail (const gsl_rng * R, double A, ! double SIGMA) ! This function provides random variates from the upper tail of a ! Gaussian distribution with standard deviation SIGMA. The values ! returned are larger than the lower limit A, which must be ! positive. The method is based on Marsaglia's famous ! rectangle-wedge-tail algorithm (Ann Math Stat 32, 894-899 (1961)), ! with this aspect explained in Knuth, v2, 3rd ed, p139,586 ! (exercise 11). ! ! The probability distribution for Gaussian tail random variates is, ! ! p(x) dx = {1 \over N(a;\sigma)} \exp (- x^2/(2 \sigma^2)) dx ! ! for x > a where N(a;\sigma) is the normalization constant, ! ! N(a;\sigma) = (1/2) erfc(a / sqrt(2 sigma^2)). ! ! ! - Function: double gsl_ran_gaussian_tail_pdf (double X, double A, ! double SIGMA) ! This function computes the probability density p(x) at X for a ! Gaussian tail distribution with standard deviation SIGMA and lower ! limit A, using the formula given above. ! ! ! - Random: double gsl_ran_ugaussian_tail (const gsl_rng * R, double A) ! - Function: double gsl_ran_ugaussian_tail_pdf (double X, double A) ! These functions compute results for the tail of a unit Gaussian ! distribution. They are equivalent to the functions above with a ! standard deviation of one, SIGMA = 1. ! !  ! File: gsl-ref.info, Node: The Bivariate Gaussian Distribution, Next: The Exponential Distribution, Prev: The Gaussian Tail Distribution, Up: Random Number Distributions ! ! The Bivariate Gaussian Distribution ! =================================== ! ! - Random: void gsl_ran_bivariate_gaussian (const gsl_rng * R, double ! SIGMA_X, double SIGMA_Y, double RHO, double * X, double * Y) ! This function generates a pair of correlated gaussian variates, ! with mean zero, correlation coefficient RHO and standard deviations ! SIGMA_X and SIGMA_Y in the x and y directions. The probability ! distribution for bivariate gaussian random variates is, ! ! p(x,y) dx dy = {1 \over 2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp (-(x^2/\sigma_x^2 + y^2/\sigma_y^2 - 2 \rho x y/(\sigma_x\sigma_y))/2(1-\rho^2)) dx dy ! ! for x,y in the range -\infty to +\infty. The correlation ! coefficient RHO should lie between 1 and -1. ! ! - Function: double gsl_ran_bivariate_gaussian_pdf (double X, double Y, ! double SIGMA_X, double SIGMA_Y, double RHO) ! This function computes the probability density p(x,y) at (X,Y) for ! a bivariate gaussian distribution with standard deviations ! SIGMA_X, SIGMA_Y and correlation coefficient RHO, using the ! formula given above. ! ! !  ! File: gsl-ref.info, Node: The Exponential Distribution, Next: The Laplace Distribution, Prev: The Bivariate Gaussian Distribution, Up: Random Number Distributions ! ! The Exponential Distribution ! ============================ ! ! - Random: double gsl_ran_exponential (const gsl_rng * R, double MU) ! This function returns a random variate from the exponential ! distribution with mean MU. The distribution is, ! ! p(x) dx = {1 \over \mu} \exp(-x/\mu) dx ! ! for x >= 0. ! ! - Function: double gsl_ran_exponential_pdf (double X, double MU) ! This function computes the probability density p(x) at X for an ! exponential distribution with mean MU, using the formula given ! above. ! ! ! - Function: double gsl_cdf_exponential_P (double X, double MU) ! - Function: double gsl_cdf_exponential_Q (double X, double MU) ! - Function: double gsl_cdf_exponential_Pinv (double P, double MU) ! - Function: double gsl_cdf_exponential_Qinv (double Q, double MU) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the exponential distribution ! with mean MU. ! !  ! File: gsl-ref.info, Node: The Laplace Distribution, Next: The Exponential Power Distribution, Prev: The Exponential Distribution, Up: Random Number Distributions ! ! The Laplace Distribution ! ======================== ! ! - Random: double gsl_ran_laplace (const gsl_rng * R, double A) ! This function returns a random variate from the Laplace ! distribution with width A. The distribution is, ! ! p(x) dx = {1 \over 2 a} \exp(-|x/a|) dx ! ! for -\infty < x < \infty. ! ! - Function: double gsl_ran_laplace_pdf (double X, double A) ! This function computes the probability density p(x) at X for a ! Laplace distribution with width A, using the formula given above. ! ! ! - Function: double gsl_cdf_laplace_P (double X, double A) ! - Function: double gsl_cdf_laplace_Q (double X, double A) ! - Function: double gsl_cdf_laplace_Pinv (double P, double A) ! - Function: double gsl_cdf_laplace_Qinv (double Q, double A) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Laplace distribution with ! width A. ! !  ! File: gsl-ref.info, Node: The Exponential Power Distribution, Next: The Cauchy Distribution, Prev: The Laplace Distribution, Up: Random Number Distributions ! ! The Exponential Power Distribution ! ================================== ! ! - Random: double gsl_ran_exppow (const gsl_rng * R, double A, double B) ! This function returns a random variate from the exponential power ! distribution with scale parameter A and exponent B. The ! distribution is, ! ! p(x) dx = {1 \over 2 a \Gamma(1+1/b)} \exp(-|x/a|^b) dx ! ! for x >= 0. For b = 1 this reduces to the Laplace distribution. ! For b = 2 it has the same form as a gaussian distribution, but ! with a = \sqrt{2} \sigma. ! ! - Function: double gsl_ran_exppow_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for an ! exponential power distribution with scale parameter A and exponent ! B, using the formula given above. ! ! !  ! File: gsl-ref.info, Node: The Cauchy Distribution, Next: The Rayleigh Distribution, Prev: The Exponential Power Distribution, Up: Random Number Distributions ! ! The Cauchy Distribution ! ======================= ! ! - Random: double gsl_ran_cauchy (const gsl_rng * R, double A) ! This function returns a random variate from the Cauchy ! distribution with scale parameter A. The probability distribution ! for Cauchy random variates is, ! ! p(x) dx = {1 \over a\pi (1 + (x/a)^2) } dx ! ! for x in the range -\infty to +\infty. The Cauchy distribution is ! also known as the Lorentz distribution. ! ! - Function: double gsl_ran_cauchy_pdf (double X, double A) ! This function computes the probability density p(x) at X for a ! Cauchy distribution with scale parameter A, using the formula ! given above. ! ! ! - Function: double gsl_cdf_cauchy_P (double X, double A) ! - Function: double gsl_cdf_cauchy_Q (double X, double A) ! - Function: double gsl_cdf_cauchy_Pinv (double P, double A) ! - Function: double gsl_cdf_cauchy_Qinv (double Q, double A) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Cauchy distribution with ! scale parameter A. ! !  ! File: gsl-ref.info, Node: The Rayleigh Distribution, Next: The Rayleigh Tail Distribution, Prev: The Cauchy Distribution, Up: Random Number Distributions ! ! The Rayleigh Distribution ! ========================= ! ! - Random: double gsl_ran_rayleigh (const gsl_rng * R, double SIGMA) ! This function returns a random variate from the Rayleigh ! distribution with scale parameter SIGMA. The distribution is, ! ! p(x) dx = {x \over \sigma^2} \exp(- x^2/(2 \sigma^2)) dx ! ! for x > 0. ! ! - Function: double gsl_ran_rayleigh_pdf (double X, double SIGMA) ! This function computes the probability density p(x) at X for a ! Rayleigh distribution with scale parameter SIGMA, using the ! formula given above. ! ! ! - Function: double gsl_cdf_rayleigh_P (double X, double SIGMA) ! - Function: double gsl_cdf_rayleigh_Q (double X, double SIGMA) ! - Function: double gsl_cdf_rayleigh_Pinv (double P, double SIGMA) ! - Function: double gsl_cdf_rayleigh_Qinv (double Q, double SIGMA) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Rayleigh distribution with ! scale parameter SIGMA. ! !  ! File: gsl-ref.info, Node: The Rayleigh Tail Distribution, Next: The Landau Distribution, Prev: The Rayleigh Distribution, Up: Random Number Distributions ! ! The Rayleigh Tail Distribution ! ============================== ! ! - Random: double gsl_ran_rayleigh_tail (const gsl_rng * R, double A, ! double SIGMA) ! This function returns a random variate from the tail of the ! Rayleigh distribution with scale parameter SIGMA and a lower limit ! of A. The distribution is, ! ! p(x) dx = {x \over \sigma^2} \exp ((a^2 - x^2) /(2 \sigma^2)) dx ! ! for x > a. ! ! - Function: double gsl_ran_rayleigh_tail_pdf (double X, double A, ! double SIGMA) ! This function computes the probability density p(x) at X for a ! Rayleigh tail distribution with scale parameter SIGMA and lower ! limit A, using the formula given above. ! ! !  ! File: gsl-ref.info, Node: The Landau Distribution, Next: The Levy alpha-Stable Distributions, Prev: The Rayleigh Tail Distribution, Up: Random Number Distributions ! ! The Landau Distribution ! ======================= ! ! - Random: double gsl_ran_landau (const gsl_rng * R) ! This function returns a random variate from the Landau ! distribution. The probability distribution for Landau random ! variates is defined analytically by the complex integral, ! ! p(x) = (1/(2 \pi i)) \int_{c-i\infty}^{c+i\infty} ds exp(s log(s) + x s) ! For numerical purposes it is more convenient to use the following ! equivalent form of the integral, ! p(x) = (1/\pi) \int_0^\infty dt \exp(-t \log(t) - x t) \sin(\pi t). ! ! - Function: double gsl_ran_landau_pdf (double X) ! This function computes the probability density p(x) at X for the ! Landau distribution using an approximation to the formula given ! above. ! ! !  ! File: gsl-ref.info, Node: The Levy alpha-Stable Distributions, Next: The Levy skew alpha-Stable Distribution, Prev: The Landau Distribution, Up: Random Number Distributions ! ! The Levy alpha-Stable Distributions ! =================================== ! ! - Random: double gsl_ran_levy (const gsl_rng * R, double C, double ! ALPHA) ! This function returns a random variate from the Levy symmetric ! stable distribution with scale C and exponent ALPHA. The symmetric ! stable probability distribution is defined by a fourier transform, ! ! p(x) = {1 \over 2 \pi} \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^alpha) ! ! There is no explicit solution for the form of p(x) and the library ! does not define a corresponding `pdf' function. For \alpha = 1 ! the distribution reduces to the Cauchy distribution. For \alpha = ! 2 it is a Gaussian distribution with \sigma = \sqrt{2} c. For ! \alpha < 1 the tails of the distribution become extremely wide. ! ! The algorithm only works for 0 < alpha <= 2. ! ! !  ! File: gsl-ref.info, Node: The Levy skew alpha-Stable Distribution, Next: The Gamma Distribution, Prev: The Levy alpha-Stable Distributions, Up: Random Number Distributions ! ! The Levy skew alpha-Stable Distribution ! ======================================= ! ! - Random: double gsl_ran_levy_skew (const gsl_rng * R, double C, ! double ALPHA, double BETA) ! This function returns a random variate from the Levy skew stable ! distribution with scale C, exponent ALPHA and skewness parameter ! BETA. The skewness parameter must lie in the range [-1,1]. The ! Levy skew stable probability distribution is defined by a fourier ! transform, ! ! p(x) = {1 \over 2 \pi} \int_{-\infty}^{+\infty} dt \exp(-it x - |c t|^alpha (1-i beta sign(t) tan(pi alpha/2))) ! ! When \alpha = 1 the term \tan(\pi \alpha/2) is replaced by ! -(2/\pi)\log|t|. There is no explicit solution for the form of ! p(x) and the library does not define a corresponding `pdf' ! function. For \alpha = 2 the distribution reduces to a Gaussian ! distribution with \sigma = \sqrt{2} c and the skewness parameter ! has no effect. For \alpha < 1 the tails of the distribution ! become extremely wide. The symmetric distribution corresponds to ! \beta = 0. ! ! The algorithm only works for 0 < alpha <= 2. ! ! The Levy alpha-stable distributions have the property that if N ! alpha-stable variates are drawn from the distribution p(c, \alpha, ! \beta) then the sum Y = X_1 + X_2 + \dots + X_N will also be ! distributed as an alpha-stable variate, p(N^(1/\alpha) c, \alpha, ! \beta). ! ! !  ! File: gsl-ref.info, Node: The Gamma Distribution, Next: The Flat (Uniform) Distribution, Prev: The Levy skew alpha-Stable Distribution, Up: Random Number Distributions ! ! The Gamma Distribution ! ====================== ! ! - Random: double gsl_ran_gamma (const gsl_rng * R, double A, double B) ! This function returns a random variate from the gamma ! distribution. The distribution function is, ! ! p(x) dx = {1 \over \Gamma(a) b^a} x^{a-1} e^{-x/b} dx ! ! for x > 0. ! ! - Function: double gsl_ran_gamma_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! gamma distribution with parameters A and B, using the formula ! given above. ! ! ! - Function: double gsl_cdf_gamma_P (double X, double A, double B) ! - Function: double gsl_cdf_gamma_Q (double X, double A, double B) ! - Function: double gsl_cdf_gamma_Pinv (double P, double A, double B) ! - Function: double gsl_cdf_gamma_Qinv (double Q, double A, double B) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the gamma distribution with ! parameters A and B. ! !  ! File: gsl-ref.info, Node: The Flat (Uniform) Distribution, Next: The Lognormal Distribution, Prev: The Gamma Distribution, Up: Random Number Distributions ! ! The Flat (Uniform) Distribution ! =============================== ! ! - Random: double gsl_ran_flat (const gsl_rng * R, double A, double B) ! This function returns a random variate from the flat (uniform) ! distribution from A to B. The distribution is, ! ! p(x) dx = {1 \over (b-a)} dx ! ! if a <= x < b and 0 otherwise. ! ! - Function: double gsl_ran_flat_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! uniform distribution from A to B, using the formula given above. ! ! ! - Function: double gsl_cdf_flat_P (double X, double A, double B) ! - Function: double gsl_cdf_flat_Q (double X, double A, double B) ! - Function: double gsl_cdf_flat_Pinv (double P, double A, double B) ! - Function: double gsl_cdf_flat_Qinv (double Q, double A, double B) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for a uniform distribution from A to ! B. ! !  ! File: gsl-ref.info, Node: The Lognormal Distribution, Next: The Chi-squared Distribution, Prev: The Flat (Uniform) Distribution, Up: Random Number Distributions ! ! The Lognormal Distribution ! ========================== ! ! - Random: double gsl_ran_lognormal (const gsl_rng * R, double ZETA, ! double SIGMA) ! This function returns a random variate from the lognormal ! distribution. The distribution function is, ! ! p(x) dx = {1 \over x \sqrt{2 \pi \sigma^2} } \exp(-(\ln(x) - \zeta)^2/2 \sigma^2) dx ! ! for x > 0. ! ! - Function: double gsl_ran_lognormal_pdf (double X, double ZETA, ! double SIGMA) ! This function computes the probability density p(x) at X for a ! lognormal distribution with parameters ZETA and SIGMA, using the ! formula given above. ! ! ! - Function: double gsl_cdf_lognormal_P (double X, double ZETA, double ! SIGMA) ! - Function: double gsl_cdf_lognormal_Q (double X, double ZETA, double ! SIGMA) ! - Function: double gsl_cdf_lognormal_Pinv (double P, double ZETA, ! double SIGMA) ! - Function: double gsl_cdf_lognormal_Qinv (double Q, double ZETA, ! double SIGMA) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the lognormal distribution with ! parameters ZETA and SIGMA. ! !  ! File: gsl-ref.info, Node: The Chi-squared Distribution, Next: The F-distribution, Prev: The Lognormal Distribution, Up: Random Number Distributions ! ! The Chi-squared Distribution ! ============================ ! ! The chi-squared distribution arises in statistics If Y_i are n ! independent gaussian random variates with unit variance then the ! sum-of-squares, ! ! X_i = \sum_i Y_i^2 ! ! has a chi-squared distribution with n degrees of freedom. ! ! - Random: double gsl_ran_chisq (const gsl_rng * R, double NU) ! This function returns a random variate from the chi-squared ! distribution with NU degrees of freedom. The distribution function ! is, ! ! p(x) dx = {1 \over 2 \Gamma(\nu/2) } (x/2)^{\nu/2 - 1} \exp(-x/2) dx ! ! for x >= 0. ! ! - Function: double gsl_ran_chisq_pdf (double X, double NU) ! This function computes the probability density p(x) at X for a ! chi-squared distribution with NU degrees of freedom, using the ! formula given above. ! ! ! - Function: double gsl_cdf_chisq_P (double X, double NU) ! - Function: double gsl_cdf_chisq_Q (double X, double NU) ! - Function: double gsl_cdf_chisq_Pinv (double P, double NU) ! - Function: double gsl_cdf_chisq_Qinv (double Q, double NU) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the chi-squared distribution ! with NU degrees of freedom. ! !  ! File: gsl-ref.info, Node: The F-distribution, Next: The t-distribution, Prev: The Chi-squared Distribution, Up: Random Number Distributions ! ! The F-distribution ! ================== ! ! The F-distribution arises in statistics. If Y_1 and Y_2 are ! chi-squared deviates with \nu_1 and \nu_2 degrees of freedom then the ! ratio, ! ! X = { (Y_1 / \nu_1) \over (Y_2 / \nu_2) } ! ! has an F-distribution F(x;\nu_1,\nu_2). ! ! - Random: double gsl_ran_fdist (const gsl_rng * R, double NU1, double ! NU2) ! This function returns a random variate from the F-distribution ! with degrees of freedom NU1 and NU2. The distribution function is, ! ! p(x) dx = ! { \Gamma((\nu_1 + \nu_2)/2) ! \over \Gamma(\nu_1/2) \Gamma(\nu_2/2) } ! \nu_1^{\nu_1/2} \nu_2^{\nu_2/2} ! x^{\nu_1/2 - 1} (\nu_2 + \nu_1 x)^{-\nu_1/2 -\nu_2/2} ! ! for x >= 0. ! ! - Function: double gsl_ran_fdist_pdf (double X, double NU1, double NU2) ! This function computes the probability density p(x) at X for an ! F-distribution with NU1 and NU2 degrees of freedom, using the ! formula given above. ! ! ! - Function: double gsl_cdf_Fdist_P (double X, double NU1, double NU2) ! - Function: double gsl_cdf_Fdist_Q (double X, double NU1, double NU2) ! These functions compute the cumulative distribution functions P(x) ! and Q(x) for the F-distribution with NU1 and NU2 degrees of ! freedom. ! !  ! File: gsl-ref.info, Node: The t-distribution, Next: The Beta Distribution, Prev: The F-distribution, Up: Random Number Distributions ! ! The t-distribution ! ================== ! ! The t-distribution arises in statistics. If Y_1 has a normal ! distribution and Y_2 has a chi-squared distribution with \nu degrees of ! freedom then the ratio, ! ! X = { Y_1 \over \sqrt{Y_2 / \nu} } ! ! has a t-distribution t(x;\nu) with \nu degrees of freedom. ! ! - Random: double gsl_ran_tdist (const gsl_rng * R, double NU) ! This function returns a random variate from the t-distribution. ! The distribution function is, ! ! p(x) dx = {\Gamma((\nu + 1)/2) \over \sqrt{\pi \nu} \Gamma(\nu/2)} ! (1 + x^2/\nu)^{-(\nu + 1)/2} dx ! ! for -\infty < x < +\infty. ! ! - Function: double gsl_ran_tdist_pdf (double X, double NU) ! This function computes the probability density p(x) at X for a ! t-distribution with NU degrees of freedom, using the formula given ! above. ! ! ! - Function: double gsl_cdf_tdist_P (double X, double NU) ! - Function: double gsl_cdf_tdist_Q (double X, double NU) ! - Function: double gsl_cdf_tdist_Pinv (double P, double NU) ! - Function: double gsl_cdf_tdist_Qinv (double Q, double NU) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the t-distribution with NU ! degrees of freedom. ! !  ! File: gsl-ref.info, Node: The Beta Distribution, Next: The Logistic Distribution, Prev: The t-distribution, Up: Random Number Distributions ! ! The Beta Distribution ! ===================== ! ! - Random: double gsl_ran_beta (const gsl_rng * R, double A, double B) ! This function returns a random variate from the beta distribution. ! The distribution function is, ! ! p(x) dx = {\Gamma(a+b) \over \Gamma(a) \Gamma(b)} x^{a-1} (1-x)^{b-1} dx ! ! for 0 <= x <= 1. ! ! - Function: double gsl_ran_beta_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! beta distribution with parameters A and B, using the formula given ! above. ! ! ! - Function: double gsl_cdf_beta_P (double X, double A, double B) ! - Function: double gsl_cdf_beta_Q (double X, double A, double B) ! These functions compute the cumulative distribution functions P(x) ! and Q(x) for the beta distribution with parameters A and B. ! !  ! File: gsl-ref.info, Node: The Logistic Distribution, Next: The Pareto Distribution, Prev: The Beta Distribution, Up: Random Number Distributions ! ! The Logistic Distribution ! ========================= ! ! - Random: double gsl_ran_logistic (const gsl_rng * R, double A) ! This function returns a random variate from the logistic ! distribution. The distribution function is, ! ! p(x) dx = { \exp(-x/a) \over a (1 + \exp(-x/a))^2 } dx ! ! for -\infty < x < +\infty. ! ! - Function: double gsl_ran_logistic_pdf (double X, double A) ! This function computes the probability density p(x) at X for a ! logistic distribution with scale parameter A, using the formula ! given above. ! ! ! - Function: double gsl_cdf_logistic_P (double X, double A) ! - Function: double gsl_cdf_logistic_Q (double X, double A) ! - Function: double gsl_cdf_logistic_Pinv (double P, double A) ! - Function: double gsl_cdf_logistic_Qinv (double Q, double A) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the logistic distribution with ! scale parameter A.  ! File: gsl-ref.info, Node: The Pareto Distribution, Next: The Spherical Distribution (2D & 3D), Prev: The Logistic Distribution, Up: Random Number Distributions ! The Pareto Distribution ! ======================= ! - Random: double gsl_ran_pareto (const gsl_rng * R, double A, double B) ! This function returns a random variate from the Pareto ! distribution of order A. The distribution function is, ! p(x) dx = (a/b) / (x/b)^{a+1} dx ! for x >= b. ! - Function: double gsl_ran_pareto_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! Pareto distribution with exponent A and scale B, using the formula ! given above. ! - Function: double gsl_cdf_pareto_P (double X, double A, double B) ! - Function: double gsl_cdf_pareto_Q (double X, double A, double B) ! - Function: double gsl_cdf_pareto_Pinv (double P, double A, double B) ! - Function: double gsl_cdf_pareto_Qinv (double Q, double A, double B) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Pareto distribution with ! exponent A and scale B. !  ! File: gsl-ref.info, Node: The Spherical Distribution (2D & 3D), Next: The Weibull Distribution, Prev: The Pareto Distribution, Up: Random Number Distributions ! ! The Spherical Distribution (2D & 3D) ! ==================================== ! ! The spherical distributions generate random vectors, located on a ! spherical surface. They can be used as random directions, for example ! in the steps of a random walk. ! ! - Random: void gsl_ran_dir_2d (const gsl_rng * R, double *X, double *Y) ! - Random: void gsl_ran_dir_2d_trig_method (const gsl_rng * R, double ! *X, double *Y) ! This function returns a random direction vector v = (X,Y) in two ! dimensions. The vector is normalized such that |v|^2 = x^2 + y^2 ! = 1. The obvious way to do this is to take a uniform random ! number between 0 and 2\pi and let X and Y be the sine and cosine ! respectively. Two trig functions would have been expensive in the ! old days, but with modern hardware implementations, this is ! sometimes the fastest way to go. This is the case for the Pentium ! (but not the case for the Sun Sparcstation). One can avoid the ! trig evaluations by choosing X and Y in the interior of a unit ! circle (choose them at random from the interior of the enclosing ! square, and then reject those that are outside the unit circle), ! and then dividing by \sqrt{x^2 + y^2}. A much cleverer approach, ! attributed to von Neumann (See Knuth, v2, 3rd ed, p140, exercise ! 23), requires neither trig nor a square root. In this approach, U ! and V are chosen at random from the interior of a unit circle, and ! then x=(u^2-v^2)/(u^2+v^2) and y=uv/(u^2+v^2). ! ! - Random: void gsl_ran_dir_3d (const gsl_rng * R, double *X, double ! *Y, double * Z) ! This function returns a random direction vector v = (X,Y,Z) in ! three dimensions. The vector is normalized such that |v|^2 = x^2 ! + y^2 + z^2 = 1. The method employed is due to Robert E. Knop ! (CACM 13, 326 (1970)), and explained in Knuth, v2, 3rd ed, p136. ! It uses the surprising fact that the distribution projected along ! any axis is actually uniform (this is only true for 3d). ! ! - Random: void gsl_ran_dir_nd (const gsl_rng * R, size_t N, double *X) ! This function returns a random direction vector v = ! (x_1,x_2,...,x_n) in N dimensions. The vector is normalized such ! that |v|^2 = x_1^2 + x_2^2 + ... + x_n^2 = 1. The method uses the ! fact that a multivariate gaussian distribution is spherically ! symmetric. Each component is generated to have a gaussian ! distribution, and then the components are normalized. The method ! is described by Knuth, v2, 3rd ed, p135-136, and attributed to G. ! W. Brown, Modern Mathematics for the Engineer (1956).  ! File: gsl-ref.info, Node: The Weibull Distribution, Next: The Type-1 Gumbel Distribution, Prev: The Spherical Distribution (2D & 3D), Up: Random Number Distributions ! The Weibull Distribution ! ======================== ! - Random: double gsl_ran_weibull (const gsl_rng * R, double A, double ! B) ! This function returns a random variate from the Weibull ! distribution. The distribution function is, ! p(x) dx = {b \over a^b} x^{b-1} \exp(-(x/a)^b) dx ! for x >= 0. ! - Function: double gsl_ran_weibull_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! Weibull distribution with scale A and exponent B, using the ! formula given above. ! ! ! - Function: double gsl_cdf_weibull_P (double X, double A, double B) ! - Function: double gsl_cdf_weibull_Q (double X, double A, double B) ! - Function: double gsl_cdf_weibull_Pinv (double P, double A, double B) ! - Function: double gsl_cdf_weibull_Qinv (double Q, double A, double B) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Weibull distribution with ! scale A and exponent B.  ! File: gsl-ref.info, Node: The Type-1 Gumbel Distribution, Next: The Type-2 Gumbel Distribution, Prev: The Weibull Distribution, Up: Random Number Distributions ! The Type-1 Gumbel Distribution ! ============================== ! ! - Random: double gsl_ran_gumbel1 (const gsl_rng * R, double A, double ! B) ! This function returns a random variate from the Type-1 Gumbel ! distribution. The Type-1 Gumbel distribution function is, ! ! p(x) dx = a b \exp(-(b \exp(-ax) + ax)) dx ! ! for -\infty < x < \infty. ! ! - Function: double gsl_ran_gumbel1_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! Type-1 Gumbel distribution with parameters A and B, using the ! formula given above. ! ! ! - Function: double gsl_cdf_gumbel1_P (double X, double A, double B) ! - Function: double gsl_cdf_gumbel1_Q (double X, double A, double B) ! - Function: double gsl_cdf_gumbel1_Pinv (double P, double A, double B) ! - Function: double gsl_cdf_gumbel1_Qinv (double Q, double A, double B) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Type-1 Gumbel distribution ! with parameters A and B. ! !  ! File: gsl-ref.info, Node: The Type-2 Gumbel Distribution, Next: The Dirichlet Distribution, Prev: The Type-1 Gumbel Distribution, Up: Random Number Distributions ! ! The Type-2 Gumbel Distribution ! ============================== ! ! - Random: double gsl_ran_gumbel2 (const gsl_rng * R, double A, double ! B) ! This function returns a random variate from the Type-2 Gumbel ! distribution. The Type-2 Gumbel distribution function is, ! ! p(x) dx = a b x^{-a-1} \exp(-b x^{-a}) dx ! ! for 0 < x < \infty. ! ! - Function: double gsl_ran_gumbel2_pdf (double X, double A, double B) ! This function computes the probability density p(x) at X for a ! Type-2 Gumbel distribution with parameters A and B, using the ! formula given above. ! ! ! - Function: double gsl_cdf_gumbel2_P (double X, double A, double B) ! - Function: double gsl_cdf_gumbel2_Q (double X, double A, double B) ! - Function: double gsl_cdf_gumbel2_Pinv (double P, double A, double B) ! - Function: double gsl_cdf_gumbel2_Qinv (double Q, double A, double B) ! These functions compute the cumulative distribution functions ! P(x), Q(x) and their inverses for the Type-2 Gumbel distribution ! with parameters A and B. ! !  ! File: gsl-ref.info, Node: The Dirichlet Distribution, Next: General Discrete Distributions, Prev: The Type-2 Gumbel Distribution, Up: Random Number Distributions ! ! The Dirichlet Distribution ! ========================== ! ! - Random: void gsl_ran_dirichlet (const gsl_rng * R, size_t K, const ! double ALPHA[], double THETA[]) ! This function returns an array of K random variates from a ! Dirichlet distribution of order K-1. The distribution function is ! ! p(\theta_1, ..., \theta_K) d\theta_1 ... d\theta_K = ! (1/Z) \prod_{i=1}^K \theta_i^{\alpha_i - 1} \delta(1 -\sum_{i=1}^K \theta_i) d\theta_1 ... d\theta_K ! ! for theta_i >= 0 and alpha_i >= 0. The delta function ensures ! that \sum \theta_i = 1. The normalization factor Z is ! ! Z = {\prod_{i=1}^K \Gamma(\alpha_i)} / {\Gamma( \sum_{i=1}^K \alpha_i)} ! ! The random variates are generated by sampling K values from gamma ! distributions with parameters a=alpha_i, b=1, and renormalizing. ! See A.M. Law, W.D. Kelton, `Simulation Modeling and Analysis' ! (1991). ! ! - Function: double gsl_ran_dirichlet_pdf (size_t K, const double ! ALPHA[], const double THETA[]) ! This function computes the probability density p(\theta_1, ... , ! \theta_K) at THETA[K] for a Dirichlet distribution with parameters ! ALPHA[K], using the formula given above. ! ! - Function: double gsl_ran_dirichlet_lnpdf (size_t K, const double ! ALPHA[], const double THETA[]) ! This function computes the logarithm of the probability density ! p(\theta_1, ... , \theta_K) for a Dirichlet distribution with ! parameters ALPHA[K]. ! !  ! File: gsl-ref.info, Node: General Discrete Distributions, Next: The Poisson Distribution, Prev: The Dirichlet Distribution, Up: Random Number Distributions ! ! General Discrete Distributions ! ============================== ! ! Given K discrete events with different probabilities P[k], produce a ! random value k consistent with its probability. ! The obvious way to do this is to preprocess the probability list by ! generating a cumulative probability array with K+1 elements: ! C[0] = 0 ! C[k+1] = C[k]+P[k]. ! Note that this construction produces C[K]=1. Now choose a uniform ! deviate u between 0 and 1, and find the value of k such that C[k] <= u ! < C[k+1]. Although this in principle requires of order \log K steps per ! random number generation, they are fast steps, and if you use something ! like \lfloor uK \rfloor as a starting point, you can often do pretty ! well. ! ! But faster methods have been devised. Again, the idea is to ! preprocess the probability list, and save the result in some form of ! lookup table; then the individual calls for a random discrete event can ! go rapidly. An approach invented by G. Marsaglia (Generating discrete ! random numbers in a computer, Comm ACM 6, 37-38 (1963)) is very clever, ! and readers interested in examples of good algorithm design are ! directed to this short and well-written paper. Unfortunately, for ! large K, Marsaglia's lookup table can be quite large. ! ! A much better approach is due to Alastair J. Walker (An efficient ! method for generating discrete random variables with general ! distributions, ACM Trans on Mathematical Software 3, 253-256 (1977); ! see also Knuth, v2, 3rd ed, p120-121,139). This requires two lookup ! tables, one floating point and one integer, but both only of size K. ! After preprocessing, the random numbers are generated in O(1) time, ! even for large K. The preprocessing suggested by Walker requires ! O(K^2) effort, but that is not actually necessary, and the ! implementation provided here only takes O(K) effort. In general, more ! preprocessing leads to faster generation of the individual random ! numbers, but a diminishing return is reached pretty early. Knuth points ! out that the optimal preprocessing is combinatorially difficult for ! large K. ! ! This method can be used to speed up some of the discrete random ! number generators below, such as the binomial distribution. To use if ! for something like the Poisson Distribution, a modification would have ! to be made, since it only takes a finite set of K outcomes. ! ! - Function: gsl_ran_discrete_t * gsl_ran_discrete_preproc (size_t K, ! const double * P) ! This function returns a pointer to a structure that contains the ! lookup table for the discrete random number generator. The array ! P[] contains the probabilities of the discrete events; these array ! elements must all be positive, but they needn't add up to one (so ! you can think of them more generally as "weights") - the ! preprocessor will normalize appropriately. This return value is ! used as an argument for the `gsl_ran_discrete' function below. ! ! - Random: size_t gsl_ran_discrete (const gsl_rng * R, const ! gsl_ran_discrete_t * G) ! After the preprocessor, above, has been called, you use this ! function to get the discrete random numbers. ! ! - Function: double gsl_ran_discrete_pdf (size_t K, const ! gsl_ran_discrete_t * G) ! Returns the probability P[k] of observing the variable K. Since ! P[k] is not stored as part of the lookup table, it must be ! recomputed; this computation takes O(K), so if K is large and you ! care about the original array P[k] used to create the lookup ! table, then you should just keep this original array P[k] around. ! - Function: void gsl_ran_discrete_free (gsl_ran_discrete_t * G) ! De-allocates the lookup table pointed to by G. !  ! File: gsl-ref.info, Node: The Poisson Distribution, Next: The Bernoulli Distribution, Prev: General Discrete Distributions, Up: Random Number Distributions ! ! The Poisson Distribution ! ======================== ! ! - Random: unsigned int gsl_ran_poisson (const gsl_rng * R, double MU) ! This function returns a random integer from the Poisson ! distribution with mean MU. The probability distribution for ! Poisson variates is, ! ! p(k) = {\mu^k \over k!} \exp(-\mu) ! ! for k >= 0. ! ! - Function: double gsl_ran_poisson_pdf (unsigned int K, double MU) ! This function computes the probability p(k) of obtaining K from a ! Poisson distribution with mean MU, using the formula given above. !  ! File: gsl-ref.info, Node: The Bernoulli Distribution, Next: The Binomial Distribution, Prev: The Poisson Distribution, Up: Random Number Distributions ! ! The Bernoulli Distribution ! ========================== ! - Random: unsigned int gsl_ran_bernoulli (const gsl_rng * R, double P) ! This function returns either 0 or 1, the result of a Bernoulli ! trial with probability P. The probability distribution for a ! Bernoulli trial is, ! p(0) = 1 - p ! p(1) = p ! - Function: double gsl_ran_bernoulli_pdf (unsigned int K, double P) ! This function computes the probability p(k) of obtaining K from a ! Bernoulli distribution with probability parameter P, using the ! formula given above. !  ! File: gsl-ref.info, Node: The Binomial Distribution, Next: The Multinomial Distribution, Prev: The Bernoulli Distribution, Up: Random Number Distributions ! ! The Binomial Distribution ! ========================= ! - Random: unsigned int gsl_ran_binomial (const gsl_rng * R, double P, ! unsigned int N) ! This function returns a random integer from the binomial ! distribution, the number of successes in N independent trials with ! probability P. The probability distribution for binomial variates ! is, ! ! p(k) = {n! \over k! (n-k)! } p^k (1-p)^{n-k} ! ! for 0 <= k <= n. ! ! - Function: double gsl_ran_binomial_pdf (unsigned int K, double P, ! unsigned int N) ! This function computes the probability p(k) of obtaining K from a ! binomial distribution with parameters P and N, using the formula ! given above.  ! File: gsl-ref.info, Node: The Multinomial Distribution, Next: The Negative Binomial Distribution, Prev: The Binomial Distribution, Up: Random Number Distributions ! The Multinomial Distribution ============================ ! - Random: void gsl_ran_multinomial (const gsl_rng * R, size_t K, ! unsigned int N, const double P[], unsigned int N[]) ! This function returns an array of K random variates from a ! multinomial distribution. The distribution function is, ! ! P(n_1, n_2, ..., n_K) = ! (N!/(n_1! n_2! ... n_K!)) p_1^n_1 p_2^n_2 ... p_K^n_K ! ! where (n_1, n_2, ..., n_K) are nonnegative integers with ! sum_{k=1}^K n_k = N, and (p_1, p_2, ..., p_K) is a probability ! distribution with \sum p_i = 1. If the array P[K] is not ! normalized then its entries will be treated as weights and ! normalized appropriately. ! ! Random variates are generated using the conditional binomial ! method (see C.S. David, `The computer generation of multinomial ! random variates', Comp. Stat. Data Anal. 16 (1993) 205-217 for ! details). ! ! - Function: double gsl_ran_multinomial_pdf (size_t K, const double ! P[], const unsigned int N[]) ! This function computes the probability P(n_1, n_2, ..., n_K) of ! sampling N[K] from a multinomial distribution with parameters ! P[K], using the formula given above. ! ! - Function: double gsl_ran_multinomial_lnpdf (size_t K, const double ! P[], const unsigned int N[]) ! This function returns the logarithm of the probability for the ! multinomial distribution P(n_1, n_2, ..., n_K) with parameters ! P[K]. ! !  ! File: gsl-ref.info, Node: The Negative Binomial Distribution, Next: The Pascal Distribution, Prev: The Multinomial Distribution, Up: Random Number Distributions ! ! The Negative Binomial Distribution ! ================================== ! ! - Random: unsigned int gsl_ran_negative_binomial (const gsl_rng * R, ! double P, double N) ! This function returns a random integer from the negative binomial ! distribution, the number of failures occurring before N successes ! in independent trials with probability P of success. The ! probability distribution for negative binomial variates is, ! ! p(k) = {\Gamma(n + k) \over \Gamma(k+1) \Gamma(n) } p^n (1-p)^k ! ! Note that n is not required to be an integer. ! ! - Function: double gsl_ran_negative_binomial_pdf (unsigned int K, ! double P, double N) ! This function computes the probability p(k) of obtaining K from a ! negative binomial distribution with parameters P and N, using the ! formula given above.  ! File: gsl-ref.info, Node: The Pascal Distribution, Next: The Geometric Distribution, Prev: The Negative Binomial Distribution, Up: Random Number Distributions ! ! The Pascal Distribution ! ======================= ! ! - Random: unsigned int gsl_ran_pascal (const gsl_rng * R, double P, ! unsigned int N) ! This function returns a random integer from the Pascal ! distribution. The Pascal distribution is simply a negative ! binomial distribution with an integer value of n. ! ! p(k) = {(n + k - 1)! \over k! (n - 1)! } p^n (1-p)^k ! ! for k >= 0 ! ! - Function: double gsl_ran_pascal_pdf (unsigned int K, double P, ! unsigned int N) ! This function computes the probability p(k) of obtaining K from a ! Pascal distribution with parameters P and N, using the formula ! given above. !  ! File: gsl-ref.info, Node: The Geometric Distribution, Next: The Hypergeometric Distribution, Prev: The Pascal Distribution, Up: Random Number Distributions ! ! The Geometric Distribution ! ========================== ! - Random: unsigned int gsl_ran_geometric (const gsl_rng * R, double P) ! This function returns a random integer from the geometric ! distribution, the number of independent trials with probability P ! until the first success. The probability distribution for ! geometric variates is, ! p(k) = p (1-p)^(k-1) ! for k >= 1. ! - Function: double gsl_ran_geometric_pdf (unsigned int K, double P) ! This function computes the probability p(k) of obtaining K from a ! geometric distribution with probability parameter P, using the ! formula given above.  ! File: gsl-ref.info, Node: The Hypergeometric Distribution, Next: The Logarithmic Distribution, Prev: The Geometric Distribution, Up: Random Number Distributions ! The Hypergeometric Distribution ! =============================== ! ! - Random: unsigned int gsl_ran_hypergeometric (const gsl_rng * R, ! unsigned int N1, unsigned int N2, unsigned int T) ! This function returns a random integer from the hypergeometric ! distribution. The probability distribution for hypergeometric ! random variates is, ! ! p(k) = C(n_1,k) C(n_2, t-k) / C(n_1 + n_2,k) ! ! where C(a,b) = a!/(b!(a-b)!). The domain of k is max(0,t-n_2), ! ..., max(t,n_1). ! ! - Function: double gsl_ran_hypergeometric_pdf (unsigned int K, ! unsigned int N1, unsigned int N2, unsigned int T) ! This function computes the probability p(k) of obtaining K from a ! hypergeometric distribution with parameters N1, N2, N3, using the ! formula given above.  ! File: gsl-ref.info, Node: The Logarithmic Distribution, Next: Shuffling and Sampling, Prev: The Hypergeometric Distribution, Up: Random Number Distributions ! The Logarithmic Distribution ============================ ! - Random: unsigned int gsl_ran_logarithmic (const gsl_rng * R, double ! P) ! This function returns a random integer from the logarithmic ! distribution. The probability distribution for logarithmic random ! variates is, ! ! p(k) = {-1 \over \log(1-p)} {(p^k \over k)} ! ! for k >= 1. ! ! - Function: double gsl_ran_logarithmic_pdf (unsigned int K, double P) ! This function computes the probability p(k) of obtaining K from a ! logarithmic distribution with probability parameter P, using the ! formula given above. !  ! File: gsl-ref.info, Node: Shuffling and Sampling, Next: Random Number Distribution Examples, Prev: The Logarithmic Distribution, Up: Random Number Distributions ! Shuffling and Sampling ! ====================== ! The following functions allow the shuffling and sampling of a set of ! objects. The algorithms rely on a random number generator as source of ! randomness and a poor quality generator can lead to correlations in the ! output. In particular it is important to avoid generators with a short ! period. For more information see Knuth, v2, 3rd ed, Section 3.4.2, ! "Random Sampling and Shuffling". ! ! - Random: void gsl_ran_shuffle (const gsl_rng * R, void * BASE, size_t ! N, size_t SIZE) ! This function randomly shuffles the order of N objects, each of ! size SIZE, stored in the array BASE[0..N-1]. The output of the ! random number generator R is used to produce the permutation. The ! algorithm generates all possible n! permutations with equal ! probability, assuming a perfect source of random numbers. ! ! The following code shows how to shuffle the numbers from 0 to 51, ! ! int a[52]; ! ! for (i = 0; i < 52; i++) ! { ! a[i] = i; ! } ! ! gsl_ran_shuffle (r, a, 52, sizeof (int)); ! ! ! - Random: int gsl_ran_choose (const gsl_rng * R, void * DEST, size_t ! K, void * SRC, size_t N, size_t SIZE) ! This function fills the array DEST[k] with K objects taken ! randomly from the N elements of the array SRC[0..N-1]. The ! objects are each of size SIZE. The output of the random number ! generator R is used to make the selection. The algorithm ensures ! all possible samples are equally likely, assuming a perfect source ! of randomness. ! ! The objects are sampled _without_ replacement, thus each object can ! only appear once in DEST[k]. It is required that K be less than ! or equal to `n'. The objects in DEST will be in the same relative ! order as those in SRC. You will need to call `gsl_ran_shuffle(r, ! dest, n, size)' if you want to randomize the order. ! ! The following code shows how to select a random sample of three ! unique numbers from the set 0 to 99, ! ! double a[3], b[100]; ! ! for (i = 0; i < 100; i++) ! { ! b[i] = (double) i; ! } ! ! gsl_ran_choose (r, a, 3, b, 100, sizeof (double)); ! ! ! - Random: void gsl_ran_sample (const gsl_rng * R, void * DEST, size_t ! K, void * SRC, size_t N, size_t SIZE) ! This function is like `gsl_ran_choose' but samples K items from ! the original array of N items SRC with replacement, so the same ! object can appear more than once in the output sequence DEST. ! There is no requirement that K be less than N in this case.  ! File: gsl-ref.info, Node: Random Number Distribution Examples, Next: Random Number Distribution References and Further Reading, Prev: Shuffling and Sampling, Up: Random Number Distributions ! Examples ! ======== ! ! The following program demonstrates the use of a random number generator ! to produce variates from a distribution. It prints 10 samples from the ! Poisson distribution with a mean of 3. ! ! #include ! #include ! #include ! ! int ! main (void) ! { ! const gsl_rng_type * T; ! gsl_rng * r; ! ! int i, n = 10; ! double mu = 3.0; ! ! /* create a generator chosen by the ! environment variable GSL_RNG_TYPE */ ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! /* print n random variates chosen from ! the poisson distribution with mean ! parameter mu */ ! ! for (i = 0; i < n; i++) ! { ! unsigned int k = gsl_ran_poisson (r, mu); ! printf (" %u", k); ! } ! ! printf ("\n"); ! return 0; ! } ! ! If the library and header files are installed under `/usr/local' (the ! default location) then the program can be compiled with these options, ! ! gcc demo.c -lgsl -lgslcblas -lm ! ! Here is the output of the program, ! ! $ ./a.out ! ! 2 5 5 2 1 0 3 4 1 1 ! ! The variates depend on the seed used by the generator. The seed for the ! default generator type `gsl_rng_default' can be changed with the ! `GSL_RNG_SEED' environment variable to produce a different stream of ! variates, ! ! $ GSL_RNG_SEED=123 ./a.out ! ! GSL_RNG_SEED=123 ! 4 5 6 3 3 1 4 2 5 5 ! ! The following program generates a random walk in two dimensions. ! ! #include ! #include ! #include ! ! int ! main (void) ! { ! int i; ! double x = 0, y = 0, dx, dy; ! ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_rng_env_setup(); ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! printf ("%g %g\n", x, y); ! ! for (i = 0; i < 10; i++) ! { ! gsl_ran_dir_2d (r, &dx, &dy); ! x += dx; y += dy; ! printf ("%g %g\n", x, y); ! } ! return 0; ! } ! ! Example output from the program, three 10-step random walks from the ! origin. ! ! ! The following program computes the upper and lower cumulative ! distribution functions for the standard normal distribution at x=2. ! ! #include ! #include ! ! int ! main (void) ! { ! double P, Q; ! double x = 2.0; ! ! P = gsl_cdf_ugaussian_P (x); ! printf ("prob(x < %f) = %f\n", x, P); ! ! Q = gsl_cdf_ugaussian_Q (x); ! printf ("prob(x > %f) = %f\n", x, Q); ! ! x = gsl_cdf_ugaussian_Pinv (P); ! printf ("Pinv(%f) = %f\n", P, x); ! ! x = gsl_cdf_ugaussian_Qinv (Q); ! printf ("Qinv(%f) = %f\n", Q, x); ! ! return 0; ! } ! Here is the output of the program, ! ! prob(x < 2.000000) = 0.977250 ! prob(x > 2.000000) = 0.022750 ! Pinv(0.977250) = 2.000000 ! Qinv(0.022750) = 2.000000  ! File: gsl-ref.info, Node: Random Number Distribution References and Further Reading, Prev: Random Number Distribution Examples, Up: Random Number Distributions References and Further Reading ============================== ! For an encyclopaedic coverage of the subject readers are advised to ! consult the book `Non-Uniform Random Variate Generation' by Luc ! Devroye. It covers every imaginable distribution and provides hundreds ! of algorithms. ! ! Luc Devroye, `Non-Uniform Random Variate Generation', ! Springer-Verlag, ISBN 0-387-96305-7. ! ! The subject of random variate generation is also reviewed by Knuth, who ! describes algorithms for all the major distributions. ! ! Donald E. Knuth, `The Art of Computer Programming: Seminumerical ! Algorithms' (Vol 2, 3rd Ed, 1997), Addison-Wesley, ISBN 0201896842. ! ! The Particle Data Group provides a short review of techniques for ! generating distributions of random numbers in the "Monte Carlo" section ! of its Annual Review of Particle Physics. ! ! `Review of Particle Properties' R.M. Barnett et al., Physical ! Review D54, 1 (1996) . ! ! The Review of Particle Physics is available online in postscript and pdf ! format. ! ! An overview of methods used to compute cumulative distribution functions ! can be found in `Statistical Computing' by W.J. Kennedy and J.E. ! Gentle. Another general reference is `Elements of Statistical ! Computing' by R.A. Thisted. ! ! William E. Kennedy and James E. Gentle, `Statistical Computing' ! (1980), Marcel Dekker, ISBN 0-8247-6898-1. ! ! Ronald A. Thisted, `Elements of Statistical Computing' (1988), ! Chapman & Hall, ISBN 0-412-01371-1. ! ! The cumulative distribution functions for the Gaussian distribution are based on the following papers, ! `Rational Chebyshev Approximations Using Linear Equations', W.J. ! Cody, W. Fraser, J.F. Hart. Numerische Mathematik 12, 242-251 ! (1968). ! ! `Rational Chebyshev Approximations for the Error Function', W.J. ! Cody. Mathematics of Computation 23, n107, 631-637 (July 1969). ! !  ! File: gsl-ref.info, Node: Statistics, Next: Histograms, Prev: Random Number Distributions, Up: Top ! ! Statistics ! ********** ! ! This chapter describes the statistical functions in the library. The ! basic statistical functions include routines to compute the mean, ! variance and standard deviation. More advanced functions allow you to ! calculate absolute deviations, skewness, and kurtosis as well as the ! median and arbitrary percentiles. The algorithms use recurrence ! relations to compute average quantities in a stable way, without large ! intermediate values that might overflow. ! ! The functions are available in versions for datasets in the standard ! floating-point and integer types. The versions for double precision ! floating-point data have the prefix `gsl_stats' and are declared in the ! header file `gsl_statistics_double.h'. The versions for integer data ! have the prefix `gsl_stats_int' and are declared in the header files ! `gsl_statistics_int.h'. * Menu: ! * Mean and standard deviation and variance:: ! * Absolute deviation:: ! * Higher moments (skewness and kurtosis):: ! * Autocorrelation:: ! * Covariance:: ! * Weighted Samples:: ! * Maximum and Minimum values:: ! * Median and Percentiles:: ! * Example statistical programs:: ! * Statistics References and Further Reading::  ! File: gsl-ref.info, Node: Mean and standard deviation and variance, Next: Absolute deviation, Up: Statistics ! Mean, Standard Deviation and Variance ! ===================================== ! - Statistics: double gsl_stats_mean (const double DATA[], size_t ! STRIDE, size_t N) ! This function returns the arithmetic mean of DATA, a dataset of ! length N with stride STRIDE. The arithmetic mean, or "sample ! mean", is denoted by \Hat\mu and defined as, ! ! \Hat\mu = (1/N) \sum x_i ! ! where x_i are the elements of the dataset DATA. For samples drawn ! from a gaussian distribution the variance of \Hat\mu is \sigma^2 / ! N. ! ! - Statistics: double gsl_stats_variance (const double DATA[], size_t ! STRIDE, size_t N) ! This function returns the estimated, or "sample", variance of ! DATA, a dataset of length N with stride STRIDE. The estimated ! variance is denoted by \Hat\sigma^2 and is defined by, ! ! \Hat\sigma^2 = (1/(N-1)) \sum (x_i - \Hat\mu)^2 ! ! where x_i are the elements of the dataset DATA. Note that the ! normalization factor of 1/(N-1) results from the derivation of ! \Hat\sigma^2 as an unbiased estimator of the population variance ! \sigma^2. For samples drawn from a gaussian distribution the ! variance of \Hat\sigma^2 itself is 2 \sigma^4 / N. ! ! This function computes the mean via a call to `gsl_stats_mean'. If ! you have already computed the mean then you can pass it directly to ! `gsl_stats_variance_m'. ! ! - Statistics: double gsl_stats_variance_m (const double DATA[], size_t ! STRIDE, size_t N, double MEAN) ! This function returns the sample variance of DATA relative to the ! given value of MEAN. The function is computed with \Hat\mu ! replaced by the value of MEAN that you supply, ! ! \Hat\sigma^2 = (1/(N-1)) \sum (x_i - mean)^2 ! ! - Statistics: double gsl_stats_sd (const double DATA[], size_t STRIDE, ! size_t N) ! - Statistics: double gsl_stats_sd_m (const double DATA[], size_t ! STRIDE, size_t N, double MEAN) ! The standard deviation is defined as the square root of the ! variance. These functions return the square root of the ! corresponding variance functions above. ! ! - Statistics: double gsl_stats_variance_with_fixed_mean (const double ! DATA[], size_t STRIDE, size_t N, double MEAN) ! This function computes an unbiased estimate of the variance of ! DATA when the population mean MEAN of the underlying distribution ! is known _a priori_. In this case the estimator for the variance ! uses the factor 1/N and the sample mean \Hat\mu is replaced by the ! known population mean \mu, ! ! \Hat\sigma^2 = (1/N) \sum (x_i - \mu)^2 ! ! ! - Statistics: double gsl_stats_sd_with_fixed_mean (const double ! DATA[], size_t STRIDE, size_t N, double MEAN) ! This function calculates the standard deviation of DATA for a ! fixed population mean MEAN. The result is the square root of the ! corresponding variance function.  ! File: gsl-ref.info, Node: Absolute deviation, Next: Higher moments (skewness and kurtosis), Prev: Mean and standard deviation and variance, Up: Statistics ! Absolute deviation ! ================== ! - Statistics: double gsl_stats_absdev (const double DATA[], size_t ! STRIDE, size_t N) ! This function computes the absolute deviation from the mean of ! DATA, a dataset of length N with stride STRIDE. The absolute ! deviation from the mean is defined as, ! ! absdev = (1/N) \sum |x_i - \Hat\mu| ! ! where x_i are the elements of the dataset DATA. The absolute ! deviation from the mean provides a more robust measure of the ! width of a distribution than the variance. This function computes ! the mean of DATA via a call to `gsl_stats_mean'. ! ! - Statistics: double gsl_stats_absdev_m (const double DATA[], size_t ! STRIDE, size_t N, double MEAN) ! This function computes the absolute deviation of the dataset DATA ! relative to the given value of MEAN, ! ! absdev = (1/N) \sum |x_i - mean| ! ! This function is useful if you have already computed the mean of ! DATA (and want to avoid recomputing it), or wish to calculate the ! absolute deviation relative to another value (such as zero, or the ! median).  ! File: gsl-ref.info, Node: Higher moments (skewness and kurtosis), Next: Autocorrelation, Prev: Absolute deviation, Up: Statistics ! Higher moments (skewness and kurtosis) ! ====================================== ! ! - Statistics: double gsl_stats_skew (const double DATA[], size_t ! STRIDE, size_t N) ! This function computes the skewness of DATA, a dataset of length N ! with stride STRIDE. The skewness is defined as, ! skew = (1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^3 ! where x_i are the elements of the dataset DATA. The skewness ! measures the asymmetry of the tails of a distribution. ! The function computes the mean and estimated standard deviation of ! DATA via calls to `gsl_stats_mean' and `gsl_stats_sd'. ! - Statistics: double gsl_stats_skew_m_sd (const double DATA[], size_t ! STRIDE, size_t N, double MEAN, double SD) ! This function computes the skewness of the dataset DATA using the ! given values of the mean MEAN and standard deviation SD, + skew = (1/N) \sum ((x_i - mean)/sd)^3 ! These functions are useful if you have already computed the mean ! and standard deviation of DATA and want to avoid recomputing them. ! - Statistics: double gsl_stats_kurtosis (const double DATA[], size_t ! STRIDE, size_t N) ! This function computes the kurtosis of DATA, a dataset of length N ! with stride STRIDE. The kurtosis is defined as, ! kurtosis = ((1/N) \sum ((x_i - \Hat\mu)/\Hat\sigma)^4) - 3 + The kurtosis measures how sharply peaked a distribution is, + relative to its width. The kurtosis is normalized to zero for a + gaussian distribution. + + - Statistics: double gsl_stats_kurtosis_m_sd (const double DATA[], + size_t STRIDE, size_t N, double MEAN, double SD) + This function computes the kurtosis of the dataset DATA using the + given values of the mean MEAN and standard deviation SD, + + kurtosis = ((1/N) \sum ((x_i - mean)/sd)^4) - 3 + + This function is useful if you have already computed the mean and + standard deviation of DATA and want to avoid recomputing them.  ! File: gsl-ref.info, Node: Autocorrelation, Next: Covariance, Prev: Higher moments (skewness and kurtosis), Up: Statistics ! Autocorrelation =============== ! - Function: double gsl_stats_lag1_autocorrelation (const double ! DATA[], const size_t STRIDE, const size_t N) ! This function computes the lag-1 autocorrelation of the dataset ! DATA. ! ! a_1 = {\sum_{i = 1}^{n} (x_{i} - \Hat\mu) (x_{i-1} - \Hat\mu) ! \over ! \sum_{i = 1}^{n} (x_{i} - \Hat\mu) (x_{i} - \Hat\mu)} ! ! - Function: double gsl_stats_lag1_autocorrelation_m (const double ! DATA[], const size_t STRIDE, const size_t N, const double ! MEAN) ! This function computes the lag-1 autocorrelation of the dataset ! DATA using the given value of the mean MEAN. +  + File: gsl-ref.info, Node: Covariance, Next: Weighted Samples, Prev: Autocorrelation, Up: Statistics + + Covariance + ========== ! - Function: double gsl_stats_covariance (const double DATA1[], const ! size_t STRIDE1, const double DATA2[], const size_t STRIDE2, ! const size_t N) ! This function computes the covariance of the datasets DATA1 and ! DATA2 which must both be of the same length N. ! ! covar = (1/(n - 1)) \sum_{i = 1}^{n} (x_i - \Hat x) (y_i - \Hat y) ! ! ! - Function: double gsl_stats_covariance_m (const double DATA1[], const ! size_t STRIDE1, const double DATA2[], const size_t N, const ! double MEAN1, const double MEAN2) ! This function computes the covariance of the datasets DATA1 and ! DATA2 using the given values of the means, MEAN1 and MEAN2. This ! is useful if you have already computed the means of DATA1 and ! DATA2 and want to avoid recomputing them. !  ! File: gsl-ref.info, Node: Weighted Samples, Next: Maximum and Minimum values, Prev: Covariance, Up: Statistics ! Weighted Samples ! ================ + The functions described in this section allow the computation of + statistics for weighted samples. The functions accept an array of + samples, x_i, with associated weights, w_i. Each sample x_i is + considered as having been drawn from a Gaussian distribution with + variance \sigma_i^2. The sample weight w_i is defined as the + reciprocal of this variance, w_i = 1/\sigma_i^2. Setting a weight to + zero corresponds to removing a sample from a dataset. + + - Statistics: double gsl_stats_wmean (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N) + This function returns the weighted mean of the dataset DATA with + stride STRIDE and length N, using the set of weights W with stride + WSTRIDE and length N. The weighted mean is defined as, + + \Hat\mu = (\sum w_i x_i) / (\sum w_i) + + - Statistics: double gsl_stats_wvariance (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N) + This function returns the estimated variance of the dataset DATA + with stride STRIDE and length N, using the set of weights W with + stride WSTRIDE and length N. The estimated variance of a weighted + dataset is defined as, + + \Hat\sigma^2 = ((\sum w_i)/((\sum w_i)^2 - \sum (w_i^2))) + \sum w_i (x_i - \Hat\mu)^2 + + Note that this expression reduces to an unweighted variance with + the familiar 1/(N-1) factor when there are N equal non-zero + weights. + + - Statistics: double gsl_stats_wvariance_m (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N, double + WMEAN) + This function returns the estimated variance of the weighted + dataset DATA using the given weighted mean WMEAN. + + - Statistics: double gsl_stats_wsd (const double W[], size_t WSTRIDE, + const double DATA[], size_t STRIDE, size_t N) + The standard deviation is defined as the square root of the + variance. This function returns the square root of the + corresponding variance function `gsl_stats_wvariance' above. + + - Statistics: double gsl_stats_wsd_m (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N, double + WMEAN) + This function returns the square root of the corresponding variance + function `gsl_stats_wvariance_m' above. + + - Statistics: double gsl_stats_wvariance_with_fixed_mean (const double + W[], size_t WSTRIDE, const double DATA[], size_t STRIDE, + size_t N, const double MEAN) + This function computes an unbiased estimate of the variance of + weighted dataset DATA when the population mean MEAN of the + underlying distribution is known _a priori_. In this case the + estimator for the variance replaces the sample mean \Hat\mu by the + known population mean \mu, + + \Hat\sigma^2 = (\sum w_i (x_i - \mu)^2) / (\sum w_i) + + - Statistics: double gsl_stats_wsd_with_fixed_mean (const double W[], + size_t WSTRIDE, const double DATA[], size_t STRIDE, size_t N, + const double MEAN) + The standard deviation is defined as the square root of the + variance. This function returns the square root of the + corresponding variance function above. + + - Statistics: double gsl_stats_wabsdev (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N) + This function computes the weighted absolute deviation from the + weighted mean of DATA. The absolute deviation from the mean is + defined as, + + absdev = (\sum w_i |x_i - \Hat\mu|) / (\sum w_i) + + - Statistics: double gsl_stats_wabsdev_m (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N, double + WMEAN) + This function computes the absolute deviation of the weighted + dataset DATA about the given weighted mean WMEAN. + + - Statistics: double gsl_stats_wskew (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N) + This function computes the weighted skewness of the dataset DATA. + + skew = (\sum w_i ((x_i - xbar)/\sigma)^3) / (\sum w_i) + + - Statistics: double gsl_stats_wskew_m_sd (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N, double + WMEAN, double WSD) + This function computes the weighted skewness of the dataset DATA + using the given values of the weighted mean and weighted standard + deviation, WMEAN and WSD. + + - Statistics: double gsl_stats_wkurtosis (const double W[], size_t + WSTRIDE, const double DATA[], size_t STRIDE, size_t N) + This function computes the weighted kurtosis of the dataset DATA. + kurtosis = ((\sum w_i ((x_i - xbar)/sigma)^4) / (\sum w_i)) - 3 + + - Statistics: double gsl_stats_wkurtosis_m_sd (const double W[], + size_t WSTRIDE, const double DATA[], size_t STRIDE, size_t N, + double WMEAN, double WSD) + This function computes the weighted kurtosis of the dataset DATA + using the given values of the weighted mean and weighted standard + deviation, WMEAN and WSD.  ! File: gsl-ref.info, Node: Maximum and Minimum values, Next: Median and Percentiles, Prev: Weighted Samples, Up: Statistics ! Maximum and Minimum values ! ========================== ! - Statistics: double gsl_stats_max (const double DATA[], size_t ! STRIDE, size_t N) ! This function returns the maximum value in DATA, a dataset of ! length N with stride STRIDE. The maximum value is defined as the ! value of the element x_i which satisfies x_i >= x_j for all j. ! ! If you want instead to find the element with the largest absolute ! magnitude you will need to apply `fabs' or `abs' to your data ! before calling this function. ! ! - Statistics: double gsl_stats_min (const double DATA[], size_t ! STRIDE, size_t N) ! This function returns the minimum value in DATA, a dataset of ! length N with stride STRIDE. The minimum value is defined as the ! value of the element x_i which satisfies x_i <= x_j for all j. ! ! If you want instead to find the element with the smallest absolute ! magnitude you will need to apply `fabs' or `abs' to your data ! before calling this function. ! ! - Statistics: void gsl_stats_minmax (double * MIN, double * MAX, const ! double DATA[], size_t STRIDE, size_t N) ! This function finds both the minimum and maximum values MIN, MAX ! in DATA in a single pass. ! ! - Statistics: size_t gsl_stats_max_index (const double DATA[], size_t ! STRIDE, size_t N) ! This function returns the index of the maximum value in DATA, a ! dataset of length N with stride STRIDE. The maximum value is ! defined as the value of the element x_i which satisfies x_i >= x_j ! for all j. When there are several equal maximum elements then the ! first one is chosen. ! ! - Statistics: size_t gsl_stats_min_index (const double DATA[], size_t ! STRIDE, size_t N) ! This function returns the index of the minimum value in DATA, a ! dataset of length N with stride STRIDE. The minimum value is ! defined as the value of the element x_i which satisfies x_i >= x_j ! for all j. When there are several equal minimum elements then the ! first one is chosen. ! ! - Statistics: void gsl_stats_minmax_index (size_t * MIN_INDEX, size_t ! * MAX_INDEX, const double DATA[], size_t STRIDE, size_t N) ! This function returns the indexes MIN_INDEX, MAX_INDEX of the ! minimum and maximum values in DATA in a single pass. !  ! File: gsl-ref.info, Node: Median and Percentiles, Next: Example statistical programs, Prev: Maximum and Minimum values, Up: Statistics ! Median and Percentiles ! ====================== ! The median and percentile functions described in this section operate on ! sorted data. For convenience we use "quantiles", measured on a scale ! of 0 to 1, instead of percentiles (which use a scale of 0 to 100). ! ! - Statistics: double gsl_stats_median_from_sorted_data (const double ! SORTED_DATA[], size_t STRIDE, size_t N) ! This function returns the median value of SORTED_DATA, a dataset ! of length N with stride STRIDE. The elements of the array must be ! in ascending numerical order. There are no checks to see whether ! the data are sorted, so the function `gsl_sort' should always be ! used first. ! ! When the dataset has an odd number of elements the median is the ! value of element (n-1)/2. When the dataset has an even number of ! elements the median is the mean of the two nearest middle values, ! elements (n-1)/2 and n/2. Since the algorithm for computing the ! median involves interpolation this function always returns a ! floating-point number, even for integer data types. ! ! - Statistics: double gsl_stats_quantile_from_sorted_data (const double ! SORTED_DATA[], size_t STRIDE, size_t N, double F) ! This function returns a quantile value of SORTED_DATA, a ! double-precision array of length N with stride STRIDE. The ! elements of the array must be in ascending numerical order. The ! quantile is determined by the F, a fraction between 0 and 1. For ! example, to compute the value of the 75th percentile F should have ! the value 0.75. ! ! There are no checks to see whether the data are sorted, so the ! function `gsl_sort' should always be used first. ! ! The quantile is found by interpolation, using the formula ! ! quantile = (1 - \delta) x_i + \delta x_{i+1} ! ! where i is `floor'((n - 1)f) and \delta is (n-1)f - i. ! ! Thus the minimum value of the array (`data[0*stride]') is given by ! F equal to zero, the maximum value (`data[(n-1)*stride]') is given ! by F equal to one and the median value is given by F equal to 0.5. ! Since the algorithm for computing quantiles involves ! interpolation this function always returns a floating-point ! number, even for integer data types.  ! File: gsl-ref.info, Node: Example statistical programs, Next: Statistics References and Further Reading, Prev: Median and Percentiles, Up: Statistics Examples ======== ! Here is a basic example of how to use the statistical functions: ! ! #include ! #include ! ! int ! main(void) ! { ! double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; ! double mean, variance, largest, smallest; ! ! mean = gsl_stats_mean(data, 1, 5); ! variance = gsl_stats_variance(data, 1, 5); ! largest = gsl_stats_max(data, 1, 5); ! smallest = gsl_stats_min(data, 1, 5); ! ! printf ("The dataset is %g, %g, %g, %g, %g\n", ! data[0], data[1], data[2], data[3], data[4]); ! ! printf ("The sample mean is %g\n", mean); ! printf ("The estimated variance is %g\n", variance); ! printf ("The largest value is %g\n", largest); ! printf ("The smallest value is %g\n", smallest); ! return 0; ! } ! ! The program should produce the following output, ! The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 ! The sample mean is 16.54 ! The estimated variance is 4.2984 ! The largest value is 18.3 ! The smallest value is 12.6 ! Here is an example using sorted data, #include ! #include ! #include int ! main(void) { ! double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6}; ! double median, upperq, lowerq; ! printf ("Original dataset: %g, %g, %g, %g, %g\n", ! data[0], data[1], data[2], data[3], data[4]); ! gsl_sort (data, 1, 5); ! printf ("Sorted dataset: %g, %g, %g, %g, %g\n", ! data[0], data[1], data[2], data[3], data[4]); ! median ! = gsl_stats_median_from_sorted_data (data, ! 1, 5); + upperq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.75); + lowerq + = gsl_stats_quantile_from_sorted_data (data, + 1, 5, + 0.25); + + printf ("The median is %g\n", median); + printf ("The upper quartile is %g\n", upperq); + printf ("The lower quartile is %g\n", lowerq); return 0; } ! This program should produce the following output, ! Original dataset: 17.2, 18.1, 16.5, 18.3, 12.6 ! Sorted dataset: 12.6, 16.5, 17.2, 18.1, 18.3 ! The median is 17.2 ! The upper quartile is 18.1 ! The lower quartile is 16.5  ! File: gsl-ref.info, Node: Statistics References and Further Reading, Prev: Example statistical programs, Up: Statistics References and Further Reading ============================== ! The standard reference for almost any topic in statistics is the ! multi-volume `Advanced Theory of Statistics' by Kendall and Stuart. ! ! Maurice Kendall, Alan Stuart, and J. Keith Ord. `The Advanced ! Theory of Statistics' (multiple volumes) reprinted as `Kendall's ! Advanced Theory of Statistics'. Wiley, ISBN 047023380X. ! ! Many statistical concepts can be more easily understood by a Bayesian ! approach. The following book by Gelman, Carlin, Stern and Rubin gives a ! comprehensive coverage of the subject. ! ! Andrew Gelman, John B. Carlin, Hal S. Stern, Donald B. Rubin. ! `Bayesian Data Analysis'. Chapman & Hall, ISBN 0412039915. ! For physicists the Particle Data Group provides useful reviews of ! Probability and Statistics in the "Mathematical Tools" section of its ! Annual Review of Particle Physics. ! ! `Review of Particle Properties' R.M. Barnett et al., Physical ! Review D54, 1 (1996) ! ! The Review of Particle Physics is available online at ! . ! !  ! File: gsl-ref.info, Node: Histograms, Next: N-tuples, Prev: Statistics, Up: Top ! ! Histograms ! ********** ! ! This chapter describes functions for creating histograms. Histograms ! provide a convenient way of summarizing the distribution of a set of ! data. A histogram consists of a set of "bins" which count the number of ! events falling into a given range of a continuous variable x. In GSL ! the bins of a histogram contain floating-point numbers, so they can be ! used to record both integer and non-integer distributions. The bins ! can use arbitrary sets of ranges (uniformly spaced bins are the ! default). Both one and two-dimensional histograms are supported. ! ! Once a histogram has been created it can also be converted into a ! probability distribution function. The library provides efficient ! routines for selecting random samples from probability distributions. ! This can be useful for generating simulations based on real data. ! ! The functions are declared in the header files `gsl_histogram.h' and ! `gsl_histogram2d.h'. * Menu: ! * The histogram struct:: ! * Histogram allocation:: ! * Copying Histograms:: ! * Updating and accessing histogram elements:: ! * Searching histogram ranges:: ! * Histogram Statistics:: ! * Histogram Operations:: ! * Reading and writing histograms:: ! * Resampling from histograms:: ! * The histogram probability distribution struct:: ! * Example programs for histograms:: ! * Two dimensional histograms:: ! * The 2D histogram struct:: ! * 2D Histogram allocation:: ! * Copying 2D Histograms:: ! * Updating and accessing 2D histogram elements:: ! * Searching 2D histogram ranges:: ! * 2D Histogram Statistics:: ! * 2D Histogram Operations:: ! * Reading and writing 2D histograms:: ! * Resampling from 2D histograms:: ! * Example programs for 2D histograms::  ! File: gsl-ref.info, Node: The histogram struct, Next: Histogram allocation, Up: Histograms ! The histogram struct ! ==================== ! A histogram is defined by the following struct, ! - Data Type: gsl_histogram ! `size_t n' ! This is the number of histogram bins ! `double * range' ! The ranges of the bins are stored in an array of N+1 elements ! pointed to by RANGE. ! `double * bin' ! The counts for each bin are stored in an array of N elements ! pointed to by BIN. The bins are floating-point numbers, so ! you can increment them by non-integer values if necessary. ! ! The range for BIN[i] is given by RANGE[i] to RANGE[i+1]. For n bins ! there are n+1 entries in the array RANGE. Each bin is inclusive at the ! lower end and exclusive at the upper end. Mathematically this means ! that the bins are defined by the following inequality, ! ! bin[i] corresponds to range[i] <= x < range[i+1] ! ! Here is a diagram of the correspondence between ranges and bins on the ! number-line for x, ! ! ! [ bin[0] )[ bin[1] )[ bin[2] )[ bin[3] )[ bin[5] ) ! ---|---------|---------|---------|---------|---------|--- x ! r[0] r[1] r[2] r[3] r[4] r[5] ! ! In this picture the values of the RANGE array are denoted by r. On the ! left-hand side of each bin the square bracket "`['" denotes an ! inclusive lower bound (r <= x), and the round parentheses "`)'" on the ! right-hand side denote an exclusive upper bound (x < r). Thus any ! samples which fall on the upper end of the histogram are excluded. If ! you want to include this value for the last bin you will need to add an ! extra bin to your histogram. ! ! The `gsl_histogram' struct and its associated functions are defined ! in the header file `gsl_histogram.h'. ! !  ! File: gsl-ref.info, Node: Histogram allocation, Next: Copying Histograms, Prev: The histogram struct, Up: Histograms ! ! Histogram allocation ! ==================== ! ! The functions for allocating memory to a histogram follow the style of ! `malloc' and `free'. In addition they also perform their own error ! checking. If there is insufficient memory available to allocate a ! histogram then the functions call the error handler (with an error ! number of `GSL_ENOMEM') in addition to returning a null pointer. Thus ! if you use the library error handler to abort your program then it ! isn't necessary to check every histogram `alloc'. ! ! - Function: gsl_histogram * gsl_histogram_alloc (size_t N) ! This function allocates memory for a histogram with N bins, and ! returns a pointer to a newly created `gsl_histogram' struct. If ! insufficient memory is available a null pointer is returned and the ! error handler is invoked with an error code of `GSL_ENOMEM'. The ! bins and ranges are not initialized, and should be prepared using ! one of the range-setting functions below in order to make the ! histogram ready for use. ! ! - Function: int gsl_histogram_set_ranges (gsl_histogram * H, const ! double RANGE[], size_t SIZE) ! This function sets the ranges of the existing histogram H using ! the array RANGE of size SIZE. The values of the histogram bins ! are reset to zero. The `range' array should contain the desired ! bin limits. The ranges can be arbitrary, subject to the ! restriction that they are monotonically increasing. ! ! The following example shows how to create a histogram with ! logarithmic bins with ranges [1,10), [10,100) and [100,1000). ! ! gsl_histogram * h = gsl_histogram_alloc (3); ! ! /* bin[0] covers the range 1 <= x < 10 */ ! /* bin[1] covers the range 10 <= x < 100 */ ! /* bin[2] covers the range 100 <= x < 1000 */ ! ! double range[4] = { 1.0, 10.0, 100.0, 1000.0 }; ! ! gsl_histogram_set_ranges (h, range, 4); ! ! Note that the size of the RANGE array should be defined to be one ! element bigger than the number of bins. The additional element is ! required for the upper value of the final bin. ! ! - Function: int gsl_histogram_set_ranges_uniform (gsl_histogram * H, ! double XMIN, double XMAX) ! This function sets the ranges of the existing histogram H to cover ! the range XMIN to XMAX uniformly. The values of the histogram ! bins are reset to zero. The bin ranges are shown in the table ! below, ! ! bin[0] corresponds to xmin <= x < xmin + d ! bin[1] corresponds to xmin + d <= x < xmin + 2 d ! ...... ! bin[n-1] corresponds to xmin + (n-1)d <= x < xmax ! ! where d is the bin spacing, d = (xmax-xmin)/n. ! ! - Function: void gsl_histogram_free (gsl_histogram * H) ! This function frees the histogram H and all of the memory ! associated with it. ! !  ! File: gsl-ref.info, Node: Copying Histograms, Next: Updating and accessing histogram elements, Prev: Histogram allocation, Up: Histograms ! ! Copying Histograms ! ================== ! ! - Function: int gsl_histogram_memcpy (gsl_histogram * DEST, const ! gsl_histogram * SRC) ! This function copies the histogram SRC into the pre-existing ! histogram DEST, making DEST into an exact copy of SRC. The two ! histograms must be of the same size. ! ! - Function: gsl_histogram * gsl_histogram_clone (const gsl_histogram * ! SRC) ! This function returns a pointer to a newly created histogram which ! is an exact copy of the histogram SRC. ! !  ! File: gsl-ref.info, Node: Updating and accessing histogram elements, Next: Searching histogram ranges, Prev: Copying Histograms, Up: Histograms ! ! Updating and accessing histogram elements ! ========================================= ! ! There are two ways to access histogram bins, either by specifying an x ! coordinate or by using the bin-index directly. The functions for ! accessing the histogram through x coordinates use a binary search to ! identify the bin which covers the appropriate range. ! ! - Function: int gsl_histogram_increment (gsl_histogram * H, double X) ! This function updates the histogram H by adding one (1.0) to the ! bin whose range contains the coordinate X. ! ! If X lies in the valid range of the histogram then the function ! returns zero to indicate success. If X is less than the lower ! limit of the histogram then the function returns `GSL_EDOM', and ! none of bins are modified. Similarly, if the value of X is greater ! than or equal to the upper limit of the histogram then the function ! returns `GSL_EDOM', and none of the bins are modified. The error ! handler is not called, however, since it is often necessary to ! compute histograms for a small range of a larger dataset, ignoring ! the values outside the range of interest. ! ! - Function: int gsl_histogram_accumulate (gsl_histogram * H, double X, ! double WEIGHT) ! This function is similar to `gsl_histogram_increment' but increases ! the value of the appropriate bin in the histogram H by the ! floating-point number WEIGHT. ! ! - Function: double gsl_histogram_get (const gsl_histogram * H, size_t ! I) ! This function returns the contents of the I-th bin of the histogram ! H. If I lies outside the valid range of indices for the histogram ! then the error handler is called with an error code of `GSL_EDOM' ! and the function returns 0. ! ! - Function: int gsl_histogram_get_range (const gsl_histogram * H, ! size_t I, double * LOWER, double * UPPER) ! This function finds the upper and lower range limits of the I-th ! bin of the histogram H. If the index I is valid then the ! corresponding range limits are stored in LOWER and UPPER. The ! lower limit is inclusive (i.e. events with this coordinate are ! included in the bin) and the upper limit is exclusive (i.e. events ! with the coordinate of the upper limit are excluded and fall in the ! neighboring higher bin, if it exists). The function returns 0 to ! indicate success. If I lies outside the valid range of indices for ! the histogram then the error handler is called and the function ! returns an error code of `GSL_EDOM'. ! ! - Function: double gsl_histogram_max (const gsl_histogram * H) ! - Function: double gsl_histogram_min (const gsl_histogram * H) ! - Function: size_t gsl_histogram_bins (const gsl_histogram * H) ! These functions return the maximum upper and minimum lower range ! limits and the number of bins of the histogram H. They provide a ! way of determining these values without accessing the ! `gsl_histogram' struct directly. ! ! - Function: void gsl_histogram_reset (gsl_histogram * H) ! This function resets all the bins in the histogram H to zero.  ! File: gsl-ref.info, Node: Searching histogram ranges, Next: Histogram Statistics, Prev: Updating and accessing histogram elements, Up: Histograms ! ! Searching histogram ranges ! ========================== ! ! The following functions are used by the access and update routines to ! locate the bin which corresponds to a given x coordinate. ! - Function: int gsl_histogram_find (const gsl_histogram * H, double X, ! size_t * I) ! This function finds and sets the index I to the bin number which ! covers the coordinate X in the histogram H. The bin is located ! using a binary search. The search includes an optimization for ! histograms with uniform range, and will return the correct bin ! immediately in this case. If X is found in the range of the ! histogram then the function sets the index I and returns ! `GSL_SUCCESS'. If X lies outside the valid range of the histogram ! then the function returns `GSL_EDOM' and the error handler is ! invoked. !  ! File: gsl-ref.info, Node: Histogram Statistics, Next: Histogram Operations, Prev: Searching histogram ranges, Up: Histograms ! ! Histogram Statistics ! ==================== ! - Function: double gsl_histogram_max_val (const gsl_histogram * H) ! This function returns the maximum value contained in the histogram ! bins. ! ! - Function: size_t gsl_histogram_max_bin (const gsl_histogram * H) ! This function returns the index of the bin containing the maximum ! value. In the case where several bins contain the same maximum ! value the smallest index is returned. ! ! - Function: double gsl_histogram_min_val (const gsl_histogram * H) ! This function returns the minimum value contained in the histogram ! bins. ! ! - Function: size_t gsl_histogram_min_bin (const gsl_histogram * H) ! This function returns the index of the bin containing the minimum ! value. In the case where several bins contain the same maximum ! value the smallest index is returned. ! ! - Function: double gsl_histogram_mean (const gsl_histogram * H) ! This function returns the mean of the histogrammed variable, where ! the histogram is regarded as a probability distribution. Negative ! bin values are ignored for the purposes of this calculation. The ! accuracy of the result is limited by the bin width. ! ! - Function: double gsl_histogram_sigma (const gsl_histogram * H) ! This function returns the standard deviation of the histogrammed ! variable, where the histogram is regarded as a probability ! distribution. Negative bin values are ignored for the purposes of ! this calculation. The accuracy of the result is limited by the bin ! width. ! ! - Function: double gsl_histogram_sum (const gsl_histogram * H) ! This function returns the sum of all bin values. Negative bin ! values are included in the sum. !  ! File: gsl-ref.info, Node: Histogram Operations, Next: Reading and writing histograms, Prev: Histogram Statistics, Up: Histograms ! Histogram Operations ! ==================== ! - Function: int gsl_histogram_equal_bins_p (const gsl_histogram *H1, ! const gsl_histogram *H2) ! This function returns 1 if the all of the individual bin ranges of ! the two histograms are identical, and 0 otherwise. ! ! - Function: int gsl_histogram_add (gsl_histogram *H1, const ! gsl_histogram *H2) ! This function adds the contents of the bins in histogram H2 to the ! corresponding bins of histogram H1, i.e. h'_1(i) = h_1(i) + ! h_2(i). The two histograms must have identical bin ranges. ! ! - Function: int gsl_histogram_sub (gsl_histogram *H1, const ! gsl_histogram *H2) ! This function subtracts the contents of the bins in histogram H2 ! from the corresponding bins of histogram H1, i.e. h'_1(i) = h_1(i) ! - h_2(i). The two histograms must have identical bin ranges. ! ! - Function: int gsl_histogram_mul (gsl_histogram *H1, const ! gsl_histogram *H2) ! This function multiplies the contents of the bins of histogram H1 ! by the contents of the corresponding bins in histogram H2, i.e. ! h'_1(i) = h_1(i) * h_2(i). The two histograms must have identical ! bin ranges. ! ! - Function: int gsl_histogram_div (gsl_histogram *H1, const ! gsl_histogram *H2) ! This function divides the contents of the bins of histogram H1 by ! the contents of the corresponding bins in histogram H2, i.e. ! h'_1(i) = h_1(i) / h_2(i). The two histograms must have identical ! bin ranges. ! ! - Function: int gsl_histogram_scale (gsl_histogram *H, double SCALE) ! This function multiplies the contents of the bins of histogram H ! by the constant SCALE, i.e. h'_1(i) = h_1(i) * scale. ! ! - Function: int gsl_histogram_shift (gsl_histogram *H, double OFFSET) ! This function shifts the contents of the bins of histogram H by ! the constant OFFSET, i.e. h'_1(i) = h_1(i) + offset.  ! File: gsl-ref.info, Node: Reading and writing histograms, Next: Resampling from histograms, Prev: Histogram Operations, Up: Histograms ! Reading and writing histograms ============================== ! The library provides functions for reading and writing histograms to a ! file as binary data or formatted text. ! - Function: int gsl_histogram_fwrite (FILE * STREAM, const ! gsl_histogram * H) ! This function writes the ranges and bins of the histogram H to the ! stream STREAM in binary format. The return value is 0 for success ! and `GSL_EFAILED' if there was a problem writing to the file. ! Since the data is written in the native binary format it may not ! be portable between different architectures. ! ! - Function: int gsl_histogram_fread (FILE * STREAM, gsl_histogram * H) ! This function reads into the histogram H from the open stream ! STREAM in binary format. The histogram H must be preallocated ! with the correct size since the function uses the number of bins ! in H to determine how many bytes to read. The return value is 0 ! for success and `GSL_EFAILED' if there was a problem reading from ! the file. The data is assumed to have been written in the native ! binary format on the same architecture. ! ! - Function: int gsl_histogram_fprintf (FILE * STREAM, const ! gsl_histogram * H, const char * RANGE_FORMAT, const char * ! BIN_FORMAT) ! This function writes the ranges and bins of the histogram H ! line-by-line to the stream STREAM using the format specifiers ! RANGE_FORMAT and BIN_FORMAT. These should be one of the `%g', ! `%e' or `%f' formats for floating point numbers. The function ! returns 0 for success and `GSL_EFAILED' if there was a problem ! writing to the file. The histogram output is formatted in three ! columns, and the columns are separated by spaces, like this, ! ! range[0] range[1] bin[0] ! range[1] range[2] bin[1] ! range[2] range[3] bin[2] ! .... ! range[n-1] range[n] bin[n-1] ! ! The values of the ranges are formatted using RANGE_FORMAT and the ! value of the bins are formatted using BIN_FORMAT. Each line ! contains the lower and upper limit of the range of the bins and the ! value of the bin itself. Since the upper limit of one bin is the ! lower limit of the next there is duplication of these values ! between lines but this allows the histogram to be manipulated with ! line-oriented tools. ! ! - Function: int gsl_histogram_fscanf (FILE * STREAM, gsl_histogram * H) ! This function reads formatted data from the stream STREAM into the ! histogram H. The data is assumed to be in the three-column format ! used by `gsl_histogram_fprintf'. The histogram H must be ! preallocated with the correct length since the function uses the ! size of H to determine how many numbers to read. The function ! returns 0 for success and `GSL_EFAILED' if there was a problem ! reading from the file. !  ! File: gsl-ref.info, Node: Resampling from histograms, Next: The histogram probability distribution struct, Prev: Reading and writing histograms, Up: Histograms ! Resampling from histograms ! ========================== ! A histogram made by counting events can be regarded as a measurement of ! a probability distribution. Allowing for statistical error, the height ! of each bin represents the probability of an event where the value of x ! falls in the range of that bin. The probability distribution function ! has the one-dimensional form p(x)dx where, ! ! p(x) = n_i/ (N w_i) ! ! In this equation n_i is the number of events in the bin which contains ! x, w_i is the width of the bin and N is the total number of events. ! The distribution of events within each bin is assumed to be uniform.  ! File: gsl-ref.info, Node: The histogram probability distribution struct, Next: Example programs for histograms, Prev: Resampling from histograms, Up: Histograms ! The histogram probability distribution struct ! ============================================= ! The probability distribution function for a histogram consists of a set ! of "bins" which measure the probability of an event falling into a ! given range of a continuous variable x. A probability distribution ! function is defined by the following struct, which actually stores the ! cumulative probability distribution function. This is the natural ! quantity for generating samples via the inverse transform method, ! because there is a one-to-one mapping between the cumulative ! probability distribution and the range [0,1]. It can be shown that by ! taking a uniform random number in this range and finding its ! corresponding coordinate in the cumulative probability distribution we ! obtain samples with the desired probability distribution. ! ! - Data Type: gsl_histogram_pdf ! `size_t n' ! This is the number of bins used to approximate the probability ! distribution function. ! ! `double * range' ! The ranges of the bins are stored in an array of N+1 elements ! pointed to by RANGE. ! ! `double * sum' ! The cumulative probability for the bins is stored in an array ! of N elements pointed to by SUM. ! ! The following functions allow you to create a `gsl_histogram_pdf' ! struct which represents this probability distribution and generate ! random samples from it. ! ! - Function: gsl_histogram_pdf * gsl_histogram_pdf_alloc (size_t N) ! This function allocates memory for a probability distribution with ! N bins and returns a pointer to a newly initialized ! `gsl_histogram_pdf' struct. If insufficient memory is available a ! null pointer is returned and the error handler is invoked with an ! error code of `GSL_ENOMEM'. ! ! - Function: int gsl_histogram_pdf_init (gsl_histogram_pdf * P, const ! gsl_histogram * H) ! This function initializes the probability distribution P with the ! contents of the histogram H. If any of the bins of H are negative ! then the error handler is invoked with an error code of `GSL_EDOM' ! because a probability distribution cannot contain negative values. ! ! - Function: void gsl_histogram_pdf_free (gsl_histogram_pdf * P) ! This function frees the probability distribution function P and ! all of the memory associated with it. ! ! - Function: double gsl_histogram_pdf_sample (const gsl_histogram_pdf * ! P, double R) ! This function uses R, a uniform random number between zero and ! one, to compute a single random sample from the probability ! distribution P. The algorithm used to compute the sample s is ! given by the following formula, ! s = range[i] + delta * (range[i+1] - range[i]) ! ! where i is the index which satisfies sum[i] <= r < sum[i+1] and ! delta is (r - sum[i])/(sum[i+1] - sum[i]). ! !  ! File: gsl-ref.info, Node: Example programs for histograms, Next: Two dimensional histograms, Prev: The histogram probability distribution struct, Up: Histograms ! ! Example programs for histograms ! =============================== ! ! The following program shows how to make a simple histogram of a column ! of numerical data supplied on `stdin'. The program takes three ! arguments, specifying the upper and lower bounds of the histogram and ! the number of bins. It then reads numbers from `stdin', one line at a ! time, and adds them to the histogram. When there is no more data to ! read it prints out the accumulated histogram using ! `gsl_histogram_fprintf'. ! ! #include ! #include ! #include ! ! int ! main (int argc, char **argv) ! { ! double a, b; ! size_t n; ! ! if (argc != 4) ! { ! printf ("Usage: gsl-histogram xmin xmax n\n" ! "Computes a histogram of the data " ! "on stdin using n bins from xmin " ! "to xmax\n"); ! exit (0); ! } ! ! a = atof (argv[1]); ! b = atof (argv[2]); ! n = atoi (argv[3]); ! ! { ! double x; ! ! gsl_histogram * h = gsl_histogram_alloc (n); ! ! gsl_histogram_set_ranges_uniform (h, a, b); ! ! while (fscanf (stdin, "%lg", &x) == 1) ! { ! gsl_histogram_increment (h, x); ! } ! ! gsl_histogram_fprintf (stdout, h, "%g", "%g"); ! ! gsl_histogram_free (h); ! } ! ! exit (0); ! } ! ! Here is an example of the program in use. We generate 10000 random ! samples from a Cauchy distribution with a width of 30 and histogram ! them over the range -100 to 100, using 200 bins. ! ! $ gsl-randist 0 10000 cauchy 30 ! | gsl-histogram -100 100 200 > histogram.dat ! ! A plot of the resulting histogram shows the familiar shape of the ! Cauchy distribution and the fluctuations caused by the finite sample ! size. ! ! $ awk '{print $1, $3 ; print $2, $3}' histogram.dat ! | graph -T X ! !  ! File: gsl-ref.info, Node: Two dimensional histograms, Next: The 2D histogram struct, Prev: Example programs for histograms, Up: Histograms ! ! Two dimensional histograms ! ========================== ! ! A two dimensional histogram consists of a set of "bins" which count the ! number of events falling in a given area of the (x,y) plane. The ! simplest way to use a two dimensional histogram is to record ! two-dimensional position information, n(x,y). Another possibility is ! to form a "joint distribution" by recording related variables. For ! example a detector might record both the position of an event (x) and ! the amount of energy it deposited E. These could be histogrammed as ! the joint distribution n(x,E). ! !  ! File: gsl-ref.info, Node: The 2D histogram struct, Next: 2D Histogram allocation, Prev: Two dimensional histograms, Up: Histograms ! ! The 2D histogram struct ! ======================= ! ! Two dimensional histograms are defined by the following struct, ! ! - Data Type: gsl_histogram2d ! `size_t nx, ny' ! This is the number of histogram bins in the x and y ! directions. ! ! `double * xrange' ! The ranges of the bins in the x-direction are stored in an ! array of NX + 1 elements pointed to by XRANGE. ! ! `double * yrange' ! The ranges of the bins in the y-direction are stored in an ! array of NY + 1 pointed to by YRANGE. ! ! `double * bin' ! The counts for each bin are stored in an array pointed to by ! BIN. The bins are floating-point numbers, so you can ! increment them by non-integer values if necessary. The array ! BIN stores the two dimensional array of bins in a single ! block of memory according to the mapping `bin(i,j)' = `bin[i ! * ny + j]'. ! ! The range for `bin(i,j)' is given by `xrange[i]' to `xrange[i+1]' in ! the x-direction and `yrange[j]' to `yrange[j+1]' in the y-direction. ! Each bin is inclusive at the lower end and exclusive at the upper end. ! Mathematically this means that the bins are defined by the following ! inequality, ! ! bin(i,j) corresponds to xrange[i] <= x < xrange[i+1] ! and yrange[j] <= y < yrange[j+1] ! ! Note that any samples which fall on the upper sides of the histogram are ! excluded. If you want to include these values for the side bins you ! will need to add an extra row or column to your histogram. ! ! The `gsl_histogram2d' struct and its associated functions are ! defined in the header file `gsl_histogram2d.h'. ! !  ! File: gsl-ref.info, Node: 2D Histogram allocation, Next: Copying 2D Histograms, Prev: The 2D histogram struct, Up: Histograms ! ! 2D Histogram allocation ! ======================= ! ! The functions for allocating memory to a 2D histogram follow the style ! of `malloc' and `free'. In addition they also perform their own error ! checking. If there is insufficient memory available to allocate a ! histogram then the functions call the error handler (with an error ! number of `GSL_ENOMEM') in addition to returning a null pointer. Thus ! if you use the library error handler to abort your program then it ! isn't necessary to check every 2D histogram `alloc'. ! ! - Function: gsl_histogram2d * gsl_histogram2d_alloc (size_t NX, size_t ! NY) ! This function allocates memory for a two-dimensional histogram with ! NX bins in the x direction and NY bins in the y direction. The ! function returns a pointer to a newly created `gsl_histogram2d' ! struct. If insufficient memory is available a null pointer is ! returned and the error handler is invoked with an error code of ! `GSL_ENOMEM'. The bins and ranges must be initialized with one of ! the functions below before the histogram is ready for use. ! ! - Function: int gsl_histogram2d_set_ranges (gsl_histogram2d * H, const ! double XRANGE[], size_t XSIZE, const double YRANGE[], size_t ! YSIZE) ! This function sets the ranges of the existing histogram H using ! the arrays XRANGE and YRANGE of size XSIZE and YSIZE respectively. ! The values of the histogram bins are reset to zero. ! ! - Function: int gsl_histogram2d_set_ranges_uniform (gsl_histogram2d * ! H, double XMIN, double XMAX, double YMIN, double YMAX) ! This function sets the ranges of the existing histogram H to cover ! the ranges XMIN to XMAX and YMIN to YMAX uniformly. The values of ! the histogram bins are reset to zero. ! ! - Function: void gsl_histogram2d_free (gsl_histogram2d * H) ! This function frees the 2D histogram H and all of the memory ! associated with it. ! !  ! File: gsl-ref.info, Node: Copying 2D Histograms, Next: Updating and accessing 2D histogram elements, Prev: 2D Histogram allocation, Up: Histograms ! ! Copying 2D Histograms ! ===================== ! - Function: int gsl_histogram2d_memcpy (gsl_histogram2d * DEST, const ! gsl_histogram2d * SRC) ! This function copies the histogram SRC into the pre-existing ! histogram DEST, making DEST into an exact copy of SRC. The two ! histograms must be of the same size. ! ! - Function: gsl_histogram2d * gsl_histogram2d_clone (const ! gsl_histogram2d * SRC) ! This function returns a pointer to a newly created histogram which ! is an exact copy of the histogram SRC. Only in gsl-1.3/doc: gsl-ref.info-20 Only in gsl-1.3/doc: gsl-ref.info-21 Only in gsl-1.3/doc: gsl-ref.info-22 Only in gsl-1.3/doc: gsl-ref.info-23 diff -x.info* -rc2P gsl-1.3/doc/gsl-ref.info-3 gsl-1.4/doc/gsl-ref.info-3 *** gsl-1.3/doc/gsl-ref.info-3 Wed Dec 18 22:41:19 2002 --- gsl-1.4/doc/gsl-ref.info-3 Thu Aug 14 12:36:46 2003 *************** *** 1,3 **** ! This is gsl-ref.info, produced by makeinfo version 4.2 from gsl-ref.texi. --- 1,3 ---- ! This is gsl-ref.info, produced by makeinfo version 4.6 from gsl-ref.texi. *************** *** 8,1092 ****  ! File: gsl-ref.info, Node: Irregular Spherical Bessel Functions, Next: Regular Modified Spherical Bessel Functions, Prev: Regular Spherical Bessel Functions, Up: Bessel Functions ! Irregular Spherical Bessel Functions ! ------------------------------------ ! - Function: double gsl_sf_bessel_y0 (double X) ! - Function: int gsl_sf_bessel_y0_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular spherical Bessel function of ! zeroth order, y_0(x) = -\cos(x)/x. ! ! - Function: double gsl_sf_bessel_y1 (double X) ! - Function: int gsl_sf_bessel_y1_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular spherical Bessel function of ! first order, y_1(x) = -(\cos(x)/x + \sin(x))/x. ! ! - Function: double gsl_sf_bessel_y2 (double X) ! - Function: int gsl_sf_bessel_y2_e (double X, gsl_sf_result * RESULT) ! These routines compute the irregular spherical Bessel function of ! second order, y_2(x) = (-3/x^2 + 1/x)\cos(x) - (3/x^2)\sin(x). ! ! - Function: double gsl_sf_bessel_yl (int L, double X) ! - Function: int gsl_sf_bessel_yl_e (int L, double X, gsl_sf_result * ! RESULT) ! These routines compute the irregular spherical Bessel function of ! order L, y_l(x), for l >= 0. ! ! - Function: int gsl_sf_bessel_yl_array (int LMAX, double X, double ! RESULT_ARRAY[]) ! This routine computes the values of the irregular spherical Bessel ! functions y_l(x) for l from 0 to LMAX inclusive for lmax >= 0, ! storing the results in the array RESULT_ARRAY. The values are ! computed using recurrence relations, for efficiency, and therefore ! may differ slightly from the exact values. ! !  ! File: gsl-ref.info, Node: Regular Modified Spherical Bessel Functions, Next: Irregular Modified Spherical Bessel Functions, Prev: Irregular Spherical Bessel Functions, Up: Bessel Functions ! ! Regular Modified Spherical Bessel Functions ! ------------------------------------------- ! ! The regular modified spherical Bessel functions i_l(x) are related ! to the modified Bessel functions of fractional order, i_l(x) = ! \sqrt{\pi/(2x)} I_{l+1/2}(x) ! ! - Function: double gsl_sf_bessel_i0_scaled (double X) ! - Function: int gsl_sf_bessel_i0_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled regular modified spherical Bessel ! function of zeroth order, \exp(-|x|) i_0(x). ! ! - Function: double gsl_sf_bessel_i1_scaled (double X) ! - Function: int gsl_sf_bessel_i1_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled regular modified spherical Bessel ! function of first order, \exp(-|x|) i_1(x). ! ! - Function: double gsl_sf_bessel_i2_scaled (double X) ! - Function: int gsl_sf_bessel_i2_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled regular modified spherical Bessel ! function of second order, \exp(-|x|) i_2(x) ! ! - Function: double gsl_sf_bessel_il_scaled (int L, double X) ! - Function: int gsl_sf_bessel_il_scaled_e (int L, double X, ! gsl_sf_result * RESULT) ! These routines compute the scaled regular modified spherical Bessel ! function of order L, \exp(-|x|) i_l(x) ! ! - Function: int gsl_sf_bessel_il_scaled_array (int LMAX, double X, ! double RESULT_ARRAY[]) ! This routine computes the values of the scaled regular modified ! cylindrical Bessel functions \exp(-|x|) i_l(x) for l from 0 to ! LMAX inclusive for lmax >= 0, storing the results in the array ! RESULT_ARRAY. The values are computed using recurrence relations, ! for efficiency, and therefore may differ slightly from the exact ! values. ! !  ! File: gsl-ref.info, Node: Irregular Modified Spherical Bessel Functions, Next: Regular Bessel Function - Fractional Order, Prev: Regular Modified Spherical Bessel Functions, Up: Bessel Functions ! ! Irregular Modified Spherical Bessel Functions ! --------------------------------------------- ! ! The irregular modified spherical Bessel functions k_l(x) are related ! to the irregular modified Bessel functions of fractional order, k_l(x) ! = \sqrt{\pi/(2x)} K_{l+1/2}(x). ! ! - Function: double gsl_sf_bessel_k0_scaled (double X) ! - Function: int gsl_sf_bessel_k0_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled irregular modified spherical ! Bessel function of zeroth order, \exp(x) k_0(x), for x>0. ! ! - Function: double gsl_sf_bessel_k1_scaled (double X) ! - Function: int gsl_sf_bessel_k1_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled irregular modified spherical ! Bessel function of first order, \exp(x) k_1(x), for x>0. ! ! - Function: double gsl_sf_bessel_k2_scaled (double X) ! - Function: int gsl_sf_bessel_k2_scaled_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the scaled irregular modified spherical ! Bessel function of second order, \exp(x) k_2(x), for x>0. ! ! - Function: double gsl_sf_bessel_kl_scaled (int L, double X) ! - Function: int gsl_sf_bessel_kl_scaled_e (int L, double X, ! gsl_sf_result * RESULT) ! These routines compute the scaled irregular modified spherical ! Bessel function of order L, \exp(x) k_l(x), for x>0. ! ! - Function: int gsl_sf_bessel_kl_scaled_array (int LMAX, double X, ! double RESULT_ARRAY[]) ! This routine computes the values of the scaled irregular modified ! spherical Bessel functions \exp(x) k_l(x) for l from 0 to LMAX ! inclusive for lmax >= 0 and x>0, storing the results in the array ! RESULT_ARRAY. The values are computed using recurrence relations, ! for efficiency, and therefore may differ slightly from the exact ! values. ! !  ! File: gsl-ref.info, Node: Regular Bessel Function - Fractional Order, Next: Irregular Bessel Functions - Fractional Order, Prev: Irregular Modified Spherical Bessel Functions, Up: Bessel Functions ! ! Regular Bessel Function - Fractional Order ! ------------------------------------------ ! ! - Function: double gsl_sf_bessel_Jnu (double NU, double X) ! - Function: int gsl_sf_bessel_Jnu_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the regular cylindrical Bessel function of ! fractional order nu, J_\nu(x). ! ! - Function: int gsl_sf_bessel_sequence_Jnu_e (double NU, gsl_mode_t ! MODE, size_t SIZE, double V[]) ! This function computes the regular cylindrical Bessel function of ! fractional order \nu, J_\nu(x), evaluated at a series of x values. ! The array V of length SIZE contains the x values. They are ! assumed to be strictly ordered and positive. The array is ! over-written with the values of J_\nu(x_i). ! !  ! File: gsl-ref.info, Node: Irregular Bessel Functions - Fractional Order, Next: Regular Modified Bessel Functions - Fractional Order, Prev: Regular Bessel Function - Fractional Order, Up: Bessel Functions ! ! Irregular Bessel Functions - Fractional Order ! --------------------------------------------- ! ! - Function: double gsl_sf_bessel_Ynu (double NU, double X) ! - Function: int gsl_sf_bessel_Ynu_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the irregular cylindrical Bessel function of ! fractional order nu, Y_\nu(x). ! !  ! File: gsl-ref.info, Node: Regular Modified Bessel Functions - Fractional Order, Next: Irregular Modified Bessel Functions - Fractional Order, Prev: Irregular Bessel Functions - Fractional Order, Up: Bessel Functions ! ! Regular Modified Bessel Functions - Fractional Order ! ---------------------------------------------------- ! ! - Function: double gsl_sf_bessel_Inu (double NU, double X) ! - Function: int gsl_sf_bessel_Inu_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the regular modified Bessel function of ! fractional order nu, I_\nu(x) for x>0, \nu>0. ! ! - Function: double gsl_sf_bessel_Inu_scaled (double NU, double X) ! - Function: int gsl_sf_bessel_Inu_scaled_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the scaled regular modified Bessel function ! of fractional order nu, \exp(-|x|)I_\nu(x) for x>0, \nu>0. ! !  ! File: gsl-ref.info, Node: Irregular Modified Bessel Functions - Fractional Order, Next: Zeros of Regular Bessel Functions, Prev: Regular Modified Bessel Functions - Fractional Order, Up: Bessel Functions ! ! Irregular Modified Bessel Functions - Fractional Order ! ------------------------------------------------------ ! ! - Function: double gsl_sf_bessel_Knu (double NU, double X) ! - Function: int gsl_sf_bessel_Knu_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the irregular modified Bessel function of ! fractional order nu, K_\nu(x) for x>0, \nu>0. ! ! - Function: double gsl_sf_bessel_lnKnu (double NU, double X) ! - Function: int gsl_sf_bessel_lnKnu_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the logarithm of the irregular modified ! Bessel function of fractional order nu, \ln(K_\nu(x)) for x>0, ! \nu>0. ! ! - Function: double gsl_sf_bessel_Knu_scaled (double NU, double X) ! - Function: int gsl_sf_bessel_Knu_scaled_e (double NU, double X, ! gsl_sf_result * RESULT) ! These routines compute the scaled irregular modified Bessel ! function of fractional order nu, \exp(+|x|) K_\nu(x) for x>0, ! \nu>0. ! !  ! File: gsl-ref.info, Node: Zeros of Regular Bessel Functions, Prev: Irregular Modified Bessel Functions - Fractional Order, Up: Bessel Functions ! ! Zeros of Regular Bessel Functions ! --------------------------------- ! ! - Function: double gsl_sf_bessel_zero_J0 (unsigned int S) ! - Function: int gsl_sf_bessel_zero_J0_e (unsigned int S, gsl_sf_result ! * RESULT) ! These routines compute the location of the S-th positive zero of ! the Bessel function J_0(x). ! ! - Function: double gsl_sf_bessel_zero_J1 (unsigned int S) ! - Function: int gsl_sf_bessel_zero_J1_e (unsigned int S, gsl_sf_result ! * RESULT) ! These routines compute the location of the S-th positive zero of ! the Bessel function J_1(x). ! ! - Function: double gsl_sf_bessel_zero_Jnu (double NU, unsigned int S) ! - Function: int gsl_sf_bessel_zero_Jnu_e (double NU, unsigned int S, ! gsl_sf_result * RESULT) ! These routines compute the location of the S-th positive zero of ! the Bessel function J_\nu(x).  ! File: gsl-ref.info, Node: Clausen Functions, Next: Coulomb Functions, Prev: Bessel Functions, Up: Special Functions ! Clausen Functions ================= ! The Clausen function is defined by the following integral, ! Cl_2(x) = - \int_0^x dt \log(2 \sin(t/2)) ! It is related to the dilogarithm by Cl_2(\theta) = \Im Li_2(\exp(i ! \theta)). The Clausen functions are declared in the header file ! `gsl_sf_clausen.h'. ! - Function: double gsl_sf_clausen (double X) ! - Function: int gsl_sf_clausen_e (double X, gsl_sf_result * RESULT) ! These routines compute the Clausen integral Cl_2(x).  ! File: gsl-ref.info, Node: Coulomb Functions, Next: Coupling Coefficients, Prev: Clausen Functions, Up: Special Functions ! Coulomb Functions ! ================= ! The Coulomb functions are declared in the header file ! `gsl_sf_coulomb.h'. Both bound state and scattering solutions are ! available. ! * Menu: ! * Normalized Hydrogenic Bound States:: ! * Coulomb Wave Functions:: ! * Coulomb Wave Function Normalization Constant:: ! !  ! File: gsl-ref.info, Node: Normalized Hydrogenic Bound States, Next: Coulomb Wave Functions, Up: Coulomb Functions ! ! Normalized Hydrogenic Bound States ! ---------------------------------- ! ! - Function: double gsl_sf_hydrogenicR_1 (double Z, double R) ! - Function: int gsl_sf_hydrogenicR_1_e (double Z, double R, ! gsl_sf_result * RESULT) ! These routines compute the lowest-order normalized hydrogenic bound ! state radial wavefunction R_1 := 2Z \sqrt{Z} \exp(-Z r). ! ! - Function: double gsl_sf_hydrogenicR (int N, int L, double Z, double ! R) ! - Function: int gsl_sf_hydrogenicR_e (int N, int L, double Z, double ! R, gsl_sf_result * RESULT) ! These routines compute the N-th normalized hydrogenic bound state ! radial wavefunction, ! R_n := 2 (Z^{3/2}/n^2) \sqrt{(n-l-1)!/(n+l)!} \exp(-Z r/n) (2Z/n)^l ! L^{2l+1}_{n-l-1}(2Z/n r). ! ! The normalization is chosen such that the wavefunction \psi is ! given by \psi(n,l,r) = R_n Y_{lm}. ! !  ! File: gsl-ref.info, Node: Coulomb Wave Functions, Next: Coulomb Wave Function Normalization Constant, Prev: Normalized Hydrogenic Bound States, Up: Coulomb Functions ! ! Coulomb Wave Functions ! ---------------------- ! ! The Coulomb wave functions F_L(\eta,x), G_L(\eta,x) are described in ! Abramowitz & Stegun, Chapter 14. Because there can be a large dynamic ! range of values for these functions, overflows are handled gracefully. ! If an overflow occurs, `GSL_EOVRFLW' is signalled and exponent(s) are ! returned through the modifiable parameters EXP_F, EXP_G. The full ! solution can be reconstructed from the following relations, ! ! F_L(eta,x) = fc[k_L] * exp(exp_F) ! G_L(eta,x) = gc[k_L] * exp(exp_G) ! ! F_L'(eta,x) = fcp[k_L] * exp(exp_F) ! G_L'(eta,x) = gcp[k_L] * exp(exp_G) ! ! - Function: int gsl_sf_coulomb_wave_FG_e (double ETA, double X, double ! L_F, int K, gsl_sf_result * F, gsl_sf_result * FP, ! gsl_sf_result * G, gsl_sf_result * GP, double * EXP_F, double ! * EXP_G) ! This function computes the coulomb wave functions F_L(\eta,x), ! G_{L-k}(\eta,x) and their derivatives with respect to x, ! F'_L(\eta,x) G'_{L-k}(\eta,x). The parameters are restricted to L, ! L-k > -1/2, x > 0 and integer k. Note that L itself is not ! restricted to being an integer. The results are stored in the ! parameters F, G for the function values and FP, GP for the ! derivative values. If an overflow occurs, `GSL_EOVRFLW' is ! returned and scaling exponents are stored in the modifiable ! parameters EXP_F, EXP_G. ! ! - Function: int gsl_sf_coulomb_wave_F_array (double L_MIN, int KMAX, ! double ETA, double X, double FC_ARRAY[], double * F_EXPONENT) ! This function computes the function F_L(eta,x) for L = Lmin \dots ! Lmin + kmax storing the results in FC_ARRAY. In the case of ! overflow the exponent is stored in F_EXPONENT. ! ! - Function: int gsl_sf_coulomb_wave_FG_array (double L_MIN, int KMAX, ! double ETA, double X, double FC_ARRAY[], double GC_ARRAY[], ! double * F_EXPONENT, double * G_EXPONENT) ! This function computes the functions F_L(\eta,x), G_L(\eta,x) for ! L = Lmin \dots Lmin + kmax storing the results in FC_ARRAY and ! GC_ARRAY. In the case of overflow the exponents are stored in ! F_EXPONENT and G_EXPONENT. ! ! - Function: int gsl_sf_coulomb_wave_FGp_array (double L_MIN, int KMAX, ! double ETA, double X, double FC_ARRAY[], double FCP_ARRAY[], ! double GC_ARRAY[], double GCP_ARRAY[], double * F_EXPONENT, ! double * G_EXPONENT) ! This function computes the functions F_L(\eta,x), G_L(\eta,x) and ! their derivatives F'_L(\eta,x), G'_L(\eta,x) for L = Lmin \dots ! Lmin + kmax storing the results in FC_ARRAY, GC_ARRAY, FCP_ARRAY ! and GCP_ARRAY. In the case of overflow the exponents are stored ! in F_EXPONENT and G_EXPONENT. ! ! - Function: int gsl_sf_coulomb_wave_sphF_array (double L_MIN, int ! KMAX, double ETA, double X, double FC_ARRAY[], double ! F_EXPONENT[]) ! This function computes the Coulomb wave function divided by the ! argument F_L(\eta, x)/x for L = Lmin \dots Lmin + kmax, storing the ! results in FC_ARRAY. In the case of overflow the exponent is ! stored in F_EXPONENT. This function reduces to spherical Bessel ! functions in the limit \eta \to 0. ! !  ! File: gsl-ref.info, Node: Coulomb Wave Function Normalization Constant, Prev: Coulomb Wave Functions, Up: Coulomb Functions ! ! Coulomb Wave Function Normalization Constant ! -------------------------------------------- ! ! The Coulomb wave function normalization constant is defined in ! Abramowitz 14.1.7. ! ! - Function: int gsl_sf_coulomb_CL_e (double L, double ETA, ! gsl_sf_result * RESULT) ! This function computes the Coulomb wave function normalization ! constant C_L(\eta) for L > -1. ! ! - Function: int gsl_sf_coulomb_CL_array (double LMIN, int KMAX, double ! ETA, double CL[]) ! This function computes the coulomb wave function normalization ! constant C_L(\eta) for L = Lmin \dots Lmin + kmax, Lmin > -1.  ! File: gsl-ref.info, Node: Coupling Coefficients, Next: Dawson Function, Prev: Coulomb Functions, Up: Special Functions ! Coupling Coefficients ! ===================== ! The Wigner 3-j, 6-j and 9-j symbols give the coupling coefficients ! for combined angular momentum vectors. Since the arguments of the ! standard coupling coefficient functions are integer or half-integer, the ! arguments of the following functions are, by convention, integers equal ! to twice the actual spin value. For information on the 3-j coefficients ! see Abramowitz & Stegun, Section 27.9. The functions described in this ! section are declared in the header file `gsl_sf_coupling.h'. ! * Menu: ! * 3-j Symbols:: ! * 6-j Symbols:: ! * 9-j Symbols::  ! File: gsl-ref.info, Node: 3-j Symbols, Next: 6-j Symbols, Up: Coupling Coefficients ! 3-j Symbols ! ----------- ! - Function: double gsl_sf_coupling_3j (int TWO_JA, int TWO_JB, int ! TWO_JC, int TWO_MA, int TWO_MB, int TWO_MC) ! - Function: int gsl_sf_coupling_3j_e (int TWO_JA, int TWO_JB, int ! TWO_JC, int TWO_MA, int TWO_MB, int TWO_MC, gsl_sf_result * ! RESULT) ! These routines compute the Wigner 3-j coefficient, ! (ja jb jc ! ma mb mc) ! where the arguments are given in half-integer units, ja = ! TWO_JA/2, ma = TWO_MA/2, etc.  ! File: gsl-ref.info, Node: 6-j Symbols, Next: 9-j Symbols, Prev: 3-j Symbols, Up: Coupling Coefficients ! 6-j Symbols ! ----------- ! - Function: double gsl_sf_coupling_6j (int TWO_JA, int TWO_JB, int ! TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF) ! - Function: int gsl_sf_coupling_6j_e (int TWO_JA, int TWO_JB, int ! TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF, gsl_sf_result * ! RESULT) ! These routines compute the Wigner 6-j coefficient, ! {ja jb jc ! jd je jf} ! where the arguments are given in half-integer units, ja = ! TWO_JA/2, ma = TWO_MA/2, etc.  ! File: gsl-ref.info, Node: 9-j Symbols, Prev: 6-j Symbols, Up: Coupling Coefficients ! 9-j Symbols ! ----------- ! - Function: double gsl_sf_coupling_9j (int TWO_JA, int TWO_JB, int ! TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF, int TWO_JG, int ! TWO_JH, int TWO_JI) ! - Function: int gsl_sf_coupling_9j_e (int TWO_JA, int TWO_JB, int ! TWO_JC, int TWO_JD, int TWO_JE, int TWO_JF, int TWO_JG, int ! TWO_JH, int TWO_JI, gsl_sf_result * RESULT) ! These routines compute the Wigner 9-j coefficient, ! {ja jb jc ! jd je jf ! jg jh ji} ! where the arguments are given in half-integer units, ja = ! TWO_JA/2, ma = TWO_MA/2, etc. !  ! File: gsl-ref.info, Node: Dawson Function, Next: Debye Functions, Prev: Coupling Coefficients, Up: Special Functions ! Dawson Function ! =============== ! The Dawson integral is defined by \exp(-x^2) \int_0^x dt \exp(t^2). ! A table of Dawson's integral can be found in Abramowitz & Stegun, Table ! 7.5. The Dawson functions are declared in the header file ! `gsl_sf_dawson.h'. ! - Function: double gsl_sf_dawson (double X) ! - Function: int gsl_sf_dawson_e (double X, gsl_sf_result * RESULT) ! These routines compute the value of Dawson's integral for X. !  ! File: gsl-ref.info, Node: Debye Functions, Next: Dilogarithm, Prev: Dawson Function, Up: Special Functions ! Debye Functions ! =============== ! The Debye functions are defined by the integral D_n(x) = n/x^n ! \int_0^x dt (t^n/(e^t - 1)). For further information see Abramowitz & ! Stegun, Section 27.1. The Debye functions are declared in the header ! file `gsl_sf_debye.h'. ! ! - Function: double gsl_sf_debye_1 (double X) ! - Function: int gsl_sf_debye_1_e (double X, gsl_sf_result * RESULT) ! These routines compute the first-order Debye function D_1(x) = ! (1/x) \int_0^x dt (t/(e^t - 1)). ! ! - Function: double gsl_sf_debye_2 (double X) ! - Function: int gsl_sf_debye_2_e (double X, gsl_sf_result * RESULT) ! These routines compute the second-order Debye function D_2(x) = ! (2/x^2) \int_0^x dt (t^2/(e^t - 1)). ! ! - Function: double gsl_sf_debye_3 (double X) ! - Function: int gsl_sf_debye_3_e (double X, gsl_sf_result * RESULT) ! These routines compute the third-order Debye function D_3(x) = ! (3/x^3) \int_0^x dt (t^3/(e^t - 1)). ! ! - Function: double gsl_sf_debye_4 (double X) ! - Function: int gsl_sf_debye_4_e (double X, gsl_sf_result * RESULT) ! These routines compute the fourth-order Debye function D_4(x) = ! (4/x^4) \int_0^x dt (t^4/(e^t - 1)).  ! File: gsl-ref.info, Node: Dilogarithm, Next: Elementary Operations, Prev: Debye Functions, Up: Special Functions ! Dilogarithm ! =========== The functions described in this section are declared in the header ! file `gsl_sf_dilog.h'. * Menu: ! * Real Argument:: ! * Complex Argument::  ! File: gsl-ref.info, Node: Real Argument, Next: Complex Argument, Up: Dilogarithm ! Real Argument ! ------------- ! - Function: double gsl_sf_dilog (double X) ! - Function: int gsl_sf_dilog_e (double X, gsl_sf_result * RESULT) ! These routines compute the dilogarithm for a real argument. In ! Lewin's notation this is Li_2(x), the real part of the dilogarithm ! of a real x. It is defined by the integral representation Li_2(x) ! = - \Re \int_0^x ds \log(1-s) / s. Note that \Im(Li_2(x)) = 0 for ! x <= 1, and -\pi\log(x) for x > 1. !  ! File: gsl-ref.info, Node: Complex Argument, Prev: Real Argument, Up: Dilogarithm ! Complex Argument ! ---------------- ! - Function: int gsl_sf_complex_dilog_e (double R, double THETA, ! gsl_sf_result * RESULT_RE, gsl_sf_result * RESULT_IM) ! This function computes the full complex-valued dilogarithm for the ! complex argument z = r \exp(i \theta). The real and imaginary ! parts of the result are returned in RESULT_RE, RESULT_IM.  ! File: gsl-ref.info, Node: Elementary Operations, Next: Elliptic Integrals, Prev: Dilogarithm, Up: Special Functions ! Elementary Operations ! ===================== ! The following functions allow for the propagation of errors when ! combining quantities by multiplication. The functions are declared in ! the header file `gsl_sf_elementary.h'. ! - Function: int gsl_sf_multiply_e (double X, double Y, gsl_sf_result * ! RESULT) ! This function multiplies X and Y storing the product and its ! associated error in RESULT. ! - Function: int gsl_sf_multiply_err_e (double X, double DX, double Y, ! double DY, gsl_sf_result * RESULT) ! This function multiplies X and Y with associated absolute errors ! DX and DY. The product xy +/- xy \sqrt((dx/x)^2 +(dy/y)^2) is ! stored in RESULT. !  ! File: gsl-ref.info, Node: Elliptic Integrals, Next: Elliptic Functions (Jacobi), Prev: Elementary Operations, Up: Special Functions ! Elliptic Integrals ! ================== ! The functions described in this section are declared in the header ! file `gsl_sf_ellint.h'. ! * Menu: ! * Definition of Legendre Forms:: ! * Definition of Carlson Forms:: ! * Legendre Form of Complete Elliptic Integrals:: ! * Legendre Form of Incomplete Elliptic Integrals:: ! * Carlson Forms::  ! File: gsl-ref.info, Node: Definition of Legendre Forms, Next: Definition of Carlson Forms, Up: Elliptic Integrals ! Definition of Legendre Forms ! ---------------------------- ! The Legendre forms of elliptic integrals F(\phi,k), E(\phi,k) and ! P(\phi,k,n) are defined by, ! F(\phi,k) = \int_0^\phi dt 1/\sqrt((1 - k^2 \sin^2(t))) ! E(\phi,k) = \int_0^\phi dt \sqrt((1 - k^2 \sin^2(t))) ! P(\phi,k,n) = \int_0^\phi dt 1/((1 + n \sin^2(t))\sqrt(1 - k^2 \sin^2(t))) ! The complete Legendre forms are denoted by K(k) = F(\pi/2, k) and E(k) ! = E(\pi/2, k). Further information on the Legendre forms of elliptic ! integrals can be found in Abramowitz & Stegun, Chapter 17. The ! notation used here is based on Carlson, `Numerische Mathematik' 33 ! (1979) 1 and differs slightly from that used by Abramowitz & Stegun.  ! File: gsl-ref.info, Node: Definition of Carlson Forms, Next: Legendre Form of Complete Elliptic Integrals, Prev: Definition of Legendre Forms, Up: Elliptic Integrals ! Definition of Carlson Forms ! --------------------------- ! The Carlson symmetric forms of elliptical integrals RC(x,y), ! RD(x,y,z), RF(x,y,z) and RJ(x,y,z,p) are defined by, ! RC(x,y) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1) ! RD(x,y,z) = 3/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-3/2) ! RF(x,y,z) = 1/2 \int_0^\infty dt (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) ! RJ(x,y,z,p) = 3/2 \int_0^\infty dt ! (t+x)^(-1/2) (t+y)^(-1/2) (t+z)^(-1/2) (t+p)^(-1)  ! File: gsl-ref.info, Node: Legendre Form of Complete Elliptic Integrals, Next: Legendre Form of Incomplete Elliptic Integrals, Prev: Definition of Carlson Forms, Up: Elliptic Integrals ! Legendre Form of Complete Elliptic Integrals ! -------------------------------------------- ! - Function: double gsl_sf_ellint_Kcomp (double K, gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_Kcomp_e (double K, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute the complete elliptic integral K(k) to the ! accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_Ecomp (double K, gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_Ecomp_e (double K, gsl_mode_t MODE, ! gsl_sf_result * RESULT) ! These routines compute the complete elliptic integral E(k) to the ! accuracy specified by the mode variable MODE.  ! File: gsl-ref.info, Node: Legendre Form of Incomplete Elliptic Integrals, Next: Carlson Forms, Prev: Legendre Form of Complete Elliptic Integrals, Up: Elliptic Integrals ! Legendre Form of Incomplete Elliptic Integrals ! ---------------------------------------------- ! - Function: double gsl_sf_ellint_F (double PHI, double K, gsl_mode_t ! MODE) ! - Function: int gsl_sf_ellint_F_e (double PHI, double K, gsl_mode_t ! MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral F(\phi,k) ! to the accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_E (double PHI, double K, gsl_mode_t ! MODE) ! - Function: int gsl_sf_ellint_E_e (double PHI, double K, gsl_mode_t ! MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral E(\phi,k) ! to the accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_P (double PHI, double K, double N, ! gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_P_e (double PHI, double K, double N, ! gsl_mode_t MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral P(\phi,k,n) ! to the accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_D (double PHI, double K, double N, ! gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_D_e (double PHI, double K, double N, ! gsl_mode_t MODE, gsl_sf_result * RESULT) ! These functions compute the incomplete elliptic integral ! D(\phi,k,n) which is defined through the Carlson form RD(x,y,z) by ! the following relation, ! D(\phi,k,n) = RD (1-\sin^2(\phi), 1-k^2 \sin^2(\phi), 1).  ! File: gsl-ref.info, Node: Carlson Forms, Prev: Legendre Form of Incomplete Elliptic Integrals, Up: Elliptic Integrals ! Carlson Forms ! ------------- ! - Function: double gsl_sf_ellint_RC (double X, double Y, gsl_mode_t ! MODE) ! - Function: int gsl_sf_ellint_RC_e (double X, double Y, gsl_mode_t ! MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral RC(x,y) to ! the accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_RD (double X, double Y, double Z, ! gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_RD_e (double X, double Y, double Z, ! gsl_mode_t MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral RD(x,y,z) ! to the accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_RF (double X, double Y, double Z, ! gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_RF_e (double X, double Y, double Z, ! gsl_mode_t MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral RF(x,y,z) ! to the accuracy specified by the mode variable MODE. ! - Function: double gsl_sf_ellint_RJ (double X, double Y, double Z, ! double P, gsl_mode_t MODE) ! - Function: int gsl_sf_ellint_RJ_e (double X, double Y, double Z, ! double P, gsl_mode_t MODE, gsl_sf_result * RESULT) ! These routines compute the incomplete elliptic integral RJ(x,y,z,p) ! to the accuracy specified by the mode variable MODE. !  ! File: gsl-ref.info, Node: Elliptic Functions (Jacobi), Next: Error Functions, Prev: Elliptic Integrals, Up: Special Functions ! Elliptic Functions (Jacobi) ! =========================== ! The Jacobian Elliptic functions are defined in Abramowitz & Stegun, ! Chapter 16. The functions are declared in the header file ! `gsl_sf_elljac.h'. ! - Function: int gsl_sf_elljac_e (double U, double M, double * SN, ! double * CN, double * DN) ! This function computes the Jacobian elliptic functions sn(u|m), ! cn(u|m), dn(u|m) by descending Landen transformations.  ! File: gsl-ref.info, Node: Error Functions, Next: Exponential Functions, Prev: Elliptic Functions (Jacobi), Up: Special Functions ! Error Functions ! =============== ! The error function is described in Abramowitz & Stegun, Chapter 7. ! The functions in this section are declared in the header file ! `gsl_sf_erf.h'. ! * Menu: ! * Error Function:: ! * Complementary Error Function:: ! * Log Complementary Error Function:: ! * Probability functions::  ! File: gsl-ref.info, Node: Error Function, Next: Complementary Error Function, Up: Error Functions ! Error Function ! -------------- ! - Function: double gsl_sf_erf (double X) ! - Function: int gsl_sf_erf_e (double X, gsl_sf_result * RESULT) ! These routines compute the error function erf(x) = (2/\sqrt(\pi)) ! \int_0^x dt \exp(-t^2).  ! File: gsl-ref.info, Node: Complementary Error Function, Next: Log Complementary Error Function, Prev: Error Function, Up: Error Functions ! Complementary Error Function ! ---------------------------- ! - Function: double gsl_sf_erfc (double X) ! - Function: int gsl_sf_erfc_e (double X, gsl_sf_result * RESULT) ! These routines compute the complementary error function erfc(x) = ! 1 - erf(x) = (2/\sqrt(\pi)) \int_x^\infty \exp(-t^2).  ! File: gsl-ref.info, Node: Log Complementary Error Function, Next: Probability functions, Prev: Complementary Error Function, Up: Error Functions ! Log Complementary Error Function ! -------------------------------- ! - Function: double gsl_sf_log_erfc (double X) ! - Function: int gsl_sf_log_erfc_e (double X, gsl_sf_result * RESULT) ! These routines compute the logarithm of the complementary error ! function \log(\erfc(x)).  ! File: gsl-ref.info, Node: Probability functions, Prev: Log Complementary Error Function, Up: Error Functions ! Probability functions ! --------------------- ! The probability functions for the Normal or Gaussian distribution are ! described in Abramowitz & Stegun, Section 26.2. ! - Function: double gsl_sf_erf_Z (double X) ! - Function: int gsl_sf_erf_Z_e (double X, gsl_sf_result * RESULT) ! These routines compute the Gaussian probability function Z(x) = ! (1/(2\pi)) \exp(-x^2/2). ! - Function: double gsl_sf_erf_Q (double X) ! - Function: int gsl_sf_erf_Q_e (double X, gsl_sf_result * RESULT) ! These routines compute the upper tail of the Gaussian probability ! function Q(x) = (1/(2\pi)) \int_x^\infty dt \exp(-t^2/2).  ! File: gsl-ref.info, Node: Exponential Functions, Next: Exponential Integrals, Prev: Error Functions, Up: Special Functions ! Exponential Functions ! ===================== ! The functions described in this section are declared in the header ! file `gsl_sf_exp.h'. ! * Menu: ! * Exponential Function:: ! * Relative Exponential Functions:: ! * Exponentiation With Error Estimate:: ! !  ! File: gsl-ref.info, Node: Exponential Function, Next: Relative Exponential Functions, Up: Exponential Functions ! ! Exponential Function ! -------------------- ! ! - Function: double gsl_sf_exp (double X) ! - Function: int gsl_sf_exp_e (double X, gsl_sf_result * RESULT) ! These routines provide an exponential function \exp(x) using GSL ! semantics and error checking. ! ! - Function: int gsl_sf_exp_e10_e (double X, gsl_sf_result_e10 * RESULT) ! This function computes the exponential \exp(x) using the ! `gsl_sf_result_e10' type to return a result with extended range. ! This function may be useful if the value of \exp(x) would overflow ! the numeric range of `double'. ! ! - Function: double gsl_sf_exp_mult (double X, double Y) ! - Function: int gsl_sf_exp_mult_e (double X, double Y, gsl_sf_result * ! RESULT) ! These routines exponentiate X and multiply by the factor Y to ! return the product y \exp(x). ! ! - Function: int gsl_sf_exp_mult_e10_e (const double X, const double Y, ! gsl_sf_result_e10 * RESULT) ! This function computes the product y \exp(x) using the ! `gsl_sf_result_e10' type to return a result with extended numeric ! range. ! !  ! File: gsl-ref.info, Node: Relative Exponential Functions, Next: Exponentiation With Error Estimate, Prev: Exponential Function, Up: Exponential Functions ! ! Relative Exponential Functions ! ------------------------------ ! ! - Function: double gsl_sf_expm1 (double X) ! - Function: int gsl_sf_expm1_e (double X, gsl_sf_result * RESULT) ! These routines compute the quantity \exp(x)-1 using an algorithm ! that is accurate for small x. ! ! - Function: double gsl_sf_exprel (double X) ! - Function: int gsl_sf_exprel_e (double X, gsl_sf_result * RESULT) ! These routines compute the quantity (\exp(x)-1)/x using an ! algorithm that is accurate for small x. For small x the algorithm ! is based on the expansion (\exp(x)-1)/x = 1 + x/2 + x^2/(2*3) + ! x^3/(2*3*4) + \dots. ! ! - Function: double gsl_sf_exprel_2 (double X) ! - Function: int gsl_sf_exprel_2_e (double X, gsl_sf_result * RESULT) ! These routines compute the quantity 2(\exp(x)-1-x)/x^2 using an ! algorithm that is accurate for small x. For small x the algorithm ! is based on the expansion 2(\exp(x)-1-x)/x^2 = 1 + x/3 + x^2/(3*4) ! + x^3/(3*4*5) + \dots. ! ! - Function: double gsl_sf_exprel_n (int N, double X) ! - Function: int gsl_sf_exprel_n_e (int N, double X, gsl_sf_result * ! RESULT) ! These routines compute the N-relative exponential, which is the ! N-th generalization of the functions `gsl_sf_exprel' and ! `gsl_sf_exprel2'. The N-relative exponential is given by, ! ! exprel_N(x) = N!/x^N (\exp(x) - \sum_{k=0}^{N-1} x^k/k!) ! = 1 + x/(N+1) + x^2/((N+1)(N+2)) + ... ! = 1F1 (1,1+N,x) ! !  ! File: gsl-ref.info, Node: Exponentiation With Error Estimate, Prev: Relative Exponential Functions, Up: Exponential Functions ! ! Exponentiation With Error Estimate ! ---------------------------------- ! ! - Function: int gsl_sf_exp_err_e (double X, double DX, gsl_sf_result * ! RESULT) ! This function exponentiates X with an associated absolute error DX. ! ! - Function: int gsl_sf_exp_err_e10_e (double X, double DX, ! gsl_sf_result_e10 * RESULT) ! This functions exponentiate a quantity X with an associated ! absolute error DX using the `gsl_sf_result_e10' type to return a ! result with extended range. ! ! - Function: int gsl_sf_exp_mult_err_e (double X, double DX, double Y, ! double DY, gsl_sf_result * RESULT) ! This routine computes the product y \exp(x) for the quantities X, ! Y with associated absolute errors DX, DY. ! ! - Function: int gsl_sf_exp_mult_err_e10_e (double X, double DX, double ! Y, double DY, gsl_sf_result_e10 * RESULT) ! This routine computes the product y \exp(x) for the quantities X, ! Y with associated absolute errors DX, DY using the ! `gsl_sf_result_e10' type to return a result with extended range.  ! File: gsl-ref.info, Node: Exponential Integrals, Next: Fermi-Dirac Function, Prev: Exponential Functions, Up: Special Functions ! Exponential Integrals ! ===================== ! Information on the exponential integrals can be found in Abramowitz & ! Stegun, Chapter 5. These functions are declared in the header file ! `gsl_sf_expint.h'. * Menu: ! * Exponential Integral:: ! * Ei(x):: ! * Hyperbolic Integrals:: ! * Ei_3(x):: ! * Trigonometric Integrals:: ! * Arctangent Integral::  ! File: gsl-ref.info, Node: Exponential Integral, Next: Ei(x), Up: Exponential Integrals ! Exponential Integral ! -------------------- ! - Function: double gsl_sf_expint_E1 (double X) ! - Function: int gsl_sf_expint_E1_e (double X, gsl_sf_result * RESULT) ! These routines compute the exponential integral E_1(x), ! E_1(x) := Re \int_1^\infty dt \exp(-xt)/t. ! - Function: double gsl_sf_expint_E2 (double X) ! - Function: int gsl_sf_expint_E2_e (double X, gsl_sf_result * RESULT) ! These routines compute the second-order exponential integral ! E_2(x), ! E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2.  ! File: gsl-ref.info, Node: Ei(x), Next: Hyperbolic Integrals, Prev: Exponential Integral, Up: Exponential Integrals ! Ei(x) ! ----- ! - Function: double gsl_sf_expint_Ei (double X) ! - Function: int gsl_sf_expint_Ei_e (double X, gsl_sf_result * RESULT) ! These routines compute the exponential integral E_i(x), ! Ei(x) := - PV(\int_{-x}^\infty dt \exp(-t)/t) ! where PV denotes the principal value of the integral. !  ! File: gsl-ref.info, Node: Hyperbolic Integrals, Next: Ei_3(x), Prev: Ei(x), Up: Exponential Integrals ! Hyperbolic Integrals ! -------------------- ! - Function: double gsl_sf_Shi (double X) ! - Function: int gsl_sf_Shi_e (double X, gsl_sf_result * RESULT) ! These routines compute the integral Shi(x) = \int_0^x dt ! \sinh(t)/t. ! - Function: double gsl_sf_Chi (double X) ! - Function: int gsl_sf_Chi_e (double X, gsl_sf_result * RESULT) ! These routines compute the integral Chi(x) := Re[ \gamma_E + ! \log(x) + \int_0^x dt (\cosh[t]-1)/t] , where \gamma_E is the ! Euler constant (available as the macro `M_EULER').  ! File: gsl-ref.info, Node: Ei_3(x), Next: Trigonometric Integrals, Prev: Hyperbolic Integrals, Up: Exponential Integrals ! Ei_3(x) ! ------- ! - Function: double gsl_sf_expint_3 (double X) ! - Function: int gsl_sf_expint_3_e (double X, gsl_sf_result * RESULT) ! These routines compute the exponential integral Ei_3(x) = \int_0^x ! dt \exp(-t^3) for x >= 0.  ! File: gsl-ref.info, Node: Trigonometric Integrals, Next: Arctangent Integral, Prev: Ei_3(x), Up: Exponential Integrals ! Trigonometric Integrals ! ----------------------- ! - Function: double gsl_sf_Si (const double X) ! - Function: int gsl_sf_Si_e (double X, gsl_sf_result * RESULT) ! These routines compute the Sine integral Si(x) = \int_0^x dt ! \sin(t)/t. ! - Function: double gsl_sf_Ci (const double X) ! - Function: int gsl_sf_Ci_e (double X, gsl_sf_result * RESULT) ! These routines compute the Cosine integral Ci(x) = -\int_x^\infty ! dt \cos(t)/t for x > 0. !  ! File: gsl-ref.info, Node: Arctangent Integral, Prev: Trigonometric Integrals, Up: Exponential Integrals ! Arctangent Integral ! ------------------- ! - Function: double gsl_sf_atanint (double X) ! - Function: int gsl_sf_atanint_e (double X, gsl_sf_result * RESULT) ! These routines compute the Arctangent integral AtanInt(x) = ! \int_0^x dt \arctan(t)/t. !  ! File: gsl-ref.info, Node: Fermi-Dirac Function, Next: Gamma Function, Prev: Exponential Integrals, Up: Special Functions ! Fermi-Dirac Function ! ==================== ! The functions described in this section are declared in the header ! file `gsl_sf_fermi_dirac.h'. ! * Menu: ! * Complete Fermi-Dirac Integrals:: ! * Incomplete Fermi-Dirac Integrals::  ! File: gsl-ref.info, Node: Complete Fermi-Dirac Integrals, Next: Incomplete Fermi-Dirac Integrals, Up: Fermi-Dirac Function ! Complete Fermi-Dirac Integrals ! ------------------------------ ! The complete Fermi-Dirac integral F_j(x) is given by, ! ! F_j(x) := (1/r\Gamma(j+1)) \int_0^\infty (t^j / (\exp(t-x) + 1)) ! ! - Function: double gsl_sf_fermi_dirac_m1 (double X) ! - Function: int gsl_sf_fermi_dirac_m1_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral with an ! index of -1. This integral is given by F_{-1}(x) = e^x / (1 + ! e^x). ! ! - Function: double gsl_sf_fermi_dirac_0 (double X) ! - Function: int gsl_sf_fermi_dirac_0_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral with an ! index of 0. This integral is given by F_0(x) = \ln(1 + e^x). ! ! - Function: double gsl_sf_fermi_dirac_1 (double X) ! - Function: int gsl_sf_fermi_dirac_1_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral with an ! index of 1, F_1(x) = \int_0^\infty dt (t /(\exp(t-x)+1)). ! ! - Function: double gsl_sf_fermi_dirac_2 (double X) ! - Function: int gsl_sf_fermi_dirac_2_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral with an ! index of 2, F_2(x) = (1/2) \int_0^\infty dt (t^2 /(\exp(t-x)+1)). ! ! - Function: double gsl_sf_fermi_dirac_int (int J, double X) ! - Function: int gsl_sf_fermi_dirac_int_e (int J, double X, ! gsl_sf_result * RESULT) ! These routines compute the complete Fermi-Dirac integral with an ! integer index of j, F_j(x) = (1/\Gamma(j+1)) \int_0^\infty dt (t^j ! /(\exp(t-x)+1)). ! ! - Function: double gsl_sf_fermi_dirac_mhalf (double X) ! - Function: int gsl_sf_fermi_dirac_mhalf_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral ! F_{-1/2}(x). ! ! - Function: double gsl_sf_fermi_dirac_half (double X) ! - Function: int gsl_sf_fermi_dirac_half_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral ! F_{1/2}(x). ! ! - Function: double gsl_sf_fermi_dirac_3half (double X) ! - Function: int gsl_sf_fermi_dirac_3half_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the complete Fermi-Dirac integral ! F_{3/2}(x). ! !  ! File: gsl-ref.info, Node: Incomplete Fermi-Dirac Integrals, Prev: Complete Fermi-Dirac Integrals, Up: Fermi-Dirac Function ! ! Incomplete Fermi-Dirac Integrals ! -------------------------------- ! ! The incomplete Fermi-Dirac integral F_j(x,b) is given by, ! ! F_j(x,b) := (1/\Gamma(j+1)) \int_b^\infty (t^j / (\Exp(t-x) + 1)) ! ! - Function: double gsl_sf_fermi_dirac_inc_0 (double X, double B) ! - Function: int gsl_sf_fermi_dirac_inc_0_e (double X, double B, ! gsl_sf_result * RESULT) ! These routines compute the incomplete Fermi-Dirac integral with an ! index of zero, F_0(x,b) = \ln(1 + e^{b-x}) - (b-x). --- 8,7873 ----  ! File: gsl-ref.info, Node: Updating and accessing 2D histogram elements, Next: Searching 2D histogram ranges, Prev: Copying 2D Histograms, Up: Histograms ! Updating and accessing 2D histogram elements ! ============================================ ! You can access the bins of a two-dimensional histogram either by ! specifying a pair of (x,y) coordinates or by using the bin indices ! (i,j) directly. The functions for accessing the histogram through ! (x,y) coordinates use binary searches in the x and y directions to ! identify the bin which covers the appropriate range. ! ! - Function: int gsl_histogram2d_increment (gsl_histogram2d * H, double ! X, double Y) ! This function updates the histogram H by adding one (1.0) to the ! bin whose x and y ranges contain the coordinates (X,Y). ! ! If the point (x,y) lies inside the valid ranges of the histogram ! then the function returns zero to indicate success. If (x,y) lies ! outside the limits of the histogram then the function returns ! `GSL_EDOM', and none of the bins are modified. The error handler ! is not called, since it is often necessary to compute histograms ! for a small range of a larger dataset, ignoring any coordinates ! outside the range of interest. ! ! - Function: int gsl_histogram2d_accumulate (gsl_histogram2d * H, ! double X, double Y, double WEIGHT) ! This function is similar to `gsl_histogram2d_increment' but ! increases the value of the appropriate bin in the histogram H by ! the floating-point number WEIGHT. ! ! - Function: double gsl_histogram2d_get (const gsl_histogram2d * H, ! size_t I, size_t J) ! This function returns the contents of the (I,J)th bin of the ! histogram H. If (I,J) lies outside the valid range of indices for ! the histogram then the error handler is called with an error code ! of `GSL_EDOM' and the function returns 0. ! ! - Function: int gsl_histogram2d_get_xrange (const gsl_histogram2d * H, ! size_t I, double * XLOWER, double * XUPPER) ! - Function: int gsl_histogram2d_get_yrange (const gsl_histogram2d * H, ! size_t J, double * YLOWER, double * YUPPER) ! These functions find the upper and lower range limits of the I-th ! and J-th bins in the x and y directions of the histogram H. The ! range limits are stored in XLOWER and XUPPER or YLOWER and YUPPER. ! The lower limits are inclusive (i.e. events with these ! coordinates are included in the bin) and the upper limits are ! exclusive (i.e. events with the value of the upper limit are not ! included and fall in the neighboring higher bin, if it exists). ! The functions return 0 to indicate success. If I or J lies ! outside the valid range of indices for the histogram then the ! error handler is called with an error code of `GSL_EDOM'. ! ! - Function: double gsl_histogram2d_xmax (const gsl_histogram2d * H) ! - Function: double gsl_histogram2d_xmin (const gsl_histogram2d * H) ! - Function: size_t gsl_histogram2d_nx (const gsl_histogram2d * H) ! - Function: double gsl_histogram2d_ymax (const gsl_histogram2d * H) ! - Function: double gsl_histogram2d_ymin (const gsl_histogram2d * H) ! - Function: size_t gsl_histogram2d_ny (const gsl_histogram2d * H) ! These functions return the maximum upper and minimum lower range ! limits and the number of bins for the x and y directions of the ! histogram H. They provide a way of determining these values ! without accessing the `gsl_histogram2d' struct directly. ! ! - Function: void gsl_histogram2d_reset (gsl_histogram2d * H) ! This function resets all the bins of the histogram H to zero. ! !  ! File: gsl-ref.info, Node: Searching 2D histogram ranges, Next: 2D Histogram Statistics, Prev: Updating and accessing 2D histogram elements, Up: Histograms ! ! Searching 2D histogram ranges ! ============================= ! ! The following functions are used by the access and update routines to ! locate the bin which corresponds to a given (x\,y) coordinate. ! ! - Function: int gsl_histogram2d_find (const gsl_histogram2d * H, ! double X, double Y, size_t * I, size_t * J) ! This function finds and sets the indices I and J to the to the bin ! which covers the coordinates (X,Y). The bin is located using a ! binary search. The search includes an optimization for histogram ! with uniform ranges, and will return the correct bin immediately ! in this case. If (x,y) is found then the function sets the indices ! (I,J) and returns `GSL_SUCCESS'. If (x,y) lies outside the valid ! range of the histogram then the function returns `GSL_EDOM' and ! the error handler is invoked. ! !  ! File: gsl-ref.info, Node: 2D Histogram Statistics, Next: 2D Histogram Operations, Prev: Searching 2D histogram ranges, Up: Histograms ! ! 2D Histogram Statistics ! ======================= ! ! - Function: double gsl_histogram2d_max_val (const gsl_histogram2d * H) ! This function returns the maximum value contained in the histogram ! bins. ! ! - Function: void gsl_histogram2d_max_bin (const gsl_histogram2d * H, ! size_t * I, size_t * J) ! This function returns the indices (I,J) of the bin containing the ! maximum value in the histogram H. In the case where several bins ! contain the same maximum value the first bin found is returned. ! ! - Function: double gsl_histogram2d_min_val (const gsl_histogram2d * H) ! This function returns the minimum value contained in the histogram ! bins. ! ! - Function: void gsl_histogram2d_min_bin (const gsl_histogram2d * H, ! size_t * I, size_t * J) ! This function returns the indices (I,J) of the bin containing the ! minimum value in the histogram H. In the case where several bins ! contain the same maximum value the first bin found is returned. ! ! - Function: double gsl_histogram2d_xmean (const gsl_histogram2d * H) ! This function returns the mean of the histogrammed x variable, ! where the histogram is regarded as a probability distribution. ! Negative bin values are ignored for the purposes of this ! calculation. ! ! - Function: double gsl_histogram2d_ymean (const gsl_histogram2d * H) ! This function returns the mean of the histogrammed y variable, ! where the histogram is regarded as a probability distribution. ! Negative bin values are ignored for the purposes of this ! calculation. ! ! - Function: double gsl_histogram2d_xsigma (const gsl_histogram2d * H) ! This function returns the standard deviation of the histogrammed x ! variable, where the histogram is regarded as a probability ! distribution. Negative bin values are ignored for the purposes of ! this calculation. ! ! - Function: double gsl_histogram2d_ysigma (const gsl_histogram2d * H) ! This function returns the standard deviation of the histogrammed y ! variable, where the histogram is regarded as a probability ! distribution. Negative bin values are ignored for the purposes of ! this calculation. ! ! - Function: double gsl_histogram2d_cov (const gsl_histogram2d * H) ! This function returns the covariance of the histogrammed x and y ! variables, where the histogram is regarded as a probability ! distribution. Negative bin values are ignored for the purposes of ! this calculation. ! ! - Function: double gsl_histogram2d_sum (const gsl_histogram2d * H) ! This function returns the sum of all bin values. Negative bin ! values are included in the sum. ! !  ! File: gsl-ref.info, Node: 2D Histogram Operations, Next: Reading and writing 2D histograms, Prev: 2D Histogram Statistics, Up: Histograms ! ! 2D Histogram Operations ! ======================= ! ! - Function: int gsl_histogram2d_equal_bins_p (const gsl_histogram2d ! *H1, const gsl_histogram2d *H2) ! This function returns 1 if the all of the individual bin ranges of ! the two histograms are identical, and 0 otherwise. ! ! - Function: int gsl_histogram2d_add (gsl_histogram2d *H1, const ! gsl_histogram2d *H2) ! This function adds the contents of the bins in histogram H2 to the ! corresponding bins of histogram H1, i.e. h'_1(i,j) = h_1(i,j) + ! h_2(i,j). The two histograms must have identical bin ranges. ! ! - Function: int gsl_histogram2d_sub (gsl_histogram2d *H1, const ! gsl_histogram2d *H2) ! This function subtracts the contents of the bins in histogram H2 ! from the corresponding bins of histogram H1, i.e. h'_1(i,j) = ! h_1(i,j) - h_2(i,j). The two histograms must have identical bin ! ranges. ! ! - Function: int gsl_histogram2d_mul (gsl_histogram2d *H1, const ! gsl_histogram2d *H2) ! This function multiplies the contents of the bins of histogram H1 ! by the contents of the corresponding bins in histogram H2, i.e. ! h'_1(i,j) = h_1(i,j) * h_2(i,j). The two histograms must have ! identical bin ranges. ! ! - Function: int gsl_histogram2d_div (gsl_histogram2d *H1, const ! gsl_histogram2d *H2) ! This function divides the contents of the bins of histogram H1 by ! the contents of the corresponding bins in histogram H2, i.e. ! h'_1(i,j) = h_1(i,j) / h_2(i,j). The two histograms must have ! identical bin ranges. ! ! - Function: int gsl_histogram2d_scale (gsl_histogram2d *H, double ! SCALE) ! This function multiplies the contents of the bins of histogram H ! by the constant SCALE, i.e. h'_1(i,j) = h_1(i,j) scale. ! ! - Function: int gsl_histogram2d_shift (gsl_histogram2d *H, double ! OFFSET) ! This function shifts the contents of the bins of histogram H by ! the constant OFFSET, i.e. h'_1(i,j) = h_1(i,j) + offset. ! !  ! File: gsl-ref.info, Node: Reading and writing 2D histograms, Next: Resampling from 2D histograms, Prev: 2D Histogram Operations, Up: Histograms ! ! Reading and writing 2D histograms ! ================================= ! ! The library provides functions for reading and writing two dimensional ! histograms to a file as binary data or formatted text. ! ! - Function: int gsl_histogram2d_fwrite (FILE * STREAM, const ! gsl_histogram2d * H) ! This function writes the ranges and bins of the histogram H to the ! stream STREAM in binary format. The return value is 0 for success ! and `GSL_EFAILED' if there was a problem writing to the file. ! Since the data is written in the native binary format it may not ! be portable between different architectures. ! ! - Function: int gsl_histogram2d_fread (FILE * STREAM, gsl_histogram2d ! * H) ! This function reads into the histogram H from the stream STREAM in ! binary format. The histogram H must be preallocated with the ! correct size since the function uses the number of x and y bins in ! H to determine how many bytes to read. The return value is 0 for ! success and `GSL_EFAILED' if there was a problem reading from the ! file. The data is assumed to have been written in the native ! binary format on the same architecture. ! ! - Function: int gsl_histogram2d_fprintf (FILE * STREAM, const ! gsl_histogram2d * H, const char * RANGE_FORMAT, const char * ! BIN_FORMAT) ! This function writes the ranges and bins of the histogram H ! line-by-line to the stream STREAM using the format specifiers ! RANGE_FORMAT and BIN_FORMAT. These should be one of the `%g', ! `%e' or `%f' formats for floating point numbers. The function ! returns 0 for success and `GSL_EFAILED' if there was a problem ! writing to the file. The histogram output is formatted in five ! columns, and the columns are separated by spaces, like this, ! ! xrange[0] xrange[1] yrange[0] yrange[1] bin(0,0) ! xrange[0] xrange[1] yrange[1] yrange[2] bin(0,1) ! xrange[0] xrange[1] yrange[2] yrange[3] bin(0,2) ! .... ! xrange[0] xrange[1] yrange[ny-1] yrange[ny] bin(0,ny-1) ! ! xrange[1] xrange[2] yrange[0] yrange[1] bin(1,0) ! xrange[1] xrange[2] yrange[1] yrange[2] bin(1,1) ! xrange[1] xrange[2] yrange[1] yrange[2] bin(1,2) ! .... ! xrange[1] xrange[2] yrange[ny-1] yrange[ny] bin(1,ny-1) ! ! .... ! ! xrange[nx-1] xrange[nx] yrange[0] yrange[1] bin(nx-1,0) ! xrange[nx-1] xrange[nx] yrange[1] yrange[2] bin(nx-1,1) ! xrange[nx-1] xrange[nx] yrange[1] yrange[2] bin(nx-1,2) ! .... ! xrange[nx-1] xrange[nx] yrange[ny-1] yrange[ny] bin(nx-1,ny-1) ! ! Each line contains the lower and upper limits of the bin and the ! contents of the bin. Since the upper limits of the each bin are ! the lower limits of the neighboring bins there is duplication of ! these values but this allows the histogram to be manipulated with ! line-oriented tools. ! ! - Function: int gsl_histogram2d_fscanf (FILE * STREAM, gsl_histogram2d ! * H) ! This function reads formatted data from the stream STREAM into the ! histogram H. The data is assumed to be in the five-column format ! used by `gsl_histogram_fprintf'. The histogram H must be ! preallocated with the correct lengths since the function uses the ! sizes of H to determine how many numbers to read. The function ! returns 0 for success and `GSL_EFAILED' if there was a problem ! reading from the file. ! !  ! File: gsl-ref.info, Node: Resampling from 2D histograms, Next: Example programs for 2D histograms, Prev: Reading and writing 2D histograms, Up: Histograms ! ! Resampling from 2D histograms ! ============================= ! ! As in the one-dimensional case, a two-dimensional histogram made by ! counting events can be regarded as a measurement of a probability ! distribution. Allowing for statistical error, the height of each bin ! represents the probability of an event where (x,y) falls in the range ! of that bin. For a two-dimensional histogram the probability ! distribution takes the form p(x,y) dx dy where, ! ! p(x,y) = n_{ij}/ (N A_{ij}) ! ! In this equation n_{ij} is the number of events in the bin which ! contains (x,y), A_{ij} is the area of the bin and N is the total number ! of events. The distribution of events within each bin is assumed to be ! uniform. ! ! - Data Type: gsl_histogram2d_pdf ! `size_t nx, ny' ! This is the number of histogram bins used to approximate the ! probability distribution function in the x and y directions. ! ! `double * xrange' ! The ranges of the bins in the x-direction are stored in an ! array of NX + 1 elements pointed to by XRANGE. ! ! `double * yrange' ! The ranges of the bins in the y-direction are stored in an ! array of NY + 1 pointed to by YRANGE. ! ! `double * sum' ! The cumulative probability for the bins is stored in an array ! of NX*NY elements pointed to by SUM. ! ! The following functions allow you to create a `gsl_histogram2d_pdf' ! struct which represents a two dimensional probability distribution and ! generate random samples from it. ! ! - Function: gsl_histogram2d_pdf * gsl_histogram2d_pdf_alloc (size_t ! NX, size_t NY) ! This function allocates memory for a two-dimensional probability ! distribution of size NX-by-NY and returns a pointer to a newly ! initialized `gsl_histogram2d_pdf' struct. If insufficient memory ! is available a null pointer is returned and the error handler is ! invoked with an error code of `GSL_ENOMEM'. ! ! - Function: int gsl_histogram2d_pdf_init (gsl_histogram2d_pdf * P, ! const gsl_histogram2d * H) ! This function initializes the two-dimensional probability ! distribution calculated P from the histogram H. If any of the ! bins of H are negative then the error handler is invoked with an ! error code of `GSL_EDOM' because a probability distribution cannot ! contain negative values. ! ! - Function: void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * P) ! This function frees the two-dimensional probability distribution ! function P and all of the memory associated with it. ! ! - Function: int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf ! * P, double R1, double R2, double * X, double * Y) ! This function uses two uniform random numbers between zero and one, ! R1 and R2, to compute a single random sample from the ! two-dimensional probability distribution P. ! !  ! File: gsl-ref.info, Node: Example programs for 2D histograms, Prev: Resampling from 2D histograms, Up: Histograms ! ! Example programs for 2D histograms ! ================================== ! ! This program demonstrates two features of two-dimensional histograms. ! First a 10 by 10 2d-histogram is created with x and y running from 0 to ! 1. Then a few sample points are added to the histogram, at (0.3,0.3) ! with a height of 1, at (0.8,0.1) with a height of 5 and at (0.7,0.9) ! with a height of 0.5. This histogram with three events is used to ! generate a random sample of 1000 simulated events, which are printed ! out. ! ! #include ! #include ! #include ! ! int ! main (void) ! { ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_histogram2d * h = gsl_histogram2d_alloc (10, 10); ! ! gsl_histogram2d_set_ranges_uniform (h, ! 0.0, 1.0, ! 0.0, 1.0); ! ! gsl_histogram2d_accumulate (h, 0.3, 0.3, 1); ! gsl_histogram2d_accumulate (h, 0.8, 0.1, 5); ! gsl_histogram2d_accumulate (h, 0.7, 0.9, 0.5); ! ! gsl_rng_env_setup (); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! { ! int i; ! gsl_histogram2d_pdf * p ! = gsl_histogram2d_pdf_alloc (h->nx, h->ny); ! ! gsl_histogram2d_pdf_init (p, h); ! ! for (i = 0; i < 1000; i++) { ! double x, y; ! double u = gsl_rng_uniform (r); ! double v = gsl_rng_uniform (r); ! ! gsl_histogram2d_pdf_sample (p, u, v, &x, &y); ! ! printf ("%g %g\n", x, y); ! } ! } ! ! return 0; ! } ! ! The following plot shows the distribution of the simulated events. ! Using a higher resolution grid we can see the original underlying ! histogram and also the statistical fluctuations caused by the events ! being uniformly distributed over the area of the original bins. ! !  ! File: gsl-ref.info, Node: N-tuples, Next: Monte Carlo Integration, Prev: Histograms, Up: Top ! ! N-tuples ! ******** ! ! This chapter describes functions for creating and manipulating ! "ntuples", sets of values associated with events. The ntuples are ! stored in files. Their values can be extracted in any combination and ! "booked" in a histogram using a selection function. ! ! The values to be stored are held in a user-defined data structure, ! and an ntuple is created associating this data structure with a file. ! The values are then written to the file (normally inside a loop) using ! the ntuple functions described below. ! ! A histogram can be created from ntuple data by providing a selection ! function and a value function. The selection function specifies whether ! an event should be included in the subset to be analyzed or not. The ! value function computes the entry to be added to the histogram for each ! event. ! ! All the ntuple functions are defined in the header file ! `gsl_ntuple.h' ! ! * Menu: ! ! * The ntuple struct:: ! * Creating ntuples:: ! * Opening an existing ntuple file:: ! * Writing ntuples:: ! * Reading ntuples :: ! * Closing an ntuple file:: ! * Histogramming ntuple values:: ! * Example ntuple programs:: ! * Ntuple References and Further Reading::  ! File: gsl-ref.info, Node: The ntuple struct, Next: Creating ntuples, Up: N-tuples ! The ntuple struct ================= ! Ntuples are manipulated using the `gsl_ntuple' struct. This struct ! contains information on the file where the ntuple data is stored, a ! pointer to the current ntuple data row and the size of the user-defined ! ntuple data struct. ! ! typedef struct { ! FILE * file; ! void * ntuple_data; ! size_t size; ! } gsl_ntuple; !  ! File: gsl-ref.info, Node: Creating ntuples, Next: Opening an existing ntuple file, Prev: The ntuple struct, Up: N-tuples ! ! Creating ntuples ! ================ ! - Function: gsl_ntuple * gsl_ntuple_create (char * FILENAME, void * ! NTUPLE_DATA, size_t SIZE) ! This function creates a new write-only ntuple file FILENAME for ! ntuples of size SIZE and returns a pointer to the newly created ! ntuple struct. Any existing file with the same name is truncated ! to zero length and overwritten. A pointer to memory for the ! current ntuple row NTUPLE_DATA must be supplied - this is used to ! copy ntuples in and out of the file.  ! File: gsl-ref.info, Node: Opening an existing ntuple file, Next: Writing ntuples, Prev: Creating ntuples, Up: N-tuples ! Opening an existing ntuple file ! =============================== ! - Function: gsl_ntuple * gsl_ntuple_open (char * FILENAME, void * ! NTUPLE_DATA, size_t SIZE) ! This function opens an existing ntuple file FILENAME for reading ! and returns a pointer to a corresponding ntuple struct. The ! ntuples in the file must have size SIZE. A pointer to memory for ! the current ntuple row NTUPLE_DATA must be supplied - this is used ! to copy ntuples in and out of the file. !  ! File: gsl-ref.info, Node: Writing ntuples, Next: Reading ntuples, Prev: Opening an existing ntuple file, Up: N-tuples ! ! Writing ntuples ! =============== ! ! - Function: int gsl_ntuple_write (gsl_ntuple * NTUPLE) ! This function writes the current ntuple NTUPLE->NTUPLE_DATA of ! size NTUPLE->SIZE to the corresponding file. ! - Function: int gsl_ntuple_bookdata (gsl_ntuple * NTUPLE) ! This function is a synonym for `gsl_ntuple_write'.  ! File: gsl-ref.info, Node: Reading ntuples, Next: Closing an ntuple file, Prev: Writing ntuples, Up: N-tuples ! Reading ntuples ! =============== ! - Function: int gsl_ntuple_read (gsl_ntuple * NTUPLE) ! This function reads the current row of the ntuple file for NTUPLE ! and stores the values in NTUPLE->DATA. !  ! File: gsl-ref.info, Node: Closing an ntuple file, Next: Histogramming ntuple values, Prev: Reading ntuples, Up: N-tuples ! Closing an ntuple file ! ====================== ! ! - Function: int gsl_ntuple_close (gsl_ntuple * NTUPLE) ! This function closes the ntuple file NTUPLE and frees its ! associated allocated memory.  ! File: gsl-ref.info, Node: Histogramming ntuple values, Next: Example ntuple programs, Prev: Closing an ntuple file, Up: N-tuples ! ! Histogramming ntuple values ! =========================== ! ! Once an ntuple has been created its contents can be histogrammed in ! various ways using the function `gsl_ntuple_project'. Two user-defined ! functions must be provided, a function to select events and a function ! to compute scalar values. The selection function and the value function ! both accept the ntuple row as a first argument and other parameters as ! a second argument. ! ! The "selection function" determines which ntuple rows are selected ! for histogramming. It is defined by the following struct, ! typedef struct { ! int (* function) (void * ntuple_data, void * params); ! void * params; ! } gsl_ntuple_select_fn; ! ! The struct component FUNCTION should return a non-zero value for each ! ntuple row that is to be included in the histogram. ! ! The "value function" computes scalar values for those ntuple rows ! selected by the selection function, ! typedef struct { ! double (* function) (void * ntuple_data, void * params); ! void * params; ! } gsl_ntuple_value_fn; ! ! In this case the struct component FUNCTION should return the value to ! be added to the histogram for the ntuple row. ! ! - Function: int gsl_ntuple_project (gsl_histogram * H, gsl_ntuple * ! NTUPLE, gsl_ntuple_value_fn *VALUE_FUNC, gsl_ntuple_select_fn ! *SELECT_FUNC) ! This function updates the histogram H from the ntuple NTUPLE using ! the functions VALUE_FUNC and SELECT_FUNC. For each ntuple row ! where the selection function SELECT_FUNC is non-zero the ! corresponding value of that row is computed using the function ! VALUE_FUNC and added to the histogram. Those ntuple rows where ! SELECT_FUNC returns zero are ignored. New entries are added to ! the histogram, so subsequent calls can be used to accumulate ! further data in the same histogram. ! !  ! File: gsl-ref.info, Node: Example ntuple programs, Next: Ntuple References and Further Reading, Prev: Histogramming ntuple values, Up: N-tuples ! ! Examples ! ======== ! ! The following example programs demonstrate the use of ntuples in ! managing a large dataset. The first program creates a set of 10,000 ! simulated "events", each with 3 associated values (x,y,z). These are ! generated from a gaussian distribution with unit variance, for ! demonstration purposes, and written to the ntuple file `test.dat'. ! ! #include ! #include ! #include ! ! struct data ! { ! double x; ! double y; ! double z; ! }; ! ! int ! main (void) ! { ! const gsl_rng_type * T; ! gsl_rng * r; ! ! struct data ntuple_row; ! int i; ! ! gsl_ntuple *ntuple ! = gsl_ntuple_create ("test.dat", &ntuple_row, ! sizeof (ntuple_row)); ! ! gsl_rng_env_setup (); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! for (i = 0; i < 10000; i++) ! { ! ntuple_row.x = gsl_ran_ugaussian (r); ! ntuple_row.y = gsl_ran_ugaussian (r); ! ntuple_row.z = gsl_ran_ugaussian (r); ! ! gsl_ntuple_write (ntuple); ! } ! ! gsl_ntuple_close (ntuple); ! return 0; ! } ! ! The next program analyses the ntuple data in the file `test.dat'. The ! analysis procedure is to compute the squared-magnitude of each event, ! E^2=x^2+y^2+z^2, and select only those which exceed a lower limit of ! 1.5. The selected events are then histogrammed using their E^2 values. ! ! #include ! #include ! #include ! ! struct data ! { ! double x; ! double y; ! double z; ! }; ! ! int sel_func (void *ntuple_data, void *params); ! double val_func (void *ntuple_data, void *params); ! ! int ! main (void) ! { ! struct data ntuple_row; ! ! gsl_ntuple *ntuple ! = gsl_ntuple_open ("test.dat", &ntuple_row, ! sizeof (ntuple_row)); ! double lower = 1.5; ! ! gsl_ntuple_select_fn S; ! gsl_ntuple_value_fn V; ! ! gsl_histogram *h = gsl_histogram_alloc (100); ! gsl_histogram_set_ranges_uniform(h, 0.0, 10.0); ! ! S.function = &sel_func; ! S.params = &lower; ! ! V.function = &val_func; ! V.params = 0; ! ! gsl_ntuple_project (h, ntuple, &V, &S); ! gsl_histogram_fprintf (stdout, h, "%f", "%f"); ! gsl_histogram_free (h); ! gsl_ntuple_close (ntuple); ! ! return 0; ! } ! ! int ! sel_func (void *ntuple_data, void *params) ! { ! struct data * data = (struct data *) ntuple_data; ! double x, y, z, E2, scale; ! scale = *(double *) params; ! ! x = data->x; ! y = data->y; ! z = data->z; ! ! E2 = x * x + y * y + z * z; ! ! return E2 > scale; ! } ! ! double ! val_func (void *ntuple_data, void *params) ! { ! struct data * data = (struct data *) ntuple_data; ! double x, y, z; ! ! x = data->x; ! y = data->y; ! z = data->z; ! ! return x * x + y * y + z * z; ! } ! The following plot shows the distribution of the selected events. ! Note the cut-off at the lower bound. !  ! File: gsl-ref.info, Node: Ntuple References and Further Reading, Prev: Example ntuple programs, Up: N-tuples ! References and Further Reading ! ============================== ! Further information on the use of ntuples can be found in the ! documentation for the CERN packages PAW and HBOOK (available online).  ! File: gsl-ref.info, Node: Monte Carlo Integration, Next: Simulated Annealing, Prev: N-tuples, Up: Top ! Monte Carlo Integration ! *********************** ! This chapter describes routines for multidimensional Monte Carlo ! integration. These include the traditional Monte Carlo method and ! adaptive algorithms such as VEGAS and MISER which use importance ! sampling and stratified sampling techniques. Each algorithm computes an ! estimate of a multidimensional definite integral of the form, ! I = \int_xl^xu dx \int_yl^yu dy ... f(x, y, ...) ! ! over a hypercubic region ((x_l,x_u), (y_l,y_u), ...) using a fixed ! number of function calls. The routines also provide a statistical ! estimate of the error on the result. This error estimate should be ! taken as a guide rather than as a strict error bound -- random sampling ! of the region may not uncover all the important features of the ! function, resulting in an underestimate of the error. ! ! The functions are defined in separate header files for each routine, ! `gsl_monte_plain.h', `gsl_monte_miser.h' and `gsl_monte_vegas.h'. ! ! * Menu: ! * Monte Carlo Interface:: ! * PLAIN Monte Carlo:: ! * MISER:: ! * VEGAS:: ! * Monte Carlo Examples:: ! * Monte Carlo Integration References and Further Reading::  ! File: gsl-ref.info, Node: Monte Carlo Interface, Next: PLAIN Monte Carlo, Up: Monte Carlo Integration ! Interface ! ========= ! All of the Monte Carlo integration routines use the same general form of ! interface. There is an allocator to allocate memory for control ! variables and workspace, a routine to initialize those control ! variables, the integrator itself, and a function to free the space when ! done. ! Each integration function requires a random number generator to be ! supplied, and returns an estimate of the integral and its standard ! deviation. The accuracy of the result is determined by the number of ! function calls specified by the user. If a known level of accuracy is ! required this can be achieved by calling the integrator several times ! and averaging the individual results until the desired accuracy is ! obtained. ! Random sample points used within the Monte Carlo routines are always ! chosen strictly within the integration region, so that endpoint ! singularities are automatically avoided. ! The function to be integrated has its own datatype, defined in the ! header file `gsl_monte.h'. ! - Data Type: gsl_monte_function ! This data type defines a general function with parameters for Monte ! Carlo integration. ! `double (* f) (double * X, size_t DIM, void * PARAMS)' ! this function should return the value f(x,params) for ! argument X and parameters PARAMS, where X is an array of size ! DIM giving the coordinates of the point where the function is ! to be evaluated. ! `size_t dim' ! the number of dimensions for X ! `void * params' ! a pointer to the parameters of the function ! Here is an example for a quadratic function in two dimensions, ! ! f(x,y) = a x^2 + b x y + c y^2 ! ! with a = 3, b = 2, c = 1. The following code defines a ! `gsl_monte_function' `F' which you could pass to an integrator: ! ! struct my_f_params { double a; double b; double c; }; ! ! double ! my_f (double x, size_t dim, void * p) { ! struct my_f_params * fp = (struct my_f_params *)p; ! ! if (dim != 2) ! { ! fprintf (stderr, "error: dim != 2"); ! abort (); ! } ! ! return fp->a * x[0] * x[0] ! + fp->b * x[0] * x[1] ! + fp->c * x[1] * x[1]; ! } ! ! gsl_monte_function F; ! struct my_f_params params = { 3.0, 2.0, 1.0 }; ! ! F.function = &my_f; ! F.dim = 2; ! F.params = ¶ms; ! The function f(x) can be evaluated using the following macro, ! ! #define GSL_MONTE_FN_EVAL(F,x) ! (*((F)->function))(x,(F)->dim,(F)->params)  ! File: gsl-ref.info, Node: PLAIN Monte Carlo, Next: MISER, Prev: Monte Carlo Interface, Up: Monte Carlo Integration ! PLAIN Monte Carlo ! ================= ! ! The plain Monte Carlo algorithm samples points randomly from the ! integration region to estimate the integral and its error. Using this ! algorithm the estimate of the integral E(f; N) for N randomly ! distributed points x_i is given by, ! ! E(f; N) = = V = (V / N) \sum_i^N f(x_i). ! ! where V is the volume of the integration region. The error on this ! estimate \sigma(E;N) is calculated from the estimated variance of the ! mean, ! ! \sigma^2 (E; N) = (V / N) \sum_i^N (f(x_i) - )^2 ! ! For large N this variance decreases asymptotically as var(f)/N, where ! var(f) is the true variance of the function over the integration ! region. The error estimate itself should decrease as ! \sigma(f)/\sqrt{N}. The familiar law of errors decreasing as ! 1/\sqrt{N} applies -- to reduce the error by a factor of 10 requires a ! 100-fold increase in the number of sample points. The functions described in this section are declared in the header ! file `gsl_monte_plain.h'. ! ! - Function: gsl_monte_plain_state * gsl_monte_plain_alloc (size_t DIM) ! This function allocates and initializes a workspace for Monte Carlo ! integration in DIM dimensions. ! ! - Function: int gsl_monte_plain_init (gsl_monte_plain_state* S) ! This function initializes a previously allocated integration state. ! This allows an existing workspace to be reused for different ! integrations. ! ! - Function: int gsl_monte_plain_integrate (gsl_monte_function * F, ! double * XL, double * XU, size_t DIM, size_t CALLS, gsl_rng * ! R, gsl_monte_plain_state * S, double * RESULT, double * ! ABSERR) ! This routines uses the plain Monte Carlo algorithm to integrate the ! function F over the DIM-dimensional hypercubic region defined by ! the lower and upper limits in the arrays XL and XU, each of size ! DIM. The integration uses a fixed number of function calls CALLS, ! and obtains random sampling points using the random number ! generator R. A previously allocated workspace S must be supplied. ! The result of the integration is returned in RESULT, with an ! estimated absolute error ABSERR. ! ! - Function: void gsl_monte_plain_free (gsl_monte_plain_state * S) ! This function frees the memory associated with the integrator state ! S. ! !  ! File: gsl-ref.info, Node: MISER, Next: VEGAS, Prev: PLAIN Monte Carlo, Up: Monte Carlo Integration ! ! MISER ! ===== ! ! The MISER algorithm of Press and Farrar is based on recursive ! stratified sampling. This technique aims to reduce the overall ! integration error by concentrating integration points in the regions of ! highest variance. ! ! The idea of stratified sampling begins with the observation that for ! two disjoint regions a and b with Monte Carlo estimates of the integral ! E_a(f) and E_b(f) and variances \sigma_a^2(f) and \sigma_b^2(f), the ! variance Var(f) of the combined estimate E(f) = (1/2) (E_a(f) + E_b(f)) ! is given by, ! ! Var(f) = (\sigma_a^2(f) / 4 N_a) + (\sigma_b^2(f) / 4 N_b) ! ! It can be shown that this variance is minimized by distributing the ! points such that, ! ! N_a / (N_a + N_b) = \sigma_a / (\sigma_a + \sigma_b) ! ! Hence the smallest error estimate is obtained by allocating sample ! points in proportion to the standard deviation of the function in each ! sub-region. ! ! The MISER algorithm proceeds by bisecting the integration region ! along one coordinate axis to give two sub-regions at each step. The ! direction is chosen by examining all d possible bisections and ! selecting the one which will minimize the combined variance of the two ! sub-regions. The variance in the sub-regions is estimated by sampling ! with a fraction of the total number of points available to the current ! step. The same procedure is then repeated recursively for each of the ! two half-spaces from the best bisection. The remaining sample points are ! allocated to the sub-regions using the formula for N_a and N_b. This ! recursive allocation of integration points continues down to a ! user-specified depth where each sub-region is integrated using a plain ! Monte Carlo estimate. These individual values and their error ! estimates are then combined upwards to give an overall result and an ! estimate of its error. ! ! The functions described in this section are declared in the header ! file `gsl_monte_miser.h'. ! ! - Function: gsl_monte_miser_state * gsl_monte_miser_alloc (size_t DIM) ! This function allocates and initializes a workspace for Monte Carlo ! integration in DIM dimensions. The workspace is used to maintain ! the state of the integration. ! ! - Function: int gsl_monte_miser_init (gsl_monte_miser_state* S) ! This function initializes a previously allocated integration state. ! This allows an existing workspace to be reused for different ! integrations. ! ! - Function: int gsl_monte_miser_integrate (gsl_monte_function * F, ! double * XL, double * XU, size_t DIM, size_t CALLS, gsl_rng * ! R, gsl_monte_miser_state * S, double * RESULT, double * ! ABSERR) ! This routines uses the MISER Monte Carlo algorithm to integrate the ! function F over the DIM-dimensional hypercubic region defined by ! the lower and upper limits in the arrays XL and XU, each of size ! DIM. The integration uses a fixed number of function calls CALLS, ! and obtains random sampling points using the random number ! generator R. A previously allocated workspace S must be supplied. ! The result of the integration is returned in RESULT, with an ! estimated absolute error ABSERR. ! ! - Function: void gsl_monte_miser_free (gsl_monte_miser_state * S) ! This function frees the memory associated with the integrator state ! S. ! ! The MISER algorithm has several configurable parameters. The ! following variables can be accessed through the `gsl_monte_miser_state' ! struct, ! ! - Variable: double estimate_frac ! This parameter specifies the fraction of the currently available ! number of function calls which are allocated to estimating the ! variance at each recursive step. The default value is 0.1. ! ! - Variable: size_t min_calls ! This parameter specifies the minimum number of function calls ! required for each estimate of the variance. If the number of ! function calls allocated to the estimate using ESTIMATE_FRAC falls ! below MIN_CALLS then MIN_CALLS are used instead. This ensures ! that each estimate maintains a reasonable level of accuracy. The ! default value of MIN_CALLS is `16 * dim'. ! ! - Variable: size_t min_calls_per_bisection ! This parameter specifies the minimum number of function calls ! required to proceed with a bisection step. When a recursive step ! has fewer calls available than MIN_CALLS_PER_BISECTION it performs ! a plain Monte Carlo estimate of the current sub-region and ! terminates its branch of the recursion. The default value of this ! parameter is `32 * min_calls'. ! ! - Variable: double alpha ! This parameter controls how the estimated variances for the two ! sub-regions of a bisection are combined when allocating points. ! With recursive sampling the overall variance should scale better ! than 1/N, since the values from the sub-regions will be obtained ! using a procedure which explicitly minimizes their variance. To ! accommodate this behavior the MISER algorithm allows the total ! variance to depend on a scaling parameter \alpha, ! ! Var(f) = {\sigma_a \over N_a^\alpha} + {\sigma_b \over N_b^\alpha} ! ! The authors of the original paper describing MISER recommend the ! value \alpha = 2 as a good choice, obtained from numerical ! experiments, and this is used as the default value in this ! implementation. ! ! - Variable: double dither ! This parameter introduces a random fractional variation of size ! DITHER into each bisection, which can be used to break the ! symmetry of integrands which are concentrated near the exact ! center of the hypercubic integration region. The default value of ! dither is zero, so no variation is introduced. If needed, a ! typical value of DITHER is around 0.1. ! !  ! File: gsl-ref.info, Node: VEGAS, Next: Monte Carlo Examples, Prev: MISER, Up: Monte Carlo Integration ! ! VEGAS ! ===== ! ! The VEGAS algorithm of Lepage is based on importance sampling. It ! samples points from the probability distribution described by the ! function |f|, so that the points are concentrated in the regions that ! make the largest contribution to the integral. ! ! In general, if the Monte Carlo integral of f is sampled with points ! distributed according to a probability distribution described by the ! function g, we obtain an estimate E_g(f; N), ! ! E_g(f; N) = E(f/g; N) ! ! with a corresponding variance, ! ! Var_g(f; N) = Var(f/g; N) ! ! If the probability distribution is chosen as g = |f|/I(|f|) then it can ! be shown that the variance V_g(f; N) vanishes, and the error in the ! estimate will be zero. In practice it is not possible to sample from ! the exact distribution g for an arbitrary function, so importance ! sampling algorithms aim to produce efficient approximations to the ! desired distribution. ! ! The VEGAS algorithm approximates the exact distribution by making a ! number of passes over the integration region while histogramming the ! function f. Each histogram is used to define a sampling distribution ! for the next pass. Asymptotically this procedure converges to the ! desired distribution. In order to avoid the number of histogram bins ! growing like K^d the probability distribution is approximated by a ! separable function: g(x_1, x_2, ...) = g_1(x_1) g_2(x_2) ... so that ! the number of bins required is only Kd. This is equivalent to locating ! the peaks of the function from the projections of the integrand onto ! the coordinate axes. The efficiency of VEGAS depends on the validity ! of this assumption. It is most efficient when the peaks of the ! integrand are well-localized. If an integrand can be rewritten in a ! form which is approximately separable this will increase the efficiency ! of integration with VEGAS. ! ! VEGAS incorporates a number of additional features, and combines both ! stratified sampling and importance sampling. The integration region is ! divided into a number of "boxes", with each box getting a fixed number ! of points (the goal is 2). Each box can then have a fractional number ! of bins, but if bins/box is less than two, Vegas switches to a kind ! variance reduction (rather than importance sampling). ! ! - Function: gsl_monte_vegas_state * gsl_monte_vegas_alloc (size_t DIM) ! This function allocates and initializes a workspace for Monte Carlo ! integration in DIM dimensions. The workspace is used to maintain ! the state of the integration. ! ! - Function: int gsl_monte_vegas_init (gsl_monte_vegas_state* S) ! This function initializes a previously allocated integration state. ! This allows an existing workspace to be reused for different ! integrations. ! ! - Function: int gsl_monte_vegas_integrate (gsl_monte_function * F, ! double * XL, double * XU, size_t DIM, size_t CALLS, gsl_rng * ! R, gsl_monte_vegas_state * S, double * RESULT, double * ! ABSERR) ! This routines uses the VEGAS Monte Carlo algorithm to integrate the ! function F over the DIM-dimensional hypercubic region defined by ! the lower and upper limits in the arrays XL and XU, each of size ! DIM. The integration uses a fixed number of function calls CALLS, ! and obtains random sampling points using the random number ! generator R. A previously allocated workspace S must be supplied. ! The result of the integration is returned in RESULT, with an ! estimated absolute error ABSERR. The result and its error ! estimate are based on a weighted average of independent samples. ! The chi-squared per degree of freedom for the weighted average is ! returned via the state struct component, S->CHISQ, and must be ! consistent with 1 for the weighted average to be reliable. ! ! - Function: void gsl_monte_vegas_free (gsl_monte_vegas_state * S) ! This function frees the memory associated with the integrator state ! S. ! ! The VEGAS algorithm computes a number of independent estimates of the ! integral internally, according to the `iterations' parameter described ! below, and returns their weighted average. Random sampling of the ! integrand can occasionally produce an estimate where the error is zero, ! particularly if the function is constant in some regions. An estimate ! with zero error causes the weighted average to break down and must be ! handled separately. In the original Fortran implementations of VEGAS ! the error estimate is made non-zero by substituting a small value ! (typically `1e-30'). The implementation in GSL differs from this and ! avoids the use of an arbitrary constant - it either assigns the value a ! weight which is the average weight of the preceding estimates or ! discards it according to the following procedure, ! ! current estimate has zero error, weighted average has finite error ! The current estimate is assigned a weight which is the average ! weight of the preceding estimates. ! ! current estimate has finite error, previous estimates had zero error ! The previous estimates are discarded and the weighted averaging ! procedure begins with the current estimate. ! ! current estimate has zero error, previous estimates had zero error ! The estimates are averaged using the arithmetic mean, but no error ! is computed. ! ! The VEGAS algorithm is highly configurable. The following variables ! can be accessed through the `gsl_monte_vegas_state' struct, ! ! - Variable: double result ! - Variable: double sigma ! These parameters contain the raw value of the integral RESULT and ! its error SIGMA from the last iteration of the algorithm. ! ! - Variable: double chisq ! This parameter gives the chi-squared per degree of freedom for the ! weighted estimate of the integral. The value of CHISQ should be ! close to 1. A value of CHISQ which differs significantly from 1 ! indicates that the values from different iterations are ! inconsistent. In this case the weighted error will be ! under-estimated, and further iterations of the algorithm are ! needed to obtain reliable results. ! ! - Variable: double alpha ! The parameter `alpha' controls the stiffness of the rebinning ! algorithm. It is typically set between one and two. A value of ! zero prevents rebinning of the grid. The default value is 1.5. ! ! - Variable: size_t iterations ! The number of iterations to perform for each call to the routine. ! The default value is 5 iterations. ! ! - Variable: int stage ! Setting this determines the "stage" of the calculation. Normally, ! `stage = 0' which begins with a new uniform grid and empty weighted ! average. Calling vegas with `stage = 1' retains the grid from the ! previous run but discards the weighted average, so that one can ! "tune" the grid using a relatively small number of points and then ! do a large run with `stage = 1' on the optimized grid. Setting ! `stage = 2' keeps the grid and the weighted average from the ! previous run, but may increase (or decrease) the number of ! histogram bins in the grid depending on the number of calls ! available. Choosing `stage = 3' enters at the main loop, so that ! nothing is changed, and is equivalent to performing additional ! iterations in a previous call. ! ! - Variable: int mode ! The possible choices are `GSL_VEGAS_MODE_IMPORTANCE', ! `GSL_VEGAS_MODE_STRATIFIED', `GSL_VEGAS_MODE_IMPORTANCE_ONLY'. ! This determines whether VEGAS will use importance sampling or ! stratified sampling, or whether it can pick on its own. In low ! dimensions VEGAS uses strict stratified sampling (more precisely, ! stratified sampling is chosen if there are fewer than 2 bins per ! box). ! ! - Variable: int verbose ! - Variable: FILE * ostream ! These parameters set the level of information printed by VEGAS. All ! information is written to the stream OSTREAM. The default setting ! of VERBOSE is `-1', which turns off all output. A VERBOSE value ! of `0' prints summary information about the weighted average and ! final result, while a value of `1' also displays the grid ! coordinates. A value of `2' prints information from the rebinning ! procedure for each iteration. ! !  ! File: gsl-ref.info, Node: Monte Carlo Examples, Next: Monte Carlo Integration References and Further Reading, Prev: VEGAS, Up: Monte Carlo Integration ! ! Examples ! ======== ! ! The example program below uses the Monte Carlo routines to estimate the ! value of the following 3-dimensional integral from the theory of random ! walks, ! ! I = \int_{-pi}^{+pi} {dk_x/(2 pi)} ! \int_{-pi}^{+pi} {dk_y/(2 pi)} ! \int_{-pi}^{+pi} {dk_z/(2 pi)} ! 1 / (1 - cos(k_x)cos(k_y)cos(k_z)) ! ! The analytic value of this integral can be shown to be I = ! \Gamma(1/4)^4/(4 \pi^3) = 1.393203929685676859.... The integral gives ! the mean time spent at the origin by a random walk on a body-centered ! cubic lattice in three dimensions. ! ! For simplicity we will compute the integral over the region (0,0,0) ! to (\pi,\pi,\pi) and multiply by 8 to obtain the full result. The ! integral is slowly varying in the middle of the region but has ! integrable singularities at the corners (0,0,0), (0,\pi,\pi), ! (\pi,0,\pi) and (\pi,\pi,0). The Monte Carlo routines only select ! points which are strictly within the integration region and so no ! special measures are needed to avoid these singularities. ! ! #include ! #include ! #include ! #include ! #include ! #include ! ! /* Computation of the integral, ! ! I = int (dx dy dz)/(2pi)^3 1/(1-cos(x)cos(y)cos(z)) ! ! over (-pi,-pi,-pi) to (+pi, +pi, +pi). The exact answer ! is Gamma(1/4)^4/(4 pi^3). This example is taken from ! C.Itzykson, J.M.Drouffe, "Statistical Field Theory - ! Volume 1", Section 1.1, p21, which cites the original ! paper M.L.Glasser, I.J.Zucker, Proc.Natl.Acad.Sci.USA 74 ! 1800 (1977) */ ! ! /* For simplicity we compute the integral over the region ! (0,0,0) -> (pi,pi,pi) and multiply by 8 */ ! ! double exact = 1.3932039296856768591842462603255; ! ! double ! g (double *k, size_t dim, void *params) ! { ! double A = 1.0 / (M_PI * M_PI * M_PI); ! return A / (1.0 - cos (k[0]) * cos (k[1]) * cos (k[2])); ! } ! ! void ! display_results (char *title, double result, double error) ! { ! printf ("%s ==================\n", title); ! printf ("result = % .6f\n", result); ! printf ("sigma = % .6f\n", error); ! printf ("exact = % .6f\n", exact); ! printf ("error = % .6f = %.1g sigma\n", result - exact, ! fabs (result - exact) / error); ! } ! ! int ! main (void) ! { ! double res, err; ! ! double xl[3] = { 0, 0, 0 }; ! double xu[3] = { M_PI, M_PI, M_PI }; ! ! const gsl_rng_type *T; ! gsl_rng *r; ! ! gsl_monte_function G = { &g, 3, 0 }; ! ! size_t calls = 500000; ! ! gsl_rng_env_setup (); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! { ! gsl_monte_plain_state *s = gsl_monte_plain_alloc (3); ! gsl_monte_plain_integrate (&G, xl, xu, 3, calls, r, s, ! &res, &err); ! gsl_monte_plain_free (s); ! ! display_results ("plain", res, err); ! } ! ! { ! gsl_monte_miser_state *s = gsl_monte_miser_alloc (3); ! gsl_monte_miser_integrate (&G, xl, xu, 3, calls, r, s, ! &res, &err); ! gsl_monte_miser_free (s); ! ! display_results ("miser", res, err); ! } ! ! { ! gsl_monte_vegas_state *s = gsl_monte_vegas_alloc (3); ! ! gsl_monte_vegas_integrate (&G, xl, xu, 3, 10000, r, s, ! &res, &err); ! display_results ("vegas warm-up", res, err); ! ! printf ("converging...\n"); ! ! do ! { ! gsl_monte_vegas_integrate (&G, xl, xu, 3, calls/5, r, s, ! &res, &err); ! printf ("result = % .6f sigma = % .6f " ! "chisq/dof = %.1f\n", res, err, s->chisq); ! } ! while (fabs (s->chisq - 1.0) > 0.5); ! ! display_results ("vegas final", res, err); ! ! gsl_monte_vegas_free (s); ! } ! return 0; ! } ! ! With 500,000 function calls the plain Monte Carlo algorithm achieves a ! fractional error of 0.6%. The estimated error `sigma' is consistent ! with the actual error, and the computed result differs from the true ! result by about one standard deviation, ! ! plain ================== ! result = 1.385867 ! sigma = 0.007938 ! exact = 1.393204 ! error = -0.007337 = 0.9 sigma ! ! The MISER algorithm reduces the error by a factor of two, and also ! correctly estimates the error, ! ! miser ================== ! result = 1.390656 ! sigma = 0.003743 ! exact = 1.393204 ! error = -0.002548 = 0.7 sigma ! ! In the case of the VEGAS algorithm the program uses an initial warm-up ! run of 10,000 function calls to prepare, or "warm up", the grid. This ! is followed by a main run with five iterations of 100,000 function ! calls. The chi-squared per degree of freedom for the five iterations are ! checked for consistency with 1, and the run is repeated if the results ! have not converged. In this case the estimates are consistent on the ! first pass. ! ! vegas warm-up ================== ! result = 1.386925 ! sigma = 0.002651 ! exact = 1.393204 ! error = -0.006278 = 2 sigma ! converging... ! result = 1.392957 sigma = 0.000452 chisq/dof = 1.1 ! vegas final ================== ! result = 1.392957 ! sigma = 0.000452 ! exact = 1.393204 ! error = -0.000247 = 0.5 sigma ! ! If the value of `chisq' had differed significantly from 1 it would ! indicate inconsistent results, with a correspondingly underestimated ! error. The final estimate from VEGAS (using a similar number of ! function calls) is significantly more accurate than the other two ! algorithms. ! !  ! File: gsl-ref.info, Node: Monte Carlo Integration References and Further Reading, Prev: Monte Carlo Examples, Up: Monte Carlo Integration ! ! References and Further Reading ! ============================== ! ! The MISER algorithm is described in the following article, ! ! W.H. Press, G.R. Farrar, `Recursive Stratified Sampling for ! Multidimensional Monte Carlo Integration', Computers in Physics, ! v4 (1990), pp190-195. ! ! The VEGAS algorithm is described in the following papers, ! ! G.P. Lepage, `A New Algorithm for Adaptive Multidimensional ! Integration', Journal of Computational Physics 27, 192-203, (1978) ! ! G.P. Lepage, `VEGAS: An Adaptive Multi-dimensional Integration ! Program', Cornell preprint CLNS 80-447, March 1980 ! !  ! File: gsl-ref.info, Node: Simulated Annealing, Next: Ordinary Differential Equations, Prev: Monte Carlo Integration, Up: Top ! ! Simulated Annealing ! ******************* ! ! Stochastic search techniques are used when the structure of a space is ! not well understood or is not smooth, so that techniques like Newton's ! method (which requires calculating Jacobian derivative matrices) cannot ! be used. In particular, these techniques are frequently used to solve ! combinatorial optimization problems, such as the traveling salesman ! problem. ! ! The goal is to find a point in the space at which a real valued ! "energy function" (or "cost function") is minimized. Simulated ! annealing is a minimization technique which has given good results in ! avoiding local minima; it is based on the idea of taking a random walk ! through the space at successively lower temperatures, where the ! probability of taking a step is given by a Boltzmann distribution. ! ! The functions described in this chapter are declared in the header ! file `gsl_siman.h'. ! ! * Menu: ! ! * Simulated Annealing algorithm:: ! * Simulated Annealing functions:: ! * Examples with Simulated Annealing:: ! !  ! File: gsl-ref.info, Node: Simulated Annealing algorithm, Next: Simulated Annealing functions, Prev: Simulated Annealing, Up: Simulated Annealing ! ! Simulated Annealing algorithm ! ============================= ! ! The simulated annealing algorithm takes random walks through the problem ! space, looking for points with low energies; in these random walks, the ! probability of taking a step is determined by the Boltzmann ! distribution, ! ! p = e^{-(E_{i+1} - E_i)/(kT)} ! ! if E_{i+1} > E_i, and p = 1 when E_{i+1} <= E_i. ! ! In other words, a step will occur if the new energy is lower. If ! the new energy is higher, the transition can still occur, and its ! likelihood is proportional to the temperature T and inversely ! proportional to the energy difference E_{i+1} - E_i. ! ! The temperature T is initially set to a high value, and a random ! walk is carried out at that temperature. Then the temperature is ! lowered very slightly according to a "cooling schedule", for example: T ! -> T/mu_T where \mu_T is slightly greater than 1. ! ! The slight probability of taking a step that gives higher energy is ! what allows simulated annealing to frequently get out of local minima. ! !  ! File: gsl-ref.info, Node: Simulated Annealing functions, Next: Examples with Simulated Annealing, Prev: Simulated Annealing algorithm, Up: Simulated Annealing ! ! Simulated Annealing functions ! ============================= ! ! - Function: void gsl_siman_solve (const gsl_rng * R, void *X0_P, ! gsl_siman_Efunc_t EF, gsl_siman_step_t TAKE_STEP, ! gsl_siman_metric_t DISTANCE, gsl_siman_print_t ! PRINT_POSITION, gsl_siman_copy_t COPYFUNC, ! gsl_siman_copy_construct_t COPY_CONSTRUCTOR, ! gsl_siman_destroy_t DESTRUCTOR, size_t ELEMENT_SIZE, ! gsl_siman_params_t PARAMS) ! This function performs a simulated annealing search through a given ! space. The space is specified by providing the functions EF and ! DISTANCE. The simulated annealing steps are generated using the ! random number generator R and the function TAKE_STEP. ! ! The starting configuration of the system should be given by X0_P. ! The routine offers two modes for updating configurations, a ! fixed-size mode and a variable-size mode. In the fixed-size mode ! the configuration is stored as a single block of memory of size ! ELEMENT_SIZE. Copies of this configuration are created, copied ! and destroyed internally using the standard library functions ! `malloc', `memcpy' and `free'. The function pointers COPYFUNC, ! COPY_CONSTRUCTOR and DESTRUCTOR should be null pointers in ! fixed-size mode. In the variable-size mode the functions ! COPYFUNC, COPY_CONSTRUCTOR and DESTRUCTOR are used to create, copy ! and destroy configurations internally. The variable ELEMENT_SIZE ! should be zero in the variable-size mode. ! ! The PARAMS structure (described below) controls the run by ! providing the temperature schedule and other tunable parameters to ! the algorithm. ! ! On exit the best result achieved during the search is placed in ! `*X0_P'. If the annealing process has been successful this should ! be a good approximation to the optimal point in the space. ! ! If the function pointer PRINT_POSITION is not null, a debugging ! log will be printed to `stdout' with the following columns: ! ! number_of_iterations temperature x x-(*x0_p) Ef(x) ! ! and the output of the function PRINT_POSITION itself. If ! PRINT_POSITION is null then no information is printed. ! ! The simulated annealing routines require several user-specified ! functions to define the configuration space and energy function. The ! prototypes for these functions are given below. ! ! - Data Type: gsl_siman_Efunc_t ! This function type should return the energy of a configuration XP. ! double (*gsl_siman_Efunc_t) (void *xp) ! ! - Data Type: gsl_siman_step_t ! This function type should modify the configuration XP using a ! random step taken from the generator R, up to a maximum distance of ! STEP_SIZE. ! void (*gsl_siman_step_t) (const gsl_rng *r, void *xp, ! double step_size) ! ! - Data Type: gsl_siman_metric_t ! This function type should return the distance between two ! configurations XP and YP. ! double (*gsl_siman_metric_t) (void *xp, void *yp) ! ! - Data Type: gsl_siman_print_t ! This function type should print the contents of the configuration ! XP. ! void (*gsl_siman_print_t) (void *xp) ! ! - Data Type: gsl_siman_copy_t ! This function type should copy the configuration DEST into SOURCE. ! void (*gsl_siman_copy_t) (void *source, void *dest) ! ! - Data Type: gsl_siman_copy_construct_t ! This function type should create a new copy of the configuration ! XP. ! void * (*gsl_siman_copy_construct_t) (void *xp) ! ! - Data Type: gsl_siman_destroy_t ! This function type should destroy the configuration XP, freeing its ! memory. ! void (*gsl_siman_destroy_t) (void *xp) ! ! - Data Type: gsl_siman_params_t ! These are the parameters that control a run of `gsl_siman_solve'. ! This structure contains all the information needed to control the ! search, beyond the energy function, the step function and the ! initial guess. ! ! `int n_tries' ! The number of points to try for each step ! ! `int iters_fixed_T' ! The number of iterations at each temperature ! ! `double step_size' ! The maximum step size in the random walk ! ! `double k, t_initial, mu_t, t_min' ! The parameters of the Boltzmann distribution and cooling ! schedule ! !  ! File: gsl-ref.info, Node: Examples with Simulated Annealing, Prev: Simulated Annealing functions, Up: Simulated Annealing ! ! Examples ! ======== ! ! The simulated Annealing package is clumsy, and it has to be because it ! is written in C, for C callers, and tries to be polymorphic at the same ! time. But here we provide some examples which can be pasted into your ! application with little change and should make things easier. * Menu: ! * Trivial example:: ! * Traveling Salesman Problem::  ! File: gsl-ref.info, Node: Trivial example, Next: Traveling Salesman Problem, Prev: Examples with Simulated Annealing, Up: Examples with Simulated Annealing ! Trivial example ! --------------- ! The first example, in one dimensional cartesian space, sets up an energy ! function which is a damped sine wave; this has many local minima, but ! only one global minimum, somewhere between 1.0 and 1.5. The initial ! guess given is 15.5, which is several local minima away from the global ! minimum. + #include + #include + #include + + /* set up parameters for this simulated annealing run */ + + /* how many points do we try before stepping */ + #define N_TRIES 200 + + /* how many iterations for each T? */ + #define ITERS_FIXED_T 10 + + /* max step size in random walk */ + #define STEP_SIZE 10 + + /* Boltzmann constant */ + #define K 1.0 + + /* initial temperature */ + #define T_INITIAL 0.002 + + /* damping factor for temperature */ + #define MU_T 1.005 + #define T_MIN 2.0e-6 + + gsl_siman_params_t params + = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, + K, T_INITIAL, MU_T, T_MIN}; + + /* now some functions to test in one dimension */ + double E1(void *xp) + { + double x = * ((double *) xp); + + return exp(-pow((x-1.0),2.0))*sin(8*x); + } + + double M1(void *xp, void *yp) + { + double x = *((double *) xp); + double y = *((double *) yp); + + return fabs(x - y); + } + + void S1(const gsl_rng * r, void *xp, double step_size) + { + double old_x = *((double *) xp); + double new_x; + + double u = gsl_rng_uniform(r); + new_x = u * 2 * step_size - step_size + old_x; + + memcpy(xp, &new_x, sizeof(new_x)); + } + + void P1(void *xp) + { + printf ("%12g", *((double *) xp)); + } + + int + main(int argc, char *argv[]) + { + const gsl_rng_type * T; + gsl_rng * r; + + double x_initial = 15.5; + + gsl_rng_env_setup(); + + T = gsl_rng_default; + r = gsl_rng_alloc(T); + + gsl_siman_solve(r, &x_initial, E1, S1, M1, P1, + NULL, NULL, NULL, + sizeof(double), params); + return 0; + } + + Here are a couple of plots that are generated by running + `siman_test' in the following way: + ./siman_test | grep -v "^#" + | xyplot -xyil -y -0.88 -0.83 -d "x...y" + | xyps -d > siman-test.eps + ./siman_test | grep -v "^#" + | xyplot -xyil -xl "generation" -yl "energy" -d "x..y" + | xyps -d > siman-energy.eps + +  + File: gsl-ref.info, Node: Traveling Salesman Problem, Prev: Trivial example, Up: Examples with Simulated Annealing + + Traveling Salesman Problem + -------------------------- + + The TSP ("Traveling Salesman Problem") is the classic combinatorial + optimization problem. I have provided a very simple version of it, + based on the coordinates of twelve cities in the southwestern United + States. This should maybe be called the "Flying Salesman Problem", + since I am using the great-circle distance between cities, rather than + the driving distance. Also: I assume the earth is a sphere, so I don't + use geoid distances. + + The `gsl_siman_solve()' routine finds a route which is 3490.62 + Kilometers long; this is confirmed by an exhaustive search of all + possible routes with the same initial city. + + The full code can be found in `siman/siman_tsp.c', but I include + here some plots generated with in the following way: + ./siman_tsp > tsp.output + grep -v "^#" tsp.output + | xyplot -xyil -d "x................y" + -lx "generation" -ly "distance" + -lt "TSP -- 12 southwest cities" + | xyps -d > 12-cities.eps + grep initial_city_coord tsp.output + | awk '{print $2, $3, $4, $5}' + | xyplot -xyil -lb0 -cs 0.8 + -lx "longitude (- means west)" + -ly "latitude" + -lt "TSP -- initial-order" + | xyps -d > initial-route.eps + grep final_city_coord tsp.output + | awk '{print $2, $3, $4, $5}' + | xyplot -xyil -lb0 -cs 0.8 + -lx "longitude (- means west)" + -ly "latitude" + -lt "TSP -- final-order" + | xyps -d > final-route.eps + + This is the output showing the initial order of the cities; + longitude is negative, since it is west and I want the plot to look + like a map. + # initial coordinates of cities (longitude and latitude) + ###initial_city_coord: -105.95 35.68 Santa Fe + ###initial_city_coord: -112.07 33.54 Phoenix + ###initial_city_coord: -106.62 35.12 Albuquerque + ###initial_city_coord: -103.2 34.41 Clovis + ###initial_city_coord: -107.87 37.29 Durango + ###initial_city_coord: -96.77 32.79 Dallas + ###initial_city_coord: -105.92 35.77 Tesuque + ###initial_city_coord: -107.84 35.15 Grants + ###initial_city_coord: -106.28 35.89 Los Alamos + ###initial_city_coord: -106.76 32.34 Las Cruces + ###initial_city_coord: -108.58 37.35 Cortez + ###initial_city_coord: -108.74 35.52 Gallup + ###initial_city_coord: -105.95 35.68 Santa Fe + + The optimal route turns out to be: + # final coordinates of cities (longitude and latitude) + ###final_city_coord: -105.95 35.68 Santa Fe + ###final_city_coord: -106.28 35.89 Los Alamos + ###final_city_coord: -106.62 35.12 Albuquerque + ###final_city_coord: -107.84 35.15 Grants + ###final_city_coord: -107.87 37.29 Durango + ###final_city_coord: -108.58 37.35 Cortez + ###final_city_coord: -108.74 35.52 Gallup + ###final_city_coord: -112.07 33.54 Phoenix + ###final_city_coord: -106.76 32.34 Las Cruces + ###final_city_coord: -96.77 32.79 Dallas + ###final_city_coord: -103.2 34.41 Clovis + ###final_city_coord: -105.92 35.77 Tesuque + ###final_city_coord: -105.95 35.68 Santa Fe + + Here's a plot of the cost function (energy) versus generation (point in + the calculation at which a new temperature is set) for this problem: + +  + File: gsl-ref.info, Node: Ordinary Differential Equations, Next: Interpolation, Prev: Simulated Annealing, Up: Top + + Ordinary Differential Equations + ******************************* + + This chapter describes functions for solving ordinary differential + equation (ODE) initial value problems. The library provides a variety + of low-level methods, such as Runge-Kutta and Bulirsch-Stoer routines, + and higher-level components for adaptive step-size control. The + components can be combined by the user to achieve the desired solution, + with full access to any intermediate steps. ! These functions are declared in the header file `gsl_odeiv.h'. ! * Menu: ! * Defining the ODE System:: ! * Stepping Functions:: ! * Adaptive Step-size Control:: ! * Evolution:: ! * ODE Example programs:: ! * ODE References and Further Reading::  ! File: gsl-ref.info, Node: Defining the ODE System, Next: Stepping Functions, Up: Ordinary Differential Equations ! Defining the ODE System ! ======================= ! The routines solve the general n-dimensional first-order system, ! dy_i(t)/dt = f_i(t, y_1(t), ..., y_n(t)) ! for i = 1, \dots, n. The stepping functions rely on the vector of ! derivatives f_i and the Jacobian matrix, J_{ij} = df_i(t,y(t)) / dy_j. ! A system of equations is defined using the `gsl_odeiv_system' datatype. ! - Data Type: gsl_odeiv_system ! This data type defines a general ODE system with arbitrary ! parameters. ! `int (* function) (double t, const double y[], double dydt[], void * params)' ! This function should store the vector elements ! f_i(t,y,params) in the array DYDT, for arguments (T,Y) and ! parameters PARAMS ! `int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params);' ! This function should store the vector elements ! df_i(t,y,params)/dt in the array DFDT and the Jacobian matrix ! J_{ij} in the array DFDY regarded as a row-ordered matrix ! `J(i,j) = dfdy[i * dimension + j]' where `dimension' is the ! dimension of the system. ! Some of the simpler solver algorithms do not make use of the ! Jacobian matrix, so it is not always strictly necessary to ! provide it (the `jacobian' element of the struct can be ! replaced by a null pointer for those algorithms). However, ! it is useful to provide the Jacobian to allow the solver ! algorithms to be interchanged - the best algorithms make use ! of the Jacobian. ! `size_t dimension;' ! This is the dimension of the system of equations ! ! `void * params' ! This is a pointer to the arbitrary parameters of the system.  ! File: gsl-ref.info, Node: Stepping Functions, Next: Adaptive Step-size Control, Prev: Defining the ODE System, Up: Ordinary Differential Equations ! Stepping Functions ! ================== ! The lowest level components are the "stepping functions" which advance ! a solution from time t to t+h for a fixed step-size h and estimate the ! resulting local error. ! ! - Function: gsl_odeiv_step * gsl_odeiv_step_alloc (const ! gsl_odeiv_step_type * T, size_t DIM) ! This function returns a pointer to a newly allocated instance of a ! stepping function of type T for a system of DIM dimensions. ! ! - Function: int gsl_odeiv_step_reset (gsl_odeiv_step * S) ! This function resets the stepping function S. It should be used ! whenever the next use of S will not be a continuation of a ! previous step. ! ! - Function: void gsl_odeiv_step_free (gsl_odeiv_step * S) ! This function frees all the memory associated with the stepping ! function S. ! ! - Function: const char * gsl_odeiv_step_name (const gsl_odeiv_step * S) ! This function returns a pointer to the name of the stepping ! function. For example, ! ! printf ("step method is '%s'\n", ! gsl_odeiv_step_name (s)); ! ! would print something like `step method is 'rk4''. ! ! - Function: unsigned int gsl_odeiv_step_order (const gsl_odeiv_step * ! S) ! This function returns the order of the stepping function on the ! previous step. This order can vary if the stepping function ! itself is adaptive. ! ! - Function: int gsl_odeiv_step_apply (gsl_odeiv_step * S, double T, ! double H, double Y[], double YERR[], const double DYDT_IN[], ! double DYDT_OUT[], const gsl_odeiv_system * DYDT) ! This function applies the stepping function S to the system of ! equations defined by DYDT, using the step size H to advance the ! system from time T and state Y to time T+H. The new state of the ! system is stored in Y on output, with an estimate of the absolute ! error in each component stored in YERR. If the argument DYDT_IN ! is not null it should point an array containing the derivatives ! for the system at time T on input. This is optional as the ! derivatives will be computed internally if they are not provided, ! but allows the reuse of existing derivative information. On ! output the new derivatives of the system at time T+H will be ! stored in DYDT_OUT if it is not null. ! ! The following algorithms are available, ! ! - Step Type: gsl_odeiv_step_rk2 ! Embedded 2nd order Runge-Kutta with 3rd order error estimate. ! ! - Step Type: gsl_odeiv_step_rk4 ! 4th order (classical) Runge-Kutta. ! ! - Step Type: gsl_odeiv_step_rkf45 ! Embedded 4th order Runge-Kutta-Fehlberg method with 5th order error ! estimate. This method is a good general-purpose integrator. ! ! - Step Type: gsl_odeiv_step_rkck ! Embedded 4th order Runge-Kutta Cash-Karp method with 5th order ! error estimate. ! ! - Step Type: gsl_odeiv_step_rk8pd ! Embedded 8th order Runge-Kutta Prince-Dormand method with 9th order ! error estimate. ! ! - Step Type: gsl_odeiv_step_rk2imp ! Implicit 2nd order Runge-Kutta at Gaussian points ! ! - Step Type: gsl_odeiv_step_rk4imp ! Implicit 4th order Runge-Kutta at Gaussian points ! ! - Step Type: gsl_odeiv_step_bsimp ! Implicit Bulirsch-Stoer method of Bader and Deuflhard. This ! algorithm requires the Jacobian. ! ! - Step Type: gsl_odeiv_step_gear1 ! M=1 implicit Gear method ! ! - Step Type: gsl_odeiv_step_gear2 ! M=2 implicit Gear method ! !  ! File: gsl-ref.info, Node: Adaptive Step-size Control, Next: Evolution, Prev: Stepping Functions, Up: Ordinary Differential Equations ! ! Adaptive Step-size Control ! ========================== ! ! The control function examines the proposed change to the solution and ! its error estimate produced by a stepping function and attempts to ! determine the optimal step-size for a user-specified level of error. ! ! - Function: gsl_odeiv_control * gsl_odeiv_control_standard_new (double ! EPS_ABS, double EPS_REL, double A_Y, double A_DYDT) ! The standard control object is a four parameter heuristic based on ! absolute and relative errors EPS_ABS and EPS_REL, and scaling ! factors A_Y and A_DYDT for the system state y(t) and derivatives ! y'(t) respectively. ! ! The step-size adjustment procedure for this method begins by ! computing the desired error level D_i for each component, ! ! D_i = eps_abs + eps_rel * (a_y |y_i| + a_dydt h |y'_i|) ! ! and comparing it with the observed error E_i = |yerr_i|. If the ! observed error E exceeds the desired error level D by more than ! 10% for any component then the method reduces the step-size by an ! appropriate factor, ! ! h_new = h_old * S * (D/E)^(1/q) ! ! where q is the consistency order of method (e.g. q=4 for 4(5) ! embedded RK), and S is a safety factor of 0.9. The ratio D/E is ! taken to be the maximum of the ratios D_i/E_i. ! ! If the observed error E is less than 50% of the desired error ! level D for the maximum ratio D_i/E_i then the algorithm takes the ! opportunity to increase the step-size to bring the error in line ! with the desired level, ! ! h_new = h_old * S * (E/D)^(1/(q+1)) ! ! This encompasses all the standard error scaling methods. ! ! - Function: gsl_odeiv_control * gsl_odeiv_control_y_new (double ! EPS_ABS, double EPS_REL) ! This function creates a new control object which will keep the ! local error on each step within an absolute error of EPS_ABS and ! relative error of EPS_REL with respect to the solution y_i(t). ! This is equivalent to the standard control object with A_Y=1 and ! A_DYDT=0. ! ! - Function: gsl_odeiv_control * gsl_odeiv_control_yp_new (double ! EPS_ABS, double EPS_REL) ! This function creates a new control object which will keep the ! local error on each step within an absolute error of EPS_ABS and ! relative error of EPS_REL with respect to the derivatives of the ! solution y'_i(t) . This is equivalent to the standard control ! object with A_Y=0 and A_DYDT=1. ! ! - Function: gsl_odeiv_control * gsl_odeiv_control_scaled_new (double ! EPS_ABS, double EPS_REL, double A_Y, double A_DYDT, const ! double SCALE_ABS[], size_t DIM) ! This function creates a new control object which uses the same ! algorithm as `gsl_odeiv_control_standard_new' but with an absolute ! error which is scaled for each component by the array SCALE_ABS. ! The formula for D_i for this control object is, ! ! D_i = eps_abs * s_i + eps_rel * (a_y |y_i| + a_dydt h |y'_i|) ! ! where s_i is the i-th component of the array SCALE_ABS. The same ! error control heuristic is used by the Matlab ODE suite. ! ! - Function: gsl_odeiv_control * gsl_odeiv_control_alloc (const ! gsl_odeiv_control_type * T) ! This function returns a pointer to a newly allocated instance of a ! control function of type T. This function is only needed for ! defining new types of control functions. For most purposes the ! standard control functions described above should be sufficient. ! ! - Function: int gsl_odeiv_control_init (gsl_odeiv_control * C, double ! EPS_ABS, double EPS_REL, double A_Y, double A_DYDT) ! This function initializes the control function C with the ! parameters EPS_ABS (absolute error), EPS_REL (relative error), A_Y ! (scaling factor for y) and A_DYDT (scaling factor for derivatives). ! ! - Function: void gsl_odeiv_control_free (gsl_odeiv_control * C) ! This function frees all the memory associated with the control ! function C. ! ! - Function: int gsl_odeiv_control_hadjust (gsl_odeiv_control * C, ! gsl_odeiv_step * S, const double Y0[], const double YERR[], ! const double DYDT[], double * H) ! This function adjusts the step-size H using the control function ! C, and the current values of Y, YERR and DYDT. The stepping ! function STEP is also needed to determine the order of the method. ! If the error in the y-values YERR is found to be too large then ! the step-size H is reduced and the function returns ! `GSL_ODEIV_HADJ_DEC'. If the error is sufficiently small then H ! may be increased and `GSL_ODEIV_HADJ_INC' is returned. The ! function returns `GSL_ODEIV_HADJ_NIL' if the step-size is ! unchanged. The goal of the function is to estimate the largest ! step-size which satisfies the user-specified accuracy requirements ! for the current point. ! ! - Function: const char * gsl_odeiv_control_name (const ! gsl_odeiv_control * C) ! This function returns a pointer to the name of the control ! function. For example, ! ! printf ("control method is '%s'\n", ! gsl_odeiv_control_name (c)); ! ! would print something like `control method is 'standard'' ! !  ! File: gsl-ref.info, Node: Evolution, Next: ODE Example programs, Prev: Adaptive Step-size Control, Up: Ordinary Differential Equations ! ! Evolution ! ========= ! ! The highest level of the system is the evolution function which combines ! the results of a stepping function and control function to reliably ! advance the solution forward over an interval (t_0, t_1). If the ! control function signals that the step-size should be decreased the ! evolution function backs out of the current step and tries the proposed ! smaller step-size. This process is continued until an acceptable ! step-size is found. ! ! - Function: gsl_odeiv_evolve * gsl_odeiv_evolve_alloc (size_t DIM) ! This function returns a pointer to a newly allocated instance of an ! evolution function for a system of DIM dimensions. ! ! - Function: int gsl_odeiv_evolve_apply (gsl_odeiv_evolve * E, ! gsl_odeiv_control * CON, gsl_odeiv_step * STEP, const ! gsl_odeiv_system * DYDT, double * T, double T1, double * H, ! double Y[]) ! This function advances the system (E, DYDT) from time T and ! position Y using the stepping function STEP. The new time and ! position are stored in T and Y on output. The initial step-size ! is taken as H, but this will be modified using the control ! function C to achieve the appropriate error bound if necessary. ! The routine may make several calls to STEP in order to determine ! the optimum step-size. If the step-size has been changed the value ! of H will be modified on output. The maximum time T1 is ! guaranteed not to be exceeded by the time-step. On the final ! time-step the value of T will be set to T1 exactly. ! ! - Function: int gsl_odeiv_evolve_reset (gsl_odeiv_evolve * E) ! This function resets the evolution function E. It should be used ! whenever the next use of E will not be a continuation of a ! previous step. ! ! - Function: void gsl_odeiv_evolve_free (gsl_odeiv_evolve * E) ! This function frees all the memory associated with the evolution ! function E. ! !  ! File: gsl-ref.info, Node: ODE Example programs, Next: ODE References and Further Reading, Prev: Evolution, Up: Ordinary Differential Equations ! ! Examples ! ======== ! ! The following program solves the second-order nonlinear Van der Pol ! oscillator equation, ! ! x''(t) + \mu x'(t) (x(t)^2 - 1) + x(t) = 0 ! ! This can be converted into a first order system suitable for use with ! the routines described in this chapter by introducing a separate ! variable for the velocity, y = x'(t), ! ! x' = y ! y' = -x + \mu y (1-x^2) ! ! The program begins by defining functions for these derivatives and ! their Jacobian, ! ! #include ! #include ! #include ! #include ! ! int ! func (double t, const double y[], double f[], ! void *params) ! { ! double mu = *(double *)params; ! f[0] = y[1]; ! f[1] = -y[0] - mu*y[1]*(y[0]*y[0] - 1); ! return GSL_SUCCESS; ! } ! ! int ! jac (double t, const double y[], double *dfdy, ! double dfdt[], void *params) ! { ! double mu = *(double *)params; ! gsl_matrix_view dfdy_mat ! = gsl_matrix_view_array (dfdy, 2, 2); ! gsl_matrix * m = &dfdy_mat.matrix; ! gsl_matrix_set (m, 0, 0, 0.0); ! gsl_matrix_set (m, 0, 1, 1.0); ! gsl_matrix_set (m, 1, 0, -2.0*mu*y[0]*y[1] - 1.0); ! gsl_matrix_set (m, 1, 1, -mu*(y[0]*y[0] - 1.0)); ! dfdt[0] = 0.0; ! dfdt[1] = 0.0; ! return GSL_SUCCESS; ! } ! ! int ! main (void) ! { ! const gsl_odeiv_step_type * T ! = gsl_odeiv_step_rk8pd; ! ! gsl_odeiv_step * s ! = gsl_odeiv_step_alloc (T, 2); ! gsl_odeiv_control * c ! = gsl_odeiv_control_y_new (1e-6, 0.0); ! gsl_odeiv_evolve * e ! = gsl_odeiv_evolve_alloc (2); ! ! double mu = 10; ! gsl_odeiv_system sys = {func, jac, 2, &mu}; ! ! double t = 0.0, t1 = 100.0; ! double h = 1e-6; ! double y[2] = { 1.0, 0.0 }; ! ! while (t < t1) ! { ! int status = gsl_odeiv_evolve_apply (e, c, s, ! &sys, ! &t, t1, ! &h, y); ! ! if (status != GSL_SUCCESS) ! break; ! ! printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); ! } ! ! gsl_odeiv_evolve_free (e); ! gsl_odeiv_control_free (c); ! gsl_odeiv_step_free (s); ! return 0; ! } ! ! The main loop of the program evolves the solution from (y, y') = (1, 0) ! at t=0 to t=100. The step-size h is automatically adjusted by the ! controller to maintain an absolute accuracy of 10^{-6} in the function ! values Y. ! ! To obtain the values at regular intervals, rather than the variable ! spacings chosen by the control function, the main loop can be modified ! to advance the solution from one point to the next. For example, the ! following main loop prints the solution at the fixed points t = 0, 1, ! 2, \dots, 100, ! ! for (i = 1; i <= 100; i++) ! { ! double ti = i * t1 / 100.0; ! ! while (t < ti) ! { ! gsl_odeiv_evolve_apply (e, c, s, ! &sys, ! &t, ti, &h, ! y); ! } ! ! printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); ! } ! It is also possible to work with a non-adaptive integrator, using only ! the stepping function itself. The following program uses the `rk4' ! fourth-order Runge-Kutta stepping function with a fixed stepsize of ! 0.01, ! ! int ! main (void) ! { ! const gsl_odeiv_step_type * T ! = gsl_odeiv_step_rk4; ! ! gsl_odeiv_step * s ! = gsl_odeiv_step_alloc (T, 2); ! ! double mu = 10; ! gsl_odeiv_system sys = {func, jac, 2, &mu}; ! ! double t = 0.0, t1 = 100.0; ! double h = 1e-2; ! double y[2] = { 1.0, 0.0 }, y_err[2]; ! double dfdy[4], dydt_in[2], dydt_out[2]; ! ! /* initialise dydt_in */ ! GSL_ODEIV_JA_EVAL(&sys, t, y, dfdy, dydt_in); ! ! while (t < t1) ! { ! int status = gsl_odeiv_step_apply (s, t, h, ! y, y_err, ! dydt_in, ! dydt_out, ! &sys); ! ! if (status != GSL_SUCCESS) ! break; ! dydt_in[0] = dydt_out[0]; ! dydt_in[1] = dydt_out[1]; ! t += h; ! ! printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); ! } ! ! gsl_odeiv_step_free (s); ! return 0; ! } ! ! The derivatives and jacobian must be initialised for the starting point ! t=0 before the first step is taken. Subsequent steps use the output ! derivatives DYDT_OUT as inputs to the next step by copying their values ! into DYDT_IN. ! !  ! File: gsl-ref.info, Node: ODE References and Further Reading, Prev: ODE Example programs, Up: Ordinary Differential Equations ! ! References and Further Reading ! ============================== ! ! Many of the basic Runge-Kutta formulas can be found in the Handbook of ! Mathematical Functions, ! ! Abramowitz & Stegun (eds.), `Handbook of Mathematical Functions', ! Section 25.5. ! The implicit Bulirsch-Stoer algorithm `bsimp' is described in the ! following paper, ! ! G. Bader and P. Deuflhard, "A Semi-Implicit Mid-Point Rule for ! Stiff Systems of Ordinary Differential Equations.", Numer. Math. ! 41, 373-398, 1983.  ! File: gsl-ref.info, Node: Interpolation, Next: Numerical Differentiation, Prev: Ordinary Differential Equations, Up: Top ! ! Interpolation ! ************* ! This chapter describes functions for performing interpolation. The ! library provides a variety of interpolation methods, including Cubic ! splines and Akima splines. The interpolation types are interchangeable, ! allowing different methods to be used without recompiling. ! Interpolations can be defined for both normal and periodic boundary ! conditions. Additional functions are available for computing ! derivatives and integrals of interpolating functions. ! ! The functions described in this section are declared in the header ! files `gsl_interp.h' and `gsl_spline.h'. ! * Menu: ! * Introduction to Interpolation:: ! * Interpolation Functions:: ! * Interpolation Types:: ! * Index Look-up and Acceleration:: ! * Evaluation of Interpolating Functions:: ! * Higher-level Interface:: ! * Interpolation Example programs:: ! * Interpolation References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Introduction to Interpolation, Next: Interpolation Functions, Up: Interpolation ! ! Introduction ! ============ ! ! Given a set of data points (x_1, y_1) \dots (x_n, y_n) the routines ! described in this section compute a continuous interpolating function ! y(x) such that y_i = y(x_i). The interpolation is piecewise smooth, ! and its behavior at the end-points is determined by the type of ! interpolation used. ! !  ! File: gsl-ref.info, Node: Interpolation Functions, Next: Interpolation Types, Prev: Introduction to Interpolation, Up: Interpolation ! ! Interpolation Functions ! ======================= ! ! The interpolation function for a given dataset is stored in a ! `gsl_interp' object. These are created by the following functions. ! ! - Function: gsl_interp * gsl_interp_alloc (const gsl_interp_type * T, ! size_t SIZE) ! This function returns a pointer to a newly allocated interpolation ! object of type T for SIZE data-points. ! ! - Function: int gsl_interp_init (gsl_interp * INTERP, const double ! XA[], const double YA[], size_t SIZE) ! This function initializes the interpolation object INTERP for the ! data (XA,YA) where XA and YA are arrays of size SIZE. The ! interpolation object (`gsl_interp') does not save the data arrays ! XA and YA and only stores the static state computed from the data. ! The XA data array is always assumed to be strictly ordered; the ! behavior for other arrangements is not defined. ! ! - Function: void gsl_interp_free (gsl_interp * INTERP) ! This function frees the interpolation object INTERP. ! !  ! File: gsl-ref.info, Node: Interpolation Types, Next: Index Look-up and Acceleration, Prev: Interpolation Functions, Up: Interpolation ! ! Interpolation Types ! =================== ! ! The interpolation library provides five interpolation types: ! ! - Interpolation Type: gsl_interp_linear ! Linear interpolation. This interpolation method does not require ! any additional memory. ! ! - Interpolation Type: gsl_interp_polynomial ! Polynomial interpolation. This method should only be used for ! interpolating small numbers of points because polynomial ! interpolation introduces large oscillations, even for well-behaved ! datasets. The number of terms in the interpolating polynomial is ! equal to the number of points. ! ! - Interpolation Type: gsl_interp_cspline ! Cubic spline with natural boundary conditions. ! ! - Interpolation Type: gsl_interp_cspline_periodic ! Cubic spline with periodic boundary conditions ! ! - Interpolation Type: gsl_interp_akima ! Non-rounded Akima spline with natural boundary conditions. This ! method uses the non-rounded corner algorithm of Wodicka. ! ! - Interpolation Type: gsl_interp_akima_periodic ! Non-rounded Akima spline with periodic boundary conditions. This ! method uses the non-rounded corner algorithm of Wodicka. ! ! The following related functions are available: ! ! - Function: const char * gsl_interp_name (const gsl_interp * INTERP) ! This function returns the name of the interpolation type used by ! INTERP. For example, ! ! printf ("interp uses '%s' interpolation.\n", ! gsl_interp_name (interp)); ! ! would print something like, ! interp uses 'cspline' interpolation. ! ! - Function: unsigned int gsl_interp_min_size (const gsl_interp * ! INTERP) ! This function returns the minimum number of points required by the ! interpolation type of INTERP. For example, Akima spline ! interpolation requires a minimum of 5 points. ! !  ! File: gsl-ref.info, Node: Index Look-up and Acceleration, Next: Evaluation of Interpolating Functions, Prev: Interpolation Types, Up: Interpolation ! ! Index Look-up and Acceleration ! ============================== ! ! The state of searches can be stored in a `gsl_interp_accel' object, ! which is a kind of iterator for interpolation lookups. It caches the ! previous value of an index lookup. When the subsequent interpolation ! point falls in the same interval its index value can be returned ! immediately. ! ! - Function: size_t gsl_interp_bsearch (const double X_ARRAY[], double ! X, size_t INDEX_LO, size_t INDEX_HI) ! This function returns the index i of the array X_ARRAY such that ! `x_array[i] <= x < x_array[i+1]'. The index is searched for in ! the range [INDEX_LO,INDEX_HI]. ! ! - Function: gsl_interp_accel * gsl_interp_accel_alloc (void) ! This function returns a pointer to an accelerator object, which is ! a kind of iterator for interpolation lookups. It tracks the state ! of lookups, thus allowing for application of various acceleration ! strategies. ! ! - Function: size_t gsl_interp_accel_find (gsl_interp_accel * A, const ! double X_ARRAY[], size_t SIZE, double X) ! This function performs a lookup action on the data array X_ARRAY ! of size SIZE, using the given accelerator A. This is how lookups ! are performed during evaluation of an interpolation. The function ! returns an index i such that `x_array[i] <= x < x_array[i+1]'. ! ! - Function: void gsl_interp_accel_free (gsl_interp_accel* ACC) ! This function frees the accelerator object ACC. ! !  ! File: gsl-ref.info, Node: Evaluation of Interpolating Functions, Next: Higher-level Interface, Prev: Index Look-up and Acceleration, Up: Interpolation ! ! Evaluation of Interpolating Functions ! ===================================== ! ! - Function: double gsl_interp_eval (const gsl_interp * INTERP, const ! double XA[], const double YA[], double X, gsl_interp_accel * ! ACC) ! - Function: int gsl_interp_eval_e (const gsl_interp * INTERP, const ! double XA[], const double YA[], double X, gsl_interp_accel * ! ACC, double * Y) ! These functions return the interpolated value of Y for a given ! point X, using the interpolation object INTERP, data arrays XA and ! YA and the accelerator ACC. ! ! - Function: double gsl_interp_eval_deriv (const gsl_interp * INTERP, ! const double XA[], const double YA[], double X, ! gsl_interp_accel * ACC) ! - Function: int gsl_interp_eval_deriv_e (const gsl_interp * INTERP, ! const double XA[], const double YA[], double X, ! gsl_interp_accel * ACC, double * D) ! These functions return the derivative D of an interpolated ! function for a given point X, using the interpolation object ! INTERP, data arrays XA and YA and the accelerator ACC. ! ! - Function: double gsl_interp_eval_deriv2 (const gsl_interp * INTERP, ! const double XA[], const double YA[], double X, ! gsl_interp_accel * ACC) ! - Function: int gsl_interp_eval_deriv2_e (const gsl_interp * INTERP, ! const double XA[], const double YA[], double X, ! gsl_interp_accel * ACC, double * D2) ! These functions return the second derivative D2 of an interpolated ! function for a given point X, using the interpolation object ! INTERP, data arrays XA and YA and the accelerator ACC. ! ! - Function: double gsl_interp_eval_integ (const gsl_interp * INTERP, ! const double XA[], const double YA[], double A, double B, ! gsl_interp_accel * ACC) ! - Function: int gsl_interp_eval_integ_e (const gsl_interp * INTERP, ! const double XA[], const double YA[], double A, double B, ! gsl_interp_accel * ACC, double * RESULT) ! These functions return the numerical integral RESULT of an ! interpolated function over the range [A, B], using the ! interpolation object INTERP, data arrays XA and YA and the ! accelerator ACC. ! !  ! File: gsl-ref.info, Node: Higher-level Interface, Next: Interpolation Example programs, Prev: Evaluation of Interpolating Functions, Up: Interpolation ! ! Higher-level Interface ! ====================== ! ! The functions described in the previous sections required the user to ! supply pointers to the x and y arrays on each call. The following ! functions are equivalent to the corresponding `gsl_interp' functions ! but maintain a copy of this data in the `gsl_spline' object. This ! removes the need to pass both XA and YA as arguments on each ! evaluation. These functions are defined in the header file ! `gsl_spline.h'. ! ! - Function: gsl_spline * gsl_spline_alloc (const gsl_interp_type * T, ! size_t SIZE) ! ! - Function: int gsl_spline_init (gsl_spline * SPLINE, const double ! XA[], const double YA[], size_t SIZE) ! ! - Function: void gsl_spline_free (gsl_spline * SPLINE) ! ! - Function: double gsl_spline_eval (const gsl_spline * SPLINE, double ! X, gsl_interp_accel * ACC) ! - Function: int gsl_spline_eval_e (const gsl_spline * SPLINE, double ! X, gsl_interp_accel * ACC, double * Y) ! ! - Function: double gsl_spline_eval_deriv (const gsl_spline * SPLINE, ! double X, gsl_interp_accel * ACC) ! - Function: int gsl_spline_eval_deriv_e (const gsl_spline * SPLINE, ! double X, gsl_interp_accel * ACC, double * D) ! ! - Function: double gsl_spline_eval_deriv2 (const gsl_spline * SPLINE, ! double X, gsl_interp_accel * ACC) ! - Function: int gsl_spline_eval_deriv2_e (const gsl_spline * SPLINE, ! double X, gsl_interp_accel * ACC, double * D2) ! ! - Function: double gsl_spline_eval_integ (const gsl_spline * SPLINE, ! double A, double B, gsl_interp_accel * ACC) ! - Function: int gsl_spline_eval_integ_e (const gsl_spline * SPLINE, ! double A, double B, gsl_interp_accel * ACC, double * RESULT) ! !  ! File: gsl-ref.info, Node: Interpolation Example programs, Next: Interpolation References and Further Reading, Prev: Higher-level Interface, Up: Interpolation ! ! Examples ! ======== ! ! The following program demonstrates the use of the interpolation and ! spline functions. It computes a cubic spline interpolation of the ! 10-point dataset (x_i, y_i) where x_i = i + \sin(i)/2 and y_i = i + ! \cos(i^2) for i = 0 \dots 9. ! ! #include ! #include ! #include ! #include ! #include ! ! int ! main (void) ! { ! int i; ! double xi, yi, x[10], y[10]; ! ! printf ("#m=0,S=2\n"); ! ! for (i = 0; i < 10; i++) ! { ! x[i] = i + 0.5 * sin (i); ! y[i] = i + cos (i * i); ! printf ("%g %g\n", x[i], y[i]); ! } ! printf ("#m=1,S=0\n"); ! { ! gsl_interp_accel *acc ! = gsl_interp_accel_alloc (); ! gsl_spline *spline ! = gsl_spline_alloc (gsl_interp_cspline, 10); ! gsl_spline_init (spline, x, y, 10); ! ! for (xi = x[0]; xi < x[9]; xi += 0.01) ! { ! yi = gsl_spline_eval (spline, xi, acc); ! printf ("%g %g\n", xi, yi); ! } ! gsl_spline_free (spline); ! gsl_interp_accel_free (acc); ! } ! return 0; ! } ! ! The output is designed to be used with the GNU plotutils `graph' ! program, ! ! $ ./a.out > interp.dat ! $ graph -T ps < interp.dat > interp.ps ! ! The result shows a smooth interpolation of the original points. The ! interpolation method can changed simply by varying the first argument of ! `gsl_spline_alloc'.  ! File: gsl-ref.info, Node: Interpolation References and Further Reading, Prev: Interpolation Example programs, Up: Interpolation ! References and Further Reading ! ============================== ! Descriptions of the interpolation algorithms and further references can ! be found in the following book, ! C.W. Ueberhuber, `Numerical Computation (Volume 1), Chapter 9 ! "Interpolation"', Springer (1997), ISBN 3-540-62058-3.  ! File: gsl-ref.info, Node: Numerical Differentiation, Next: Chebyshev Approximations, Prev: Interpolation, Up: Top ! Numerical Differentiation ! ************************* ! The functions described in this chapter compute numerical derivatives by ! finite differencing. An adaptive algorithm is used to find the best ! choice of finite difference and to estimate the error in the derivative. ! These functions are declared in the header file `gsl_diff.h' ! * Menu: ! ! * Numerical Differentiation functions:: ! * Numerical Differentiation Examples:: ! * Numerical Differentiation References:: ! !  ! File: gsl-ref.info, Node: Numerical Differentiation functions, Next: Numerical Differentiation Examples, Up: Numerical Differentiation ! ! Functions ! ========= ! ! - Function: int gsl_diff_central (const gsl_function *F, double X, ! double *RESULT, double *ABSERR) ! This function computes the numerical derivative of the function F ! at the point X using an adaptive central difference algorithm. ! The derivative is returned in RESULT and an estimate of its ! absolute error is returned in ABSERR. ! ! - Function: int gsl_diff_forward (const gsl_function *F, double X, ! double *RESULT, double *ABSERR) ! This function computes the numerical derivative of the function F ! at the point X using an adaptive forward difference algorithm. The ! function is evaluated only at points greater than X and at X ! itself. The derivative is returned in RESULT and an estimate of ! its absolute error is returned in ABSERR. This function should be ! used if f(x) has a singularity or is undefined for values less ! than X. ! ! - Function: int gsl_diff_backward (const gsl_function *F, double X, ! double *RESULT, double *ABSERR) ! This function computes the numerical derivative of the function F ! at the point X using an adaptive backward difference algorithm. ! The function is evaluated only at points less than X and at X ! itself. The derivative is returned in RESULT and an estimate of ! its absolute error is returned in ABSERR. This function should be ! used if f(x) has a singularity or is undefined for values greater ! than X. ! !  ! File: gsl-ref.info, Node: Numerical Differentiation Examples, Next: Numerical Differentiation References, Prev: Numerical Differentiation functions, Up: Numerical Differentiation ! ! Examples ! ======== ! ! The following code estimates the derivative of the function f(x) = ! x^{3/2} at x=2 and at x=0. The function f(x) is undefined for x<0 so ! the derivative at x=0 is computed using `gsl_diff_forward'. ! ! #include ! #include ! #include ! ! double f (double x, void * params) ! { ! return pow (x, 1.5); ! } ! ! int ! main (void) ! { ! gsl_function F; ! double result, abserr; ! ! F.function = &f; ! F.params = 0; ! ! printf ("f(x) = x^(3/2)\n"); ! ! gsl_diff_central (&F, 2.0, &result, &abserr); ! printf ("x = 2.0\n"); ! printf ("f'(x) = %.10f +/- %.5f\n", result, abserr); ! printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0)); ! ! gsl_diff_forward (&F, 0.0, &result, &abserr); ! printf ("x = 0.0\n"); ! printf ("f'(x) = %.10f +/- %.5f\n", result, abserr); ! printf ("exact = %.10f\n", 0.0); ! ! return 0; ! } ! Here is the output of the program, ! $ ./a.out + f(x) = x^(3/2) + + x = 2.0 + f'(x) = 2.1213203435 +/- 0.01490 + exact = 2.1213203436 + + x = 0.0 + f'(x) = 0.0012172897 +/- 0.05028 + exact = 0.0000000000  ! File: gsl-ref.info, Node: Numerical Differentiation References, Prev: Numerical Differentiation Examples, Up: Numerical Differentiation ! References and Further Reading ! ============================== ! The algorithms used by these functions are described in the following ! book, ! S.D. Conte and Carl de Boor, `Elementary Numerical Analysis: An ! Algorithmic Approach', McGraw-Hill, 1972. !  ! File: gsl-ref.info, Node: Chebyshev Approximations, Next: Series Acceleration, Prev: Numerical Differentiation, Up: Top ! Chebyshev Approximations ! ************************ ! This chapter describes routines for computing Chebyshev approximations ! to univariate functions. A Chebyshev approximation is a truncation of ! the series f(x) = \sum c_n T_n(x), where the Chebyshev polynomials ! T_n(x) = \cos(n \arccos x) provide an orthogonal basis of polynomials ! on the interval [-1,1] with the weight function 1 / \sqrt{1-x^2}. The ! first few Chebyshev polynomials are, T_0(x) = 1, T_1(x) = x, T_2(x) = 2 ! x^2 - 1. For further information see Abramowitz & Stegun, Chapter 22. ! The functions described in this chapter are declared in the header ! file `gsl_chebyshev.h'. ! * Menu: ! * The gsl_cheb_series struct:: ! * Creation and Calculation of Chebyshev Series:: ! * Chebyshev Series Evaluation:: ! * Derivatives and Integrals:: ! * Chebyshev Approximation examples:: ! * Chebyshev Approximation References and Further Reading::  ! File: gsl-ref.info, Node: The gsl_cheb_series struct, Next: Creation and Calculation of Chebyshev Series, Up: Chebyshev Approximations ! The gsl_cheb_series struct ! ========================== ! A Chebyshev series is stored using the following structure, ! typedef struct ! { ! double * c; /* coefficients c[0] .. c[order] */ ! int order; /* order of expansion */ ! double a; /* lower interval point */ ! double b; /* upper interval point */ ! } gsl_cheb_struct ! ! The approximation is made over the range [a,b] using ORDER+1 terms, ! including the coefficient c[0]. The series is computed using the ! following convention, ! f(x) = (c_0 / 2) + \sum_{n=1} c_n T_n(x) ! ! which is needed when accessing the coefficients directly.  ! File: gsl-ref.info, Node: Creation and Calculation of Chebyshev Series, Next: Chebyshev Series Evaluation, Prev: The gsl_cheb_series struct, Up: Chebyshev Approximations ! ! Creation and Calculation of Chebyshev Series ! ============================================ ! - Function: gsl_cheb_series * gsl_cheb_alloc (const size_t N) ! This function allocates space for a Chebyshev series of order N ! and returns a pointer to a new `gsl_cheb_series' struct. ! - Function: void gsl_cheb_free (gsl_cheb_series * CS) ! This function frees a previously allocated Chebyshev series CS. + - Function: int gsl_cheb_init (gsl_cheb_series * CS, const + gsl_function * F, const double A, const double B) + This function computes the Chebyshev approximation CS for the + function F over the range (a,b) to the previously specified order. + The computation of the Chebyshev approximation is an O(n^2) + process, and requires n function evaluations.  ! File: gsl-ref.info, Node: Chebyshev Series Evaluation, Next: Derivatives and Integrals, Prev: Creation and Calculation of Chebyshev Series, Up: Chebyshev Approximations ! Chebyshev Series Evaluation ! =========================== ! ! - Function: double gsl_cheb_eval (const gsl_cheb_series * CS, double X) ! This function evaluates the Chebyshev series CS at a given point X. ! - Function: int gsl_cheb_eval_err (const gsl_cheb_series * CS, const ! double X, double * RESULT, double * ABSERR) ! This function computes the Chebyshev series CS at a given point X, ! estimating both the series RESULT and its absolute error ABSERR. ! The error estimate is made from the first neglected term in the ! series. ! ! - Function: double gsl_cheb_eval_n (const gsl_cheb_series * CS, size_t ! ORDER, double X) ! This function evaluates the Chebyshev series CS at a given point ! N, to (at most) the given order ORDER. ! ! - Function: int gsl_cheb_eval_n_err (const gsl_cheb_series * CS, const ! size_t ORDER, const double X, double * RESULT, double * ! ABSERR) ! This function evaluates a Chebyshev series CS at a given point X, ! estimating both the series RESULT and its absolute error ABSERR, ! to (at most) the given order ORDER. The error estimate is made ! from the first neglected term in the series. ! !  ! File: gsl-ref.info, Node: Derivatives and Integrals, Next: Chebyshev Approximation examples, Prev: Chebyshev Series Evaluation, Up: Chebyshev Approximations ! ! Derivatives and Integrals ! ========================= ! ! The following functions allow a Chebyshev series to be differentiated or ! integrated, producing a new Chebyshev series. Note that the error ! estimate produced by evaluating the derivative series will be ! underestimated due to the contribution of higher order terms being ! neglected. ! ! - Function: int gsl_cheb_calc_deriv (gsl_cheb_series * DERIV, const ! gsl_cheb_series * CS) ! This function computes the derivative of the series CS, storing ! the derivative coefficients in the previously allocated DERIV. ! The two series CS and DERIV must have been allocated with the same ! order. ! ! - Function: int gsl_cheb_calc_integ (gsl_cheb_series * INTEG, const ! gsl_cheb_series * CS) ! This function computes the integral of the series CS, storing the ! integral coefficients in the previously allocated INTEG. The two ! series CS and INTEG must have been allocated with the same order. ! The lower limit of the integration is taken to be the left hand ! end of the range A. ! !  ! File: gsl-ref.info, Node: Chebyshev Approximation examples, Next: Chebyshev Approximation References and Further Reading, Prev: Derivatives and Integrals, Up: Chebyshev Approximations ! ! Examples ! ======== ! ! The following example program computes Chebyshev approximations to a ! step function. This is an extremely difficult approximation to make, ! due to the discontinuity, and was chosen as an example where ! approximation error is visible. For smooth functions the Chebyshev ! approximation converges extremely rapidly and errors would not be ! visible. ! ! #include ! #include ! #include ! ! double ! f (double x, void *p) ! { ! if (x < 0.5) ! return 0.25; ! else ! return 0.75; ! } ! ! int ! main (void) ! { ! int i, n = 10000; ! ! gsl_cheb_series *cs = gsl_cheb_alloc (40); ! ! gsl_function F; ! ! F.function = f; ! F.params = 0; ! ! gsl_cheb_init (cs, &F, 0.0, 1.0); ! ! for (i = 0; i < n; i++) ! { ! double x = i / (double)n; ! double r10 = gsl_cheb_eval_n (cs, 10, x); ! double r40 = gsl_cheb_eval (cs, x); ! printf ("%g %g %g %g\n", ! x, GSL_FN_EVAL (&F, x), r10, r40); ! } ! ! gsl_cheb_free (cs); ! ! return 0; ! } + The output from the program gives the original function, 10-th order + approximation and 40-th order approximation, all sampled at intervals of + 0.001 in x.  ! File: gsl-ref.info, Node: Chebyshev Approximation References and Further Reading, Prev: Chebyshev Approximation examples, Up: Chebyshev Approximations ! ! References and Further Reading ! ============================== ! The following paper describes the use of Chebyshev series, ! R. Broucke, "Ten Subroutines for the Manipulation of Chebyshev ! Series [C1] (Algorithm 446)". `Communications of the ACM' 16(4), ! 254-256 (1973)  ! File: gsl-ref.info, Node: Series Acceleration, Next: Discrete Hankel Transforms, Prev: Chebyshev Approximations, Up: Top ! ! Series Acceleration ! ******************* ! ! The functions described in this chapter accelerate the convergence of a ! series using the Levin u-transform. This method takes a small number of ! terms from the start of a series and uses a systematic approximation to ! compute an extrapolated value and an estimate of its error. The ! u-transform works for both convergent and divergent series, including ! asymptotic series. ! ! These functions are declared in the header file `gsl_sum.h'. ! ! * Menu: ! ! * Acceleration functions:: ! * Acceleration functions without error estimation:: ! * Example of accelerating a series:: ! * Series Acceleration References:: ! !  ! File: gsl-ref.info, Node: Acceleration functions, Next: Acceleration functions without error estimation, Up: Series Acceleration ! ! Acceleration functions ! ====================== ! ! The following functions compute the full Levin u-transform of a series ! with its error estimate. The error estimate is computed by propagating ! rounding errors from each term through to the final extrapolation. ! ! These functions are intended for summing analytic series where each ! term is known to high accuracy, and the rounding errors are assumed to ! originate from finite precision. They are taken to be relative errors of ! order `GSL_DBL_EPSILON' for each term. ! ! The calculation of the error in the extrapolated value is an O(N^2) ! process, which is expensive in time and memory. A faster but less ! reliable method which estimates the error from the convergence of the ! extrapolated value is described in the next section For the method ! described here a full table of intermediate values and derivatives ! through to O(N) must be computed and stored, but this does give a ! reliable error estimate. . ! ! - Function: gsl_sum_levin_u_workspace * gsl_sum_levin_u_alloc (size_t ! N) ! This function allocates a workspace for a Levin u-transform of N ! terms. The size of the workspace is O(2n^2 + 3n). ! ! - Function: int gsl_sum_levin_u_free (gsl_sum_levin_u_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_sum_levin_u_accel (const double * ARRAY, size_t ! ARRAY_SIZE, gsl_sum_levin_u_workspace * W, double * ! SUM_ACCEL, double * ABSERR) ! This function takes the terms of a series in ARRAY of size ! ARRAY_SIZE and computes the extrapolated limit of the series using ! a Levin u-transform. Additional working space must be provided in ! W. The extrapolated sum is stored in SUM_ACCEL, with an estimate ! of the absolute error stored in ABSERR. The actual term-by-term ! sum is returned in `w->sum_plain'. The algorithm calculates the ! truncation error (the difference between two successive ! extrapolations) and round-off error (propagated from the individual ! terms) to choose an optimal number of terms for the extrapolation. ! !  ! File: gsl-ref.info, Node: Acceleration functions without error estimation, Next: Example of accelerating a series, Prev: Acceleration functions, Up: Series Acceleration ! ! Acceleration functions without error estimation ! =============================================== ! ! The functions described in this section compute the Levin u-transform of ! series and attempt to estimate the error from the "truncation error" in ! the extrapolation, the difference between the final two approximations. ! Using this method avoids the need to compute an intermediate table of ! derivatives because the error is estimated from the behavior of the ! extrapolated value itself. Consequently this algorithm is an O(N) ! process and only requires O(N) terms of storage. If the series ! converges sufficiently fast then this procedure can be acceptable. It ! is appropriate to use this method when there is a need to compute many ! extrapolations of series with similar convergence properties at ! high-speed. For example, when numerically integrating a function ! defined by a parameterized series where the parameter varies only ! slightly. A reliable error estimate should be computed first using the ! full algorithm described above in order to verify the consistency of the ! results. ! ! - Function: gsl_sum_levin_utrunc_workspace * ! gsl_sum_levin_utrunc_alloc (size_t N) ! This function allocates a workspace for a Levin u-transform of N ! terms, without error estimation. The size of the workspace is ! O(3n). ! ! - Function: int gsl_sum_levin_utrunc_free ! (gsl_sum_levin_utrunc_workspace * W) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_sum_levin_utrunc_accel (const double * ARRAY, ! size_t ARRAY_SIZE, gsl_sum_levin_utrunc_workspace * W, double ! * SUM_ACCEL, double * ABSERR_TRUNC) ! This function takes the terms of a series in ARRAY of size ! ARRAY_SIZE and computes the extrapolated limit of the series using ! a Levin u-transform. Additional working space must be provided in ! W. The extrapolated sum is stored in SUM_ACCEL. The actual ! term-by-term sum is returned in `w->sum_plain'. The algorithm ! terminates when the difference between two successive ! extrapolations reaches a minimum or is sufficiently small. The ! difference between these two values is used as estimate of the ! error and is stored in ABSERR_TRUNC. To improve the reliability ! of the algorithm the extrapolated values are replaced by moving ! averages when calculating the truncation error, smoothing out any ! fluctuations. ! !  ! File: gsl-ref.info, Node: Example of accelerating a series, Next: Series Acceleration References, Prev: Acceleration functions without error estimation, Up: Series Acceleration ! ! Examples ! ======== ! ! The following code calculates an estimate of \zeta(2) = \pi^2 / 6 using ! the series, ! ! \zeta(2) = 1 + 1/2^2 + 1/3^2 + 1/4^2 + ... ! ! After N terms the error in the sum is O(1/N), making direct summation ! of the series converge slowly. ! ! #include ! #include ! #include ! ! #define N 20 ! ! int ! main (void) ! { ! double t[N]; ! double sum_accel, err; ! double sum = 0; ! int n; ! ! gsl_sum_levin_u_workspace * w ! = gsl_sum_levin_u_alloc (N); ! ! const double zeta_2 = M_PI * M_PI / 6.0; ! ! /* terms for zeta(2) = \sum_{n=1}^{\infty} 1/n^2 */ ! ! for (n = 0; n < N; n++) ! { ! double np1 = n + 1.0; ! t[n] = 1.0 / (np1 * np1); ! sum += t[n]; ! } ! ! gsl_sum_levin_u_accel (t, N, w, &sum_accel, &err); ! ! printf ("term-by-term sum = % .16f using %d terms\n", ! sum, N); ! ! printf ("term-by-term sum = % .16f using %d terms\n", ! w->sum_plain, w->terms_used); ! ! printf ("exact value = % .16f\n", zeta_2); ! printf ("accelerated sum = % .16f using %d terms\n", ! sum_accel, w->terms_used); ! ! printf ("estimated error = % .16f\n", err); ! printf ("actual error = % .16f\n", ! sum_accel - zeta_2); ! ! gsl_sum_levin_u_free (w); ! return 0; ! } ! The output below shows that the Levin u-transform is able to obtain an ! estimate of the sum to 1 part in 10^10 using the first eleven terms of ! the series. The error estimate returned by the function is also ! accurate, giving the correct number of significant digits. ! bash$ ./a.out ! term-by-term sum = 1.5961632439130233 using 20 terms ! term-by-term sum = 1.5759958390005426 using 13 terms ! exact value = 1.6449340668482264 ! accelerated sum = 1.6449340668166479 using 13 terms ! estimated error = 0.0000000000508580 ! actual error = -0.0000000000315785 ! Note that a direct summation of this series would require 10^10 terms ! to achieve the same precision as the accelerated sum does in 13 terms.  ! File: gsl-ref.info, Node: Series Acceleration References, Prev: Example of accelerating a series, Up: Series Acceleration ! References and Further Reading ! ============================== ! The algorithms used by these functions are described in the following ! papers, ! T. Fessler, W.F. Ford, D.A. Smith, HURRY: An acceleration ! algorithm for scalar sequences and series `ACM Transactions on ! Mathematical Software', 9(3):346-354, 1983. and Algorithm 602 ! 9(3):355-357, 1983. ! ! The theory of the u-transform was presented by Levin, ! ! D. Levin, Development of Non-Linear Transformations for Improving ! Convergence of Sequences, `Intern. J. Computer Math.' B3:371-388, ! 1973 ! A review paper on the Levin Transform is available online, ! Herbert H. H. Homeier, Scalar Levin-Type Sequence Transformations, !  ! File: gsl-ref.info, Node: Discrete Hankel Transforms, Next: One dimensional Root-Finding, Prev: Series Acceleration, Up: Top ! Discrete Hankel Transforms ! ************************** ! This chapter describes functions for performing Discrete Hankel ! Transforms (DHTs). The functions are declared in the header file ! `gsl_dht.h'. * Menu: ! * Discrete Hankel Transform Definition:: ! * Discrete Hankel Transform Functions:: ! * Discrete Hankel Transform References::  ! File: gsl-ref.info, Node: Discrete Hankel Transform Definition, Next: Discrete Hankel Transform Functions, Up: Discrete Hankel Transforms ! ! Definitions ! =========== ! ! The discrete Hankel transform acts on a vector of sampled data, where ! the samples are assumed to have been taken at points related to the ! zeroes of a Bessel function of fixed order; compare this to the case of ! the discrete Fourier transform, where samples are taken at points ! related to the zeroes of the sine or cosine function. ! Specifically, let f(t) be a function on the unit interval. Then the ! finite \nu-Hankel transform of f(t) is defined to be the set of numbers ! g_m given by, ! so that, + Suppose that f is band-limited in the sense that g_m=0 for m > M. Then + we have the following fundamental sampling theorem. ! It is this discrete expression which defines the discrete Hankel ! transform. The kernel in the summation above defines the matrix of the ! \nu-Hankel transform of size M-1. The coefficients of this matrix, ! being dependent on \nu and M, must be precomputed and stored; the ! `gsl_dht' object encapsulates this data. The allocation function ! `gsl_dht_alloc' returns a `gsl_dht' object which must be properly ! initialized with `gsl_dht_init' before it can be used to perform ! transforms on data sample vectors, for fixed \nu and M, using the ! `gsl_dht_apply' function. The implementation allows a scaling of the ! fundamental interval, for convenience, so that one can assume the ! function is defined on the interval [0,X], rather than the unit ! interval. + Notice that by assumption f(t) vanishes at the endpoints of the + interval, consistent with the inversion formula and the sampling + formula given above. Therefore, this transform corresponds to an + orthogonal expansion in eigenfunctions of the Dirichlet problem for the + Bessel differential equation.  ! File: gsl-ref.info, Node: Discrete Hankel Transform Functions, Next: Discrete Hankel Transform References, Prev: Discrete Hankel Transform Definition, Up: Discrete Hankel Transforms ! Functions ! ========= ! - Function: gsl_dht * gsl_dht_alloc (size_t SIZE) ! This function allocates a Discrete Hankel transform object of size ! SIZE. ! - Function: int gsl_dht_init (gsl_dht * T, double NU, double XMAX) ! This function initializes the transform T for the given values of ! NU and X. ! - Function: gsl_dht * gsl_dht_new (size_t SIZE, double NU, double XMAX) ! This function allocates a Discrete Hankel transform object of size ! SIZE and initializes it for the given values of NU and X. ! ! - Function: void gsl_dht_free (gsl_dht * T) ! This function frees the transform T. ! - Function: int gsl_dht_apply (const gsl_dht * T, double * F_IN, ! double * F_OUT) ! This function applies the transform T to the array F_IN whose size ! is equal to the size of the transform. The result is stored in ! the array F_OUT which must be of the same length. ! - Function: double gsl_dht_x_sample (const gsl_dht * T, int N) ! This function returns the value of the n'th sample point in the ! unit interval, (j_{\nu,n+1}/j_{\nu,M}) X. These are the points ! where the function f(t) is assumed to be sampled. ! - Function: double gsl_dht_k_sample (const gsl_dht * T, int N) ! This function returns the value of the n'th sample point in ! "k-space", j_{\nu,n+1}/X.  ! File: gsl-ref.info, Node: Discrete Hankel Transform References, Prev: Discrete Hankel Transform Functions, Up: Discrete Hankel Transforms ! ! References and Further Reading ! ============================== ! ! The algorithms used by these functions are described in the following ! papers, ! H. Fisk Johnson, Comp. Phys. Comm. 43, 181 (1987). ! D. Lemoine, J. Chem. Phys. 101, 3936 (1994).  ! File: gsl-ref.info, Node: One dimensional Root-Finding, Next: One dimensional Minimization, Prev: Discrete Hankel Transforms, Up: Top ! One dimensional Root-Finding ! **************************** ! This chapter describes routines for finding roots of arbitrary ! one-dimensional functions. The library provides low level components ! for a variety of iterative solvers and convergence tests. These can be ! combined by the user to achieve the desired solution, with full access ! to the intermediate steps of the iteration. Each class of methods uses ! the same framework, so that you can switch between solvers at runtime ! without needing to recompile your program. Each instance of a solver ! keeps track of its own state, allowing the solvers to be used in ! multi-threaded programs. ! The header file `gsl_roots.h' contains prototypes for the root ! finding functions and related declarations. ! * Menu: ! * Root Finding Overview:: ! * Root Finding Caveats:: ! * Initializing the Solver:: ! * Providing the function to solve:: ! * Search Bounds and Guesses:: ! * Root Finding Iteration:: ! * Search Stopping Parameters:: ! * Root Bracketing Algorithms:: ! * Root Finding Algorithms using Derivatives:: ! * Root Finding Examples:: ! * Root Finding References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Root Finding Overview, Next: Root Finding Caveats, Up: One dimensional Root-Finding ! ! Overview ! ======== ! ! One-dimensional root finding algorithms can be divided into two classes, ! "root bracketing" and "root polishing". Algorithms which proceed by ! bracketing a root are guaranteed to converge. Bracketing algorithms ! begin with a bounded region known to contain a root. The size of this ! bounded region is reduced, iteratively, until it encloses the root to a ! desired tolerance. This provides a rigorous error estimate for the ! location of the root. ! ! The technique of "root polishing" attempts to improve an initial ! guess to the root. These algorithms converge only if started "close ! enough" to a root, and sacrifice a rigorous error bound for speed. By ! approximating the behavior of a function in the vicinity of a root they ! attempt to find a higher order improvement of an initial guess. When ! the behavior of the function is compatible with the algorithm and a good ! initial guess is available a polishing algorithm can provide rapid ! convergence. ! ! In GSL both types of algorithm are available in similar frameworks. ! The user provides a high-level driver for the algorithms, and the ! library provides the individual functions necessary for each of the ! steps. There are three main phases of the iteration. The steps are, ! ! * initialize solver state, S, for algorithm T ! ! * update S using the iteration T ! ! * test S for convergence, and repeat iteration if necessary ! ! The state for bracketing solvers is held in a `gsl_root_fsolver' ! struct. The updating procedure uses only function evaluations (not ! derivatives). The state for root polishing solvers is held in a ! `gsl_root_fdfsolver' struct. The updates require both the function and ! its derivative (hence the name `fdf') to be supplied by the user. ! !  ! File: gsl-ref.info, Node: Root Finding Caveats, Next: Initializing the Solver, Prev: Root Finding Overview, Up: One dimensional Root-Finding ! ! Caveats ! ======= ! ! Note that root finding functions can only search for one root at a time. ! When there are several roots in the search area, the first root to be ! found will be returned; however it is difficult to predict which of the ! roots this will be. _In most cases, no error will be reported if you ! try to find a root in an area where there is more than one._ ! ! Care must be taken when a function may have a multiple root (such as ! f(x) = (x-x_0)^2 or f(x) = (x-x_0)^3). It is not possible to use ! root-bracketing algorithms on even-multiplicity roots. For these ! algorithms the initial interval must contain a zero-crossing, where the ! function is negative at one end of the interval and positive at the ! other end. Roots with even-multiplicity do not cross zero, but only ! touch it instantaneously. Algorithms based on root bracketing will ! still work for odd-multiplicity roots (e.g. cubic, quintic, ...). Root ! polishing algorithms generally work with higher multiplicity roots, but ! at reduced rate of convergence. In these cases the "Steffenson ! algorithm" can be used to accelerate the convergence of multiple roots. ! ! While it is not absolutely required that f have a root within the ! search region, numerical root finding functions should not be used ! haphazardly to check for the _existence_ of roots. There are better ! ways to do this. Because it is easy to create situations where ! numerical root finders go awry, it is a bad idea to throw a root finder ! at a function you do not know much about. In general it is best to ! examine the function visually by plotting before searching for a root. ! !  ! File: gsl-ref.info, Node: Initializing the Solver, Next: Providing the function to solve, Prev: Root Finding Caveats, Up: One dimensional Root-Finding ! ! Initializing the Solver ! ======================= ! ! - Function: gsl_root_fsolver * gsl_root_fsolver_alloc (const ! gsl_root_fsolver_type * T) ! This function returns a pointer to a newly allocated instance of a ! solver of type T. For example, the following code creates an ! instance of a bisection solver, ! ! const gsl_root_fsolver_type * T ! = gsl_root_fsolver_bisection; ! gsl_root_fsolver * s ! = gsl_root_fsolver_alloc (T); ! ! If there is insufficient memory to create the solver then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: gsl_root_fdfsolver * gsl_root_fdfsolver_alloc (const ! gsl_root_fdfsolver_type * T) ! This function returns a pointer to a newly allocated instance of a ! derivative-based solver of type T. For example, the following ! code creates an instance of a Newton-Raphson solver, ! ! const gsl_root_fdfsolver_type * T ! = gsl_root_fdfsolver_newton; ! gsl_root_fdfsolver * s ! = gsl_root_fdfsolver_alloc (T); ! ! If there is insufficient memory to create the solver then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: int gsl_root_fsolver_set (gsl_root_fsolver * S, ! gsl_function * F, double X_LOWER, double X_UPPER) ! This function initializes, or reinitializes, an existing solver S ! to use the function F and the initial search interval [X_LOWER, ! X_UPPER]. ! ! - Function: int gsl_root_fdfsolver_set (gsl_root_fdfsolver * S, ! gsl_function_fdf * FDF, double ROOT) ! This function initializes, or reinitializes, an existing solver S ! to use the function and derivative FDF and the initial guess ROOT. ! ! - Function: void gsl_root_fsolver_free (gsl_root_fsolver * S) ! - Function: void gsl_root_fdfsolver_free (gsl_root_fdfsolver * S) ! These functions free all the memory associated with the solver S. ! ! - Function: const char * gsl_root_fsolver_name (const gsl_root_fsolver ! * S) ! - Function: const char * gsl_root_fdfsolver_name (const ! gsl_root_fdfsolver * S) ! These functions return a pointer to the name of the solver. For ! example, ! ! printf ("s is a '%s' solver\n", ! gsl_root_fsolver_name (s)); ! ! would print something like `s is a 'bisection' solver'. ! !  ! File: gsl-ref.info, Node: Providing the function to solve, Next: Search Bounds and Guesses, Prev: Initializing the Solver, Up: One dimensional Root-Finding ! ! Providing the function to solve ! =============================== ! ! You must provide a continuous function of one variable for the root ! finders to operate on, and, sometimes, its first derivative. In order ! to allow for general parameters the functions are defined by the ! following data types: ! ! - Data Type: gsl_function ! This data type defines a general function with parameters. ! ! `double (* function) (double X, void * PARAMS)' ! this function should return the value f(x,params) for ! argument X and parameters PARAMS ! ! `void * params' ! a pointer to the parameters of the function ! Here is an example for the general quadratic function, ! f(x) = a x^2 + b x + c ! with a = 3, b = 2, c = 1. The following code defines a `gsl_function' ! `F' which you could pass to a root finder: ! struct my_f_params { double a; double b; double c; }; ! ! double ! my_f (double x, void * p) { ! struct my_f_params * params ! = (struct my_f_params *)p; ! double a = (params->a); ! double b = (params->b); ! double c = (params->c); ! ! return (a * x + b) * x + c; ! } ! ! gsl_function F; ! struct my_f_params params = { 3.0, 2.0, 1.0 }; ! ! F.function = &my_f; ! F.params = ¶ms; ! The function f(x) can be evaluated using the following macro, ! ! #define GSL_FN_EVAL(F,x) ! (*((F)->function))(x,(F)->params) ! ! - Data Type: gsl_function_fdf ! This data type defines a general function with parameters and its ! first derivative. ! ! `double (* f) (double X, void * PARAMS)' ! this function should return the value of f(x,params) for ! argument X and parameters PARAMS ! ! `double (* df) (double X, void * PARAMS)' ! this function should return the value of the derivative of F ! with respect to X, f'(x,params), for argument X and ! parameters PARAMS ! ! `void (* fdf) (double X, void * PARAMS, double * F, double * Df)' ! this function should set the values of the function F to ! f(x,params) and its derivative DF to f'(x,params) for ! argument X and parameters PARAMS. This function provides an ! optimization of the separate functions for f(x) and f'(x) - ! it is always faster to compute the function and its ! derivative at the same time. ! ! `void * params' ! a pointer to the parameters of the function ! ! Here is an example where f(x) = 2\exp(2x): ! ! double ! my_f (double x, void * params) ! { ! return exp (2 * x); ! } ! ! double ! my_df (double x, void * params) ! { ! return 2 * exp (2 * x); ! } ! ! void ! my_fdf (double x, void * params, ! double * f, double * df) ! { ! double t = exp (2 * x); ! ! *f = t; ! *df = 2 * t; /* uses existing value */ ! } ! ! gsl_function_fdf FDF; ! ! FDF.f = &my_f; ! FDF.df = &my_df; ! FDF.fdf = &my_fdf; ! FDF.params = 0; ! The function f(x) can be evaluated using the following macro, ! ! #define GSL_FN_FDF_EVAL_F(FDF,x) ! (*((FDF)->f))(x,(FDF)->params) ! ! The derivative f'(x) can be evaluated using the following macro, ! ! #define GSL_FN_FDF_EVAL_DF(FDF,x) ! (*((FDF)->df))(x,(FDF)->params) ! ! and both the function y = f(x) and its derivative dy = f'(x) can be ! evaluated at the same time using the following macro, ! ! #define GSL_FN_FDF_EVAL_F_DF(FDF,x,y,dy) ! (*((FDF)->fdf))(x,(FDF)->params,(y),(dy)) ! ! The macro stores f(x) in its Y argument and f'(x) in its DY argument - ! both of these should be pointers to `double'.  ! File: gsl-ref.info, Node: Search Bounds and Guesses, Next: Root Finding Iteration, Prev: Providing the function to solve, Up: One dimensional Root-Finding ! ! Search Bounds and Guesses ! ========================= ! ! You provide either search bounds or an initial guess; this section ! explains how search bounds and guesses work and how function arguments ! control them. ! A guess is simply an x value which is iterated until it is within ! the desired precision of a root. It takes the form of a `double'. ! ! Search bounds are the endpoints of a interval which is iterated until ! the length of the interval is smaller than the requested precision. The ! interval is defined by two values, the lower limit and the upper limit. ! Whether the endpoints are intended to be included in the interval or not ! depends on the context in which the interval is used. ! !  ! File: gsl-ref.info, Node: Root Finding Iteration, Next: Search Stopping Parameters, Prev: Search Bounds and Guesses, Up: One dimensional Root-Finding ! ! Iteration ! ========= ! ! The following functions drive the iteration of each algorithm. Each ! function performs one iteration to update the state of any solver of the ! corresponding type. The same functions work for all solvers so that ! different methods can be substituted at runtime without modifications to ! the code. ! ! - Function: int gsl_root_fsolver_iterate (gsl_root_fsolver * S) ! - Function: int gsl_root_fdfsolver_iterate (gsl_root_fdfsolver * S) ! These functions perform a single iteration of the solver S. If the ! iteration encounters an unexpected problem then an error code will ! be returned, ! ! `GSL_EBADFUNC' ! the iteration encountered a singular point where the function ! or its derivative evaluated to `Inf' or `NaN'. ! ! `GSL_EZERODIV' ! the derivative of the function vanished at the iteration ! point, preventing the algorithm from continuing without a ! division by zero. ! ! The solver maintains a current best estimate of the root at all ! times. The bracketing solvers also keep track of the current best ! interval bounding the root. This information can be accessed with the ! following auxiliary functions, ! ! - Function: double gsl_root_fsolver_root (const gsl_root_fsolver * S) ! - Function: double gsl_root_fdfsolver_root (const gsl_root_fdfsolver * ! S) ! These functions return the current estimate of the root for the ! solver S. ! ! - Function: double gsl_root_fsolver_x_lower (const gsl_root_fsolver * ! S) ! - Function: double gsl_root_fsolver_x_upper (const gsl_root_fsolver * ! S) ! These functions return the current bracketing interval for the ! solver S. ! !  ! File: gsl-ref.info, Node: Search Stopping Parameters, Next: Root Bracketing Algorithms, Prev: Root Finding Iteration, Up: One dimensional Root-Finding ! ! Search Stopping Parameters ! ========================== ! ! A root finding procedure should stop when one of the following ! conditions is true: ! ! * A root has been found to within the user-specified precision. ! ! * A user-specified maximum number of iterations has been reached. ! ! * An error has occurred. ! ! The handling of these conditions is under user control. The functions ! below allow the user to test the precision of the current result in ! several standard ways. ! ! - Function: int gsl_root_test_interval (double X_LOWER, double ! X_UPPER, double EPSABS, double EPSREL) ! This function tests for the convergence of the interval [X_LOWER, ! X_UPPER] with absolute error EPSABS and relative error EPSREL. ! The test returns `GSL_SUCCESS' if the following condition is ! achieved, ! ! |a - b| < epsabs + epsrel min(|a|,|b|) ! ! when the interval x = [a,b] does not include the origin. If the ! interval includes the origin then \min(|a|,|b|) is replaced by ! zero (which is the minimum value of |x| over the interval). This ! ensures that the relative error is accurately estimated for roots ! close to the origin. ! ! This condition on the interval also implies that any estimate of ! the root r in the interval satisfies the same condition with ! respect to the true root r^*, ! ! |r - r^*| < epsabs + epsrel r^* ! ! assuming that the true root r^* is contained within the interval. ! ! - Function: int gsl_root_test_delta (double X1, double X0, double ! EPSREL, double EPSABS) ! This function tests for the convergence of the sequence ..., X0, ! X1 with absolute error EPSABS and relative error EPSREL. The test ! returns `GSL_SUCCESS' if the following condition is achieved, ! ! |x_1 - x_0| < epsabs + epsrel |x_1| ! ! and returns `GSL_CONTINUE' otherwise. ! ! - Function: int gsl_root_test_residual (double F, double EPSABS) ! This function tests the residual value F against the absolute ! error bound EPSABS. The test returns `GSL_SUCCESS' if the ! following condition is achieved, ! ! |f| < epsabs ! ! and returns `GSL_CONTINUE' otherwise. This criterion is suitable ! for situations where the precise location of the root, x, is ! unimportant provided a value can be found where the residual, ! |f(x)|, is small enough. ! !  ! File: gsl-ref.info, Node: Root Bracketing Algorithms, Next: Root Finding Algorithms using Derivatives, Prev: Search Stopping Parameters, Up: One dimensional Root-Finding ! ! Root Bracketing Algorithms ! ========================== ! ! The root bracketing algorithms described in this section require an ! initial interval which is guaranteed to contain a root - if a and b are ! the endpoints of the interval then f(a) must differ in sign from f(b). ! This ensures that the function crosses zero at least once in the ! interval. If a valid initial interval is used then these algorithm ! cannot fail, provided the function is well-behaved. ! ! Note that a bracketing algorithm cannot find roots of even degree, ! since these do not cross the x-axis. ! ! - Solver: gsl_root_fsolver_bisection ! The "bisection algorithm" is the simplest method of bracketing the ! roots of a function. It is the slowest algorithm provided by the ! library, with linear convergence. ! ! On each iteration, the interval is bisected and the value of the ! function at the midpoint is calculated. The sign of this value is ! used to determine which half of the interval does not contain a ! root. That half is discarded to give a new, smaller interval ! containing the root. This procedure can be continued indefinitely ! until the interval is sufficiently small. ! ! At any time the current estimate of the root is taken as the ! midpoint of the interval. ! ! ! - Solver: gsl_root_fsolver_falsepos ! The "false position algorithm" is a method of finding roots based ! on linear interpolation. Its convergence is linear, but it is ! usually faster than bisection. ! ! On each iteration a line is drawn between the endpoints (a,f(a)) ! and (b,f(b)) and the point where this line crosses the x-axis ! taken as a "midpoint". The value of the function at this point is ! calculated and its sign is used to determine which side of the ! interval does not contain a root. That side is discarded to give a ! new, smaller interval containing the root. This procedure can be ! continued indefinitely until the interval is sufficiently small. ! ! The best estimate of the root is taken from the linear ! interpolation of the interval on the current iteration. ! ! ! - Solver: gsl_root_fsolver_brent ! The "Brent-Dekker method" (referred to here as "Brent's method") ! combines an interpolation strategy with the bisection algorithm. ! This produces a fast algorithm which is still robust. ! ! On each iteration Brent's method approximates the function using an ! interpolating curve. On the first iteration this is a linear ! interpolation of the two endpoints. For subsequent iterations the ! algorithm uses an inverse quadratic fit to the last three points, ! for higher accuracy. The intercept of the interpolating curve ! with the x-axis is taken as a guess for the root. If it lies ! within the bounds of the current interval then the interpolating ! point is accepted, and used to generate a smaller interval. If ! the interpolating point is not accepted then the algorithm falls ! back to an ordinary bisection step. ! ! The best estimate of the root is taken from the most recent ! interpolation or bisection. ! !  ! File: gsl-ref.info, Node: Root Finding Algorithms using Derivatives, Next: Root Finding Examples, Prev: Root Bracketing Algorithms, Up: One dimensional Root-Finding ! ! Root Finding Algorithms using Derivatives ! ========================================= ! ! The root polishing algorithms described in this section require an ! initial guess for the location of the root. There is no absolute ! guarantee of convergence - the function must be suitable for this ! technique and the initial guess must be sufficiently close to the root ! for it to work. When these conditions are satisfied then convergence is ! quadratic. ! ! These algorithms make use of both the function and its derivative. ! ! - Derivative Solver: gsl_root_fdfsolver_newton ! Newton's Method is the standard root-polishing algorithm. The ! algorithm begins with an initial guess for the location of the ! root. On each iteration, a line tangent to the function f is ! drawn at that position. The point where this line crosses the ! x-axis becomes the new guess. The iteration is defined by the ! following sequence, ! ! x_{i+1} = x_i - f(x_i)/f'(x_i) ! ! Newton's method converges quadratically for single roots, and ! linearly for multiple roots. ! ! ! - Derivative Solver: gsl_root_fdfsolver_secant ! The "secant method" is a simplified version of Newton's method ! which does not require the computation of the derivative on every ! step. ! ! On its first iteration the algorithm begins with Newton's method, ! using the derivative to compute a first step, ! ! x_1 = x_0 - f(x_0)/f'(x_0) ! ! Subsequent iterations avoid the evaluation of the derivative by ! replacing it with a numerical estimate, the slope of the line ! through the previous two points, ! ! x_{i+1} = x_i f(x_i) / f'_{est} where ! f'_{est} = (f(x_i) - f(x_{i-1})/(x_i - x_{i-1}) ! ! When the derivative does not change significantly in the vicinity ! of the root the secant method gives a useful saving. ! Asymptotically the secant method is faster than Newton's method ! whenever the cost of evaluating the derivative is more than 0.44 ! times the cost of evaluating the function itself. As with all ! methods of computing a numerical derivative the estimate can ! suffer from cancellation errors if the separation of the points ! becomes too small. ! ! On single roots, the method has a convergence of order (1 + \sqrt ! 5)/2 (approximately 1.62). It converges linearly for multiple ! roots. ! ! ! - Derivative Solver: gsl_root_fdfsolver_steffenson ! The "Steffenson Method" provides the fastest convergence of all the ! routines. It combines the basic Newton algorithm with an Aitken ! "delta-squared" acceleration. If the Newton iterates are x_i then ! the acceleration procedure generates a new sequence R_i, ! ! R_i = x_i - (x_{i+1} - x_i)^2 / (x_{i+2} - 2 x_{i+1} + x_{i}) ! ! which converges faster than the original sequence under reasonable ! conditions. The new sequence requires three terms before it can ! produce its first value so the method returns accelerated values ! on the second and subsequent iterations. On the first iteration ! it returns the ordinary Newton estimate. The Newton iterate is ! also returned if the denominator of the acceleration term ever ! becomes zero. ! ! As with all acceleration procedures this method can become ! unstable if the function is not well-behaved. ! !  ! File: gsl-ref.info, Node: Root Finding Examples, Next: Root Finding References and Further Reading, Prev: Root Finding Algorithms using Derivatives, Up: One dimensional Root-Finding ! ! Examples ! ======== ! ! For any root finding algorithm we need to prepare the function to be ! solved. For this example we will use the general quadratic equation ! described earlier. We first need a header file (`demo_fn.h') to define ! the function parameters, ! ! struct quadratic_params ! { ! double a, b, c; ! }; ! ! double quadratic (double x, void *params); ! double quadratic_deriv (double x, void *params); ! void quadratic_fdf (double x, void *params, ! double *y, double *dy); ! ! We place the function definitions in a separate file (`demo_fn.c'), ! ! double ! quadratic (double x, void *params) ! { ! struct quadratic_params *p ! = (struct quadratic_params *) params; ! ! double a = p->a; ! double b = p->b; ! double c = p->c; ! ! return (a * x + b) * x + c; ! } ! ! double ! quadratic_deriv (double x, void *params) ! { ! struct quadratic_params *p ! = (struct quadratic_params *) params; ! ! double a = p->a; ! double b = p->b; ! double c = p->c; ! ! return 2.0 * a * x + b; ! } ! ! void ! quadratic_fdf (double x, void *params, ! double *y, double *dy) ! { ! struct quadratic_params *p ! = (struct quadratic_params *) params; ! ! double a = p->a; ! double b = p->b; ! double c = p->c; ! ! *y = (a * x + b) * x + c; ! *dy = 2.0 * a * x + b; ! } ! ! The first program uses the function solver `gsl_root_fsolver_brent' for ! Brent's method and the general quadratic defined above to solve the ! following equation, ! ! x^2 - 5 = 0 ! ! with solution x = \sqrt 5 = 2.236068... ! ! #include ! #include ! #include ! #include ! ! #include "demo_fn.h" ! #include "demo_fn.c" ! ! int ! main (void) ! { ! int status; ! int iter = 0, max_iter = 100; ! const gsl_root_fsolver_type *T; ! gsl_root_fsolver *s; ! double r = 0, r_expected = sqrt (5.0); ! double x_lo = 0.0, x_hi = 5.0; ! gsl_function F; ! struct quadratic_params params = {1.0, 0.0, -5.0}; ! ! F.function = &quadratic; ! F.params = ¶ms; ! ! T = gsl_root_fsolver_brent; ! s = gsl_root_fsolver_alloc (T); ! gsl_root_fsolver_set (s, &F, x_lo, x_hi); ! ! printf ("using %s method\n", ! gsl_root_fsolver_name (s)); ! ! printf ("%5s [%9s, %9s] %9s %10s %9s\n", ! "iter", "lower", "upper", "root", ! "err", "err(est)"); ! ! do ! { ! iter++; ! status = gsl_root_fsolver_iterate (s); ! r = gsl_root_fsolver_root (s); ! x_lo = gsl_root_fsolver_x_lower (s); ! x_hi = gsl_root_fsolver_x_upper (s); ! status = gsl_root_test_interval (x_lo, x_hi, ! 0, 0.001); ! ! if (status == GSL_SUCCESS) ! printf ("Converged:\n"); ! ! printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", ! iter, x_lo, x_hi, ! r, r - r_expected, ! x_hi - x_lo); ! } ! while (status == GSL_CONTINUE && iter < max_iter); ! return status; ! } ! ! Here are the results of the iterations, ! ! bash$ ./a.out ! using brent method ! iter [ lower, upper] root err err(est) ! 1 [1.0000000, 5.0000000] 1.0000000 -1.2360680 4.0000000 ! 2 [1.0000000, 3.0000000] 3.0000000 +0.7639320 2.0000000 ! 3 [2.0000000, 3.0000000] 2.0000000 -0.2360680 1.0000000 ! 4 [2.2000000, 3.0000000] 2.2000000 -0.0360680 0.8000000 ! 5 [2.2000000, 2.2366300] 2.2366300 +0.0005621 0.0366300 ! Converged: ! 6 [2.2360634, 2.2366300] 2.2360634 -0.0000046 0.0005666 ! ! If the program is modified to use the bisection solver instead of ! Brent's method, by changing `gsl_root_fsolver_brent' to ! `gsl_root_fsolver_bisection' the slower convergence of the Bisection ! method can be observed, ! ! bash$ ./a.out ! using bisection method ! iter [ lower, upper] root err err(est) ! 1 [0.0000000, 2.5000000] 1.2500000 -0.9860680 2.5000000 ! 2 [1.2500000, 2.5000000] 1.8750000 -0.3610680 1.2500000 ! 3 [1.8750000, 2.5000000] 2.1875000 -0.0485680 0.6250000 ! 4 [2.1875000, 2.5000000] 2.3437500 +0.1076820 0.3125000 ! 5 [2.1875000, 2.3437500] 2.2656250 +0.0295570 0.1562500 ! 6 [2.1875000, 2.2656250] 2.2265625 -0.0095055 0.0781250 ! 7 [2.2265625, 2.2656250] 2.2460938 +0.0100258 0.0390625 ! 8 [2.2265625, 2.2460938] 2.2363281 +0.0002601 0.0195312 ! 9 [2.2265625, 2.2363281] 2.2314453 -0.0046227 0.0097656 ! 10 [2.2314453, 2.2363281] 2.2338867 -0.0021813 0.0048828 ! 11 [2.2338867, 2.2363281] 2.2351074 -0.0009606 0.0024414 ! Converged: ! 12 [2.2351074, 2.2363281] 2.2357178 -0.0003502 0.0012207 ! ! The next program solves the same function using a derivative solver ! instead. ! ! #include ! #include ! #include ! #include ! ! #include "demo_fn.h" ! #include "demo_fn.c" ! ! int ! main (void) ! { ! int status; ! int iter = 0, max_iter = 100; ! const gsl_root_fdfsolver_type *T; ! gsl_root_fdfsolver *s; ! double x0, x = 5.0, r_expected = sqrt (5.0); ! gsl_function_fdf FDF; ! struct quadratic_params params = {1.0, 0.0, -5.0}; ! ! FDF.f = &quadratic; ! FDF.df = &quadratic_deriv; ! FDF.fdf = &quadratic_fdf; ! FDF.params = ¶ms; ! ! T = gsl_root_fdfsolver_newton; ! s = gsl_root_fdfsolver_alloc (T); ! gsl_root_fdfsolver_set (s, &FDF, x); ! ! printf ("using %s method\n", ! gsl_root_fdfsolver_name (s)); ! ! printf ("%-5s %10s %10s %10s\n", ! "iter", "root", "err", "err(est)"); ! do ! { ! iter++; ! status = gsl_root_fdfsolver_iterate (s); ! x0 = x; ! x = gsl_root_fdfsolver_root (s); ! status = gsl_root_test_delta (x, x0, 0, 1e-3); ! ! if (status == GSL_SUCCESS) ! printf ("Converged:\n"); ! ! printf ("%5d %10.7f %+10.7f %10.7f\n", ! iter, x, x - r_expected, x - x0); ! } ! while (status == GSL_CONTINUE && iter < max_iter); ! return status; ! } ! ! Here are the results for Newton's method, ! ! bash$ ./a.out ! using newton method ! iter root err err(est) ! 1 3.0000000 +0.7639320 -2.0000000 ! 2 2.3333333 +0.0972654 -0.6666667 ! 3 2.2380952 +0.0020273 -0.0952381 ! Converged: ! 4 2.2360689 +0.0000009 -0.0020263 ! ! Note that the error can be estimated more accurately by taking the ! difference between the current iterate and next iterate rather than the ! previous iterate. The other derivative solvers can be investigated by ! changing `gsl_root_fdfsolver_newton' to `gsl_root_fdfsolver_secant' or ! `gsl_root_fdfsolver_steffenson'. ! !  ! File: gsl-ref.info, Node: Root Finding References and Further Reading, Prev: Root Finding Examples, Up: One dimensional Root-Finding ! ! References and Further Reading ! ============================== ! ! For information on the Brent-Dekker algorithm see the following two ! papers, ! ! R. P. Brent, "An algorithm with guaranteed convergence for finding ! a zero of a function", `Computer Journal', 14 (1971) 422-425 ! ! J. C. P. Bus and T. J. Dekker, "Two Efficient Algorithms with ! Guaranteed Convergence for Finding a Zero of a Function", `ACM ! Transactions of Mathematical Software', Vol. 1 No. 4 (1975) 330-345 ! !  ! File: gsl-ref.info, Node: One dimensional Minimization, Next: Multidimensional Root-Finding, Prev: One dimensional Root-Finding, Up: Top ! ! One dimensional Minimization ! **************************** ! ! This chapter describes routines for finding minima of arbitrary ! one-dimensional functions. The library provides low level components ! for a variety of iterative minimizers and convergence tests. These can ! be combined by the user to achieve the desired solution, with full ! access to the intermediate steps of the algorithms. Each class of ! methods uses the same framework, so that you can switch between ! minimizers at runtime without needing to recompile your program. Each ! instance of a minimizer keeps track of its own state, allowing the ! minimizers to be used in multi-threaded programs. ! ! The header file `gsl_min.h' contains prototypes for the minimization ! functions and related declarations. To use the minimization algorithms ! to find the maximum of a function simply invert its sign. ! ! * Menu: ! ! * Minimization Overview:: ! * Minimization Caveats:: ! * Initializing the Minimizer:: ! * Providing the function to minimize:: ! * Minimization Iteration:: ! * Minimization Stopping Parameters:: ! * Minimization Algorithms:: ! * Minimization Examples:: ! * Minimization References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Minimization Overview, Next: Minimization Caveats, Up: One dimensional Minimization ! ! Overview ! ======== ! ! The minimization algorithms begin with a bounded region known to contain ! a minimum. The region is described by a lower bound a and an upper ! bound b, with an estimate of the location of the minimum x. ! ! The value of the function at x must be less than the value of the ! function at the ends of the interval, ! ! f(a) > f(x) < f(b) ! ! This condition guarantees that a minimum is contained somewhere within ! the interval. On each iteration a new point x' is selected using one ! of the available algorithms. If the new point is a better estimate of ! the minimum, f(x') < f(x), then the current estimate of the minimum x ! is updated. The new point also allows the size of the bounded interval ! to be reduced, by choosing the most compact set of points which ! satisfies the constraint f(a) > f(x) < f(b). The interval is reduced ! until it encloses the true minimum to a desired tolerance. This ! provides a best estimate of the location of the minimum and a rigorous ! error estimate. ! ! Several bracketing algorithms are available within a single ! framework. The user provides a high-level driver for the algorithm, ! and the library provides the individual functions necessary for each of ! the steps. There are three main phases of the iteration. The steps ! are, ! ! * initialize minimizer state, S, for algorithm T ! ! * update S using the iteration T ! ! * test S for convergence, and repeat iteration if necessary ! ! The state for the minimizers is held in a `gsl_min_fminimizer' struct. ! The updating procedure uses only function evaluations (not derivatives). ! !  ! File: gsl-ref.info, Node: Minimization Caveats, Next: Initializing the Minimizer, Prev: Minimization Overview, Up: One dimensional Minimization ! ! Caveats ! ======= ! ! Note that minimization functions can only search for one minimum at a ! time. When there are several minima in the search area, the first ! minimum to be found will be returned; however it is difficult to predict ! which of the minima this will be. _In most cases, no error will be ! reported if you try to find a minimum in an area where there is more ! than one._ ! ! With all minimization algorithms it can be difficult to determine the ! location of the minimum to full numerical precision. The behavior of ! the function in the region of the minimum x^* can be approximated by a ! Taylor expansion, ! ! y = f(x^*) + (1/2) f''(x^*) (x - x^*)^2 ! ! and the second term of this expansion can be lost when added to the ! first term at finite precision. This magnifies the error in locating ! x^*, making it proportional to \sqrt \epsilon (where \epsilon is the ! relative accuracy of the floating point numbers). For functions with ! higher order minima, such as x^4, the magnification of the error is ! correspondingly worse. The best that can be achieved is to converge to ! the limit of numerical accuracy in the function values, rather than the ! location of the minimum itself. ! !  ! File: gsl-ref.info, Node: Initializing the Minimizer, Next: Providing the function to minimize, Prev: Minimization Caveats, Up: One dimensional Minimization ! ! Initializing the Minimizer ! ========================== ! ! - Function: gsl_min_fminimizer * gsl_min_fminimizer_alloc (const ! gsl_min_fminimizer_type * T) ! This function returns a pointer to a newly allocated instance of a ! minimizer of type T. For example, the following code creates an ! instance of a golden section minimizer, ! ! const gsl_min_fminimizer_type * T ! = gsl_min_fminimizer_goldensection; ! gsl_min_fminimizer * s ! = gsl_min_fminimizer_alloc (T); ! ! If there is insufficient memory to create the minimizer then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: int gsl_min_fminimizer_set (gsl_min_fminimizer * S, ! gsl_function * F, double X_MINIMUM, double X_LOWER, double ! X_UPPER) ! This function sets, or resets, an existing minimizer S to use the ! function F and the initial search interval [X_LOWER, X_UPPER], ! with a guess for the location of the minimum X_MINIMUM. ! ! If the interval given does not contain a minimum, then the function ! returns an error code of `GSL_FAILURE'. ! ! - Function: int gsl_min_fminimizer_set_with_values (gsl_min_fminimizer ! * S, gsl_function * F, double X_MINIMUM, double F_MINIMUM, ! double X_LOWER, double F_LOWER, double X_UPPER, double ! F_UPPER) ! This function is equivalent to `gsl_min_fminimizer_set' but uses ! the values F_MINIMUM, F_LOWER and F_UPPER instead of computing ! `f(x_minimum)', `f(x_lower)' and `f(x_upper)'. ! ! - Function: void gsl_min_fminimizer_free (gsl_min_fminimizer * S) ! This function frees all the memory associated with the minimizer S. ! ! - Function: const char * gsl_min_fminimizer_name (const ! gsl_min_fminimizer * S) ! This function returns a pointer to the name of the minimizer. For ! example, ! ! printf ("s is a '%s' minimizer\n", ! gsl_min_fminimizer_name (s)); ! ! would print something like `s is a 'brent' minimizer'. ! !  ! File: gsl-ref.info, Node: Providing the function to minimize, Next: Minimization Iteration, Prev: Initializing the Minimizer, Up: One dimensional Minimization ! ! Providing the function to minimize ! ================================== ! ! You must provide a continuous function of one variable for the ! minimizers to operate on. In order to allow for general parameters the ! functions are defined by a `gsl_function' data type (*note Providing ! the function to solve::). ! !  ! File: gsl-ref.info, Node: Minimization Iteration, Next: Minimization Stopping Parameters, Prev: Providing the function to minimize, Up: One dimensional Minimization ! ! Iteration ! ========= ! ! The following functions drive the iteration of each algorithm. Each ! function performs one iteration to update the state of any minimizer of ! the corresponding type. The same functions work for all minimizers so ! that different methods can be substituted at runtime without ! modifications to the code. ! ! - Function: int gsl_min_fminimizer_iterate (gsl_min_fminimizer * S) ! This function performs a single iteration of the minimizer S. If ! the iteration encounters an unexpected problem then an error code ! will be returned, ! ! `GSL_EBADFUNC' ! the iteration encountered a singular point where the function ! evaluated to `Inf' or `NaN'. ! ! `GSL_FAILURE' ! the algorithm could not improve the current best ! approximation or bounding interval. ! ! The minimizer maintains a current best estimate of the position of ! the minimum at all times, and the current interval bounding the minimum. ! This information can be accessed with the following auxiliary functions, ! ! - Function: double gsl_min_fminimizer_x_minimum (const ! gsl_min_fminimizer * S) ! This function returns the current estimate of the position of the ! minimum for the minimizer S. ! ! - Function: double gsl_min_fminimizer_x_upper (const ! gsl_min_fminimizer * S) ! - Function: double gsl_min_fminimizer_x_lower (const ! gsl_min_fminimizer * S) ! These functions return the current upper and lower bound of the ! interval for the minimizer S. ! ! - Function: double gsl_min_fminimizer_f_minimum (const ! gsl_min_fminimizer *S) ! - Function: double gsl_min_fminimizer_f_upper (const ! gsl_min_fminimizer *S) ! - Function: double gsl_min_fminimizer_f_lower (const ! gsl_min_fminimizer *S) ! These functions return the value of the function at the current ! estimate of the minimum and at the upper and lower bounds of ! interval for the minimizer S. ! !  ! File: gsl-ref.info, Node: Minimization Stopping Parameters, Next: Minimization Algorithms, Prev: Minimization Iteration, Up: One dimensional Minimization ! ! Stopping Parameters ! =================== ! ! A minimization procedure should stop when one of the following ! conditions is true: ! ! * A minimum has been found to within the user-specified precision. ! ! * A user-specified maximum number of iterations has been reached. ! ! * An error has occurred. ! ! The handling of these conditions is under user control. The function ! below allows the user to test the precision of the current result. ! ! - Function: int gsl_min_test_interval (double X_LOWER, double X_UPPER, ! double EPSABS, double EPSREL) ! This function tests for the convergence of the interval [X_LOWER, ! X_UPPER] with absolute error EPSABS and relative error EPSREL. ! The test returns `GSL_SUCCESS' if the following condition is ! achieved, ! ! |a - b| < epsabs + epsrel min(|a|,|b|) ! ! when the interval x = [a,b] does not include the origin. If the ! interval includes the origin then \min(|a|,|b|) is replaced by ! zero (which is the minimum value of |x| over the interval). This ! ensures that the relative error is accurately estimated for minima ! close to the origin. ! ! This condition on the interval also implies that any estimate of ! the minimum x_m in the interval satisfies the same condition with ! respect to the true minimum x_m^*, ! ! |x_m - x_m^*| < epsabs + epsrel x_m^* ! ! assuming that the true minimum x_m^* is contained within the ! interval. ! !  ! File: gsl-ref.info, Node: Minimization Algorithms, Next: Minimization Examples, Prev: Minimization Stopping Parameters, Up: One dimensional Minimization ! ! Minimization Algorithms ! ======================= ! ! The minimization algorithms described in this section require an initial ! interval which is guaranteed to contain a minimum -- if a and b are the ! endpoints of the interval and x is an estimate of the minimum then f(a) ! > f(x) < f(b). This ensures that the function has at least one minimum ! somewhere in the interval. If a valid initial interval is used then ! these algorithm cannot fail, provided the function is well-behaved. ! ! - Minimizer: gsl_min_fminimizer_goldensection ! The "golden section algorithm" is the simplest method of bracketing ! the minimum of a function. It is the slowest algorithm provided ! by the library, with linear convergence. ! ! On each iteration, the algorithm first compares the subintervals ! from the endpoints to the current minimum. The larger subinterval ! is divided in a golden section (using the famous ratio (3-\sqrt ! 5)/2 = 0.3189660...) and the value of the function at this new ! point is calculated. The new value is used with the constraint ! f(a') > f(x') < f(b') to a select new interval containing the ! minimum, by discarding the least useful point. This procedure can ! be continued indefinitely until the interval is sufficiently ! small. Choosing the golden section as the bisection ratio can be ! shown to provide the fastest convergence for this type of ! algorithm. ! ! ! - Minimizer: gsl_min_fminimizer_brent ! The "Brent minimization algorithm" combines a parabolic ! interpolation with the golden section algorithm. This produces a ! fast algorithm which is still robust. ! ! The outline of the algorithm can be summarized as follows: on each ! iteration Brent's method approximates the function using an ! interpolating parabola through three existing points. The minimum ! of the parabola is taken as a guess for the minimum. If it lies ! within the bounds of the current interval then the interpolating ! point is accepted, and used to generate a smaller interval. If ! the interpolating point is not accepted then the algorithm falls ! back to an ordinary golden section step. The full details of ! Brent's method include some additional checks to improve ! convergence. ! !  ! File: gsl-ref.info, Node: Minimization Examples, Next: Minimization References and Further Reading, Prev: Minimization Algorithms, Up: One dimensional Minimization ! ! Examples ! ======== ! ! The following program uses the Brent algorithm to find the minimum of ! the function f(x) = \cos(x) + 1, which occurs at x = \pi. The starting ! interval is (0,6), with an initial guess for the minimum of 2. ! ! #include ! #include ! #include ! #include ! ! double fn1 (double x, void * params) ! { ! return cos(x) + 1.0; ! } ! ! int ! main (void) ! { ! int status; ! int iter = 0, max_iter = 100; ! const gsl_min_fminimizer_type *T; ! gsl_min_fminimizer *s; ! double m = 2.0, m_expected = M_PI; ! double a = 0.0, b = 6.0; ! gsl_function F; ! ! F.function = &fn1; ! F.params = 0; ! ! T = gsl_min_fminimizer_brent; ! s = gsl_min_fminimizer_alloc (T); ! gsl_min_fminimizer_set (s, &F, m, a, b); ! ! printf ("using %s method\n", ! gsl_min_fminimizer_name (s)); ! ! printf ("%5s [%9s, %9s] %9s %10s %9s\n", ! "iter", "lower", "upper", "min", ! "err", "err(est)"); ! ! printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", ! iter, a, b, ! m, m - m_expected, b - a); ! ! do ! { ! iter++; ! status = gsl_min_fminimizer_iterate (s); ! ! m = gsl_min_fminimizer_x_minimum (s); ! a = gsl_min_fminimizer_x_lower (s); ! b = gsl_min_fminimizer_x_upper (s); ! ! status ! = gsl_min_test_interval (a, b, 0.001, 0.0); ! ! if (status == GSL_SUCCESS) ! printf ("Converged:\n"); ! ! printf ("%5d [%.7f, %.7f] " ! "%.7f %.7f %+.7f %.7f\n", ! iter, a, b, ! m, m_expected, m - m_expected, b - a); ! } ! while (status == GSL_CONTINUE && iter < max_iter); ! ! return status; ! } ! ! Here are the results of the minimization procedure. ! ! bash$ ./a.out ! ! 0 [0.0000000, 6.0000000] 2.0000000 -1.1415927 6.0000000 ! 1 [2.0000000, 6.0000000] 3.2758640 +0.1342713 4.0000000 ! 2 [2.0000000, 3.2831929] 3.2758640 +0.1342713 1.2831929 ! 3 [2.8689068, 3.2831929] 3.2758640 +0.1342713 0.4142862 ! 4 [2.8689068, 3.2831929] 3.2758640 +0.1342713 0.4142862 ! 5 [2.8689068, 3.2758640] 3.1460585 +0.0044658 0.4069572 ! 6 [3.1346075, 3.2758640] 3.1460585 +0.0044658 0.1412565 ! 7 [3.1346075, 3.1874620] 3.1460585 +0.0044658 0.0528545 ! 8 [3.1346075, 3.1460585] 3.1460585 +0.0044658 0.0114510 ! 9 [3.1346075, 3.1460585] 3.1424060 +0.0008133 0.0114510 ! 10 [3.1346075, 3.1424060] 3.1415885 -0.0000041 0.0077985 ! Converged: ! 11 [3.1415885, 3.1424060] 3.1415927 -0.0000000 0.0008175 ! !  ! File: gsl-ref.info, Node: Minimization References and Further Reading, Prev: Minimization Examples, Up: One dimensional Minimization ! ! References and Further Reading ! ============================== ! ! Further information on Brent's algorithm is available in the following ! book, ! ! Richard Brent, `Algorithms for minimization without derivatives', ! Prentice-Hall (1973), republished by Dover in paperback (2002), ! ISBN 0-486-41998-3. ! !  ! File: gsl-ref.info, Node: Multidimensional Root-Finding, Next: Multidimensional Minimization, Prev: One dimensional Minimization, Up: Top ! ! Multidimensional Root-Finding ! ***************************** ! ! This chapter describes functions for multidimensional root-finding ! (solving nonlinear systems with n equations in n unknowns). The ! library provides low level components for a variety of iterative ! solvers and convergence tests. These can be combined by the user to ! achieve the desired solution, with full access to the intermediate ! steps of the iteration. Each class of methods uses the same framework, ! so that you can switch between solvers at runtime without needing to ! recompile your program. Each instance of a solver keeps track of its ! own state, allowing the solvers to be used in multi-threaded programs. ! The solvers are based on the original Fortran library MINPACK. ! ! The header file `gsl_multiroots.h' contains prototypes for the ! multidimensional root finding functions and related declarations. ! ! * Menu: ! ! * Overview of Multidimensional Root Finding:: ! * Initializing the Multidimensional Solver:: ! * Providing the multidimensional system of equations to solve:: ! * Iteration of the multidimensional solver:: ! * Search Stopping Parameters for the multidimensional solver:: ! * Algorithms using Derivatives:: ! * Algorithms without Derivatives:: ! * Example programs for Multidimensional Root finding:: ! * References and Further Reading for Multidimensional Root Finding:: ! !  ! File: gsl-ref.info, Node: Overview of Multidimensional Root Finding, Next: Initializing the Multidimensional Solver, Up: Multidimensional Root-Finding ! ! Overview ! ======== ! ! The problem of multidimensional root finding requires the simultaneous ! solution of n equations, f_i, in n variables, x_i, ! ! f_i (x_1, ..., x_n) = 0 for i = 1 ... n. ! ! In general there are no bracketing methods available for n dimensional ! systems, and no way of knowing whether any solutions exist. All ! algorithms proceed from an initial guess using a variant of the Newton ! iteration, ! ! x -> x' = x - J^{-1} f(x) ! ! where x, f are vector quantities and J is the Jacobian matrix J_{ij} = ! d f_i / d x_j. Additional strategies can be used to enlarge the region ! of convergence. These include requiring a decrease in the norm |f| on ! each step proposed by Newton's method, or taking steepest-descent steps ! in the direction of the negative gradient of |f|. ! ! Several root-finding algorithms are available within a single ! framework. The user provides a high-level driver for the algorithms, ! and the library provides the individual functions necessary for each of ! the steps. There are three main phases of the iteration. The steps ! are, ! ! * initialize solver state, S, for algorithm T ! ! * update S using the iteration T ! ! * test S for convergence, and repeat iteration if necessary ! ! The evaluation of the Jacobian matrix can be problematic, either because ! programming the derivatives is intractable or because computation of the ! n^2 terms of the matrix becomes too expensive. For these reasons the ! algorithms provided by the library are divided into two classes ! according to whether the derivatives are available or not. ! ! The state for solvers with an analytic Jacobian matrix is held in a ! `gsl_multiroot_fdfsolver' struct. The updating procedure requires both ! the function and its derivatives to be supplied by the user. ! ! The state for solvers which do not use an analytic Jacobian matrix is ! held in a `gsl_multiroot_fsolver' struct. The updating procedure uses ! only function evaluations (not derivatives). The algorithms estimate ! the matrix J or J^{-1} by approximate methods. ! !  ! File: gsl-ref.info, Node: Initializing the Multidimensional Solver, Next: Providing the multidimensional system of equations to solve, Prev: Overview of Multidimensional Root Finding, Up: Multidimensional Root-Finding ! ! Initializing the Solver ! ======================= ! ! The following functions initialize a multidimensional solver, either ! with or without derivatives. The solver itself depends only on the ! dimension of the problem and the algorithm and can be reused for ! different problems. ! ! - Function: gsl_multiroot_fsolver * gsl_multiroot_fsolver_alloc (const ! gsl_multiroot_fsolver_type * T, size_t N) ! This function returns a pointer to a newly allocated instance of a ! solver of type T for a system of N dimensions. For example, the ! following code creates an instance of a hybrid solver, to solve a ! 3-dimensional system of equations. ! ! const gsl_multiroot_fsolver_type * T ! = gsl_multiroot_fsolver_hybrid; ! gsl_multiroot_fsolver * s ! = gsl_multiroot_fsolver_alloc (T, 3); ! ! If there is insufficient memory to create the solver then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: gsl_multiroot_fdfsolver * gsl_multiroot_fdfsolver_alloc ! (const gsl_multiroot_fdfsolver_type * T, size_t N) ! This function returns a pointer to a newly allocated instance of a ! derivative solver of type T for a system of N dimensions. For ! example, the following code creates an instance of a ! Newton-Raphson solver, for a 2-dimensional system of equations. ! ! const gsl_multiroot_fdfsolver_type * T ! = gsl_multiroot_fdfsolver_newton; ! gsl_multiroot_fdfsolver * s = ! gsl_multiroot_fdfsolver_alloc (T, 2); ! ! If there is insufficient memory to create the solver then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: int gsl_multiroot_fsolver_set (gsl_multiroot_fsolver * S, ! gsl_multiroot_function * F, gsl_vector * X) ! This function sets, or resets, an existing solver S to use the ! function F and the initial guess X. ! ! - Function: int gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * ! S, gsl_multiroot_function_fdf * FDF, gsl_vector * X) ! This function sets, or resets, an existing solver S to use the ! function and derivative FDF and the initial guess X. ! ! - Function: void gsl_multiroot_fsolver_free (gsl_multiroot_fsolver * S) ! - Function: void gsl_multiroot_fdfsolver_free (gsl_multiroot_fdfsolver ! * S) ! These functions free all the memory associated with the solver S. ! ! - Function: const char * gsl_multiroot_fsolver_name (const ! gsl_multiroot_fsolver * S) ! - Function: const char * gsl_multiroot_fdfsolver_name (const ! gsl_multiroot_fdfsolver * S) ! These functions return a pointer to the name of the solver. For ! example, ! ! printf ("s is a '%s' solver\n", ! gsl_multiroot_fdfsolver_name (s)); ! ! would print something like `s is a 'newton' solver'. ! !  ! File: gsl-ref.info, Node: Providing the multidimensional system of equations to solve, Next: Iteration of the multidimensional solver, Prev: Initializing the Multidimensional Solver, Up: Multidimensional Root-Finding ! ! Providing the function to solve ! =============================== ! ! You must provide n functions of n variables for the root finders to ! operate on. In order to allow for general parameters the functions are ! defined by the following data types: ! ! - Data Type: gsl_multiroot_function ! This data type defines a general system of functions with ! parameters. ! ! `int (* f) (const gsl_vector * X, void * PARAMS, gsl_vector * F)' ! this function should store the vector result f(x,params) in F ! for argument X and parameters PARAMS, returning an ! appropriate error code if the function cannot be computed. ! ! `size_t n' ! the dimension of the system, i.e. the number of components of ! the vectors X and F. ! ! `void * params' ! a pointer to the parameters of the function. ! ! Here is an example using Powell's test function, ! ! f_1(x) = A x_0 x_1 - 1, ! f_2(x) = exp(-x_0) + exp(-x_1) - (1 + 1/A) ! ! with A = 10^4. The following code defines a `gsl_multiroot_function' ! system `F' which you could pass to a solver: ! ! struct powell_params { double A; }; ! ! int ! powell (gsl_vector * x, void * p, gsl_vector * f) { ! struct powell_params * params ! = *(struct powell_params *)p; ! const double A = (params->A); ! const double x0 = gsl_vector_get(x,0); ! const double x1 = gsl_vector_get(x,1); ! ! gsl_vector_set (f, 0, A * x0 * x1 - 1); ! gsl_vector_set (f, 1, (exp(-x0) + exp(-x1) ! - (1.0 + 1.0/A))); ! return GSL_SUCCESS ! } ! ! gsl_multiroot_function F; ! struct powell_params params = { 10000.0 }; ! ! F.f = &powell; ! F.n = 2; ! F.params = ¶ms; ! ! - Data Type: gsl_multiroot_function_fdf ! This data type defines a general system of functions with ! parameters and the corresponding Jacobian matrix of derivatives, ! ! `int (* f) (const gsl_vector * X, void * PARAMS, gsl_vector * F)' ! this function should store the vector result f(x,params) in F ! for argument X and parameters PARAMS, returning an ! appropriate error code if the function cannot be computed. ! ! `int (* df) (const gsl_vector * X, void * PARAMS, gsl_matrix * J)' ! this function should store the N-by-N matrix result J_ij = d ! f_i(x,params) / d x_j in J for argument X and parameters ! PARAMS, returning an appropriate error code if the function ! cannot be computed. ! ! `int (* fdf) (const gsl_vector * X, void * PARAMS, gsl_vector * F, gsl_matrix * J)' ! This function should set the values of the F and J as above, ! for arguments X and parameters PARAMS. This function provides ! an optimization of the separate functions for f(x) and J(x) - ! it is always faster to compute the function and its ! derivative at the same time. ! ! `size_t n' ! the dimension of the system, i.e. the number of components of ! the vectors X and F. ! ! `void * params' ! a pointer to the parameters of the function. ! ! The example of Powell's test function defined above can be extended to ! include analytic derivatives using the following code, ! ! int ! powell_df (gsl_vector * x, void * p, gsl_matrix * J) ! { ! struct powell_params * params ! = *(struct powell_params *)p; ! const double A = (params->A); ! const double x0 = gsl_vector_get(x,0); ! const double x1 = gsl_vector_get(x,1); ! gsl_matrix_set (J, 0, 0, A * x1); ! gsl_matrix_set (J, 0, 1, A * x0); ! gsl_matrix_set (J, 1, 0, -exp(-x0)); ! gsl_matrix_set (J, 1, 1, -exp(-x1)); ! return GSL_SUCCESS ! } ! ! int ! powell_fdf (gsl_vector * x, void * p, ! gsl_matrix * f, gsl_matrix * J) { ! struct powell_params * params ! = *(struct powell_params *)p; ! const double A = (params->A); ! const double x0 = gsl_vector_get(x,0); ! const double x1 = gsl_vector_get(x,1); ! ! const double u0 = exp(-x0); ! const double u1 = exp(-x1); ! ! gsl_vector_set (f, 0, A * x0 * x1 - 1); ! gsl_vector_set (f, 1, u0 + u1 - (1 + 1/A)); ! ! gsl_matrix_set (J, 0, 0, A * x1); ! gsl_matrix_set (J, 0, 1, A * x0); ! gsl_matrix_set (J, 1, 0, -u0); ! gsl_matrix_set (J, 1, 1, -u1); ! return GSL_SUCCESS ! } ! ! gsl_multiroot_function_fdf FDF; ! ! FDF.f = &powell_f; ! FDF.df = &powell_df; ! FDF.fdf = &powell_fdf; ! FDF.n = 2; ! FDF.params = 0; ! ! Note that the function `powell_fdf' is able to reuse existing terms ! from the function when calculating the Jacobian, thus saving time. ! !  ! File: gsl-ref.info, Node: Iteration of the multidimensional solver, Next: Search Stopping Parameters for the multidimensional solver, Prev: Providing the multidimensional system of equations to solve, Up: Multidimensional Root-Finding ! ! Iteration ! ========= ! ! The following functions drive the iteration of each algorithm. Each ! function performs one iteration to update the state of any solver of the ! corresponding type. The same functions work for all solvers so that ! different methods can be substituted at runtime without modifications to ! the code. ! ! - Function: int gsl_multiroot_fsolver_iterate (gsl_multiroot_fsolver * ! S) ! - Function: int gsl_multiroot_fdfsolver_iterate ! (gsl_multiroot_fdfsolver * S) ! These functions perform a single iteration of the solver S. If the ! iteration encounters an unexpected problem then an error code will ! be returned, ! ! `GSL_EBADFUNC' ! the iteration encountered a singular point where the function ! or its derivative evaluated to `Inf' or `NaN'. ! ! `GSL_ENOPROG' ! the iteration is not making any progress, preventing the ! algorithm from continuing. ! ! The solver maintains a current best estimate of the root at all ! times. This information can be accessed with the following auxiliary ! functions, ! ! - Function: gsl_vector * gsl_multiroot_fsolver_root (const ! gsl_multiroot_fsolver * S) ! - Function: gsl_vector * gsl_multiroot_fdfsolver_root (const ! gsl_multiroot_fdfsolver * S) ! These functions return the current estimate of the root for the ! solver S. ! ! - Function: gsl_vector * gsl_multiroot_fsolver_f (const ! gsl_multiroot_fsolver * S) ! - Function: gsl_vector * gsl_multiroot_fdfsolver_f (const ! gsl_multiroot_fdfsolver * S) ! These functions return the function value f(x) at the current ! estimate of the root for the solver S. ! ! - Function: gsl_vector * gsl_multiroot_fsolver_dx (const ! gsl_multiroot_fsolver * S) ! - Function: gsl_vector * gsl_multiroot_fdfsolver_dx (const ! gsl_multiroot_fdfsolver * S) ! These functions return the last step dx taken by the solver S. ! !  ! File: gsl-ref.info, Node: Search Stopping Parameters for the multidimensional solver, Next: Algorithms using Derivatives, Prev: Iteration of the multidimensional solver, Up: Multidimensional Root-Finding ! ! Search Stopping Parameters ! ========================== ! ! A root finding procedure should stop when one of the following ! conditions is true: ! ! * A multidimensional root has been found to within the ! user-specified precision. ! ! * A user-specified maximum number of iterations has been reached. ! ! * An error has occurred. ! ! The handling of these conditions is under user control. The functions ! below allow the user to test the precision of the current result in ! several standard ways. ! ! - Function: int gsl_multiroot_test_delta (const gsl_vector * DX, const ! gsl_vector * X, double EPSABS, double EPSREL) ! This function tests for the convergence of the sequence by ! comparing the last step DX with the absolute error EPSABS and ! relative error EPSREL to the current position X. The test returns ! `GSL_SUCCESS' if the following condition is achieved, ! ! |dx_i| < epsabs + epsrel |x_i| ! ! for each component of X and returns `GSL_CONTINUE' otherwise. ! ! - Function: int gsl_multiroot_test_residual (const gsl_vector * F, ! double EPSABS) ! This function tests the residual value F against the absolute ! error bound EPSABS. The test returns `GSL_SUCCESS' if the ! following condition is achieved, ! ! \sum_i |f_i| < epsabs ! ! and returns `GSL_CONTINUE' otherwise. This criterion is suitable ! for situations where the precise location of the root, x, is ! unimportant provided a value can be found where the residual is ! small enough. ! !  ! File: gsl-ref.info, Node: Algorithms using Derivatives, Next: Algorithms without Derivatives, Prev: Search Stopping Parameters for the multidimensional solver, Up: Multidimensional Root-Finding ! ! Algorithms using Derivatives ! ============================ ! ! The root finding algorithms described in this section make use of both ! the function and its derivative. They require an initial guess for the ! location of the root, but there is no absolute guarantee of convergence ! - the function must be suitable for this technique and the initial ! guess must be sufficiently close to the root for it to work. When the ! conditions are satisfied then convergence is quadratic. ! ! - Derivative Solver: gsl_multiroot_fdfsolver_hybridsj ! This is a modified version of Powell's Hybrid method as ! implemented in the HYBRJ algorithm in MINPACK. Minpack was ! written by Jorge J. More', Burton S. Garbow and Kenneth E. ! Hillstrom. The Hybrid algorithm retains the fast convergence of ! Newton's method but will also reduce the residual when Newton's ! method is unreliable. ! ! The algorithm uses a generalized trust region to keep each step ! under control. In order to be accepted a proposed new position x' ! must satisfy the condition |D (x' - x)| < \delta, where D is a ! diagonal scaling matrix and \delta is the size of the trust ! region. The components of D are computed internally, using the ! column norms of the Jacobian to estimate the sensitivity of the ! residual to each component of x. This improves the behavior of the ! algorithm for badly scaled functions. ! ! On each iteration the algorithm first determines the standard ! Newton step by solving the system J dx = - f. If this step falls ! inside the trust region it is used as a trial step in the next ! stage. If not, the algorithm uses the linear combination of the ! Newton and gradient directions which is predicted to minimize the ! norm of the function while staying inside the trust region. ! ! dx = - \alpha J^{-1} f(x) - \beta \nabla |f(x)|^2 ! ! This combination of Newton and gradient directions is referred to ! as a "dogleg step". ! ! The proposed step is now tested by evaluating the function at the ! resulting point, x'. If the step reduces the norm of the function ! sufficiently then it is accepted and size of the trust region is ! increased. If the proposed step fails to improve the solution ! then the size of the trust region is decreased and another trial ! step is computed. ! ! The speed of the algorithm is increased by computing the changes ! to the Jacobian approximately, using a rank-1 update. If two ! successive attempts fail to reduce the residual then the full ! Jacobian is recomputed. The algorithm also monitors the progress ! of the solution and returns an error if several steps fail to make ! any improvement, ! ! `GSL_ENOPROG' ! the iteration is not making any progress, preventing the ! algorithm from continuing. ! ! `GSL_ENOPROGJ' ! re-evaluations of the Jacobian indicate that the iteration is ! not making any progress, preventing the algorithm from ! continuing. ! ! ! - Derivative Solver: gsl_multiroot_fdfsolver_hybridj ! This algorithm is an unscaled version of `hybridsj'. The steps are ! controlled by a spherical trust region |x' - x| < \delta, instead ! of a generalized region. This can be useful if the generalized ! region estimated by `hybridsj' is inappropriate. ! ! - Derivative Solver: gsl_multiroot_fdfsolver_newton ! Newton's Method is the standard root-polishing algorithm. The ! algorithm begins with an initial guess for the location of the ! solution. On each iteration a linear approximation to the ! function F is used to estimate the step which will zero all the ! components of the residual. The iteration is defined by the ! following sequence, ! ! x -> x' = x - J^{-1} f(x) ! ! where the Jacobian matrix J is computed from the derivative ! functions provided by F. The step dx is obtained by solving the ! linear system, ! ! J dx = - f(x) ! ! using LU decomposition. ! ! - Derivative Solver: gsl_multiroot_fdfsolver_gnewton ! This is a modified version of Newton's method which attempts to ! improve global convergence by requiring every step to reduce the ! Euclidean norm of the residual, |f(x)|. If the Newton step leads ! to an increase in the norm then a reduced step of relative size, ! ! t = (\sqrt(1 + 6 r) - 1) / (3 r) ! ! is proposed, with r being the ratio of norms |f(x')|^2/|f(x)|^2. ! This procedure is repeated until a suitable step size is found. ! !  ! File: gsl-ref.info, Node: Algorithms without Derivatives, Next: Example programs for Multidimensional Root finding, Prev: Algorithms using Derivatives, Up: Multidimensional Root-Finding ! ! Algorithms without Derivatives ! ============================== ! ! The algorithms described in this section do not require any derivative ! information to be supplied by the user. Any derivatives needed are ! approximated from by finite difference. ! ! - Solver: gsl_multiroot_fsolver_hybrids ! This is a version of the Hybrid algorithm which replaces calls to ! the Jacobian function by its finite difference approximation. The ! finite difference approximation is computed using ! `gsl_multiroots_fdjac' with a relative step size of ! `GSL_SQRT_DBL_EPSILON'. ! ! - Solver: gsl_multiroot_fsolver_hybrid ! This is a finite difference version of the Hybrid algorithm without ! internal scaling. ! ! - Solver: gsl_multiroot_fsolver_dnewton ! The "discrete Newton algorithm" is the simplest method of solving a ! multidimensional system. It uses the Newton iteration ! ! x -> x - J^{-1} f(x) ! ! where the Jacobian matrix J is approximated by taking finite ! differences of the function F. The approximation scheme used by ! this implementation is, ! ! J_{ij} = (f_i(x + \delta_j) - f_i(x)) / \delta_j ! ! where \delta_j is a step of size \sqrt\epsilon |x_j| with \epsilon ! being the machine precision (\epsilon \approx 2.22 \times 10^-16). ! The order of convergence of Newton's algorithm is quadratic, but ! the finite differences require n^2 function evaluations on each ! iteration. The algorithm may become unstable if the finite ! differences are not a good approximation to the true derivatives. ! ! - Solver: gsl_multiroot_fsolver_broyden ! The "Broyden algorithm" is a version of the discrete Newton ! algorithm which attempts to avoids the expensive update of the ! Jacobian matrix on each iteration. The changes to the Jacobian ! are also approximated, using a rank-1 update, ! ! J^{-1} \to J^{-1} - (J^{-1} df - dx) dx^T J^{-1} / dx^T J^{-1} df ! ! where the vectors dx and df are the changes in x and f. On the ! first iteration the inverse Jacobian is estimated using finite ! differences, as in the discrete Newton algorithm. ! ! This approximation gives a fast update but is unreliable if the ! changes are not small, and the estimate of the inverse Jacobian ! becomes worse as time passes. The algorithm has a tendency to ! become unstable unless it starts close to the root. The Jacobian ! is refreshed if this instability is detected (consult the source ! for details). ! ! This algorithm is not recommended and is included only for ! demonstration purposes. ! !  ! File: gsl-ref.info, Node: Example programs for Multidimensional Root finding, Next: References and Further Reading for Multidimensional Root Finding, Prev: Algorithms without Derivatives, Up: Multidimensional Root-Finding ! ! Examples ! ======== ! ! The multidimensional solvers are used in a similar way to the ! one-dimensional root finding algorithms. This first example ! demonstrates the `hybrids' scaled-hybrid algorithm, which does not ! require derivatives. The program solves the Rosenbrock system of ! equations, ! ! f_1 (x, y) = a (1 - x) ! f_2 (x, y) = b (y - x^2) ! ! with a = 1, b = 10. The solution of this system lies at (x,y) = (1,1) ! in a narrow valley. ! ! The first stage of the program is to define the system of equations, ! ! #include ! #include ! #include ! #include ! ! struct rparams ! { ! double a; ! double b; ! }; ! ! int ! rosenbrock_f (const gsl_vector * x, void *params, ! gsl_vector * f) ! { ! double a = ((struct rparams *) params)->a; ! double b = ((struct rparams *) params)->b; ! ! const double x0 = gsl_vector_get (x, 0); ! const double x1 = gsl_vector_get (x, 1); ! ! const double y0 = a * (1 - x0); ! const double y1 = b * (x1 - x0 * x0); ! ! gsl_vector_set (f, 0, y0); ! gsl_vector_set (f, 1, y1); ! ! return GSL_SUCCESS; ! } ! ! The main program begins by creating the function object `f', with the ! arguments `(x,y)' and parameters `(a,b)'. The solver `s' is initialized ! to use this function, with the `hybrids' method. ! ! int ! main (void) ! { ! const gsl_multiroot_fsolver_type *T; ! gsl_multiroot_fsolver *s; ! ! int status; ! size_t i, iter = 0; ! ! const size_t n = 2; ! struct rparams p = {1.0, 10.0}; ! gsl_multiroot_function f = {&rosenbrock_f, n, &p}; ! ! double x_init[2] = {-10.0, -5.0}; ! gsl_vector *x = gsl_vector_alloc (n); ! ! gsl_vector_set (x, 0, x_init[0]); ! gsl_vector_set (x, 1, x_init[1]); ! ! T = gsl_multiroot_fsolver_hybrids; ! s = gsl_multiroot_fsolver_alloc (T, 2); ! gsl_multiroot_fsolver_set (s, &f, x); ! ! print_state (iter, s); ! ! do ! { ! iter++; ! status = gsl_multiroot_fsolver_iterate (s); ! ! print_state (iter, s); ! ! if (status) /* check if solver is stuck */ ! break; ! ! status = ! gsl_multiroot_test_residual (s->f, 1e-7); ! } ! while (status == GSL_CONTINUE && iter < 1000); ! ! printf ("status = %s\n", gsl_strerror (status)); ! ! gsl_multiroot_fsolver_free (s); ! gsl_vector_free (x); ! return 0; ! } ! ! Note that it is important to check the return status of each solver ! step, in case the algorithm becomes stuck. If an error condition is ! detected, indicating that the algorithm cannot proceed, then the error ! can be reported to the user, a new starting point chosen or a different ! algorithm used. ! ! The intermediate state of the solution is displayed by the following ! function. The solver state contains the vector `s->x' which is the ! current position, and the vector `s->f' with corresponding function ! values. ! int ! print_state (size_t iter, gsl_multiroot_fsolver * s) ! { ! printf ("iter = %3u x = % .3f % .3f " ! "f(x) = % .3e % .3e\n", ! iter, ! gsl_vector_get (s->x, 0), ! gsl_vector_get (s->x, 1), ! gsl_vector_get (s->f, 0), ! gsl_vector_get (s->f, 1)); ! } ! ! Here are the results of running the program. The algorithm is started at ! (-10,-5) far from the solution. Since the solution is hidden in a ! narrow valley the earliest steps follow the gradient of the function ! downhill, in an attempt to reduce the large value of the residual. Once ! the root has been approximately located, on iteration 8, the Newton ! behavior takes over and convergence is very rapid. ! ! iter = 0 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 ! iter = 1 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 ! iter = 2 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 ! iter = 3 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 ! iter = 4 x = -3.976 24.827 f(x) = 4.976e+00 9.020e+01 ! iter = 5 x = -1.274 -5.680 f(x) = 2.274e+00 -7.302e+01 ! iter = 6 x = -1.274 -5.680 f(x) = 2.274e+00 -7.302e+01 ! iter = 7 x = 0.249 0.298 f(x) = 7.511e-01 2.359e+00 ! iter = 8 x = 0.249 0.298 f(x) = 7.511e-01 2.359e+00 ! iter = 9 x = 1.000 0.878 f(x) = 1.268e-10 -1.218e+00 ! iter = 10 x = 1.000 0.989 f(x) = 1.124e-11 -1.080e-01 ! iter = 11 x = 1.000 1.000 f(x) = 0.000e+00 0.000e+00 ! status = success ! ! Note that the algorithm does not update the location on every ! iteration. Some iterations are used to adjust the trust-region ! parameter, after trying a step which was found to be divergent, or to ! recompute the Jacobian, when poor convergence behavior is detected. ! ! The next example program adds derivative information, in order to ! accelerate the solution. There are two derivative functions ! `rosenbrock_df' and `rosenbrock_fdf'. The latter computes both the ! function and its derivative simultaneously. This allows the ! optimization of any common terms. For simplicity we substitute calls to ! the separate `f' and `df' functions at this point in the code below. ! ! int ! rosenbrock_df (const gsl_vector * x, void *params, ! gsl_matrix * J) ! { ! const double a = ((struct rparams *) params)->a; ! const double b = ((struct rparams *) params)->b; ! ! const double x0 = gsl_vector_get (x, 0); ! ! const double df00 = -a; ! const double df01 = 0; ! const double df10 = -2 * b * x0; ! const double df11 = b; ! ! gsl_matrix_set (J, 0, 0, df00); ! gsl_matrix_set (J, 0, 1, df01); ! gsl_matrix_set (J, 1, 0, df10); ! gsl_matrix_set (J, 1, 1, df11); ! ! return GSL_SUCCESS; ! } ! ! int ! rosenbrock_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * J) ! { ! rosenbrock_f (x, params, f); ! rosenbrock_df (x, params, J); ! ! return GSL_SUCCESS; ! } ! ! The main program now makes calls to the corresponding `fdfsolver' ! versions of the functions, ! ! int ! main (void) ! { ! const gsl_multiroot_fdfsolver_type *T; ! gsl_multiroot_fdfsolver *s; ! ! int status; ! size_t i, iter = 0; ! ! const size_t n = 2; ! struct rparams p = {1.0, 10.0}; ! gsl_multiroot_function_fdf f = {&rosenbrock_f, ! &rosenbrock_df, ! &rosenbrock_fdf, ! n, &p}; ! ! double x_init[2] = {-10.0, -5.0}; ! gsl_vector *x = gsl_vector_alloc (n); ! ! gsl_vector_set (x, 0, x_init[0]); ! gsl_vector_set (x, 1, x_init[1]); ! ! T = gsl_multiroot_fdfsolver_gnewton; ! s = gsl_multiroot_fdfsolver_alloc (T, n); ! gsl_multiroot_fdfsolver_set (s, &f, x); ! ! print_state (iter, s); ! ! do ! { ! iter++; ! ! status = gsl_multiroot_fdfsolver_iterate (s); ! ! print_state (iter, s); ! ! if (status) ! break; ! ! status = gsl_multiroot_test_residual (s->f, 1e-7); ! } ! while (status == GSL_CONTINUE && iter < 1000); ! ! printf ("status = %s\n", gsl_strerror (status)); ! ! gsl_multiroot_fdfsolver_free (s); ! gsl_vector_free (x); ! return 0; ! } ! ! The addition of derivative information to the `hybrids' solver does not ! make any significant difference to its behavior, since it able to ! approximate the Jacobian numerically with sufficient accuracy. To ! illustrate the behavior of a different derivative solver we switch to ! `gnewton'. This is a traditional Newton solver with the constraint that ! it scales back its step if the full step would lead "uphill". Here is ! the output for the `gnewton' algorithm, ! ! iter = 0 x = -10.000 -5.000 f(x) = 1.100e+01 -1.050e+03 ! iter = 1 x = -4.231 -65.317 f(x) = 5.231e+00 -8.321e+02 ! iter = 2 x = 1.000 -26.358 f(x) = -8.882e-16 -2.736e+02 ! iter = 3 x = 1.000 1.000 f(x) = -2.220e-16 -4.441e-15 ! status = success ! ! The convergence is much more rapid, but takes a wide excursion out to ! the point (-4.23,-65.3). This could cause the algorithm to go astray in ! a realistic application. The hybrid algorithm follows the downhill ! path to the solution more reliably. ! !  ! File: gsl-ref.info, Node: References and Further Reading for Multidimensional Root Finding, Prev: Example programs for Multidimensional Root finding, Up: Multidimensional Root-Finding ! ! References and Further Reading ! ============================== ! ! The original version of the Hybrid method is described in the following ! articles by Powell, ! ! M.J.D. Powell, "A Hybrid Method for Nonlinear Equations" (Chap 6, p ! 87-114) and "A Fortran Subroutine for Solving systems of Nonlinear ! Algebraic Equations" (Chap 7, p 115-161), in `Numerical Methods for ! Nonlinear Algebraic Equations', P. Rabinowitz, editor. Gordon and ! Breach, 1970. ! ! The following papers are also relevant to the algorithms described in ! this section, ! ! J.J. More', M.Y. Cosnard, "Numerical Solution of Nonlinear ! Equations", `ACM Transactions on Mathematical Software', Vol 5, No ! 1, (1979), p 64-85 ! ! C.G. Broyden, "A Class of Methods for Solving Nonlinear ! Simultaneous Equations", `Mathematics of Computation', Vol 19 ! (1965), p 577-593 ! ! J.J. More', B.S. Garbow, K.E. Hillstrom, "Testing Unconstrained ! Optimization Software", ACM Transactions on Mathematical Software, ! Vol 7, No 1 (1981), p 17-41 ! !  ! File: gsl-ref.info, Node: Multidimensional Minimization, Next: Least-Squares Fitting, Prev: Multidimensional Root-Finding, Up: Top ! ! Multidimensional Minimization ! ***************************** ! ! This chapter describes routines for finding minima of arbitrary ! multidimensional functions. The library provides low level components ! for a variety of iterative minimizers and convergence tests. These can ! be combined by the user to achieve the desired solution, while providing ! full access to the intermediate steps of the algorithms. Each class of ! methods uses the same framework, so that you can switch between ! minimizers at runtime without needing to recompile your program. Each ! instance of a minimizer keeps track of its own state, allowing the ! minimizers to be used in multi-threaded programs. The minimization ! algorithms can be used to maximize a function by inverting its sign. ! ! The header file `gsl_multimin.h' contains prototypes for the ! minimization functions and related declarations. ! ! * Menu: ! ! * Multimin Overview:: ! * Multimin Caveats:: ! * Initializing the Multidimensional Minimizer:: ! * Providing a function to minimize:: ! * Multimin Iteration:: ! * Multimin Stopping Criteria:: ! * Multimin Algorithms:: ! * Multimin Examples:: ! * Multimin References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Multimin Overview, Next: Multimin Caveats, Up: Multidimensional Minimization ! ! Overview ! ======== ! ! The problem of multidimensional minimization requires finding a point x ! such that the scalar function, ! ! f(x_1, ..., x_n) ! ! takes a value which is lower than at any neighboring point. For smooth ! functions the gradient g = \nabla f vanishes at the minimum. In general ! there are no bracketing methods available for the minimization of ! n-dimensional functions. All algorithms proceed from an initial guess ! using a search algorithm which attempts to move in a downhill direction. ! ! All algorithms making use of the gradient of the function perform a ! one-dimensional line minimisation along this direction until the lowest ! point is found to a suitable tolerance. The search direction is then ! updated with local information from the function and its derivatives, ! and the whole process repeated until the true n-dimensional minimum is ! found. ! ! The Nelder-Mead Simplex algorithm applies a different strategy. It ! maintains n+1 trial parameter vectors as the vertices of a ! n-dimensional simplex. In each iteration step it tries to improve the ! worst vertex by a simple geometrical transformation until the size of ! the simplex falls below a given tolerance. ! ! Several minimization algorithms are available within a single ! framework. The user provides a high-level driver for the algorithms, and ! the library provides the individual functions necessary for each of the ! steps. There are three main phases of the iteration. The steps are, ! ! * initialize minimizer state, S, for algorithm T ! ! * update S using the iteration T ! ! * test S for convergence, and repeat iteration if necessary ! ! Each iteration step consists either of an improvement to the ! line-minimisation in the current direction or an update to the search ! direction itself. The state for the minimizers is held in a ! `gsl_multimin_fdfminimizer' struct or a `gsl_multimin_fminimizer' ! struct. ! !  ! File: gsl-ref.info, Node: Multimin Caveats, Next: Initializing the Multidimensional Minimizer, Prev: Multimin Overview, Up: Multidimensional Minimization ! ! Caveats ! ======= ! ! Note that the minimization algorithms can only search for one local ! minimum at a time. When there are several local minima in the search ! area, the first minimum to be found will be returned; however it is ! difficult to predict which of the minima this will be. In most cases, ! no error will be reported if you try to find a local minimum in an area ! where there is more than one. ! ! It is also important to note that the minimization algorithms find ! local minima; there is no way to determine whether a minimum is a global ! minimum of the function in question. ! !  ! File: gsl-ref.info, Node: Initializing the Multidimensional Minimizer, Next: Providing a function to minimize, Prev: Multimin Caveats, Up: Multidimensional Minimization ! ! Initializing the Multidimensional Minimizer ! =========================================== ! ! The following function initializes a multidimensional minimizer. The ! minimizer itself depends only on the dimension of the problem and the ! algorithm and can be reused for different problems. ! ! - Function: gsl_multimin_fdfminimizer * ! gsl_multimin_fdfminimizer_alloc (const ! gsl_multimin_fdfminimizer_type *T, size_t N) ! - Function: gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc ! (const gsl_multimin_fminimizer_type *T, size_t N) ! This function returns a pointer to a newly allocated instance of a ! minimizer of type T for an N-dimension function. If there is ! insufficient memory to create the minimizer then the function ! returns a null pointer and the error handler is invoked with an ! error code of `GSL_ENOMEM'. ! ! - Function: int gsl_multimin_fdfminimizer_set ! (gsl_multimin_fdfminimizer * S, gsl_multimin_function_fdf ! *FDF, const gsl_vector * X, double STEP_SIZE, double TOL) ! This function initializes the minimizer S to minimize the function ! FDF starting from the initial point X. The size of the first ! trial step is given by STEP_SIZE. The accuracy of the line ! minimization is specified by TOL. The precise meaning of this ! parameter depends on the method used. Typically the line ! minimization is considered successful if the gradient of the ! function g is orthogonal to the current search direction p to a ! relative accuracy of TOL, where dot(p,g) < tol |p| |g|. ! ! - Function: int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * ! S, gsl_multimin_function *F, const gsl_vector * X, const ! gsl_vector * STEP_SIZE) ! This function initializes the minimizer S to minimize the function ! F, starting from the initial point X. The size of the initial ! trial steps is given in vector STEP_SIZE. The precise meaning of ! this parameter depends on the method used. ! ! - Function: void gsl_multimin_fdfminimizer_free ! (gsl_multimin_fdfminimizer *S) ! - Function: void gsl_multimin_fminimizer_free (gsl_multimin_fminimizer ! *S) ! This function frees all the memory associated with the minimizer S. ! ! - Function: const char * gsl_multimin_fdfminimizer_name (const ! gsl_multimin_fdfminimizer * S) ! - Function: const char * gsl_multimin_fminimizer_name (const ! gsl_multimin_fminimizer * S) ! This function returns a pointer to the name of the minimizer. For ! example, ! ! printf ("s is a '%s' minimizer\n", ! gsl_multimin_fdfminimizer_name (s)); ! ! would print something like `s is a 'conjugate_pr' minimizer'. ! !  ! File: gsl-ref.info, Node: Providing a function to minimize, Next: Multimin Iteration, Prev: Initializing the Multidimensional Minimizer, Up: Multidimensional Minimization ! ! Providing a function to minimize ! ================================ ! ! You must provide a parametric function of n variables for the ! minimizers to operate on. You may also need to provide a routine which ! calculates the gradient of the function and a third routine which ! calculates both the function value and the gradient together. In order ! to allow for general parameters the functions are defined by the ! following data type: ! ! - Data Type: gsl_multimin_function_fdf ! This data type defines a general function of n variables with ! parameters and the corresponding gradient vector of derivatives, ! ! `double (* f) (const gsl_vector * X, void * PARAMS)' ! this function should return the result f(x,params) for ! argument X and parameters PARAMS. ! ! `void (* df) (const gsl_vector * X, void * PARAMS, gsl_vector * G)' ! this function should store the N-dimensional gradient g_i = d ! f(x,params) / d x_i in the vector G for argument X and ! parameters PARAMS, returning an appropriate error code if the ! function cannot be computed. ! ! `void (* fdf) (const gsl_vector * X, void * PARAMS, double * f, gsl_vector * G)' ! This function should set the values of the F and G as above, ! for arguments X and parameters PARAMS. This function provides ! an optimization of the separate functions for f(x) and g(x) - ! it is always faster to compute the function and its ! derivative at the same time. ! ! `size_t n' ! the dimension of the system, i.e. the number of components of ! the vectors X. ! ! `void * params' ! a pointer to the parameters of the function. ! ! - Data Type: gsl_multimin_function ! This data type defines a general function of n variables with ! parameters, ! ! `double (* f) (const gsl_vector * X, void * PARAMS)' ! this function should return the result f(x,params) for ! argument X and parameters PARAMS. ! ! `size_t n' ! the dimension of the system, i.e. the number of components of ! the vectors X. ! ! `void * params' ! a pointer to the parameters of the function. ! ! The following example function defines a simple paraboloid with two ! parameters, ! ! /* Paraboloid centered on (dp[0],dp[1]) */ ! ! double ! my_f (const gsl_vector *v, void *params) ! { ! double x, y; ! double *dp = (double *)params; ! ! x = gsl_vector_get(v, 0); ! y = gsl_vector_get(v, 1); ! ! return 10.0 * (x - dp[0]) * (x - dp[0]) + ! 20.0 * (y - dp[1]) * (y - dp[1]) + 30.0; ! } ! ! /* The gradient of f, df = (df/dx, df/dy). */ ! void ! my_df (const gsl_vector *v, void *params, ! gsl_vector *df) ! { ! double x, y; ! double *dp = (double *)params; ! ! x = gsl_vector_get(v, 0); ! y = gsl_vector_get(v, 1); ! ! gsl_vector_set(df, 0, 20.0 * (x - dp[0])); ! gsl_vector_set(df, 1, 40.0 * (y - dp[1])); ! } ! ! /* Compute both f and df together. */ ! void ! my_fdf (const gsl_vector *x, void *params, ! double *f, gsl_vector *df) ! { ! *f = my_f(x, params); ! my_df(x, params, df); ! } ! ! The function can be initialized using the following code, ! ! gsl_multimin_function_fdf my_func; ! ! double p[2] = { 1.0, 2.0 }; /* center at (1,2) */ ! ! my_func.f = &my_f; ! my_func.df = &my_df; ! my_func.fdf = &my_fdf; ! my_func.n = 2; ! my_func.params = (void *)p; ! !  ! File: gsl-ref.info, Node: Multimin Iteration, Next: Multimin Stopping Criteria, Prev: Providing a function to minimize, Up: Multidimensional Minimization ! ! Iteration ! ========= ! ! The following function drives the iteration of each algorithm. The ! function performs one iteration to update the state of the minimizer. ! The same function works for all minimizers so that different methods can ! be substituted at runtime without modifications to the code. ! ! - Function: int gsl_multimin_fdfminimizer_iterate ! (gsl_multimin_fdfminimizer *S) ! - Function: int gsl_multimin_fminimizer_iterate ! (gsl_multimin_fminimizer *S) ! These functions perform a single iteration of the minimizer S. If ! the iteration encounters an unexpected problem then an error code ! will be returned. ! ! The minimizer maintains a current best estimate of the minimum at all ! times. This information can be accessed with the following auxiliary ! functions, ! ! - Function: gsl_vector * gsl_multimin_fdfminimizer_x (const ! gsl_multimin_fdfminimizer * S) ! - Function: gsl_vector * gsl_multimin_fminimizer_x (const ! gsl_multimin_fminimizer * S) ! - Function: double gsl_multimin_fdfminimizer_minimum (const ! gsl_multimin_fdfminimizer * S) ! - Function: double gsl_multimin_fminimizer_minimum (const ! gsl_multimin_fminimizer * S) ! - Function: gsl_vector * gsl_multimin_fdfminimizer_gradient (const ! gsl_multimin_fdfminimizer * S) ! - Function: double gsl_multimin_fminimizer_size (const ! gsl_multimin_fminimizer * S) ! These functions return the current best estimate of the location ! of the minimum, the value of the function at that point, its ! gradient, and minimizer specific characteristic size for the ! minimizer S. ! ! - Function: int gsl_multimin_fdfminimizer_restart ! (gsl_multimin_fdfminimizer *S) ! This function resets the minimizer S to use the current point as a ! new starting point. ! !  ! File: gsl-ref.info, Node: Multimin Stopping Criteria, Next: Multimin Algorithms, Prev: Multimin Iteration, Up: Multidimensional Minimization ! ! Stopping Criteria ! ================= ! ! A minimization procedure should stop when one of the following ! conditions is true: ! ! * A minimum has been found to within the user-specified precision. ! ! * A user-specified maximum number of iterations has been reached. ! ! * An error has occurred. ! ! The handling of these conditions is under user control. The functions ! below allow the user to test the precision of the current result. ! ! - Function: int gsl_multimin_test_gradient (const gsl_vector * G, ! double EPSABS) ! This function tests the norm of the gradient G against the ! absolute tolerance EPSABS. The gradient of a multidimensional ! function goes to zero at a minimum. The test returns `GSL_SUCCESS' ! if the following condition is achieved, ! ! |g| < epsabs ! ! and returns `GSL_CONTINUE' otherwise. A suitable choice of EPSABS ! can be made from the desired accuracy in the function for small ! variations in x. The relationship between these quantities is ! given by \delta f = g \delta x. ! ! - Function: int gsl_multimin_test_size (const double SIZE, double ! EPSABS) ! This function tests the minimizer specific characteristic size (if ! applicable to the used minimizer) against absolute tolerance ! EPSABS. The test returns `GSL_SUCCESS' if the size is smaller ! than tolerance, otherwise `GSL_CONTINUE' is returned. ! !  ! File: gsl-ref.info, Node: Multimin Algorithms, Next: Multimin Examples, Prev: Multimin Stopping Criteria, Up: Multidimensional Minimization ! ! Algorithms ! ========== ! ! There are several minimization methods available. The best choice of ! algorithm depends on the problem. All of the algorithms uses the value ! of the function and most of its gradient at each evaluation point, too. ! ! - Minimizer: gsl_multimin_fdfminimizer_conjugate_fr ! This is the Fletcher-Reeves conjugate gradient algorithm. The ! conjugate gradient algorithm proceeds as a succession of line ! minimizations. The sequence of search directions is used to build ! up an approximation to the curvature of the function in the ! neighborhood of the minimum. An initial search direction P is ! chosen using the gradient and line minimization is carried out in ! that direction. The accuracy of the line minimization is ! specified by the parameter TOL. At the minimum along this line ! the function gradient G and the search direction P are orthogonal. ! The line minimization terminates when dot(p,g) < tol |p| |g|. The ! search direction is updated using the Fletcher-Reeves formula p' ! = g' - \beta g where \beta=-|g'|^2/|g|^2, and the line ! minimization is then repeated for the new search direction. ! ! - Minimizer: gsl_multimin_fdfminimizer_conjugate_pr ! This is the Polak-Ribiere conjugate gradient algorithm. It is ! similar to the Fletcher-Reeves method, differing only in the ! choice of the coefficient \beta. Both methods work well when the ! evaluation point is close enough to the minimum of the objective ! function that it is well approximated by a quadratic hypersurface. ! ! - Minimizer: gsl_multimin_fdfminimizer_vector_bfgs ! This is the vector Broyden-Fletcher-Goldfarb-Shanno (BFGS) ! conjugate gradient algorithm. It is a quasi-Newton method which ! builds up an approximation to the second derivatives of the ! function f using the difference between successive gradient ! vectors. By combining the first and second derivatives the ! algorithm is able to take Newton-type steps towards the function ! minimum, assuming quadratic behavior in that region. ! ! - Minimizer: gsl_multimin_fdfminimizer_steepest_descent ! The steepest descent algorithm follows the downhill gradient of the ! function at each step. When a downhill step is successful the ! step-size is increased by a factor of two. If the downhill step ! leads to a higher function value then the algorithm backtracks and ! the step size is decreased using the parameter TOL. A suitable ! value of TOL for most applications is 0.1. The steepest descent ! method is inefficient and is included only for demonstration ! purposes. ! ! - Minimizer: gsl_multimin_fminimizer_nmsimplex ! This is the Simplex algorithm of Nelder and Mead. It constructs n ! vectors p_i from the starting vector X and the vector STEP_SIZE as ! follows: ! p_0 = (x_0, x_1, ... , x_n) ! p_1 = (x_0 + step_size_0, x_1, ... , x_n) ! p_2 = (x_0, x_1 + step_size_1, ... , x_n) ! ... = ... ! p_n = (x_0, x_1, ... , x_n+step_size_n) ! ! These vectors form the n+1 vertices of a simplex in n dimensions. ! On each iteration step the algorithm tries to improve the ! parameter vector p_i corresponding to the highest function value ! by simple geometrical transformations. These are reflection, ! reflection followed by expansion, contraction and multiple ! contraction. Using these transformations the simplex moves through ! the parameter space towards the minimum, where it contracts itself. ! ! After each iteration, the best vertex is returned. Note, that due ! to the nature of the algorithm not every step improves the current ! best parameter vector. Usually several iterations are required. ! ! The routine calculates the minimizer specific characteristic size ! as the average distance from the geometrical center of the simplex ! to all its vertices. This size can be used as a stopping ! criteria, as the simplex contracts itself near the minimum. The ! size is returned by the function `gsl_multimin_fminimizer_size'. ! !  ! File: gsl-ref.info, Node: Multimin Examples, Next: Multimin References and Further Reading, Prev: Multimin Algorithms, Up: Multidimensional Minimization ! ! Examples ! ======== ! ! This example program finds the minimum of the paraboloid function ! defined earlier. The location of the minimum is offset from the origin ! in x and y, and the function value at the minimum is non-zero. The main ! program is given below, it requires the example function given earlier ! in this chapter. ! ! int ! main (void) ! { ! size_t iter = 0; ! int status; ! ! const gsl_multimin_fdfminimizer_type *T; ! gsl_multimin_fdfminimizer *s; ! ! /* Position of the minimum (1,2). */ ! double par[2] = { 1.0, 2.0 }; ! ! gsl_vector *x; ! gsl_multimin_function_fdf my_func; ! ! my_func.f = &my_f; ! my_func.df = &my_df; ! my_func.fdf = &my_fdf; ! my_func.n = 2; ! my_func.params = ∥ ! ! /* Starting point, x = (5,7) */ ! x = gsl_vector_alloc (2); ! gsl_vector_set (x, 0, 5.0); ! gsl_vector_set (x, 1, 7.0); ! ! T = gsl_multimin_fdfminimizer_conjugate_fr; ! s = gsl_multimin_fdfminimizer_alloc (T, 2); ! ! gsl_multimin_fdfminimizer_set (s, &my_func, x, 0.01, 1e-4); ! ! do ! { ! iter++; ! status = gsl_multimin_fdfminimizer_iterate (s); ! ! if (status) ! break; ! ! status = gsl_multimin_test_gradient (s->gradient, 1e-3); ! ! if (status == GSL_SUCCESS) ! printf ("Minimum found at:\n"); ! ! printf ("%5d %.5f %.5f %10.5f\n", iter, ! gsl_vector_get (s->x, 0), ! gsl_vector_get (s->x, 1), ! s->f); ! ! } ! while (status == GSL_CONTINUE && iter < 100); ! ! gsl_multimin_fdfminimizer_free (s); ! gsl_vector_free (x); ! ! return 0; ! } ! ! The initial step-size is chosen as 0.01, a conservative estimate in this ! case, and the line minimization parameter is set at 0.0001. The program ! terminates when the norm of the gradient has been reduced below 0.001. ! The output of the program is shown below, ! ! x y f ! 1 4.99629 6.99072 687.84780 ! 2 4.98886 6.97215 683.55456 ! 3 4.97400 6.93501 675.01278 ! 4 4.94429 6.86073 658.10798 ! 5 4.88487 6.71217 625.01340 ! 6 4.76602 6.41506 561.68440 ! 7 4.52833 5.82083 446.46694 ! 8 4.05295 4.63238 261.79422 ! 9 3.10219 2.25548 75.49762 ! 10 2.85185 1.62963 67.03704 ! 11 2.19088 1.76182 45.31640 ! 12 0.86892 2.02622 30.18555 ! Minimum found at: ! 13 1.00000 2.00000 30.00000 ! ! Note that the algorithm gradually increases the step size as it ! successfully moves downhill, as can be seen by plotting the successive ! points. ! ! The conjugate gradient algorithm finds the minimum on its second ! direction because the function is purely quadratic. Additional ! iterations would be needed for a more complicated function. ! ! Here is another example using the Nelder Mead Simplex algorithm to ! minimize the same example object function, as above. ! ! int ! main(void) ! { ! size_t np = 2; ! double par[2] = {1.0, 2.0}; ! ! const gsl_multimin_fminimizer_type *T = ! gsl_multimin_fminimizer_nmsimplex; ! gsl_multimin_fminimizer *s = NULL; ! gsl_vector *ss, *x; ! gsl_multimin_function minex_func; ! ! size_t iter = 0, i; ! int status; ! double size; ! ! /* Initial vertex size vector */ ! ss = gsl_vector_alloc (np); ! ! /* Set all step sizes to 1 */ ! gsl_vector_set_all (ss, 1.0); ! ! /* Starting point */ ! x = gsl_vector_alloc (np); ! ! gsl_vector_set (x, 0, 5.0); ! gsl_vector_set (x, 1, 7.0); ! ! /* Initialize method and iterate */ ! minex_func.f = &my_f; ! minex_func.n = np; ! minex_func.params = (void *)∥ ! ! s = gsl_multimin_fminimizer_alloc (T, np); ! gsl_multimin_fminimizer_set (s, &minex_func, x, ss); ! ! do ! { ! iter++; ! status = gsl_multimin_fminimizer_iterate(s); ! ! if (status) ! break; ! ! size = gsl_multimin_fminimizer_size (s); ! status = gsl_multimin_test_size (size, 1e-2); ! ! if (status == GSL_SUCCESS) ! { ! printf ("converged to minimum at\n"); ! } ! ! printf ("%5d ", iter); ! for (i = 0; i < np; i++) ! { ! printf ("%10.3e ", gsl_vector_get (s->x, i)); ! } ! printf ("f() = %7.3f size = %.3f\n", s->fval, size); ! } ! while (status == GSL_CONTINUE && iter < 100); ! ! gsl_vector_free(x); ! gsl_vector_free(ss); ! gsl_multimin_fminimizer_free (s); ! ! return status; ! } ! ! The minimum search stops when the Simplex size drops to 0.01. The ! output is shown below. ! ! 1 6.500e+00 5.000e+00 f() = 512.500 size = 1.082 ! 2 5.250e+00 4.000e+00 f() = 290.625 size = 1.372 ! 3 5.250e+00 4.000e+00 f() = 290.625 size = 1.372 ! 4 5.500e+00 1.000e+00 f() = 252.500 size = 1.372 ! 5 2.625e+00 3.500e+00 f() = 101.406 size = 1.823 ! 6 3.469e+00 1.375e+00 f() = 98.760 size = 1.526 ! 7 1.820e+00 3.156e+00 f() = 63.467 size = 1.105 ! 8 1.820e+00 3.156e+00 f() = 63.467 size = 1.105 ! 9 1.016e+00 2.812e+00 f() = 43.206 size = 1.105 ! 10 2.041e+00 2.008e+00 f() = 40.838 size = 0.645 ! 11 1.236e+00 1.664e+00 f() = 32.816 size = 0.645 ! 12 1.236e+00 1.664e+00 f() = 32.816 size = 0.447 ! 13 5.225e-01 1.980e+00 f() = 32.288 size = 0.447 ! 14 1.103e+00 2.073e+00 f() = 30.214 size = 0.345 ! 15 1.103e+00 2.073e+00 f() = 30.214 size = 0.264 ! 16 1.103e+00 2.073e+00 f() = 30.214 size = 0.160 ! 17 9.864e-01 1.934e+00 f() = 30.090 size = 0.132 ! 18 9.190e-01 1.987e+00 f() = 30.069 size = 0.092 ! 19 1.028e+00 2.017e+00 f() = 30.013 size = 0.056 ! 20 1.028e+00 2.017e+00 f() = 30.013 size = 0.046 ! 21 1.028e+00 2.017e+00 f() = 30.013 size = 0.033 ! 22 9.874e-01 1.985e+00 f() = 30.006 size = 0.028 ! 23 9.846e-01 1.995e+00 f() = 30.003 size = 0.023 ! 24 1.007e+00 2.003e+00 f() = 30.001 size = 0.012 ! converged to minimum at ! 25 1.007e+00 2.003e+00 f() = 30.001 size = 0.010 ! ! The simplex size first increases, while the simplex moves towards the ! minimum. After a while the size begins to decrease as the simplex ! contracts around the minimum. ! !  ! File: gsl-ref.info, Node: Multimin References and Further Reading, Prev: Multimin Examples, Up: Multidimensional Minimization ! ! References and Further Reading ! ============================== ! ! A brief description of multidimensional minimization algorithms and ! further references can be found in the following book, ! ! C.W. Ueberhuber, `Numerical Computation (Volume 2)', Chapter 14, ! Section 4.4 "Minimization Methods", p. 325--335, Springer (1997), ! ISBN 3-540-62057-5. ! ! J.A. Nelder and R. Mead, `A simplex method for function ! minimization', Computer Journal vol. 7 (1965), 308--315. ! !  ! File: gsl-ref.info, Node: Least-Squares Fitting, Next: Nonlinear Least-Squares Fitting, Prev: Multidimensional Minimization, Up: Top ! ! Least-Squares Fitting ! ********************* ! ! This chapter describes routines for performing least squares fits to ! experimental data using linear combinations of functions. The data may ! be weighted or unweighted. For weighted data the functions compute the ! best fit parameters and their associated covariance matrix. For ! unweighted data the covariance matrix is estimated from the scatter of ! the points, giving a variance-covariance matrix. The functions are ! divided into separate versions for simple one- or two-parameter ! regression and multiple-parameter fits. The functions are declared in ! the header file `gsl_fit.h' ! ! * Menu: ! ! * Linear regression:: ! * Linear fitting without a constant term:: ! * Multi-parameter fitting:: ! * Fitting Examples:: ! * Fitting References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Linear regression, Next: Linear fitting without a constant term, Up: Least-Squares Fitting ! ! Linear regression ! ================= ! ! The functions described in this section can be used to perform ! least-squares fits to a straight line model, Y = c_0 + c_1 X. For ! weighted data the best-fit is found by minimizing the weighted sum of ! squared residuals, \chi^2, ! ! \chi^2 = \sum_i w_i (y_i - (c_0 + c_1 x_i))^2 ! ! for the parameters c_0, c_1. For unweighted data the sum is computed ! with w_i = 1. ! ! - Function: int gsl_fit_linear (const double * X, const size_t ! XSTRIDE, const double * Y, const size_t YSTRIDE, size_t N, ! double * C0, double * C1, double * COV00, double * COV01, ! double * COV11, double * SUMSQ) ! This function computes the best-fit linear regression coefficients ! (C0,C1) of the model Y = c_0 + c_1 X for the datasets (X, Y), two ! vectors of length N with strides XSTRIDE and YSTRIDE. The ! variance-covariance matrix for the parameters (C0, C1) is ! estimated from the scatter of the points around the best-fit line ! and returned via the parameters (COV00, COV01, COV11). The sum of ! squares of the residuals from the best-fit line is returned in ! SUMSQ. ! ! - Function: int gsl_fit_wlinear (const double * X, const size_t ! XSTRIDE, const double * W, const size_t WSTRIDE, const double ! * Y, const size_t YSTRIDE, size_t N, double * C0, double * ! C1, double * COV00, double * COV01, double * COV11, double * ! CHISQ) ! This function computes the best-fit linear regression coefficients ! (C0,C1) of the model Y = c_0 + c_1 X for the weighted datasets (X, ! Y), two vectors of length N with strides XSTRIDE and YSTRIDE. The ! vector W, of length N and stride WSTRIDE, specifies the weight of ! each datapoint. The weight is the reciprocal of the variance for ! each datapoint in Y. ! ! The covariance matrix for the parameters (C0, C1) is estimated ! from weighted data and returned via the parameters (COV00, COV01, ! COV11). The weighted sum of squares of the residuals from the ! best-fit line, \chi^2, is returned in CHISQ. ! ! - Function: int gsl_fit_linear_est (double X, double C0, double C1, ! double C00, double C01, double C11, double *Y, double *Y_ERR) ! This function uses the best-fit linear regression coefficients ! C0,C1 and their estimated covariance COV00,COV01,COV11 to compute ! the fitted function Y and its standard deviation Y_ERR for the ! model Y = c_0 + c_1 X at the point X. ! !  ! File: gsl-ref.info, Node: Linear fitting without a constant term, Next: Multi-parameter fitting, Prev: Linear regression, Up: Least-Squares Fitting ! ! Linear fitting without a constant term ! ====================================== ! ! The functions described in this section can be used to perform ! least-squares fits to a straight line model without a constant term, Y ! = c_1 X. For weighted data the best-fit is found by minimizing the ! weighted sum of squared residuals, \chi^2, ! ! \chi^2 = \sum_i w_i (y_i - c_1 x_i)^2 ! ! for the parameter c_1. For unweighted data the sum is computed with ! w_i = 1. ! ! - Function: int gsl_fit_mul (const double * X, const size_t XSTRIDE, ! const double * Y, const size_t YSTRIDE, size_t N, double * ! C1, double * COV11, double * SUMSQ) ! This function computes the best-fit linear regression coefficient ! C1 of the model Y = c_1 X for the datasets (X, Y), two vectors of ! length N with strides XSTRIDE and YSTRIDE. The variance of the ! parameter C1 is estimated from the scatter of the points around ! the best-fit line and returned via the parameter COV11. The sum ! of squares of the residuals from the best-fit line is returned in ! SUMSQ. ! ! - Function: int gsl_fit_wmul (const double * X, const size_t XSTRIDE, ! const double * W, const size_t WSTRIDE, const double * Y, ! const size_t YSTRIDE, size_t N, double * C1, double * COV11, ! double * SUMSQ) ! This function computes the best-fit linear regression coefficient ! C1 of the model Y = c_1 X for the weighted datasets (X, Y), two ! vectors of length N with strides XSTRIDE and YSTRIDE. The vector ! W, of length N and stride WSTRIDE, specifies the weight of each ! datapoint. The weight is the reciprocal of the variance for each ! datapoint in Y. ! ! The variance of the parameter C1 is estimated from the weighted ! data and returned via the parameters COV11. The weighted sum of ! squares of the residuals from the best-fit line, \chi^2, is ! returned in CHISQ. ! ! - Function: int gsl_fit_mul_est (double X, double C1, double C11, ! double *Y, double *Y_ERR) ! This function uses the best-fit linear regression coefficient C1 ! and its estimated covariance COV11 to compute the fitted function ! Y and its standard deviation Y_ERR for the model Y = c_1 X at the ! point X. ! !  ! File: gsl-ref.info, Node: Multi-parameter fitting, Next: Fitting Examples, Prev: Linear fitting without a constant term, Up: Least-Squares Fitting ! ! Multi-parameter fitting ! ======================= ! ! The functions described in this section perform least-squares fits to a ! general linear model, y = X c where y is a vector of n observations, X ! is an n by p matrix of predictor variables, and c are the p unknown ! best-fit parameters, which are to be estimated. ! ! The best-fit is found by minimizing the weighted sums of squared ! residuals, \chi^2, ! ! \chi^2 = (y - X c)^T W (y - X c) ! ! with respect to the parameters c. The weights are specified by the ! diagonal elements of the n by n matrix W. For unweighted data W is ! replaced by the identity matrix. ! ! This formulation can be used for fits to any number of functions ! and/or variables by preparing the n-by-p matrix X appropriately. For ! example, to fit to a p-th order polynomial in X, use the following ! matrix, ! ! X_{ij} = x_i^j ! ! where the index i runs over the observations and the index j runs from ! 0 to p-1. ! ! To fit to a set of p sinusoidal functions with fixed frequencies ! \omega_1, \omega_2, ..., \omega_p, use, ! ! X_{ij} = sin(\omega_j x_i) ! ! To fit to p independent variables x_1, x_2, ..., x_p, use, ! ! X_{ij} = x_j(i) ! ! where x_j(i) is the i-th value of the predictor variable x_j. ! ! The functions described in this section are declared in the header ! file `gsl_multifit.h'. ! ! The solution of the general linear least-squares system requires an ! additional working space for intermediate results, such as the singular ! value decomposition of the matrix X. ! ! - Function: gsl_multifit_linear_workspace * gsl_multifit_linear_alloc ! (size_t N, size_t P) ! This function allocates a workspace for fitting a model to N ! observations using P parameters. ! ! - Function: void gsl_multifit_linear_free ! (gsl_multifit_linear_workspace * WORK) ! This function frees the memory associated with the workspace W. ! ! - Function: int gsl_multifit_linear (const gsl_matrix * X, const ! gsl_vector * Y, gsl_vector * C, gsl_matrix * COV, double * ! CHISQ, gsl_multifit_linear_workspace * WORK) ! This function computes the best-fit parameters C of the model y = ! X c for the observations Y and the matrix of predictor variables ! X. The variance-covariance matrix of the model parameters COV is ! estimated from the scatter of the observations about the best-fit. ! The sum of squares of the residuals from the best-fit, \chi^2, is ! returned in CHISQ. ! ! The best-fit is found by singular value decomposition of the matrix ! X using the preallocated workspace provided in WORK. The modified ! Golub-Reinsch SVD algorithm is used, with column scaling to ! improve the accuracy of the singular values. Any components which ! have zero singular value (to machine precision) are discarded from ! the fit. ! ! - Function: int gsl_multifit_wlinear (const gsl_matrix * X, const ! gsl_vector * W, const gsl_vector * Y, gsl_vector * C, ! gsl_matrix * COV, double * CHISQ, ! gsl_multifit_linear_workspace * WORK) ! This function computes the best-fit parameters C of the model y = ! X c for the observations Y and the matrix of predictor variables ! X. The covariance matrix of the model parameters COV is estimated ! from the weighted data. The weighted sum of squares of the ! residuals from the best-fit, \chi^2, is returned in CHISQ. ! ! The best-fit is found by singular value decomposition of the matrix ! X using the preallocated workspace provided in WORK. Any ! components which have zero singular value (to machine precision) ! are discarded from the fit. ! !  ! File: gsl-ref.info, Node: Fitting Examples, Next: Fitting References and Further Reading, Prev: Multi-parameter fitting, Up: Least-Squares Fitting ! ! Examples ! ======== ! ! The following program computes a least squares straight-line fit to a ! simple (fictitious) dataset, and outputs the best-fit line and its ! associated one standard-deviation error bars. ! ! #include ! #include ! ! int ! main (void) ! { ! int i, n = 4; ! double x[4] = { 1970, 1980, 1990, 2000 }; ! double y[4] = { 12, 11, 14, 13 }; ! double w[4] = { 0.1, 0.2, 0.3, 0.4 }; ! ! double c0, c1, cov00, cov01, cov11, chisq; ! ! gsl_fit_wlinear (x, 1, w, 1, y, 1, n, ! &c0, &c1, &cov00, &cov01, &cov11, ! &chisq); ! ! printf ("# best fit: Y = %g + %g X\n", c0, c1); ! printf ("# covariance matrix:\n"); ! printf ("# [ %g, %g\n# %g, %g]\n", ! cov00, cov01, cov01, cov11); ! printf ("# chisq = %g\n", chisq); ! ! for (i = 0; i < n; i++) ! printf ("data: %g %g %g\n", ! x[i], y[i], 1/sqrt(w[i])); ! ! printf ("\n"); ! ! for (i = -30; i < 130; i++) ! { ! double xf = x[0] + (i/100.0) * (x[n-1] - x[0]); ! double yf, yf_err; ! ! gsl_fit_linear_est (xf, ! c0, c1, ! cov00, cov01, cov11, ! &yf, &yf_err); ! ! printf ("fit: %g %g\n", xf, yf); ! printf ("hi : %g %g\n", xf, yf + yf_err); ! printf ("lo : %g %g\n", xf, yf - yf_err); ! } ! return 0; ! } ! ! The following commands extract the data from the output of the program ! and display it using the GNU plotutils `graph' utility, ! ! $ ./demo > tmp ! $ more tmp ! # best fit: Y = -106.6 + 0.06 X ! # covariance matrix: ! # [ 39602, -19.9 ! # -19.9, 0.01] ! # chisq = 0.8 ! ! $ for n in data fit hi lo ; ! do ! grep "^$n" tmp | cut -d: -f2 > $n ; ! done ! $ graph -T X -X x -Y y -y 0 20 -m 0 -S 2 -Ie data ! -S 0 -I a -m 1 fit -m 2 hi -m 2 lo ! ! The next program performs a quadratic fit y = c_0 + c_1 x + c_2 x^2 ! to a weighted dataset using the generalised linear fitting function ! `gsl_multifit_wlinear'. The model matrix X for a quadratic fit is ! given by, ! ! X = [ 1 , x_0 , x_0^2 ; ! 1 , x_1 , x_1^2 ; ! 1 , x_2 , x_2^2 ; ! ... , ... , ... ] ! ! where the column of ones corresponds to the constant term c_0. The two ! remaining columns corresponds to the terms c_1 x and c_2 x^2. ! ! The program reads N lines of data in the format (X, Y, ERR) where ! ERR is the error (standard deviation) in the value Y. ! ! #include ! #include ! ! int ! main (int argc, char **argv) ! { ! int i, n; ! double xi, yi, ei, chisq; ! gsl_matrix *X, *cov; ! gsl_vector *y, *w, *c; ! ! if (argc != 2) ! { ! fprintf (stderr,"usage: fit n < data\n"); ! exit (-1); ! } ! ! n = atoi (argv[1]); ! ! X = gsl_matrix_alloc (n, 3); ! y = gsl_vector_alloc (n); ! w = gsl_vector_alloc (n); ! ! c = gsl_vector_alloc (3); ! cov = gsl_matrix_alloc (3, 3); ! ! for (i = 0; i < n; i++) ! { ! int count = fscanf (stdin, "%lg %lg %lg", ! &xi, &yi, &ei); ! ! if (count != 3) ! { ! fprintf (stderr, "error reading file\n"); ! exit (-1); ! } ! ! printf ("%g %g +/- %g\n", xi, yi, ei); ! ! gsl_matrix_set (X, i, 0, 1.0); ! gsl_matrix_set (X, i, 1, xi); ! gsl_matrix_set (X, i, 2, xi*xi); ! ! gsl_vector_set (y, i, yi); ! gsl_vector_set (w, i, 1.0/(ei*ei)); ! } ! ! { ! gsl_multifit_linear_workspace * work ! = gsl_multifit_linear_alloc (n, 3); ! gsl_multifit_wlinear (X, w, y, c, cov, ! &chisq, work); ! gsl_multifit_linear_free (work); ! } ! ! #define C(i) (gsl_vector_get(c,(i))) ! #define COV(i,j) (gsl_matrix_get(cov,(i),(j))) ! ! { ! printf ("# best fit: Y = %g + %g X + %g X^2\n", ! C(0), C(1), C(2)); ! ! printf ("# covariance matrix:\n"); ! printf ("[ %+.5e, %+.5e, %+.5e \n", ! COV(0,0), COV(0,1), COV(0,2)); ! printf (" %+.5e, %+.5e, %+.5e \n", ! COV(1,0), COV(1,1), COV(1,2)); ! printf (" %+.5e, %+.5e, %+.5e ]\n", ! COV(2,0), COV(2,1), COV(2,2)); ! printf ("# chisq = %g\n", chisq); ! } ! return 0; ! } ! ! A suitable set of data for fitting can be generated using the following ! program. It outputs a set of points with gaussian errors from the curve ! y = e^x in the region 0 < x < 2. ! ! #include ! #include ! #include ! ! int ! main (void) ! { ! double x; ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_rng_env_setup (); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! for (x = 0.1; x < 2; x+= 0.1) ! { ! double y0 = exp (x); ! double sigma = 0.1 * y0; ! double dy = gsl_ran_gaussian (r, sigma); ! ! printf ("%g %g %g\n", x, y0 + dy, sigma); ! } ! return 0; ! } ! ! The data can be prepared by running the resulting executable program, ! ! $ ./generate > exp.dat ! $ more exp.dat ! 0.1 0.97935 0.110517 ! 0.2 1.3359 0.12214 ! 0.3 1.52573 0.134986 ! 0.4 1.60318 0.149182 ! 0.5 1.81731 0.164872 ! 0.6 1.92475 0.182212 ! .... ! ! To fit the data use the previous program, with the number of data points ! given as the first argument. In this case there are 19 data points. ! ! $ ./fit 19 < exp.dat ! 0.1 0.97935 +/- 0.110517 ! 0.2 1.3359 +/- 0.12214 ! ... ! # best fit: Y = 1.02318 + 0.956201 X + 0.876796 X^2 ! # covariance matrix: ! [ +1.25612e-02, -3.64387e-02, +1.94389e-02 ! -3.64387e-02, +1.42339e-01, -8.48761e-02 ! +1.94389e-02, -8.48761e-02, +5.60243e-02 ] ! # chisq = 23.0987 ! ! The parameters of the quadratic fit match the coefficients of the ! expansion of e^x, taking into account the errors on the parameters and ! the O(x^3) difference between the exponential and quadratic functions ! for the larger values of x. The errors on the parameters are given by ! the square-root of the corresponding diagonal elements of the ! covariance matrix. The chi-squared per degree of freedom is 1.4, ! indicating a reasonable fit to the data. ! !  ! File: gsl-ref.info, Node: Fitting References and Further Reading, Prev: Fitting Examples, Up: Least-Squares Fitting ! ! References and Further Reading ! ============================== ! ! A summary of formulas and techniques for least squares fitting can be ! found in the "Statistics" chapter of the Annual Review of Particle ! Physics prepared by the Particle Data Group. ! ! `Review of Particle Properties' R.M. Barnett et al., Physical ! Review D54, 1 (1996) ! ! The Review of Particle Physics is available online at the website given ! above. ! ! The tests used to prepare these routines are based on the NIST ! Statistical Reference Datasets. The datasets and their documentation are ! available from NIST at the following website, ! ! . ! !  ! File: gsl-ref.info, Node: Nonlinear Least-Squares Fitting, Next: Physical Constants, Prev: Least-Squares Fitting, Up: Top ! ! Nonlinear Least-Squares Fitting ! ******************************* ! ! This chapter describes functions for multidimensional nonlinear ! least-squares fitting. The library provides low level components for a ! variety of iterative solvers and convergence tests. These can be ! combined by the user to achieve the desired solution, with full access ! to the intermediate steps of the iteration. Each class of methods uses ! the same framework, so that you can switch between solvers at runtime ! without needing to recompile your program. Each instance of a solver ! keeps track of its own state, allowing the solvers to be used in ! multi-threaded programs. ! ! The header file `gsl_multifit_nlin.h' contains prototypes for the ! multidimensional nonlinear fitting functions and related declarations. ! ! * Menu: ! ! * Overview of Nonlinear Least-Squares Fitting:: ! * Initializing the Nonlinear Least-Squares Solver:: ! * Providing the Function to be Minimized:: ! * Iteration of the Minimization Algorithm:: ! * Search Stopping Parameters for Minimization Algorithms:: ! * Minimization Algorithms using Derivatives:: ! * Minimization Algorithms without Derivatives:: ! * Computing the covariance matrix of best fit parameters:: ! * Example programs for Nonlinear Least-Squares Fitting:: ! * References and Further Reading for Nonlinear Least-Squares Fitting:: ! !  ! File: gsl-ref.info, Node: Overview of Nonlinear Least-Squares Fitting, Next: Initializing the Nonlinear Least-Squares Solver, Up: Nonlinear Least-Squares Fitting ! ! Overview ! ======== ! ! The problem of multidimensional nonlinear least-squares fitting requires ! the minimization of the squared residuals of n functions, f_i, in p ! parameters, x_i, ! ! \Phi(x) = (1/2) \sum_{i=1}^{n} f_i(x_1, ..., x_p)^2 ! = (1/2) || F(x) ||^2 ! ! All algorithms proceed from an initial guess using the linearization, ! ! \psi(p) = || F(x+p) || ~=~ || F(x) + J p || ! ! where x is the initial point, p is the proposed step and J is the ! Jacobian matrix J_{ij} = d f_i / d x_j. Additional strategies are used ! to enlarge the region of convergence. These include requiring a ! decrease in the norm ||F|| on each step or using a trust region to ! avoid steps which fall outside the linear regime. ! !  ! File: gsl-ref.info, Node: Initializing the Nonlinear Least-Squares Solver, Next: Providing the Function to be Minimized, Prev: Overview of Nonlinear Least-Squares Fitting, Up: Nonlinear Least-Squares Fitting ! ! Initializing the Solver ! ======================= ! ! - Function: gsl_multifit_fsolver * gsl_multifit_fsolver_alloc (const ! gsl_multifit_fsolver_type * T, size_t N, size_t P) ! This function returns a pointer to a newly allocated instance of a ! solver of type T for N observations and P parameters. ! ! If there is insufficient memory to create the solver then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: gsl_multifit_fdfsolver * gsl_multifit_fdfsolver_alloc ! (const gsl_multifit_fdfsolver_type * T, size_t N, size_t P) ! This function returns a pointer to a newly allocated instance of a ! derivative solver of type T for N observations and P parameters. ! For example, the following code creates an instance of a ! Levenberg-Marquardt solver for 100 data points and 3 parameters, ! ! const gsl_multifit_fdfsolver_type * T ! = gsl_multifit_fdfsolver_lmder; ! gsl_multifit_fdfsolver * s ! = gsl_multifit_fdfsolver_alloc (T, 100, 3); ! ! If there is insufficient memory to create the solver then the ! function returns a null pointer and the error handler is invoked ! with an error code of `GSL_ENOMEM'. ! ! - Function: int gsl_multifit_fsolver_set (gsl_multifit_fsolver * S, ! gsl_multifit_function * F, gsl_vector * X) ! This function initializes, or reinitializes, an existing solver S ! to use the function F and the initial guess X. ! ! - Function: int gsl_multifit_fdfsolver_set (gsl_multifit_fdfsolver * ! S, gsl_function_fdf * FDF, gsl_vector * X) ! This function initializes, or reinitializes, an existing solver S ! to use the function and derivative FDF and the initial guess X. ! ! - Function: void gsl_multifit_fsolver_free (gsl_multifit_fsolver * S) ! - Function: void gsl_multifit_fdfsolver_free (gsl_multifit_fdfsolver * ! S) ! These functions free all the memory associated with the solver S. ! ! - Function: const char * gsl_multifit_fsolver_name (const ! gsl_multifit_fdfsolver * S) ! - Function: const char * gsl_multifit_fdfsolver_name (const ! gsl_multifit_fdfsolver * S) ! These functions return a pointer to the name of the solver. For ! example, ! ! printf ("s is a '%s' solver\n", ! gsl_multifit_fdfsolver_name (s)); ! ! would print something like `s is a 'lmder' solver'. ! !  ! File: gsl-ref.info, Node: Providing the Function to be Minimized, Next: Iteration of the Minimization Algorithm, Prev: Initializing the Nonlinear Least-Squares Solver, Up: Nonlinear Least-Squares Fitting ! ! Providing the Function to be Minimized ! ====================================== ! ! You must provide n functions of p variables for the minimization ! algorithms to operate on. In order to allow for general parameters the ! functions are defined by the following data types: ! ! - Data Type: gsl_multifit_function ! This data type defines a general system of functions with ! parameters. ! ! `int (* f) (const gsl_vector * X, void * PARAMS, gsl_vector * F)' ! this function should store the vector result f(x,params) in F ! for argument X and parameters PARAMS, returning an ! appropriate error code if the function cannot be computed. ! ! `size_t n' ! the number of functions, i.e. the number of components of the ! vector F ! ! `size_t p' ! the number of independent variables, i.e. the number of ! components of the vectors X ! ! `void * params' ! a pointer to the parameters of the function ! ! - Data Type: gsl_multifit_function_fdf ! This data type defines a general system of functions with ! parameters and the corresponding Jacobian matrix of derivatives, ! ! `int (* f) (const gsl_vector * X, void * PARAMS, gsl_vector * F)' ! this function should store the vector result f(x,params) in F ! for argument X and parameters PARAMS, returning an ! appropriate error code if the function cannot be computed. ! ! `int (* df) (const gsl_vector * X, void * PARAMS, gsl_matrix * J)' ! this function should store the N-by-P matrix result J_ij = d ! f_i(x,params) / d x_j in J for argument X and parameters ! PARAMS, returning an appropriate error code if the function ! cannot be computed. ! ! `int (* fdf) (const gsl_vector * X, void * PARAMS, gsl_vector * F, gsl_matrix * J)' ! This function should set the values of the F and J as above, ! for arguments X and parameters PARAMS. This function provides ! an optimization of the separate functions for f(x) and J(x) - ! it is always faster to compute the function and its ! derivative at the same time. ! ! `size_t n' ! the number of functions, i.e. the number of components of the ! vector F ! ! `size_t p' ! the number of independent variables, i.e. the number of ! components of the vectors X ! ! `void * params' ! a pointer to the parameters of the function ! !  ! File: gsl-ref.info, Node: Iteration of the Minimization Algorithm, Next: Search Stopping Parameters for Minimization Algorithms, Prev: Providing the Function to be Minimized, Up: Nonlinear Least-Squares Fitting ! ! Iteration ! ========= ! ! The following functions drive the iteration of each algorithm. Each ! function performs one iteration to update the state of any solver of the ! corresponding type. The same functions work for all solvers so that ! different methods can be substituted at runtime without modifications to ! the code. ! ! - Function: int gsl_multifit_fsolver_iterate (gsl_multifit_fsolver * S) ! - Function: int gsl_multifit_fdfsolver_iterate (gsl_multifit_fdfsolver ! * S) ! These functions perform a single iteration of the solver S. If ! the iteration encounters an unexpected problem then an error code ! will be returned. The solver maintains a current estimate of the ! best-fit parameters at all times. This information can be accessed ! with the following auxiliary functions, ! ! - Function: gsl_vector * gsl_multifit_fsolver_position (const ! gsl_multifit_fsolver * S) ! - Function: gsl_vector * gsl_multifit_fdfsolver_position (const ! gsl_multifit_fdfsolver * S) ! These functions return the current position (i.e. best-fit ! parameters) of the solver S. ! !  ! File: gsl-ref.info, Node: Search Stopping Parameters for Minimization Algorithms, Next: Minimization Algorithms using Derivatives, Prev: Iteration of the Minimization Algorithm, Up: Nonlinear Least-Squares Fitting ! ! Search Stopping Parameters ! ========================== ! ! A minimization procedure should stop when one of the following ! conditions is true: ! ! * A minimum has been found to within the user-specified precision. ! ! * A user-specified maximum number of iterations has been reached. ! ! * An error has occurred. ! ! The handling of these conditions is under user control. The functions ! below allow the user to test the current estimate of the best-fit ! parameters in several standard ways. ! ! - Function: int gsl_multifit_test_delta (const gsl_vector * DX, const ! gsl_vector * X, double EPSABS, double EPSREL) ! This function tests for the convergence of the sequence by ! comparing the last step DX with the absolute error EPSABS and ! relative error EPSREL to the current position X. The test returns ! `GSL_SUCCESS' if the following condition is achieved, ! ! |dx_i| < epsabs + epsrel |x_i| ! ! for each component of X and returns `GSL_CONTINUE' otherwise. ! ! - Function: int gsl_multifit_test_gradient (const gsl_vector * G, ! double EPSABS) ! This function tests the residual gradient G against the absolute ! error bound EPSABS. Mathematically, the gradient should be ! exactly zero at the minimum. The test returns `GSL_SUCCESS' if the ! following condition is achieved, ! ! \sum_i |g_i| < epsabs ! ! and returns `GSL_CONTINUE' otherwise. This criterion is suitable ! for situations where the precise location of the minimum, x, is ! unimportant provided a value can be found where the gradient is ! small enough. ! ! - Function: int gsl_multifit_gradient (const gsl_matrix * J, const ! gsl_vector * F, gsl_vector * G) ! This function computes the gradient G of \Phi(x) = (1/2) ! ||F(x)||^2 from the Jacobian matrix J and the function values F, ! using the formula g = J^T f. ! !  ! File: gsl-ref.info, Node: Minimization Algorithms using Derivatives, Next: Minimization Algorithms without Derivatives, Prev: Search Stopping Parameters for Minimization Algorithms, Up: Nonlinear Least-Squares Fitting ! ! Minimization Algorithms using Derivatives ! ========================================= ! ! The minimization algorithms described in this section make use of both ! the function and its derivative. They require an initial guess for the ! location of the minimum. There is no absolute guarantee of convergence ! - the function must be suitable for this technique and the initial ! guess must be sufficiently close to the minimum for it to work. ! ! - Derivative Solver: gsl_multifit_fdfsolver_lmsder ! This is a robust and efficient version of the Levenberg-Marquardt ! algorithm as implemented in the scaled LMDER routine in MINPACK. ! Minpack was written by Jorge J. More', Burton S. Garbow and ! Kenneth E. Hillstrom. ! ! The algorithm uses a generalized trust region to keep each step ! under control. In order to be accepted a proposed new position x' ! must satisfy the condition |D (x' - x)| < \delta, where D is a ! diagonal scaling matrix and \delta is the size of the trust ! region. The components of D are computed internally, using the ! column norms of the Jacobian to estimate the sensitivity of the ! residual to each component of x. This improves the behavior of the ! algorithm for badly scaled functions. ! ! On each iteration the algorithm attempts to minimize the linear ! system |F + J p| subject to the constraint |D p| < \Delta. The ! solution to this constrained linear system is found using the ! Levenberg-Marquardt method. ! ! The proposed step is now tested by evaluating the function at the ! resulting point, x'. If the step reduces the norm of the function ! sufficiently, and follows the predicted behavior of the function ! within the trust region. then it is accepted and size of the trust ! region is increased. If the proposed step fails to improve the ! solution, or differs significantly from the expected behavior ! within the trust region, then the size of the trust region is ! decreased and another trial step is computed. ! ! The algorithm also monitors the progress of the solution and ! returns an error if the changes in the solution are smaller than ! the machine precision. The possible error codes are, ! ! `GSL_ETOLF' ! the decrease in the function falls below machine precision ! ! `GSL_ETOLX' ! the change in the position vector falls below machine ! precision ! ! `GSL_ETOLG' ! the norm of the gradient, relative to the norm of the ! function, falls below machine precision ! ! These error codes indicate that further iterations will be ! unlikely to change the solution from its current value. ! ! ! - Derivative Solver: gsl_multifit_fdfsolver_lmder ! This is an unscaled version of the LMDER algorithm. The elements ! of the diagonal scaling matrix D are set to 1. This algorithm may ! be useful in circumstances where the scaled version of LMDER ! converges too slowly, or the function is already scaled ! appropriately. ! !  ! File: gsl-ref.info, Node: Minimization Algorithms without Derivatives, Next: Computing the covariance matrix of best fit parameters, Prev: Minimization Algorithms using Derivatives, Up: Nonlinear Least-Squares Fitting ! ! Minimization Algorithms without Derivatives ! =========================================== ! ! There are no algorithms implemented in this section at the moment. ! !  ! File: gsl-ref.info, Node: Computing the covariance matrix of best fit parameters, Next: Example programs for Nonlinear Least-Squares Fitting, Prev: Minimization Algorithms without Derivatives, Up: Nonlinear Least-Squares Fitting ! ! Computing the covariance matrix of best fit parameters ! ====================================================== ! ! - Function: int gsl_multifit_covar (const gsl_matrix * J, double ! EPSREL, gsl_matrix * COVAR) ! This function uses the Jacobian matrix J to compute the covariance ! matrix of the best-fit parameters, COVAR. The parameter EPSREL is ! used to remove linear-dependent columns when J is rank deficient. ! ! The covariance matrix is given by, ! ! covar = (J^T J)^{-1} ! ! and is computed by QR decomposition of J with column-pivoting. Any ! columns of R which satisfy ! ! |R_{kk}| <= epsrel |R_{11}| ! ! are considered linearly-dependent and are excluded from the ! covariance matrix (the corresponding rows and columns of the ! covariance matrix are set to zero). ! !  ! File: gsl-ref.info, Node: Example programs for Nonlinear Least-Squares Fitting, Next: References and Further Reading for Nonlinear Least-Squares Fitting, Prev: Computing the covariance matrix of best fit parameters, Up: Nonlinear Least-Squares Fitting ! ! Examples ! ======== ! ! The following example program fits a weighted exponential model with ! background to experimental data, Y = A \exp(-\lambda t) + b. The first ! part of the program sets up the functions `expb_f' and `expb_df' to ! calculate the model and its Jacobian. The appropriate fitting function ! is given by, ! ! f_i = ((A \exp(-\lambda t_i) + b) - y_i)/\sigma_i ! ! where we have chosen t_i = i. The Jacobian matrix J is the derivative ! of these functions with respect to the three parameters (A, \lambda, ! b). It is given by, ! ! J_{ij} = d f_i / d x_j ! ! where x_0 = A, x_1 = \lambda and x_2 = b. ! ! #include ! #include ! #include ! #include ! #include ! #include ! #include ! ! struct data { ! size_t n; ! double * y; ! double * sigma; ! }; ! ! int ! expb_f (const gsl_vector * x, void *params, ! gsl_vector * f) ! { ! size_t n = ((struct data *)params)->n; ! double *y = ((struct data *)params)->y; ! double *sigma = ((struct data *) params)->sigma; ! ! double A = gsl_vector_get (x, 0); ! double lambda = gsl_vector_get (x, 1); ! double b = gsl_vector_get (x, 2); ! ! size_t i; ! ! for (i = 0; i < n; i++) ! { ! /* Model Yi = A * exp(-lambda * i) + b */ ! double t = i; ! double Yi = A * exp (-lambda * t) + b; ! gsl_vector_set (f, i, (Yi - y[i])/sigma[i]); ! } ! ! return GSL_SUCCESS; ! } ! ! int ! expb_df (const gsl_vector * x, void *params, ! gsl_matrix * J) ! { ! size_t n = ((struct data *)params)->n; ! double *sigma = ((struct data *) params)->sigma; ! ! double A = gsl_vector_get (x, 0); ! double lambda = gsl_vector_get (x, 1); ! ! size_t i; ! ! for (i = 0; i < n; i++) ! { ! /* Jacobian matrix J(i,j) = dfi / dxj, */ ! /* where fi = (Yi - yi)/sigma[i], */ ! /* Yi = A * exp(-lambda * i) + b */ ! /* and the xj are the parameters (A,lambda,b) */ ! double t = i; ! double s = sigma[i]; ! double e = exp(-lambda * t); ! gsl_matrix_set (J, i, 0, e/s); ! gsl_matrix_set (J, i, 1, -t * A * e/s); ! gsl_matrix_set (J, i, 2, 1/s); ! ! ! } ! return GSL_SUCCESS; ! } ! ! int ! expb_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * J) ! { ! expb_f (x, params, f); ! expb_df (x, params, J); ! ! return GSL_SUCCESS; ! } ! ! The main part of the program sets up a Levenberg-Marquardt solver and ! some simulated random data. The data uses the known parameters ! (1.0,5.0,0.1) combined with gaussian noise (standard deviation = 0.1) ! over a range of 40 timesteps. The initial guess for the parameters is ! chosen as (0.0, 1.0, 0.0). ! ! #define N 40 ! ! int ! main (void) ! { ! const gsl_multifit_fdfsolver_type *T; ! gsl_multifit_fdfsolver *s; ! ! int status; ! size_t i, iter = 0; ! ! const size_t n = N; ! const size_t p = 3; ! ! gsl_matrix *covar = gsl_matrix_alloc (p, p); ! ! double y[N], sigma[N]; ! ! struct data d = { n, y, sigma}; ! ! gsl_multifit_function_fdf f; ! ! double x_init[3] = { 1.0, 0.0, 0.0 }; ! ! gsl_vector_view x = gsl_vector_view_array (x_init, p); ! ! const gsl_rng_type * type; ! gsl_rng * r; ! ! gsl_rng_env_setup(); ! ! type = gsl_rng_default; ! r = gsl_rng_alloc (type); ! ! f.f = &expb_f; ! f.df = &expb_df; ! f.fdf = &expb_fdf; ! f.n = n; ! f.p = p; ! f.params = &d; ! ! /* This is the data to be fitted */ ! ! for (i = 0; i < n; i++) ! { ! double t = i; ! y[i] = 1.0 + 5 * exp (-0.1 * t) ! + gsl_ran_gaussian (r, 0.1); ! sigma[i] = 0.1; ! printf ("data: %d %g %g\n", i, y[i], sigma[i]); ! }; ! ! ! T = gsl_multifit_fdfsolver_lmsder; ! s = gsl_multifit_fdfsolver_alloc (T, n, p); ! gsl_multifit_fdfsolver_set (s, &f, &x.vector); ! ! print_state (iter, s); ! ! do ! { ! iter++; ! status = gsl_multifit_fdfsolver_iterate (s); ! ! printf ("status = %s\n", gsl_strerror (status)); ! ! print_state (iter, s); ! ! if (status) ! break; ! ! status = gsl_multifit_test_delta (s->dx, s->x, ! 1e-4, 1e-4); ! } ! while (status == GSL_CONTINUE && iter < 500); ! ! gsl_multifit_covar (s->J, 0.0, covar); ! ! gsl_matrix_fprintf (stdout, covar, "%g"); ! ! #define FIT(i) gsl_vector_get(s->x, i) ! #define ERR(i) sqrt(gsl_matrix_get(covar,i,i)) ! ! printf ("A = %.5f +/- %.5f\n", FIT(0), ERR(0)); ! printf ("lambda = %.5f +/- %.5f\n", FIT(1), ERR(1)); ! printf ("b = %.5f +/- %.5f\n", FIT(2), ERR(2)); ! ! { ! double chi = gsl_blas_dnrm2(s->f); ! printf("chisq/dof = %g\n", pow(chi, 2.0)/ (n - p)); ! } ! ! printf ("status = %s\n", gsl_strerror (status)); ! ! gsl_multifit_fdfsolver_free (s); ! return 0; ! } ! ! int ! print_state (size_t iter, gsl_multifit_fdfsolver * s) ! { ! printf ("iter: %3u x = % 15.8f % 15.8f % 15.8f " ! "|f(x)| = %g\n", ! iter, ! gsl_vector_get (s->x, 0), ! gsl_vector_get (s->x, 1), ! gsl_vector_get (s->x, 2), ! gsl_blas_dnrm2 (s->f)); ! } ! ! The iteration terminates when the change in x is smaller than 0.0001, as ! both an absolute and relative change. Here are the results of running ! the program, ! ! iter: 0 x = 1.00000000 0.00000000 0.00000000 |f(x)| = 118.574 ! iter: 1 x = 1.64919392 0.01780040 0.64919392 |f(x)| = 77.2068 ! iter: 2 x = 2.86269020 0.08032198 1.45913464 |f(x)| = 38.0579 ! iter: 3 x = 4.97908864 0.11510525 1.06649948 |f(x)| = 10.1548 ! iter: 4 x = 5.03295496 0.09912462 1.00939075 |f(x)| = 6.4982 ! iter: 5 x = 5.05811477 0.10055914 0.99819876 |f(x)| = 6.33121 ! iter: 6 x = 5.05827645 0.10051697 0.99756444 |f(x)| = 6.33119 ! iter: 7 x = 5.05828006 0.10051819 0.99757710 |f(x)| = 6.33119 ! ! A = 5.05828 +/- 0.05983 ! lambda = 0.10052 +/- 0.00309 ! b = 0.99758 +/- 0.03944 ! chisq/dof = 1.08335 ! status = success ! ! The approximate values of the parameters are found correctly, and the ! chi-squared value indicates a good fit (the chi-squared per degree of ! freedom is approximately 1). In this case the errors on the parameters ! can be estimated from the square roots of the diagonal elements of the ! covariance matrix. If the chi-squared value indicates a poor fit then ! error estimates obtained from the covariance matrix are not valid, since ! the Gaussian approximation would not apply. ! !  ! File: gsl-ref.info, Node: References and Further Reading for Nonlinear Least-Squares Fitting, Prev: Example programs for Nonlinear Least-Squares Fitting, Up: Nonlinear Least-Squares Fitting ! ! References and Further Reading ! ============================== ! ! The MINPACK algorithm is described in the following article, ! ! J.J. More', `The Levenberg-Marquardt Algorithm: Implementation and ! Theory', Lecture Notes in Mathematics, v630 (1978), ed G. Watson. ! ! The following paper is also relevant to the algorithms described in this ! section, ! ! J.J. More', B.S. Garbow, K.E. Hillstrom, "Testing Unconstrained ! Optimization Software", ACM Transactions on Mathematical Software, ! Vol 7, No 1 (1981), p 17-41 ! !  ! File: gsl-ref.info, Node: Physical Constants, Next: IEEE floating-point arithmetic, Prev: Nonlinear Least-Squares Fitting, Up: Top ! ! Physical Constants ! ****************** ! ! This chapter describes macros for the values of physical constants, such ! as the speed of light, c, and gravitational constant, G. The values ! are available in different unit systems, including the standard MKSA ! system (meters, kilograms, seconds, amperes) and the CGSM system ! (centimeters, grams, seconds, gauss), which is commonly used in ! Astronomy. ! ! The definitions of constants in the MKSA system are available in the ! file `gsl_const_mksa.h'. The constants in the CGSM system are defined ! in `gsl_const_cgsm.h'. Dimensionless constants, such as the fine ! structure constant, which are pure numbers are defined in ! `gsl_const_num.h'. ! ! * Menu: ! ! * Fundamental Constants:: ! * Astronomy and Astrophysics:: ! * Atomic and Nuclear Physics:: ! * Measurement of Time:: ! * Imperial Units :: ! * Nautical Units:: ! * Printers Units:: ! * Volume:: ! * Mass and Weight :: ! * Thermal Energy and Power:: ! * Pressure:: ! * Viscosity:: ! * Light and Illumination:: ! * Radioactivity:: ! * Force and Energy:: ! * Prefixes:: ! * Physical Constant Examples:: ! * Physical Constant References and Further Reading:: ! ! The full list of constants is described briefly below. Consult the ! header files themselves for the values of the constants used in the ! library. ! !  ! File: gsl-ref.info, Node: Fundamental Constants, Next: Astronomy and Astrophysics, Up: Physical Constants ! ! Fundamental Constants ! ===================== ! ! `GSL_CONST_MKSA_SPEED_OF_LIGHT' ! The speed of light in vacuum, c. ! ! `GSL_CONST_MKSA_VACUUM_PERMEABILITY' ! The permeability of free space, \mu_0 ! ! `GSL_CONST_MKSA_VACUUM_PERMITTIVITY' ! The permittivity of free space, \epsilon_0. ! ! `GSL_CONST_NUM_AVOGADRO' ! Avogadro's number, N_a. ! ! `GSL_CONST_MKSA_FARADAY' ! The molar charge of 1 Faraday. ! ! `GSL_CONST_MKSA_BOLTZMANN' ! The Boltzmann constant, k. ! ! `GSL_CONST_MKSA_MOLAR_GAS' ! The molar gas constant, R_0. ! ! `GSL_CONST_MKSA_STANDARD_GAS_VOLUME' ! The standard gas volume, V_0. ! ! `GSL_CONST_MKSA_GAUSS' ! The magnetic field of 1 Gauss. ! ! `GSL_CONST_MKSA_MICRON' ! The length of 1 micron. ! ! `GSL_CONST_MKSA_HECTARE' ! The area of 1 hectare. ! ! `GSL_CONST_MKSA_MILES_PER_HOUR' ! The speed of 1 mile per hour. ! ! `GSL_CONST_MKSA_KILOMETERS_PER_HOUR' ! The speed of 1 kilometer per hour. ! !  ! File: gsl-ref.info, Node: Astronomy and Astrophysics, Next: Atomic and Nuclear Physics, Prev: Fundamental Constants, Up: Physical Constants ! ! Astronomy and Astrophysics ! ========================== ! ! `GSL_CONST_MKSA_ASTRONOMICAL_UNIT' ! The length of 1 astronomical unit (mean earth-sun distance), au. ! ! `GSL_CONST_MKSA_GRAVITATIONAL_CONSTANT' ! The gravitational constant, G. ! ! `GSL_CONST_MKSA_LIGHT_YEAR' ! The distance of 1 light-year, ly. ! ! `GSL_CONST_MKSA_PARSEC' ! The distance of 1 parsec, pc. ! ! `GSL_CONST_MKSA_GRAV_ACCEL' ! The standard gravitational acceleration on Earth, g. ! ! `GSL_CONST_MKSA_SOLAR_MASS' ! The mass of the Sun. ! !  ! File: gsl-ref.info, Node: Atomic and Nuclear Physics, Next: Measurement of Time, Prev: Astronomy and Astrophysics, Up: Physical Constants ! ! Atomic and Nuclear Physics ! ========================== ! ! `GSL_CONST_MKSA_ELECTRON_CHARGE' ! The charge of the electron, e. ! ! `GSL_CONST_MKSA_ELECTRON_VOLT' ! The energy of 1 electron volt, eV. ! ! `GSL_CONST_MKSA_UNIFIED_ATOMIC_MASS' ! The unified atomic mass, amu. ! ! `GSL_CONST_MKSA_MASS_ELECTRON' ! The mass of the electron, m_e. ! ! `GSL_CONST_MKSA_MASS_MUON' ! The mass of the muon, m_\mu. ! ! `GSL_CONST_MKSA_MASS_PROTON' ! The mass of the proton, m_p. ! ! `GSL_CONST_MKSA_MASS_NEUTRON' ! The mass of the neutron, m_n. ! ! `GSL_CONST_NUM_FINE_STRUCTURE' ! The electromagnetic fine structure constant \alpha. ! ! `GSL_CONST_MKSA_RYDBERG' ! The Rydberg constant, Ry, in units of energy. This is related to ! the Rydberg inverse wavelength R by Ry = h c R. ! ! `GSL_CONST_MKSA_BOHR_RADIUS' ! The Bohr radius, a_0. ! ! `GSL_CONST_MKSA_ANGSTROM' ! The length of 1 angstrom. ! ! `GSL_CONST_MKSA_BARN' ! The area of 1 barn. ! ! `GSL_CONST_MKSA_BOHR_MAGNETON' ! The Bohr Magneton, \mu_B. ! ! `GSL_CONST_MKSA_NUCLEAR_MAGNETON' ! The Nuclear Magneton, \mu_N. ! ! `GSL_CONST_MKSA_ELECTRON_MAGNETIC_MOMENT' ! The absolute value of the magnetic moment of the electron, \mu_e. ! The physical magnetic moment of the electron is negative. ! ! `GSL_CONST_MKSA_PROTON_MAGNETIC_MOMENT' ! The magnetic moment of the proton, \mu_p. ! !  ! File: gsl-ref.info, Node: Measurement of Time, Next: Imperial Units, Prev: Atomic and Nuclear Physics, Up: Physical Constants ! ! Measurement of Time ! =================== ! ! `GSL_CONST_MKSA_MINUTE' ! The number of seconds in 1 minute. ! ! `GSL_CONST_MKSA_HOUR' ! The number of seconds in 1 hour. ! ! `GSL_CONST_MKSA_DAY' ! The number of seconds in 1 day. ! ! `GSL_CONST_MKSA_WEEK' ! The number of seconds in 1 week. ! !  ! File: gsl-ref.info, Node: Imperial Units, Next: Nautical Units, Prev: Measurement of Time, Up: Physical Constants ! ! Imperial Units ! ============== ! ! `GSL_CONST_MKSA_INCH' ! The length of 1 inch. ! ! `GSL_CONST_MKSA_FOOT' ! The length of 1 foot. ! ! `GSL_CONST_MKSA_YARD' ! The length of 1 yard. ! ! `GSL_CONST_MKSA_MILE' ! The length of 1 mile. ! ! `GSL_CONST_MKSA_MIL' ! The length of 1 mil (1/1000th of an inch). ! !  ! File: gsl-ref.info, Node: Nautical Units, Next: Printers Units, Prev: Imperial Units, Up: Physical Constants ! ! Nautical Units ! ============== ! ! `GSL_CONST_MKSA_NAUTICAL_MILE' ! The length of 1 nautical mile. ! ! `GSL_CONST_MKSA_FATHOM' ! The length of 1 fathom. ! ! `GSL_CONST_MKSA_KNOT' ! The speed of 1 knot. ! !  ! File: gsl-ref.info, Node: Printers Units, Next: Volume, Prev: Nautical Units, Up: Physical Constants ! ! Printers Units ! ============== ! ! `GSL_CONST_MKSA_POINT' ! The length of 1 printer's point (1/72 inch). ! ! `GSL_CONST_MKSA_TEXPOINT' ! The length of 1 TeX point (1/72.27 inch). ! !  ! File: gsl-ref.info, Node: Volume, Next: Mass and Weight, Prev: Printers Units, Up: Physical Constants ! ! Volume ! ====== ! ! `GSL_CONST_MKSA_ACRE' ! The area of 1 acre. ! ! `GSL_CONST_MKSA_LITER' ! The volume of 1 liter. ! ! `GSL_CONST_MKSA_US_GALLON' ! The volume of 1 US gallon. ! ! `GSL_CONST_MKSA_CANADIAN_GALLON' ! The volume of 1 Canadian gallon. ! ! `GSL_CONST_MKSA_UK_GALLON' ! The volume of 1 UK gallon. ! ! `GSL_CONST_MKSA_QUART' ! The volume of 1 quart. ! ! `GSL_CONST_MKSA_PINT' ! The volume of 1 pint. ! !  ! File: gsl-ref.info, Node: Mass and Weight, Next: Thermal Energy and Power, Prev: Volume, Up: Physical Constants ! ! Mass and Weight ! =============== ! ! `GSL_CONST_MKSA_POUND_MASS' ! The mass of 1 pound. ! ! `GSL_CONST_MKSA_OUNCE_MASS' ! The mass of 1 ounce. ! ! `GSL_CONST_MKSA_TON' ! The mass of 1 ton. ! ! `GSL_CONST_MKSA_METRIC_TON' ! The mass of 1 metric ton (1000 kg). ! ! `GSL_CONST_MKSA_UK_TON' ! The mass of 1 UK ton. ! ! `GSL_CONST_MKSA_TROY_OUNCE' ! The mass of 1 troy ounce. ! ! `GSL_CONST_MKSA_CARAT' ! The mass of 1 carat. ! ! `GSL_CONST_MKSA_GRAM_FORCE' ! The force of 1 gram weight. ! ! `GSL_CONST_MKSA_POUND_FORCE' ! The force of 1 pound weight. ! ! `GSL_CONST_MKSA_KILOPOUND_FORCE' ! The force of 1 kilopound weight. ! ! `GSL_CONST_MKSA_POUNDAL' ! The force of 1 poundal. ! !  ! File: gsl-ref.info, Node: Thermal Energy and Power, Next: Pressure, Prev: Mass and Weight, Up: Physical Constants ! ! Thermal Energy and Power ! ======================== ! ! `GSL_CONST_MKSA_CALORIE' ! The energy of 1 calorie. ! ! `GSL_CONST_MKSA_BTU' ! The energy of 1 British Thermal Unit, btu. ! ! `GSL_CONST_MKSA_THERM' ! The energy of 1 Therm. ! ! `GSL_CONST_MKSA_HORSEPOWER' ! The power of 1 horsepower. ! !  ! File: gsl-ref.info, Node: Pressure, Next: Viscosity, Prev: Thermal Energy and Power, Up: Physical Constants ! ! Pressure ! ======== ! ! `GSL_CONST_MKSA_BAR' ! The pressure of 1 bar. ! ! `GSL_CONST_MKSA_STD_ATMOSPHERE' ! The pressure of 1 standard atmosphere. ! ! `GSL_CONST_MKSA_TORR' ! The pressure of 1 torr. ! ! `GSL_CONST_MKSA_METER_OF_MERCURY' ! The pressure of 1 meter of mercury. ! ! `GSL_CONST_MKSA_INCH_OF_MERCURY' ! The pressure of 1 inch of mercury. ! ! `GSL_CONST_MKSA_INCH_OF_WATER' ! The pressure of 1 inch of water. ! ! `GSL_CONST_MKSA_PSI' ! The pressure of 1 pound per square inch. ! !  ! File: gsl-ref.info, Node: Viscosity, Next: Light and Illumination, Prev: Pressure, Up: Physical Constants ! ! Viscosity ! ========= ! ! `GSL_CONST_MKSA_POISE' ! The dynamic viscosity of 1 poise. ! ! `GSL_CONST_MKSA_STOKES' ! The kinematic viscosity of 1 stokes. ! !  ! File: gsl-ref.info, Node: Light and Illumination, Next: Radioactivity, Prev: Viscosity, Up: Physical Constants ! ! Light and Illumination ! ====================== ! ! `GSL_CONST_MKSA_STILB' ! The luminance of 1 stilb. ! ! `GSL_CONST_MKSA_LUMEN' ! The luminous flux of 1 lumen. ! ! `GSL_CONST_MKSA_LUX' ! The illuminance of 1 lux. ! ! `GSL_CONST_MKSA_PHOT' ! The illuminance of 1 phot. ! ! `GSL_CONST_MKSA_FOOTCANDLE' ! The illuminance of 1 footcandle. ! ! `GSL_CONST_MKSA_LAMBERT' ! The luminance of 1 lambert. ! ! `GSL_CONST_MKSA_FOOTLAMBERT' ! The luminance of 1 footlambert. ! !  ! File: gsl-ref.info, Node: Radioactivity, Next: Force and Energy, Prev: Light and Illumination, Up: Physical Constants ! ! Radioactivity ! ============= ! ! `GSL_CONST_MKSA_CURIE' ! The activity of 1 curie. ! ! `GSL_CONST_MKSA_ROENTGEN' ! The exposure of 1 roentgen. ! ! `GSL_CONST_MKSA_RAD' ! The absorbed dose of 1 rad. ! !  ! File: gsl-ref.info, Node: Force and Energy, Next: Prefixes, Prev: Radioactivity, Up: Physical Constants ! ! Force and Energy ! ================ ! ! `GSL_CONST_MKSA_NEWTON' ! The SI unit of force, 1 Newton. ! ! `GSL_CONST_MKSA_DYNE' ! The force of 1 Dyne = 10^-5 Newton. ! ! `GSL_CONST_MKSA_JOULE' ! The SI unit of energy, 1 Joule. ! ! `GSL_CONST_MKSA_ERG' ! The energy 1 erg = 10^-7 Joule. ! !  ! File: gsl-ref.info, Node: Prefixes, Next: Physical Constant Examples, Prev: Force and Energy, Up: Physical Constants ! ! Prefixes ! ======== ! ! These constants are dimensionless scaling factors. ! ! `GSL_CONST_NUM_YOTTA' ! 10^24 ! ! `GSL_CONST_NUM_ZETTA' ! 10^21 ! ! `GSL_CONST_NUM_EXA' ! 10^18 ! ! `GSL_CONST_NUM_PETA' ! 10^15 ! ! `GSL_CONST_NUM_TERA' ! 10^12 ! ! `GSL_CONST_NUM_GIGA' ! 10^9 ! ! `GSL_CONST_NUM_MEGA' ! 10^6 ! ! `GSL_CONST_NUM_KILO' ! 10^3 ! ! `GSL_CONST_NUM_MILLI' ! 10^-3 ! ! `GSL_CONST_NUM_MICRO' ! 10^-6 ! ! `GSL_CONST_NUM_NANO' ! 10^-9 ! ! `GSL_CONST_NUM_PICO' ! 10^-12 ! ! `GSL_CONST_NUM_FEMTO' ! 10^-15 ! ! `GSL_CONST_NUM_ATTO' ! 10^-18 ! ! `GSL_CONST_NUM_ZEPTO' ! 10^-21 ! ! `GSL_CONST_NUM_YOCTO' ! 10^-24 ! !  ! File: gsl-ref.info, Node: Physical Constant Examples, Next: Physical Constant References and Further Reading, Prev: Prefixes, Up: Physical Constants ! ! Examples ! ======== ! ! The following program demonstrates the use of the physical constants in ! a calculation. In this case, the goal is to calculate the range of ! light-travel times from Earth to Mars. ! ! The required data is the average distance of each planet from the ! Sun in astronomical units (the eccentricities of the orbits will be ! neglected for the purposes of this calculation). The average radius of ! the orbit of Mars is 1.52 astronomical units, and for the orbit of ! Earth it is 1 astronomical unit (by definition). These values are ! combined with the MKSA values of the constants for the speed of light ! and the length of an astronomical unit to produce a result for the ! shortest and longest light-travel times in seconds. The figures are ! converted into minutes before being displayed. ! ! #include ! #include ! ! int ! main (void) ! { ! double c = GSL_CONST_MKSA_SPEED_OF_LIGHT; ! double au = GSL_CONST_MKSA_ASTRONOMICAL_UNIT; ! double minutes = GSL_CONST_MKSA_MINUTE; ! ! /* distance stored in meters */ ! double r_earth = 1.00 * au; ! double r_mars = 1.52 * au; ! ! double t_min, t_max; ! ! t_min = (r_mars - r_earth) / c; ! t_max = (r_mars + r_earth) / c; ! ! printf ("light travel time from Earth to Mars:\n"); ! printf ("minimum = %.1f minutes\n", t_min / minutes); ! printf ("maximum = %.1f minutes\n", t_max / minutes); ! ! return 0; ! } ! ! Here is the output from the program, ! ! light travel time from Earth to Mars: ! minimum = 4.3 minutes ! maximum = 21.0 minutes ! !  ! File: gsl-ref.info, Node: Physical Constant References and Further Reading, Prev: Physical Constant Examples, Up: Physical Constants ! ! References and Further Reading ! ============================== ! ! Further information on the values of physical constants is available ! from the NIST website, ! ! ! !  ! File: gsl-ref.info, Node: IEEE floating-point arithmetic, Next: Debugging Numerical Programs, Prev: Physical Constants, Up: Top ! ! IEEE floating-point arithmetic ! ****************************** ! ! This chapter describes functions for examining the representation of ! floating point numbers and controlling the floating point environment of ! your program. The functions described in this chapter are declared in ! the header file `gsl_ieee_utils.h'. ! ! * Menu: ! ! * Representation of floating point numbers:: ! * Setting up your IEEE environment:: ! * IEEE References and Further Reading:: ! !  ! File: gsl-ref.info, Node: Representation of floating point numbers, Next: Setting up your IEEE environment, Up: IEEE floating-point arithmetic ! ! Representation of floating point numbers ! ======================================== ! ! The IEEE Standard for Binary Floating-Point Arithmetic defines binary ! formats for single and double precision numbers. Each number is ! composed of three parts: a "sign bit" (s), an "exponent" (E) and a ! "fraction" (f). The numerical value of the combination (s,E,f) is ! given by the following formula, ! ! (-1)^s (1.fffff...) 2^E ! ! The sign bit is either zero or one. The exponent ranges from a minimum ! value E_min to a maximum value E_max depending on the precision. The ! exponent is converted to an unsigned number e, known as the "biased ! exponent", for storage by adding a "bias" parameter, e = E + bias. The ! sequence fffff... represents the digits of the binary fraction f. The ! binary digits are stored in "normalized form", by adjusting the ! exponent to give a leading digit of 1. Since the leading digit is ! always 1 for normalized numbers it is assumed implicitly and does not ! have to be stored. Numbers smaller than 2^(E_min) are be stored in ! "denormalized form" with a leading zero, ! ! (-1)^s (0.fffff...) 2^(E_min) ! ! This allows gradual underflow down to 2^(E_min - p) for p bits of ! precision. A zero is encoded with the special exponent of 2^(E_min - ! 1) and infinities with the exponent of 2^(E_max + 1). ! ! The format for single precision numbers uses 32 bits divided in the ! following way, ! ! seeeeeeeefffffffffffffffffffffff ! ! s = sign bit, 1 bit ! e = exponent, 8 bits (E_min=-126, E_max=127, bias=127) ! f = fraction, 23 bits ! ! The format for double precision numbers uses 64 bits divided in the ! following way, ! ! seeeeeeeeeeeffffffffffffffffffffffffffffffffffffffffffffffffffff ! ! s = sign bit, 1 bit ! e = exponent, 11 bits (E_min=-1022, E_max=1023, bias=1023) ! f = fraction, 52 bits ! ! It is often useful to be able to investigate the behavior of a ! calculation at the bit-level and the library provides functions for ! printing the IEEE representations in a human-readable form. ! ! - Function: void gsl_ieee_fprintf_float (FILE * STREAM, const float * ! X) ! - Function: void gsl_ieee_fprintf_double (FILE * STREAM, const double ! * X) ! These functions output a formatted version of the IEEE ! floating-point number pointed to by X to the stream STREAM. A ! pointer is used to pass the number indirectly, to avoid any ! undesired promotion from `float' to `double'. The output takes ! one of the following forms, ! ! `NaN' ! the Not-a-Number symbol ! ! `Inf, -Inf' ! positive or negative infinity ! ! `1.fffff...*2^E, -1.fffff...*2^E' ! a normalized floating point number ! ! `0.fffff...*2^E, -0.fffff...*2^E' ! a denormalized floating point number ! ! `0, -0' ! positive or negative zero ! ! ! The output can be used directly in GNU Emacs Calc mode by ! preceding it with `2#' to indicate binary. ! ! - Function: void gsl_ieee_printf_float (const float * X) ! - Function: void gsl_ieee_printf_double (const double * X) ! These functions output a formatted version of the IEEE ! floating-point number pointed to by X to the stream `stdout'. ! ! The following program demonstrates the use of the functions by printing ! the single and double precision representations of the fraction 1/3. ! For comparison the representation of the value promoted from single to ! double precision is also printed. ! ! #include ! #include ! ! int ! main (void) ! { ! float f = 1.0/3.0; ! double d = 1.0/3.0; ! ! double fd = f; /* promote from float to double */ ! ! printf (" f="); gsl_ieee_printf_float(&f); ! printf ("\n"); ! ! printf ("fd="); gsl_ieee_printf_double(&fd); ! printf ("\n"); ! ! printf (" d="); gsl_ieee_printf_double(&d); ! printf ("\n"); ! ! return 0; ! } ! ! The binary representation of 1/3 is 0.01010101... . The output below ! shows that the IEEE format normalizes this fraction to give a leading ! digit of 1, ! ! f= 1.01010101010101010101011*2^-2 ! fd= 1.0101010101010101010101100000000000000000000000000000*2^-2 ! d= 1.0101010101010101010101010101010101010101010101010101*2^-2 ! ! The output also shows that a single-precision number is promoted to ! double-precision by adding zeros in the binary representation. ! !  ! File: gsl-ref.info, Node: Setting up your IEEE environment, Next: IEEE References and Further Reading, Prev: Representation of floating point numbers, Up: IEEE floating-point arithmetic ! ! Setting up your IEEE environment ! ================================ ! ! The IEEE standard defines several "modes" for controlling the behavior ! of floating point operations. These modes specify the important ! properties of computer arithmetic: the direction used for rounding (e.g. ! whether numbers should be rounded up, down or to the nearest number), ! the rounding precision and how the program should handle arithmetic ! exceptions, such as division by zero. ! ! Many of these features can now be controlled via standard functions ! such as `fpsetround', which should be used whenever they are available. ! Unfortunately in the past there has been no universal API for ! controlling their behavior - each system has had its own low-level way ! of accessing them. To help you write portable programs GSL allows you ! to specify modes in a platform-independent way using the environment ! variable `GSL_IEEE_MODE'. The library then takes care of all the ! necessary machine-specific initializations for you when you call the ! function `gsl_ieee_env_setup'. ! ! - Function: void gsl_ieee_env_setup () ! This function reads the environment variable `GSL_IEEE_MODE' and ! attempts to set up the corresponding specified IEEE modes. The ! environment variable should be a list of keywords, separated by ! commas, like this, ! ! `GSL_IEEE_MODE' = "KEYWORD,KEYWORD,..." ! ! where KEYWORD is one of the following mode-names, ! ! `single-precision' ! ! `double-precision' ! ! `extended-precision' ! ! `round-to-nearest' ! ! `round-down' ! ! `round-up' ! ! `round-to-zero' ! ! `mask-all' ! ! `mask-invalid' ! ! `mask-denormalized' ! ! `mask-division-by-zero' ! ! `mask-overflow' ! ! `mask-underflow' ! ! `trap-inexact' ! ! `trap-common' ! ! If `GSL_IEEE_MODE' is empty or undefined then the function returns ! immediately and no attempt is made to change the system's IEEE ! mode. When the modes from `GSL_IEEE_MODE' are turned on the ! function prints a short message showing the new settings to remind ! you that the results of the program will be affected. ! ! If the requested modes are not supported by the platform being ! used then the function calls the error handler and returns an ! error code of `GSL_EUNSUP'. ! ! The following combination of modes is convenient for many purposes, ! ! GSL_IEEE_MODE="double-precision,"\ ! "mask-underflow,"\ ! "mask-denormalized" ! ! This choice ignores any errors relating to small numbers (either ! denormalized, or underflowing to zero) but traps overflows, ! division by zero and invalid operations. ! ! To demonstrate the effects of different rounding modes consider the ! following program which computes e, the base of natural logarithms, by ! summing a rapidly-decreasing series, ! ! e = 1 + 1/2! + 1/3! + 1/4! + ... ! = 2.71828182846... ! ! #include ! #include ! #include ! ! int ! main (void) ! { ! double x = 1, oldsum = 0, sum = 0; ! int i = 0; ! ! gsl_ieee_env_setup (); /* read GSL_IEEE_MODE */ ! ! do ! { ! i++; ! ! oldsum = sum; ! sum += x; ! x = x / i; ! ! printf ("i=%2d sum=%.18f error=%g\n", ! i, sum, sum - M_E); ! ! if (i > 30) ! break; ! } ! while (sum != oldsum); ! ! return 0; ! } ! ! Here are the results of running the program in `round-to-nearest' mode. ! This is the IEEE default so it isn't really necessary to specify it ! here, ! ! GSL_IEEE_MODE="round-to-nearest" ./a.out ! i= 1 sum=1.000000000000000000 error=-1.71828 ! i= 2 sum=2.000000000000000000 error=-0.718282 ! .... ! i=18 sum=2.718281828459045535 error=4.44089e-16 ! i=19 sum=2.718281828459045535 error=4.44089e-16 ! ! After nineteen terms the sum converges to within 4 \times 10^-16 of the ! correct value. If we now change the rounding mode to `round-down' the ! final result is less accurate, ! ! GSL_IEEE_MODE="round-down" ./a.out ! i= 1 sum=1.000000000000000000 error=-1.71828 ! .... ! i=19 sum=2.718281828459041094 error=-3.9968e-15 ! ! The result is about 4 \times 10^-15 below the correct value, an order ! of magnitude worse than the result obtained in the `round-to-nearest' ! mode. ! ! If we change to rounding mode to `round-up' then the series no ! longer converges (the reason is that when we add each term to the sum ! the final result is always rounded up. This is guaranteed to increase ! the sum by at least one tick on each iteration). To avoid this problem ! we would need to use a safer converge criterion, such as `while ! (fabs(sum - oldsum) > epsilon)', with a suitably chosen value of ! epsilon. ! ! Finally we can see the effect of computing the sum using ! single-precision rounding, in the default `round-to-nearest' mode. In ! this case the program thinks it is still using double precision numbers ! but the CPU rounds the result of each floating point operation to ! single-precision accuracy. This simulates the effect of writing the ! program using single-precision `float' variables instead of `double' ! variables. The iteration stops after about half the number of ! iterations and the final result is much less accurate, ! ! GSL_IEEE_MODE="single-precision" ./a.out ! .... ! i=12 sum=2.718281984329223633 error=1.5587e-07 ! ! with an error of O(10^-7), which corresponds to single precision ! accuracy (about 1 part in 10^7). Continuing the iterations further ! does not decrease the error because all the subsequent results are ! rounded to the same value. ! !  ! File: gsl-ref.info, Node: IEEE References and Further Reading, Prev: Setting up your IEEE environment, Up: IEEE floating-point arithmetic ! ! References and Further Reading ! ============================== ! ! The reference for the IEEE standard is, ! ! ANSI/IEEE Std 754-1985, IEEE Standard for Binary Floating-Point ! Arithmetic ! ! A more pedagogical introduction to the standard can be found in the ! paper "What Every Computer Scientist Should Know About Floating-Point ! Arithmetic". ! ! David Goldberg: What Every Computer Scientist Should Know About ! Floating-Point Arithmetic. `ACM Computing Surveys', Vol. 23, No. 1 ! (March 1991), pages 5-48 ! ! Corrigendum: `ACM Computing Surveys', Vol. 23, No. 3 (September ! 1991), page 413. ! ! See also the sections by B. A. Wichmann and Charles B. Dunham in ! Surveyor's Forum: "What Every Computer Scientist Should Know About ! Floating-Point Arithmetic". `ACM Computing Surveys', Vol. 24, No. ! 3 (September 1992), page 319 ! !  ! File: gsl-ref.info, Node: Debugging Numerical Programs, Next: Contributors to GSL, Prev: IEEE floating-point arithmetic, Up: Top ! ! Debugging Numerical Programs ! **************************** ! ! This chapter describes some tips and tricks for debugging numerical ! programs which use GSL. ! ! * Menu: ! * Using gdb:: ! * Examining floating point registers:: ! * Handling floating point exceptions:: ! * GCC warning options for numerical programs:: ! * Debugging References:: diff -x.info* -rc2P gsl-1.3/doc/gsl-ref.info-4 gsl-1.4/doc/gsl-ref.info-4 *** gsl-1.3/doc/gsl-ref.info-4 Wed Dec 18 22:41:19 2002 --- gsl-1.4/doc/gsl-ref.info-4 Thu Aug 14 12:36:46 2003 *************** *** 1,3 **** ! This is gsl-ref.info, produced by makeinfo version 4.2 from gsl-ref.texi. --- 1,3 ---- ! This is gsl-ref.info, produced by makeinfo version 4.6 from gsl-ref.texi. *************** *** 8,1195 ****  ! File: gsl-ref.info, Node: Gamma Function, Next: Gegenbauer Functions, Prev: Fermi-Dirac Function, Up: Special Functions ! Gamma Function ! ============== ! The Gamma function is defined by the following integral, ! \Gamma(x) = \int_0^t dt t^{x-1} \exp(-t) ! Further information on the Gamma function can be found in Abramowitz & ! Stegun, Chapter 6. The functions described in this section are ! declared in the header file `gsl_sf_gamma.h'. ! ! - Function: double gsl_sf_gamma (double X) ! - Function: int gsl_sf_gamma_e (double X, gsl_sf_result * RESULT) ! These routines compute the Gamma function \Gamma(x), subject to x ! not being a negative integer. The function is computed using the ! real Lanczos method. The maximum value of x such that \Gamma(x) is ! not considered an overflow is given by the macro ! `GSL_SF_GAMMA_XMAX' and is 171.0. ! ! - Function: double gsl_sf_lngamma (double X) ! - Function: int gsl_sf_lngamma_e (double X, gsl_sf_result * RESULT) ! These routines compute the logarithm of the Gamma function, ! \log(\Gamma(x)), subject to x not a being negative integer. For ! x<0 the real part of \log(\Gamma(x)) is returned, which is ! equivalent to \log(|\Gamma(x)|). The function is computed using ! the real Lanczos method. ! ! - Function: int gsl_sf_lngamma_sgn_e (double X, gsl_sf_result * ! RESULT_LG, double * SGN) ! This routine computes the sign of the gamma function and the ! logarithm its magnitude, subject to x not being a negative ! integer. The function is computed using the real Lanczos method. ! The value of the gamma function can be reconstructed using the ! relation \Gamma(x) = sgn * \exp(resultlg). ! ! - Function: double gsl_sf_gammastar (double X) ! - Function: int gsl_sf_gammastar_e (double X, gsl_sf_result * RESULT) ! These routines compute the regulated Gamma Function \Gamma^*(x) ! for x > 0. The regulated gamma function is given by, ! ! \Gamma^*(x) = \Gamma(x)/(\sqrt{2\pi} x^{(x-1/2)} \exp(-x)) ! = (1 + (1/12x) + ...) for x \to \infty ! and is a useful suggestion of Temme. ! ! - Function: double gsl_sf_gammainv (double X) ! - Function: int gsl_sf_gammainv_e (double X, gsl_sf_result * RESULT) ! These routines compute the reciprocal of the gamma function, ! 1/\Gamma(x) using the real Lanczos method. ! ! - Function: int gsl_sf_lngamma_complex_e (double ZR, double ZI, ! gsl_sf_result * LNR, gsl_sf_result * ARG) ! This routine computes \log(\Gamma(z)) for complex z=z_r+i z_i and ! z not a negative integer, using the complex Lanczos method. The ! returned parameters are lnr = \log|\Gamma(z)| and arg = ! \arg(\Gamma(z)) in (-\pi,\pi]. Note that the phase part (ARG) is ! not well-determined when |z| is very large, due to inevitable ! roundoff in restricting to (-\pi,\pi]. This will result in a ! `GSL_ELOSS' error when it occurs. The absolute value part (LNR), ! however, never suffers from loss of precision. ! ! - Function: double gsl_sf_taylorcoeff (int N, double X) ! - Function: int gsl_sf_taylorcoeff_e (int N, double X, gsl_sf_result * ! RESULT) ! These routines compute the Taylor coefficient x^n / n! for x >= 0, ! n >= 0. ! ! - Function: double gsl_sf_fact (unsigned int N) ! - Function: int gsl_sf_fact_e (unsigned int N, gsl_sf_result * RESULT) ! These routines compute the factorial n!. The factorial is related ! to the Gamma function by n! = \Gamma(n+1). ! ! - Function: double gsl_sf_doublefact (unsigned int N) ! - Function: int gsl_sf_doublefact_e (unsigned int N, gsl_sf_result * ! RESULT) ! These routines compute the double factorial n!! = n(n-2)(n-4) ! \dots. ! ! - Function: double gsl_sf_lnfact (unsigned int N) ! - Function: int gsl_sf_lnfact_e (unsigned int N, gsl_sf_result * ! RESULT) ! These routines compute the logarithm of the factorial of N, ! \log(n!). The algorithm is faster than computing \ln(\Gamma(n+1)) ! via `gsl_sf_lngamma' for n < 170, but defers for larger N. ! ! - Function: double gsl_sf_lndoublefact (unsigned int N) ! - Function: int gsl_sf_lndoublefact_e (unsigned int N, gsl_sf_result * ! RESULT) ! These routines compute the logarithm of the double factorial of N, ! \log(n!!). ! ! - Function: double gsl_sf_choose (unsigned int N, unsigned int M) ! - Function: int gsl_sf_choose_e (unsigned int N, unsigned int M, ! gsl_sf_result * RESULT) ! These routines compute the combinatorial factor `n choose m' = ! n!/(m!(n-m)!) ! ! - Function: double gsl_sf_lnchoose (unsigned int N, unsigned int M) ! - Function: int gsl_sf_lnchoose_e (unsigned int N, unsigned int M, ! gsl_sf_result * RESULT) ! These routines compute the logarithm of `n choose m'. This is ! equivalent to the sum \log(n!) - \log(m!) - \log((n-m)!). ! ! - Function: double gsl_sf_poch (double A, double X) ! - Function: int gsl_sf_poch_e (double A, double X, gsl_sf_result * ! RESULT) ! These routines compute the Pochhammer symbol (a)_x := \Gamma(a + ! x)/\Gamma(x), subject to a and a+x not being negative integers. ! The Pochhammer symbol is also known as the Apell symbol. ! ! - Function: double gsl_sf_lnpoch (double A, double X) ! - Function: int gsl_sf_lnpoch_e (double A, double X, gsl_sf_result * ! RESULT) ! These routines compute the logarithm of the Pochhammer symbol, ! \log((a)_x) = \log(\Gamma(a + x)/\Gamma(a)) for a > 0, a+x > 0. ! ! - Function: int gsl_sf_lnpoch_sgn_e (double A, double X, gsl_sf_result ! * RESULT, double * SGN) ! These routines compute the sign of the Pochhammer symbol and the ! logarithm of its magnitude. The computed parameters are result = ! \log(|(a)_x|) and sgn = sgn((a)_x) where (a)_x := \Gamma(a + ! x)/\Gamma(a), subject to a, a+x not being negative integers. ! ! - Function: double gsl_sf_pochrel (double A, double X) ! - Function: int gsl_sf_pochrel_e (double A, double X, gsl_sf_result * ! RESULT) ! These routines compute the relative Pochhammer symbol ((a,x) - ! 1)/x where (a,x) = (a)_x := \Gamma(a + x)/\Gamma(a). ! ! - Function: double gsl_sf_gamma_inc_Q (double A, double X) ! - Function: int gsl_sf_gamma_inc_Q_e (double A, double X, ! gsl_sf_result * RESULT) ! These routines compute the normalized incomplete Gamma Function ! Q(a,x) = 1/\Gamma(a) \int_x\infty dt t^{a-1} \exp(-t) for a > 0, x ! >= 0. ! ! - Function: double gsl_sf_gamma_inc_P (double A, double X) ! - Function: int gsl_sf_gamma_inc_P_e (double A, double X, ! gsl_sf_result * RESULT) ! These routines compute the complementary normalized incomplete ! Gamma Function P(a,x) = 1/\Gamma(a) \int_0^x dt t^{a-1} \exp(-t) ! for a > 0, x >= 0. ! ! Note that Abramowitz & Stegun call P(a,x) the incomplete gamma ! function (section 6.5). ! ! - Function: double gsl_sf_beta (double A, double B) ! - Function: int gsl_sf_beta_e (double A, double B, gsl_sf_result * ! RESULT) ! These routines compute the Beta Function, B(a,b) = ! \Gamma(a)\Gamma(b)/\Gamma(a+b) for a > 0, b > 0. ! ! - Function: double gsl_sf_lnbeta (double A, double B) ! - Function: int gsl_sf_lnbeta_e (double A, double B, gsl_sf_result * ! RESULT) ! These routines compute the logarithm of the Beta Function, ! \log(B(a,b)) for a > 0, b > 0. ! ! - Function: double gsl_sf_beta_inc (double A, double B, double X) ! - Function: int gsl_sf_beta_inc_e (double A, double B, double X, ! gsl_sf_result * RESULT) ! These routines compute the normalize incomplete Beta function ! B_x(a,b)/B(a,b) for a > 0, b > 0, and 0 <= x <= 1. !  ! File: gsl-ref.info, Node: Gegenbauer Functions, Next: Hypergeometric Functions, Prev: Gamma Function, Up: Special Functions ! Gegenbauer Functions ! ==================== ! The Gegenbauer polynomials are defined in Abramowitz & Stegun, ! Chapter 22, where they are known as Ultraspherical polynomials. The ! functions described in this section are declared in the header file ! `gsl_sf_gegenbauer.h'. ! ! - Function: double gsl_sf_gegenpoly_1 (double LAMBDA, double X) ! - Function: double gsl_sf_gegenpoly_2 (double LAMBDA, double X) ! - Function: double gsl_sf_gegenpoly_3 (double LAMBDA, double X) ! - Function: int gsl_sf_gegenpoly_1_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! - Function: int gsl_sf_gegenpoly_2_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! - Function: int gsl_sf_gegenpoly_3_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! These functions evaluate the Gegenbauer polynomials ! C^{(\lambda)}_n(x) using explicit representations for n =1, 2, 3. ! ! - Function: double gsl_sf_gegenpoly_n (int N, double LAMBDA, double X) ! - Function: int gsl_sf_gegenpoly_n_e (int N, double LAMBDA, double X, ! gsl_sf_result * RESULT) ! These functions evaluate the Gegenbauer polynomial ! C^{(\lambda)}_n(x) for a specific value of N, LAMBDA, X subject to ! \lambda > -1/2, n >= 0. ! ! - Function: int gsl_sf_gegenpoly_array (int NMAX, double LAMBDA, ! double X, double RESULT_ARRAY[]) ! This function computes an array of Gegenbauer polynomials ! C^{(\lambda)}_n(x) for n = 0, 1, 2, \dots, nmax, subject to ! \lambda > -1/2, nmax >= 0. !  ! File: gsl-ref.info, Node: Hypergeometric Functions, Next: Laguerre Functions, Prev: Gegenbauer Functions, Up: Special Functions ! Hypergeometric Functions ! ======================== ! Hypergeometric functions are described in Abramowitz & Stegun, ! Chapters 13 and 15. These functions are declared in the header file ! `gsl_sf_hyperg.h'. ! ! - Function: double gsl_sf_hyperg_0F1 (double C, double X) ! - Function: int gsl_sf_hyperg_0F1_e (double C, double X, gsl_sf_result ! * RESULT) ! These routines compute the hypergeometric function 0F1(c,x). ! ! - Function: double gsl_sf_hyperg_1F1_int (int M, int N, double X) ! - Function: int gsl_sf_hyperg_1F1_int_e (int M, int N, double X, ! gsl_sf_result * RESULT) ! These routines compute the confluent hypergeometric function ! 1F1(m,n,x) = M(m,n,x) for integer parameters M, N. ! ! - Function: double gsl_sf_hyperg_1F1 (double A, double B, double X) ! - Function: int gsl_sf_hyperg_1F1_e (double A, double B, double X, ! gsl_sf_result * RESULT) ! These routines compute the confluent hypergeometric function ! 1F1(a,b,x) = M(a,b,x) for general parameters A, B. ! ! - Function: double gsl_sf_hyperg_U_int (int M, int N, double X) ! - Function: int gsl_sf_hyperg_U_int_e (int M, int N, double X, ! gsl_sf_result * RESULT) ! These routines compute the confluent hypergeometric function ! U(m,n,x) for integer parameters M, N. ! ! - Function: int gsl_sf_hyperg_U_int_e10_e (int M, int N, double X, ! gsl_sf_result_e10 * RESULT) ! This routine computes the confluent hypergeometric function ! U(m,n,x) for integer parameters M, N using the `gsl_sf_result_e10' ! type to return a result with extended range. ! ! - Function: double gsl_sf_hyperg_U (double A, double B, double X) ! - Function: int gsl_sf_hyperg_U_e (double A, double B, double X) ! These routines compute the confluent hypergeometric function ! U(a,b,x). ! ! - Function: int gsl_sf_hyperg_U_e10_e (double A, double B, double X, ! gsl_sf_result_e10 * RESULT) ! This routine computes the confluent hypergeometric function ! U(a,b,x) using the `gsl_sf_result_e10' type to return a result ! with extended range. ! ! - Function: double gsl_sf_hyperg_2F1 (double A, double B, double C, ! double X) ! - Function: int gsl_sf_hyperg_2F1_e (double A, double B, double C, ! double X, gsl_sf_result * RESULT) ! These routines compute the Gauss hypergeometric function ! 2F1(a,b,c,x) for |x| < 1. ! ! If the arguments (a,b,c,x) are too close to a singularity then the ! function can return the error code `GSL_EMAXITER' when the series ! approximation converges too slowly. This occurs in the region of ! x=1, c - a - b = m for integer m. ! ! - Function: double gsl_sf_hyperg_2F1_conj (double AR, double AI, ! double C, double X) ! - Function: int gsl_sf_hyperg_2F1_conj_e (double AR, double AI, double ! C, double X, gsl_sf_result * RESULT) ! These routines compute the Gauss hypergeometric function 2F1(a_R + ! i a_I, a_R - i a_I, c, x) with complex parameters for |x| < 1. ! exceptions: ! ! - Function: double gsl_sf_hyperg_2F1_renorm (double A, double B, ! double C, double X) ! - Function: int gsl_sf_hyperg_2F1_renorm_e (double A, double B, double ! C, double X, gsl_sf_result * RESULT) ! These routines compute the renormalized Gauss hypergeometric ! function 2F1(a,b,c,x) / \Gamma(c) for |x| < 1. ! ! - Function: double gsl_sf_hyperg_2F1_conj_renorm (double AR, double ! AI, double C, double X) ! - Function: int gsl_sf_hyperg_2F1_conj_renorm_e (double AR, double AI, ! double C, double X, gsl_sf_result * RESULT) ! These routines compute the renormalized Gauss hypergeometric ! function 2F1(a_R + i a_I, a_R - i a_I, c, x) / \Gamma(c) for |x| < ! 1. ! ! - Function: double gsl_sf_hyperg_2F0 (double A, double B, double X) ! - Function: int gsl_sf_hyperg_2F0_e (double A, double B, double X, ! gsl_sf_result * RESULT) ! These routines compute the hypergeometric function 2F0(a,b,x). ! The series representation is a divergent hypergeometric series. ! However, for x < 0 we have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)  ! File: gsl-ref.info, Node: Laguerre Functions, Next: Lambert W Functions, Prev: Hypergeometric Functions, Up: Special Functions ! Laguerre Functions ! ================== ! The Laguerre polynomials are defined in terms of confluent ! hypergeometric functions as L^a_n(x) = ((a+1)_n / n!) 1F1(-n,a+1,x). ! These functions are declared in the header file `gsl_sf_laguerre.h'. ! ! - Function: double gsl_sf_laguerre_1 (double A, double X) ! - Function: double gsl_sf_laguerre_2 (double A, double X) ! - Function: double gsl_sf_laguerre_3 (double A, double X) ! - Function: int gsl_sf_laguerre_1_e (double A, double X, gsl_sf_result ! * RESULT) ! - Function: int gsl_sf_laguerre_2_e (double A, double X, gsl_sf_result ! * RESULT) ! - Function: int gsl_sf_laguerre_3_e (double A, double X, gsl_sf_result ! * RESULT) ! These routines evaluate the generalized Laguerre polynomials ! L^a_1(x), L^a_2(x), L^a_3(x) using explicit representations. ! ! - Function: double gsl_sf_laguerre_n (const int N, const double A, ! const double X) ! - Function: int gsl_sf_laguerre_n_e (int N, double A, double X, ! gsl_sf_result * RESULT) ! Thse routines evaluate the generalized Laguerre polynomials ! L^a_n(x) for a > -1, n >= 0.  ! File: gsl-ref.info, Node: Lambert W Functions, Next: Legendre Functions and Spherical Harmonics, Prev: Laguerre Functions, Up: Special Functions ! Lambert W Functions ! =================== ! Lambert's W functions, W(x), are defined to be solutions of the ! equation W(x) \exp(W(x)) = x. This function has multiple branches for x ! < 0; however, it has only two real-valued branches. We define W_0(x) to ! be the principal branch, where W > -1 for x < 0, and W_{-1}(x) to be ! the other real branch, where W < -1 for x < 0. The Lambert functions ! are declared in the header file `gsl_sf_lambert.h'. ! ! - Function: double gsl_sf_lambert_W0 (double X) ! - Function: int gsl_sf_lambert_W0_e (double X, gsl_sf_result * RESULT) ! These compute the principal branch of the Lambert W function, ! W_0(x). ! ! - Function: double gsl_sf_lambert_Wm1 (double X) ! - Function: int gsl_sf_lambert_Wm1_e (double X, gsl_sf_result * RESULT) ! These compute the secondary real-valued branch of the Lambert W ! function, W_{-1}(x).  ! File: gsl-ref.info, Node: Legendre Functions and Spherical Harmonics, Next: Logarithm and Related Functions, Prev: Lambert W Functions, Up: Special Functions ! Legendre Functions and Spherical Harmonics ========================================== ! The Legendre Functions and Legendre Polynomials are described in ! Abramowitz & Stegun, Chapter 8. These functions are declared in the ! header file `gsl_sf_legendre.h'. ! * Menu: ! * Legendre Polynomials:: ! * Associated Legendre Polynomials and Spherical Harmonics:: ! * Conical Functions:: ! * Radial Functions for Hyperbolic Space::  ! File: gsl-ref.info, Node: Legendre Polynomials, Next: Associated Legendre Polynomials and Spherical Harmonics, Up: Legendre Functions and Spherical Harmonics ! Legendre Polynomials ! -------------------- ! - Function: double gsl_sf_legendre_P1 (double X) ! - Function: double gsl_sf_legendre_P2 (double X) ! - Function: double gsl_sf_legendre_P3 (double X) ! - Function: int gsl_sf_legendre_P1_e (double X, gsl_sf_result * RESULT) ! - Function: int gsl_sf_legendre_P2_e (double X, gsl_sf_result * RESULT) ! - Function: int gsl_sf_legendre_P3_e (double X, gsl_sf_result * RESULT) ! These functions evaluate the Legendre polynomials P_l(x) using ! explicit representations for l=1, 2, 3. ! ! - Function: double gsl_sf_legendre_Pl (int L, double X) ! - Function: int gsl_sf_legendre_Pl_e (int L, double X, gsl_sf_result * ! RESULT) ! These functions evaluate the Legendre polynomial P_l(x) for a ! specific value of L, X subject to l >= 0, |x| <= 1 ! ! - Function: int gsl_sf_legendre_Pl_array (int LMAX, double X, double ! RESULT_ARRAY[]) ! This function computes an array of Legendre polynomials P_l(x) for ! l = 0, \dots, lmax, |x| <= 1 ! ! - Function: double gsl_sf_legendre_Q0 (double X) ! - Function: int gsl_sf_legendre_Q0_e (double X, gsl_sf_result * RESULT) ! These routines compute the Legendre function Q_0(x) for x > -1, x ! != 1. ! ! - Function: double gsl_sf_legendre_Q1 (double X) ! - Function: int gsl_sf_legendre_Q1_e (double X, gsl_sf_result * RESULT) ! These routines compute the Legendre function Q_1(x) for x > -1, x ! != 1. ! ! - Function: double gsl_sf_legendre_Ql (int L, double X) ! - Function: int gsl_sf_legendre_Ql_e (int L, double X, gsl_sf_result * ! RESULT) ! These routines compute the Legendre function Q_l(x) for x > -1, x ! != 1 and l >= 0. !  ! File: gsl-ref.info, Node: Associated Legendre Polynomials and Spherical Harmonics, Next: Conical Functions, Prev: Legendre Polynomials, Up: Legendre Functions and Spherical Harmonics ! Associated Legendre Polynomials and Spherical Harmonics ! ------------------------------------------------------- ! The following functions compute the associated Legendre Polynomials ! P_l^m(x). Note that this function grows combinatorially with l and can ! overflow for l larger than about 150. There is no trouble for small m, ! but overflow occurs when m and l are both large. Rather than allow ! overflows, these functions refuse to calculate P_l^m(x) and return ! `GSL_EOVRFLW' when they can sense that l and m are too big. ! ! If you want to calculate a spherical harmonic, then _do not_ use ! these functions. Instead use `gsl_sf_legendre_sphPlm()' below, which ! uses a similar recursion, but with the normalized functions. ! ! - Function: double gsl_sf_legendre_Plm (int L, int M, double X) ! - Function: int gsl_sf_legendre_Plm_e (int L, int M, double X, ! gsl_sf_result * RESULT) ! These routines compute the associated Legendre polynomial P_l^m(x) ! for m >= 0, l >= m, |x| <= 1. ! ! - Function: int gsl_sf_legendre_Plm_array (int LMAX, int M, double X, ! double RESULT_ARRAY[]) ! This function computes an array of Legendre polynomials P_l^m(x) ! for m >= 0, l = |m|, ..., lmax, |x| <= 1. ! ! - Function: double gsl_sf_legendre_sphPlm (int L, int M, double X) ! - Function: int gsl_sf_legendre_sphPlm_e (int L, int M, double X, ! gsl_sf_result * RESULT) ! These routines compute the normalized associated Legendre ! polynomial $\sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(x)$ ! suitable for use in spherical harmonics. The parameters must ! satisfy m >= 0, l >= m, |x| <= 1. Theses routines avoid the ! overflows that occur for the standard normalization of P_l^m(x). ! ! - Function: int gsl_sf_legendre_sphPlm_array (int LMAX, int M, double ! X, double RESULT_ARRAY[]) ! This function computes an array of normalized associated Legendre ! functions $\sqrt{(2l+1)/(4\pi)} \sqrt{(l-m)!/(l+m)!} P_l^m(x)$ for ! m >= 0, l = |m|, ..., lmax, |x| <= 1.0 ! ! - Function: int gsl_sf_legendre_array_size (const int LMAX, const int ! M) ! This functions returns the size of RESULT_ARRAY[] needed for the ! array versions of P_l^m(x), LMAX - M + 1. !  ! File: gsl-ref.info, Node: Conical Functions, Next: Radial Functions for Hyperbolic Space, Prev: Associated Legendre Polynomials and Spherical Harmonics, Up: Legendre Functions and Spherical Harmonics ! Conical Functions ! ----------------- ! The Conical Functions P^\mu_{-(1/2)+i\lambda}(x), ! Q^\mu_{-(1/2)+i\lambda} are described in Abramowitz & Stegun, Section ! 8.12. ! ! - Function: double gsl_sf_conicalP_half (double LAMBDA, double X) ! - Function: int gsl_sf_conicalP_half_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! These routines compute the irregular Spherical Conical Function ! P^{1/2}_{-1/2 + i \lambda}(x) for x > -1. ! ! - Function: double gsl_sf_conicalP_mhalf (double LAMBDA, double X) ! - Function: int gsl_sf_conicalP_mhalf_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! These routines compute the regular Spherical Conical Function ! P^{-1/2}_{-1/2 + i \lambda}(x) for x > -1. ! ! - Function: double gsl_sf_conicalP_0 (double LAMBDA, double X) ! - Function: int gsl_sf_conicalP_0_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! These routines compute the conical function P^0_{-1/2 + i ! \lambda}(x) for x > -1. ! ! - Function: double gsl_sf_conicalP_1 (double LAMBDA, double X) ! - Function: int gsl_sf_conicalP_1_e (double LAMBDA, double X, ! gsl_sf_result * RESULT) ! These routines compute the conical function P^1_{-1/2 + i ! \lambda}(x) for x > -1. ! ! - Function: double gsl_sf_conicalP_sph_reg (int L, double LAMBDA, ! double X) ! - Function: int gsl_sf_conicalP_sph_reg_e (int L, double LAMBDA, ! double X, gsl_sf_result * RESULT) ! These routines compute the Regular Spherical Conical Function ! P^{-1/2-l}_{-1/2 + i \lambda}(x) for x > -1, l >= -1. ! ! - Function: double gsl_sf_conicalP_cyl_reg (int M, double LAMBDA, ! double X) ! - Function: int gsl_sf_conicalP_cyl_reg_e (int M, double LAMBDA, ! double X, gsl_sf_result * RESULT) ! These routines compute the Regular Cylindrical Conical Function ! P^{-m}_{-1/2 + i \lambda}(x) for x > -1, m >= -1. !  ! File: gsl-ref.info, Node: Radial Functions for Hyperbolic Space, Prev: Conical Functions, Up: Legendre Functions and Spherical Harmonics ! Radial Functions for Hyperbolic Space ! ------------------------------------- ! The following spherical functions are specializations of Legendre ! functions which give the regular eigenfunctions of the Laplacian on a ! 3-dimensional hyperbolic space H3d. Of particular interest is the flat ! limit, \lambda \to \infty, \eta \to 0, \lambda\eta fixed. ! ! - Function: double gsl_sf_legendre_H3d_0 (double LAMBDA, double ETA) ! - Function: int gsl_sf_legendre_H3d_0_e (double LAMBDA, double ETA, ! gsl_sf_result * RESULT) ! These routines compute the zeroth radial eigenfunction of the ! Laplacian on the 3-dimensional hyperbolic space, ! L^{H3d}_0(\lambda,\eta) := \sin(\lambda\eta)/(\lambda\sinh(\eta)) ! for \eta >= 0. In the flat limit this takes the form ! L^{H3d}_0(\lambda,\eta) = j_0(\lambda\eta) ! ! - Function: double gsl_sf_legendre_H3d_1 (double LAMBDA, double ETA) ! - Function: int gsl_sf_legendre_H3d_1_e (double LAMBDA, double ETA, ! gsl_sf_result * RESULT) ! These routines compute the first radial eigenfunction of the ! Laplacian on the 3-dimensional hyperbolic space, ! L^{H3d}_1(\lambda,\eta) := 1/\sqrt{\lambda^2 + 1} \sin(\lambda ! \eta)/(\lambda \sinh(\eta)) (\coth(\eta) - \lambda ! \cot(\lambda\eta)) for \eta >= 0. In the flat limit this takes ! the form L^{H3d}_1(\lambda,\eta) = j_1(\lambda\eta). ! ! - Function: double gsl_sf_legendre_H3d (int L, double LAMBDA, double ! ETA) ! - Function: int gsl_sf_legendre_H3d_e (int L, double LAMBDA, double ! ETA, gsl_sf_result * RESULT) ! These routines compute the L'th radial eigenfunction of the ! Laplacian on the 3-dimensional hyperbolic space \eta >= 0, l >= 0. ! In the flat limit this takes the form L^{H3d}_l(\lambda,\eta) = ! j_l(\lambda\eta). ! ! - Function: int gsl_sf_legendre_H3d_array (int LMAX, double LAMBDA, ! double ETA, double RESULT_ARRAY[]) ! This function computes an array of radial eigenfunctions ! L^{H3d}_l(\lambda, \eta) for 0 <= l <= lmax. !  ! File: gsl-ref.info, Node: Logarithm and Related Functions, Next: Power Function, Prev: Legendre Functions and Spherical Harmonics, Up: Special Functions ! Logarithm and Related Functions ! =============================== ! Information on the properties of the Logarithm function can be found ! in Abramowitz & Stegun, Chapter 4. The functions described in this ! section are declared in the header file `gsl_sf_log.h'. ! ! - Function: double gsl_sf_log (double X) ! - Function: int gsl_sf_log_e (double X, gsl_sf_result * RESULT) ! These routines compute the logarithm of X, \log(x), for x > 0. ! ! - Function: double gsl_sf_log_abs (double X) ! - Function: int gsl_sf_log_abs_e (double X, gsl_sf_result * RESULT) ! These routines compute the logarithm of the magnitude of X, ! \log(|x|), for x \ne 0. ! ! - Function: int gsl_sf_complex_log_e (double ZR, double ZI, ! gsl_sf_result * LNR, gsl_sf_result * THETA) ! This routine computes the complex logarithm of z = z_r + i z_i. ! The results are returned as LNR, THETA such that \exp(lnr + i ! \theta) = z_r + i z_i, where \theta lies in the range [-\pi,\pi]. ! ! - Function: double gsl_sf_log_1plusx (double X) ! - Function: int gsl_sf_log_1plusx_e (double X, gsl_sf_result * RESULT) ! These routines compute \log(1 + x) for x > -1 using an algorithm ! that is accurate for small x. ! ! - Function: double gsl_sf_log_1plusx_mx (double X) ! - Function: int gsl_sf_log_1plusx_mx_e (double X, gsl_sf_result * ! RESULT) ! These routines compute \log(1 + x) - x for x > -1 using an ! algorithm that is accurate for small x. !  ! File: gsl-ref.info, Node: Power Function, Next: Psi (Digamma) Function, Prev: Logarithm and Related Functions, Up: Special Functions ! Power Function ! ============== - The following functions are equivalent to the function `gsl_pow_int' - (*note Small integer powers::) with an error estimate. These functions - are declared in the header file `gsl_sf_pow_int.h'. - - - Function: double gsl_sf_pow_int (double X, int N) - - Function: int gsl_sf_pow_int_e (double X, int N, gsl_sf_result * - RESULT) - These routines compute the power x^n for integer N. The power is - computed using the minimum number of multiplications. For example, - x^8 is computed as ((x^2)^2)^2, requiring only 3 multiplications. - For reasons of efficiency, these functions do not check for - overflow or underflow conditions. - - #include - /* compute 3.0**12 */ - double y = gsl_sf_pow_int(3.0, 12);  ! File: gsl-ref.info, Node: Psi (Digamma) Function, Next: Synchrotron Functions, Prev: Power Function, Up: Special Functions ! Psi (Digamma) Function ! ====================== ! The polygamma functions of order m defined by \psi^{(m)}(x) = ! (d/dx)^m \psi(x) = (d/dx)^{m+1} \log(\Gamma(x)), where \psi(x) = ! \Gamma'(x)/\Gamma(x) is known as the digamma function. These functions ! are declared in the header file `gsl_sf_psi.h'. ! * Menu: ! * Digamma Function:: ! * Trigamma Function:: ! * Polygamma Function:: !  ! File: gsl-ref.info, Node: Digamma Function, Next: Trigamma Function, Up: Psi (Digamma) Function ! Digamma Function ! ---------------- ! - Function: double gsl_sf_psi_int (int N) ! - Function: int gsl_sf_psi_int_e (int N, gsl_sf_result * RESULT) ! These routines compute the digamma function \psi(n) for positive ! integer N. The digamma function is also called the Psi function. ! ! - Function: double gsl_sf_psi (double X) ! - Function: int gsl_sf_psi_e (double X, gsl_sf_result * RESULT) ! These routines compute the digamma function \psi(x) for general x, ! x \ne 0. ! ! - Function: double gsl_sf_psi_1piy (double Y) ! - Function: int gsl_sf_psi_1piy_e (double Y, gsl_sf_result * RESULT) ! These routines compute the real part of the digamma function on ! the line 1+i y, Re[\psi(1 + i y)].  ! File: gsl-ref.info, Node: Trigamma Function, Next: Polygamma Function, Prev: Digamma Function, Up: Psi (Digamma) Function ! Trigamma Function ! ----------------- ! - Function: double gsl_sf_psi_1_int (int N) ! - Function: int gsl_sf_psi_1_int_e (int N, gsl_sf_result * RESULT) ! These routines compute the Trigamma function \psi'(n) for positive ! integer n.  ! File: gsl-ref.info, Node: Polygamma Function, Prev: Trigamma Function, Up: Psi (Digamma) Function ! Polygamma Function ! ------------------ ! - Function: double gsl_sf_psi_n (int M, double X) ! - Function: int gsl_sf_psi_n_e (int M, double X, gsl_sf_result * ! RESULT) ! These routines compute the polygamma function \psi^{(m)}(x) for m ! >= 0, x > 0. !  ! File: gsl-ref.info, Node: Synchrotron Functions, Next: Transport Functions, Prev: Psi (Digamma) Function, Up: Special Functions ! Synchrotron Functions ! ===================== ! The functions described in this section are declared in the header ! file `gsl_sf_synchrotron.h'. ! - Function: double gsl_sf_synchrotron_1 (double X) ! - Function: int gsl_sf_synchrotron_1_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the first synchrotron function x ! \int_x^\infty dt K_{5/3}(t) for x >= 0. ! ! - Function: double gsl_sf_synchrotron_2 (double X) ! - Function: int gsl_sf_synchrotron_2_e (double X, gsl_sf_result * ! RESULT) ! These routines compute the second synchrotron function x ! K_{2/3}(x) for x >= 0. !  ! File: gsl-ref.info, Node: Transport Functions, Next: Trigonometric Functions, Prev: Synchrotron Functions, Up: Special Functions ! Transport Functions ! =================== ! The transport functions J(n,x) are defined by the integral ! representations J(n,x) := \int_0^x dt t^n e^t /(e^t - 1)^2. They are ! declared in the header file `gsl_sf_transport.h'. ! ! - Function: double gsl_sf_transport_2 (double X) ! - Function: int gsl_sf_transport_2_e (double X, gsl_sf_result * RESULT) ! These routines compute the transport function J(2,x). ! ! - Function: double gsl_sf_transport_3 (double X) ! - Function: int gsl_sf_transport_3_e (double X, gsl_sf_result * RESULT) ! These routines compute the transport function J(3,x). ! ! - Function: double gsl_sf_transport_4 (double X) ! - Function: int gsl_sf_transport_4_e (double X, gsl_sf_result * RESULT) ! These routines compute the transport function J(4,x). ! ! - Function: double gsl_sf_transport_5 (double X) ! - Function: int gsl_sf_transport_5_e (double X, gsl_sf_result * RESULT) ! These routines compute the transport function J(5,x). !  ! File: gsl-ref.info, Node: Trigonometric Functions, Next: Zeta Functions, Prev: Transport Functions, Up: Special Functions ! Trigonometric Functions ! ======================= ! The library includes its own trigonometric functions in order to ! provide consistency across platforms and reliable error estimates. ! These functions are declared in the header file `gsl_sf_trig.h'. ! * Menu: ! * Circular Trigonometric Functions:: ! * Trigonometric Functions for Complex Arguments:: ! * Hyperbolic Trigonometric Functions:: ! * Conversion Functions:: ! * Restriction Functions:: ! * Trigonometric Functions With Error Estimates:: !  ! File: gsl-ref.info, Node: Circular Trigonometric Functions, Next: Trigonometric Functions for Complex Arguments, Up: Trigonometric Functions ! Circular Trigonometric Functions ! -------------------------------- ! - Function: double gsl_sf_sin (double X) ! - Function: int gsl_sf_sin_e (double X, gsl_sf_result * RESULT) ! These routines compute the sine function \sin(x). ! ! - Function: double gsl_sf_cos (double X) ! - Function: int gsl_sf_cos_e (double X, gsl_sf_result * RESULT) ! These routines compute the cosine function \cos(x). ! ! - Function: double gsl_sf_hypot (double X, double Y) ! - Function: int gsl_sf_hypot_e (double X, double Y, gsl_sf_result * ! RESULT) ! These routines compute the hypotenuse function \sqrt{x^2 + y^2} ! avoiding overflow and underflow. ! ! - Function: double gsl_sf_sinc (double X) ! - Function: int gsl_sf_sinc_e (double X, gsl_sf_result * RESULT) ! These routines compute \sinc(x) = \sin(\pi x) / (\pi x) for any ! value of X. !  ! File: gsl-ref.info, Node: Trigonometric Functions for Complex Arguments, Next: Hyperbolic Trigonometric Functions, Prev: Circular Trigonometric Functions, Up: Trigonometric Functions ! Trigonometric Functions for Complex Arguments ! --------------------------------------------- ! - Function: int gsl_sf_complex_sin_e (double ZR, double ZI, ! gsl_sf_result * SZR, gsl_sf_result * SZI) ! This function computes the complex sine, \sin(z_r + i z_i) storing ! the real and imaginary parts in SZR, SZI. ! ! - Function: int gsl_sf_complex_cos_e (double ZR, double ZI, ! gsl_sf_result * CZR, gsl_sf_result * CZI) ! This function computes the complex cosine, \cos(z_r + i z_i) ! storing the real and imaginary parts in SZR, SZI. ! ! - Function: int gsl_sf_complex_logsin_e (double ZR, double ZI, ! gsl_sf_result * LSZR, gsl_sf_result * LSZI) ! This function computes the logarithm of the complex sine, ! \log(\sin(z_r + i z_i)) storing the real and imaginary parts in ! SZR, SZI. !  ! File: gsl-ref.info, Node: Hyperbolic Trigonometric Functions, Next: Conversion Functions, Prev: Trigonometric Functions for Complex Arguments, Up: Trigonometric Functions ! Hyperbolic Trigonometric Functions ! ---------------------------------- ! - Function: double gsl_sf_lnsinh (double X) ! - Function: int gsl_sf_lnsinh_e (double X, gsl_sf_result * RESULT) ! These routines compute \log(\sinh(x)) for x > 0. ! ! - Function: double gsl_sf_lncosh (double X) ! - Function: int gsl_sf_lncosh_e (double X, gsl_sf_result * RESULT) ! These routines compute \log(\cosh(x)) for any X. !  ! File: gsl-ref.info, Node: Conversion Functions, Next: Restriction Functions, Prev: Hyperbolic Trigonometric Functions, Up: Trigonometric Functions ! Conversion Functions ! -------------------- ! - Function: int gsl_sf_polar_to_rect (double R, double THETA, ! gsl_sf_result * X, gsl_sf_result * Y); ! This function converts the polar coordinates (R,THETA) to ! rectilinear coordinates (X,Y), x = r\cos(\theta), y = ! r\sin(\theta). ! ! - Function: int gsl_sf_rect_to_polar (double X, double Y, ! gsl_sf_result * R, gsl_sf_result * THETA) ! This function converts the rectilinear coordinates (X,Y) to polar ! coordinates (R,THETA), such that x = r\cos(\theta), y = ! r\sin(\theta). The argument THETA lies in the range [-\pi, \pi]. !  ! File: gsl-ref.info, Node: Restriction Functions, Next: Trigonometric Functions With Error Estimates, Prev: Conversion Functions, Up: Trigonometric Functions ! Restriction Functions ! --------------------- ! - Function: double gsl_sf_angle_restrict_symm (double THETA) ! - Function: int gsl_sf_angle_restrict_symm_e (double * THETA) ! These routines force the angle THETA to lie in the range ! (-\pi,\pi]. ! ! - Function: double gsl_sf_angle_restrict_pos (double THETA) ! - Function: int gsl_sf_angle_restrict_pos_e (double * THETA) ! These routines force the angle THETA to lie in the range [0, 2\pi). !  ! File: gsl-ref.info, Node: Trigonometric Functions With Error Estimates, Prev: Restriction Functions, Up: Trigonometric Functions ! Trigonometric Functions With Error Estimates ! -------------------------------------------- ! - Function: double gsl_sf_sin_err (double X, double DX) ! - Function: int gsl_sf_sin_err_e (double X, double DX, gsl_sf_result * ! RESULT) ! These routines compute the sine of an angle X with an associated ! absolute error DX, \sin(x \pm dx). ! ! - Function: double gsl_sf_cos_err (double X, double DX) ! - Function: int gsl_sf_cos_err_e (double X, double DX, gsl_sf_result * ! RESULT) ! These routines compute the cosine of an angle X with an associated ! absolute error DX, \cos(x \pm dx). !  ! File: gsl-ref.info, Node: Zeta Functions, Next: Special Functions Examples, Prev: Trigonometric Functions, Up: Special Functions ! Zeta Functions ! ============== ! The Riemann zeta function is defined in Abramowitz & Stegun, Section ! 23.2. The functions described in this section are declared in the ! header file `gsl_sf_zeta.h'. ! * Menu: ! * Riemann Zeta Function:: ! * Hurwitz Zeta Function:: ! * Eta Function:: !  ! File: gsl-ref.info, Node: Riemann Zeta Function, Next: Hurwitz Zeta Function, Up: Zeta Functions ! Riemann Zeta Function ! --------------------- ! The Riemann zeta function is defined by the infinite sum \zeta(s) = ! \sum_{k=1}^\infty k^{-s}. ! - Function: double gsl_sf_zeta_int (int N) ! - Function: int gsl_sf_zeta_int_e (int N, gsl_sf_result * RESULT) ! These routines compute the Riemann zeta function \zeta(n) for ! integer N, n \ne 1. ! ! - Function: double gsl_sf_zeta (double S) ! - Function: int gsl_sf_zeta_e (double S, gsl_sf_result * RESULT) ! These routines compute the Riemann zeta function \zeta(s) for ! arbitrary S, s \ne 1. !  ! File: gsl-ref.info, Node: Hurwitz Zeta Function, Next: Eta Function, Prev: Riemann Zeta Function, Up: Zeta Functions ! Hurwitz Zeta Function ! --------------------- ! The Hurwitz zeta function is defined by \zeta(s,q) = \sum_0^\infty ! (k+q)^{-s}. ! - Function: double gsl_sf_hzeta (double S, double Q) ! - Function: int gsl_sf_hzeta_e (double S, double Q, gsl_sf_result * ! RESULT) ! These routines compute the Hurwitz zeta function \zeta(s,q) for s ! > 1, q > 0.  ! File: gsl-ref.info, Node: Eta Function, Prev: Hurwitz Zeta Function, Up: Zeta Functions ! Eta Function ! ------------ ! The eta function is defined by \eta(s) = (1-2^{1-s}) \zeta(s). ! - Function: double gsl_sf_eta_int (int N) ! - Function: int gsl_sf_eta_int_e (int N, gsl_sf_result * RESULT) ! These routines compute the eta function \eta(n) for integer N. ! - Function: double gsl_sf_eta (double S) ! - Function: int gsl_sf_eta_e (double S, gsl_sf_result * RESULT) ! These routines compute the eta function \eta(s) for arbitrary S.  ! File: gsl-ref.info, Node: Special Functions Examples, Next: Special Functions References and Further Reading, Prev: Zeta Functions, Up: Special Functions Examples ======== ! The following example demonstrates the use of the error handling ! form of the special functions, in this case to compute the Bessel ! function J_0(5.0), #include ! #include int main (void) { ! double x = 5.0; ! gsl_sf_result result; ! double expected = -0.17759677131433830434739701; ! int status = gsl_sf_bessel_J0_e (x, &result); ! printf("status = %s\n", gsl_strerror(status)); ! printf("J0(5.0) = %.18f\n" ! " +/- % .18f\n", ! result.val, result.err); ! printf("exact = %.18f\n", expected); ! return status; ! } ! ! Here are the results of running the program, ! $ ./a.out ! status = success ! J0(5.0) = -0.177596771314338292 ! +/- 0.000000000000000193 ! exact = -0.177596771314338292 ! ! The next program computes the same quantity using the natural form of ! the function. In this case the error term RESULT.ERR and return status ! are not accessible. ! ! #include ! #include ! int ! main (void) ! { ! double x = 5.0; ! double expected = -0.17759677131433830434739701; ! double y = gsl_sf_bessel_J0 (x); ! printf("J0(5.0) = %.18f\n", y); ! printf("exact = %.18f\n", expected); ! return 0; } ! The results of the function are the same, ! $ ./a.out ! J0(5.0) = -0.177596771314338292 ! exact = -0.177596771314338292 !  ! File: gsl-ref.info, Node: Special Functions References and Further Reading, Prev: Special Functions Examples, Up: Special Functions ! References and Further Reading ! ============================== ! The library follows the conventions of `Abramowitz & Stegun' where ! possible, ! Abramowitz & Stegun (eds.), `Handbook of Mathematical Functions' ! The following papers contain information on the algorithms used to ! compute the special functions, ! MISCFUN: A software package to compute uncommon special functions. ! `ACM Trans. Math. Soft.', vol. 22, 1996, 288-301 ! G.N. Watson, A Treatise on the Theory of Bessel Functions, 2nd ! Edition (Cambridge University Press, 1944). ! G. Nemeth, Mathematical Approximations of Special Functions, Nova ! Science Publishers, ISBN 1-56072-052-2 ! B.C. Carlson, Special Functions of Applied Mathematics (1977) ! W.J. Thompson, Atlas for Computing Mathematical Functions, John ! Wiley & Sons, New York (1997). ! Y.Y. Luke, Algorithms for the Computation of Mathematical ! Functions, Academic Press, New York (1977). !  ! File: gsl-ref.info, Node: Vectors and Matrices, Next: Permutations, Prev: Special Functions, Up: Top ! Vectors and Matrices ! ******************** ! The functions described in this chapter provide a simple vector and ! matrix interface to ordinary C arrays. The memory management of these ! arrays is implemented using a single underlying type, known as a block. ! By writing your functions in terms of vectors and matrices you can pass ! a single structure containing both data and dimensions as an argument ! without needing additional function parameters. The structures are ! compatible with the vector and matrix formats used by BLAS routines. ! * Menu: ! * Data types:: ! * Blocks:: ! * Vectors:: ! * Matrices:: ! * Vector and Matrix References and Further Reading::  ! File: gsl-ref.info, Node: Data types, Next: Blocks, Up: Vectors and Matrices ! ! Data types ! ========== ! ! All the functions are available for each of the standard data-types. ! The versions for `double' have the prefix `gsl_block', `gsl_vector' and ! `gsl_matrix'. Similarly the versions for single-precision `float' ! arrays have the prefix `gsl_block_float', `gsl_vector_float' and ! `gsl_matrix_float'. The full list of available types is given below, ! ! gsl_block double ! gsl_block_float float ! gsl_block_long_double long double ! gsl_block_int int ! gsl_block_uint unsigned int ! gsl_block_long long ! gsl_block_ulong unsigned long ! gsl_block_short short ! gsl_block_ushort unsigned short ! gsl_block_char char ! gsl_block_uchar unsigned char ! gsl_block_complex complex double ! gsl_block_complex_float complex float ! gsl_block_complex_long_double complex long double ! Corresponding types exist for the `gsl_vector' and `gsl_matrix' ! functions. !  ! File: gsl-ref.info, Node: Blocks, Next: Vectors, Prev: Data types, Up: Vectors and Matrices ! Blocks ! ====== ! For consistency all memory is allocated through a `gsl_block' ! structure. The structure contains two components, the size of an area ! of memory and a pointer to the memory. The `gsl_block' structure looks ! like this, ! typedef struct ! { ! size_t size; ! double * data; ! } gsl_block; ! ! Vectors and matrices are made by "slicing" an underlying block. A slice ! is a set of elements formed from an initial offset and a combination of ! indices and step-sizes. In the case of a matrix the step-size for the ! column index represents the row-length. The step-size for a vector is ! known as the "stride". ! The functions for allocating and deallocating blocks are defined in ! `gsl_block.h' * Menu: ! * Block allocation:: ! * Reading and writing blocks:: ! * Example programs for blocks::  ! File: gsl-ref.info, Node: Block allocation, Next: Reading and writing blocks, Up: Blocks ! Block allocation ! ---------------- ! The functions for allocating memory to a block follow the style of ! `malloc' and `free'. In addition they also perform their own error ! checking. If there is insufficient memory available to allocate a ! block then the functions call the GSL error handler (with an error ! number of `GSL_ENOMEM') in addition to returning a null pointer. Thus ! if you use the library error handler to abort your program then it ! isn't necessary to check every `alloc'. ! ! - Function: gsl_block * gsl_block_alloc (size_t N) ! This function allocates memory for a block of N double-precision ! elements, returning a pointer to the block struct. The block is ! not initialized and so the values of its elements are undefined. ! Use the function `gsl_block_calloc' if you want to ensure that all ! the elements are initialized to zero. ! ! A null pointer is returned if insufficient memory is available to ! create the block. ! ! - Function: gsl_block * gsl_block_calloc (size_t N) ! This function allocates memory for a block and initializes all the ! elements of the block to zero. ! ! - Function: void gsl_block_free (gsl_block * B) ! This function frees the memory used by a block B previously ! allocated with `gsl_block_alloc' or `gsl_block_calloc'.  ! File: gsl-ref.info, Node: Reading and writing blocks, Next: Example programs for blocks, Prev: Block allocation, Up: Blocks ! Reading and writing blocks ! -------------------------- ! The library provides functions for reading and writing blocks to a ! file as binary data or formatted text. ! - Function: int gsl_block_fwrite (FILE * STREAM, const gsl_block * B) ! This function writes the elements of the block B to the stream ! STREAM in binary format. The return value is 0 for success and ! `GSL_EFAILED' if there was a problem writing to the file. Since ! the data is written in the native binary format it may not be ! portable between different architectures. ! ! - Function: int gsl_block_fread (FILE * STREAM, gsl_block * B) ! This function reads into the block B from the open stream STREAM ! in binary format. The block B must be preallocated with the ! correct length since the function uses the size of B to determine ! how many bytes to read. The return value is 0 for success and ! `GSL_EFAILED' if there was a problem reading from the file. The ! data is assumed to have been written in the native binary format ! on the same architecture. ! ! - Function: int gsl_block_fprintf (FILE * STREAM, const gsl_block * B, ! const char * FORMAT) ! This function writes the elements of the block B line-by-line to ! the stream STREAM using the format specifier FORMAT, which should ! be one of the `%g', `%e' or `%f' formats for floating point ! numbers and `%d' for integers. The function returns 0 for success ! and `GSL_EFAILED' if there was a problem writing to the file. ! ! - Function: int gsl_block_fscanf (FILE * STREAM, gsl_block * B) ! This function reads formatted data from the stream STREAM into the ! block B. The block B must be preallocated with the correct length ! since the function uses the size of B to determine how many ! numbers to read. The function returns 0 for success and ! `GSL_EFAILED' if there was a problem reading from the file.  ! File: gsl-ref.info, Node: Example programs for blocks, Prev: Reading and writing blocks, Up: Blocks ! ! Example programs for blocks ! --------------------------- ! The following program shows how to allocate a block, ! #include ! #include ! ! int ! main (void) ! { ! gsl_block * b = gsl_block_alloc (100); ! ! printf("length of block = %u\n", b->size); ! printf("block data address = %#x\n", b->data); ! ! gsl_block_free (b); ! return 0; ! } ! Here is the output from the program, - length of block = 100 - block data address = 0x804b0d8 --- 8,4482 ----  ! File: gsl-ref.info, Node: Using gdb, Next: Examining floating point registers, Up: Debugging Numerical Programs ! Using gdb ! ========= ! Any errors reported by the library are passed to the function ! `gsl_error'. By running your programs under gdb and setting a ! breakpoint in this function you can automatically catch any library ! errors. You can add a breakpoint for every session by putting ! break gsl_error ! into your `.gdbinit' file in the directory where your program is ! started. ! If the breakpoint catches an error then you can use a backtrace ! (`bt') to see the call-tree, and the arguments which possibly caused ! the error. By moving up into the calling function you can investigate ! the values of variables at that point. Here is an example from the ! program `fft/test_trap', which contains the following line, ! status = gsl_fft_complex_wavetable_alloc (0, &complex_wavetable); ! The function `gsl_fft_complex_wavetable_alloc' takes the length of an ! FFT as its first argument. When this line is executed an error will be ! generated because the length of an FFT is not allowed to be zero. ! To debug this problem we start `gdb', using the file `.gdbinit' to ! define a breakpoint in `gsl_error', ! ! bash$ gdb test_trap ! ! GDB is free software and you are welcome to distribute copies ! of it under certain conditions; type "show copying" to see ! the conditions. There is absolutely no warranty for GDB; ! type "show warranty" for details. GDB 4.16 (i586-debian-linux), ! Copyright 1996 Free Software Foundation, Inc. ! ! Breakpoint 1 at 0x8050b1e: file error.c, line 14. ! When we run the program this breakpoint catches the error and shows the ! reason for it. ! (gdb) run ! Starting program: test_trap ! ! Breakpoint 1, gsl_error (reason=0x8052b0d ! "length n must be positive integer", ! file=0x8052b04 "c_init.c", line=108, gsl_errno=1) ! at error.c:14 ! 14 if (gsl_error_handler) ! ! The first argument of `gsl_error' is always a string describing the ! error. Now we can look at the backtrace to see what caused the problem, ! ! (gdb) bt ! #0 gsl_error (reason=0x8052b0d ! "length n must be positive integer", ! file=0x8052b04 "c_init.c", line=108, gsl_errno=1) ! at error.c:14 ! #1 0x8049376 in gsl_fft_complex_wavetable_alloc (n=0, ! wavetable=0xbffff778) at c_init.c:108 ! #2 0x8048a00 in main (argc=1, argv=0xbffff9bc) ! at test_trap.c:94 ! #3 0x80488be in ___crt_dummy__ () ! ! We can see that the error was generated in the function ! `gsl_fft_complex_wavetable_alloc' when it was called with an argument ! of N=0. The original call came from line 94 in the file `test_trap.c'. ! ! By moving up to the level of the original call we can find the line ! that caused the error, ! ! (gdb) up ! #1 0x8049376 in gsl_fft_complex_wavetable_alloc (n=0, ! wavetable=0xbffff778) at c_init.c:108 ! 108 GSL_ERROR ("length n must be positive integer", GSL_EDOM); ! (gdb) up ! #2 0x8048a00 in main (argc=1, argv=0xbffff9bc) ! at test_trap.c:94 ! 94 status = gsl_fft_complex_wavetable_alloc (0, ! &complex_wavetable); ! ! Thus we have found the line that caused the problem. From this point we ! could also print out the values of other variables such as ! `complex_wavetable'.  ! File: gsl-ref.info, Node: Examining floating point registers, Next: Handling floating point exceptions, Prev: Using gdb, Up: Debugging Numerical Programs ! Examining floating point registers ! ================================== ! The contents of floating point registers can be examined using the ! command `info float' (on supported platforms). + (gdb) info float + st0: 0xc4018b895aa17a945000 Valid Normal -7.838871e+308 + st1: 0x3ff9ea3f50e4d7275000 Valid Normal 0.0285946 + st2: 0x3fe790c64ce27dad4800 Valid Normal 6.7415931e-08 + st3: 0x3ffaa3ef0df6607d7800 Spec Normal 0.0400229 + st4: 0x3c028000000000000000 Valid Normal 4.4501477e-308 + st5: 0x3ffef5412c22219d9000 Zero Normal 0.9580257 + st6: 0x3fff8000000000000000 Valid Normal 1 + st7: 0xc4028b65a1f6d243c800 Valid Normal -1.566206e+309 + fctrl: 0x0272 53 bit; NEAR; mask DENOR UNDER LOS; + fstat: 0xb9ba flags 0001; top 7; excep DENOR OVERF UNDER LOS + ftag: 0x3fff + fip: 0x08048b5c + fcs: 0x051a0023 + fopoff: 0x08086820 + fopsel: 0x002b + + Individual registers can be examined using the variables $REG, where + REG is the register name. + + (gdb) p $st1 + $1 = 0.02859464454261210347719  ! File: gsl-ref.info, Node: Handling floating point exceptions, Next: GCC warning options for numerical programs, Prev: Examining floating point registers, Up: Debugging Numerical Programs ! ! Handling floating point exceptions ! ================================== ! It is possible to stop the program whenever a `SIGFPE' floating point ! exception occurs. This can be useful for finding the cause of an ! unexpected infinity or `NaN'. The current handler settings can be ! shown with the command `info signal SIGFPE'. ! ! (gdb) info signal SIGFPE ! Signal Stop Print Pass to program Description ! SIGFPE Yes Yes Yes Arithmetic exception ! ! Unless the program uses a signal handler the default setting should be ! changed so that SIGFPE is not passed to the program, as this would cause ! it to exit. The command `handle SIGFPE stop nopass' prevents this. ! ! (gdb) handle SIGFPE stop nopass ! Signal Stop Print Pass to program Description ! SIGFPE Yes Yes No Arithmetic exception ! ! Depending on the platform it may be necessary to instruct the kernel to ! generate signals for floating point exceptions. For programs using GSL ! this can be achieved using the `GSL_IEEE_MODE' environment variable in ! conjunction with the function `gsl_ieee_env_setup()' as described in ! *note IEEE floating-point arithmetic::. ! (gdb) set env GSL_IEEE_MODE=double-precision  ! File: gsl-ref.info, Node: GCC warning options for numerical programs, Next: Debugging References, Prev: Handling floating point exceptions, Up: Debugging Numerical Programs ! GCC warning options for numerical programs ========================================== ! Writing reliable numerical programs in C requires great care. The ! following GCC warning options are recommended when compiling numerical ! programs: ! ! gcc -ansi -pedantic -Werror -Wall -W ! -Wmissing-prototypes -Wstrict-prototypes ! -Wtraditional -Wconversion -Wshadow ! -Wpointer-arith -Wcast-qual -Wcast-align ! -Wwrite-strings -Wnested-externs ! -fshort-enums -fno-common -Dinline= -g -O4 ! ! For details of each option consult the manual `Using and Porting GCC'. ! The following table gives a brief explanation of what types of errors ! these options catch. ! ! `-ansi -pedantic' ! Use ANSI C, and reject any non-ANSI extensions. These flags help ! in writing portable programs that will compile on other systems. ! ! `-Werror' ! Consider warnings to be errors, so that compilation stops. This ! prevents warnings from scrolling off the top of the screen and ! being lost. You won't be able to compile the program until it is ! completely warning-free. ! ! `-Wall' ! This turns on a set of warnings for common programming problems. ! You need `-Wall', but it is not enough on its own. ! ! `-O4' ! Turn on optimization. The warnings for uninitialized variables in ! `-Wall' rely on the optimizer to analyze the code. If there is no ! optimization then these warnings aren't generated. ! ! `-W' ! This turns on some extra warnings not included in `-Wall', such as ! missing return values and comparisons between signed and unsigned ! integers. ! ! `-Wmissing-prototypes -Wstrict-prototypes' ! Warn if there are any missing or inconsistent prototypes. Without ! prototypes it is harder to detect problems with incorrect ! arguments. ! ! `-Wtraditional' ! This warns about certain constructs that behave differently in ! traditional and ANSI C. Whether the traditional or ANSI ! interpretation is used might be unpredictable on other compilers. ! ! `-Wconversion' ! The main use of this option is to warn about conversions from ! signed to unsigned integers. For example, `unsigned int x = -1'. ! If you need to perform such a conversion you can use an explicit ! cast. ! ! `-Wshadow' ! This warns whenever a local variable shadows another local ! variable. If two variables have the same name then it is a ! potential source of confusion. ! ! `-Wpointer-arith -Wcast-qual -Wcast-align' ! These options warn if you try to do pointer arithmetic for types ! which don't have a size, such as `void', if you remove a `const' ! cast from a pointer, or if you cast a pointer to a type which has a ! different size, causing an invalid alignment. ! ! `-Wwrite-strings' ! This option gives string constants a `const' qualifier so that it ! will be a compile-time error to attempt to overwrite them. ! ! `-fshort-enums' ! This option makes the type of `enum' as short as possible. ! Normally this makes an `enum' different from an `int'. ! Consequently any attempts to assign a pointer-to-int to a ! pointer-to-enum will generate a cast-alignment warning. ! ! `-fno-common' ! This option prevents global variables being simultaneously defined ! in different object files (you get an error at link time). Such a ! variable should be defined in one file and referred to in other ! files with an `extern' declaration. ! ! `-Wnested-externs' ! This warns if an `extern' declaration is encountered within a ! function. ! ! `-Dinline=' ! The `inline' keyword is not part of ANSI C. Thus if you want to use ! `-ansi' with a program which uses inline functions you can use this ! preprocessor definition to remove the `inline' keywords. ! ! `-g' ! It always makes sense to put debugging symbols in the executable ! so that you can debug it using `gdb'. The only effect of ! debugging symbols is to increase the size of the file, and you can ! use the `strip' command to remove them later if necessary. !  ! File: gsl-ref.info, Node: Debugging References, Prev: GCC warning options for numerical programs, Up: Debugging Numerical Programs ! ! References and Further Reading ! ============================== ! ! The following books are essential reading for anyone writing and ! debugging numerical programs with GCC and GDB. ! R.M. Stallman, `Using and Porting GNU CC', Free Software ! Foundation, ISBN 1882114388 ! ! R.M. Stallman, R.H. Pesch, `Debugging with GDB: The GNU ! Source-Level Debugger', Free Software Foundation, ISBN 1882114779  ! File: gsl-ref.info, Node: Contributors to GSL, Next: Autoconf Macros, Prev: Debugging Numerical Programs, Up: Top ! Contributors to GSL ! ******************* ! (See the AUTHORS file in the distribution for up-to-date information.) ! *Mark Galassi* ! Conceived GSL (with James Theiler) and wrote the design document. ! Wrote the simulated annealing package and the relevant chapter in ! the manual. ! *James Theiler* ! Conceived GSL (with Mark Galassi). Wrote the random number ! generators and the relevant chapter in this manual. ! *Jim Davies* ! Wrote the statistical routines and the relevant chapter in this ! manual. ! *Brian Gough* ! FFTs, numerical integration, random number generators and ! distributions, root finding, minimization and fitting, polynomial ! solvers, complex numbers, physical constants, permutations, vector ! and matrix functions, histograms, statistics, ieee-utils, revised ! CBLAS Level 2 & 3, matrix decompositions, eigensystems, cumulative ! distribution functions, testing, documentation and releases. ! *Reid Priedhorsky* ! Wrote and documented the initial version of the root finding ! routines while at Los Alamos National Laboratory, Mathematical ! Modeling and Analysis Group. ! *Gerard Jungman* ! Special Functions, Series acceleration, ODEs, BLAS, Linear Algebra, ! Eigensystems, Hankel Transforms. ! *Mike Booth* ! Wrote the Monte Carlo library. ! *Jorma Olavi Ta"htinen* ! Wrote the initial complex arithmetic functions. ! *Thomas Walter* ! Wrote the initial heapsort routines and cholesky decomposition. ! *Fabrice Rossi* ! Multidimensional minimization. ! *Carlo Perassi* ! Implementation of the random number generators in Knuth's ! `Seminumerical Algorithms', 3rd Ed. ! *Szymon Jaroszewicz* ! Wrote the routines for generating combinations. ! *Nicolas Darnis* ! Wrote the initial routines for canonical permutations. ! *Jason H. Stover* ! Wrote the major cumulative distribution functions.  ! File: gsl-ref.info, Node: Autoconf Macros, Next: GSL CBLAS Library, Prev: Contributors to GSL, Up: Top ! Autoconf Macros ! *************** ! For applications using `autoconf' the standard macro `AC_CHECK_LIB' can ! be used to link with the library automatically from a `configure' ! script. The library itself depends on the presence of a CBLAS and math ! library as well, so these must also be located before linking with the ! main `libgsl' file. The following commands should be placed in the ! `configure.in' file to perform these tests, ! ! AC_CHECK_LIB(m,main) ! AC_CHECK_LIB(gslcblas,main) ! AC_CHECK_LIB(gsl,main) ! ! It is important to check for `libm' and `libgslcblas' before `libgsl', ! otherwise the tests will fail. Assuming the libraries are found the ! output during the configure stage looks like this, ! ! checking for main in -lm... yes ! checking for main in -lgslcblas... yes ! checking for main in -lgsl... yes ! ! If the library is found then the tests will define the macros ! `HAVE_LIBGSL', `HAVE_LIBGSLCBLAS', `HAVE_LIBM' and add the options ! `-lgsl -lgslcblas -lm' to the variable `LIBS'. ! ! The tests above will find any version of the library. They are ! suitable for general use, where the versions of the functions are not ! important. An alternative macro is available in the file `gsl.m4' to ! test for a specific version of the library. To use this macro simply ! add the following line to your `configure.in' file instead of the tests ! above: ! ! AM_PATH_GSL(GSL_VERSION, ! [action-if-found], ! [action-if-not-found]) ! ! The argument `GSL_VERSION' should be the two or three digit MAJOR.MINOR ! or MAJOR.MINOR.MICRO version number of the release you require. A ! suitable choice for `action-if-not-found' is, ! ! AC_MSG_ERROR(could not find required version of GSL) ! ! Then you can add the variables `GSL_LIBS' and `GSL_CFLAGS' to your ! Makefile.am files to obtain the correct compiler flags. `GSL_LIBS' is ! equal to the output of the `gsl-config --libs' command and `GSL_CFLAGS' ! is equal to `gsl-config --cflags' command. For example, ! ! libgsdv_la_LDFLAGS = \ ! $(GTK_LIBDIR) \ ! $(GTK_LIBS) -lgsdvgsl $(GSL_LIBS) -lgslcblas ! ! Note that the macro `AM_PATH_GSL' needs to use the C compiler so it ! should appear in the `configure.in' file before the macro ! `AC_LANG_CPLUSPLUS' for programs that use C++. ! To test for `inline' the following test should be placed in your ! `configure.in' file, ! AC_C_INLINE ! ! if test "$ac_cv_c_inline" != no ; then ! AC_DEFINE(HAVE_INLINE,1) ! AC_SUBST(HAVE_INLINE) ! fi ! ! and the macro will then be defined in the compilation flags or by ! including the file `config.h' before any library headers. ! ! The following autoconf test will check for `extern inline', ! ! dnl Check for "extern inline", using a modified version ! dnl of the test for AC_C_INLINE from acspecific.mt ! dnl ! AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, ! [ac_cv_c_extern_inline=no ! AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); ! extern $ac_cv_c_inline double foo(double x) { return x+1.0; }; ! double foo (double x) { return x + 1.0; };], ! [ foo(1.0) ], ! [ac_cv_c_extern_inline="yes"]) ! ]) ! ! if test "$ac_cv_c_extern_inline" != no ; then ! AC_DEFINE(HAVE_INLINE,1) ! AC_SUBST(HAVE_INLINE) ! fi ! The substitution of portability functions can be made automatically ! if you use `autoconf'. For example, to test whether the BSD function ! `hypot' is available you can include the following line in the ! configure file `configure.in' for your application, ! ! AC_CHECK_FUNCS(hypot) ! and place the following macro definitions in the file `config.h.in', ! /* Substitute gsl_hypot for missing system hypot */ ! ! #ifndef HAVE_HYPOT ! #define hypot gsl_hypot ! #endif ! ! The application source files can then use the include command `#include ! ' to substitute `gsl_hypot' for each occurrence of `hypot' ! when `hypot' is not available.  ! File: gsl-ref.info, Node: GSL CBLAS Library, Next: Free Software Needs Free Documentation, Prev: Autoconf Macros, Up: Top ! GSL CBLAS Library ! ***************** ! ! The prototypes for the low-level CBLAS functions are declared in the ! file `gsl_cblas.h'. For the definition of the functions consult the ! documentation available from Netlib (*note BLAS References and Further ! Reading::). ! ! * Menu: ! * Level 1 CBLAS Functions:: ! * Level 2 CBLAS Functions:: ! * Level 3 CBLAS Functions:: ! * GSL CBLAS Examples::  ! File: gsl-ref.info, Node: Level 1 CBLAS Functions, Next: Level 2 CBLAS Functions, Up: GSL CBLAS Library ! Level 1 ! ======= ! - Function: float cblas_sdsdot (const int N, const float ALPHA, const ! float *X, const int INCX, const float *Y, const int INCY) ! - Function: double cblas_dsdot (const int N, const float *X, const int ! INCX, const float *Y, const int INCY) ! - Function: float cblas_sdot (const int N, const float *X, const int ! INCX, const float *Y, const int INCY) ! - Function: double cblas_ddot (const int N, const double *X, const int ! INCX, const double *Y, const int INCY) ! - Function: void cblas_cdotu_sub (const int N, const void *X, const ! int INCX, const void *Y, const int INCY, void *DOTU) ! - Function: void cblas_cdotc_sub (const int N, const void *X, const ! int INCX, const void *Y, const int INCY, void *DOTC) ! - Function: void cblas_zdotu_sub (const int N, const void *X, const ! int INCX, const void *Y, const int INCY, void *DOTU) ! - Function: void cblas_zdotc_sub (const int N, const void *X, const ! int INCX, const void *Y, const int INCY, void *DOTC) ! - Function: float cblas_snrm2 (const int N, const float *X, const int ! INCX) ! - Function: float cblas_sasum (const int N, const float *X, const int ! INCX) ! - Function: double cblas_dnrm2 (const int N, const double *X, const ! int INCX) ! - Function: double cblas_dasum (const int N, const double *X, const ! int INCX) ! - Function: float cblas_scnrm2 (const int N, const void *X, const int ! INCX) ! - Function: float cblas_scasum (const int N, const void *X, const int ! INCX) ! - Function: double cblas_dznrm2 (const int N, const void *X, const int ! INCX) ! - Function: double cblas_dzasum (const int N, const void *X, const int ! INCX) ! - Function: CBLAS_INDEX cblas_isamax (const int N, const float *X, ! const int INCX) ! - Function: CBLAS_INDEX cblas_idamax (const int N, const double *X, ! const int INCX) ! - Function: CBLAS_INDEX cblas_icamax (const int N, const void *X, ! const int INCX) ! - Function: CBLAS_INDEX cblas_izamax (const int N, const void *X, ! const int INCX) ! - Function: void cblas_sswap (const int N, float *X, const int INCX, ! float *Y, const int INCY) ! - Function: void cblas_scopy (const int N, const float *X, const int ! INCX, float *Y, const int INCY) ! - Function: void cblas_saxpy (const int N, const float ALPHA, const ! float *X, const int INCX, float *Y, const int INCY) ! - Function: void cblas_dswap (const int N, double *X, const int INCX, ! double *Y, const int INCY) ! - Function: void cblas_dcopy (const int N, const double *X, const int ! INCX, double *Y, const int INCY) ! - Function: void cblas_daxpy (const int N, const double ALPHA, const ! double *X, const int INCX, double *Y, const int INCY) ! - Function: void cblas_cswap (const int N, void *X, const int INCX, ! void *Y, const int INCY) ! - Function: void cblas_ccopy (const int N, const void *X, const int ! INCX, void *Y, const int INCY) ! - Function: void cblas_caxpy (const int N, const void *ALPHA, const ! void *X, const int INCX, void *Y, const int INCY) ! - Function: void cblas_zswap (const int N, void *X, const int INCX, ! void *Y, const int INCY) ! - Function: void cblas_zcopy (const int N, const void *X, const int ! INCX, void *Y, const int INCY) ! - Function: void cblas_zaxpy (const int N, const void *ALPHA, const ! void *X, const int INCX, void *Y, const int INCY) ! - Function: void cblas_srotg (float *A, float *B, float *C, float *S) ! - Function: void cblas_srotmg (float *D1, float *D2, float *B1, const ! float B2, float *P) ! - Function: void cblas_srot (const int N, float *X, const int INCX, ! float *Y, const int INCY, const float C, const float S) ! - Function: void cblas_srotm (const int N, float *X, const int INCX, ! float *Y, const int INCY, const float *P) ! - Function: void cblas_drotg (double *A, double *B, double *C, double ! *S) ! - Function: void cblas_drotmg (double *D1, double *D2, double *B1, ! const double B2, double *P) ! - Function: void cblas_drot (const int N, double *X, const int INCX, ! double *Y, const int INCY, const double C, const double S) ! - Function: void cblas_drotm (const int N, double *X, const int INCX, ! double *Y, const int INCY, const double *P) ! - Function: void cblas_sscal (const int N, const float ALPHA, float ! *X, const int INCX) ! ! - Function: void cblas_dscal (const int N, const double ALPHA, double ! *X, const int INCX) ! - Function: void cblas_cscal (const int N, const void *ALPHA, void *X, ! const int INCX) ! - Function: void cblas_zscal (const int N, const void *ALPHA, void *X, ! const int INCX) ! - Function: void cblas_csscal (const int N, const float ALPHA, void ! *X, const int INCX) ! ! - Function: void cblas_zdscal (const int N, const double ALPHA, void ! *X, const int INCX)  ! File: gsl-ref.info, Node: Level 2 CBLAS Functions, Next: Level 3 CBLAS Functions, Prev: Level 1 CBLAS Functions, Up: GSL CBLAS Library ! ! Level 2 ! ======= ! - Function: void cblas_sgemv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const float ! ALPHA, const float *A, const int LDA, const float *X, const ! int INCX, const float BETA, float *Y, const int INCY) ! ! - Function: void cblas_sgbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const int ! KL, const int KU, const float ALPHA, const float *A, const ! int LDA, const float *X, const int INCX, const float BETA, ! float *Y, const int INCY) ! ! - Function: void cblas_strmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const float *A, const int ! LDA, float *X, const int INCX) ! ! - Function: void cblas_stbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const float ! *A, const int LDA, float *X, const int INCX) ! ! - Function: void cblas_stpmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const float *AP, float *X, ! const int INCX) ! ! - Function: void cblas_strsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const float *A, const int ! LDA, float *X, const int INCX) ! ! - Function: void cblas_stbsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const float ! *A, const int LDA, float *X, const int INCX) ! ! - Function: void cblas_stpsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const float *AP, float *X, ! const int INCX) ! ! - Function: void cblas_dgemv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const ! double ALPHA, const double *A, const int LDA, const double ! *X, const int INCX, const double BETA, double *Y, const int ! INCY) ! ! - Function: void cblas_dgbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const int ! KL, const int KU, const double ALPHA, const double *A, const ! int LDA, const double *X, const int INCX, const double BETA, ! double *Y, const int INCY) ! ! - Function: void cblas_dtrmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const double *A, const int ! LDA, double *X, const int INCX) ! ! - Function: void cblas_dtbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const double ! *A, const int LDA, double *X, const int INCX) ! ! - Function: void cblas_dtpmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const double *AP, double ! *X, const int INCX) ! ! - Function: void cblas_dtrsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const double *A, const int ! LDA, double *X, const int INCX) ! ! - Function: void cblas_dtbsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const double ! *A, const int LDA, double *X, const int INCX) ! ! - Function: void cblas_dtpsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const double *AP, double ! *X, const int INCX) ! ! - Function: void cblas_cgemv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const void ! *ALPHA, const void *A, const int LDA, const void *X, const ! int INCX, const void *BETA, void *Y, const int INCY) ! ! - Function: void cblas_cgbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const int ! KL, const int KU, const void *ALPHA, const void *A, const int ! LDA, const void *X, const int INCX, const void *BETA, void ! *Y, const int INCY) ! ! - Function: void cblas_ctrmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *A, const int ! LDA, void *X, const int INCX) ! ! - Function: void cblas_ctbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const void ! *A, const int LDA, void *X, const int INCX) ! ! - Function: void cblas_ctpmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *AP, void *X, ! const int INCX) ! ! - Function: void cblas_ctrsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *A, const int ! LDA, void *X, const int INCX) ! ! - Function: void cblas_ctbsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const void ! *A, const int LDA, void *X, const int INCX) ! ! - Function: void cblas_ctpsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *AP, void *X, ! const int INCX) ! ! - Function: void cblas_zgemv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const void ! *ALPHA, const void *A, const int LDA, const void *X, const ! int INCX, const void *BETA, void *Y, const int INCY) ! ! - Function: void cblas_zgbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const int M, const int N, const int ! KL, const int KU, const void *ALPHA, const void *A, const int ! LDA, const void *X, const int INCX, const void *BETA, void ! *Y, const int INCY) ! ! - Function: void cblas_ztrmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *A, const int ! LDA, void *X, const int INCX) ! ! - Function: void cblas_ztbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const void ! *A, const int LDA, void *X, const int INCX) ! ! - Function: void cblas_ztpmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *AP, void *X, ! const int INCX) ! ! - Function: void cblas_ztrsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *A, const int ! LDA, void *X, const int INCX) ! ! - Function: void cblas_ztbsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const int K, const void ! *A, const int LDA, void *X, const int INCX) ! ! - Function: void cblas_ztpsv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANSA, const ! enum CBLAS_DIAG DIAG, const int N, const void *AP, void *X, ! const int INCX) ! ! - Function: void cblas_ssymv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const float ! *A, const int LDA, const float *X, const int INCX, const ! float BETA, float *Y, const int INCY) ! ! - Function: void cblas_ssbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const int K, const float ALPHA, ! const float *A, const int LDA, const float *X, const int ! INCX, const float BETA, float *Y, const int INCY) ! ! - Function: void cblas_sspmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const float ! *AP, const float *X, const int INCX, const float BETA, float ! *Y, const int INCY) ! ! - Function: void cblas_sger (const enum CBLAS_ORDER ORDER, const int ! M, const int N, const float ALPHA, const float *X, const int ! INCX, const float *Y, const int INCY, float *A, const int LDA) ! ! - Function: void cblas_ssyr (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const float ! *X, const int INCX, float *A, const int LDA) ! ! - Function: void cblas_sspr (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const float ! *X, const int INCX, float *AP) ! ! - Function: void cblas_ssyr2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const float ! *X, const int INCX, const float *Y, const int INCY, float *A, ! const int LDA) ! ! - Function: void cblas_sspr2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const float ! *X, const int INCX, const float *Y, const int INCY, float *A) ! ! - Function: void cblas_dsymv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const ! double *A, const int LDA, const double *X, const int INCX, ! const double BETA, double *Y, const int INCY) ! ! - Function: void cblas_dsbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const int K, const double ! ALPHA, const double *A, const int LDA, const double *X, const ! int INCX, const double BETA, double *Y, const int INCY) ! ! - Function: void cblas_dspmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const ! double *AP, const double *X, const int INCX, const double ! BETA, double *Y, const int INCY) ! ! - Function: void cblas_dger (const enum CBLAS_ORDER ORDER, const int ! M, const int N, const double ALPHA, const double *X, const ! int INCX, const double *Y, const int INCY, double *A, const ! int LDA) ! ! - Function: void cblas_dsyr (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const ! double *X, const int INCX, double *A, const int LDA) ! ! - Function: void cblas_dspr (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const ! double *X, const int INCX, double *AP) ! ! - Function: void cblas_dsyr2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const ! double *X, const int INCX, const double *Y, const int INCY, ! double *A, const int LDA) ! ! - Function: void cblas_dspr2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const ! double *X, const int INCX, const double *Y, const int INCY, ! double *A) ! ! - Function: void cblas_chemv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *A, const int LDA, const void *X, const int INCX, const void ! *BETA, void *Y, const int INCY) ! ! - Function: void cblas_chbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const int K, const void *ALPHA, ! const void *A, const int LDA, const void *X, const int INCX, ! const void *BETA, void *Y, const int INCY) ! ! - Function: void cblas_chpmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *AP, const void *X, const int INCX, const void *BETA, void ! *Y, const int INCY) ! ! - Function: void cblas_cgeru (const enum CBLAS_ORDER ORDER, const int ! M, const int N, const void *ALPHA, const void *X, const int ! INCX, const void *Y, const int INCY, void *A, const int LDA) ! ! - Function: void cblas_cgerc (const enum CBLAS_ORDER ORDER, const int ! M, const int N, const void *ALPHA, const void *X, const int ! INCX, const void *Y, const int INCY, void *A, const int LDA) ! ! - Function: void cblas_cher (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const void ! *X, const int INCX, void *A, const int LDA) ! ! - Function: void cblas_chpr (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const float ALPHA, const void ! *X, const int INCX, void *A) ! ! - Function: void cblas_cher2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *X, const int INCX, const void *Y, const int INCY, void *A, ! const int LDA) ! ! - Function: void cblas_chpr2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *X, const int INCX, const void *Y, const int INCY, void *AP) ! ! - Function: void cblas_zhemv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *A, const int LDA, const void *X, const int INCX, const void ! *BETA, void *Y, const int INCY) ! ! - Function: void cblas_zhbmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const int K, const void *ALPHA, ! const void *A, const int LDA, const void *X, const int INCX, ! const void *BETA, void *Y, const int INCY) ! ! - Function: void cblas_zhpmv (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *AP, const void *X, const int INCX, const void *BETA, void ! *Y, const int INCY) ! ! - Function: void cblas_zgeru (const enum CBLAS_ORDER ORDER, const int ! M, const int N, const void *ALPHA, const void *X, const int ! INCX, const void *Y, const int INCY, void *A, const int LDA) ! ! - Function: void cblas_zgerc (const enum CBLAS_ORDER ORDER, const int ! M, const int N, const void *ALPHA, const void *X, const int ! INCX, const void *Y, const int INCY, void *A, const int LDA) ! ! - Function: void cblas_zher (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const void ! *X, const int INCX, void *A, const int LDA) ! ! - Function: void cblas_zhpr (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const double ALPHA, const void ! *X, const int INCX, void *A) ! ! - Function: void cblas_zher2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *X, const int INCX, const void *Y, const int INCY, void *A, ! const int LDA) ! ! - Function: void cblas_zhpr2 (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const int N, const void *ALPHA, const void ! *X, const int INCX, const void *Y, const int INCY, void *AP) !  ! File: gsl-ref.info, Node: Level 3 CBLAS Functions, Next: GSL CBLAS Examples, Prev: Level 2 CBLAS Functions, Up: GSL CBLAS Library ! ! Level 3 ! ======= ! - Function: void cblas_sgemm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_TRANSPOSE TRANSB, ! const int M, const int N, const int K, const float ALPHA, ! const float *A, const int LDA, const float *B, const int LDB, ! const float BETA, float *C, const int LDC) ! ! - Function: void cblas_ssymm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const int M, ! const int N, const float ALPHA, const float *A, const int ! LDA, const float *B, const int LDB, const float BETA, float ! *C, const int LDC) ! ! - Function: void cblas_ssyrk (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const int ! N, const int K, const float ALPHA, const float *A, const int ! LDA, const float BETA, float *C, const int LDC) ! ! - Function: void cblas_ssyr2k (const enum CBLAS_ORDER ORDER, const ! enum CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const ! int N, const int K, const float ALPHA, const float *A, const ! int LDA, const float *B, const int LDB, const float BETA, ! float *C, const int LDC) ! ! - Function: void cblas_strmm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const float ALPHA, const float *A, const int ! LDA, float *B, const int LDB) ! ! - Function: void cblas_strsm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const float ALPHA, const float *A, const int ! LDA, float *B, const int LDB) ! ! - Function: void cblas_dgemm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_TRANSPOSE TRANSB, ! const int M, const int N, const int K, const double ALPHA, ! const double *A, const int LDA, const double *B, const int ! LDB, const double BETA, double *C, const int LDC) ! ! - Function: void cblas_dsymm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const int M, ! const int N, const double ALPHA, const double *A, const int ! LDA, const double *B, const int LDB, const double BETA, ! double *C, const int LDC) ! ! - Function: void cblas_dsyrk (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const int ! N, const int K, const double ALPHA, const double *A, const ! int LDA, const double BETA, double *C, const int LDC) ! ! - Function: void cblas_dsyr2k (const enum CBLAS_ORDER ORDER, const ! enum CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const ! int N, const int K, const double ALPHA, const double *A, ! const int LDA, const double *B, const int LDB, const double ! BETA, double *C, const int LDC) ! ! - Function: void cblas_dtrmm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const double ALPHA, const double *A, const ! int LDA, double *B, const int LDB) ! ! - Function: void cblas_dtrsm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const double ALPHA, const double *A, const ! int LDA, double *B, const int LDB) ! ! - Function: void cblas_cgemm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_TRANSPOSE TRANSB, ! const int M, const int N, const int K, const void *ALPHA, ! const void *A, const int LDA, const void *B, const int LDB, ! const void *BETA, void *C, const int LDC) ! ! - Function: void cblas_csymm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const int M, ! const int N, const void *ALPHA, const void *A, const int LDA, ! const void *B, const int LDB, const void *BETA, void *C, ! const int LDC) ! ! - Function: void cblas_csyrk (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const int ! N, const int K, const void *ALPHA, const void *A, const int ! LDA, const void *BETA, void *C, const int LDC) ! ! - Function: void cblas_csyr2k (const enum CBLAS_ORDER ORDER, const ! enum CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const ! int N, const int K, const void *ALPHA, const void *A, const ! int LDA, const void *B, const int LDB, const void *BETA, void ! *C, const int LDC) ! ! - Function: void cblas_ctrmm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const void *ALPHA, const void *A, const int ! LDA, void *B, const int LDB) ! ! - Function: void cblas_ctrsm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const void *ALPHA, const void *A, const int ! LDA, void *B, const int LDB) ! ! - Function: void cblas_zgemm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_TRANSPOSE TRANSB, ! const int M, const int N, const int K, const void *ALPHA, ! const void *A, const int LDA, const void *B, const int LDB, ! const void *BETA, void *C, const int LDC) ! ! - Function: void cblas_zsymm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const int M, ! const int N, const void *ALPHA, const void *A, const int LDA, ! const void *B, const int LDB, const void *BETA, void *C, ! const int LDC) ! ! - Function: void cblas_zsyrk (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const int ! N, const int K, const void *ALPHA, const void *A, const int ! LDA, const void *BETA, void *C, const int LDC) ! ! - Function: void cblas_zsyr2k (const enum CBLAS_ORDER ORDER, const ! enum CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const ! int N, const int K, const void *ALPHA, const void *A, const ! int LDA, const void *B, const int LDB, const void *BETA, void ! *C, const int LDC) ! ! - Function: void cblas_ztrmm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const void *ALPHA, const void *A, const int ! LDA, void *B, const int LDB) ! ! - Function: void cblas_ztrsm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const enum ! CBLAS_TRANSPOSE TRANSA, const enum CBLAS_DIAG DIAG, const int ! M, const int N, const void *ALPHA, const void *A, const int ! LDA, void *B, const int LDB) ! ! - Function: void cblas_chemm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const int M, ! const int N, const void *ALPHA, const void *A, const int LDA, ! const void *B, const int LDB, const void *BETA, void *C, ! const int LDC) ! ! - Function: void cblas_cherk (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const int ! N, const int K, const float ALPHA, const void *A, const int ! LDA, const float BETA, void *C, const int LDC) ! ! - Function: void cblas_cher2k (const enum CBLAS_ORDER ORDER, const ! enum CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const ! int N, const int K, const void *ALPHA, const void *A, const ! int LDA, const void *B, const int LDB, const float BETA, void ! *C, const int LDC) ! ! - Function: void cblas_zhemm (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_SIDE SIDE, const enum CBLAS_UPLO UPLO, const int M, ! const int N, const void *ALPHA, const void *A, const int LDA, ! const void *B, const int LDB, const void *BETA, void *C, ! const int LDC) ! ! - Function: void cblas_zherk (const enum CBLAS_ORDER ORDER, const enum ! CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const int ! N, const int K, const double ALPHA, const void *A, const int ! LDA, const double BETA, void *C, const int LDC) ! ! - Function: void cblas_zher2k (const enum CBLAS_ORDER ORDER, const ! enum CBLAS_UPLO UPLO, const enum CBLAS_TRANSPOSE TRANS, const ! int N, const int K, const void *ALPHA, const void *A, const ! int LDA, const void *B, const int LDB, const double BETA, ! void *C, const int LDC) ! - Function: void cblas_xerbla (int P, const char *ROUT, const char ! *FORM, ...)  ! File: gsl-ref.info, Node: GSL CBLAS Examples, Prev: Level 3 CBLAS Functions, Up: GSL CBLAS Library Examples ======== ! The following program computes the product of two matrices using the ! Level-3 BLAS function SGEMM, ! ! [ 0.11 0.12 0.13 ] [ 1011 1012 ] [ 367.76 368.12 ] ! [ 0.21 0.22 0.23 ] [ 1021 1022 ] = [ 674.06 674.72 ] ! [ 1031 1032 ] ! ! The matrices are stored in row major order but could be stored in column ! major order if the first argument of the call to `cblas_sgemm' was ! changed to `CblasColMajor'. #include ! #include int main (void) { ! int lda = 3; ! float A[] = { 0.11, 0.12, 0.13, ! 0.21, 0.22, 0.23 }; ! int ldb = 2; ! ! float B[] = { 1011, 1012, ! 1021, 1022, ! 1031, 1032 }; ! int ldc = 2; ! float C[] = { 0.00, 0.00, ! 0.00, 0.00 }; ! ! /* Compute C = A B */ ! cblas_sgemm (CblasRowMajor, ! CblasNoTrans, CblasNoTrans, 2, 2, 3, ! 1.0, A, lda, B, ldb, 0.0, C, ldc); ! printf ("[ %g, %g\n", C[0], C[1]); ! printf (" %g, %g ]\n", C[2], C[3]); ! ! return 0; } ! To compile the program use the following command line, ! gcc demo.c -lgslcblas ! There is no need to link with the main library `-lgsl' in this case as ! the CBLAS library is an independent unit. Here is the output from the ! program, ! $ ./a.out ! [ 367.76, 368.12 ! 674.06, 674.72 ] !  ! File: gsl-ref.info, Node: Free Software Needs Free Documentation, Next: GNU General Public License, Prev: GSL CBLAS Library, Up: Top ! Free Software Needs Free Documentation ! ************************************** ! The following article was written by Richard Stallman, founder of ! the GNU Project. ! The biggest deficiency in the free software community today is not in ! the software--it is the lack of good free documentation that we can ! include with the free software. Many of our most important programs do ! not come with free reference manuals and free introductory texts. ! Documentation is an essential part of any software package; when an ! important free software package does not come with a free manual and a ! free tutorial, that is a major gap. We have many such gaps today. ! ! Consider Perl, for instance. The tutorial manuals that people ! normally use are non-free. How did this come about? Because the ! authors of those manuals published them with restrictive terms--no ! copying, no modification, source files not available--which exclude ! them from the free software world. ! ! That wasn't the first time this sort of thing happened, and it was ! far from the last. Many times we have heard a GNU user eagerly ! describe a manual that he is writing, his intended contribution to the ! community, only to learn that he had ruined everything by signing a ! publication contract to make it non-free. ! ! Free documentation, like free software, is a matter of freedom, not ! price. The problem with the non-free manual is not that publishers ! charge a price for printed copies--that in itself is fine. (The Free ! Software Foundation sells printed copies of manuals, too.) The problem ! is the restrictions on the use of the manual. Free manuals are ! available in source code form, and give you permission to copy and ! modify. Non-free manuals do not allow this. ! ! The criteria of freedom for a free manual are roughly the same as for ! free software. Redistribution (including the normal kinds of ! commercial redistribution) must be permitted, so that the manual can ! accompany every copy of the program, both on-line and on paper. ! ! Permission for modification of the technical content is crucial too. ! When people modify the software, adding or changing features, if they ! are conscientious they will change the manual too--so they can provide ! accurate and clear documentation for the modified program. A manual ! that leaves you no choice but to write a new manual to document a ! changed version of the program is not really available to our community. ! ! Some kinds of limits on the way modification is handled are ! acceptable. For example, requirements to preserve the original ! author's copyright notice, the distribution terms, or the list of ! authors, are ok. It is also no problem to require modified versions to ! include notice that they were modified. Even entire sections that may ! not be deleted or changed are acceptable, as long as they deal with ! nontechnical topics (like this one). These kinds of restrictions are ! acceptable because they don't obstruct the community's normal use of ! the manual. ! ! However, it must be possible to modify all the _technical_ content ! of the manual, and then distribute the result in all the usual media, ! through all the usual channels. Otherwise, the restrictions obstruct ! the use of the manual, it is not free, and we need another manual to ! replace it. ! ! Please spread the word about this issue. Our community continues to ! lose manuals to proprietary publishing. If we spread the word that ! free software needs free reference manuals and free tutorials, perhaps ! the next person who wants to contribute by writing documentation will ! realize, before it is too late, that only free manuals contribute to ! the free software community. ! ! If you are writing documentation, please insist on publishing it ! under the GNU Free Documentation License or another free documentation ! license. Remember that this decision requires your approval--you don't ! have to let the publisher decide. Some commercial publishers will use ! a free license if you insist, but they will not propose the option; it ! is up to you to raise the issue and say firmly that this is what you ! want. If the publisher you are dealing with refuses, please try other ! publishers. If you're not sure whether a proposed license is free, ! write to . ! ! You can encourage commercial publishers to sell more free, copylefted ! manuals and tutorials by buying them, and particularly by buying copies ! from the publishers that paid for their writing or for major ! improvements. Meanwhile, try to avoid buying non-free documentation at ! all. Check the distribution terms of a manual before you buy it, and ! insist that whoever seeks your business must respect your freedom. ! Check the history of the book, and try reward the publishers that have ! paid or pay the authors to work on it. ! ! The Free Software Foundation maintains a list of free documentation ! published by other publishers, at ! . !  ! File: gsl-ref.info, Node: GNU General Public License, Next: GNU Free Documentation License, Prev: Free Software Needs Free Documentation, Up: Top ! GNU General Public License ! ************************** + Version 2, June 1991 ! Copyright (C) 1989, 1991 Free Software Foundation, Inc. ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA ! ! Everyone is permitted to copy and distribute verbatim copies of this ! license document, but changing it is not allowed. ! Preamble ! ======== ! The licenses for most software are designed to take away your freedom ! to share and change it. By contrast, the GNU General Public License is ! intended to guarantee your freedom to share and change free ! software--to make sure the software is free for all its users. This ! General Public License applies to most of the Free Software ! Foundation's software and to any other program whose authors commit to ! using it. (Some other Free Software Foundation software is covered by ! the GNU Library General Public License instead.) You can apply it to ! your programs, too. ! ! When we speak of free software, we are referring to freedom, not ! price. Our General Public Licenses are designed to make sure that you ! have the freedom to distribute copies of free software (and charge for ! this service if you wish), that you receive source code or can get it ! if you want it, that you can change the software or use pieces of it in ! new free programs; and that you know you can do these things. ! ! To protect your rights, we need to make restrictions that forbid ! anyone to deny you these rights or to ask you to surrender the rights. ! These restrictions translate to certain responsibilities for you if you ! distribute copies of the software, or if you modify it. ! ! For example, if you distribute copies of such a program, whether ! gratis or for a fee, you must give the recipients all the rights that ! you have. You must make sure that they, too, receive or can get the ! source code. And you must show them these terms so they know their ! rights. ! ! We protect your rights with two steps: (1) copyright the software, ! and (2) offer you this license which gives you legal permission to copy, ! distribute and/or modify the software. ! ! Also, for each author's protection and ours, we want to make certain ! that everyone understands that there is no warranty for this free ! software. If the software is modified by someone else and passed on, we ! want its recipients to know that what they have is not the original, so ! that any problems introduced by others will not reflect on the original ! authors' reputations. ! ! Finally, any free program is threatened constantly by software ! patents. We wish to avoid the danger that redistributors of a free ! program will individually obtain patent licenses, in effect making the ! program proprietary. To prevent this, we have made it clear that any ! patent must be licensed for everyone's free use or not licensed at all. ! ! The precise terms and conditions for copying, distribution and ! modification follow. ! ! TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION ! 0. This License applies to any program or other work which contains a ! notice placed by the copyright holder saying it may be distributed ! under the terms of this General Public License. The "Program", ! below, refers to any such program or work, and a "work based on ! the Program" means either the Program or any derivative work under ! copyright law: that is to say, a work containing the Program or a ! portion of it, either verbatim or with modifications and/or ! translated into another language. (Hereinafter, translation is ! included without limitation in the term "modification".) Each ! licensee is addressed as "you". ! ! Activities other than copying, distribution and modification are ! not covered by this License; they are outside its scope. The act ! of running the Program is not restricted, and the output from the ! Program is covered only if its contents constitute a work based on ! the Program (independent of having been made by running the ! Program). Whether that is true depends on what the Program does. ! ! 1. You may copy and distribute verbatim copies of the Program's ! source code as you receive it, in any medium, provided that you ! conspicuously and appropriately publish on each copy an appropriate ! copyright notice and disclaimer of warranty; keep intact all the ! notices that refer to this License and to the absence of any ! warranty; and give any other recipients of the Program a copy of ! this License along with the Program. ! ! You may charge a fee for the physical act of transferring a copy, ! and you may at your option offer warranty protection in exchange ! for a fee. ! ! 2. You may modify your copy or copies of the Program or any portion ! of it, thus forming a work based on the Program, and copy and ! distribute such modifications or work under the terms of Section 1 ! above, provided that you also meet all of these conditions: ! ! a. You must cause the modified files to carry prominent notices ! stating that you changed the files and the date of any change. ! ! b. You must cause any work that you distribute or publish, that ! in whole or in part contains or is derived from the Program ! or any part thereof, to be licensed as a whole at no charge ! to all third parties under the terms of this License. ! ! c. If the modified program normally reads commands interactively ! when run, you must cause it, when started running for such ! interactive use in the most ordinary way, to print or display ! an announcement including an appropriate copyright notice and ! a notice that there is no warranty (or else, saying that you ! provide a warranty) and that users may redistribute the ! program under these conditions, and telling the user how to ! view a copy of this License. (Exception: if the Program ! itself is interactive but does not normally print such an ! announcement, your work based on the Program is not required ! to print an announcement.) ! ! These requirements apply to the modified work as a whole. If ! identifiable sections of that work are not derived from the ! Program, and can be reasonably considered independent and separate ! works in themselves, then this License, and its terms, do not ! apply to those sections when you distribute them as separate ! works. But when you distribute the same sections as part of a ! whole which is a work based on the Program, the distribution of ! the whole must be on the terms of this License, whose permissions ! for other licensees extend to the entire whole, and thus to each ! and every part regardless of who wrote it. ! ! Thus, it is not the intent of this section to claim rights or ! contest your rights to work written entirely by you; rather, the ! intent is to exercise the right to control the distribution of ! derivative or collective works based on the Program. ! ! In addition, mere aggregation of another work not based on the ! Program with the Program (or with a work based on the Program) on ! a volume of a storage or distribution medium does not bring the ! other work under the scope of this License. ! ! 3. You may copy and distribute the Program (or a work based on it, ! under Section 2) in object code or executable form under the terms ! of Sections 1 and 2 above provided that you also do one of the ! following: ! ! a. Accompany it with the complete corresponding machine-readable ! source code, which must be distributed under the terms of ! Sections 1 and 2 above on a medium customarily used for ! software interchange; or, ! ! b. Accompany it with a written offer, valid for at least three ! years, to give any third party, for a charge no more than your ! cost of physically performing source distribution, a complete ! machine-readable copy of the corresponding source code, to be ! distributed under the terms of Sections 1 and 2 above on a ! medium customarily used for software interchange; or, ! ! c. Accompany it with the information you received as to the offer ! to distribute corresponding source code. (This alternative is ! allowed only for noncommercial distribution and only if you ! received the program in object code or executable form with ! such an offer, in accord with Subsection b above.) ! ! The source code for a work means the preferred form of the work for ! making modifications to it. For an executable work, complete ! source code means all the source code for all modules it contains, ! plus any associated interface definition files, plus the scripts ! used to control compilation and installation of the executable. ! However, as a special exception, the source code distributed need ! not include anything that is normally distributed (in either ! source or binary form) with the major components (compiler, ! kernel, and so on) of the operating system on which the executable ! runs, unless that component itself accompanies the executable. ! ! If distribution of executable or object code is made by offering ! access to copy from a designated place, then offering equivalent ! access to copy the source code from the same place counts as ! distribution of the source code, even though third parties are not ! compelled to copy the source along with the object code. ! ! 4. You may not copy, modify, sublicense, or distribute the Program ! except as expressly provided under this License. Any attempt ! otherwise to copy, modify, sublicense or distribute the Program is ! void, and will automatically terminate your rights under this ! License. However, parties who have received copies, or rights, ! from you under this License will not have their licenses ! terminated so long as such parties remain in full compliance. ! ! 5. You are not required to accept this License, since you have not ! signed it. However, nothing else grants you permission to modify ! or distribute the Program or its derivative works. These actions ! are prohibited by law if you do not accept this License. ! Therefore, by modifying or distributing the Program (or any work ! based on the Program), you indicate your acceptance of this ! License to do so, and all its terms and conditions for copying, ! distributing or modifying the Program or works based on it. ! ! 6. Each time you redistribute the Program (or any work based on the ! Program), the recipient automatically receives a license from the ! original licensor to copy, distribute or modify the Program ! subject to these terms and conditions. You may not impose any ! further restrictions on the recipients' exercise of the rights ! granted herein. You are not responsible for enforcing compliance ! by third parties to this License. ! ! 7. If, as a consequence of a court judgment or allegation of patent ! infringement or for any other reason (not limited to patent ! issues), conditions are imposed on you (whether by court order, ! agreement or otherwise) that contradict the conditions of this ! License, they do not excuse you from the conditions of this ! License. If you cannot distribute so as to satisfy simultaneously ! your obligations under this License and any other pertinent ! obligations, then as a consequence you may not distribute the ! Program at all. For example, if a patent license would not permit ! royalty-free redistribution of the Program by all those who ! receive copies directly or indirectly through you, then the only ! way you could satisfy both it and this License would be to refrain ! entirely from distribution of the Program. ! ! If any portion of this section is held invalid or unenforceable ! under any particular circumstance, the balance of the section is ! intended to apply and the section as a whole is intended to apply ! in other circumstances. ! ! It is not the purpose of this section to induce you to infringe any ! patents or other property right claims or to contest validity of ! any such claims; this section has the sole purpose of protecting ! the integrity of the free software distribution system, which is ! implemented by public license practices. Many people have made ! generous contributions to the wide range of software distributed ! through that system in reliance on consistent application of that ! system; it is up to the author/donor to decide if he or she is ! willing to distribute software through any other system and a ! licensee cannot impose that choice. ! ! This section is intended to make thoroughly clear what is believed ! to be a consequence of the rest of this License. ! ! 8. If the distribution and/or use of the Program is restricted in ! certain countries either by patents or by copyrighted interfaces, ! the original copyright holder who places the Program under this ! License may add an explicit geographical distribution limitation ! excluding those countries, so that distribution is permitted only ! in or among countries not thus excluded. In such case, this ! License incorporates the limitation as if written in the body of ! this License. ! ! 9. The Free Software Foundation may publish revised and/or new ! versions of the General Public License from time to time. Such ! new versions will be similar in spirit to the present version, but ! may differ in detail to address new problems or concerns. ! ! Each version is given a distinguishing version number. If the ! Program specifies a version number of this License which applies ! to it and "any later version", you have the option of following ! the terms and conditions either of that version or of any later ! version published by the Free Software Foundation. If the Program ! does not specify a version number of this License, you may choose ! any version ever published by the Free Software Foundation. ! ! 10. If you wish to incorporate parts of the Program into other free ! programs whose distribution conditions are different, write to the ! author to ask for permission. For software which is copyrighted ! by the Free Software Foundation, write to the Free Software ! Foundation; we sometimes make exceptions for this. Our decision ! will be guided by the two goals of preserving the free status of ! all derivatives of our free software and of promoting the sharing ! and reuse of software generally. ! ! NO WARRANTY ! ! 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO ! WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE ! LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT ! HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT ! WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT ! NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND ! FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE ! QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE ! PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY ! SERVICING, REPAIR OR CORRECTION. ! ! 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN ! WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY ! MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE ! LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, ! INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR ! INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF ! DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU ! OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY ! OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ! ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. ! ! END OF TERMS AND CONDITIONS ! ! Appendix: How to Apply These Terms to Your New Programs ! ======================================================= ! ! If you develop a new program, and you want it to be of the greatest ! possible use to the public, the best way to achieve this is to make it ! free software which everyone can redistribute and change under these ! terms. ! ! To do so, attach the following notices to the program. It is safest ! to attach them to the start of each source file to most effectively ! convey the exclusion of warranty; and each file should have at least ! the "copyright" line and a pointer to where the full notice is found. ! ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. ! Copyright (C) YYYY NAME OF AUTHOR ! ! This program is free software; you can redistribute it ! and/or modify it under the terms of the GNU General Public ! License as published by the Free Software Foundation; either ! version 2 of the License, or (at your option) any later ! version. ! ! This program is distributed in the hope that it will be ! useful, but WITHOUT ANY WARRANTY; without even the implied ! warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ! PURPOSE. See the GNU General Public License for more ! details. ! ! You should have received a copy of the GNU General Public ! License along with this program; if not, write to the Free ! Software Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. ! ! Also add information on how to contact you by electronic and paper ! mail. ! ! If the program is interactive, make it output a short notice like ! this when it starts in an interactive mode: ! ! Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR ! Gnomovision comes with ABSOLUTELY NO WARRANTY; for details ! type `show w'. This is free software, and you are welcome ! to redistribute it under certain conditions; type `show c' ! for details. ! ! The hypothetical commands `show w' and `show c' should show the ! appropriate parts of the General Public License. Of course, the ! commands you use may be called something other than `show w' and `show ! c'; they could even be mouse-clicks or menu items--whatever suits your ! program. ! ! You should also get your employer (if you work as a programmer) or ! your school, if any, to sign a "copyright disclaimer" for the program, ! if necessary. Here is a sample; alter the names: ! ! Yoyodyne, Inc., hereby disclaims all copyright interest in ! the program `Gnomovision' (which makes passes at compilers) ! written by James Hacker. ! ! SIGNATURE OF TY COON, 1 April 1989 ! Ty Coon, President of Vice ! This General Public License does not permit incorporating your ! program into proprietary programs. If your program is a subroutine ! library, you may consider it more useful to permit linking proprietary ! applications with the library. If this is what you want to do, use the ! GNU Library General Public License instead of this License.  ! File: gsl-ref.info, Node: GNU Free Documentation License, Next: Function Index, Prev: GNU General Public License, Up: Top ! GNU Free Documentation License ! ****************************** ! Version 1.1, March 2000 ! Copyright (C) 2000 Free Software Foundation, Inc. ! 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA ! ! Everyone is permitted to copy and distribute verbatim copies of this ! license document, but changing it is not allowed. ! 0. PREAMBLE ! The purpose of this License is to make a manual, textbook, or other ! written document "free" in the sense of freedom: to assure everyone ! the effective freedom to copy and redistribute it, with or without ! modifying it, either commercially or noncommercially. Secondarily, ! this License preserves for the author and publisher a way to get ! credit for their work, while not being considered responsible for ! modifications made by others. ! ! This License is a kind of "copyleft", which means that derivative ! works of the document must themselves be free in the same sense. ! It complements the GNU General Public License, which is a copyleft ! license designed for free software. ! ! We have designed this License in order to use it for manuals for ! free software, because free software needs free documentation: a ! free program should come with manuals providing the same freedoms ! that the software does. But this License is not limited to ! software manuals; it can be used for any textual work, regardless ! of subject matter or whether it is published as a printed book. ! We recommend this License principally for works whose purpose is ! instruction or reference. ! ! 1. APPLICABILITY AND DEFINITIONS ! ! This License applies to any manual or other work that contains a ! notice placed by the copyright holder saying it can be distributed ! under the terms of this License. The "Document", below, refers to ! any such manual or work. Any member of the public is a licensee, ! and is addressed as "you". ! ! A "Modified Version" of the Document means any work containing the ! Document or a portion of it, either copied verbatim, or with ! modifications and/or translated into another language. ! ! A "Secondary Section" is a named appendix or a front-matter ! section of the Document that deals exclusively with the ! relationship of the publishers or authors of the Document to the ! Document's overall subject (or to related matters) and contains ! nothing that could fall directly within that overall subject. ! (For example, if the Document is in part a textbook of ! mathematics, a Secondary Section may not explain any mathematics.) ! The relationship could be a matter of historical connection with ! the subject or with related matters, or of legal, commercial, ! philosophical, ethical or political position regarding them. ! ! The "Invariant Sections" are certain Secondary Sections whose ! titles are designated, as being those of Invariant Sections, in ! the notice that says that the Document is released under this ! License. ! ! The "Cover Texts" are certain short passages of text that are ! listed, as Front-Cover Texts or Back-Cover Texts, in the notice ! that says that the Document is released under this License. ! ! A "Transparent" copy of the Document means a machine-readable copy, ! represented in a format whose specification is available to the ! general public, whose contents can be viewed and edited directly ! and straightforwardly with generic text editors or (for images ! composed of pixels) generic paint programs or (for drawings) some ! widely available drawing editor, and that is suitable for input to ! text formatters or for automatic translation to a variety of ! formats suitable for input to text formatters. A copy made in an ! otherwise Transparent file format whose markup has been designed ! to thwart or discourage subsequent modification by readers is not ! Transparent. A copy that is not "Transparent" is called "Opaque". ! ! Examples of suitable formats for Transparent copies include plain ! ASCII without markup, Texinfo input format, LaTeX input format, ! SGML or XML using a publicly available DTD, and ! standard-conforming simple HTML designed for human modification. ! Opaque formats include PostScript, PDF, proprietary formats that ! can be read and edited only by proprietary word processors, SGML ! or XML for which the DTD and/or processing tools are not generally ! available, and the machine-generated HTML produced by some word ! processors for output purposes only. ! ! The "Title Page" means, for a printed book, the title page itself, ! plus such following pages as are needed to hold, legibly, the ! material this License requires to appear in the title page. For ! works in formats which do not have any title page as such, "Title ! Page" means the text near the most prominent appearance of the ! work's title, preceding the beginning of the body of the text. ! ! 2. VERBATIM COPYING ! ! You may copy and distribute the Document in any medium, either ! commercially or noncommercially, provided that this License, the ! copyright notices, and the license notice saying this License ! applies to the Document are reproduced in all copies, and that you ! add no other conditions whatsoever to those of this License. You ! may not use technical measures to obstruct or control the reading ! or further copying of the copies you make or distribute. However, ! you may accept compensation in exchange for copies. If you ! distribute a large enough number of copies you must also follow ! the conditions in section 3. ! ! You may also lend copies, under the same conditions stated above, ! and you may publicly display copies. ! ! 3. COPYING IN QUANTITY ! ! If you publish printed copies of the Document numbering more than ! 100, and the Document's license notice requires Cover Texts, you ! must enclose the copies in covers that carry, clearly and legibly, ! all these Cover Texts: Front-Cover Texts on the front cover, and ! Back-Cover Texts on the back cover. Both covers must also clearly ! and legibly identify you as the publisher of these copies. The ! front cover must present the full title with all words of the ! title equally prominent and visible. You may add other material ! on the covers in addition. Copying with changes limited to the ! covers, as long as they preserve the title of the Document and ! satisfy these conditions, can be treated as verbatim copying in ! other respects. ! ! If the required texts for either cover are too voluminous to fit ! legibly, you should put the first ones listed (as many as fit ! reasonably) on the actual cover, and continue the rest onto ! adjacent pages. ! ! If you publish or distribute Opaque copies of the Document ! numbering more than 100, you must either include a ! machine-readable Transparent copy along with each Opaque copy, or ! state in or with each Opaque copy a publicly-accessible ! computer-network location containing a complete Transparent copy ! of the Document, free of added material, which the general ! network-using public has access to download anonymously at no ! charge using public-standard network protocols. If you use the ! latter option, you must take reasonably prudent steps, when you ! begin distribution of Opaque copies in quantity, to ensure that ! this Transparent copy will remain thus accessible at the stated ! location until at least one year after the last time you ! distribute an Opaque copy (directly or through your agents or ! retailers) of that edition to the public. ! ! It is requested, but not required, that you contact the authors of ! the Document well before redistributing any large number of ! copies, to give them a chance to provide you with an updated ! version of the Document. ! ! 4. MODIFICATIONS ! ! You may copy and distribute a Modified Version of the Document ! under the conditions of sections 2 and 3 above, provided that you ! release the Modified Version under precisely this License, with ! the Modified Version filling the role of the Document, thus ! licensing distribution and modification of the Modified Version to ! whoever possesses a copy of it. In addition, you must do these ! things in the Modified Version: ! ! A. Use in the Title Page (and on the covers, if any) a title ! distinct from that of the Document, and from those of ! previous versions (which should, if there were any, be listed ! in the History section of the Document). You may use the ! same title as a previous version if the original publisher of ! that version gives permission. ! ! B. List on the Title Page, as authors, one or more persons or ! entities responsible for authorship of the modifications in ! the Modified Version, together with at least five of the ! principal authors of the Document (all of its principal ! authors, if it has less than five). ! ! C. State on the Title page the name of the publisher of the ! Modified Version, as the publisher. ! ! D. Preserve all the copyright notices of the Document. ! ! E. Add an appropriate copyright notice for your modifications ! adjacent to the other copyright notices. ! ! F. Include, immediately after the copyright notices, a license ! notice giving the public permission to use the Modified ! Version under the terms of this License, in the form shown in ! the Addendum below. ! ! G. Preserve in that license notice the full lists of Invariant ! Sections and required Cover Texts given in the Document's ! license notice. ! ! H. Include an unaltered copy of this License. ! ! I. Preserve the section entitled "History", and its title, and ! add to it an item stating at least the title, year, new ! authors, and publisher of the Modified Version as given on ! the Title Page. If there is no section entitled "History" in ! the Document, create one stating the title, year, authors, ! and publisher of the Document as given on its Title Page, ! then add an item describing the Modified Version as stated in ! the previous sentence. ! ! J. Preserve the network location, if any, given in the Document ! for public access to a Transparent copy of the Document, and ! likewise the network locations given in the Document for ! previous versions it was based on. These may be placed in ! the "History" section. You may omit a network location for a ! work that was published at least four years before the ! Document itself, or if the original publisher of the version ! it refers to gives permission. ! ! K. In any section entitled "Acknowledgments" or "Dedications", ! preserve the section's title, and preserve in the section all ! the substance and tone of each of the contributor ! acknowledgments and/or dedications given therein. ! ! L. Preserve all the Invariant Sections of the Document, ! unaltered in their text and in their titles. Section numbers ! or the equivalent are not considered part of the section ! titles. ! ! M. Delete any section entitled "Endorsements". Such a section ! may not be included in the Modified Version. ! ! N. Do not retitle any existing section as "Endorsements" or to ! conflict in title with any Invariant Section. ! ! If the Modified Version includes new front-matter sections or ! appendices that qualify as Secondary Sections and contain no ! material copied from the Document, you may at your option ! designate some or all of these sections as invariant. To do this, ! add their titles to the list of Invariant Sections in the Modified ! Version's license notice. These titles must be distinct from any ! other section titles. ! ! You may add a section entitled "Endorsements", provided it contains ! nothing but endorsements of your Modified Version by various ! parties--for example, statements of peer review or that the text ! has been approved by an organization as the authoritative ! definition of a standard. ! ! You may add a passage of up to five words as a Front-Cover Text, ! and a passage of up to 25 words as a Back-Cover Text, to the end ! of the list of Cover Texts in the Modified Version. Only one ! passage of Front-Cover Text and one of Back-Cover Text may be ! added by (or through arrangements made by) any one entity. If the ! Document already includes a cover text for the same cover, ! previously added by you or by arrangement made by the same entity ! you are acting on behalf of, you may not add another; but you may ! replace the old one, on explicit permission from the previous ! publisher that added the old one. ! ! The author(s) and publisher(s) of the Document do not by this ! License give permission to use their names for publicity for or to ! assert or imply endorsement of any Modified Version. ! ! 5. COMBINING DOCUMENTS ! ! You may combine the Document with other documents released under ! this License, under the terms defined in section 4 above for ! modified versions, provided that you include in the combination ! all of the Invariant Sections of all of the original documents, ! unmodified, and list them all as Invariant Sections of your ! combined work in its license notice. ! ! The combined work need only contain one copy of this License, and ! multiple identical Invariant Sections may be replaced with a single ! copy. If there are multiple Invariant Sections with the same name ! but different contents, make the title of each such section unique ! by adding at the end of it, in parentheses, the name of the ! original author or publisher of that section if known, or else a ! unique number. Make the same adjustment to the section titles in ! the list of Invariant Sections in the license notice of the ! combined work. ! ! In the combination, you must combine any sections entitled ! "History" in the various original documents, forming one section ! entitled "History"; likewise combine any sections entitled ! "Acknowledgments", and any sections entitled "Dedications". You ! must delete all sections entitled "Endorsements." ! ! 6. COLLECTIONS OF DOCUMENTS ! ! You may make a collection consisting of the Document and other ! documents released under this License, and replace the individual ! copies of this License in the various documents with a single copy ! that is included in the collection, provided that you follow the ! rules of this License for verbatim copying of each of the ! documents in all other respects. ! ! You may extract a single document from such a collection, and ! distribute it individually under this License, provided you insert ! a copy of this License into the extracted document, and follow ! this License in all other respects regarding verbatim copying of ! that document. ! ! 7. AGGREGATION WITH INDEPENDENT WORKS ! ! A compilation of the Document or its derivatives with other ! separate and independent documents or works, in or on a volume of ! a storage or distribution medium, does not as a whole count as a ! Modified Version of the Document, provided no compilation ! copyright is claimed for the compilation. Such a compilation is ! called an "aggregate", and this License does not apply to the ! other self-contained works thus compiled with the Document, on ! account of their being thus compiled, if they are not themselves ! derivative works of the Document. ! ! If the Cover Text requirement of section 3 is applicable to these ! copies of the Document, then if the Document is less than one ! quarter of the entire aggregate, the Document's Cover Texts may be ! placed on covers that surround only the Document within the ! aggregate. Otherwise they must appear on covers around the whole ! aggregate. ! ! 8. TRANSLATION ! ! Translation is considered a kind of modification, so you may ! distribute translations of the Document under the terms of section ! 4. Replacing Invariant Sections with translations requires special ! permission from their copyright holders, but you may include ! translations of some or all Invariant Sections in addition to the ! original versions of these Invariant Sections. You may include a ! translation of this License provided that you also include the ! original English version of this License. In case of a ! disagreement between the translation and the original English ! version of this License, the original English version will prevail. ! ! 9. TERMINATION ! ! You may not copy, modify, sublicense, or distribute the Document ! except as expressly provided for under this License. Any other ! attempt to copy, modify, sublicense or distribute the Document is ! void, and will automatically terminate your rights under this ! License. However, parties who have received copies, or rights, ! from you under this License will not have their licenses ! terminated so long as such parties remain in full compliance. ! ! 10. FUTURE REVISIONS OF THIS LICENSE ! ! The Free Software Foundation may publish new, revised versions of ! the GNU Free Documentation License from time to time. Such new ! versions will be similar in spirit to the present version, but may ! differ in detail to address new problems or concerns. See ! `http://www.gnu.org/copyleft/'. ! ! Each version of the License is given a distinguishing version ! number. If the Document specifies that a particular numbered ! version of this License "or any later version" applies to it, you ! have the option of following the terms and conditions either of ! that specified version or of any later version that has been ! published (not as a draft) by the Free Software Foundation. If ! the Document does not specify a version number of this License, ! you may choose any version ever published (not as a draft) by the ! Free Software Foundation. ! ! ADDENDUM: How to use this License for your documents ! ==================================================== ! ! To use this License in a document you have written, include a copy of ! the License in the document and put the following copyright and license ! notices just after the title page: ! ! Copyright (C) YEAR YOUR NAME. Permission is ! granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, ! Version 1.1 or any later version published by the Free ! Software Foundation; with the Invariant Sections being ! LIST THEIR TITLES, with the Front-Cover Texts being ! LIST, and with the Back-Cover Texts being ! LIST. A copy of the license is included in the ! section entitled ``GNU Free Documentation License''. ! ! If you have no Invariant Sections, write "with no Invariant Sections" ! instead of saying which ones are invariant. If you have no Front-Cover ! Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being ! LIST"; likewise for Back-Cover Texts. ! ! If your document contains nontrivial examples of program code, we ! recommend releasing these examples in parallel under your choice of ! free software license, such as the GNU General Public License, to ! permit their use in free software. !  ! File: gsl-ref.info, Node: Function Index, Next: Variable Index, Prev: GNU Free Documentation License, Up: Top ! Function Index ! ************** * Menu: ! * cblas_caxpy: Level 1 CBLAS Functions. ! * cblas_ccopy: Level 1 CBLAS Functions. ! * cblas_cdotc_sub: Level 1 CBLAS Functions. ! * cblas_cdotu_sub: Level 1 CBLAS Functions. ! * cblas_cgbmv: Level 2 CBLAS Functions. ! * cblas_cgemm: Level 3 CBLAS Functions. ! * cblas_cgemv: Level 2 CBLAS Functions. ! * cblas_cgerc: Level 2 CBLAS Functions. ! * cblas_cgeru: Level 2 CBLAS Functions. ! * cblas_chbmv: Level 2 CBLAS Functions. ! * cblas_chemm: Level 3 CBLAS Functions. ! * cblas_chemv: Level 2 CBLAS Functions. ! * cblas_cher: Level 2 CBLAS Functions. ! * cblas_cher2: Level 2 CBLAS Functions. ! * cblas_cher2k: Level 3 CBLAS Functions. ! * cblas_cherk: Level 3 CBLAS Functions. ! * cblas_chpmv: Level 2 CBLAS Functions. ! * cblas_chpr: Level 2 CBLAS Functions. ! * cblas_chpr2: Level 2 CBLAS Functions. ! * cblas_cscal: Level 1 CBLAS Functions. ! * cblas_csscal: Level 1 CBLAS Functions. ! * cblas_cswap: Level 1 CBLAS Functions. ! * cblas_csymm: Level 3 CBLAS Functions. ! * cblas_csyr2k: Level 3 CBLAS Functions. ! * cblas_csyrk: Level 3 CBLAS Functions. ! * cblas_ctbmv: Level 2 CBLAS Functions. ! * cblas_ctbsv: Level 2 CBLAS Functions. ! * cblas_ctpmv: Level 2 CBLAS Functions. ! * cblas_ctpsv: Level 2 CBLAS Functions. ! * cblas_ctrmm: Level 3 CBLAS Functions. ! * cblas_ctrmv: Level 2 CBLAS Functions. ! * cblas_ctrsm: Level 3 CBLAS Functions. ! * cblas_ctrsv: Level 2 CBLAS Functions. ! * cblas_dasum: Level 1 CBLAS Functions. ! * cblas_daxpy: Level 1 CBLAS Functions. ! * cblas_dcopy: Level 1 CBLAS Functions. ! * cblas_ddot: Level 1 CBLAS Functions. ! * cblas_dgbmv: Level 2 CBLAS Functions. ! * cblas_dgemm: Level 3 CBLAS Functions. ! * cblas_dgemv: Level 2 CBLAS Functions. ! * cblas_dger: Level 2 CBLAS Functions. ! * cblas_dnrm2: Level 1 CBLAS Functions. ! * cblas_drot: Level 1 CBLAS Functions. ! * cblas_drotg: Level 1 CBLAS Functions. ! * cblas_drotm: Level 1 CBLAS Functions. ! * cblas_drotmg: Level 1 CBLAS Functions. ! * cblas_dsbmv: Level 2 CBLAS Functions. ! * cblas_dscal: Level 1 CBLAS Functions. ! * cblas_dsdot: Level 1 CBLAS Functions. ! * cblas_dspmv: Level 2 CBLAS Functions. ! * cblas_dspr: Level 2 CBLAS Functions. ! * cblas_dspr2: Level 2 CBLAS Functions. ! * cblas_dswap: Level 1 CBLAS Functions. ! * cblas_dsymm: Level 3 CBLAS Functions. ! * cblas_dsymv: Level 2 CBLAS Functions. ! * cblas_dsyr: Level 2 CBLAS Functions. ! * cblas_dsyr2: Level 2 CBLAS Functions. ! * cblas_dsyr2k: Level 3 CBLAS Functions. ! * cblas_dsyrk: Level 3 CBLAS Functions. ! * cblas_dtbmv: Level 2 CBLAS Functions. ! * cblas_dtbsv: Level 2 CBLAS Functions. ! * cblas_dtpmv: Level 2 CBLAS Functions. ! * cblas_dtpsv: Level 2 CBLAS Functions. ! * cblas_dtrmm: Level 3 CBLAS Functions. ! * cblas_dtrmv: Level 2 CBLAS Functions. ! * cblas_dtrsm: Level 3 CBLAS Functions. ! * cblas_dtrsv: Level 2 CBLAS Functions. ! * cblas_dzasum: Level 1 CBLAS Functions. ! * cblas_dznrm2: Level 1 CBLAS Functions. ! * cblas_icamax: Level 1 CBLAS Functions. ! * cblas_idamax: Level 1 CBLAS Functions. ! * cblas_isamax: Level 1 CBLAS Functions. ! * cblas_izamax: Level 1 CBLAS Functions. ! * cblas_sasum: Level 1 CBLAS Functions. ! * cblas_saxpy: Level 1 CBLAS Functions. ! * cblas_scasum: Level 1 CBLAS Functions. ! * cblas_scnrm2: Level 1 CBLAS Functions. ! * cblas_scopy: Level 1 CBLAS Functions. ! * cblas_sdot: Level 1 CBLAS Functions. ! * cblas_sdsdot: Level 1 CBLAS Functions. ! * cblas_sgbmv: Level 2 CBLAS Functions. ! * cblas_sgemm: Level 3 CBLAS Functions. ! * cblas_sgemv: Level 2 CBLAS Functions. ! * cblas_sger: Level 2 CBLAS Functions. ! * cblas_snrm2: Level 1 CBLAS Functions. ! * cblas_srot: Level 1 CBLAS Functions. ! * cblas_srotg: Level 1 CBLAS Functions. ! * cblas_srotm: Level 1 CBLAS Functions. ! * cblas_srotmg: Level 1 CBLAS Functions. ! * cblas_ssbmv: Level 2 CBLAS Functions. ! * cblas_sscal: Level 1 CBLAS Functions. ! * cblas_sspmv: Level 2 CBLAS Functions. ! * cblas_sspr: Level 2 CBLAS Functions. ! * cblas_sspr2: Level 2 CBLAS Functions. ! * cblas_sswap: Level 1 CBLAS Functions. ! * cblas_ssymm: Level 3 CBLAS Functions. ! * cblas_ssymv: Level 2 CBLAS Functions. ! * cblas_ssyr: Level 2 CBLAS Functions. ! * cblas_ssyr2: Level 2 CBLAS Functions. ! * cblas_ssyr2k: Level 3 CBLAS Functions. ! * cblas_ssyrk: Level 3 CBLAS Functions. ! * cblas_stbmv: Level 2 CBLAS Functions. ! * cblas_stbsv: Level 2 CBLAS Functions. ! * cblas_stpmv: Level 2 CBLAS Functions. ! * cblas_stpsv: Level 2 CBLAS Functions. ! * cblas_strmm: Level 3 CBLAS Functions. ! * cblas_strmv: Level 2 CBLAS Functions. ! * cblas_strsm: Level 3 CBLAS Functions. ! * cblas_strsv: Level 2 CBLAS Functions. ! * cblas_xerbla: Level 3 CBLAS Functions. ! * cblas_zaxpy: Level 1 CBLAS Functions. ! * cblas_zcopy: Level 1 CBLAS Functions. ! * cblas_zdotc_sub: Level 1 CBLAS Functions. ! * cblas_zdotu_sub: Level 1 CBLAS Functions. ! * cblas_zdscal: Level 1 CBLAS Functions. ! * cblas_zgbmv: Level 2 CBLAS Functions. ! * cblas_zgemm: Level 3 CBLAS Functions. ! * cblas_zgemv: Level 2 CBLAS Functions. ! * cblas_zgerc: Level 2 CBLAS Functions. ! * cblas_zgeru: Level 2 CBLAS Functions. ! * cblas_zhbmv: Level 2 CBLAS Functions. ! * cblas_zhemm: Level 3 CBLAS Functions. ! * cblas_zhemv: Level 2 CBLAS Functions. ! * cblas_zher: Level 2 CBLAS Functions. ! * cblas_zher2: Level 2 CBLAS Functions. ! * cblas_zher2k: Level 3 CBLAS Functions. ! * cblas_zherk: Level 3 CBLAS Functions. ! * cblas_zhpmv: Level 2 CBLAS Functions. ! * cblas_zhpr: Level 2 CBLAS Functions. ! * cblas_zhpr2: Level 2 CBLAS Functions. ! * cblas_zscal: Level 1 CBLAS Functions. ! * cblas_zswap: Level 1 CBLAS Functions. ! * cblas_zsymm: Level 3 CBLAS Functions. ! * cblas_zsyr2k: Level 3 CBLAS Functions. ! * cblas_zsyrk: Level 3 CBLAS Functions. ! * cblas_ztbmv: Level 2 CBLAS Functions. ! * cblas_ztbsv: Level 2 CBLAS Functions. ! * cblas_ztpmv: Level 2 CBLAS Functions. ! * cblas_ztpsv: Level 2 CBLAS Functions. ! * cblas_ztrmm: Level 3 CBLAS Functions. ! * cblas_ztrmv: Level 2 CBLAS Functions. ! * cblas_ztrsm: Level 3 CBLAS Functions. ! * cblas_ztrsv: Level 2 CBLAS Functions. ! * gsl_acosh: Elementary Functions. ! * gsl_asinh: Elementary Functions. ! * gsl_atanh: Elementary Functions. ! * gsl_blas_caxpy: Level 1 GSL BLAS Interface. ! * gsl_blas_ccopy: Level 1 GSL BLAS Interface. ! * gsl_blas_cdotc: Level 1 GSL BLAS Interface. ! * gsl_blas_cdotu: Level 1 GSL BLAS Interface. ! * gsl_blas_cgemm: Level 3 GSL BLAS Interface. ! * gsl_blas_cgemv: Level 2 GSL BLAS Interface. ! * gsl_blas_cgerc: Level 2 GSL BLAS Interface. ! * gsl_blas_cgeru: Level 2 GSL BLAS Interface. ! * gsl_blas_chemm: Level 3 GSL BLAS Interface. ! * gsl_blas_chemv: Level 2 GSL BLAS Interface. ! * gsl_blas_cher: Level 2 GSL BLAS Interface. ! * gsl_blas_cher2: Level 2 GSL BLAS Interface. ! * gsl_blas_cher2k: Level 3 GSL BLAS Interface. ! * gsl_blas_cherk: Level 3 GSL BLAS Interface. ! * gsl_blas_cscal: Level 1 GSL BLAS Interface. ! * gsl_blas_csscal: Level 1 GSL BLAS Interface. ! * gsl_blas_cswap: Level 1 GSL BLAS Interface. ! * gsl_blas_csymm: Level 3 GSL BLAS Interface. ! * gsl_blas_csyr2k: Level 3 GSL BLAS Interface. ! * gsl_blas_csyrk: Level 3 GSL BLAS Interface. ! * gsl_blas_ctrmm: Level 3 GSL BLAS Interface. ! * gsl_blas_ctrmv: Level 2 GSL BLAS Interface. ! * gsl_blas_ctrsm: Level 3 GSL BLAS Interface. ! * gsl_blas_ctrsv: Level 2 GSL BLAS Interface. ! * gsl_blas_dasum: Level 1 GSL BLAS Interface. ! * gsl_blas_daxpy: Level 1 GSL BLAS Interface. ! * gsl_blas_dcopy: Level 1 GSL BLAS Interface. ! * gsl_blas_ddot: Level 1 GSL BLAS Interface. ! * gsl_blas_dgemm: Level 3 GSL BLAS Interface. ! * gsl_blas_dgemv: Level 2 GSL BLAS Interface. ! * gsl_blas_dger: Level 2 GSL BLAS Interface. ! * gsl_blas_dnrm2: Level 1 GSL BLAS Interface. ! * gsl_blas_drot: Level 1 GSL BLAS Interface. ! * gsl_blas_drotg: Level 1 GSL BLAS Interface. ! * gsl_blas_drotm: Level 1 GSL BLAS Interface. ! * gsl_blas_drotmg: Level 1 GSL BLAS Interface. ! * gsl_blas_dscal: Level 1 GSL BLAS Interface. ! * gsl_blas_dsdot: Level 1 GSL BLAS Interface. ! * gsl_blas_dswap: Level 1 GSL BLAS Interface. ! * gsl_blas_dsymm: Level 3 GSL BLAS Interface. ! * gsl_blas_dsymv: Level 2 GSL BLAS Interface. ! * gsl_blas_dsyr: Level 2 GSL BLAS Interface. ! * gsl_blas_dsyr2: Level 2 GSL BLAS Interface. ! * gsl_blas_dsyr2k: Level 3 GSL BLAS Interface. ! * gsl_blas_dsyrk: Level 3 GSL BLAS Interface. ! * gsl_blas_dtrmm: Level 3 GSL BLAS Interface. ! * gsl_blas_dtrmv: Level 2 GSL BLAS Interface. ! * gsl_blas_dtrsm: Level 3 GSL BLAS Interface. ! * gsl_blas_dtrsv: Level 2 GSL BLAS Interface. ! * gsl_blas_dzasum: Level 1 GSL BLAS Interface. ! * gsl_blas_dznrm2: Level 1 GSL BLAS Interface. ! * gsl_blas_icamax: Level 1 GSL BLAS Interface. ! * gsl_blas_idamax: Level 1 GSL BLAS Interface. ! * gsl_blas_isamax: Level 1 GSL BLAS Interface. ! * gsl_blas_izamax: Level 1 GSL BLAS Interface. ! * gsl_blas_sasum: Level 1 GSL BLAS Interface. ! * gsl_blas_saxpy: Level 1 GSL BLAS Interface. ! * gsl_blas_scasum: Level 1 GSL BLAS Interface. ! * gsl_blas_scnrm2: Level 1 GSL BLAS Interface. ! * gsl_blas_scopy: Level 1 GSL BLAS Interface. ! * gsl_blas_sdot: Level 1 GSL BLAS Interface. ! * gsl_blas_sdsdot: Level 1 GSL BLAS Interface. ! * gsl_blas_sgemm: Level 3 GSL BLAS Interface. ! * gsl_blas_sgemv: Level 2 GSL BLAS Interface. ! * gsl_blas_sger: Level 2 GSL BLAS Interface. ! * gsl_blas_snrm2: Level 1 GSL BLAS Interface. ! * gsl_blas_srot: Level 1 GSL BLAS Interface. ! * gsl_blas_srotg: Level 1 GSL BLAS Interface. ! * gsl_blas_srotm: Level 1 GSL BLAS Interface. ! * gsl_blas_srotmg: Level 1 GSL BLAS Interface. ! * gsl_blas_sscal: Level 1 GSL BLAS Interface. ! * gsl_blas_sswap: Level 1 GSL BLAS Interface. ! * gsl_blas_ssymm: Level 3 GSL BLAS Interface. ! * gsl_blas_ssymv: Level 2 GSL BLAS Interface. ! * gsl_blas_ssyr: Level 2 GSL BLAS Interface. ! * gsl_blas_ssyr2: Level 2 GSL BLAS Interface. ! * gsl_blas_ssyr2k: Level 3 GSL BLAS Interface. ! * gsl_blas_ssyrk: Level 3 GSL BLAS Interface. ! * gsl_blas_strmm: Level 3 GSL BLAS Interface. ! * gsl_blas_strmv: Level 2 GSL BLAS Interface. ! * gsl_blas_strsm: Level 3 GSL BLAS Interface. ! * gsl_blas_strsv: Level 2 GSL BLAS Interface. ! * gsl_blas_zaxpy: Level 1 GSL BLAS Interface. ! * gsl_blas_zcopy: Level 1 GSL BLAS Interface. ! * gsl_blas_zdotc: Level 1 GSL BLAS Interface. ! * gsl_blas_zdotu: Level 1 GSL BLAS Interface. ! * gsl_blas_zdscal: Level 1 GSL BLAS Interface. ! * gsl_blas_zgemm: Level 3 GSL BLAS Interface. ! * gsl_blas_zgemv: Level 2 GSL BLAS Interface. ! * gsl_blas_zgerc: Level 2 GSL BLAS Interface. ! * gsl_blas_zgeru: Level 2 GSL BLAS Interface. ! * gsl_blas_zhemm: Level 3 GSL BLAS Interface. ! * gsl_blas_zhemv: Level 2 GSL BLAS Interface. ! * gsl_blas_zher: Level 2 GSL BLAS Interface. ! * gsl_blas_zher2: Level 2 GSL BLAS Interface. ! * gsl_blas_zher2k: Level 3 GSL BLAS Interface. ! * gsl_blas_zherk: Level 3 GSL BLAS Interface. ! * gsl_blas_zscal: Level 1 GSL BLAS Interface. ! * gsl_blas_zswap: Level 1 GSL BLAS Interface. ! * gsl_blas_zsymm: Level 3 GSL BLAS Interface. ! * gsl_blas_zsyr2k: Level 3 GSL BLAS Interface. ! * gsl_blas_zsyrk: Level 3 GSL BLAS Interface. ! * gsl_blas_ztrmm: Level 3 GSL BLAS Interface. ! * gsl_blas_ztrmv: Level 2 GSL BLAS Interface. ! * gsl_blas_ztrsm: Level 3 GSL BLAS Interface. ! * gsl_blas_ztrsv: Level 2 GSL BLAS Interface. ! * gsl_block_alloc: Block allocation. ! * gsl_block_calloc: Block allocation. ! * gsl_block_fprintf: Reading and writing blocks. ! * gsl_block_fread: Reading and writing blocks. ! * gsl_block_free: Block allocation. ! * gsl_block_fscanf: Reading and writing blocks. ! * gsl_block_fwrite: Reading and writing blocks. ! * gsl_cdf_beta_P: The Beta Distribution. ! * gsl_cdf_beta_Q: The Beta Distribution. ! * gsl_cdf_cauchy_P: The Cauchy Distribution. ! * gsl_cdf_cauchy_Pinv: The Cauchy Distribution. ! * gsl_cdf_cauchy_Q: The Cauchy Distribution. ! * gsl_cdf_cauchy_Qinv: The Cauchy Distribution. ! * gsl_cdf_chisq_P: The Chi-squared Distribution. ! * gsl_cdf_chisq_Pinv: The Chi-squared Distribution. ! * gsl_cdf_chisq_Q: The Chi-squared Distribution. ! * gsl_cdf_chisq_Qinv: The Chi-squared Distribution. ! * gsl_cdf_exponential_P: The Exponential Distribution. ! * gsl_cdf_exponential_Pinv: The Exponential Distribution. ! * gsl_cdf_exponential_Q: The Exponential Distribution. ! * gsl_cdf_exponential_Qinv: The Exponential Distribution. ! * gsl_cdf_Fdist_P: The F-distribution. ! * gsl_cdf_Fdist_Q: The F-distribution. ! * gsl_cdf_flat_P: The Flat (Uniform) Distribution. ! * gsl_cdf_flat_Pinv: The Flat (Uniform) Distribution. ! * gsl_cdf_flat_Q: The Flat (Uniform) Distribution. ! * gsl_cdf_flat_Qinv: The Flat (Uniform) Distribution. ! * gsl_cdf_gamma_P: The Gamma Distribution. ! * gsl_cdf_gamma_Pinv: The Gamma Distribution. ! * gsl_cdf_gamma_Q: The Gamma Distribution. ! * gsl_cdf_gamma_Qinv: The Gamma Distribution. ! * gsl_cdf_gaussian_P: The Gaussian Distribution. ! * gsl_cdf_gaussian_Pinv: The Gaussian Distribution. ! * gsl_cdf_gaussian_Q: The Gaussian Distribution. ! * gsl_cdf_gaussian_Qinv: The Gaussian Distribution. ! * gsl_cdf_gumbel1_P: The Type-1 Gumbel Distribution. ! * gsl_cdf_gumbel1_Pinv: The Type-1 Gumbel Distribution. ! * gsl_cdf_gumbel1_Q: The Type-1 Gumbel Distribution. ! * gsl_cdf_gumbel1_Qinv: The Type-1 Gumbel Distribution. ! * gsl_cdf_gumbel2_P: The Type-2 Gumbel Distribution. ! * gsl_cdf_gumbel2_Pinv: The Type-2 Gumbel Distribution. ! * gsl_cdf_gumbel2_Q: The Type-2 Gumbel Distribution. ! * gsl_cdf_gumbel2_Qinv: The Type-2 Gumbel Distribution. ! * gsl_cdf_laplace_P: The Laplace Distribution. ! * gsl_cdf_laplace_Pinv: The Laplace Distribution. ! * gsl_cdf_laplace_Q: The Laplace Distribution. ! * gsl_cdf_laplace_Qinv: The Laplace Distribution. ! * gsl_cdf_logistic_P: The Logistic Distribution. ! * gsl_cdf_logistic_Pinv: The Logistic Distribution. ! * gsl_cdf_logistic_Q: The Logistic Distribution. ! * gsl_cdf_logistic_Qinv: The Logistic Distribution. ! * gsl_cdf_lognormal_P: The Lognormal Distribution. ! * gsl_cdf_lognormal_Pinv: The Lognormal Distribution. ! * gsl_cdf_lognormal_Q: The Lognormal Distribution. ! * gsl_cdf_lognormal_Qinv: The Lognormal Distribution. ! * gsl_cdf_pareto_P: The Pareto Distribution. ! * gsl_cdf_pareto_Pinv: The Pareto Distribution. ! * gsl_cdf_pareto_Q: The Pareto Distribution. ! * gsl_cdf_pareto_Qinv: The Pareto Distribution. ! * gsl_cdf_rayleigh_P: The Rayleigh Distribution. ! * gsl_cdf_rayleigh_Pinv: The Rayleigh Distribution. ! * gsl_cdf_rayleigh_Q: The Rayleigh Distribution. ! * gsl_cdf_rayleigh_Qinv: The Rayleigh Distribution. ! * gsl_cdf_tdist_P: The t-distribution. ! * gsl_cdf_tdist_Pinv: The t-distribution. ! * gsl_cdf_tdist_Q: The t-distribution. ! * gsl_cdf_tdist_Qinv: The t-distribution. ! * gsl_cdf_ugaussian_P: The Gaussian Distribution. ! * gsl_cdf_ugaussian_Pinv: The Gaussian Distribution. ! * gsl_cdf_ugaussian_Q: The Gaussian Distribution. ! * gsl_cdf_ugaussian_Qinv: The Gaussian Distribution. ! * gsl_cdf_weibull_P: The Weibull Distribution. ! * gsl_cdf_weibull_Pinv: The Weibull Distribution. ! * gsl_cdf_weibull_Q: The Weibull Distribution. ! * gsl_cdf_weibull_Qinv: The Weibull Distribution. ! * gsl_cheb_alloc: Creation and Calculation of Chebyshev Series. ! * gsl_cheb_calc_deriv: Derivatives and Integrals. ! * gsl_cheb_calc_integ: Derivatives and Integrals. ! * gsl_cheb_eval: Chebyshev Series Evaluation. ! * gsl_cheb_eval_err: Chebyshev Series Evaluation. ! * gsl_cheb_eval_n: Chebyshev Series Evaluation. ! * gsl_cheb_eval_n_err: Chebyshev Series Evaluation. ! * gsl_cheb_free: Creation and Calculation of Chebyshev Series. ! * gsl_cheb_init: Creation and Calculation of Chebyshev Series. ! * gsl_combination_alloc: Combination allocation. ! * gsl_combination_calloc: Combination allocation. ! * gsl_combination_data: Combination properties. ! * gsl_combination_fprintf: Reading and writing combinations. ! * gsl_combination_fread: Reading and writing combinations. ! * gsl_combination_free: Combination allocation. ! * gsl_combination_fscanf: Reading and writing combinations. ! * gsl_combination_fwrite: Reading and writing combinations. ! * gsl_combination_get: Accessing combination elements. ! * gsl_combination_init_first: Combination allocation. ! * gsl_combination_init_last: Combination allocation. ! * gsl_combination_k: Combination properties. ! * gsl_combination_memcpy: Combination allocation. ! * gsl_combination_n: Combination properties. ! * gsl_combination_next: Combination functions. ! * gsl_combination_prev: Combination functions. ! * gsl_combination_valid: Combination properties. ! * gsl_complex_abs: Properties of complex numbers. ! * gsl_complex_abs2: Properties of complex numbers. ! * gsl_complex_add: Complex arithmetic operators. ! * gsl_complex_add_imag: Complex arithmetic operators. ! * gsl_complex_add_real: Complex arithmetic operators. ! * gsl_complex_arccos: Inverse Complex Trigonometric Functions. ! * gsl_complex_arccos_real: Inverse Complex Trigonometric Functions. ! * gsl_complex_arccosh: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arccosh_real: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arccot: Inverse Complex Trigonometric Functions. ! * gsl_complex_arccoth: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arccsc: Inverse Complex Trigonometric Functions. ! * gsl_complex_arccsc_real: Inverse Complex Trigonometric Functions. ! * gsl_complex_arccsch: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arcsec: Inverse Complex Trigonometric Functions. ! * gsl_complex_arcsec_real: Inverse Complex Trigonometric Functions. ! * gsl_complex_arcsech: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arcsin: Inverse Complex Trigonometric Functions. ! * gsl_complex_arcsin_real: Inverse Complex Trigonometric Functions. ! * gsl_complex_arcsinh: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arctan: Inverse Complex Trigonometric Functions. ! * gsl_complex_arctanh: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arctanh_real: Inverse Complex Hyperbolic Functions. ! * gsl_complex_arg: Properties of complex numbers. ! * gsl_complex_conjugate: Complex arithmetic operators. ! * gsl_complex_cos: Complex Trigonometric Functions. ! * gsl_complex_cosh: Complex Hyperbolic Functions. ! * gsl_complex_cot: Complex Trigonometric Functions. ! * gsl_complex_coth: Complex Hyperbolic Functions. ! * gsl_complex_csc: Complex Trigonometric Functions. ! * gsl_complex_csch: Complex Hyperbolic Functions. ! * gsl_complex_div: Complex arithmetic operators. ! * gsl_complex_div_imag: Complex arithmetic operators. ! * gsl_complex_div_real: Complex arithmetic operators. ! * gsl_complex_exp: Elementary Complex Functions. ! * gsl_complex_inverse: Complex arithmetic operators. ! * gsl_complex_linalg_LU_invert: LU Decomposition. ! * gsl_complex_log: Elementary Complex Functions. ! * gsl_complex_log10: Elementary Complex Functions. ! * gsl_complex_log_b: Elementary Complex Functions. ! * gsl_complex_logabs: Properties of complex numbers. ! * gsl_complex_mul: Complex arithmetic operators. ! * gsl_complex_mul_imag: Complex arithmetic operators. ! * gsl_complex_mul_real: Complex arithmetic operators. ! * gsl_complex_negative: Complex arithmetic operators. ! * gsl_complex_polar: Complex numbers. ! * gsl_complex_pow: Elementary Complex Functions. ! * gsl_complex_pow_real: Elementary Complex Functions. ! * gsl_complex_rect: Complex numbers. ! * gsl_complex_sec: Complex Trigonometric Functions. ! * gsl_complex_sech: Complex Hyperbolic Functions. ! * gsl_complex_sin: Complex Trigonometric Functions. ! * gsl_complex_sinh: Complex Hyperbolic Functions. ! * gsl_complex_sqrt: Elementary Complex Functions. ! * gsl_complex_sqrt_real: Elementary Complex Functions. ! * gsl_complex_sub: Complex arithmetic operators. ! * gsl_complex_sub_imag: Complex arithmetic operators. ! * gsl_complex_sub_real: Complex arithmetic operators. ! * gsl_complex_tan: Complex Trigonometric Functions. ! * gsl_complex_tanh: Complex Hyperbolic Functions. ! * gsl_dht_alloc: Discrete Hankel Transform Functions. ! * gsl_dht_apply: Discrete Hankel Transform Functions. ! * gsl_dht_free: Discrete Hankel Transform Functions. ! * gsl_dht_init: Discrete Hankel Transform Functions. ! * gsl_dht_k_sample: Discrete Hankel Transform Functions. ! * gsl_dht_new: Discrete Hankel Transform Functions. ! * gsl_dht_x_sample: Discrete Hankel Transform Functions. ! * gsl_diff_backward: Numerical Differentiation functions. ! * gsl_diff_central: Numerical Differentiation functions. ! * gsl_diff_forward: Numerical Differentiation functions. ! * GSL_EDOM: Error Codes. ! * gsl_eigen_herm: Complex Hermitian Matrices. ! * gsl_eigen_herm_alloc: Complex Hermitian Matrices. ! * gsl_eigen_herm_free: Complex Hermitian Matrices. ! * gsl_eigen_hermv: Complex Hermitian Matrices. ! * gsl_eigen_hermv_alloc: Complex Hermitian Matrices. ! * gsl_eigen_hermv_free: Complex Hermitian Matrices. ! * gsl_eigen_hermv_sort: Sorting Eigenvalues and Eigenvectors. ! * gsl_eigen_symm: Real Symmetric Matrices. ! * gsl_eigen_symm_alloc: Real Symmetric Matrices. ! * gsl_eigen_symm_free: Real Symmetric Matrices. ! * gsl_eigen_symmv: Real Symmetric Matrices. ! * gsl_eigen_symmv_alloc: Real Symmetric Matrices. ! * gsl_eigen_symmv_free: Real Symmetric Matrices. ! * gsl_eigen_symmv_sort: Sorting Eigenvalues and Eigenvectors. ! * GSL_EINVAL: Error Codes. ! * GSL_ENOMEM: Error Codes. ! * GSL_ERANGE: Error Codes. ! * GSL_ERROR: Using GSL error reporting in your own functions. ! * GSL_ERROR_VAL: Using GSL error reporting in your own functions. ! * gsl_expm1: Elementary Functions. ! * gsl_fcmp: Approximate Comparison of Floating Point Numbers. ! * gsl_fft_complex_backward: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_forward: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_inverse: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_radix2_backward: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_dif_backward: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_dif_forward: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_dif_inverse: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_dif_transform: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_forward: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_inverse: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_radix2_transform: Radix-2 FFT routines for complex data. ! * gsl_fft_complex_transform: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_wavetable_alloc: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_wavetable_free: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_workspace_alloc: Mixed-radix FFT routines for complex data. ! * gsl_fft_complex_workspace_free: Mixed-radix FFT routines for complex data. ! * gsl_fft_halfcomplex_radix2_backward: Radix-2 FFT routines for real data. ! * gsl_fft_halfcomplex_radix2_inverse: Radix-2 FFT routines for real data. ! * gsl_fft_halfcomplex_transform: Mixed-radix FFT routines for real data. ! * gsl_fft_halfcomplex_unpack: Mixed-radix FFT routines for real data. ! * gsl_fft_halfcomplex_wavetable_alloc: Mixed-radix FFT routines for real data. ! * gsl_fft_halfcomplex_wavetable_free: Mixed-radix FFT routines for real data. ! * gsl_fft_real_radix2_transform: Radix-2 FFT routines for real data. ! * gsl_fft_real_transform: Mixed-radix FFT routines for real data. ! * gsl_fft_real_unpack: Mixed-radix FFT routines for real data. ! * gsl_fft_real_wavetable_alloc: Mixed-radix FFT routines for real data. ! * gsl_fft_real_wavetable_free: Mixed-radix FFT routines for real data. ! * gsl_fft_real_workspace_alloc: Mixed-radix FFT routines for real data. ! * gsl_fft_real_workspace_free: Mixed-radix FFT routines for real data. ! * gsl_finite: Infinities and Not-a-number. ! * gsl_fit_linear: Linear regression. ! * gsl_fit_linear_est: Linear regression. ! * gsl_fit_mul: Linear fitting without a constant term. ! * gsl_fit_mul_est: Linear fitting without a constant term. ! * gsl_fit_wlinear: Linear regression. ! * gsl_fit_wmul: Linear fitting without a constant term. ! * gsl_frexp: Elementary Functions. ! * gsl_heapsort: Sorting objects. ! * gsl_heapsort_index: Sorting objects. ! * gsl_histogram2d_accumulate: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_add: 2D Histogram Operations. ! * gsl_histogram2d_alloc: 2D Histogram allocation. ! * gsl_histogram2d_clone: Copying 2D Histograms. ! * gsl_histogram2d_cov: 2D Histogram Statistics. ! * gsl_histogram2d_div: 2D Histogram Operations. ! * gsl_histogram2d_equal_bins_p: 2D Histogram Operations. ! * gsl_histogram2d_find: Searching 2D histogram ranges. ! * gsl_histogram2d_fprintf: Reading and writing 2D histograms. ! * gsl_histogram2d_fread: Reading and writing 2D histograms. ! * gsl_histogram2d_free: 2D Histogram allocation. ! * gsl_histogram2d_fscanf: Reading and writing 2D histograms. ! * gsl_histogram2d_fwrite: Reading and writing 2D histograms. ! * gsl_histogram2d_get: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_get_xrange: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_get_yrange: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_increment: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_max_bin: 2D Histogram Statistics. ! * gsl_histogram2d_max_val: 2D Histogram Statistics. ! * gsl_histogram2d_memcpy: Copying 2D Histograms. ! * gsl_histogram2d_min_bin: 2D Histogram Statistics. ! * gsl_histogram2d_min_val: 2D Histogram Statistics. ! * gsl_histogram2d_mul: 2D Histogram Operations. ! * gsl_histogram2d_nx: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_ny: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_pdf_alloc: Resampling from 2D histograms. ! * gsl_histogram2d_pdf_free: Resampling from 2D histograms. ! * gsl_histogram2d_pdf_init: Resampling from 2D histograms. ! * gsl_histogram2d_pdf_sample: Resampling from 2D histograms. ! * gsl_histogram2d_reset: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_scale: 2D Histogram Operations. ! * gsl_histogram2d_set_ranges: 2D Histogram allocation. ! * gsl_histogram2d_set_ranges_uniform: 2D Histogram allocation. ! * gsl_histogram2d_shift: 2D Histogram Operations. ! * gsl_histogram2d_sub: 2D Histogram Operations. ! * gsl_histogram2d_sum: 2D Histogram Statistics. ! * gsl_histogram2d_xmax: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_xmean: 2D Histogram Statistics. ! * gsl_histogram2d_xmin: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_xsigma: 2D Histogram Statistics. ! * gsl_histogram2d_ymax: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_ymean: 2D Histogram Statistics. ! * gsl_histogram2d_ymin: Updating and accessing 2D histogram elements. ! * gsl_histogram2d_ysigma: 2D Histogram Statistics. ! * gsl_histogram_accumulate: Updating and accessing histogram elements. ! * gsl_histogram_add: Histogram Operations. ! * gsl_histogram_alloc: Histogram allocation. ! * gsl_histogram_bins: Updating and accessing histogram elements. ! * gsl_histogram_clone: Copying Histograms. ! * gsl_histogram_div: Histogram Operations. ! * gsl_histogram_equal_bins_p: Histogram Operations. ! * gsl_histogram_find: Searching histogram ranges. ! * gsl_histogram_fprintf: Reading and writing histograms. ! * gsl_histogram_fread: Reading and writing histograms. ! * gsl_histogram_free: Histogram allocation. ! * gsl_histogram_fscanf: Reading and writing histograms. ! * gsl_histogram_fwrite: Reading and writing histograms. ! * gsl_histogram_get: Updating and accessing histogram elements. ! * gsl_histogram_get_range: Updating and accessing histogram elements. ! * gsl_histogram_increment: Updating and accessing histogram elements. ! * gsl_histogram_max: Updating and accessing histogram elements. ! * gsl_histogram_max_bin: Histogram Statistics. ! * gsl_histogram_max_val: Histogram Statistics. ! * gsl_histogram_mean: Histogram Statistics. ! * gsl_histogram_memcpy: Copying Histograms. ! * gsl_histogram_min: Updating and accessing histogram elements. ! * gsl_histogram_min_bin: Histogram Statistics. ! * gsl_histogram_min_val: Histogram Statistics. ! * gsl_histogram_mul: Histogram Operations. ! * gsl_histogram_pdf_alloc: The histogram probability distribution struct. ! * gsl_histogram_pdf_free: The histogram probability distribution struct. ! * gsl_histogram_pdf_init: The histogram probability distribution struct. ! * gsl_histogram_pdf_sample: The histogram probability distribution struct. ! * gsl_histogram_reset: Updating and accessing histogram elements. ! * gsl_histogram_scale: Histogram Operations. ! * gsl_histogram_set_ranges: Histogram allocation. ! * gsl_histogram_set_ranges_uniform: Histogram allocation. ! * gsl_histogram_shift: Histogram Operations. ! * gsl_histogram_sigma: Histogram Statistics. ! * gsl_histogram_sub: Histogram Operations. ! * gsl_histogram_sum: Histogram Statistics. ! * gsl_hypot: Elementary Functions. ! * gsl_ieee_env_setup: Setting up your IEEE environment. ! * gsl_ieee_fprintf_double: Representation of floating point numbers. ! * gsl_ieee_fprintf_float: Representation of floating point numbers. ! * gsl_ieee_printf_double: Representation of floating point numbers. ! * gsl_ieee_printf_float: Representation of floating point numbers. ! * GSL_IMAG: Complex numbers. ! * gsl_integration_qag: QAG adaptive integration. ! * gsl_integration_qagi: QAGI adaptive integration on infinite intervals. ! * gsl_integration_qagil: QAGI adaptive integration on infinite intervals. ! * gsl_integration_qagiu: QAGI adaptive integration on infinite intervals. ! * gsl_integration_qagp: QAGP adaptive integration with known singular points. ! * gsl_integration_qags: QAGS adaptive integration with singularities. ! * gsl_integration_qawc: QAWC adaptive integration for Cauchy principal values. ! * gsl_integration_qawf: QAWF adaptive integration for Fourier integrals. ! * gsl_integration_qawo: QAWO adaptive integration for oscillatory functions. ! * gsl_integration_qawo_table_alloc: QAWO adaptive integration for oscillatory functions. ! * gsl_integration_qawo_table_free: QAWO adaptive integration for oscillatory functions. ! * gsl_integration_qawo_table_set: QAWO adaptive integration for oscillatory functions. ! * gsl_integration_qawo_table_set_length: QAWO adaptive integration for oscillatory functions. ! * gsl_integration_qaws: QAWS adaptive integration for singular functions. ! * gsl_integration_qaws_table_alloc: QAWS adaptive integration for singular functions. ! * gsl_integration_qaws_table_free: QAWS adaptive integration for singular functions. ! * gsl_integration_qaws_table_set: QAWS adaptive integration for singular functions. ! * gsl_integration_qng: QNG non-adaptive Gauss-Kronrod integration. ! * gsl_integration_workspace_alloc: QAG adaptive integration. ! * gsl_integration_workspace_free: QAG adaptive integration. ! * gsl_interp_accel_alloc: Index Look-up and Acceleration. ! * gsl_interp_accel_find: Index Look-up and Acceleration. ! * gsl_interp_accel_free: Index Look-up and Acceleration. ! * gsl_interp_akima: Interpolation Types. ! * gsl_interp_akima_periodic: Interpolation Types. ! * gsl_interp_alloc: Interpolation Functions. ! * gsl_interp_bsearch: Index Look-up and Acceleration. ! * gsl_interp_cspline: Interpolation Types. ! * gsl_interp_cspline_periodic: Interpolation Types. ! * gsl_interp_eval: Evaluation of Interpolating Functions. ! * gsl_interp_eval_deriv: Evaluation of Interpolating Functions. ! * gsl_interp_eval_deriv2: Evaluation of Interpolating Functions. ! * gsl_interp_eval_deriv2_e: Evaluation of Interpolating Functions. ! * gsl_interp_eval_deriv_e: Evaluation of Interpolating Functions. ! * gsl_interp_eval_e: Evaluation of Interpolating Functions. ! * gsl_interp_eval_integ: Evaluation of Interpolating Functions. ! * gsl_interp_eval_integ_e: Evaluation of Interpolating Functions. ! * gsl_interp_free: Interpolation Functions. ! * gsl_interp_init: Interpolation Functions. ! * gsl_interp_linear: Interpolation Types. ! * gsl_interp_min_size: Interpolation Types. ! * gsl_interp_name: Interpolation Types. ! * gsl_interp_polynomial: Interpolation Types. ! * GSL_IS_EVEN: Testing for Odd and Even Numbers. ! * GSL_IS_ODD: Testing for Odd and Even Numbers. ! * gsl_isinf: Infinities and Not-a-number. ! * gsl_isnan: Infinities and Not-a-number. ! * gsl_ldexp: Elementary Functions. ! * gsl_linalg_bidiag_decomp: Bidiagonalization. ! * gsl_linalg_bidiag_unpack: Bidiagonalization. ! * gsl_linalg_bidiag_unpack2: Bidiagonalization. ! * gsl_linalg_bidiag_unpack_B: Bidiagonalization. ! * gsl_linalg_cholesky_decomp: Cholesky Decomposition. ! * gsl_linalg_cholesky_solve: Cholesky Decomposition. ! * gsl_linalg_cholesky_svx: Cholesky Decomposition. ! * gsl_linalg_complex_LU_decomp: LU Decomposition. ! * gsl_linalg_complex_LU_det: LU Decomposition. ! * gsl_linalg_complex_LU_lndet: LU Decomposition. ! * gsl_linalg_complex_LU_refine: LU Decomposition. ! * gsl_linalg_complex_LU_sgndet: LU Decomposition. ! * gsl_linalg_complex_LU_solve: LU Decomposition. ! * gsl_linalg_complex_LU_svx: LU Decomposition. ! * gsl_linalg_hermtd_decomp: Tridiagonal Decomposition of Hermitian Matrices. ! * gsl_linalg_hermtd_unpack: Tridiagonal Decomposition of Hermitian Matrices. ! * gsl_linalg_hermtd_unpack_T: Tridiagonal Decomposition of Hermitian Matrices. ! * gsl_linalg_HH_solve: Householder solver for linear systems. ! * gsl_linalg_HH_svx: Householder solver for linear systems. ! * gsl_linalg_houlsehoulder_transform: Householder Transformations. ! * gsl_linalg_householder_hm: Householder Transformations. ! * gsl_linalg_householder_hv: Householder Transformations. ! * gsl_linalg_householder_mh: Householder Transformations. ! * gsl_linalg_LU_decomp: LU Decomposition. ! * gsl_linalg_LU_det: LU Decomposition. ! * gsl_linalg_LU_invert: LU Decomposition. ! * gsl_linalg_LU_lndet: LU Decomposition. ! * gsl_linalg_LU_refine: LU Decomposition. ! * gsl_linalg_LU_sgndet: LU Decomposition. ! * gsl_linalg_LU_solve: LU Decomposition. ! * gsl_linalg_LU_svx: LU Decomposition. ! * gsl_linalg_QR_decomp: QR Decomposition. ! * gsl_linalg_QR_lssolve: QR Decomposition. ! * gsl_linalg_QR_QRsolve: QR Decomposition. ! * gsl_linalg_QR_QTvec: QR Decomposition. ! * gsl_linalg_QR_Qvec: QR Decomposition. ! * gsl_linalg_QR_Rsolve: QR Decomposition. ! * gsl_linalg_QR_Rsvx: QR Decomposition. ! * gsl_linalg_QR_solve: QR Decomposition. ! * gsl_linalg_QR_svx: QR Decomposition. ! * gsl_linalg_QR_unpack: QR Decomposition. ! * gsl_linalg_QR_update: QR Decomposition. ! * gsl_linalg_QRPT_decomp: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_decomp2: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_QRsolve: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_Rsolve: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_Rsvx: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_solve: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_svx: QR Decomposition with Column Pivoting. ! * gsl_linalg_QRPT_update: QR Decomposition with Column Pivoting. ! * gsl_linalg_R_solve: QR Decomposition. ! * gsl_linalg_R_svx: QR Decomposition. ! * gsl_linalg_solve_symm_cyc_tridiag: Tridiagonal Systems. ! * gsl_linalg_solve_symm_tridiag: Tridiagonal Systems. ! * gsl_linalg_SV_decomp: Singular Value Decomposition. ! * gsl_linalg_SV_decomp_jacobi: Singular Value Decomposition. ! * gsl_linalg_SV_decomp_mod: Singular Value Decomposition. ! * gsl_linalg_SV_solve: Singular Value Decomposition. ! * gsl_linalg_symmtd_decomp: Tridiagonal Decomposition of Real Symmetric Matrices. ! * gsl_linalg_symmtd_unpack: Tridiagonal Decomposition of Real Symmetric Matrices. ! * gsl_linalg_symmtd_unpack_T: Tridiagonal Decomposition of Real Symmetric Matrices. ! * gsl_log1p: Elementary Functions. ! * gsl_matrix_add: Matrix operations. ! * gsl_matrix_add_constant: Matrix operations. ! * gsl_matrix_alloc: Matrix allocation. ! * gsl_matrix_calloc: Matrix allocation. ! * gsl_matrix_column: Creating row and column views. ! * gsl_matrix_const_column: Creating row and column views. ! * gsl_matrix_const_diagonal: Creating row and column views. ! * gsl_matrix_const_ptr: Accessing matrix elements. ! * gsl_matrix_const_row: Creating row and column views. ! * gsl_matrix_const_subdiagonal: Creating row and column views. ! * gsl_matrix_const_submatrix: Matrix views. ! * gsl_matrix_const_superdiagonal: Creating row and column views. ! * gsl_matrix_const_view_array: Matrix views. ! * gsl_matrix_const_view_array_with_tda: Matrix views. ! * gsl_matrix_const_view_vector: Matrix views. ! * gsl_matrix_const_view_vector_with_tda: Matrix views. ! * gsl_matrix_diagonal: Creating row and column views. ! * gsl_matrix_div_elements: Matrix operations. ! * gsl_matrix_fprintf: Reading and writing matrices. ! * gsl_matrix_fread: Reading and writing matrices. ! * gsl_matrix_free: Matrix allocation. ! * gsl_matrix_fscanf: Reading and writing matrices. ! * gsl_matrix_fwrite: Reading and writing matrices. ! * gsl_matrix_get: Accessing matrix elements. ! * gsl_matrix_get_col: Copying rows and columns. ! * gsl_matrix_get_row: Copying rows and columns. ! * gsl_matrix_isnull: Matrix properties. ! * gsl_matrix_max: Finding maximum and minimum elements of matrices. ! * gsl_matrix_max_index: Finding maximum and minimum elements of matrices. ! * gsl_matrix_memcpy: Copying matrices. ! * gsl_matrix_min: Finding maximum and minimum elements of matrices. ! * gsl_matrix_min_index: Finding maximum and minimum elements of matrices. ! * gsl_matrix_minmax: Finding maximum and minimum elements of matrices. ! * gsl_matrix_minmax_index: Finding maximum and minimum elements of matrices. ! * gsl_matrix_mul_elements: Matrix operations. ! * gsl_matrix_ptr: Accessing matrix elements. ! * gsl_matrix_row: Creating row and column views. ! * gsl_matrix_scale: Matrix operations. ! * gsl_matrix_set: Accessing matrix elements. ! * gsl_matrix_set_all: Initializing matrix elements. ! * gsl_matrix_set_col: Copying rows and columns. ! * gsl_matrix_set_identity: Initializing matrix elements. ! * gsl_matrix_set_row: Copying rows and columns. ! * gsl_matrix_set_zero: Initializing matrix elements. ! * gsl_matrix_sub: Matrix operations. ! * gsl_matrix_subdiagonal: Creating row and column views. ! * gsl_matrix_submatrix: Matrix views. ! * gsl_matrix_superdiagonal: Creating row and column views. ! * gsl_matrix_swap: Copying matrices. ! * gsl_matrix_swap_columns: Exchanging rows and columns. ! * gsl_matrix_swap_rowcol: Exchanging rows and columns. ! * gsl_matrix_swap_rows: Exchanging rows and columns. ! * gsl_matrix_transpose: Exchanging rows and columns. ! * gsl_matrix_transpose_memcpy: Exchanging rows and columns. ! * gsl_matrix_view_array: Matrix views. ! * gsl_matrix_view_array_with_tda: Matrix views. ! * gsl_matrix_view_vector: Matrix views. ! * gsl_matrix_view_vector_with_tda: Matrix views. ! * GSL_MAX: Maximum and Minimum functions. ! * GSL_MAX_DBL: Maximum and Minimum functions. ! * GSL_MAX_INT: Maximum and Minimum functions. ! * GSL_MAX_LDBL: Maximum and Minimum functions. ! * GSL_MIN: Maximum and Minimum functions. ! * GSL_MIN_DBL: Maximum and Minimum functions. ! * gsl_min_fminimizer_alloc: Initializing the Minimizer. ! * gsl_min_fminimizer_brent: Minimization Algorithms. ! * gsl_min_fminimizer_f_lower: Minimization Iteration. ! * gsl_min_fminimizer_f_minimum: Minimization Iteration. ! * gsl_min_fminimizer_f_upper: Minimization Iteration. ! * gsl_min_fminimizer_free: Initializing the Minimizer. ! * gsl_min_fminimizer_goldensection: Minimization Algorithms. ! * gsl_min_fminimizer_iterate: Minimization Iteration. ! * gsl_min_fminimizer_name: Initializing the Minimizer. ! * gsl_min_fminimizer_set: Initializing the Minimizer. ! * gsl_min_fminimizer_set_with_values: Initializing the Minimizer. ! * gsl_min_fminimizer_x_lower: Minimization Iteration. ! * gsl_min_fminimizer_x_minimum: Minimization Iteration. ! * gsl_min_fminimizer_x_upper: Minimization Iteration. ! * GSL_MIN_INT: Maximum and Minimum functions. ! * GSL_MIN_LDBL: Maximum and Minimum functions. ! * gsl_min_test_interval: Minimization Stopping Parameters. ! * gsl_monte_miser_alloc: MISER. ! * gsl_monte_miser_free: MISER. ! * gsl_monte_miser_init: MISER. ! * gsl_monte_miser_integrate: MISER. ! * gsl_monte_plain_alloc: PLAIN Monte Carlo. ! * gsl_monte_plain_free: PLAIN Monte Carlo. ! * gsl_monte_plain_init: PLAIN Monte Carlo. ! * gsl_monte_plain_integrate: PLAIN Monte Carlo. ! * gsl_monte_vegas_alloc: VEGAS. ! * gsl_monte_vegas_free: VEGAS. ! * gsl_monte_vegas_init: VEGAS. ! * gsl_monte_vegas_integrate: VEGAS. ! * gsl_multifit_covar: Computing the covariance matrix of best fit parameters. ! * gsl_multifit_fdfsolver_alloc: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fdfsolver_free: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fdfsolver_iterate: Iteration of the Minimization Algorithm. ! * gsl_multifit_fdfsolver_lmder: Minimization Algorithms using Derivatives. ! * gsl_multifit_fdfsolver_lmsder: Minimization Algorithms using Derivatives. ! * gsl_multifit_fdfsolver_name: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fdfsolver_position: Iteration of the Minimization Algorithm. ! * gsl_multifit_fdfsolver_set: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fsolver_alloc: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fsolver_free: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fsolver_iterate: Iteration of the Minimization Algorithm. ! * gsl_multifit_fsolver_name: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_fsolver_position: Iteration of the Minimization Algorithm. ! * gsl_multifit_fsolver_set: Initializing the Nonlinear Least-Squares Solver. ! * gsl_multifit_gradient: Search Stopping Parameters for Minimization Algorithms. ! * gsl_multifit_linear: Multi-parameter fitting. ! * gsl_multifit_linear_alloc: Multi-parameter fitting. ! * gsl_multifit_linear_free: Multi-parameter fitting. ! * gsl_multifit_test_delta: Search Stopping Parameters for Minimization Algorithms. ! * gsl_multifit_test_gradient: Search Stopping Parameters for Minimization Algorithms. ! * gsl_multifit_wlinear: Multi-parameter fitting. ! * gsl_multimin_fdfminimizer_alloc: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fdfminimizer_conjugate_fr: Multimin Algorithms. ! * gsl_multimin_fdfminimizer_conjugate_pr: Multimin Algorithms. ! * gsl_multimin_fdfminimizer_free: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fdfminimizer_gradient: Multimin Iteration. ! * gsl_multimin_fdfminimizer_iterate: Multimin Iteration. ! * gsl_multimin_fdfminimizer_minimum: Multimin Iteration. ! * gsl_multimin_fdfminimizer_name: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fdfminimizer_restart: Multimin Iteration. ! * gsl_multimin_fdfminimizer_set: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fdfminimizer_steepest_descent: Multimin Algorithms. ! * gsl_multimin_fdfminimizer_vector_bfgs: Multimin Algorithms. ! * gsl_multimin_fdfminimizer_x: Multimin Iteration. ! * gsl_multimin_fminimizer_alloc: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fminimizer_free: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fminimizer_iterate: Multimin Iteration. ! * gsl_multimin_fminimizer_minimum: Multimin Iteration. ! * gsl_multimin_fminimizer_name: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fminimizer_nmsimplex: Multimin Algorithms. ! * gsl_multimin_fminimizer_set: Initializing the Multidimensional Minimizer. ! * gsl_multimin_fminimizer_size: Multimin Iteration. ! * gsl_multimin_fminimizer_x: Multimin Iteration. ! * gsl_multimin_test_gradient: Multimin Stopping Criteria. ! * gsl_multimin_test_size: Multimin Stopping Criteria. ! * gsl_multiroot_fdfsolver_alloc: Initializing the Multidimensional Solver. ! * gsl_multiroot_fdfsolver_dx: Iteration of the multidimensional solver. ! * gsl_multiroot_fdfsolver_f: Iteration of the multidimensional solver. ! * gsl_multiroot_fdfsolver_free: Initializing the Multidimensional Solver. ! * gsl_multiroot_fdfsolver_gnewton: Algorithms using Derivatives. ! * gsl_multiroot_fdfsolver_hybridj: Algorithms using Derivatives. ! * gsl_multiroot_fdfsolver_hybridsj: Algorithms using Derivatives. ! * gsl_multiroot_fdfsolver_iterate: Iteration of the multidimensional solver. ! * gsl_multiroot_fdfsolver_name: Initializing the Multidimensional Solver. ! * gsl_multiroot_fdfsolver_newton: Algorithms using Derivatives. ! * gsl_multiroot_fdfsolver_root: Iteration of the multidimensional solver. ! * gsl_multiroot_fdfsolver_set: Initializing the Multidimensional Solver. ! * gsl_multiroot_fsolver_alloc: Initializing the Multidimensional Solver. ! * gsl_multiroot_fsolver_broyden: Algorithms without Derivatives. ! * gsl_multiroot_fsolver_dnewton: Algorithms without Derivatives. ! * gsl_multiroot_fsolver_dx: Iteration of the multidimensional solver. ! * gsl_multiroot_fsolver_f: Iteration of the multidimensional solver. ! * gsl_multiroot_fsolver_free: Initializing the Multidimensional Solver. ! * gsl_multiroot_fsolver_hybrid: Algorithms without Derivatives. ! * gsl_multiroot_fsolver_hybrids: Algorithms without Derivatives. ! * gsl_multiroot_fsolver_iterate: Iteration of the multidimensional solver. ! * gsl_multiroot_fsolver_name: Initializing the Multidimensional Solver. ! * gsl_multiroot_fsolver_root: Iteration of the multidimensional solver. ! * gsl_multiroot_fsolver_set: Initializing the Multidimensional Solver. ! * gsl_multiroot_test_delta: Search Stopping Parameters for the multidimensional solver. ! * gsl_multiroot_test_residual: Search Stopping Parameters for the multidimensional solver. ! * GSL_NAN: Infinities and Not-a-number. ! * GSL_NEGINF: Infinities and Not-a-number. ! * gsl_ntuple_bookdata: Writing ntuples. ! * gsl_ntuple_close: Closing an ntuple file. ! * gsl_ntuple_create: Creating ntuples. ! * gsl_ntuple_open: Opening an existing ntuple file. ! * gsl_ntuple_project: Histogramming ntuple values. ! * gsl_ntuple_read: Reading ntuples. ! * gsl_ntuple_write: Writing ntuples. ! * gsl_odeiv_control_alloc: Adaptive Step-size Control. ! * gsl_odeiv_control_free: Adaptive Step-size Control. ! * gsl_odeiv_control_hadjust: Adaptive Step-size Control. ! * gsl_odeiv_control_init: Adaptive Step-size Control. ! * gsl_odeiv_control_name: Adaptive Step-size Control. ! * gsl_odeiv_control_scaled_new: Adaptive Step-size Control. ! * gsl_odeiv_control_standard_new: Adaptive Step-size Control. ! * gsl_odeiv_control_y_new: Adaptive Step-size Control. ! * gsl_odeiv_control_yp_new: Adaptive Step-size Control. ! * gsl_odeiv_evolve_alloc: Evolution. ! * gsl_odeiv_evolve_apply: Evolution. ! * gsl_odeiv_evolve_free: Evolution. ! * gsl_odeiv_evolve_reset: Evolution. ! * gsl_odeiv_step_alloc: Stepping Functions. ! * gsl_odeiv_step_apply: Stepping Functions. ! * gsl_odeiv_step_bsimp: Stepping Functions. ! * gsl_odeiv_step_free: Stepping Functions. ! * gsl_odeiv_step_gear1: Stepping Functions. ! * gsl_odeiv_step_gear2: Stepping Functions. ! * gsl_odeiv_step_name: Stepping Functions. ! * gsl_odeiv_step_order: Stepping Functions. ! * gsl_odeiv_step_reset: Stepping Functions. ! * gsl_odeiv_step_rk2: Stepping Functions. ! * gsl_odeiv_step_rk2imp: Stepping Functions. ! * gsl_odeiv_step_rk4: Stepping Functions. ! * gsl_odeiv_step_rk4imp: Stepping Functions. ! * gsl_odeiv_step_rk8pd: Stepping Functions. ! * gsl_odeiv_step_rkck: Stepping Functions. ! * gsl_odeiv_step_rkf45: Stepping Functions. ! * gsl_permutation_alloc: Permutation allocation. ! * gsl_permutation_calloc: Permutation allocation. ! * gsl_permutation_canonical_cycles: Permutations in Cyclic Form. ! * gsl_permutation_canonical_to_linear: Permutations in Cyclic Form. ! * gsl_permutation_data: Permutation properties. ! * gsl_permutation_fprintf: Reading and writing permutations. ! * gsl_permutation_fread: Reading and writing permutations. ! * gsl_permutation_free: Permutation allocation. ! * gsl_permutation_fscanf: Reading and writing permutations. ! * gsl_permutation_fwrite: Reading and writing permutations. ! * gsl_permutation_get: Accessing permutation elements. ! * gsl_permutation_init: Permutation allocation. ! * gsl_permutation_inverse: Permutation functions. ! * gsl_permutation_inversions: Permutations in Cyclic Form. ! * gsl_permutation_linear_cycles: Permutations in Cyclic Form. ! * gsl_permutation_linear_to_canonical: Permutations in Cyclic Form. ! * gsl_permutation_memcpy: Permutation allocation. ! * gsl_permutation_mul: Applying Permutations. ! * gsl_permutation_next: Permutation functions. ! * gsl_permutation_prev: Permutation functions. ! * gsl_permutation_reverse: Permutation functions. ! * gsl_permutation_size: Permutation properties. ! * gsl_permutation_swap: Accessing permutation elements. ! * gsl_permutation_valid: Permutation properties. ! * gsl_permute: Applying Permutations. ! * gsl_permute_inverse: Applying Permutations. ! * gsl_permute_vector: Applying Permutations. ! * gsl_permute_vector_inverse: Applying Permutations. ! * gsl_poly_complex_solve: General Polynomial Equations. ! * gsl_poly_complex_solve_cubic: Cubic Equations. ! * gsl_poly_complex_solve_quadratic: Quadratic Equations. ! * gsl_poly_complex_workspace_alloc: General Polynomial Equations. ! * gsl_poly_complex_workspace_free: General Polynomial Equations. ! * gsl_poly_dd_eval: Divided Difference Representation of Polynomials. ! * gsl_poly_dd_init: Divided Difference Representation of Polynomials. ! * gsl_poly_dd_taylor: Divided Difference Representation of Polynomials. ! * gsl_poly_eval: Polynomial Evaluation. ! * gsl_poly_solve_cubic: Cubic Equations. ! * gsl_poly_solve_quadratic: Quadratic Equations. ! * GSL_POSINF: Infinities and Not-a-number. ! * gsl_pow_2: Small integer powers. ! * gsl_pow_3: Small integer powers. ! * gsl_pow_4: Small integer powers. ! * gsl_pow_5: Small integer powers. ! * gsl_pow_6: Small integer powers. ! * gsl_pow_7: Small integer powers. ! * gsl_pow_8: Small integer powers. ! * gsl_pow_9: Small integer powers. ! * gsl_pow_int: Small integer powers. ! * gsl_qrng_alloc: Quasi-random number generator initialization. ! * gsl_qrng_clone: Saving and resorting quasi-random number generator state. ! * gsl_qrng_free: Quasi-random number generator initialization. ! * gsl_qrng_get: Sampling from a quasi-random number generator. ! * gsl_qrng_init: Quasi-random number generator initialization. ! * gsl_qrng_memcpy: Saving and resorting quasi-random number generator state. ! * gsl_qrng_name: Auxiliary quasi-random number generator functions. ! * gsl_qrng_niederreiter_2: Quasi-random number generator algorithms. ! * gsl_qrng_size: Auxiliary quasi-random number generator functions. ! * gsl_qrng_sobol: Quasi-random number generator algorithms. ! * gsl_qrng_state: Auxiliary quasi-random number generator functions. ! * gsl_ran_bernoulli: The Bernoulli Distribution. ! * gsl_ran_bernoulli_pdf: The Bernoulli Distribution. ! * gsl_ran_beta: The Beta Distribution. ! * gsl_ran_beta_pdf: The Beta Distribution. ! * gsl_ran_binomial: The Binomial Distribution. ! * gsl_ran_binomial_pdf: The Binomial Distribution. ! * gsl_ran_bivariate_gaussian: The Bivariate Gaussian Distribution. ! * gsl_ran_bivariate_gaussian_pdf: The Bivariate Gaussian Distribution. ! * gsl_ran_cauchy: The Cauchy Distribution. ! * gsl_ran_cauchy_pdf: The Cauchy Distribution. ! * gsl_ran_chisq: The Chi-squared Distribution. ! * gsl_ran_chisq_pdf: The Chi-squared Distribution. ! * gsl_ran_choose: Shuffling and Sampling. ! * gsl_ran_dir_2d: The Spherical Distribution (2D & 3D). ! * gsl_ran_dir_2d_trig_method: The Spherical Distribution (2D & 3D). ! * gsl_ran_dir_3d: The Spherical Distribution (2D & 3D). ! * gsl_ran_dir_nd: The Spherical Distribution (2D & 3D). ! * gsl_ran_dirichlet: The Dirichlet Distribution. ! * gsl_ran_dirichlet_lnpdf: The Dirichlet Distribution. ! * gsl_ran_dirichlet_pdf: The Dirichlet Distribution. ! * gsl_ran_discrete: General Discrete Distributions. ! * gsl_ran_discrete_free: General Discrete Distributions. ! * gsl_ran_discrete_pdf: General Discrete Distributions. ! * gsl_ran_discrete_preproc: General Discrete Distributions. ! * gsl_ran_exponential: The Exponential Distribution. ! * gsl_ran_exponential_pdf: The Exponential Distribution. ! * gsl_ran_exppow: The Exponential Power Distribution. ! * gsl_ran_exppow_pdf: The Exponential Power Distribution. ! * gsl_ran_fdist: The F-distribution. ! * gsl_ran_fdist_pdf: The F-distribution. ! * gsl_ran_flat: The Flat (Uniform) Distribution. ! * gsl_ran_flat_pdf: The Flat (Uniform) Distribution. ! * gsl_ran_gamma: The Gamma Distribution. ! * gsl_ran_gamma_pdf: The Gamma Distribution. ! * gsl_ran_gaussian: The Gaussian Distribution. ! * gsl_ran_gaussian_pdf: The Gaussian Distribution. ! * gsl_ran_gaussian_ratio_method: The Gaussian Distribution. ! * gsl_ran_gaussian_tail: The Gaussian Tail Distribution. ! * gsl_ran_gaussian_tail_pdf: The Gaussian Tail Distribution. ! * gsl_ran_geometric: The Geometric Distribution. ! * gsl_ran_geometric_pdf: The Geometric Distribution. ! * gsl_ran_gumbel1: The Type-1 Gumbel Distribution. ! * gsl_ran_gumbel1_pdf: The Type-1 Gumbel Distribution. ! * gsl_ran_gumbel2: The Type-2 Gumbel Distribution. ! * gsl_ran_gumbel2_pdf: The Type-2 Gumbel Distribution. ! * gsl_ran_hypergeometric: The Hypergeometric Distribution. ! * gsl_ran_hypergeometric_pdf: The Hypergeometric Distribution. ! * gsl_ran_landau: The Landau Distribution. ! * gsl_ran_landau_pdf: The Landau Distribution. ! * gsl_ran_laplace: The Laplace Distribution. ! * gsl_ran_laplace_pdf: The Laplace Distribution. ! * gsl_ran_levy: The Levy alpha-Stable Distributions. ! * gsl_ran_levy_skew: The Levy skew alpha-Stable Distribution. ! * gsl_ran_logarithmic: The Logarithmic Distribution. ! * gsl_ran_logarithmic_pdf: The Logarithmic Distribution. ! * gsl_ran_logistic: The Logistic Distribution. ! * gsl_ran_logistic_pdf: The Logistic Distribution. ! * gsl_ran_lognormal: The Lognormal Distribution. ! * gsl_ran_lognormal_pdf: The Lognormal Distribution. ! * gsl_ran_multinomial: The Multinomial Distribution. ! * gsl_ran_multinomial_lnpdf: The Multinomial Distribution. ! * gsl_ran_multinomial_pdf: The Multinomial Distribution. ! * gsl_ran_negative_binomial: The Negative Binomial Distribution. ! * gsl_ran_negative_binomial_pdf: The Negative Binomial Distribution. ! * gsl_ran_pareto: The Pareto Distribution. ! * gsl_ran_pareto_pdf: The Pareto Distribution. ! * gsl_ran_pascal: The Pascal Distribution. ! * gsl_ran_pascal_pdf: The Pascal Distribution. ! * gsl_ran_poisson: The Poisson Distribution. ! * gsl_ran_poisson_pdf: The Poisson Distribution. ! * gsl_ran_rayleigh: The Rayleigh Distribution. ! * gsl_ran_rayleigh_pdf: The Rayleigh Distribution. ! * gsl_ran_rayleigh_tail: The Rayleigh Tail Distribution. ! * gsl_ran_rayleigh_tail_pdf: The Rayleigh Tail Distribution. ! * gsl_ran_sample: Shuffling and Sampling. ! * gsl_ran_shuffle: Shuffling and Sampling. ! * gsl_ran_tdist: The t-distribution. ! * gsl_ran_tdist_pdf: The t-distribution. ! * gsl_ran_ugaussian: The Gaussian Distribution. ! * gsl_ran_ugaussian_pdf: The Gaussian Distribution. ! * gsl_ran_ugaussian_ratio_method: The Gaussian Distribution. ! * gsl_ran_ugaussian_tail: The Gaussian Tail Distribution. ! * gsl_ran_ugaussian_tail_pdf: The Gaussian Tail Distribution. ! * gsl_ran_weibull: The Weibull Distribution. ! * gsl_ran_weibull_pdf: The Weibull Distribution. ! * GSL_REAL: Complex numbers. ! * gsl_rng_alloc: Random number generator initialization. ! * gsl_rng_borosh13: Other random number generators. ! * gsl_rng_clone: Copying random number generator state. ! * gsl_rng_cmrg: Random number generator algorithms. ! * gsl_rng_coveyou: Other random number generators. ! * gsl_rng_env_setup: Random number environment variables. ! * gsl_rng_fishman18: Other random number generators. ! * gsl_rng_fishman20: Other random number generators. ! * gsl_rng_fishman2x: Other random number generators. ! * gsl_rng_fread: Reading and writing random number generator state. ! * gsl_rng_free: Random number generator initialization. ! * gsl_rng_fwrite: Reading and writing random number generator state. ! * gsl_rng_get: Sampling from a random number generator. ! * gsl_rng_gfsr4: Random number generator algorithms. ! * gsl_rng_knuthran: Other random number generators. ! * gsl_rng_knuthran2: Other random number generators. ! * gsl_rng_lecuyer21: Other random number generators. ! * gsl_rng_max: Auxiliary random number generator functions. ! * gsl_rng_memcpy: Copying random number generator state. ! * gsl_rng_min: Auxiliary random number generator functions. ! * gsl_rng_minstd: Other random number generators. ! * gsl_rng_mrg: Random number generator algorithms. ! * gsl_rng_mt19937: Random number generator algorithms. ! * gsl_rng_name: Auxiliary random number generator functions. ! * gsl_rng_r250: Other random number generators. ! * gsl_rng_rand: Unix random number generators. ! * gsl_rng_rand48: Unix random number generators. ! * gsl_rng_random_bsd: Unix random number generators. ! * gsl_rng_random_glibc2: Unix random number generators. ! * gsl_rng_random_libc5: Unix random number generators. ! * gsl_rng_randu: Other random number generators. ! * gsl_rng_ranf: Other random number generators. ! * gsl_rng_ranlux: Random number generator algorithms. ! * gsl_rng_ranlux389: Random number generator algorithms. ! * gsl_rng_ranlxd1: Random number generator algorithms. ! * gsl_rng_ranlxd2: Random number generator algorithms. ! * gsl_rng_ranlxs0: Random number generator algorithms. ! * gsl_rng_ranlxs1: Random number generator algorithms. ! * gsl_rng_ranlxs2: Random number generator algorithms. ! * gsl_rng_ranmar: Other random number generators. ! * gsl_rng_set: Random number generator initialization. ! * gsl_rng_size: Auxiliary random number generator functions. ! * gsl_rng_slatec: Other random number generators. ! * gsl_rng_state: Auxiliary random number generator functions. ! * gsl_rng_taus: Random number generator algorithms. ! * gsl_rng_taus2: Random number generator algorithms. ! * gsl_rng_transputer: Other random number generators. ! * gsl_rng_tt800: Other random number generators. ! * gsl_rng_types_setup: Auxiliary random number generator functions. ! * gsl_rng_uni: Other random number generators. ! * gsl_rng_uni32: Other random number generators. ! * gsl_rng_uniform: Sampling from a random number generator. ! * gsl_rng_uniform_int: Sampling from a random number generator. ! * gsl_rng_uniform_pos: Sampling from a random number generator. ! * gsl_rng_vax: Other random number generators. ! * gsl_rng_waterman14: Other random number generators. ! * gsl_rng_zuf: Other random number generators. ! * gsl_root_fdfsolver_alloc: Initializing the Solver. ! * gsl_root_fdfsolver_free: Initializing the Solver. ! * gsl_root_fdfsolver_iterate: Root Finding Iteration. ! * gsl_root_fdfsolver_name: Initializing the Solver. ! * gsl_root_fdfsolver_newton: Root Finding Algorithms using Derivatives. ! * gsl_root_fdfsolver_root: Root Finding Iteration. ! * gsl_root_fdfsolver_secant: Root Finding Algorithms using Derivatives. ! * gsl_root_fdfsolver_set: Initializing the Solver. ! * gsl_root_fdfsolver_steffenson: Root Finding Algorithms using Derivatives. ! * gsl_root_fsolver_alloc: Initializing the Solver. ! * gsl_root_fsolver_bisection: Root Bracketing Algorithms. ! * gsl_root_fsolver_brent: Root Bracketing Algorithms. ! * gsl_root_fsolver_falsepos: Root Bracketing Algorithms. ! * gsl_root_fsolver_free: Initializing the Solver. ! * gsl_root_fsolver_iterate: Root Finding Iteration. ! * gsl_root_fsolver_name: Initializing the Solver. ! * gsl_root_fsolver_root: Root Finding Iteration. ! * gsl_root_fsolver_set: Initializing the Solver. ! * gsl_root_fsolver_x_lower: Root Finding Iteration. ! * gsl_root_fsolver_x_upper: Root Finding Iteration. ! * gsl_root_test_delta: Search Stopping Parameters. ! * gsl_root_test_interval: Search Stopping Parameters. ! * gsl_root_test_residual: Search Stopping Parameters. ! * GSL_SET_COMPLEX: Complex numbers. ! * gsl_set_error_handler: Error Handlers. ! * gsl_set_error_handler_off: Error Handlers. ! * GSL_SET_IMAG: Complex numbers. ! * GSL_SET_REAL: Complex numbers. ! * gsl_sf_airy_Ai: Airy Functions. ! * gsl_sf_airy_Ai_deriv: Derivatives of Airy Functions. ! * gsl_sf_airy_Ai_deriv_e: Derivatives of Airy Functions. ! * gsl_sf_airy_Ai_deriv_scaled: Derivatives of Airy Functions. ! * gsl_sf_airy_Ai_deriv_scaled_e: Derivatives of Airy Functions. ! * gsl_sf_airy_Ai_e: Airy Functions. ! * gsl_sf_airy_Ai_scaled: Airy Functions. ! * gsl_sf_airy_Ai_scaled_e: Airy Functions. ! * gsl_sf_airy_Bi: Airy Functions. ! * gsl_sf_airy_Bi_deriv: Derivatives of Airy Functions. ! * gsl_sf_airy_Bi_deriv_e: Derivatives of Airy Functions. ! * gsl_sf_airy_Bi_deriv_scaled: Derivatives of Airy Functions. ! * gsl_sf_airy_Bi_deriv_scaled_e: Derivatives of Airy Functions. ! * gsl_sf_airy_Bi_e: Airy Functions. ! * gsl_sf_airy_Bi_scaled: Airy Functions. ! * gsl_sf_airy_Bi_scaled_e: Airy Functions. ! * gsl_sf_airy_zero_Ai: Zeros of Airy Functions. ! * gsl_sf_airy_zero_Ai_deriv: Zeros of Derivatives of Airy Functions. ! * gsl_sf_airy_zero_Ai_deriv_e: Zeros of Derivatives of Airy Functions. ! * gsl_sf_airy_zero_Ai_e: Zeros of Airy Functions. ! * gsl_sf_airy_zero_Bi: Zeros of Airy Functions. ! * gsl_sf_airy_zero_Bi_deriv: Zeros of Derivatives of Airy Functions. ! * gsl_sf_airy_zero_Bi_deriv_e: Zeros of Derivatives of Airy Functions. ! * gsl_sf_airy_zero_Bi_e: Zeros of Airy Functions. ! * gsl_sf_angle_restrict_pos: Restriction Functions. ! * gsl_sf_angle_restrict_pos_e: Restriction Functions. ! * gsl_sf_angle_restrict_symm: Restriction Functions. ! * gsl_sf_angle_restrict_symm_e: Restriction Functions. ! * gsl_sf_atanint: Arctangent Integral. ! * gsl_sf_atanint_e: Arctangent Integral. ! * gsl_sf_bessel_I0: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_I0_e: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_i0_scaled: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_I0_scaled: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_i0_scaled_e: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_I0_scaled_e: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_I1: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_I1_e: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_i1_scaled: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_I1_scaled: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_i1_scaled_e: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_I1_scaled_e: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_i2_scaled: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_i2_scaled_e: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_il_scaled: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_il_scaled_array: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_il_scaled_e: Regular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_In: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_In_array: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_In_e: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_In_scaled: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_In_scaled_array: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_In_scaled_e: Regular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Inu: Regular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Inu_e: Regular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Inu_scaled: Regular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Inu_scaled_e: Regular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_j0: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_J0: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_j0_e: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_J0_e: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_j1: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_J1: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_j1_e: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_J1_e: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_j2: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_j2_e: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_jl: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_jl_array: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_jl_e: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_jl_steed_array: Regular Spherical Bessel Functions. ! * gsl_sf_bessel_Jn: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_Jn_array: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_Jn_e: Regular Cylindrical Bessel Functions. ! * gsl_sf_bessel_Jnu: Regular Bessel Function - Fractional Order. ! * gsl_sf_bessel_Jnu_e: Regular Bessel Function - Fractional Order. ! * gsl_sf_bessel_K0: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_K0_e: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_k0_scaled: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_K0_scaled: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_k0_scaled_e: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_K0_scaled_e: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_K1: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_K1_e: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_k1_scaled: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_K1_scaled: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_k1_scaled_e: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_K1_scaled_e: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_k2_scaled: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_k2_scaled_e: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_kl_scaled: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_kl_scaled_array: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_kl_scaled_e: Irregular Modified Spherical Bessel Functions. ! * gsl_sf_bessel_Kn: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Kn_array: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Kn_e: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Kn_scaled: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Kn_scaled_array: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Kn_scaled_e: Irregular Modified Cylindrical Bessel Functions. ! * gsl_sf_bessel_Knu: Irregular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Knu_e: Irregular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Knu_scaled: Irregular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Knu_scaled_e: Irregular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_lnKnu: Irregular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_lnKnu_e: Irregular Modified Bessel Functions - Fractional Order. ! * gsl_sf_bessel_sequence_Jnu_e: Regular Bessel Function - Fractional Order. ! * gsl_sf_bessel_y0: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_Y0: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_y0_e: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_Y0_e: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_y1: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_Y1: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_y1_e: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_Y1_e: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_y2: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_y2_e: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_yl: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_yl_array: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_yl_e: Irregular Spherical Bessel Functions. ! * gsl_sf_bessel_Yn: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_Yn_array: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_Yn_e: Irregular Cylindrical Bessel Functions. ! * gsl_sf_bessel_Ynu: Irregular Bessel Functions - Fractional Order. ! * gsl_sf_bessel_Ynu_e: Irregular Bessel Functions - Fractional Order. ! * gsl_sf_bessel_zero_J0: Zeros of Regular Bessel Functions. ! * gsl_sf_bessel_zero_J0_e: Zeros of Regular Bessel Functions. ! * gsl_sf_bessel_zero_J1: Zeros of Regular Bessel Functions. ! * gsl_sf_bessel_zero_J1_e: Zeros of Regular Bessel Functions. ! * gsl_sf_bessel_zero_Jnu: Zeros of Regular Bessel Functions. ! * gsl_sf_bessel_zero_Jnu_e: Zeros of Regular Bessel Functions. ! * gsl_sf_beta: Gamma Function. ! * gsl_sf_beta_e: Gamma Function. ! * gsl_sf_beta_inc: Gamma Function. ! * gsl_sf_beta_inc_e: Gamma Function. ! * gsl_sf_Chi: Hyperbolic Integrals. ! * gsl_sf_Chi_e: Hyperbolic Integrals. ! * gsl_sf_choose: Gamma Function. ! * gsl_sf_choose_e: Gamma Function. ! * gsl_sf_Ci: Trigonometric Integrals. ! * gsl_sf_Ci_e: Trigonometric Integrals. ! * gsl_sf_clausen: Clausen Functions. ! * gsl_sf_clausen_e: Clausen Functions. ! * gsl_sf_complex_cos_e: Trigonometric Functions for Complex Arguments. ! * gsl_sf_complex_dilog_e: Complex Argument. ! * gsl_sf_complex_log_e: Logarithm and Related Functions. ! * gsl_sf_complex_logsin_e: Trigonometric Functions for Complex Arguments. ! * gsl_sf_complex_sin_e: Trigonometric Functions for Complex Arguments. ! * gsl_sf_conicalP_0: Conical Functions. ! * gsl_sf_conicalP_0_e: Conical Functions. ! * gsl_sf_conicalP_1: Conical Functions. ! * gsl_sf_conicalP_1_e: Conical Functions. ! * gsl_sf_conicalP_cyl_reg: Conical Functions. ! * gsl_sf_conicalP_cyl_reg_e: Conical Functions. ! * gsl_sf_conicalP_half: Conical Functions. ! * gsl_sf_conicalP_half_e: Conical Functions. ! * gsl_sf_conicalP_mhalf: Conical Functions. ! * gsl_sf_conicalP_mhalf_e: Conical Functions. ! * gsl_sf_conicalP_sph_reg: Conical Functions. ! * gsl_sf_conicalP_sph_reg_e: Conical Functions. ! * gsl_sf_cos: Circular Trigonometric Functions. ! * gsl_sf_cos_e: Circular Trigonometric Functions. ! * gsl_sf_cos_err: Trigonometric Functions With Error Estimates. ! * gsl_sf_cos_err_e: Trigonometric Functions With Error Estimates. ! * gsl_sf_coulomb_CL_array: Coulomb Wave Function Normalization Constant. ! * gsl_sf_coulomb_CL_e: Coulomb Wave Function Normalization Constant. ! * gsl_sf_coulomb_wave_F_array: Coulomb Wave Functions. ! * gsl_sf_coulomb_wave_FG_array: Coulomb Wave Functions. ! * gsl_sf_coulomb_wave_FG_e: Coulomb Wave Functions. ! * gsl_sf_coulomb_wave_FGp_array: Coulomb Wave Functions. ! * gsl_sf_coulomb_wave_sphF_array: Coulomb Wave Functions. ! * gsl_sf_coupling_3j: 3-j Symbols. ! * gsl_sf_coupling_3j_e: 3-j Symbols. ! * gsl_sf_coupling_6j: 6-j Symbols. ! * gsl_sf_coupling_6j_e: 6-j Symbols. ! * gsl_sf_coupling_9j: 9-j Symbols. ! * gsl_sf_coupling_9j_e: 9-j Symbols. ! * gsl_sf_dawson: Dawson Function. ! * gsl_sf_dawson_e: Dawson Function. ! * gsl_sf_debye_1: Debye Functions. ! * gsl_sf_debye_1_e: Debye Functions. ! * gsl_sf_debye_2: Debye Functions. ! * gsl_sf_debye_2_e: Debye Functions. ! * gsl_sf_debye_3: Debye Functions. ! * gsl_sf_debye_3_e: Debye Functions. ! * gsl_sf_debye_4: Debye Functions. ! * gsl_sf_debye_4_e: Debye Functions. ! * gsl_sf_dilog: Real Argument. ! * gsl_sf_dilog_e: Real Argument. ! * gsl_sf_doublefact: Gamma Function. ! * gsl_sf_doublefact_e: Gamma Function. ! * gsl_sf_ellint_D: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_D_e: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_E: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_E_e: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_Ecomp: Legendre Form of Complete Elliptic Integrals. ! * gsl_sf_ellint_Ecomp_e: Legendre Form of Complete Elliptic Integrals. ! * gsl_sf_ellint_F: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_F_e: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_Kcomp: Legendre Form of Complete Elliptic Integrals. ! * gsl_sf_ellint_Kcomp_e: Legendre Form of Complete Elliptic Integrals. ! * gsl_sf_ellint_P: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_P_e: Legendre Form of Incomplete Elliptic Integrals. ! * gsl_sf_ellint_RC: Carlson Forms. ! * gsl_sf_ellint_RC_e: Carlson Forms. ! * gsl_sf_ellint_RD: Carlson Forms. ! * gsl_sf_ellint_RD_e: Carlson Forms. ! * gsl_sf_ellint_RF: Carlson Forms. ! * gsl_sf_ellint_RF_e: Carlson Forms. ! * gsl_sf_ellint_RJ: Carlson Forms. ! * gsl_sf_ellint_RJ_e: Carlson Forms. ! * gsl_sf_elljac_e: Elliptic Functions (Jacobi). ! * gsl_sf_erf: Error Function. ! * gsl_sf_erf_e: Error Function. ! * gsl_sf_erf_Q: Probability functions. ! * gsl_sf_erf_Q_e: Probability functions. ! * gsl_sf_erf_Z: Probability functions. ! * gsl_sf_erf_Z_e: Probability functions. ! * gsl_sf_erfc: Complementary Error Function. ! * gsl_sf_erfc_e: Complementary Error Function. ! * gsl_sf_eta: Eta Function. ! * gsl_sf_eta_e: Eta Function. ! * gsl_sf_eta_int: Eta Function. ! * gsl_sf_eta_int_e: Eta Function. ! * gsl_sf_exp: Exponential Function. ! * gsl_sf_exp_e: Exponential Function. ! * gsl_sf_exp_e10_e: Exponential Function. ! * gsl_sf_exp_err_e: Exponentiation With Error Estimate. ! * gsl_sf_exp_err_e10_e: Exponentiation With Error Estimate. ! * gsl_sf_exp_mult: Exponential Function. ! * gsl_sf_exp_mult_e: Exponential Function. ! * gsl_sf_exp_mult_e10_e: Exponential Function. ! * gsl_sf_exp_mult_err_e: Exponentiation With Error Estimate. ! * gsl_sf_exp_mult_err_e10_e: Exponentiation With Error Estimate. ! * gsl_sf_expint_3: Ei_3(x). ! * gsl_sf_expint_3_e: Ei_3(x). ! * gsl_sf_expint_E1: Exponential Integral. ! * gsl_sf_expint_E1_e: Exponential Integral. ! * gsl_sf_expint_E2: Exponential Integral. ! * gsl_sf_expint_E2_e: Exponential Integral. ! * gsl_sf_expint_Ei: Ei(x). ! * gsl_sf_expint_Ei_e: Ei(x). ! * gsl_sf_expm1: Relative Exponential Functions. ! * gsl_sf_expm1_e: Relative Exponential Functions. ! * gsl_sf_exprel: Relative Exponential Functions. ! * gsl_sf_exprel_2: Relative Exponential Functions. ! * gsl_sf_exprel_2_e: Relative Exponential Functions. ! * gsl_sf_exprel_e: Relative Exponential Functions. ! * gsl_sf_exprel_n: Relative Exponential Functions. ! * gsl_sf_exprel_n_e: Relative Exponential Functions. ! * gsl_sf_fact: Gamma Function. ! * gsl_sf_fact_e: Gamma Function. ! * gsl_sf_fermi_dirac_0: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_0_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_1: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_1_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_2: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_2_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_3half: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_3half_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_half: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_half_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_inc_0: Incomplete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_inc_0_e: Incomplete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_int: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_int_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_m1: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_m1_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_mhalf: Complete Fermi-Dirac Integrals. ! * gsl_sf_fermi_dirac_mhalf_e: Complete Fermi-Dirac Integrals. ! * gsl_sf_gamma: Gamma Function. ! * gsl_sf_gamma_e: Gamma Function. ! * gsl_sf_gamma_inc: Gamma Function. ! * gsl_sf_gamma_inc_e: Gamma Function. ! * gsl_sf_gamma_inc_P: Gamma Function. ! * gsl_sf_gamma_inc_P_e: Gamma Function. ! * gsl_sf_gamma_inc_Q: Gamma Function. ! * gsl_sf_gamma_inc_Q_e: Gamma Function. ! * gsl_sf_gammainv: Gamma Function. ! * gsl_sf_gammainv_e: Gamma Function. ! * gsl_sf_gammastar: Gamma Function. ! * gsl_sf_gammastar_e: Gamma Function. ! * gsl_sf_gegenpoly_1: Gegenbauer Functions. ! * gsl_sf_gegenpoly_1_e: Gegenbauer Functions. ! * gsl_sf_gegenpoly_2: Gegenbauer Functions. ! * gsl_sf_gegenpoly_2_e: Gegenbauer Functions. ! * gsl_sf_gegenpoly_3: Gegenbauer Functions. ! * gsl_sf_gegenpoly_3_e: Gegenbauer Functions. ! * gsl_sf_gegenpoly_array: Gegenbauer Functions. ! * gsl_sf_gegenpoly_n: Gegenbauer Functions. ! * gsl_sf_gegenpoly_n_e: Gegenbauer Functions. ! * gsl_sf_hazard: Probability functions. ! * gsl_sf_hazard_e: Probability functions. ! * gsl_sf_hydrogenicR: Normalized Hydrogenic Bound States. ! * gsl_sf_hydrogenicR_1: Normalized Hydrogenic Bound States. ! * gsl_sf_hydrogenicR_1_e: Normalized Hydrogenic Bound States. ! * gsl_sf_hydrogenicR_e: Normalized Hydrogenic Bound States. ! * gsl_sf_hyperg_0F1: Hypergeometric Functions. ! * gsl_sf_hyperg_0F1_e: Hypergeometric Functions. ! * gsl_sf_hyperg_1F1: Hypergeometric Functions. ! * gsl_sf_hyperg_1F1_e: Hypergeometric Functions. ! * gsl_sf_hyperg_1F1_int: Hypergeometric Functions. ! * gsl_sf_hyperg_1F1_int_e: Hypergeometric Functions. ! * gsl_sf_hyperg_2F0: Hypergeometric Functions. ! * gsl_sf_hyperg_2F0_e: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_conj: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_conj_e: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_conj_renorm: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_conj_renorm_e: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_e: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_renorm: Hypergeometric Functions. ! * gsl_sf_hyperg_2F1_renorm_e: Hypergeometric Functions. ! * gsl_sf_hyperg_U: Hypergeometric Functions. ! * gsl_sf_hyperg_U_e: Hypergeometric Functions. ! * gsl_sf_hyperg_U_e10_e: Hypergeometric Functions. ! * gsl_sf_hyperg_U_int: Hypergeometric Functions. ! * gsl_sf_hyperg_U_int_e: Hypergeometric Functions. ! * gsl_sf_hyperg_U_int_e10_e: Hypergeometric Functions. ! * gsl_sf_hypot: Circular Trigonometric Functions. ! * gsl_sf_hypot_e: Circular Trigonometric Functions. ! * gsl_sf_hzeta: Hurwitz Zeta Function. ! * gsl_sf_hzeta_e: Hurwitz Zeta Function. ! * gsl_sf_laguerre_1: Laguerre Functions. ! * gsl_sf_laguerre_1_e: Laguerre Functions. ! * gsl_sf_laguerre_2: Laguerre Functions. ! * gsl_sf_laguerre_2_e: Laguerre Functions. ! * gsl_sf_laguerre_3: Laguerre Functions. ! * gsl_sf_laguerre_3_e: Laguerre Functions. ! * gsl_sf_laguerre_n: Laguerre Functions. ! * gsl_sf_laguerre_n_e: Laguerre Functions. ! * gsl_sf_lambert_W0: Lambert W Functions. ! * gsl_sf_lambert_W0_e: Lambert W Functions. ! * gsl_sf_lambert_Wm1: Lambert W Functions. ! * gsl_sf_lambert_Wm1_e: Lambert W Functions. ! * gsl_sf_legendre_array_size: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_legendre_H3d: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_H3d_0: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_H3d_0_e: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_H3d_1: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_H3d_1_e: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_H3d_array: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_H3d_e: Radial Functions for Hyperbolic Space. ! * gsl_sf_legendre_P1: Legendre Polynomials. ! * gsl_sf_legendre_P1_e: Legendre Polynomials. ! * gsl_sf_legendre_P2: Legendre Polynomials. ! * gsl_sf_legendre_P2_e: Legendre Polynomials. ! * gsl_sf_legendre_P3: Legendre Polynomials. ! * gsl_sf_legendre_P3_e: Legendre Polynomials. ! * gsl_sf_legendre_Pl: Legendre Polynomials. ! * gsl_sf_legendre_Pl_array: Legendre Polynomials. ! * gsl_sf_legendre_Pl_e: Legendre Polynomials. ! * gsl_sf_legendre_Plm: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_legendre_Plm_array: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_legendre_Plm_e: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_legendre_Q0: Legendre Polynomials. ! * gsl_sf_legendre_Q0_e: Legendre Polynomials. ! * gsl_sf_legendre_Q1: Legendre Polynomials. ! * gsl_sf_legendre_Q1_e: Legendre Polynomials. ! * gsl_sf_legendre_Ql: Legendre Polynomials. ! * gsl_sf_legendre_Ql_e: Legendre Polynomials. ! * gsl_sf_legendre_sphPlm: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_legendre_sphPlm_array: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_legendre_sphPlm_e: Associated Legendre Polynomials and Spherical Harmonics. ! * gsl_sf_lnbeta: Gamma Function. ! * gsl_sf_lnbeta_e: Gamma Function. ! * gsl_sf_lnchoose: Gamma Function. ! * gsl_sf_lnchoose_e: Gamma Function. ! * gsl_sf_lncosh: Hyperbolic Trigonometric Functions. ! * gsl_sf_lncosh_e: Hyperbolic Trigonometric Functions. ! * gsl_sf_lndoublefact: Gamma Function. ! * gsl_sf_lndoublefact_e: Gamma Function. ! * gsl_sf_lnfact: Gamma Function. ! * gsl_sf_lnfact_e: Gamma Function. ! * gsl_sf_lngamma: Gamma Function. ! * gsl_sf_lngamma_complex_e: Gamma Function. ! * gsl_sf_lngamma_e: Gamma Function. ! * gsl_sf_lngamma_sgn_e: Gamma Function. ! * gsl_sf_lnpoch: Gamma Function. ! * gsl_sf_lnpoch_e: Gamma Function. ! * gsl_sf_lnpoch_sgn_e: Gamma Function. ! * gsl_sf_lnsinh: Hyperbolic Trigonometric Functions. ! * gsl_sf_lnsinh_e: Hyperbolic Trigonometric Functions. ! * gsl_sf_log: Logarithm and Related Functions. ! * gsl_sf_log_1plusx: Logarithm and Related Functions. ! * gsl_sf_log_1plusx_e: Logarithm and Related Functions. ! * gsl_sf_log_1plusx_mx: Logarithm and Related Functions. ! * gsl_sf_log_1plusx_mx_e: Logarithm and Related Functions. ! * gsl_sf_log_abs: Logarithm and Related Functions. ! * gsl_sf_log_abs_e: Logarithm and Related Functions. ! * gsl_sf_log_e: Logarithm and Related Functions. ! * gsl_sf_log_erfc: Log Complementary Error Function. ! * gsl_sf_log_erfc_e: Log Complementary Error Function. ! * gsl_sf_multiply_e: Elementary Operations. ! * gsl_sf_multiply_err_e: Elementary Operations. ! * gsl_sf_poch: Gamma Function. ! * gsl_sf_poch_e: Gamma Function. ! * gsl_sf_pochrel: Gamma Function. ! * gsl_sf_pochrel_e: Gamma Function. ! * gsl_sf_polar_to_rect: Conversion Functions. ! * gsl_sf_pow_int: Power Function. ! * gsl_sf_pow_int_e: Power Function. ! * gsl_sf_psi: Digamma Function. ! * gsl_sf_psi_1_int: Trigamma Function. ! * gsl_sf_psi_1_int_e: Trigamma Function. ! * gsl_sf_psi_1piy: Digamma Function. ! * gsl_sf_psi_1piy_e: Digamma Function. ! * gsl_sf_psi_e: Digamma Function. ! * gsl_sf_psi_int: Digamma Function. ! * gsl_sf_psi_int_e: Digamma Function. ! * gsl_sf_psi_n: Polygamma Function. ! * gsl_sf_psi_n_e: Polygamma Function. ! * gsl_sf_rect_to_polar: Conversion Functions. ! * gsl_sf_Shi: Hyperbolic Integrals. ! * gsl_sf_Shi_e: Hyperbolic Integrals. ! * gsl_sf_Si: Trigonometric Integrals. ! * gsl_sf_Si_e: Trigonometric Integrals. ! * gsl_sf_sin: Circular Trigonometric Functions. ! * gsl_sf_sin_e: Circular Trigonometric Functions. ! * gsl_sf_sin_err: Trigonometric Functions With Error Estimates. ! * gsl_sf_sin_err_e: Trigonometric Functions With Error Estimates. ! * gsl_sf_sinc: Circular Trigonometric Functions. ! * gsl_sf_sinc_e: Circular Trigonometric Functions. ! * gsl_sf_synchrotron_1: Synchrotron Functions. ! * gsl_sf_synchrotron_1_e: Synchrotron Functions. ! * gsl_sf_synchrotron_2: Synchrotron Functions. ! * gsl_sf_synchrotron_2_e: Synchrotron Functions. ! * gsl_sf_taylorcoeff: Gamma Function. ! * gsl_sf_taylorcoeff_e: Gamma Function. ! * gsl_sf_transport_2: Transport Functions. ! * gsl_sf_transport_2_e: Transport Functions. ! * gsl_sf_transport_3: Transport Functions. ! * gsl_sf_transport_3_e: Transport Functions. ! * gsl_sf_transport_4: Transport Functions. ! * gsl_sf_transport_4_e: Transport Functions. ! * gsl_sf_transport_5: Transport Functions. ! * gsl_sf_transport_5_e: Transport Functions. ! * gsl_sf_zeta: Riemann Zeta Function. ! * gsl_sf_zeta_e: Riemann Zeta Function. ! * gsl_sf_zeta_int: Riemann Zeta Function. ! * gsl_sf_zeta_int_e: Riemann Zeta Function. ! * GSL_SIGN: Testing the Sign of Numbers. ! * gsl_siman_solve: Simulated Annealing functions. ! * gsl_sort: Sorting vectors. ! * gsl_sort_index: Sorting vectors. ! * gsl_sort_largest: Selecting the k smallest or largest elements. ! * gsl_sort_largest_index: Selecting the k smallest or largest elements. ! * gsl_sort_smallest: Selecting the k smallest or largest elements. ! * gsl_sort_smallest_index: Selecting the k smallest or largest elements. ! * gsl_sort_vector: Sorting vectors. ! * gsl_sort_vector_index: Sorting vectors. ! * gsl_sort_vector_largest: Selecting the k smallest or largest elements. ! * gsl_sort_vector_largest_index: Selecting the k smallest or largest elements. ! * gsl_sort_vector_smallest: Selecting the k smallest or largest elements. ! * gsl_sort_vector_smallest_index: Selecting the k smallest or largest elements. ! * gsl_spline_alloc: Higher-level Interface. ! * gsl_spline_eval: Higher-level Interface. ! * gsl_spline_eval_deriv: Higher-level Interface. ! * gsl_spline_eval_deriv2: Higher-level Interface. ! * gsl_spline_eval_deriv2_e: Higher-level Interface. ! * gsl_spline_eval_deriv_e: Higher-level Interface. ! * gsl_spline_eval_e: Higher-level Interface. ! * gsl_spline_eval_integ: Higher-level Interface. ! * gsl_spline_eval_integ_e: Higher-level Interface. ! * gsl_spline_free: Higher-level Interface. ! * gsl_spline_init: Higher-level Interface. ! * gsl_stats_absdev: Absolute deviation. ! * gsl_stats_absdev_m: Absolute deviation. ! * gsl_stats_covariance: Covariance. ! * gsl_stats_covariance_m: Covariance. ! * gsl_stats_kurtosis: Higher moments (skewness and kurtosis). ! * gsl_stats_kurtosis_m_sd: Higher moments (skewness and kurtosis). ! * gsl_stats_lag1_autocorrelation: Autocorrelation. ! * gsl_stats_lag1_autocorrelation_m: Autocorrelation. ! * gsl_stats_max: Maximum and Minimum values. ! * gsl_stats_max_index: Maximum and Minimum values. ! * gsl_stats_mean: Mean and standard deviation and variance. ! * gsl_stats_median_from_sorted_data: Median and Percentiles. ! * gsl_stats_min: Maximum and Minimum values. ! * gsl_stats_min_index: Maximum and Minimum values. ! * gsl_stats_minmax: Maximum and Minimum values. ! * gsl_stats_minmax_index: Maximum and Minimum values. ! * gsl_stats_quantile_from_sorted_data: Median and Percentiles. ! * gsl_stats_sd: Mean and standard deviation and variance. ! * gsl_stats_sd_m: Mean and standard deviation and variance. ! * gsl_stats_sd_with_fixed_mean: Mean and standard deviation and variance. ! * gsl_stats_skew: Higher moments (skewness and kurtosis). ! * gsl_stats_skew_m_sd: Higher moments (skewness and kurtosis). ! * gsl_stats_variance: Mean and standard deviation and variance. ! * gsl_stats_variance_m: Mean and standard deviation and variance. ! * gsl_stats_variance_with_fixed_mean: Mean and standard deviation and variance. ! * gsl_stats_wabsdev: Weighted Samples. ! * gsl_stats_wabsdev_m: Weighted Samples. ! * gsl_stats_wkurtosis: Weighted Samples. ! * gsl_stats_wkurtosis_m_sd: Weighted Samples. ! * gsl_stats_wmean: Weighted Samples. ! * gsl_stats_wsd: Weighted Samples. ! * gsl_stats_wsd_m: Weighted Samples. ! * gsl_stats_wsd_with_fixed_mean: Weighted Samples. ! * gsl_stats_wskew: Weighted Samples. ! * gsl_stats_wskew_m_sd: Weighted Samples. ! * gsl_stats_wvariance: Weighted Samples. ! * gsl_stats_wvariance_m: Weighted Samples. ! * gsl_stats_wvariance_with_fixed_mean: Weighted Samples. ! * gsl_strerror: Error Codes. ! * gsl_sum_levin_u_accel: Acceleration functions. ! * gsl_sum_levin_u_alloc: Acceleration functions. ! * gsl_sum_levin_u_free: Acceleration functions. ! * gsl_sum_levin_utrunc_accel: Acceleration functions without error estimation. ! * gsl_sum_levin_utrunc_alloc: Acceleration functions without error estimation. ! * gsl_sum_levin_utrunc_free: Acceleration functions without error estimation. ! * gsl_vector_add: Vector operations. ! * gsl_vector_add_constant: Vector operations. ! * gsl_vector_alloc: Vector allocation. ! * gsl_vector_calloc: Vector allocation. ! * gsl_vector_complex_const_imag: Vector views. ! * gsl_vector_complex_const_real: Vector views. ! * gsl_vector_complex_imag: Vector views. ! * gsl_vector_complex_real: Vector views. ! * gsl_vector_const_ptr: Accessing vector elements. ! * gsl_vector_const_subvector: Vector views. ! * gsl_vector_const_subvector_with_stride: Vector views. ! * gsl_vector_const_view_array: Vector views. ! * gsl_vector_const_view_array_with_stride: Vector views. ! * gsl_vector_div: Vector operations. ! * gsl_vector_fprintf: Reading and writing vectors. ! * gsl_vector_fread: Reading and writing vectors. ! * gsl_vector_free: Vector allocation. ! * gsl_vector_fscanf: Reading and writing vectors. ! * gsl_vector_fwrite: Reading and writing vectors. ! * gsl_vector_get: Accessing vector elements. ! * gsl_vector_isnull: Vector properties. ! * gsl_vector_max: Finding maximum and minimum elements of vectors. ! * gsl_vector_max_index: Finding maximum and minimum elements of vectors. ! * gsl_vector_memcpy: Copying vectors. ! * gsl_vector_min: Finding maximum and minimum elements of vectors. ! * gsl_vector_min_index: Finding maximum and minimum elements of vectors. ! * gsl_vector_minmax: Finding maximum and minimum elements of vectors. ! * gsl_vector_minmax_index: Finding maximum and minimum elements of vectors. ! * gsl_vector_mul: Vector operations. ! * gsl_vector_ptr: Accessing vector elements. ! * gsl_vector_reverse: Exchanging elements. ! * gsl_vector_scale: Vector operations. ! * gsl_vector_set: Accessing vector elements. ! * gsl_vector_set_all: Initializing vector elements. ! * gsl_vector_set_basis: Initializing vector elements. ! * gsl_vector_set_zero: Initializing vector elements. ! * gsl_vector_sub: Vector operations. ! * gsl_vector_subvector: Vector views. ! * gsl_vector_subvector_with_stride: Vector views. ! * gsl_vector_swap: Copying vectors. ! * gsl_vector_swap_elements: Exchanging elements. ! * gsl_vector_view_array: Vector views. ! * gsl_vector_view_array_with_stride: Vector views.  ! File: gsl-ref.info, Node: Variable Index, Next: Type Index, Prev: Function Index, Up: Top ! ! Variable Index ! ************** ! * Menu: ! * alpha <1>: VEGAS. ! * alpha: MISER. ! * chisq: VEGAS. ! * dither: MISER. ! * estimate_frac: MISER. ! * iterations: VEGAS. ! * min_calls: MISER. ! * min_calls_per_bisection: MISER. ! * mode: VEGAS. ! * ostream: VEGAS. ! * result: VEGAS. ! * sigma: VEGAS. ! * stage: VEGAS. ! * verbose: VEGAS.  ! File: gsl-ref.info, Node: Type Index, Next: Concept Index, Prev: Variable Index, Up: Top ! Type Index ! ********** ! * Menu: ! * gsl_error_handler_t: Error Handlers. ! * gsl_fft_complex_wavetable: Mixed-radix FFT routines for complex data. ! * gsl_function: Providing the function to solve. ! * gsl_function_fdf: Providing the function to solve. ! * gsl_histogram: The histogram struct. ! * gsl_histogram2d: The 2D histogram struct. ! * gsl_histogram2d_pdf: Resampling from 2D histograms. ! * gsl_histogram_pdf: The histogram probability distribution struct. ! * gsl_monte_function: Monte Carlo Interface. ! * gsl_multifit_function: Providing the Function to be Minimized. ! * gsl_multifit_function_fdf: Providing the Function to be Minimized. ! * gsl_multimin_function: Providing a function to minimize. ! * gsl_multimin_function_fdf: Providing a function to minimize. ! * gsl_multiroot_function: Providing the multidimensional system of equations to solve. ! * gsl_multiroot_function_fdf: Providing the multidimensional system of equations to solve. ! * gsl_odeiv_system: Defining the ODE System. ! * gsl_siman_copy_construct_t: Simulated Annealing functions. ! * gsl_siman_copy_t: Simulated Annealing functions. ! * gsl_siman_destroy_t: Simulated Annealing functions. ! * gsl_siman_Efunc_t: Simulated Annealing functions. ! * gsl_siman_metric_t: Simulated Annealing functions. ! * gsl_siman_params_t: Simulated Annealing functions. ! * gsl_siman_print_t: Simulated Annealing functions. ! * gsl_siman_step_t: Simulated Annealing functions.  ! File: gsl-ref.info, Node: Concept Index, Prev: Type Index, Up: Top ! Concept Index ! ************* ! * Menu: ! * 2D histograms: Two dimensional histograms. ! * 2D random direction vector: The Spherical Distribution (2D & 3D). ! * 3-j symbols: Coupling Coefficients. ! * 3D random direction vector: The Spherical Distribution (2D & 3D). ! * 6-j symbols: Coupling Coefficients. ! * 9-j symbols: Coupling Coefficients. ! * acceleration of series: Series Acceleration. ! * acosh: Elementary Functions. ! * Adaptive step-size control, differential equations: Adaptive Step-size Control. ! * Ai(x): Airy Functions and Derivatives. ! * Airy functions: Airy Functions and Derivatives. ! * Akima splines: Interpolation Types. ! * aliasing of arrays: Aliasing of arrays. ! * alternative optimized functions: Alternative optimized functions. ! * AMAX, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * angular reduction: Restriction Functions. ! * ANSI C, use of: Using the library. ! * Apell symbol, see Pochammer symbol: Gamma Function. ! * approximate comparison of floating point numbers: Approximate Comparison of Floating Point Numbers. ! * arctangent integral: Arctangent Integral. ! * argument of complex number: Properties of complex numbers. ! * arithmetic exceptions: Setting up your IEEE environment. ! * asinh: Elementary Functions. ! * astronomical constants: Astronomy and Astrophysics. ! * ASUM, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * atanh: Elementary Functions. ! * atomic physics, constants: Atomic and Nuclear Physics. ! * autoconf, using with GSL: Autoconf Macros. ! * AXPY, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * Bader and Deuflhard, Bulirsch-Stoer method.: Stepping Functions. ! * Basic Linear Algebra Subroutines (BLAS) <1>: GSL CBLAS Library. ! * Basic Linear Algebra Subroutines (BLAS): BLAS Support. ! * Bernoulli trial, random variates: The Bernoulli Distribution. ! * Bessel functions: Bessel Functions. ! * Bessel Functions, Fractional Order: Regular Bessel Function - Fractional Order. ! * best-fit parameters, covariance: Computing the covariance matrix of best fit parameters. ! * Beta distribution: The Beta Distribution. ! * Beta function: Gamma Function. ! * Beta function, incomplete normalized: Gamma Function. ! * BFGS conjugate gradient algorithm, minimization: Multimin Algorithms. ! * Bi(x): Airy Functions and Derivatives. ! * bias, IEEE format: Representation of floating point numbers. ! * bidiagonalization of real matrices: Bidiagonalization. ! * binning data: Histograms. ! * Binomial random variates: The Binomial Distribution. ! * bisection algorithm for finding roots: Root Bracketing Algorithms. ! * Bivariate Gaussian distribution: The Bivariate Gaussian Distribution. ! * BLAS: BLAS Support. ! * BLAS, Low-level C interface: GSL CBLAS Library. ! * blocks: Vectors and Matrices. ! * breakpoints: Using gdb. ! * brent's method for finding minima: Minimization Algorithms. ! * brent's method for finding roots: Root Bracketing Algorithms. ! * Broyden algorithm for multidimensional roots: Algorithms without Derivatives. ! * BSD random number generator: Unix random number generators. ! * BSD random number generator, rand: Unix random number generators. ! * bug-gsl mailing list: Reporting Bugs. ! * bugs, how to report: Reporting Bugs. ! * Bulirsch-Stoer method: Stepping Functions. ! * C extensions, compatible use of: Using the library. ! * C++, compatibility: Compatibility with C++. ! * Carlson forms of Elliptic integrals: Definition of Carlson Forms. ! * Cash-Karp, Runge-Kutta method: Stepping Functions. ! * Cauchy distribution: The Cauchy Distribution. ! * Cauchy principal value, by numerical quadrature: QAWC adaptive integration for Cauchy principal values. ! * CBLAS: BLAS Support. ! * CBLAS, Low-level interface: GSL CBLAS Library. ! * CDFs, cumulative distribution functions: Random Number Distributions. ! * Chebyshev series: Chebyshev Approximations. ! * Checkergcc: Accessing vector elements. ! * checking combination for validity: Combination properties. ! * checking permutation for validity: Permutation properties. ! * Chi(x): Hyperbolic Integrals. ! * Chi-squared distribution: The Chi-squared Distribution. ! * Cholesky decomposition: Cholesky Decomposition. ! * Ci(x): Trigonometric Integrals. ! * Clausen functions: Clausen Functions. ! * Clenshaw-Curtis quadrature: Numerical Integration Introduction. ! * CMRG, combined multiple recursive random number generator: Random number generator algorithms. ! * code reuse in applications: Code Reuse. ! * combinations: Combinations. ! * combinatorial factor C(m,n): Gamma Function. ! * combinatorial optimization: Simulated Annealing. ! * combinatorial searches: Simulated Annealing. ! * comparison functions, definition: Sorting objects. ! * compatibility: Using the library. ! * compiling programs, include paths: Compiling and Linking. ! * compiling programs, library paths: Compiling and Linking. ! * complementary incomplete Gamma function: Gamma Function. ! * complete Fermi-Dirac integrals: Complete Fermi-Dirac Integrals. ! * complex arithmetic: Complex arithmetic operators. ! * complex cosine function, special functions: Trigonometric Functions for Complex Arguments. ! * Complex Gamma function: Gamma Function. ! * complex hermitian matrix, eigensystem: Complex Hermitian Matrices. ! * complex log sine function, special functions: Trigonometric Functions for Complex Arguments. ! * complex numbers: Complex Numbers. ! * complex sinc function, special functions: Circular Trigonometric Functions. ! * complex sine function, special functions: Trigonometric Functions for Complex Arguments. ! * confluent hypergeometric function: Laguerre Functions. ! * confluent hypergeometric functions: Hypergeometric Functions. ! * conical functions: Legendre Functions and Spherical Harmonics. ! * Conjugate gradient algorithm, minimization: Multimin Algorithms. ! * conjugate of complex number: Complex arithmetic operators. ! * constants, fundamental: Fundamental Constants. ! * constants, mathematical -- defined as macros: Mathematical Constants. ! * constants, physical: Physical Constants. ! * constants, prefixes: Prefixes. ! * contacting the GSL developers: Further Information. ! * convergence, accelerating a series: Series Acceleration. ! * conversion of units: Physical Constants. ! * cooling schedule: Simulated Annealing algorithm. ! * COPY, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * cosine function, special functions: Circular Trigonometric Functions. ! * cosine of complex number: Complex Trigonometric Functions. ! * cost function: Simulated Annealing. ! * Coulomb wave functions: Coulomb Functions. ! * coupling coefficients: Coupling Coefficients. ! * covariance matrix, from linear regression: Linear regression. ! * covariance of best-fit parameters: Computing the covariance matrix of best fit parameters. ! * covariance, of two datasets: Covariance. ! * CRAY random number generator, RANF: Other random number generators. ! * cubic equation, solving: Cubic Equations. ! * cubic splines: Interpolation Types. ! * cumulative distribution functions (CDFs): Random Number Distributions. ! * Cylindrical Bessel Functions: Regular Cylindrical Bessel Functions. ! * Dawson function: Dawson Function. ! * debugging numerical programs: Using gdb. ! * Debye functions: Debye Functions. ! * denormalized form, IEEE format: Representation of floating point numbers. ! * derivatives, calculating numerically: Numerical Differentiation. ! * determinant of a matrix, by LU decomposition: LU Decomposition. ! * Deuflhard and Bader, Bulirsch-Stoer method.: Stepping Functions. ! * DFTs, see FFT: Fast Fourier Transforms. ! * differential equations, initial value problems: Ordinary Differential Equations. ! * differentiation of functions, numeric: Numerical Differentiation. ! * digamma function: Psi (Digamma) Function. ! * dilogarithm: Dilogarithm. ! * direction vector, random 2D: The Spherical Distribution (2D & 3D). ! * direction vector, random 3D: The Spherical Distribution (2D & 3D). ! * direction vector, random N-dimensional: The Spherical Distribution (2D & 3D). ! * Dirichlet distribution: The Dirichlet Distribution. ! * Discrete Fourier Transforms, see FFT: Fast Fourier Transforms. ! * discrete Hankel transforms: Discrete Hankel Transforms. ! * Discrete Newton algorithm for multidimensional roots: Algorithms without Derivatives. ! * Discrete random numbers: General Discrete Distributions. ! * Discrete random numbers, preprocessing: General Discrete Distributions. ! * divided differences, polynomials: Divided Difference Representation of Polynomials. ! * division by zero, IEEE exceptions: Setting up your IEEE environment. ! * DOT, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * double factorial: Gamma Function. ! * double precision, IEEE format: Representation of floating point numbers. ! * downloading GSL: Obtaining GSL. ! * e, defined as a macro: Mathematical Constants. ! * E1(x), E2(x), Ei(x): Exponential Integral. ! * eigenvalues and eigenvectors: Eigensystems. ! * elementary functions: Mathematical Functions. ! * elementary operations: Elementary Operations. ! * elliptic functions (Jacobi): Elliptic Functions (Jacobi). ! * elliptic integrals: Elliptic Integrals. ! * energy function: Simulated Annealing. ! * energy, units of: Thermal Energy and Power. ! * erf(x): Error Functions. ! * erfc(x): Error Functions. ! * error codes: Error Codes. ! * error function: Error Functions. ! * Error handlers: Error Handlers. ! * error handling: Error Handling. ! * error handling macros: Using GSL error reporting in your own functions. ! * Errors: Error Handling. ! * estimated standard deviation: Statistics. ! * estimated variance: Statistics. ! * euclidean distance function, hypot: Elementary Functions. ! * Euler's constant, defined as a macro: Mathematical Constants. ! * evaluation of polynomials: Polynomial Evaluation. ! * evaluation of polynomials, in divided difference form: Divided Difference Representation of Polynomials. ! * exceptions, IEEE arithmetic: Setting up your IEEE environment. ! * exchanging permutation elements: Accessing permutation elements. ! * exp: Exponential Functions. ! * expm1: Elementary Functions. ! * exponent, IEEE format: Representation of floating point numbers. ! * Exponential distribution: The Exponential Distribution. ! * exponential function: Exponential Functions. ! * exponential integrals: Exponential Integrals. ! * Exponential power distribution: The Exponential Power Distribution. ! * exponential, difference from 1 computed accurately: Elementary Functions. ! * exponentiation of complex number: Elementary Complex Functions. ! * F-distribution: The F-distribution. ! * factorial: Gamma Function. ! * factorization of matrices: Linear Algebra. ! * false position algorithm for finding roots: Root Bracketing Algorithms. ! * Fast Fourier Transforms, see FFT: Fast Fourier Transforms. ! * FDL, GNU Free Documentation License: GNU Free Documentation License. ! * Fehlberg method, differential equations: Stepping Functions. ! * Fermi-Dirac function: Fermi-Dirac Function. ! * FFT: Fast Fourier Transforms. ! * FFT mathematical definition: Mathematical Definitions. ! * FFT of complex data, mixed-radix algorithm: Mixed-radix FFT routines for complex data. ! * FFT of complex data, radix-2 algorithm: Radix-2 FFT routines for complex data. ! * FFT of real data: Overview of real data FFTs. ! * FFT of real data, mixed-radix algorithm: Mixed-radix FFT routines for real data. ! * FFT of real data, radix-2 algorithm: Radix-2 FFT routines for real data. ! * FFT, complex data: Overview of complex data FFTs. ! * finding minima: One dimensional Minimization. ! * finding roots: One dimensional Root-Finding. ! * finding zeros: One dimensional Root-Finding. ! * fits, multi-parameter linear: Multi-parameter fitting. ! * fitting: Least-Squares Fitting. ! * fitting, using Chebyshev polynomials: Chebyshev Approximations. ! * Fj(x), Fermi-Dirac integral: Complete Fermi-Dirac Integrals. ! * Fj(x,b), incomplete Fermi-Dirac integral: Incomplete Fermi-Dirac Integrals. ! * flat distribution: The Flat (Uniform) Distribution. ! * Fletcher-Reeves conjugate gradient algorithm, minimization: Multimin Algorithms. ! * floating point numbers, approximate comparison: Approximate Comparison of Floating Point Numbers. ! * force and energy, units of: Force and Energy. ! * Fortran range checking, equivalent in gcc: Accessing vector elements. ! * Four-tap Generalized Feedback Shift Register: Random number generator algorithms. ! * Fourier integrals, numerical: QAWF adaptive integration for Fourier integrals. ! * Fourier Transforms, see FFT: Fast Fourier Transforms. ! * Fractional Order Bessel Functions: Regular Bessel Function - Fractional Order. ! * free documentation: Free Software Needs Free Documentation. ! * free software, explanation of: GSL is Free Software. ! * frexp: Elementary Functions. ! * functions, numerical differentiation: Numerical Differentiation. ! * fundamental constants: Fundamental Constants. ! * Gamma distribution: The Gamma Distribution. ! * gamma function: Gamma Function. ! * Gauss-Kronrod quadrature: Numerical Integration Introduction. ! * Gaussian distribution: The Gaussian Distribution. ! * Gaussian distribution, bivariate: The Bivariate Gaussian Distribution. ! * Gaussian Tail distribution: The Gaussian Tail Distribution. ! * gcc extensions, range-checking: Accessing vector elements. ! * gcc warning options: GCC warning options for numerical programs. ! * gdb: Using gdb. ! * Gear method, differential equations: Stepping Functions. ! * Gegenbauer functions: Gegenbauer Functions. ! * GEMM, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * GEMV, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * general polynomial equations, solving: General Polynomial Equations. ! * Geometric random variates <1>: The Hypergeometric Distribution. ! * Geometric random variates: The Geometric Distribution. ! * GER, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * GERC, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * GERU, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * Givens Rotation, BLAS: Level 1 GSL BLAS Interface. ! * Givens Rotation, Modified, BLAS: Level 1 GSL BLAS Interface. ! * GNU General Public License: Introduction. ! * golden section algorithm for finding minima: Minimization Algorithms. ! * gsl-announce mailing list: Obtaining GSL. ! * gsl_sf_result: The gsl_sf_result struct. ! * gsl_sf_result_e10: The gsl_sf_result struct. ! * Gumbel distribution (Type 1): The Type-1 Gumbel Distribution. ! * Gumbel distribution (Type 2): The Type-2 Gumbel Distribution. ! * Hankel transforms, discrete: Discrete Hankel Transforms. ! * HAVE_INLINE: Inline functions. ! * hazard function, normal distribution: Probability functions. ! * HBOOK: Ntuple References and Further Reading. ! * header files, including: Compiling and Linking. ! * heapsort: Sorting. ! * HEMM, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * HEMV, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * HER, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * HER2, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * HER2K, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * HERK, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * hermitian matrix, complex, eigensystem: Complex Hermitian Matrices. ! * histogram statistics: Histogram Statistics. ! * histogram, from ntuple: Histogramming ntuple values. ! * histograms: Histograms. ! * histograms, random sampling from: The histogram probability distribution struct. ! * householder linear solver: Householder solver for linear systems. ! * Householder matrix: Householder Transformations. ! * Householder transformation: Householder Transformations. ! * HYBRID algorithm, unscaled without derivatives: Algorithms without Derivatives. ! * HYBRID algorithms for nonlinear systems: Algorithms using Derivatives. ! * HYBRIDJ algorithm: Algorithms using Derivatives. ! * HYBRIDS algorithm, scaled without derivatives: Algorithms without Derivatives. ! * HYBRIDSJ algorithm: Algorithms using Derivatives. ! * hydrogen atom: Coulomb Functions. ! * hyperbolic cosine, inverse: Elementary Functions. ! * hyperbolic functions, complex numbers: Complex Hyperbolic Functions. ! * hyperbolic integrals: Hyperbolic Integrals. ! * hyperbolic sine, inverse: Elementary Functions. ! * hyperbolic space: Legendre Functions and Spherical Harmonics. ! * hyperbolic tangent, inverse: Elementary Functions. ! * hypergeometric functions: Hypergeometric Functions. ! * hypot: Elementary Functions. ! * hypot function, special functions: Circular Trigonometric Functions. ! * identity permutation: Permutation allocation. ! * IEEE exceptions: Setting up your IEEE environment. ! * IEEE floating point: IEEE floating-point arithmetic. ! * IEEE format for floating point numbers: Representation of floating point numbers. ! * IEEE infinity, defined as a macro: Infinities and Not-a-number. ! * IEEE NaN, defined as a macro: Infinities and Not-a-number. ! * illumination, units of: Light and Illumination. ! * imperial units: Imperial Units. ! * importance sampling, VEGAS: VEGAS. ! * including GSL header files: Compiling and Linking. ! * incomplete Beta function, normalized: Gamma Function. ! * incomplete Fermi-Dirac integral: Incomplete Fermi-Dirac Integrals. ! * incomplete Gamma function: Gamma Function. ! * indirect sorting: Sorting objects. ! * indirect sorting, of vector elements: Sorting vectors. ! * infinity, defined as a macro: Infinities and Not-a-number. ! * infinity, IEEE format: Representation of floating point numbers. ! * initial value problems, differential equations: Ordinary Differential Equations. ! * initializing matrices: Initializing matrix elements. ! * initializing vectors: Initializing vector elements. ! * inline functions: Inline functions. ! * integer powers: Power Function. ! * integrals, exponential: Exponential Integrals. ! * integration, numerical (quadrature): Numerical Integration. ! * interpolation: Interpolation. ! * interpolation, using Chebyshev polynomials: Chebyshev Approximations. ! * inverse complex trigonometric functions: Inverse Complex Trigonometric Functions. ! * inverse cumulative distribution functions: Random Number Distributions. ! * inverse hyperbolic cosine: Elementary Functions. ! * inverse hyperbolic functions, complex numbers: Inverse Complex Hyperbolic Functions. ! * inverse hyperbolic sine: Elementary Functions. ! * inverse hyperbolic tangent: Elementary Functions. ! * inverse of a matrix, by LU decomposition: LU Decomposition. ! * inverting a permutation: Permutation functions. ! * Irregular Cylindrical Bessel Functions: Irregular Cylindrical Bessel Functions. ! * Irregular Modified Bessel Functions, Fractional Order: Irregular Modified Bessel Functions - Fractional Order. ! * Irregular Modified Cylindrical Bessel Functions: Irregular Modified Cylindrical Bessel Functions. ! * Irregular Modified Spherical Bessel Functions: Irregular Modified Spherical Bessel Functions. ! * Irregular Spherical Bessel Functions: Irregular Spherical Bessel Functions. ! * iterating through combinations: Combination functions. ! * iterating through permutations: Permutation functions. ! * iterative refinement of solutions in linear systems: LU Decomposition. ! * Jacobi elliptic functions: Elliptic Functions (Jacobi). ! * Laguerre functions: Laguerre Functions. ! * Lambert function: Lambert W Functions. ! * Landau distribution: The Landau Distribution. ! * LAPACK, recommended for linear algebra <1>: Eigensystems. ! * LAPACK, recommended for linear algebra: Linear Algebra. ! * Laplace distribution: The Laplace Distribution. ! * LD_LIBRARY_PATH: Shared Libraries. ! * ldexp: Elementary Functions. ! * leading dimension, matrices: Matrices. ! * least squares fit: Least-Squares Fitting. ! * least squares fitting, nonlinear: Nonlinear Least-Squares Fitting. ! * least-squares, covariance of best-fit parameters: Computing the covariance matrix of best fit parameters. ! * Legendre forms of elliptic integrals: Definition of Legendre Forms. ! * Legendre functions: Legendre Functions and Spherical Harmonics. ! * length, computed accurately using hypot: Elementary Functions. ! * Levenberg-Marquardt algorithms: Minimization Algorithms using Derivatives. ! * Levin u-transform: Series Acceleration. ! * Levy distribution: The Levy alpha-Stable Distributions. ! * Levy distribution, skew: The Levy skew alpha-Stable Distribution. ! * libraries, linking with: Compiling and Linking. ! * libraries, shared: Shared Libraries. ! * license of GSL: Introduction. ! * light, units of: Light and Illumination. ! * linear algebra: Linear Algebra. ! * linear algebra, BLAS: BLAS Support. ! * linear interpolation: Interpolation Types. ! * linear regression: Linear regression. ! * linear systems, refinement of solutions: LU Decomposition. ! * linear systems, solution of: LU Decomposition. ! * linking with GSL libraries: Compiling and Linking. ! * LMDER algorithm: Minimization Algorithms using Derivatives. ! * log1p: Elementary Functions. ! * logarithm and related functions: Logarithm and Related Functions. ! * logarithm of Beta function: Gamma Function. ! * logarithm of combinatorial factor C(m,n): Gamma Function. ! * logarithm of complex number: Elementary Complex Functions. ! * logarithm of cosh function, special functions: Hyperbolic Trigonometric Functions. ! * logarithm of double factorial: Gamma Function. ! * logarithm of factorial: Gamma Function. ! * logarithm of Gamma function: Gamma Function. ! * logarithm of Pochhammer symbol: Gamma Function. ! * logarithm of sinh function, special functions: Hyperbolic Trigonometric Functions. ! * logarithm of the determinant of a matrix: LU Decomposition. ! * logarithm, computed accurately near 1: Elementary Functions. ! * Logarithmic random variates: The Logarithmic Distribution. ! * Logistic distribution: The Logistic Distribution. ! * Lognormal distribution: The Lognormal Distribution. ! * long double: Long double. ! * low discrepancy sequences: Quasi-Random Sequences. ! * Low-level CBLAS: GSL CBLAS Library. ! * LU decomposition: LU Decomposition. ! * macros for mathematical constants: Mathematical Constants. ! * magnitude of complex number: Properties of complex numbers. ! * mailing list archives: Further Information. ! * mailing list for GSL announcements: Obtaining GSL. ! * mailing list, bug-gsl: Reporting Bugs. ! * mantissa, IEEE format: Representation of floating point numbers. ! * mass, units of: Mass and Weight. ! * mathematical constants, defined as macros: Mathematical Constants. ! * mathematical functions, elementary: Mathematical Functions. ! * matrices <1>: Matrices. ! * matrices: Vectors and Matrices. ! * matrices, initializing: Initializing matrix elements. ! * matrices, range-checking: Accessing matrix elements. ! * matrix determinant: LU Decomposition. ! * matrix factorization: Linear Algebra. ! * matrix inverse: LU Decomposition. ! * matrix square root, Cholesky decomposition: Cholesky Decomposition. ! * matrix, operations: BLAS Support. ! * max: Statistics. ! * maximization, see minimization: One dimensional Minimization. ! * maximum of two numbers: Maximum and Minimum functions. ! * maximum value, from histogram: Histogram Statistics. ! * mean: Statistics. ! * mean value, from histogram: Histogram Statistics. ! * Mill's ratio, inverse: Probability functions. ! * min: Statistics. ! * Minimization, BFGS conjugate gradient algorithm: Multimin Algorithms. ! * Minimization, caveats: Minimization Caveats. ! * Minimization, conjugate gradient algorithm: Multimin Algorithms. ! * minimization, multidimensional: Multidimensional Minimization. ! * minimization, one-dimensional: One dimensional Minimization. ! * minimization, overview: Minimization Overview. ! * Minimization, Polak-Ribiere algorithm: Multimin Algorithms. ! * minimization, providing a function to minimize: Providing the function to minimize. ! * Minimization, simplex algorithm: Multimin Algorithms. ! * Minimization, steepest descent algorithm: Multimin Algorithms. ! * minimization, stopping parameters: Minimization Stopping Parameters. ! * minimum finding, brent's method: Minimization Algorithms. ! * minimum finding, golden section algorithm: Minimization Algorithms. ! * minimum of two numbers: Maximum and Minimum functions. ! * minimum value, from histogram: Histogram Statistics. ! * MINPACK, minimization algorithms <1>: Minimization Algorithms using Derivatives. ! * MINPACK, minimization algorithms: Algorithms using Derivatives. ! * MISCFUN: Special Functions References and Further Reading. ! * MISER monte carlo integration: MISER. ! * Mixed-radix FFT, complex data: Mixed-radix FFT routines for complex data. ! * Mixed-radix FFT, real data: Mixed-radix FFT routines for real data. ! * Modified Bessel Functions, Fractional Order: Regular Modified Bessel Functions - Fractional Order. ! * Modified Clenshaw-Curtis quadrature: Numerical Integration Introduction. ! * Modified Cylindrical Bessel Functions: Regular Modified Cylindrical Bessel Functions. ! * Modified Givens Rotation, BLAS: Level 1 GSL BLAS Interface. ! * Modified Newton's Method for nonlinear systems: Algorithms using Derivatives. ! * Modified Spherical Bessel Functions: Regular Modified Spherical Bessel Functions. ! * Monte Carlo integration: Monte Carlo Integration. ! * MRG, multiple recursive random number generator: Random number generator algorithms. ! * MT19937 random number generator: Random number generator algorithms. ! * multi-parameter regression: Multi-parameter fitting. ! * multidimensional root finding, Broyden algorithm: Algorithms without Derivatives. ! * multidimensional root finding, overview: Overview of Multidimensional Root Finding. ! * multidimensional root finding, providing a function to solve: Providing the multidimensional system of equations to solve. ! * Multimin, caveats: Multimin Caveats. ! * Multinomial distribution: The Multinomial Distribution. ! * multiplication: Elementary Operations. ! * N-dimensional random direction vector: The Spherical Distribution (2D & 3D). ! * NaN, defined as a macro: Infinities and Not-a-number. ! * nautical units: Nautical Units. ! * Negative Binomial distribution, random variates: The Negative Binomial Distribution. ! * Nelder-Mead simplex algorithm for minimization: Multimin Algorithms. ! * Newton algorithm, discrete: Algorithms without Derivatives. ! * Newton algorithm, globally convergent: Algorithms using Derivatives. ! * Newton's Method algorithm for finding roots: Root Finding Algorithms using Derivatives. ! * Newton's Method for systems of nonlinear equations: Algorithms using Derivatives. ! * Niederreiter sequence: Quasi-Random Sequences. ! * NIST Statistical Reference Datasets: Fitting References and Further Reading. ! * non-linear equation, solutions of: One dimensional Root-Finding. ! * non-linear functions, minimization: One dimensional Minimization. ! * non-normalized incomplete Gamma function: Gamma Function. ! * nonlinear fitting, stopping parameters: Search Stopping Parameters for Minimization Algorithms. ! * nonlinear least squares fitting: Nonlinear Least-Squares Fitting. ! * nonlinear least-squares fitting, overview: Overview of Nonlinear Least-Squares Fitting. ! * nonlinear systems of equations, solution of: Multidimensional Root-Finding. ! * normalized form, IEEE format: Representation of floating point numbers. ! * normalized incomplete Beta function: Gamma Function. ! * Not-a-number, defined as a macro: Infinities and Not-a-number. ! * NRM2, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * ntuples: N-tuples. ! * nuclear physics, constants: Atomic and Nuclear Physics. ! * numerical constants, defined as macros: Mathematical Constants. ! * numerical derivatives: Numerical Differentiation. ! * numerical integration (quadrature): Numerical Integration. ! * obtaining GSL: Obtaining GSL. ! * ODEs, initial value problems: Ordinary Differential Equations. ! * optimization - combinatorial: Simulated Annealing. ! * optimization, see minimization: One dimensional Minimization. ! * optimized functions, alternatives: Alternative optimized functions. ! * ordinary differential equations, initial value problem: Ordinary Differential Equations. ! * oscillatory functions, numerical integration of: QAWO adaptive integration for oscillatory functions. ! * overflow, IEEE exceptions: Setting up your IEEE environment. ! * Pareto distribution: The Pareto Distribution. ! * PAW: Ntuple References and Further Reading. ! * permutations: Permutations. ! * physical constants: Physical Constants. ! * physical dimension, matrices: Matrices. ! * pi, defined as a macro: Mathematical Constants. ! * plain monte carlo: PLAIN Monte Carlo. ! * Pochhammer symbol: Gamma Function. ! * Poisson random numbers: The Poisson Distribution. ! * Polak-Ribiere algorithm, minimization: Multimin Algorithms. ! * polar form of complex numbers: Complex numbers. ! * polar to rectangular conversion: Conversion Functions. ! * polygamma functions: Psi (Digamma) Function. ! * polynomial evaluation: Polynomial Evaluation. ! * polynomial interpolation: Interpolation Types. ! * polynomials, roots of: Polynomials. ! * power function: Power Function. ! * power of complex number: Elementary Complex Functions. ! * power, units of: Thermal Energy and Power. ! * precision, IEEE arithmetic: Setting up your IEEE environment. ! * prefixes: Prefixes. ! * pressure, units of: Pressure. ! * Prince-Dormand, Runge-Kutta method: Stepping Functions. ! * printers units: Printers Units. ! * probability distribution, from histogram: The histogram probability distribution struct. ! * probability distributions, from histograms: Resampling from histograms. ! * projection of ntuples: Histogramming ntuple values. ! * psi function: Psi (Digamma) Function. ! * QR decomposition: QR Decomposition. ! * QR decomposition with column pivoting: QR Decomposition with Column Pivoting. ! * QUADPACK: Numerical Integration. ! * quadratic equation, solving: Quadratic Equations. ! * quadrature: Numerical Integration. ! * quantile functions: Random Number Distributions. ! * quasi-random sequences: Quasi-Random Sequences. ! * R250 shift-register random number generator: Other random number generators. ! * Racah coefficients: Coupling Coefficients. ! * radioactivity, units of: Radioactivity. ! * Radix-2 FFT for real data: Radix-2 FFT routines for real data. ! * Radix-2 FFT, complex data: Radix-2 FFT routines for complex data. ! * rand48 random number generator: Unix random number generators. ! * random number distributions: Random Number Distributions. ! * random number generators: Random Number Generation. ! * random sampling from histograms: The histogram probability distribution struct. ! * RANDU random number generator: Other random number generators. ! * RANF random number generator: Other random number generators. ! * range: Statistics. ! * range-checking for matrices: Accessing matrix elements. ! * range-checking for vectors: Accessing vector elements. ! * RANLUX random number generator: Random number generator algorithms. ! * RANLXD random number generator: Random number generator algorithms. ! * RANLXS random number generator: Random number generator algorithms. ! * RANMAR random number generator: Other random number generators. ! * Rayleigh distribution: The Rayleigh Distribution. ! * Rayleigh Tail distribution: The Rayleigh Tail Distribution. ! * real symmetric matrix, eigensystem: Real Symmetric Matrices. ! * Reciprocal Gamma function: Gamma Function. ! * rectangular to polar conversion: Conversion Functions. ! * recursive stratified sampling, MISER: MISER. ! * reduction of angular variables: Restriction Functions. ! * refinement of solutions in linear systems: LU Decomposition. ! * regression, least squares: Least-Squares Fitting. ! * Regular Bessel Functions, Fractional Order: Regular Bessel Function - Fractional Order. ! * Regular Bessel Functions, Zeros of: Zeros of Regular Bessel Functions. ! * Regular Cylindrical Bessel Functions: Regular Cylindrical Bessel Functions. ! * Regular Modified Bessel Functions - Fractional Order: Regular Modified Bessel Functions - Fractional Order. ! * Regular Modified Cylindrical Bessel Functions: Regular Modified Cylindrical Bessel Functions. ! * Regular Modified Spherical Bessel Functions: Regular Modified Spherical Bessel Functions. ! * Regular Spherical Bessel Functions: Regular Spherical Bessel Functions. ! * Regulated Gamma function: Gamma Function. ! * relative Pochhammer symbol: Gamma Function. ! * reporting bugs in GSL: Reporting Bugs. ! * representations of complex numbers: Complex numbers. ! * resampling from histograms: Resampling from histograms. ! * residual, in nonlinear systems of equations <1>: Search Stopping Parameters for Minimization Algorithms. ! * residual, in nonlinear systems of equations: Search Stopping Parameters for the multidimensional solver. ! * reversing a permutation: Permutation functions. ! * RK2, Runge-Kutta Method: Stepping Functions. ! * RK4, Runge-Kutta Method: Stepping Functions. ! * RKF45, Runge-Kutta-Fehlberg method: Stepping Functions. ! * root finding: One dimensional Root-Finding. ! * root finding, bisection algorithm: Root Bracketing Algorithms. ! * root finding, brent's method: Root Bracketing Algorithms. ! * root finding, caveats: Root Finding Caveats. ! * root finding, false position algorithm: Root Bracketing Algorithms. ! * root finding, initial guess: Search Bounds and Guesses. ! * root finding, Newton's Method algorithm: Root Finding Algorithms using Derivatives. ! * root finding, overview: Root Finding Overview. ! * root finding, providing a function to solve: Providing the function to solve. ! * root finding, search bounds: Search Bounds and Guesses. ! * root finding, Secant Method algorithm: Root Finding Algorithms using Derivatives. ! * root finding, Steffenson's Method: Root Finding Algorithms using Derivatives. ! * root finding, stopping parameters <1>: Search Stopping Parameters for the multidimensional solver. ! * root finding, stopping parameters: Search Stopping Parameters. ! * roots: One dimensional Root-Finding. ! * ROTG, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * rounding mode: Setting up your IEEE environment. ! * Runge-Kutta Cash-Karp method: Stepping Functions. ! * Runge-Kutta methods, ordinary differential equations: Stepping Functions. ! * Runge-Kutta Prince-Dormand method: Stepping Functions. ! * safe comparison of floating point numbers: Approximate Comparison of Floating Point Numbers. ! * sampling from histograms <1>: The histogram probability distribution struct. ! * sampling from histograms: Resampling from histograms. ! * SCAL, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * schedule - cooling: Simulated Annealing algorithm. ! * Secant Method algorithm for finding roots: Root Finding Algorithms using Derivatives. ! * selection function, ntuples: Histogramming ntuple values. ! * series, acceleration: Series Acceleration. ! * shared libraries: Shared Libraries. ! * Shi(x): Hyperbolic Integrals. ! * shift-register random number generator: Other random number generators. ! * Si(x): Trigonometric Integrals. ! * sign bit, IEEE format: Representation of floating point numbers. ! * sign of the determinant of a matrix: LU Decomposition. ! * Simplex algorithm, minimization: Multimin Algorithms. ! * simulated annealing: Simulated Annealing. ! * sin of complex number: Complex Trigonometric Functions. ! * sine function, special functions: Circular Trigonometric Functions. ! * single precision, IEEE format: Representation of floating point numbers. ! * singular functions, numerical integration of: QAWS adaptive integration for singular functions. ! * singular points, specifying positions in quadrature: QAGP adaptive integration with known singular points. ! * singular value decomposition: Singular Value Decomposition. ! * Skew Levy distribution: The Levy skew alpha-Stable Distribution. ! * Sobol sequence: Quasi-Random Sequences. ! * solution of linear system by householder transformations: Householder solver for linear systems. ! * solution of linear systems, Ax=b: Linear Algebra. ! * solving a non-linear equation: One dimensional Root-Finding. ! * solving nonlinear systems of equations: Multidimensional Root-Finding. ! * sorting: Sorting. ! * sorting eigenvalues and eigenvectors: Sorting Eigenvalues and Eigenvectors. ! * sorting vector elements: Sorting vectors. ! * source code, reuse in applications: Code Reuse. ! * Special Functions: Special Functions. ! * Spherical Bessel Functions: Regular Spherical Bessel Functions. ! * spherical harmonics: Legendre Functions and Spherical Harmonics. ! * spherical random variates, 2D: The Spherical Distribution (2D & 3D). ! * spherical random variates, 3D: The Spherical Distribution (2D & 3D). ! * spherical random variates, N-dimensional: The Spherical Distribution (2D & 3D). ! * spline: Interpolation. ! * square root of a matrix, Cholesky decomposition: Cholesky Decomposition. ! * square root of complex number: Elementary Complex Functions. ! * standard deviation: Statistics. ! * standard deviation, from histogram: Histogram Statistics. ! * standards conformance, ANSI C: Using the library. ! * Statistical Reference Datasets (StRD): Fitting References and Further Reading. ! * statistics: Statistics. ! * statistics, from histogram: Histogram Statistics. ! * Steepest descent algorithm, minimization: Multimin Algorithms. ! * Steffenson's Method for finding roots: Root Finding Algorithms using Derivatives. ! * stratified sampling in monte carlo integration: Monte Carlo Integration. ! * stride, of vector index: Vectors. ! * Student t-distribution: The t-distribution. ! * summation, acceleration: Series Acceleration. ! * SVD: Singular Value Decomposition. ! * SWAP, Level-1 BLAS: Level 1 GSL BLAS Interface. ! * swapping permutation elements: Accessing permutation elements. ! * SYMM, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * symmetric matrix, real, eigensystem: Real Symmetric Matrices. ! * SYMV, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * Synchrotron functions: Synchrotron Functions. ! * SYR, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * SYR2, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * SYR2K, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * SYRK, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * systems of equations, nonlinear: Multidimensional Root-Finding. ! * t-distribution: The t-distribution. ! * t-test: Statistics. ! * tangent of complex number: Complex Trigonometric Functions. ! * Tausworthe random number generator: Random number generator algorithms. ! * Taylor coefficients, computation of: Gamma Function. ! * testing combination for validity: Combination properties. ! * testing permutation for validity: Permutation properties. ! * thermal energy, units of: Thermal Energy and Power. ! * time units: Measurement of Time. ! * trailing dimension, matrices: Matrices. ! * transformation, Householder: Householder Transformations. ! * transforms, Hankel: Discrete Hankel Transforms. ! * Transport functions: Transport Functions. ! * Traveling Salesman Problem: Traveling Salesman Problem. ! * tridiagonal decomposition <1>: Tridiagonal Decomposition of Hermitian Matrices. ! * tridiagonal decomposition: Tridiagonal Decomposition of Real Symmetric Matrices. ! * tridiagonal systems: Tridiagonal Systems. ! * Trigonometric functions: Trigonometric Functions. ! * trigonometric functions of complex numbers: Complex Trigonometric Functions. ! * trigonometric integrals: Trigonometric Integrals. ! * TRMM, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * TRMV, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * TRSM, Level-3 BLAS: Level 3 GSL BLAS Interface. ! * TRSV, Level-2 BLAS: Level 2 GSL BLAS Interface. ! * TSP: Traveling Salesman Problem. ! * TT800 random number generator: Other random number generators. ! * two dimensional histograms: Two dimensional histograms. ! * Two-dimensional Gaussian distribution: The Bivariate Gaussian Distribution. ! * Two-sided exponential distribution: The Laplace Distribution. ! * Type 1 Gumbel distribution, random variates: The Type-1 Gumbel Distribution. ! * Type 2 Gumbel distribution: The Type-2 Gumbel Distribution. ! * u-transform for series: Series Acceleration. ! * underflow, IEEE exceptions: Setting up your IEEE environment. ! * uniform distribution: The Flat (Uniform) Distribution. ! * units, conversion of: Physical Constants. ! * units, imperial: Imperial Units. ! * Unix random number generators, rand: Unix random number generators. ! * Unix random number generators, rand48: Unix random number generators. ! * usage, compiling application programs: Using the library. ! * value function, ntuples: Histogramming ntuple values. ! * Van der Pol oscillator, example: ODE Example programs. ! * variance: Statistics. ! * variance, from histogram: Histogram Statistics. ! * VAX random number generator: Other random number generators. ! * vector, operations: BLAS Support. ! * vector, sorting elements of: Sorting vectors. ! * vectors <1>: Vectors. ! * vectors: Vectors and Matrices. ! * vectors, initializing: Initializing vector elements. ! * vectors, range-checking: Accessing vector elements. ! * VEGAS monte carlo integration: VEGAS. ! * viscosity, units of: Viscosity. ! * volume units: Volume. ! * W function: Lambert W Functions. ! * warning options: GCC warning options for numerical programs. ! * warranty (none): No Warranty. ! * website, developer information: Further Information. ! * Weibull distribution: The Weibull Distribution. ! * weight, units of: Mass and Weight. ! * weighted linear fits: Least-Squares Fitting. ! * Wigner coefficients: Coupling Coefficients. ! * zero finding: One dimensional Root-Finding. ! * zero, IEEE format: Representation of floating point numbers. ! * Zeros of Regular Bessel Functions: Zeros of Regular Bessel Functions. ! * Zeta functions: Zeta Functions. Only in gsl-1.3/doc: gsl-ref.info-5 Only in gsl-1.3/doc: gsl-ref.info-6 Only in gsl-1.3/doc: gsl-ref.info-7 Only in gsl-1.3/doc: gsl-ref.info-8 Only in gsl-1.3/doc: gsl-ref.info-9 diff -x.info* -rc2P gsl-1.3/doc/gsl-ref.texi gsl-1.4/doc/gsl-ref.texi *** gsl-1.3/doc/gsl-ref.texi Wed Dec 11 21:40:31 2002 --- gsl-1.4/doc/gsl-ref.texi Tue Aug 12 11:28:36 2003 *************** *** 109,123 **** @iftex @copying ! Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002 The GSL Team. Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 ! or any later version published by the Free Software Foundation; ! with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. ! A copy of the license is included in the section entitled ``GNU ! Free Documentation License''. ! The Texinfo source for this manual may be obtained from ! @code{ftp.gnu.org} in the directory @code{/gnu/gsl/}. @end copying @end iftex --- 109,128 ---- @iftex @copying ! Copyright @copyright{} 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 The GSL Team. Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with the ! Invariant Sections being "GNU General Public License" and "Free Software ! Needs Free Documentation", the Front-Cover text being ``A GNU Manual'', ! and with the Back-Cover Text being (a) (see below). A copy of the ! license is included in the section entitled ``GNU Free Documentation ! License''. ! (a) The Back-Cover Text is: ``You have freedom to copy and modify this ! GNU Manual, like GNU software.'' ! ! The Texinfo source for this manual may be obtained from ! @code{ftp.gnu.org/gnu/gsl/} @end copying @end iftex *************** *** 171,194 **** @page @vskip 0pt plus 1filll - @ifset publish - @flushleft - Published by Network Theory Limited. - - 15 Royal Park - Clifton - Bristol BS8 3AL - United Kingdom - - Email: info@@network-theory.co.uk - - ISBN 0-9541617-0-X - - Cover design by David Nicholls. - - Errata for this book will be available from - @url{http://www.network-theory.co.uk/gsl/manual/} - - @end flushleft - @end ifset @insertcopying @end titlepage --- 176,179 ---- *************** *** 198,245 **** @end ifset ! @ifinfo @node Top, Introduction, (dir), (dir) @top GSL - @end ifinfo - - @ifset publish - @iftex - @unnumbered Preface - This manual documents the use of the GNU Scientific Library, a numerical - library for C and C++ programmers. - - The GNU Scientific Library is @dfn{free software}. The term "free - software" is sometimes misunderstood---it has nothing to do with - price. It is about freedom. It refers to your freedom to run, copy, - distribute, study, change and improve the software. With the GNU - Scientific Library you have all these freedoms. - - The GNU Scientific Library is part of the GNU Project. The GNU Project - was launched in 1984 to develop a complete Unix-like operating system - which is free software: the GNU system. It was conceived as a way of - bringing back the cooperative spirit that prevailed in the computing - community in earlier days---to make cooperation possible once again by - removing the obstacles to cooperation imposed by the owners of - proprietary software. Variants of the GNU operating system, which use - the kernel Linux, are now widely used; though these systems are often - referred to as ``Linux'', they are more accurately called GNU/Linux - systems. - - The Free Software Foundation is a tax-exempt charity that raises funds - for work on the GNU Project. It is dedicated to promoting computer - users' right to use, study, copy, modify, and redistribute computer - programs. You can support the Free Software Foundation by making a - donation or ordering manuals, t-shirts and especially CD-ROMs. For more - information visit the website @url{www.gnu.org}. - @sp 1 - @flushright - Brian Gough - Publisher - December 2001 - @end flushright - @end iftex - @end ifset - @ifinfo This file documents the @value{GSL} (GSL), a collection of numerical routines for scientific computing. It corresponds to release --- 183,190 ---- @end ifset ! @ifnottex @node Top, Introduction, (dir), (dir) @top GSL This file documents the @value{GSL} (GSL), a collection of numerical routines for scientific computing. It corresponds to release *************** *** 249,257 **** @url{http://www.gnu.org/software/gsl/}. - This manual is also available as a printed book (ISBN 095416170X). - Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. ! @end ifinfo @menu --- 194,200 ---- @url{http://www.gnu.org/software/gsl/}. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License. ! @end ifnottex @menu *************** *** 298,302 **** * Autoconf Macros:: * GSL CBLAS Library:: ! * Reporting Bugs:: * GNU General Public License:: * GNU Free Documentation License:: --- 241,245 ---- * Autoconf Macros:: * GSL CBLAS Library:: ! * Free Software Needs Free Documentation:: * GNU General Public License:: * GNU Free Documentation License:: *************** *** 487,492 **** root finding, minimization and fitting, polynomial solvers, complex numbers, physical constants, permutations, vector and matrix functions, ! histograms, statistics, ieee-utils, revised @sc{cblas} Level 2 & 3, matrix ! decompositions and eigensystems. @item Reid Priedhorsky --- 430,436 ---- root finding, minimization and fitting, polynomial solvers, complex numbers, physical constants, permutations, vector and matrix functions, ! histograms, statistics, ieee-utils, revised @sc{cblas} Level 2 & 3, ! matrix decompositions, eigensystems, cumulative distribution functions, ! testing, documentation and releases. @item Reid Priedhorsky *************** *** 518,522 **** @item Szymon Jaroszewicz @comment ! Write the routines for generating combinations @end table --- 462,473 ---- @item Szymon Jaroszewicz @comment ! Wrote the routines for generating combinations. ! ! @item Nicolas Darnis ! Wrote the initial routines for canonical permutations. ! ! @item Jason H. Stover ! @comment (jason@sakla.net) ! Wrote the major cumulative distribution functions. @end table *************** *** 524,563 **** @node Autoconf Macros, GSL CBLAS Library, Contributors to GSL, Top @appendix Autoconf Macros ! @noindent ! The following autoconf test will check for extern inline, ! ! @smallexample ! dnl Check for "extern inline", using a modified version ! dnl of the test for AC_C_INLINE from acspecific.mt ! dnl ! AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, ! [ac_cv_c_extern_inline=no ! AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); ! extern $ac_cv_c_inline double foo(double x) @{ return x+1.0; @}; ! double foo (double x) @{ return x + 1.0; @};], ! [ foo(1.0) ], ! [ac_cv_c_extern_inline="yes"]) ! ]) ! ! if test "$ac_cv_c_extern_inline" != no ; then ! AC_DEFINE(HAVE_INLINE,1) ! AC_SUBST(HAVE_INLINE) ! fi ! @end smallexample ! ! @node GSL CBLAS Library, Reporting Bugs, Autoconf Macros, Top @appendix GSL CBLAS Library @include cblas.texi - @node Reporting Bugs, GNU General Public License, GSL CBLAS Library, Top - @appendix Reporting Bugs - @include bugs.texi - @comment @node Copyright, GNU General Public License, Contributors to GSL, Top @comment @unnumbered Copyright @comment @include science.texi ! @node GNU General Public License, GNU Free Documentation License, Reporting Bugs, Top @unnumbered GNU General Public License @include gpl.texi --- 475,493 ---- @node Autoconf Macros, GSL CBLAS Library, Contributors to GSL, Top @appendix Autoconf Macros + @include autoconf.texi ! @node GSL CBLAS Library, Free Software Needs Free Documentation, Autoconf Macros, Top @appendix GSL CBLAS Library @include cblas.texi @comment @node Copyright, GNU General Public License, Contributors to GSL, Top @comment @unnumbered Copyright @comment @include science.texi ! @node Free Software Needs Free Documentation, GNU General Public License, GSL CBLAS Library, Top ! @unnumbered Free Software Needs Free Documentation ! @include freemanuals.texi ! ! @node GNU General Public License, GNU Free Documentation License, Free Software Needs Free Documentation, Top @unnumbered GNU General Public License @include gpl.texi *************** *** 566,569 **** --- 496,500 ---- @unnumbered GNU Free Documentation License @include fdl.texi + @comment htmlhelp: @bye diff -x.info* -rc2P gsl-1.3/doc/histogram.texi gsl-1.4/doc/histogram.texi *** gsl-1.3/doc/histogram.texi Sun Dec 15 13:17:29 2002 --- gsl-1.4/doc/histogram.texi Mon Jun 2 15:54:48 2003 *************** *** 12,18 **** Once a histogram has been created it can also be converted into a probability distribution function. The library provides efficient ! routines for selecting random samples from probability ! distributions. This can be useful for generating simulations based real ! data. The functions are declared in the header files @file{gsl_histogram.h} --- 12,17 ---- Once a histogram has been created it can also be converted into a probability distribution function. The library provides efficient ! routines for selecting random samples from probability distributions. ! This can be useful for generating simulations based on real data. The functions are declared in the header files @file{gsl_histogram.h} *************** *** 230,234 **** @end deftypefun ! @deftypefun void gsl_histogram_free (gsl_histogram * h) This function frees the histogram @var{h} and all of the memory associated with it. --- 229,233 ---- @end deftypefun ! @deftypefun void gsl_histogram_free (gsl_histogram * @var{h}) This function frees the histogram @var{h} and all of the memory associated with it. *************** *** 257,261 **** search to identify the bin which covers the appropriate range. ! @deftypefun int gsl_histogram_increment (gsl_histogram * h, double x) This function updates the histogram @var{h} by adding one (1.0) to the bin whose range contains the coordinate @var{x}. --- 256,260 ---- search to identify the bin which covers the appropriate range. ! @deftypefun int gsl_histogram_increment (gsl_histogram * @var{h}, double @var{x}) This function updates the histogram @var{h} by adding one (1.0) to the bin whose range contains the coordinate @var{x}. *************** *** 268,272 **** returns @code{GSL_EDOM}, and none of the bins are modified. The error handler is not called, however, since it is often necessary to compute ! histogram for a small range of a larger dataset, ignoring the values outside the range of interest. @end deftypefun --- 267,271 ---- returns @code{GSL_EDOM}, and none of the bins are modified. The error handler is not called, however, since it is often necessary to compute ! histograms for a small range of a larger dataset, ignoring the values outside the range of interest. @end deftypefun *************** *** 279,283 **** @deftypefun double gsl_histogram_get (const gsl_histogram * @var{h}, size_t @var{i}) ! This function returns the contents of the @var{i}th bin of the histogram @var{h}. If @var{i} lies outside the valid range of indices for the histogram then the error handler is called with an error code of --- 278,282 ---- @deftypefun double gsl_histogram_get (const gsl_histogram * @var{h}, size_t @var{i}) ! This function returns the contents of the @var{i}-th bin of the histogram @var{h}. If @var{i} lies outside the valid range of indices for the histogram then the error handler is called with an error code of *************** *** 286,290 **** @deftypefun int gsl_histogram_get_range (const gsl_histogram * @var{h}, size_t @var{i}, double * @var{lower}, double * @var{upper}) ! This function finds the upper and lower range limits of the @var{i}th bin of the histogram @var{h}. If the index @var{i} is valid then the corresponding range limits are stored in @var{lower} and @var{upper}. --- 285,289 ---- @deftypefun int gsl_histogram_get_range (const gsl_histogram * @var{h}, size_t @var{i}, double * @var{lower}, double * @var{upper}) ! This function finds the upper and lower range limits of the @var{i}-th bin of the histogram @var{h}. If the index @var{i} is valid then the corresponding range limits are stored in @var{lower} and @var{upper}. *************** *** 331,335 **** @node Histogram Statistics @section Histogram Statistics ! @deftypefun double gsl_histogram_max_val (const gsl_histogram * @var{h}) This function returns the maximum value contained in the histogram bins. --- 330,337 ---- @node Histogram Statistics @section Histogram Statistics ! @cindex histogram statistics ! @cindex statistics, from histogram ! @cindex maximum value, from histogram ! @cindex minimum value, from histogram @deftypefun double gsl_histogram_max_val (const gsl_histogram * @var{h}) This function returns the maximum value contained in the histogram bins. *************** *** 352,355 **** --- 354,358 ---- @end deftypefun + @cindex mean value, from histogram @deftypefun double gsl_histogram_mean (const gsl_histogram * @var{h}) This function returns the mean of the histogrammed variable, where the *************** *** 359,362 **** --- 362,367 ---- @end deftypefun + @cindex standard deviation, from histogram + @cindex variance, from histogram @deftypefun double gsl_histogram_sigma (const gsl_histogram * @var{h}) This function returns the standard deviation of the histogrammed *************** *** 512,516 **** @node The histogram probability distribution struct @section The histogram probability distribution struct ! The probability distribution function for a histogram consists of a set of @dfn{bins} which measure the probability of an event falling into a --- 517,524 ---- @node The histogram probability distribution struct @section The histogram probability distribution struct ! @cindex probability distribution, from histogram ! @cindex sampling from histograms ! @cindex random sampling from histograms ! @cindex histograms, random sampling from The probability distribution function for a histogram consists of a set of @dfn{bins} which measure the probability of an event falling into a *************** *** 544,548 **** random samples from it. ! @deftypefun {gsl_histogram_pdf *} gsl_histogram_pdf_alloc (size_t n) This function allocates memory for a probability distribution with @var{n} bins and returns a pointer to a newly initialized --- 552,556 ---- random samples from it. ! @deftypefun {gsl_histogram_pdf *} gsl_histogram_pdf_alloc (size_t @var{n}) This function allocates memory for a probability distribution with @var{n} bins and returns a pointer to a newly initialized *************** *** 605,651 **** @example ! #include ! #include ! #include ! ! int ! main (int argc, char **argv) ! @{ ! double a, b; ! size_t n; ! ! if (argc != 4) ! @{ ! printf ("Usage: gsl-histogram xmin xmax n\n" ! "Computes a histogram of the data " ! "on stdin using n bins from xmin " ! "to xmax\n"); ! exit (0); ! @} ! ! a = atof (argv[1]); ! b = atof (argv[2]); ! n = atoi (argv[3]); ! ! @{ ! int status; ! double x; ! ! gsl_histogram * h = gsl_histogram_alloc (n); ! ! gsl_histogram_set_uniform (h, a, b); ! ! while (fscanf(stdin, "%lg", &x) == 1) ! @{ ! gsl_histogram_increment(h, x); ! @} ! ! gsl_histogram_fprintf (stdout, h, "%g", "%g"); ! ! gsl_histogram_free (h); ! @} ! ! exit (0); ! @} @end example --- 613,617 ---- @example ! @verbatiminclude examples/histogram.c @end example *************** *** 672,676 **** @iftex @sp 1 ! @center @image{histogram,4in} @end iftex --- 638,642 ---- @iftex @sp 1 ! @center @image{histogram,3.4in} @end iftex *************** *** 842,848 **** histogram then the function returns zero to indicate success. If @math{(x,y)} lies outside the limits of the histogram then the ! function returns @code{GSL_EDOM}, and none of bins are modified. The error handler is not called, since it is often necessary to compute ! histogram for a small range of a larger dataset, ignoring any coordinates outside the range of interest. @end deftypefun --- 808,814 ---- histogram then the function returns zero to indicate success. If @math{(x,y)} lies outside the limits of the histogram then the ! function returns @code{GSL_EDOM}, and none of the bins are modified. The error handler is not called, since it is often necessary to compute ! histograms for a small range of a larger dataset, ignoring any coordinates outside the range of interest. @end deftypefun *************** *** 863,868 **** @deftypefun int gsl_histogram2d_get_xrange (const gsl_histogram2d * @var{h}, size_t @var{i}, double * @var{xlower}, double * @var{xupper}) @deftypefunx int gsl_histogram2d_get_yrange (const gsl_histogram2d * @var{h}, size_t @var{j}, double * @var{ylower}, double * @var{yupper}) ! These functions find the upper and lower range limits of the @var{i}th ! and @var{j}th bins in the x and y directions of the histogram @var{h}. The range limits are stored in @var{xlower} and @var{xupper} or @var{ylower} and @var{yupper}. The lower limits are inclusive --- 829,834 ---- @deftypefun int gsl_histogram2d_get_xrange (const gsl_histogram2d * @var{h}, size_t @var{i}, double * @var{xlower}, double * @var{xupper}) @deftypefunx int gsl_histogram2d_get_yrange (const gsl_histogram2d * @var{h}, size_t @var{j}, double * @var{ylower}, double * @var{yupper}) ! These functions find the upper and lower range limits of the @var{i}-th ! and @var{j}-th bins in the x and y directions of the histogram @var{h}. The range limits are stored in @var{xlower} and @var{xupper} or @var{ylower} and @var{yupper}. The lower limits are inclusive *************** *** 1148,1152 **** generate random samples from it. ! @deftypefun {gsl_histogram2d_pdf *} gsl_histogram2d_pdf_alloc (size_t nx, size_t ny) This function allocates memory for a two-dimensional probability distribution of size @var{nx}-by-@var{ny} and returns a pointer to a --- 1114,1118 ---- generate random samples from it. ! @deftypefun {gsl_histogram2d_pdf *} gsl_histogram2d_pdf_alloc (size_t @var{nx}, size_t @var{ny}) This function allocates memory for a two-dimensional probability distribution of size @var{nx}-by-@var{ny} and returns a pointer to a *************** *** 1186,1235 **** @example ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_histogram2d * h = gsl_histogram2d_alloc (10, 10); ! ! gsl_histogram2d_set_ranges_uniform (h, ! 0.0, 1.0, ! 0.0, 1.0); ! ! gsl_histogram2d_accumulate (h, 0.3, 0.3, 1); ! gsl_histogram2d_accumulate (h, 0.8, 0.1, 5); ! gsl_histogram2d_accumulate (h, 0.7, 0.9, 0.5); ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc(T); ! ! @{ ! int i; ! gsl_histogram2d_pdf * p ! = gsl_histogram2d_pdf_alloc (h->nx, h->ny); ! ! gsl_histogram2d_pdf_init (p, h); ! ! for (i = 0; i < 1000; i++) @{ ! double x, y; ! double u = gsl_rng_uniform (r); ! double v = gsl_rng_uniform (r); ! ! int status ! = gsl_histogram2d_pdf_sample (p, u, v, &x, &y); ! ! printf("%g %g\n", x, y); ! @} ! @} ! ! return 0; ! @} @end example @noindent --- 1152,1156 ---- @example ! @verbatiminclude examples/histogram2d.c @end example @noindent *************** *** 1241,1245 **** @iftex @sp 1 ! @center @image{histogram2d,4in} @end iftex --- 1162,1166 ---- @iftex @sp 1 ! @center @image{histogram2d,3.4in} @end iftex diff -x.info* -rc2P gsl-1.3/doc/ieee754.texi gsl-1.4/doc/ieee754.texi *** gsl-1.3/doc/ieee754.texi Fri Oct 26 09:44:55 2001 --- gsl-1.4/doc/ieee754.texi Mon Jun 2 15:55:40 2003 *************** *** 165,190 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! float f = 1.0/3.0; ! double d = 1.0/3.0; ! ! double fd = f; /* promote from float to double */ ! ! printf(" f="); gsl_ieee_printf_float(&f); ! printf("\n"); ! ! printf("fd="); gsl_ieee_printf_double(&fd); ! printf("\n"); ! ! printf(" d="); gsl_ieee_printf_double(&d); ! printf("\n"); ! ! return 0; ! @} @end example --- 165,169 ---- @example ! @verbatiminclude examples/ieee.c @end example *************** *** 245,254 **** as @code{fpsetround}, which should be used whenever they are available. Unfortunately in the past there has been no universal API for ! controlling their behavior -- each system has had its own way of ! accessing them. For example, the Linux kernel provides the function ! @code{__setfpucw} (@dfn{set-fpu-control-word}) to set IEEE modes, while ! HP-UX and Solaris use the functions @code{fpsetround} and ! @code{fpsetmask}. To help you write portable programs GSL allows you to ! specify modes in a platform-independent way using the environment variable @code{GSL_IEEE_MODE}. The library then takes care of all the necessary machine-specific initializations for you when you call the --- 224,230 ---- as @code{fpsetround}, which should be used whenever they are available. Unfortunately in the past there has been no universal API for ! controlling their behavior -- each system has had its own low-level way ! of accessing them. To help you write portable programs GSL allows you ! to specify modes in a platform-independent way using the environment variable @code{GSL_IEEE_MODE}. The library then takes care of all the necessary machine-specific initializations for you when you call the *************** *** 344,377 **** @example ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! double x = 1, oldsum = 0, sum = 0; ! int i = 0; ! ! gsl_ieee_env_setup (); /* read GSL_IEEE_MODE */ ! ! do ! @{ ! i++; ! ! oldsum = sum; ! sum += x; ! x = x / i; ! ! printf("i=%2d sum=%.18f error=%g\n", ! i, sum, sum - M_E); ! ! if (i > 30) ! break; ! @} ! while (sum != oldsum); ! ! return 0; ! @} @end example --- 320,324 ---- @example ! @verbatiminclude examples/ieeeround.c @end example diff -x.info* -rc2P gsl-1.3/doc/integration.texi gsl-1.4/doc/integration.texi *** gsl-1.3/doc/integration.texi Sat Oct 20 18:31:28 2001 --- gsl-1.4/doc/integration.texi Mon Jun 2 15:56:36 2003 *************** *** 141,155 **** For integrands with weight functions the algorithms use Clenshaw-Curtis quadrature rules. A Clenshaw-Curtis rule begins with an @math{n}-th ! order Chebyschev polynomial approximation to the integrand. This polynomial can be integrated exactly to give an approximation to the ! integral of the original function. The Chebyschev expansion can be extended to higher orders to improve the approximation. The presence of singularities (or other behavior) in the integrand can cause slow ! convergence in the Chebyschev approximation. The modified Clenshaw-Curtis rules used in @sc{quadpack} separate out several common weight functions which cause slow convergence. These weight functions ! are integrated analytically against the Chebyschev polynomials to ! precompute @dfn{modified Chebyschev moments}. Combining the moments with ! the Chebyschev approximation to the function gives the desired integral. The use of analytic integration for the singular part of the function allows exact cancellations and substantially improves the --- 141,155 ---- For integrands with weight functions the algorithms use Clenshaw-Curtis quadrature rules. A Clenshaw-Curtis rule begins with an @math{n}-th ! order Chebyshev polynomial approximation to the integrand. This polynomial can be integrated exactly to give an approximation to the ! integral of the original function. The Chebyshev expansion can be extended to higher orders to improve the approximation. The presence of singularities (or other behavior) in the integrand can cause slow ! convergence in the Chebyshev approximation. The modified Clenshaw-Curtis rules used in @sc{quadpack} separate out several common weight functions which cause slow convergence. These weight functions ! are integrated analytically against the Chebyshev polynomials to ! precompute @dfn{modified Chebyshev moments}. Combining the moments with ! the Chebyshev approximation to the function gives the desired integral. The use of analytic integration for the singular part of the function allows exact cancellations and substantially improves the *************** *** 160,164 **** @section QNG non-adaptive Gauss-Kronrod integration ! The QNG algorithm is non-adaptive procedure which uses fixed Gauss-Kronrod abscissae to sample the integrand at a maximum of 87 points. It is provided for fast integration of smooth functions. --- 160,164 ---- @section QNG non-adaptive Gauss-Kronrod integration ! The QNG algorithm is a non-adaptive procedure which uses fixed Gauss-Kronrod abscissae to sample the integrand at a maximum of 87 points. It is provided for fast integration of smooth functions. *************** *** 263,267 **** @node QAGP adaptive integration with known singular points @section QAGP adaptive integration with known singular points ! @deftypefun int gsl_integration_qagp (const gsl_function * @var{f}, double *@var{pts}, size_t @var{npts}, double @var{epsabs}, double @var{epsrel}, size_t @var{limit}, gsl_integration_workspace * @var{workspace}, double *@var{result}, double *@var{abserr}) --- 263,267 ---- @node QAGP adaptive integration with known singular points @section QAGP adaptive integration with known singular points ! @cindex singular points, specifying positions in quadrature @deftypefun int gsl_integration_qagp (const gsl_function * @var{f}, double *@var{pts}, size_t @var{npts}, double @var{epsabs}, double @var{epsrel}, size_t @var{limit}, gsl_integration_workspace * @var{workspace}, double *@var{result}, double *@var{abserr}) *************** *** 372,376 **** @node QAWC adaptive integration for Cauchy principal values @section QAWC adaptive integration for Cauchy principal values ! @deftypefun int gsl_integration_qawc (gsl_function *@var{f}, double @var{a}, double @var{b}, double @var{c}, double @var{epsabs}, double @var{epsrel}, size_t @var{limit}, gsl_integration_workspace * @var{workspace}, double * @var{result}, double * @var{abserr}) --- 372,376 ---- @node QAWC adaptive integration for Cauchy principal values @section QAWC adaptive integration for Cauchy principal values ! @cindex Cauchy principal value, by numerical quadrature @deftypefun int gsl_integration_qawc (gsl_function *@var{f}, double @var{a}, double @var{b}, double @var{c}, double @var{epsabs}, double @var{epsrel}, size_t @var{limit}, gsl_integration_workspace * @var{workspace}, double * @var{result}, double * @var{abserr}) *************** *** 410,418 **** @node QAWS adaptive integration for singular functions @section QAWS adaptive integration for singular functions ! The QAWS algorithm is designed for integrands with algebraic-logarithmic singularities at the end-points of an integration region. In order to work efficiently the algorithm requires a precomputed table of ! Chebyschev moments. @deftypefun {gsl_integration_qaws_table *} gsl_integration_qaws_table_alloc (double @var{alpha}, double @var{beta}, int @var{mu}, int @var{nu}) --- 410,418 ---- @node QAWS adaptive integration for singular functions @section QAWS adaptive integration for singular functions ! @cindex singular functions, numerical integration of The QAWS algorithm is designed for integrands with algebraic-logarithmic singularities at the end-points of an integration region. In order to work efficiently the algorithm requires a precomputed table of ! Chebyshev moments. @deftypefun {gsl_integration_qaws_table *} gsl_integration_qaws_table_alloc (double @var{alpha}, double @var{beta}, int @var{mu}, int @var{nu}) *************** *** 436,440 **** @noindent ! where @math{\alpha < -1}, @math{\beta < -1}, and @math{\mu = 0, 1}, @math{\nu = 0, 1}. The weight function can take four different forms depending on the values of @math{\mu} and @math{\nu}, --- 436,440 ---- @noindent ! where @math{\alpha > -1}, @math{\beta > -1}, and @math{\mu = 0, 1}, @math{\nu = 0, 1}. The weight function can take four different forms depending on the values of @math{\mu} and @math{\nu}, *************** *** 517,524 **** @node QAWO adaptive integration for oscillatory functions @section QAWO adaptive integration for oscillatory functions ! The QAWO algorithm is designed for integrands with an oscillatory factor, @math{\sin(\omega x)} or @math{\cos(\omega x)}. In order to ! work efficiently the algorithm requires a table of Chebyschev moments which must be pre-computed with calls to the functions below. --- 517,524 ---- @node QAWO adaptive integration for oscillatory functions @section QAWO adaptive integration for oscillatory functions ! @cindex oscillatory functions, numerical integration of The QAWO algorithm is designed for integrands with an oscillatory factor, @math{\sin(\omega x)} or @math{\cos(\omega x)}. In order to ! work efficiently the algorithm requires a table of Chebyshev moments which must be pre-computed with calls to the functions below. *************** *** 587,591 **** @math{f} over @math{(a,b)} with the weight function @math{\sin(\omega x)} or @math{\cos(\omega x)} defined ! by the table @var{wf}. @tex --- 587,591 ---- @math{f} over @math{(a,b)} with the weight function @math{\sin(\omega x)} or @math{\cos(\omega x)} defined ! by the table @var{wf}, @tex *************** *** 778,816 **** @example ! #include ! #include ! #include ! ! double f (double x, void * params) @{ ! double alpha = *(double *) params; ! double f = log(alpha*x) / sqrt(x); ! return f; ! @} ! ! int ! main (void) ! @{ ! gsl_integration_workspace * w ! = gsl_integration_workspace_alloc(1000); ! ! double result, error; ! double expected = -4.0; ! double alpha = 1.0; ! ! gsl_function F; ! F.function = &f; ! F.params = α ! ! gsl_integration_qags (&F, 0, 1, 0, 1e-7, 1000, ! w, &result, &error); ! ! printf("result = % .18f\n", result); ! printf("exact result = % .18f\n", expected); ! printf("estimated error = % .18f\n", error); ! printf("actual error = % .18f\n", result - expected); ! printf("intervals = %d\n", w->size); ! ! return 0; ! @} @end example --- 778,782 ---- @example ! @verbatiminclude examples/integration.c @end example *************** *** 821,829 **** @example bash$ ./a.out ! result = -3.999999999999973799 ! exact result = -4.000000000000000000 ! estimated error = 0.000000000000246025 ! actual error = 0.000000000000026201 ! intervals = 8 @end example --- 787,791 ---- @example bash$ ./a.out ! @verbatiminclude examples/integration.out @end example diff -x.info* -rc2P gsl-1.3/doc/interp.texi gsl-1.4/doc/interp.texi *** gsl-1.3/doc/interp.texi Sun Dec 15 12:44:00 2002 --- gsl-1.4/doc/interp.texi Mon Jun 2 15:57:02 2003 *************** *** 88,96 **** @deffn {Interpolation Type} gsl_interp_akima @cindex Akima splines ! Akima spline with natural boundary conditions. @end deffn @deffn {Interpolation Type} gsl_interp_akima_periodic ! Akima spline with periodic boundary conditions. @end deffn --- 88,98 ---- @deffn {Interpolation Type} gsl_interp_akima @cindex Akima splines ! Non-rounded Akima spline with natural boundary conditions. This method ! uses the non-rounded corner algorithm of Wodicka. @end deffn @deffn {Interpolation Type} gsl_interp_akima_periodic ! Non-rounded Akima spline with periodic boundary conditions. This method ! uses the non-rounded corner algorithm of Wodicka. @end deffn *************** *** 102,107 **** @example ! printf("interp uses '%s' interpolation.\n", ! gsl_interp_name (interp)); @end example @noindent --- 104,109 ---- @example ! printf ("interp uses '%s' interpolation.\n", ! gsl_interp_name (interp)); @end example @noindent *************** *** 127,131 **** immediately. ! @deftypefun size_t gsl_interp_bsearch (const double x_array[], double @var{x}, size_t @var{index_lo}, size_t @var{index_hi}) This function returns the index @math{i} of the array @var{x_array} such that @code{x_array[i] <= x < x_array[i+1]}. The index is searched for --- 129,133 ---- immediately. ! @deftypefun size_t gsl_interp_bsearch (const double @var{x_array}[], double @var{x}, size_t @var{index_lo}, size_t @var{index_hi}) This function returns the index @math{i} of the array @var{x_array} such that @code{x_array[i] <= x < x_array[i+1]}. The index is searched for *************** *** 140,153 **** @end deftypefun ! @deftypefun size_t gsl_interp_accel_find (gsl_interp_accel * @var{a}, const double x_array[], size_t @var{size}, double @var{x}) This function performs a lookup action on the data array @var{x_array} of size @var{size}, using the given accelerator @var{a}. This is how lookups are performed during evaluation of an interpolation. The ! function returns an index @math{i} such that @code{xarray[i] <= x < ! xarray[i+1]}. @end deftypefun ! @deftypefun void gsl_interp_accel_free (gsl_interp_accel* @var{a}) ! This function frees the accelerator object @var{a}. @end deftypefun --- 142,155 ---- @end deftypefun ! @deftypefun size_t gsl_interp_accel_find (gsl_interp_accel * @var{a}, const double @var{x_array}[], size_t @var{size}, double @var{x}) This function performs a lookup action on the data array @var{x_array} of size @var{size}, using the given accelerator @var{a}. This is how lookups are performed during evaluation of an interpolation. The ! function returns an index @math{i} such that @code{x_array[i] <= x < ! x_array[i+1]}. @end deftypefun ! @deftypefun void gsl_interp_accel_free (gsl_interp_accel* @var{acc}) ! This function frees the accelerator object @var{acc}. @end deftypefun *************** *** 155,187 **** @section Evaluation of Interpolating Functions ! @deftypefun double gsl_interp_eval (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_interp_eval_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{a}, double * @var{y}) These functions return the interpolated value of @var{y} for a given point @var{x}, using the interpolation object @var{interp}, data arrays ! @var{xa} and @var{ya} and the accelerator @var{a}. @end deftypefun ! @deftypefun double gsl_interp_eval_deriv (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_interp_eval_deriv_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{a}, double * @var{d}) These functions return the derivative @var{d} of an interpolated function for a given point @var{x}, using the interpolation object @var{interp}, data arrays @var{xa} and @var{ya} and the accelerator ! @var{a}. @end deftypefun ! @deftypefun double gsl_interp_eval_deriv2 (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_interp_eval_deriv2_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{a}, double * @var{d2}) These functions return the second derivative @var{d2} of an interpolated function for a given point @var{x}, using the interpolation object @var{interp}, data arrays @var{xa} and @var{ya} and the accelerator ! @var{a}. @end deftypefun ! @deftypefun double gsl_interp_eval_integ (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{a}, double @var{b}double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_interp_eval_integ_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], , double @var{a}, double @var{b}, gsl_interp_accel * @var{a}, double * @var{result}) These functions return the numerical integral @var{result} of an interpolated function over the range [@var{a}, @var{b}], using the interpolation object @var{interp}, data arrays @var{xa} and @var{ya} and ! the accelerator @var{a}. @end deftypefun --- 157,189 ---- @section Evaluation of Interpolating Functions ! @deftypefun double gsl_interp_eval (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_interp_eval_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{acc}, double * @var{y}) These functions return the interpolated value of @var{y} for a given point @var{x}, using the interpolation object @var{interp}, data arrays ! @var{xa} and @var{ya} and the accelerator @var{acc}. @end deftypefun ! @deftypefun double gsl_interp_eval_deriv (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_interp_eval_deriv_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{acc}, double * @var{d}) These functions return the derivative @var{d} of an interpolated function for a given point @var{x}, using the interpolation object @var{interp}, data arrays @var{xa} and @var{ya} and the accelerator ! @var{acc}. @end deftypefun ! @deftypefun double gsl_interp_eval_deriv2 (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_interp_eval_deriv2_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{x}, gsl_interp_accel * @var{acc}, double * @var{d2}) These functions return the second derivative @var{d2} of an interpolated function for a given point @var{x}, using the interpolation object @var{interp}, data arrays @var{xa} and @var{ya} and the accelerator ! @var{acc}. @end deftypefun ! @deftypefun double gsl_interp_eval_integ (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{a}, double @var{b}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_interp_eval_integ_e (const gsl_interp * @var{interp}, const double @var{xa}[], const double @var{ya}[], double @var{a}, double @var{b}, gsl_interp_accel * @var{acc}, double * @var{result}) These functions return the numerical integral @var{result} of an interpolated function over the range [@var{a}, @var{b}], using the interpolation object @var{interp}, data arrays @var{xa} and @var{ya} and ! the accelerator @var{acc}. @end deftypefun *************** *** 197,204 **** defined in the header file @file{gsl_spline.h}. ! @deftypefun {gsl_spline *} gsl_spline_alloc (const gsl_interp_type * @var{T}, size_t @var{n}) @end deftypefun ! @deftypefun int gsl_spline_init (gsl_spline * @var{spline}, const double xa[], const double @var{ya}[], size_t @var{size}) @end deftypefun --- 199,206 ---- defined in the header file @file{gsl_spline.h}. ! @deftypefun {gsl_spline *} gsl_spline_alloc (const gsl_interp_type * @var{T}, size_t @var{size}) @end deftypefun ! @deftypefun int gsl_spline_init (gsl_spline * @var{spline}, const double @var{xa}[], const double @var{ya}[], size_t @var{size}) @end deftypefun *************** *** 206,219 **** @end deftypefun ! @deftypefun double gsl_spline_eval (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_spline_eval_e (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{a}, double * @var{y}) @end deftypefun ! @deftypefun double gsl_spline_eval_deriv (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_spline_eval_deriv_e (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{a}, double * @var{d}) @end deftypefun ! @deftypefun double gsl_spline_eval_deriv2 (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{a}) ! @deftypefunx int gsl_spline_eval_deriv2_e (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{a}, double * @var{d2}) @end deftypefun --- 208,221 ---- @end deftypefun ! @deftypefun double gsl_spline_eval (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_spline_eval_e (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{acc}, double * @var{y}) @end deftypefun ! @deftypefun double gsl_spline_eval_deriv (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_spline_eval_deriv_e (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{acc}, double * @var{d}) @end deftypefun ! @deftypefun double gsl_spline_eval_deriv2 (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{acc}) ! @deftypefunx int gsl_spline_eval_deriv2_e (const gsl_spline * @var{spline}, double @var{x}, gsl_interp_accel * @var{acc}, double * @var{d2}) @end deftypefun *************** *** 231,276 **** @example ! #include ! #include ! #include ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! double xi, yi, x[10], y[10]; ! ! printf ("#m=0,S=2\n"); ! ! for (i = 0; i < 10; i++) ! @{ ! x[i] = i + 0.5 * sin (i); ! y[i] = i + cos (i * i); ! printf ("%g %g\n", x[i], y[i]); ! @} ! ! printf ("#m=1,S=0\n"); ! ! @{ ! gsl_interp_accel *acc ! = gsl_interp_accel_alloc (); ! gsl_spline *spline ! = gsl_spline_alloc (gsl_interp_cspline, 10); ! ! gsl_spline_init (spline, x, y, 10); ! ! for (xi = x[0]; xi < x[9]; xi += 0.01) ! @{ ! yi = gsl_spline_eval (spline, xi, acc); ! printf ("%g %g\n", xi, yi); ! @} ! gsl_spline_free (spline); ! gsl_interp_accel_free(acc); ! @} ! return 0; ! @} @end example @noindent --- 233,237 ---- @example ! @verbatiminclude examples/interp.c @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/intro.texi gsl-1.4/doc/intro.texi *** gsl-1.3/doc/intro.texi Sat Oct 5 19:40:43 2002 --- gsl-1.4/doc/intro.texi Thu Aug 14 10:11:20 2003 *************** *** 14,17 **** --- 14,18 ---- * An Example Program:: * No Warranty:: + * Reporting Bugs:: * Further Information:: @end menu *************** *** 28,32 **** @item @tab Permutations @tab Combinations @item @tab Sorting @tab BLAS Support ! @item @tab Linear Algebra @tab BLAS Support @item @tab Fast Fourier Transforms @tab Eigensystems @item @tab Random Numbers @tab Quadrature --- 29,33 ---- @item @tab Permutations @tab Combinations @item @tab Sorting @tab BLAS Support ! @item @tab Linear Algebra @tab CBLAS Library @item @tab Fast Fourier Transforms @tab Eigensystems @item @tab Random Numbers @tab Quadrature *************** *** 59,75 **** get from you. ! Specifically, we want to make sure that you have the right to give away ! copies of any programs related to the GNU Scientific Library, that you ! receive their source code or else can get it if you want it, that you ! can change these programs or use pieces of them in new free programs, ! and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute ! copies of any related code which uses the GNU Scientific Library, you ! must give the recipients all the rights that you have. You must make ! sure that they, too, receive or can get the source code. And you must ! tell them their rights. This means that the library should not be ! redistributed in proprietary programs. Also, for our own protection, we must make certain that everyone finds --- 60,77 ---- get from you. ! Specifically, we want to make sure that you have the right to share ! copies of programs that you are given which use the GNU Scientific ! Library, that you receive their source code or else can get it if you ! want it, that you can change these programs or use pieces of them in new ! free programs, and that you know you can do these things. To make sure that everyone has such rights, we have to forbid you to deprive anyone else of these rights. For example, if you distribute ! copies of any code which uses the GNU Scientific Library, you must give ! the recipients all the rights that you have received. You must make ! sure that they, too, receive or can get the source code, both to the ! library and the code which uses it. And you must tell them their ! rights. This means that the library should not be redistributed in ! proprietary programs. Also, for our own protection, we must make certain that everyone finds *************** *** 109,116 **** The preferred platform for the library is a GNU system, which allows it to take advantage of additional features in the GNU C compiler and GNU C ! library. However, the library is fully portable and compiles on most ! Unix platforms. It is also available for Microsoft Windows. Precompiled ! versions of the library can be purchased from commercial redistributors ! listed on the website. Announcements of new releases, updates and other relevant events are --- 111,117 ---- The preferred platform for the library is a GNU system, which allows it to take advantage of additional features in the GNU C compiler and GNU C ! library. However, the library is fully portable and should compile on ! most systems. Precompiled versions of the library can be purchased from ! commercial redistributors listed on the website. Announcements of new releases, updates and other relevant events are *************** *** 126,162 **** your subscription. - @node An Example Program - @section An Example Program - - The following short program demonstrates the use of the library by - computing the value of the Bessel function @math{J_0(x)} for @math{x=5}, - - @example - #include - #include - - int - main (void) - @{ - double x = 5.0; - - double y = gsl_sf_bessel_J0 (x); - - printf("J0(%g) = %.18e\n", x, y); - - return 0; - @} - @end example - @noindent - The output is shown below, and should be correct to double-precision - accuracy, - - @example - J0(5) = -1.775967713143382920e-01 - @end example - @noindent - The steps needed to compile programs which use the library are described - in the next chapter. - @node No Warranty @section No Warranty --- 127,130 ---- *************** *** 168,172 **** Public License}). ! @node Further Information, , No Warranty, Introduction @section Further Information @cindex mailing list archives --- 136,171 ---- Public License}). ! @node Reporting Bugs ! @section Reporting Bugs ! @cindex reporting bugs in GSL ! @cindex bugs, how to report ! @cindex bug-gsl mailing list ! @cindex mailing list, bug-gsl ! A list of known bugs can be found in the @file{BUGS} file included in ! the GSL distribution. Details of compilation problems can be found in ! the @file{INSTALL} file. ! ! If you find a bug which is not listed in these files please report it to ! @email{bug-gsl@@gnu.org}. ! ! All bug reports should include: ! ! @itemize @bullet ! @item ! The version number of GSL ! @item ! The hardware and operating system ! @item ! The compiler used, including version number and compilation options ! @item ! A description of the bug behavior ! @item ! A short program which exercises the bug ! @end itemize ! @noindent ! It is also useful if you can report whether the same problem occurs ! when the library is compiled without optimization. Thank you. ! ! @node Further Information @section Further Information @cindex mailing list archives diff -x.info* -rc2P gsl-1.3/doc/linalg.texi gsl-1.4/doc/linalg.texi *** gsl-1.3/doc/linalg.texi Tue Jan 15 12:19:46 2002 --- gsl-1.4/doc/linalg.texi Mon Jun 2 15:59:05 2003 *************** *** 30,33 **** --- 30,34 ---- * Tridiagonal Decomposition of Hermitian Matrices:: * Bidiagonalization:: + * Householder Transformations:: * Householder solver for linear systems:: * Tridiagonal Systems:: *************** *** 61,64 **** --- 62,66 ---- @math{A x = b} into a pair of triangular systems (@math{L y = P b}, @math{U x = y}), which can be solved by forward and back-substitution. + Note that the @math{LU} decomposition is valid for singular matrices. @deftypefun int gsl_linalg_LU_decomp (gsl_matrix * @var{A}, gsl_permutation * @var{p}, int *@var{signum}) *************** *** 322,327 **** Householder vector @math{v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i))}. This is the same storage scheme ! as used by @sc{lapack}. On output the norms of each column of @var{R} ! are stored in the vector @var{norm}. The algorithm used to perform the decomposition is Householder QR with --- 324,329 ---- Householder vector @math{v_i = (0,...,1,A(i+1,i),A(i+2,i),...,A(m,i))}. This is the same storage scheme ! as used by @sc{lapack}. The vector @var{norm} is workspace of length ! @var{N} used for column pivoting. The algorithm used to perform the decomposition is Householder QR with *************** *** 432,436 **** @deftypefun int gsl_linalg_SV_decomp_mod (gsl_matrix * @var{A}, gsl_matrix * @var{X}, gsl_matrix * @var{V}, gsl_vector * @var{S}, gsl_vector * @var{work}) This function computes the SVD using the modified Golub-Reinsch ! algorithm, which is faster for @math{M>>N}. It requires the vector @var{work} and the @math{N}-by-@math{N} matrix @var{X} as additional working space. --- 434,439 ---- @deftypefun int gsl_linalg_SV_decomp_mod (gsl_matrix * @var{A}, gsl_matrix * @var{X}, gsl_matrix * @var{V}, gsl_vector * @var{S}, gsl_vector * @var{work}) This function computes the SVD using the modified Golub-Reinsch ! algorithm, which is faster for @c{$M \gg N$} ! @math{M>>N}. It requires the vector @var{work} and the @math{N}-by-@math{N} matrix @var{X} as additional working space. *************** *** 650,654 **** @code{gsl_linalg_bidiag_decomp}, (@var{A}, @var{tau_U}, @var{tau_V}) into the separate orthogonal matrices @var{U}, @var{V} and the diagonal ! vector @var{diag} and superdiagonal @var{superdiag}. @end deftypefun --- 653,659 ---- @code{gsl_linalg_bidiag_decomp}, (@var{A}, @var{tau_U}, @var{tau_V}) into the separate orthogonal matrices @var{U}, @var{V} and the diagonal ! vector @var{diag} and superdiagonal @var{superdiag}. Note that @var{U} ! is stored as a compact @math{M}-by-@math{N} orthogonal matrix satisfying ! @math{U^T U = I} for efficiency. @end deftypefun *************** *** 667,670 **** --- 672,734 ---- @end deftypefun + @node Householder Transformations + @section Householder Transformations + @cindex Householder matrix + @cindex Householder transformation + @cindex transformation, Householder + + A Householder transformation is a rank-1 modification of the identity + matrix which can be used to zero out selected elements of a vector. A + Householder matrix @math{P} takes the form, + + @tex + \beforedisplay + $$ + P = I - \tau v v^T + $$ + \afterdisplay + @end tex + @ifinfo + @example + P = I - \tau v v^T + @end example + @end ifinfo + @noindent + where @math{v} is a vector (called the @dfn{Householder vector}) and + @math{\tau = 2/(v^T v)}. The functions described in this section use the + rank-1 structure of the Householder matrix to create and apply + Householder transformations efficiently. + + @deftypefun double gsl_linalg_houlsehoulder_transform (gsl_vector * @var{v}) + This function prepares a Householder transformation @math{P = I - \tau v + v^T} which can be used to zero all the elements of the input vector except + the first. On output the transformation is stored in the vector @var{v} + and the scalar @math{\tau} is returned. + @end deftypefun + + @deftypefun int gsl_linalg_householder_hm (double tau, const gsl_vector * v, gsl_matrix * A) + This function applies the Householder matrix @math{P} defined by the + scalar @var{tau} and the vector @var{v} to the left-hand side of the + matrix @var{A}. On output the result @math{P A} is stored in @var{A}. + @end deftypefun + + @deftypefun int gsl_linalg_householder_mh (double tau, const gsl_vector * v, gsl_matrix * A) + This function applies the Householder matrix @math{P} defined by the + scalar @var{tau} and the vector @var{v} to the right-hand side of the + matrix @var{A}. On output the result @math{A P} is stored in @var{A}. + @end deftypefun + + @deftypefun int gsl_linalg_householder_hv (double tau, const gsl_vector * v, gsl_vector * w) + This function applies the Householder transformation @math{P} defined by + the scalar @var{tau} and the vector @var{v} to the vector @var{w}. On + output the result @math{P w} is stored in @var{w}. + @end deftypefun + + @comment @deftypefun int gsl_linalg_householder_hm1 (double tau, gsl_matrix * A) + @comment This function applies the Householder transform, defined by the scalar + @comment @var{tau} and the vector @var{v}, to a matrix being build up from the + @comment identity matrix, using the first column of @var{A} as a householder vector. + @comment @end deftypefun + @node Householder solver for linear systems @section Householder solver for linear systems *************** *** 784,822 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! double a_data[] = @{ 0.18, 0.60, 0.57, 0.96, ! 0.41, 0.24, 0.99, 0.58, ! 0.14, 0.30, 0.97, 0.66, ! 0.51, 0.13, 0.19, 0.85 @}; ! ! double b_data[] = @{ 1.0, 2.0, 3.0, 4.0 @}; ! ! gsl_matrix_view m ! = gsl_matrix_view_array(a_data, 4, 4); ! ! gsl_vector_view b ! = gsl_vector_view_array(b_data, 4); ! ! gsl_vector *x = gsl_vector_alloc (4); ! ! int s; ! ! gsl_permutation * p = gsl_permutation_alloc (4); ! ! gsl_linalg_LU_decomp (&m.matrix, p, &s); ! ! gsl_linalg_LU_solve (&m.matrix, p, &b.vector, x); ! ! printf ("x = \n"); ! gsl_vector_fprintf(stdout, x, "%g"); ! ! gsl_permutation_free (p); ! return 0; ! @} @end example @noindent --- 848,852 ---- @example ! @verbatiminclude examples/linalglu.c @end example @noindent *************** *** 824,831 **** @example ! x = -4.05205 ! -12.6056 ! 1.66091 ! 8.69377 @end example @noindent --- 854,858 ---- @example ! @verbatiminclude examples/linalglu.out @end example @noindent *************** *** 864,868 **** @end itemize @noindent ! The @sc{lapack} library is described in, @itemize @asis --- 891,895 ---- @end itemize @noindent ! The @sc{lapack} library is described in the following manual, @itemize @asis diff -x.info* -rc2P gsl-1.3/doc/math.texi gsl-1.4/doc/math.texi *** gsl-1.3/doc/math.texi Mon Aug 26 16:32:02 2002 --- gsl-1.4/doc/math.texi Wed Jul 16 15:45:38 2003 *************** *** 215,222 **** @deftypefun double gsl_pow_int (double @var{x}, int @var{n}) This routine computes the power @math{x^n} for integer @var{n}. The ! power is computed using the minimum number of multiplications. For ! example, @math{x^8} is computed as @math{((x^2)^2)^2}, requiring only 3 ! multiplications. A version of this function which also computes the ! numerical error in the result is available as @code{gsl_sf_pow_int_e}. @end deftypefun --- 215,222 ---- @deftypefun double gsl_pow_int (double @var{x}, int @var{n}) This routine computes the power @math{x^n} for integer @var{n}. The ! power is computed efficiently --- for example, @math{x^8} is computed as ! @math{((x^2)^2)^2}, requiring only 3 multiplications. A version of this ! function which also computes the numerical error in the result is ! available as @code{gsl_sf_pow_int_e}. @end deftypefun *************** *** 328,332 **** The relative accuracy is measured using an interval of size @math{2 \delta}, where @math{\delta = 2^k \epsilon} and @math{k} is the ! maximimum base-2 exponent of @math{x} and @math{y} as computed by the function @code{frexp()}. --- 328,332 ---- The relative accuracy is measured using an interval of size @math{2 \delta}, where @math{\delta = 2^k \epsilon} and @math{k} is the ! maximum base-2 exponent of @math{x} and @math{y} as computed by the function @code{frexp()}. diff -x.info* -rc2P gsl-1.3/doc/mdate-sh gsl-1.4/doc/mdate-sh *** gsl-1.3/doc/mdate-sh Wed Feb 24 15:02:08 1999 --- gsl-1.4/doc/mdate-sh Mon Jun 16 08:00:23 2003 *************** *** 1,5 **** #!/bin/sh # Get modification time of a file or directory and pretty-print it. ! # Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # --- 1,5 ---- #!/bin/sh # Get modification time of a file or directory and pretty-print it. ! # Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc. # written by Ulrich Drepper , June 1995 # *************** *** 18,21 **** --- 18,26 ---- # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + # Prevent date giving response in another language. LANG=C *************** *** 26,47 **** export LC_TIME ! # Get the extended ls output of the file or directory. ! # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. if ls -L /dev/null 1>/dev/null 2>&1; then ! set - x`ls -L -l -d $1` else ! set - x`ls -l -d $1` fi - # The month is at least the fourth argument - # (3 shifts here, the next inside the loop). - shift - shift - shift ! # Find the month. Next argument is day, followed by the year or time. month= until test $month do shift case $1 in Jan) month=January; nummonth=1;; --- 31,66 ---- export LC_TIME ! save_arg1="$1" ! ! # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then ! ls_command='ls -L -l -d' else ! ls_command='ls -l -d' fi ! # A `ls -l' line looks as follows on OS/2. ! # drwxrwx--- 0 Aug 11 2001 foo ! # This differs from Unix, which adds ownership information. ! # drwxrwx--- 2 root root 4096 Aug 11 2001 foo ! # ! # To find the date, we split the line on spaces and iterate on words ! # until we find a month. This cannot work with files whose owner is a ! # user named `Jan', or `Feb', etc. However, it's unlikely that `/' ! # will be owned by a user whose name is a month. So we first look at ! # the extended ls output of the root directory to decide how many ! # words should be skipped to get the date. ! ! # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. ! set - x`$ls_command /` ! ! # Find which argument is the month. month= + command= until test $month do shift + # Add another shift to the command. + command="$command shift;" case $1 in Jan) month=January; nummonth=1;; *************** *** 59,62 **** --- 78,103 ---- esac done + + # Get the extended ls output of the file or directory. + set - x`eval "$ls_command \"\$save_arg1\""` + + # Remove all preceding arguments + eval $command + + # Get the month. Next argument is day, followed by the year or time. + case $1 in + Jan) month=January; nummonth=1;; + Feb) month=February; nummonth=2;; + Mar) month=March; nummonth=3;; + Apr) month=April; nummonth=4;; + May) month=May; nummonth=5;; + Jun) month=June; nummonth=6;; + Jul) month=July; nummonth=7;; + Aug) month=August; nummonth=8;; + Sep) month=September; nummonth=9;; + Oct) month=October; nummonth=10;; + Nov) month=November; nummonth=11;; + Dec) month=December; nummonth=12;; + esac day=$2 diff -x.info* -rc2P gsl-1.3/doc/min.texi gsl-1.4/doc/min.texi *** gsl-1.3/doc/min.texi Sun Dec 15 13:19:04 2002 --- gsl-1.4/doc/min.texi Mon Jun 2 16:00:02 2003 *************** *** 36,40 **** The minimization algorithms begin with a bounded region known to contain ! a minimum. The region is described by an lower bound @math{a} and an upper bound @math{b}, with an estimate of the location of the minimum @math{x}. --- 36,40 ---- The minimization algorithms begin with a bounded region known to contain ! a minimum. The region is described by a lower bound @math{a} and an upper bound @math{b}, with an estimate of the location of the minimum @math{x}. *************** *** 42,46 **** @iftex @sp 1 ! @center @image{min-interval} @end iftex --- 42,46 ---- @iftex @sp 1 ! @center @image{min-interval,3.4in} @end iftex *************** *** 178,183 **** @example ! printf("s is a '%s' minimizer\n", ! gsl_min_fminimizer_name (s)); @end example --- 178,183 ---- @example ! printf ("s is a '%s' minimizer\n", ! gsl_min_fminimizer_name (s)); @end example *************** *** 378,444 **** @example ! #include ! #include ! #include ! #include ! ! double fn1 (double x, void * params) ! @{ ! return cos(x) + 1.0; ! @} ! ! int ! main (void) ! @{ ! int status; ! int iter = 0, max_iter = 100; ! const gsl_min_fminimizer_type *T; ! gsl_min_fminimizer *s; ! double m = 2.0, m_expected = M_PI; ! double a = 0.0, b = 6.0; ! gsl_function F; ! ! F.function = &fn1; ! F.params = 0; ! ! T = gsl_min_fminimizer_brent; ! s = gsl_min_fminimizer_alloc (T); ! gsl_min_fminimizer_set (s, &F, m, a, b); ! ! printf ("using %s method\n", ! gsl_min_fminimizer_name (s)); ! ! printf ("%5s [%9s, %9s] %9s %10s %9s\n", ! "iter", "lower", "upper", "min", ! "err", "err(est)"); ! ! printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", ! iter, a, b, ! m, m - m_expected, b - a); ! ! do ! @{ ! iter++; ! status = gsl_min_fminimizer_iterate (s); ! ! m = gsl_min_fminimizer_x_minimum (s); ! a = gsl_min_fminimizer_x_lower (s); ! b = gsl_min_fminimizer_x_upper (s); ! ! status ! = gsl_min_test_interval (a, b, 0.001, 0.0); ! ! if (status == GSL_SUCCESS) ! printf ("Converged:\n"); ! ! printf ("%5d [%.7f, %.7f] " ! "%.7f %.7f %+.7f %.7f\n", ! iter, a, b, ! m, m_expected, m - m_expected, b - a); ! @} ! while (status == GSL_CONTINUE && iter < max_iter); ! ! return status; ! @} @end example --- 378,382 ---- @example ! @verbatiminclude examples/min.c @end example *************** *** 448,464 **** @smallexample bash$ ./a.out ! 0 [0.0000000, 6.0000000] 2.0000000 -1.1415927 6.0000000 ! 1 [2.0000000, 6.0000000] 3.2758640 +0.1342713 4.0000000 ! 2 [2.0000000, 3.2831929] 3.2758640 +0.1342713 1.2831929 ! 3 [2.8689068, 3.2831929] 3.2758640 +0.1342713 0.4142862 ! 4 [2.8689068, 3.2831929] 3.2758640 +0.1342713 0.4142862 ! 5 [2.8689068, 3.2758640] 3.1460585 +0.0044658 0.4069572 ! 6 [3.1346075, 3.2758640] 3.1460585 +0.0044658 0.1412565 ! 7 [3.1346075, 3.1874620] 3.1460585 +0.0044658 0.0528545 ! 8 [3.1346075, 3.1460585] 3.1460585 +0.0044658 0.0114510 ! 9 [3.1346075, 3.1460585] 3.1424060 +0.0008133 0.0114510 ! 10 [3.1346075, 3.1424060] 3.1415885 -0.0000041 0.0077985 ! Converged: ! 11 [3.1415885, 3.1424060] 3.1415927 -0.0000000 0.0008175 @end smallexample --- 386,390 ---- @smallexample bash$ ./a.out ! @verbatiminclude examples/min.out @end smallexample diff -x.info* -rc2P gsl-1.3/doc/montecarlo.texi gsl-1.4/doc/montecarlo.texi *** gsl-1.3/doc/montecarlo.texi Mon Jul 8 18:13:50 2002 --- gsl-1.4/doc/montecarlo.texi Wed Jul 16 14:44:45 2003 *************** *** 1,4 **** @cindex Monte Carlo integration ! This chapter describes routines for multidimensional Monte Carlo integration. These include the traditional Monte Carlo method and --- 1,4 ---- @cindex Monte Carlo integration ! @cindex stratified sampling in monte carlo integration This chapter describes routines for multidimensional Monte Carlo integration. These include the traditional Monte Carlo method and *************** *** 43,50 **** @node Monte Carlo Interface @section Interface ! All of the Monte Carlo integration routines use the same interface. ! There is an allocator to allocate memory for control variables and ! workspace, a routine to initialize those control variables, the ! integrator itself, and a function to free the space when done. Each integration function requires a random number generator to be --- 43,51 ---- @node Monte Carlo Interface @section Interface ! All of the Monte Carlo integration routines use the same general form of ! interface. There is an allocator to allocate memory for control ! variables and workspace, a routine to initialize those control ! variables, the integrator itself, and a function to free the space when ! done. Each integration function requires a random number generator to be *************** *** 69,73 **** @table @code ! @item double (* @var{f}) (double * @var{x}, size_t @var{dim}, void * @var{params}) this function should return the value @c{$f(x,\hbox{\it params})$} --- 70,74 ---- @table @code ! @item double (* f) (double * @var{x}, size_t @var{dim}, void * @var{params}) this function should return the value @c{$f(x,\hbox{\it params})$} *************** *** 76,83 **** the point where the function is to be evaluated. ! @item size_t @var{dim} the number of dimensions for @var{x} ! @item void * @var{params} a pointer to the parameters of the function @end table --- 77,84 ---- the point where the function is to be evaluated. ! @item size_t dim the number of dimensions for @var{x} ! @item void * params a pointer to the parameters of the function @end table *************** *** 112,117 **** if (dim != 2) @{ ! fprintf(stderr, "error: dim != 2"); ! abort(); @} --- 113,118 ---- if (dim != 2) @{ ! fprintf (stderr, "error: dim != 2"); ! abort (); @} *************** *** 209,213 **** @end deftypefun ! @deftypefun void gsl_monte_plain_free (gsl_monte_plain_state* @var{s}), This function frees the memory associated with the integrator state @var{s}. --- 210,214 ---- @end deftypefun ! @deftypefun void gsl_monte_plain_free (gsl_monte_plain_state * @var{s}) This function frees the memory associated with the integrator state @var{s}. *************** *** 307,311 **** @end deftypefun ! @deftypefun void gsl_monte_miser_free (gsl_monte_miser_state* @var{s}), This function frees the memory associated with the integrator state @var{s}. --- 308,312 ---- @end deftypefun ! @deftypefun void gsl_monte_miser_free (gsl_monte_miser_state * @var{s}) This function frees the memory associated with the integrator state @var{s}. *************** *** 445,449 **** @sc{vegas} incorporates a number of additional features, and combines both stratified sampling and importance sampling. The integration region is ! divided into a number of ``boxes'', with each box getting in fixed number of points (the goal is 2). Each box can then have a fractional number of bins, but if bins/box is less than two, Vegas switches to a --- 446,450 ---- @sc{vegas} incorporates a number of additional features, and combines both stratified sampling and importance sampling. The integration region is ! divided into a number of ``boxes'', with each box getting a fixed number of points (the goal is 2). Each box can then have a fractional number of bins, but if bins/box is less than two, Vegas switches to a *************** *** 478,482 **** @end deftypefun ! @deftypefun void gsl_monte_vegas_free (gsl_monte_vegas_state* @var{s}), This function frees the memory associated with the integrator state @var{s}. --- 479,483 ---- @end deftypefun ! @deftypefun void gsl_monte_vegas_free (gsl_monte_vegas_state * @var{s}) This function frees the memory associated with the integrator state @var{s}. *************** *** 616,722 **** @smallexample ! #include ! #include ! #include ! #include ! #include ! #include ! ! /* Computation of the integral, ! ! I = int (dx dy dz)/(2pi)^3 1/(1-cos(x)cos(y)cos(z)) ! ! over (-pi,-pi,-pi) to (+pi, +pi, +pi). The exact answer ! is Gamma(1/4)^4/(4 pi^3). This example is taken from ! C.Itzykson, J.M.Drouffe, "Statistical Field Theory - ! Volume 1", Section 1.1, p21, which cites the original ! paper M.L.Glasser, I.J.Zucker, Proc.Natl.Acad.Sci.USA 74 ! 1800 (1977) */ ! ! /* For simplicity we compute the integral over the region ! (0,0,0) -> (pi,pi,pi) and multiply by 8 */ ! ! double exact = 1.3932039296856768591842462603255; ! ! double ! g (double *k, size_t dim, void *params) ! @{ ! double A = 1.0 / (M_PI * M_PI * M_PI); ! return A / (1.0 - cos (k[0]) * cos (k[1]) * cos (k[2])); ! @} ! ! void ! display_results (char *title, double result, double error) ! @{ ! printf ("%s ==================\n", title); ! printf ("result = % .6f\n", result); ! printf ("sigma = % .6f\n", error); ! printf ("exact = % .6f\n", exact); ! printf ("error = % .6f = %.1g sigma\n", result - exact, ! fabs (result - exact) / error); ! @} ! ! int ! main (void) ! @{ ! double res, err; ! ! double xl[3] = @{ 0, 0, 0 @}; ! double xu[3] = @{ M_PI, M_PI, M_PI @}; ! ! const gsl_rng_type *T; ! gsl_rng *r; ! ! gsl_monte_function G = @{ &g, 3, 0 @}; ! ! size_t calls = 500000; ! ! gsl_rng_env_setup (); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! @{ ! gsl_monte_plain_state *s = gsl_monte_plain_alloc (3); ! gsl_monte_plain_integrate (&G, xl, xu, 3, calls, r, s, ! &res, &err); ! gsl_monte_plain_free (s); ! ! display_results ("plain", res, err); ! @} ! ! @{ ! gsl_monte_miser_state *s = gsl_monte_miser_alloc (3); ! gsl_monte_miser_integrate (&G, xl, xu, 3, calls, r, s, ! &res, &err); ! gsl_monte_miser_free (s); ! ! display_results ("miser", res, err); ! @} ! ! @{ ! gsl_monte_vegas_state *s = gsl_monte_vegas_alloc (3); ! ! gsl_monte_vegas_integrate (&G, xl, xu, 3, 10000, r, s, ! &res, &err); ! display_results ("vegas warm-up", res, err); ! ! printf ("converging...\n"); ! ! do ! @{ ! gsl_monte_vegas_integrate (&G, xl, xu, 3, calls/5, r, s, ! &res, &err); ! printf ("result = % .6f sigma = % .6f " ! "chisq/dof = %.1f\n", res, err, s->chisq); ! @} ! while (fabs (s->chisq - 1.0) > 0.5); ! ! display_results ("vegas final", res, err); ! ! gsl_monte_vegas_free (s); ! @} ! return 0; ! @} @end smallexample @noindent --- 617,621 ---- @smallexample ! @verbatiminclude examples/monte.c @end smallexample @noindent diff -x.info* -rc2P gsl-1.3/doc/multifit.texi gsl-1.4/doc/multifit.texi *** gsl-1.3/doc/multifit.texi Sun Dec 15 13:20:56 2002 --- gsl-1.4/doc/multifit.texi Wed Jul 16 14:51:52 2003 *************** *** 126,131 **** @example ! printf("s is a '%s' solver\n", ! gsl_multifit_fdfsolver_name (s)); @end example --- 126,131 ---- @example ! printf ("s is a '%s' solver\n", ! gsl_multifit_fdfsolver_name (s)); @end example *************** *** 150,162 **** returning an appropriate error code if the function cannot be computed. ! @item size_t @var{n} the number of functions, i.e. the number of components of the vector @var{f} ! @item size_t @var{p} the number of independent variables, i.e. the number of components of the vectors @var{x} ! @item void * @var{params} a pointer to the parameters of the function @end table --- 150,162 ---- returning an appropriate error code if the function cannot be computed. ! @item size_t n the number of functions, i.e. the number of components of the vector @var{f} ! @item size_t p the number of independent variables, i.e. the number of components of the vectors @var{x} ! @item void * params a pointer to the parameters of the function @end table *************** *** 188,200 **** same time. ! @item size_t @var{n} the number of functions, i.e. the number of components of the vector @var{f} ! @item size_t @var{p} the number of independent variables, i.e. the number of components of the vectors @var{x} ! @item void * @var{params} a pointer to the parameters of the function @end table --- 188,200 ---- same time. ! @item size_t n the number of functions, i.e. the number of components of the vector @var{f} ! @item size_t p the number of independent variables, i.e. the number of components of the vectors @var{x} ! @item void * params a pointer to the parameters of the function @end table *************** *** 606,612 **** double t = i; y[i] = 1.0 + 5 * exp (-0.1 * t) ! + gsl_ran_gaussian(r, 0.1); sigma[i] = 0.1; ! printf("data: %d %g %g\n", i, y[i], sigma[i]); @}; --- 606,612 ---- double t = i; y[i] = 1.0 + 5 * exp (-0.1 * t) ! + gsl_ran_gaussian (r, 0.1); sigma[i] = 0.1; ! printf ("data: %d %g %g\n", i, y[i], sigma[i]); @}; *************** *** 642,648 **** #define ERR(i) sqrt(gsl_matrix_get(covar,i,i)) ! printf("A = %.5f +/- %.5f\n", FIT(0), ERR(0)); ! printf("lambda = %.5f +/- %.5f\n", FIT(1), ERR(1)); ! printf("b = %.5f +/- %.5f\n", FIT(2), ERR(2)); printf ("status = %s\n", gsl_strerror (status)); --- 642,653 ---- #define ERR(i) sqrt(gsl_matrix_get(covar,i,i)) ! printf ("A = %.5f +/- %.5f\n", FIT(0), ERR(0)); ! printf ("lambda = %.5f +/- %.5f\n", FIT(1), ERR(1)); ! printf ("b = %.5f +/- %.5f\n", FIT(2), ERR(2)); ! ! @{ ! double chi = gsl_blas_dnrm2(s->f); ! printf("chisq/dof = %g\n", pow(chi, 2.0)/ (n - p)); ! @} printf ("status = %s\n", gsl_strerror (status)); *************** *** 682,695 **** lambda = 0.10052 +/- 0.00309 b = 0.99758 +/- 0.03944 status = success @end smallexample @noindent ! The approximate values of the parameters are found correctly. The ! errors on the parameters are given by the square roots of the diagonal ! elements of the covariance matrix. @iftex @sp 1 ! @center @image{fit-exp,4in} @end iftex --- 687,705 ---- lambda = 0.10052 +/- 0.00309 b = 0.99758 +/- 0.03944 + chisq/dof = 1.08335 status = success @end smallexample @noindent ! The approximate values of the parameters are found correctly, and the ! chi-squared value indicates a good fit (the chi-squared per degree of ! freedom is approximately 1). In this case the errors on the parameters ! can be estimated from the square roots of the diagonal elements of the ! covariance matrix. If the chi-squared value indicates a poor fit then ! error estimates obtained from the covariance matrix are not valid, since ! the Gaussian approximation would not apply. @iftex @sp 1 ! @center @image{fit-exp,3.4in} @end iftex diff -x.info* -rc2P gsl-1.3/doc/multimin.texi gsl-1.4/doc/multimin.texi *** gsl-1.3/doc/multimin.texi Sun Dec 15 13:19:03 2002 --- gsl-1.4/doc/multimin.texi Wed Jul 16 14:51:51 2003 *************** *** 53,57 **** to move in a downhill direction. ! All algorithms making use of the gradient of the fuction perform a one-dimensional line minimisation along this direction until the lowest point is found to a suitable tolerance. The search direction is then --- 53,57 ---- to move in a downhill direction. ! All algorithms making use of the gradient of the function perform a one-dimensional line minimisation along this direction until the lowest point is found to a suitable tolerance. The search direction is then *************** *** 84,88 **** @noindent Each iteration step consists either of an improvement to the ! line-mimisation in the current direction or an update to the search direction itself. The state for the minimizers is held in a @code{gsl_multimin_fdfminimizer} struct or a --- 84,88 ---- @noindent Each iteration step consists either of an improvement to the ! line-minimisation in the current direction or an update to the search direction itself. The state for the minimizers is held in a @code{gsl_multimin_fdfminimizer} struct or a *************** *** 150,155 **** @example ! printf("s is a '%s' minimizer\n", ! gsl_multimin_fdfminimizer_name (s)); @end example @noindent --- 150,155 ---- @example ! printf ("s is a '%s' minimizer\n", ! gsl_multimin_fdfminimizer_name (s)); @end example @noindent *************** *** 177,181 **** @math{f(x,params)} for argument @var{x} and parameters @var{params}. ! @item int (* df) (const gsl_vector * @var{x}, void * @var{params}, gsl_vector * @var{g}) this function should store the @var{n}-dimensional gradient @c{$g_i = \partial f(x,\hbox{\it params}) / \partial x_i$} --- 177,181 ---- @math{f(x,params)} for argument @var{x} and parameters @var{params}. ! @item void (* df) (const gsl_vector * @var{x}, void * @var{params}, gsl_vector * @var{g}) this function should store the @var{n}-dimensional gradient @c{$g_i = \partial f(x,\hbox{\it params}) / \partial x_i$} *************** *** 184,188 **** function cannot be computed. ! @item int (* fdf) (const gsl_vector * @var{x}, void * @var{params}, double * f, gsl_vector * @var{g}) This function should set the values of the @var{f} and @var{g} as above, for arguments @var{x} and parameters @var{params}. This function provides --- 184,188 ---- function cannot be computed. ! @item void (* fdf) (const gsl_vector * @var{x}, void * @var{params}, double * f, gsl_vector * @var{g}) This function should set the values of the @var{f} and @var{g} as above, for arguments @var{x} and parameters @var{params}. This function provides *************** *** 191,199 **** same time. ! @item size_t @var{n} the dimension of the system, i.e. the number of components of the vectors @var{x}. ! @item void * @var{params} a pointer to the parameters of the function. @end table --- 191,199 ---- same time. ! @item size_t n the dimension of the system, i.e. the number of components of the vectors @var{x}. ! @item void * params a pointer to the parameters of the function. @end table *************** *** 209,217 **** @math{f(x,params)} for argument @var{x} and parameters @var{params}. ! @item size_t @var{n} the dimension of the system, i.e. the number of components of the vectors @var{x}. ! @item void * @var{params} a pointer to the parameters of the function. @end table --- 209,217 ---- @math{f(x,params)} for argument @var{x} and parameters @var{params}. ! @item size_t n the dimension of the system, i.e. the number of components of the vectors @var{x}. ! @item void * params a pointer to the parameters of the function. @end table *************** *** 354,358 **** @var{epsabs} can be made from the desired accuracy in the function for small variations in @math{x}. The relationship between these quantities ! is given by @c{$\delta f = g\,\delta x$} @math{\delta f = g \delta x}. @end deftypefun --- 354,358 ---- @var{epsabs} can be made from the desired accuracy in the function for small variations in @math{x}. The relationship between these quantities ! is given by @c{$\delta{f} = g\,\delta{x}$} @math{\delta f = g \delta x}. @end deftypefun *************** *** 419,423 **** The steepest descent algorithm follows the downhill gradient of the function at each step. When a downhill step is successful the step-size ! is increased by factor of two. If the downhill step leads to a higher function value then the algorithm backtracks and the step size is decreased using the parameter @var{tol}. A suitable value of @var{tol} --- 419,423 ---- The steepest descent algorithm follows the downhill gradient of the function at each step. When a downhill step is successful the step-size ! is increased by a factor of two. If the downhill step leads to a higher function value then the algorithm backtracks and the step size is decreased using the parameter @var{tol}. A suitable value of @var{tol} *************** *** 430,462 **** @cindex Simplex algorithm, minimization @cindex Minimization, simplex algorithm ! This is the Simplex algorithm by Nelder and Mead. It constructs @math{n} vectors @math{p_i} from the ! starting vector @var{x} as follows: @tex \beforedisplay $$ \eqalign{ ! p_0 & = {x_0, x_1, \cdots , x_n} \cr ! p_1 & = {x_0 + step\_size_0, x_1, \cdots , x_n} \cr ! p_2 & = {x_0, x_1 + step\_size_1, \cdots , x_n} \cr ! p_n & = {x_0, x_1, \cdots , x_n+step\_size_n} \cr } $$ \afterdisplay ! @end tex @noindent ! that form the @math{n+1} vertices of a simplex in @math{n} ! dimensions. In each iteration step the algorithm tries to improve ! the parameter vector @math{p_i} corresponding to the highest, i. e. ! worst, function value by simple geometrical transformations. These are reflection, reflection followed by expansion, contraction and multiple contraction. Using these transformations the simplex moves through the parameter space towards the minimum, where it contracts itself. ! After each iteration, the best vertex is returned. ! Note, that due to the nature of the algorithm ! (getting rid of the worst estimate), every ! iteration doesn't necessarily improve the current best parameter vector. ! Usually several iterations are required. The routine calculates the minimizer specific characteristic size as the --- 430,470 ---- @cindex Simplex algorithm, minimization @cindex Minimization, simplex algorithm ! This is the Simplex algorithm of Nelder and Mead. It constructs @math{n} vectors @math{p_i} from the ! starting vector @var{x} and the vector @var{step_size} as follows: @tex \beforedisplay $$ \eqalign{ ! p_0 & = (x_0, x_1, \cdots , x_n) \cr ! p_1 & = (x_0 + step\_size_0, x_1, \cdots , x_n) \cr ! p_2 & = (x_0, x_1 + step\_size_1, \cdots , x_n) \cr ! \dots &= \dots \cr ! p_n & = (x_0, x_1, \cdots , x_n+step\_size_n) \cr } $$ \afterdisplay ! @end tex ! @ifinfo ! @example ! p_0 = (x_0, x_1, ... , x_n) ! p_1 = (x_0 + step_size_0, x_1, ... , x_n) ! p_2 = (x_0, x_1 + step_size_1, ... , x_n) ! ... = ... ! p_n = (x_0, x_1, ... , x_n+step_size_n) ! @end example ! @end ifinfo @noindent ! These vectors form the @math{n+1} vertices of a simplex in @math{n} ! dimensions. On each iteration step the algorithm tries to improve ! the parameter vector @math{p_i} corresponding to the highest ! function value by simple geometrical transformations. These are reflection, reflection followed by expansion, contraction and multiple contraction. Using these transformations the simplex moves through the parameter space towards the minimum, where it contracts itself. ! After each iteration, the best vertex is returned. Note, that due to ! the nature of the algorithm not every step improves the current ! best parameter vector. Usually several iterations are required. The routine calculates the minimizer specific characteristic size as the *************** *** 499,503 **** /* Starting point, x = (5,7) */ - x = gsl_vector_alloc (2); gsl_vector_set (x, 0, 5.0); --- 507,510 ---- *************** *** 566,570 **** @iftex @sp 1 ! @center @image{multimin,4in} @end iftex @noindent --- 573,577 ---- @iftex @sp 1 ! @center @image{multimin,3.4in} @end iftex @noindent *************** *** 590,623 **** size_t iter = 0, i; ! int rval = GSL_CONTINUE; ! int status = GSL_SUCCESS; ! double ssval; /* Initial vertex size vector */ - ss = gsl_vector_alloc (np); ! if (ss == NULL) ! @{ ! GSL_ERROR_VAL ("failed to allocate space for ss", GSL_ENOMEM, 0); ! @} ! gsl_vector_set_all (ss, 1.0); /* Starting point */ - x = gsl_vector_alloc (np); - if (x == NULL) - @{ - gsl_vector_free(ss); - GSL_ERROR_VAL ("failed to allocate space for x", GSL_ENOMEM, 0); - @} - gsl_vector_set (x, 0, 5.0); gsl_vector_set (x, 1, 7.0); /* Initialize method and iterate */ - minex_func.f = &my_f; minex_func.n = np; --- 597,616 ---- size_t iter = 0, i; ! int status; ! double size; /* Initial vertex size vector */ ss = gsl_vector_alloc (np); ! /* Set all step sizes to 1 */ gsl_vector_set_all (ss, 1.0); /* Starting point */ x = gsl_vector_alloc (np); gsl_vector_set (x, 0, 5.0); gsl_vector_set (x, 1, 7.0); /* Initialize method and iterate */ minex_func.f = &my_f; minex_func.n = np; *************** *** 627,631 **** gsl_multimin_fminimizer_set (s, &minex_func, x, ss); ! while (rval == GSL_CONTINUE) @{ iter++; --- 620,624 ---- gsl_multimin_fminimizer_set (s, &minex_func, x, ss); ! do @{ iter++; *************** *** 635,652 **** break; ! rval = gsl_multimin_test_size (gsl_multimin_fminimizer_size (s), ! 1e-2); ! ssval = gsl_multimin_fminimizer_size (s); ! if (rval == GSL_SUCCESS) ! printf ("converged to minimum at\n"); ! printf("%5d ", iter); for (i = 0; i < np; i++) @{ printf ("%10.3e ", gsl_vector_get (s->x, i)); @} ! printf("f() = %-10.3f ssize = %.3f\n", s->fval, ssval); @} gsl_vector_free(x); --- 628,647 ---- break; ! size = gsl_multimin_fminimizer_size (s); ! status = gsl_multimin_test_size (size, 1e-2); ! if (status == GSL_SUCCESS) ! @{ ! printf ("converged to minimum at\n"); ! @} ! printf ("%5d ", iter); for (i = 0; i < np; i++) @{ printf ("%10.3e ", gsl_vector_get (s->x, i)); @} ! printf ("f() = %7.3f size = %.3f\n", s->fval, size); @} + while (status == GSL_CONTINUE && iter < 100); gsl_vector_free(x); *************** *** 662,691 **** @example ! 1 6.500e+00 5.000e+00 f() = 512.500 ssize = 1.082 ! 2 5.250e+00 4.000e+00 f() = 290.625 ssize = 1.372 ! 3 5.250e+00 4.000e+00 f() = 290.625 ssize = 1.372 ! 4 5.500e+00 1.000e+00 f() = 252.500 ssize = 1.372 ! 5 2.625e+00 3.500e+00 f() = 101.406 ssize = 1.823 ! 6 3.469e+00 1.375e+00 f() = 98.760 ssize = 1.526 ! 7 1.820e+00 3.156e+00 f() = 63.467 ssize = 1.105 ! 8 1.820e+00 3.156e+00 f() = 63.467 ssize = 1.105 ! 9 1.016e+00 2.812e+00 f() = 43.206 ssize = 1.105 ! 10 2.041e+00 2.008e+00 f() = 40.838 ssize = 0.645 ! 11 1.236e+00 1.664e+00 f() = 32.816 ssize = 0.645 ! 12 1.236e+00 1.664e+00 f() = 32.816 ssize = 0.447 ! 13 5.225e-01 1.980e+00 f() = 32.288 ssize = 0.447 ! 14 1.103e+00 2.073e+00 f() = 30.214 ssize = 0.345 ! 15 1.103e+00 2.073e+00 f() = 30.214 ssize = 0.264 ! 16 1.103e+00 2.073e+00 f() = 30.214 ssize = 0.160 ! 17 9.864e-01 1.934e+00 f() = 30.090 ssize = 0.132 ! 18 9.190e-01 1.987e+00 f() = 30.069 ssize = 0.092 ! 19 1.028e+00 2.017e+00 f() = 30.013 ssize = 0.056 ! 20 1.028e+00 2.017e+00 f() = 30.013 ssize = 0.046 ! 21 1.028e+00 2.017e+00 f() = 30.013 ssize = 0.033 ! 22 9.874e-01 1.985e+00 f() = 30.006 ssize = 0.028 ! 23 9.846e-01 1.995e+00 f() = 30.003 ssize = 0.023 ! 24 1.007e+00 2.003e+00 f() = 30.001 ssize = 0.012 ! converged to minimum at ! 25 1.007e+00 2.003e+00 f() = 30.001 ssize = 0.010 @end example @noindent --- 657,686 ---- @example ! 1 6.500e+00 5.000e+00 f() = 512.500 size = 1.082 ! 2 5.250e+00 4.000e+00 f() = 290.625 size = 1.372 ! 3 5.250e+00 4.000e+00 f() = 290.625 size = 1.372 ! 4 5.500e+00 1.000e+00 f() = 252.500 size = 1.372 ! 5 2.625e+00 3.500e+00 f() = 101.406 size = 1.823 ! 6 3.469e+00 1.375e+00 f() = 98.760 size = 1.526 ! 7 1.820e+00 3.156e+00 f() = 63.467 size = 1.105 ! 8 1.820e+00 3.156e+00 f() = 63.467 size = 1.105 ! 9 1.016e+00 2.812e+00 f() = 43.206 size = 1.105 ! 10 2.041e+00 2.008e+00 f() = 40.838 size = 0.645 ! 11 1.236e+00 1.664e+00 f() = 32.816 size = 0.645 ! 12 1.236e+00 1.664e+00 f() = 32.816 size = 0.447 ! 13 5.225e-01 1.980e+00 f() = 32.288 size = 0.447 ! 14 1.103e+00 2.073e+00 f() = 30.214 size = 0.345 ! 15 1.103e+00 2.073e+00 f() = 30.214 size = 0.264 ! 16 1.103e+00 2.073e+00 f() = 30.214 size = 0.160 ! 17 9.864e-01 1.934e+00 f() = 30.090 size = 0.132 ! 18 9.190e-01 1.987e+00 f() = 30.069 size = 0.092 ! 19 1.028e+00 2.017e+00 f() = 30.013 size = 0.056 ! 20 1.028e+00 2.017e+00 f() = 30.013 size = 0.046 ! 21 1.028e+00 2.017e+00 f() = 30.013 size = 0.033 ! 22 9.874e-01 1.985e+00 f() = 30.006 size = 0.028 ! 23 9.846e-01 1.995e+00 f() = 30.003 size = 0.023 ! 24 1.007e+00 2.003e+00 f() = 30.001 size = 0.012 ! converged to minimum at ! 25 1.007e+00 2.003e+00 f() = 30.001 size = 0.010 @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/multiroots.texi gsl-1.4/doc/multiroots.texi *** gsl-1.3/doc/multiroots.texi Sun Dec 15 13:20:56 2002 --- gsl-1.4/doc/multiroots.texi Sun Aug 10 14:38:20 2003 *************** *** 159,163 **** @end deftypefun ! @deftypefun int gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * @var{s}, gsl_function_fdf * @var{fdf}, gsl_vector * @var{x}) This function sets, or resets, an existing solver @var{s} to use the function and derivative @var{fdf} and the initial guess @var{x}. --- 159,163 ---- @end deftypefun ! @deftypefun int gsl_multiroot_fdfsolver_set (gsl_multiroot_fdfsolver * @var{s}, gsl_multiroot_function_fdf * @var{fdf}, gsl_vector * @var{x}) This function sets, or resets, an existing solver @var{s} to use the function and derivative @var{fdf} and the initial guess @var{x}. *************** *** 174,179 **** @example ! printf("s is a '%s' solver\n", ! gsl_multiroot_fdfsolver_name (s)); @end example @noindent --- 174,179 ---- @example ! printf ("s is a '%s' solver\n", ! gsl_multiroot_fdfsolver_name (s)); @end example @noindent *************** *** 199,207 **** returning an appropriate error code if the function cannot be computed. ! @item size_t @var{n} the dimension of the system, i.e. the number of components of the vectors @var{x} and @var{f}. ! @item void * @var{params} a pointer to the parameters of the function. @end table --- 199,207 ---- returning an appropriate error code if the function cannot be computed. ! @item size_t n the dimension of the system, i.e. the number of components of the vectors @var{x} and @var{f}. ! @item void * params a pointer to the parameters of the function. @end table *************** *** 237,247 **** struct powell_params * params = *(struct powell_params *)p; ! double A = (params->A); ! double x0 = gsl_vector_get(x,0); ! double x1 = gsl_vector_get(x,1); ! gsl_vector_set (f, 0, A * x0 * x1 - 1) gsl_vector_set (f, 1, (exp(-x0) + exp(-x1) ! - (1.0 + 1.0/A))) return GSL_SUCCESS @} --- 237,247 ---- struct powell_params * params = *(struct powell_params *)p; ! const double A = (params->A); ! const double x0 = gsl_vector_get(x,0); ! const double x1 = gsl_vector_get(x,1); ! gsl_vector_set (f, 0, A * x0 * x1 - 1); gsl_vector_set (f, 1, (exp(-x0) + exp(-x1) ! - (1.0 + 1.0/A))); return GSL_SUCCESS @} *************** *** 250,254 **** struct powell_params params = @{ 10000.0 @}; ! F.function = &powell; F.n = 2; F.params = ¶ms; --- 250,254 ---- struct powell_params params = @{ 10000.0 @}; ! F.f = &powell; F.n = 2; F.params = ¶ms; *************** *** 280,288 **** same time. ! @item size_t @var{n} the dimension of the system, i.e. the number of components of the vectors @var{x} and @var{f}. ! @item void * @var{params} a pointer to the parameters of the function. @end table --- 280,288 ---- same time. ! @item size_t n the dimension of the system, i.e. the number of components of the vectors @var{x} and @var{f}. ! @item void * params a pointer to the parameters of the function. @end table *************** *** 299,309 **** struct powell_params * params = *(struct powell_params *)p; ! double A = (params->A); ! double x0 = gsl_vector_get(x,0); ! double x1 = gsl_vector_get(x,1); ! gsl_matrix_set (J, 0, 0, A * x1) ! gsl_matrix_set (J, 0, 1, A * x0) ! gsl_matrix_set (J, 1, 0, -exp(-x0)) ! gsl_matrix_set (J, 1, 1, -exp(-x1)) return GSL_SUCCESS @} --- 299,309 ---- struct powell_params * params = *(struct powell_params *)p; ! const double A = (params->A); ! const double x0 = gsl_vector_get(x,0); ! const double x1 = gsl_vector_get(x,1); ! gsl_matrix_set (J, 0, 0, A * x1); ! gsl_matrix_set (J, 0, 1, A * x0); ! gsl_matrix_set (J, 1, 0, -exp(-x0)); ! gsl_matrix_set (J, 1, 1, -exp(-x1)); return GSL_SUCCESS @} *************** *** 314,331 **** struct powell_params * params = *(struct powell_params *)p; ! double A = (params->A); ! double x0 = gsl_vector_get(x,0); ! double x1 = gsl_vector_get(x,1); ! ! double u0 = exp(-x0); ! double u1 = exp(-x1); ! ! gsl_vector_set (f, 0, A * x0 * x1 - 1) ! gsl_vector_set (f, 1, u0 + u1 - (1 + 1/A)) ! ! gsl_matrix_set (J, 0, 0, A * x1) ! gsl_matrix_set (J, 0, 1, A * x0) ! gsl_matrix_set (J, 1, 0, -u0) ! gsl_matrix_set (J, 1, 1, -u1) return GSL_SUCCESS @} --- 314,331 ---- struct powell_params * params = *(struct powell_params *)p; ! const double A = (params->A); ! const double x0 = gsl_vector_get(x,0); ! const double x1 = gsl_vector_get(x,1); ! ! const double u0 = exp(-x0); ! const double u1 = exp(-x1); ! ! gsl_vector_set (f, 0, A * x0 * x1 - 1); ! gsl_vector_set (f, 1, u0 + u1 - (1 + 1/A)); ! ! gsl_matrix_set (J, 0, 0, A * x1); ! gsl_matrix_set (J, 0, 1, A * x0); ! gsl_matrix_set (J, 1, 0, -u0); ! gsl_matrix_set (J, 1, 1, -u1); return GSL_SUCCESS @} *************** *** 597,601 **** @deffn {Derivative Solver} gsl_multiroot_fdfsolver_gnewton @cindex Modified Newton's Method for nonlinear systems ! @cindex GNEWTON algorithm This is a modified version of Newton's method which attempts to improve global convergence by requiring every step to reduce the Euclidean norm --- 597,601 ---- @deffn {Derivative Solver} gsl_multiroot_fdfsolver_gnewton @cindex Modified Newton's Method for nonlinear systems ! @cindex Newton algorithm, globally convergent This is a modified version of Newton's method which attempts to improve global convergence by requiring every step to reduce the Euclidean norm *************** *** 648,654 **** @deffn {Solver} gsl_multiroot_fsolver_dnewton ! @cindex Discrete newton algorithm for multidimensional roots @cindex Newton algorithm, discrete - @cindex Discrete Newton algorithm for nonlinear systems The @dfn{discrete Newton algorithm} is the simplest method of solving a --- 648,653 ---- @deffn {Solver} gsl_multiroot_fsolver_dnewton ! @cindex Discrete Newton algorithm for multidimensional roots @cindex Newton algorithm, discrete The @dfn{discrete Newton algorithm} is the simplest method of solving a *************** *** 783,791 **** double b = ((struct rparams *) params)->b; ! double x0 = gsl_vector_get (x, 0); ! double x1 = gsl_vector_get (x, 1); ! double y0 = a * (1 - x0); ! double y1 = b * (x1 - x0 * x0); gsl_vector_set (f, 0, y0); --- 782,790 ---- double b = ((struct rparams *) params)->b; ! const double x0 = gsl_vector_get (x, 0); ! const double x1 = gsl_vector_get (x, 1); ! const double y0 = a * (1 - x0); ! const double y1 = b * (x1 - x0 * x0); gsl_vector_set (f, 0, y0); *************** *** 915,927 **** gsl_matrix * J) @{ ! double a = ((struct rparams *) params)->a; ! double b = ((struct rparams *) params)->b; ! double x0 = gsl_vector_get (x, 0); ! double df00 = -a; ! double df01 = 0; ! double df10 = -2 * b * x0; ! double df11 = b; gsl_matrix_set (J, 0, 0, df00); --- 914,926 ---- gsl_matrix * J) @{ ! const double a = ((struct rparams *) params)->a; ! const double b = ((struct rparams *) params)->b; ! const double x0 = gsl_vector_get (x, 0); ! const double df00 = -a; ! const double df01 = 0; ! const double df10 = -2 * b * x0; ! const double df11 = b; gsl_matrix_set (J, 0, 0, df00); *************** *** 1003,1007 **** approximate the Jacobian numerically with sufficient accuracy. To illustrate the behavior of a different derivative solver we switch to ! @code{gnewton}. This is a traditional newton solver with the constraint that it scales back its step if the full step would lead "uphill". Here is the output for the @code{gnewton} algorithm, --- 1002,1006 ---- approximate the Jacobian numerically with sufficient accuracy. To illustrate the behavior of a different derivative solver we switch to ! @code{gnewton}. This is a traditional Newton solver with the constraint that it scales back its step if the full step would lead "uphill". Here is the output for the @code{gnewton} algorithm, diff -x.info* -rc2P gsl-1.3/doc/ntuple.texi gsl-1.4/doc/ntuple.texi *** gsl-1.3/doc/ntuple.texi Fri Oct 26 09:39:45 2001 --- gsl-1.4/doc/ntuple.texi Sun Jul 27 08:38:52 2003 *************** *** 4,8 **** @dfn{ntuples}, sets of values associated with events. The ntuples are stored in files. Their values can be extracted in any combination ! and @dfn{booked} in an histogram using a selection function. The values to be stored are held in a user-defined data structure, and --- 4,8 ---- @dfn{ntuples}, sets of values associated with events. The ntuples are stored in files. Their values can be extracted in any combination ! and @dfn{booked} in a histogram using a selection function. The values to be stored are held in a user-defined data structure, and *************** *** 14,18 **** function and a value function. The selection function specifies whether an event should be included in the subset to be analyzed or not. The value ! function computes the entry to be added to the histogram entry for each event. --- 14,18 ---- function and a value function. The selection function specifies whether an event should be included in the subset to be analyzed or not. The value ! function computes the entry to be added to the histogram for each event. *************** *** 80,84 **** @deftypefun int gsl_ntuple_bookdata (gsl_ntuple * @var{ntuple}) ! This function is a synonym for @code{gsl_ntuple_write} @end deftypefun --- 80,84 ---- @deftypefun int gsl_ntuple_bookdata (gsl_ntuple * @var{ntuple}) ! This function is a synonym for @code{gsl_ntuple_write}. @end deftypefun *************** *** 88,92 **** @deftypefun int gsl_ntuple_read (gsl_ntuple * @var{ntuple}) This function reads the current row of the ntuple file for @var{ntuple} ! and stores the values in @var{ntuple->data} @end deftypefun --- 88,92 ---- @deftypefun int gsl_ntuple_read (gsl_ntuple * @var{ntuple}) This function reads the current row of the ntuple file for @var{ntuple} ! and stores the values in @var{ntuple->data}. @end deftypefun *************** *** 149,156 **** @node Example ntuple programs ! @section Example programs The following example programs demonstrate the use of ntuples in ! managing a large dataset. The first program creates a set of 100,000 simulated "events", each with 3 associated values @math{(x,y,z)}. These are generated from a gaussian distribution with unit variance, for --- 149,156 ---- @node Example ntuple programs ! @section Examples The following example programs demonstrate the use of ntuples in ! managing a large dataset. The first program creates a set of 10,000 simulated "events", each with 3 associated values @math{(x,y,z)}. These are generated from a gaussian distribution with unit variance, for *************** *** 158,203 **** @example ! #include ! #include ! #include ! #include ! ! struct data ! @{ ! double x; ! double y; ! double z; ! @}; ! ! int ! main (void) ! @{ ! const gsl_rng_type * T; ! gsl_rng * r; ! ! struct data ntuple_row; ! int i; ! ! gsl_ntuple *ntuple ! = gsl_ntuple_create ("test.dat", &ntuple_row, ! sizeof (ntuple_row)); ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! for (i = 0; i < 10000; i++) ! @{ ! ntuple_row.x = gsl_ran_ugaussian (r); ! ntuple_row.y = gsl_ran_ugaussian (r); ! ntuple_row.z = gsl_ran_ugaussian (r); ! ! gsl_ntuple_write (ntuple); ! @} ! ! gsl_ntuple_close(ntuple); ! return 0; ! @} @end example @noindent --- 158,162 ---- @example ! @verbatiminclude examples/ntuplew.c @end example @noindent *************** *** 209,286 **** @example ! #include ! #include ! #include ! #include ! ! struct data ! @{ ! double x; ! double y; ! double z; ! @}; ! ! int sel_func (void *ntuple_data, void *params); ! double val_func (void *ntuple_data, void *params); ! ! int ! main (void) ! @{ ! struct data ntuple_row; ! int i; ! ! gsl_ntuple *ntuple ! = gsl_ntuple_open ("test.dat", &ntuple_row, ! sizeof (ntuple_row)); ! double lower = 1.5; ! ! gsl_ntuple_select_fn S; ! gsl_ntuple_value_fn V; ! ! gsl_histogram *h = gsl_histogram_alloc (100); ! gsl_histogram_set_ranges_uniform(h, 0.0, 10.0); ! ! S.function = &sel_func; ! S.params = &lower; ! ! V.function = &val_func; ! V.params = 0; ! ! gsl_ntuple_project (h, ntuple, &V, &S); ! ! gsl_histogram_fprintf (stdout, h, "%f", "%f"); ! ! gsl_histogram_free (h); ! ! gsl_ntuple_close (ntuple); ! return 0; ! @} ! ! int ! sel_func (void *ntuple_data, void *params) ! @{ ! double x, y, z, E, scale; ! scale = *(double *) params; ! ! x = ((struct data *) ntuple_data)->x; ! y = ((struct data *) ntuple_data)->y; ! z = ((struct data *) ntuple_data)->z; ! ! E2 = x * x + y * y + z * z; ! ! return E2 > scale; ! @} ! ! double ! val_func (void *ntuple_data, void *params) ! @{ ! double x, y, z; ! ! x = ((struct data *) ntuple_data)->x; ! y = ((struct data *) ntuple_data)->y; ! z = ((struct data *) ntuple_data)->z; ! ! return x * x + y * y + z * z; ! @} @end example --- 168,172 ---- @example ! @verbatiminclude examples/ntupler.c @end example *************** *** 290,294 **** @iftex @sp 1 ! @center @image{ntuple,4in} @end iftex --- 176,180 ---- @iftex @sp 1 ! @center @image{ntuple,3.4in} @end iftex diff -x.info* -rc2P gsl-1.3/doc/ode-initval.texi gsl-1.4/doc/ode-initval.texi *** gsl-1.3/doc/ode-initval.texi Sun Dec 15 13:20:56 2002 --- gsl-1.4/doc/ode-initval.texi Sun Aug 10 11:14:51 2003 *************** *** 50,54 **** @table @code ! @item int (* @var{function}) (double t, const double y[], double dydt[], void * params) This function should store the vector elements @c{$f_i(t,y,\hbox{\it params})$} --- 50,54 ---- @table @code ! @item int (* function) (double t, const double y[], double dydt[], void * params) This function should store the vector elements @c{$f_i(t,y,\hbox{\it params})$} *************** *** 56,60 **** for arguments (@var{t},@var{y}) and parameters @var{params} ! @item int (* @var{jacobian}) (double t, const double y[], double * dfdy, double dfdt[], void * params); This function should store the vector elements @c{$\partial f_i(t,y,params) / \partial t$} --- 56,60 ---- for arguments (@var{t},@var{y}) and parameters @var{params} ! @item int (* jacobian) (double t, const double y[], double * dfdy, double dfdt[], void * params); This function should store the vector elements @c{$\partial f_i(t,y,params) / \partial t$} *************** *** 62,78 **** Jacobian matrix @c{$J_{ij}$} @math{J_@{ij@}} in the array ! @var{dfdy} regarded as a row-ordered matrix @code{J(i,j) = dfdy[i * dim + j]} ! where @code{dim} is the dimension of the system. Some of the simpler solver algorithms do not make use of the Jacobian ! matrix, so it is not always strictly necessary to provide it (this ! element of the struct can be replace by a null pointer). However, it is ! useful to provide the Jacobian to allow the solver algorithms to be ! interchanged -- the best algorithms make use of the Jacobian. ! @item size_t @var{dimension}; This is the dimension of the system of equations ! @item void * @var{params} This is a pointer to the arbitrary parameters of the system. @end table --- 62,79 ---- Jacobian matrix @c{$J_{ij}$} @math{J_@{ij@}} in the array ! @var{dfdy} regarded as a row-ordered matrix @code{J(i,j) = dfdy[i * dimension + j]} ! where @code{dimension} is the dimension of the system. Some of the simpler solver algorithms do not make use of the Jacobian ! matrix, so it is not always strictly necessary to provide it (the ! @code{jacobian} element of the struct can be replaced by a null pointer ! for those algorithms). However, it is useful to provide the Jacobian to allow ! the solver algorithms to be interchanged -- the best algorithms make use ! of the Jacobian. ! @item size_t dimension; This is the dimension of the system of equations ! @item void * params This is a pointer to the arbitrary parameters of the system. @end table *************** *** 107,112 **** @example ! printf("step method is '%s'\n", ! gsl_odeiv_step_name (s)); @end example --- 108,113 ---- @example ! printf ("step method is '%s'\n", ! gsl_odeiv_step_name (s)); @end example *************** *** 120,124 **** @end deftypefun ! @deftypefun int gsl_odeiv_step_apply (gsl_odeiv_step * @var{s}, double @var{t}, double @var{h}, double y[], double yerr[], const double dydt_in[], double dydt_out[], const gsl_odeiv_system * @var{dydt}) This function applies the stepping function @var{s} to the system of equations defined by @var{dydt}, using the step size @var{h} to advance --- 121,125 ---- @end deftypefun ! @deftypefun int gsl_odeiv_step_apply (gsl_odeiv_step * @var{s}, double @var{t}, double @var{h}, double @var{y}[], double @var{yerr}[], const double @var{dydt_in}[], double @var{dydt_out}[], const gsl_odeiv_system * @var{dydt}) This function applies the stepping function @var{s} to the system of equations defined by @var{dydt}, using the step size @var{h} to advance *************** *** 326,330 **** @end deftypefun ! @deftypefun int gsl_odeiv_control_hadjust (gsl_odeiv_control * @var{c}, gsl_odeiv_step * @var{s}, const double y0[], const double yerr[], const double dydt[], double * @var{h}) This function adjusts the step-size @var{h} using the control function @var{c}, and the current values of @var{y}, @var{yerr} and @var{dydt}. --- 327,331 ---- @end deftypefun ! @deftypefun int gsl_odeiv_control_hadjust (gsl_odeiv_control * @var{c}, gsl_odeiv_step * @var{s}, const double @var{y0}[], const double @var{yerr}[], const double @var{dydt}[], double * @var{h}) This function adjusts the step-size @var{h} using the control function @var{c}, and the current values of @var{y}, @var{yerr} and @var{dydt}. *************** *** 345,350 **** @example ! printf("control method is '%s'\n", ! gsl_odeiv_control_name (c)); @end example --- 346,351 ---- @example ! printf ("control method is '%s'\n", ! gsl_odeiv_control_name (c)); @end example *************** *** 362,366 **** control function signals that the step-size should be decreased the evolution function backs out of the current step and tries the proposed ! smaller step-size. This is process is continued until an acceptable step-size is found. --- 363,367 ---- control function signals that the step-size should be decreased the evolution function backs out of the current step and tries the proposed ! smaller step-size. This process is continued until an acceptable step-size is found. *************** *** 370,374 **** @end deftypefun ! @deftypefun int gsl_odeiv_evolve_apply (gsl_odeiv_evolve * @var{e}, gsl_odeiv_control * @var{con}, gsl_odeiv_step * @var{step}, const gsl_odeiv_system * @var{dydt}, double * @var{t}, double @var{t1}, double * @var{h}, double y[]) This function advances the system (@var{e}, @var{dydt}) from time @var{t} and position @var{y} using the stepping function @var{step}. --- 371,375 ---- @end deftypefun ! @deftypefun int gsl_odeiv_evolve_apply (gsl_odeiv_evolve * @var{e}, gsl_odeiv_control * @var{con}, gsl_odeiv_step * @var{step}, const gsl_odeiv_system * @var{dydt}, double * @var{t}, double @var{t1}, double * @var{h}, double @var{y}[]) This function advances the system (@var{e}, @var{dydt}) from time @var{t} and position @var{y} using the stepping function @var{step}. *************** *** 414,419 **** @noindent This can be converted into a first order system suitable for use with ! the library by introducing a separate variable for the velocity, @math{y ! = x'(t)}, @tex --- 415,420 ---- @noindent This can be converted into a first order system suitable for use with ! the routines described in this chapter by introducing a separate ! variable for the velocity, @math{y = x'(t)}, @tex *************** *** 438,511 **** @example ! #include ! #include ! #include ! #include ! ! int ! func (double t, const double y[], double f[], ! void *params) ! @{ ! double mu = *(double *)params; ! f[0] = y[1]; ! f[1] = -y[0] - mu*y[1]*(y[0]*y[0] - 1); ! return GSL_SUCCESS; ! @} ! ! int ! jac (double t, const double y[], double *dfdy, ! double dfdt[], void *params) ! @{ ! double mu = *(double *)params; ! gsl_matrix_view dfdy_mat ! = gsl_matrix_view_array (dfdy, 2, 2); ! gsl_matrix * m = &dfdy_mat.matrix; ! gsl_matrix_set (m, 0, 0, 0.0); ! gsl_matrix_set (m, 0, 1, 1.0); ! gsl_matrix_set (m, 1, 0, -2.0*mu*y[0]*y[1] - 1.0); ! gsl_matrix_set (m, 1, 1, -mu*(y[0]*y[0] - 1.0)); ! dfdt[0] = 0.0; ! dfdt[1] = 0.0; ! return GSL_SUCCESS; ! @} ! ! int ! main (void) ! @{ ! const gsl_odeiv_step_type * T ! = gsl_odeiv_step_rk8pd; ! ! gsl_odeiv_step * s ! = gsl_odeiv_step_alloc (T, 2); ! gsl_odeiv_control * c ! = gsl_odeiv_control_y_new (1e-6, 0.0); ! gsl_odeiv_evolve * e ! = gsl_odeiv_evolve_alloc (2); ! ! double mu = 10; ! gsl_odeiv_system sys = @{func, jac, 2, &mu@}; ! ! double t = 0.0, t1 = 100.0; ! double h = 1e-6; ! double y[2] = @{ 1.0, 0.0 @}; ! ! while (t < t1) ! @{ ! int status = gsl_odeiv_evolve_apply (e, c, s, ! &sys, ! &t, t1, ! &h, y); ! ! if (status != GSL_SUCCESS) ! break; ! ! printf("%.5e %.5e %.5e\n", t, y[0], y[1]); ! @} ! ! gsl_odeiv_evolve_free(e); ! gsl_odeiv_control_free(c); ! gsl_odeiv_step_free(s); ! return 0; ! @} @end example @noindent --- 439,443 ---- @example ! @verbatiminclude examples/ode-initval.c @end example @noindent *************** *** 518,522 **** @iftex @sp 1 ! @center @image{vdp} @center Numerical solution of the Van der Pol oscillator equation @center using Prince-Dormand 8th order Runge-Kutta. --- 450,454 ---- @iftex @sp 1 ! @center @image{vdp,3.4in} @center Numerical solution of the Van der Pol oscillator equation @center using Prince-Dormand 8th order Runge-Kutta. *************** *** 543,547 **** @} ! printf("%.5e %.5e %.5e\n", t, y[0], y[1]); @} @end example --- 475,479 ---- @} ! printf ("%.5e %.5e %.5e\n", t, y[0], y[1]); @} @end example *************** *** 553,598 **** @example ! int ! main (void) ! @{ ! const gsl_odeiv_step_type * T ! = gsl_odeiv_step_rk4; ! ! gsl_odeiv_step * s ! = gsl_odeiv_step_alloc (T, 2); ! ! double mu = 10; ! gsl_odeiv_system sys = @{func, jac, 2, &mu@}; ! ! double t = 0.0, t1 = 100.0; ! double h = 1e-2; ! double y[2] = @{ 1.0, 0.0 @}, y_err[2]; ! double dfdy[4], dydt_in[2], dydt_out[2]; ! ! /* initialise dydt_in */ ! GSL_ODEIV_JA_EVAL(&sys, t, y, dfdy, dydt_in); ! ! while (t < t1) ! @{ ! int status = gsl_odeiv_step_apply (s, t, h, ! y, y_err, ! dydt_in, ! dydt_out, ! &sys); ! ! if (status != GSL_SUCCESS) ! break; ! ! dydt_in[0] = dydt_out[0]; ! dydt_in[1] = dydt_out[1]; ! ! t += h; ! ! printf("%.5e %.5e %.5e\n", t, y[0], y[1]); ! @} ! ! gsl_odeiv_step_free(s); ! return 0; ! @} @end example @noindent --- 485,489 ---- @example ! @verbatiminclude examples/odefixed.c @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/permutation.texi gsl-1.4/doc/permutation.texi *** gsl-1.3/doc/permutation.texi Mon Apr 22 18:14:20 2002 --- gsl-1.4/doc/permutation.texi Mon Jun 2 16:05:59 2003 *************** *** 307,346 **** @example ! #include ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! const size_t N = 10; ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_permutation * p = gsl_permutation_alloc (N); ! gsl_permutation * q = gsl_permutation_alloc (N); ! ! gsl_rng_env_setup(); ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! printf("initial permutation:"); ! gsl_permutation_init (p); ! gsl_permutation_fprintf (stdout, p, " %u"); ! printf("\n"); ! ! printf(" random permutation:"); ! gsl_ran_shuffle (r, p->data, N, sizeof(size_t)); ! gsl_permutation_fprintf (stdout, p, " %u"); ! printf("\n"); ! ! printf("inverse permutation:"); ! gsl_permutation_inverse (q, p); ! gsl_permutation_fprintf (stdout, q, " %u"); ! printf("\n"); ! ! return 0; ! @} @end example @noindent --- 307,311 ---- @example ! @verbatiminclude examples/permshuffle.c @end example @noindent *************** *** 362,384 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! gsl_permutation * p = gsl_permutation_alloc (3); ! ! gsl_permutation_init (p); ! ! do ! @{ ! gsl_permutation_fprintf (stdout, p, " %u"); ! printf("\n"); ! @} ! while (gsl_permutation_next(p) == GSL_SUCCESS); ! ! return 0; ! @} @end example @noindent --- 327,331 ---- @example ! @verbatiminclude examples/permseq.c @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/poly.texi gsl-1.4/doc/poly.texi *** gsl-1.3/doc/poly.texi Sun Dec 2 22:27:59 2001 --- gsl-1.4/doc/poly.texi Mon Jun 2 16:07:03 2003 *************** *** 23,27 **** @cindex evaluation of polynomials ! @deftypefun double gsl_poly_eval (const double c[], const int @var{len}, const double @var{x}) This function evaluates the polynomial @c{$c[0] + c[1] x + c[2] x^2 + \dots + c[len-1] x^{len-1}$} --- 23,27 ---- @cindex evaluation of polynomials ! @deftypefun double gsl_poly_eval (const double @var{c}[], const int @var{len}, const double @var{x}) This function evaluates the polynomial @c{$c[0] + c[1] x + c[2] x^2 + \dots + c[len-1] x^{len-1}$} *************** *** 39,43 **** described in Abramowitz & Stegun sections 25.1.4, 25.2.26. ! @deftypefun int gsl_poly_dd_init (double dd[], const double xa[], const double ya[], size_t @var{size}) This function computes a divided-difference representation of the interpolating polynomial for the points (@var{xa}, @var{ya}) stored in --- 39,43 ---- described in Abramowitz & Stegun sections 25.1.4, 25.2.26. ! @deftypefun int gsl_poly_dd_init (double @var{dd}[], const double @var{xa}[], const double @var{ya}[], size_t @var{size}) This function computes a divided-difference representation of the interpolating polynomial for the points (@var{xa}, @var{ya}) stored in *************** *** 47,51 **** @end deftypefun ! @deftypefun double gsl_poly_dd_eval (const double dd[], const double xa[], const size_t @var{size}, const double @var{x}) This function evaluates the polynomial stored in divided-difference form in the arrays @var{dd} and @var{xa} of length @var{size} at the point --- 47,51 ---- @end deftypefun ! @deftypefun double gsl_poly_dd_eval (const double @var{dd}[], const double @var{xa}[], const size_t @var{size}, const double @var{x}) This function evaluates the polynomial stored in divided-difference form in the arrays @var{dd} and @var{xa} of length @var{size} at the point *************** *** 53,57 **** @end deftypefun ! @deftypefun int gsl_poly_dd_taylor (double c[], double @var{xp}, const double dd[], const double xa[], size_t @var{size}, double w[]) This function converts the divided-difference representation of a polynomial to a Taylor expansion. The divided-difference representation --- 53,57 ---- @end deftypefun ! @deftypefun int gsl_poly_dd_taylor (double @var{c}[], double @var{xp}, const double @var{dd}[], const double @var{xa}[], size_t @var{size}, double @var{w}[]) This function converts the divided-difference representation of a polynomial to a Taylor expansion. The divided-difference representation *************** *** 248,279 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! /* coefficient of P(x) = -1 + x^5 */ ! double a[6] = @{ -1, 0, 0, 0, 0, 1 @}; ! double z[10]; ! ! gsl_poly_complex_workspace * w ! = gsl_poly_complex_workspace_alloc (6); ! ! gsl_poly_complex_solve (a, 6, w, z); ! ! gsl_poly_complex_workspace_free (w); ! ! for (i = 0; i < 5; i++) ! @{ ! printf("z%d = %+.18f %+.18f\n", ! i, z[2*i], z[2*i+1]); ! @} ! ! return 0; ! @} @end example - @noindent The output of the program is, --- 248,253 ---- @example ! @verbatiminclude examples/polyroots.c @end example @noindent The output of the program is, *************** *** 281,289 **** @example bash$ ./a.out ! z0 = -0.809016994374947451 +0.587785252292473137 ! z1 = -0.809016994374947451 -0.587785252292473137 ! z2 = +0.309016994374947451 +0.951056516295153642 ! z3 = +0.309016994374947451 -0.951056516295153642 ! z4 = +1.000000000000000000 +0.000000000000000000 @end example @noindent --- 255,259 ---- @example bash$ ./a.out ! @verbatiminclude examples/polyroots.out @end example @noindent *************** *** 293,297 **** @section References and Further Reading @noindent ! The balanced-QR method and its error analysis is described in the following papers. --- 263,267 ---- @section References and Further Reading @noindent ! The balanced-QR method and its error analysis are described in the following papers. diff -x.info* -rc2P gsl-1.3/doc/qrng.texi gsl-1.4/doc/qrng.texi *** gsl-1.3/doc/qrng.texi Mon Apr 22 18:28:05 2002 --- gsl-1.4/doc/qrng.texi Mon Jun 2 16:07:26 2003 *************** *** 62,66 **** @deftypefun size_t gsl_qrng_size (const gsl_qrng * @var{q}) @deftypefunx {void *} gsl_qrng_state (const gsl_qrng * @var{q}) ! These function return a pointer to the state of generator @var{r} and its size. You can use this information to access the state directly. For example, the following code will write the state of a generator to a --- 62,66 ---- @deftypefun size_t gsl_qrng_size (const gsl_qrng * @var{q}) @deftypefunx {void *} gsl_qrng_state (const gsl_qrng * @var{q}) ! These functions return a pointer to the state of generator @var{r} and its size. You can use this information to access the state directly. For example, the following code will write the state of a generator to a *************** *** 113,135 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! gsl_qrng * q = gsl_qrng_alloc (gsl_qrng_sobol, 2); ! ! for (i = 0; i < 1024; i++) ! @{ ! double v[2]; ! gsl_qrng_get(q, v); ! printf("%.5f %.5f\n", v[0], v[1]); ! @} ! ! gsl_qrng_free(q); ! return 0; ! @} @end example @noindent --- 113,117 ---- @example ! @verbatiminclude examples/qrng.c @end example @noindent *************** *** 154,158 **** 1024 points from the Sobol sequence, @sp 1 ! @center @image{qrng} @sp 1 @center Distribution of the first 1024 points --- 136,140 ---- 1024 points from the Sobol sequence, @sp 1 ! @center @image{qrng,3.4in} @sp 1 @center Distribution of the first 1024 points diff -x.info* -rc2P gsl-1.3/doc/rand-bernoulli.tex gsl-1.4/doc/rand-bernoulli.tex *** gsl-1.3/doc/rand-bernoulli.tex Mon Dec 10 19:24:35 2001 --- gsl-1.4/doc/rand-bernoulli.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-bernoulli.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-bernoulli.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,650 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 488 M ! 3150 0 R ! 350 675 M ! 3150 0 R ! 350 863 M ! 3150 0 R ! 350 1050 M ! 3150 0 R ! 350 1238 M ! 3150 0 R ! 350 1426 M ! 3150 0 R ! 350 1613 M ! 3150 0 R ! 350 1801 M ! 3150 0 R ! 350 1988 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1138 300 M ! 0 1876 R ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2713 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 863 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 750 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{$p=0.7$}} ! \put(1925,2276){\cjust{Bernoulli Trial}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(2713,200){\cjust{1}} ! \put(1138,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1988){\rjust{0.9}} ! \put(300,1801){\rjust{0.8}} ! \put(300,1613){\rjust{0.7}} ! \put(300,1426){\rjust{0.6}} ! \put(300,1238){\rjust{0.5}} ! \put(300,1050){\rjust{0.4}} ! \put(300,863){\rjust{0.3}} ! \put(300,675){\rjust{0.2}} ! \put(300,488){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,660 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 478 M ! 3000 0 R ! 450 655 M ! 3000 0 R ! 450 833 M ! 3000 0 R ! 450 1010 M ! 3000 0 R ! 450 1188 M ! 3000 0 R ! 450 1366 M ! 3000 0 R ! 450 1543 M ! 3000 0 R ! 450 1721 M ! 3000 0 R ! 450 1898 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1200 300 M ! 0 1776 R ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2700 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 833 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 710 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{$p=0.7$}}% ! \put(1950,2226){\cjust{Bernoulli Trial}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(2700,200){\cjust{ 1}}% ! \put(1200,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1898){\rjust{ 0.9}}% ! \put(400,1721){\rjust{ 0.8}}% ! \put(400,1543){\rjust{ 0.7}}% ! \put(400,1366){\rjust{ 0.6}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,1010){\rjust{ 0.4}}% ! \put(400,833){\rjust{ 0.3}}% ! \put(400,655){\rjust{ 0.2}}% ! \put(400,478){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-beta.tex gsl-1.4/doc/rand-beta.tex *** gsl-1.3/doc/rand-beta.tex Mon Dec 10 19:24:35 2001 --- gsl-1.4/doc/rand-beta.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-beta.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:57 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-beta.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,1258 **** 1.000 UL LTb ! 250 300 M 63 0 V ! 3187 0 R -63 0 V ! 250 769 M 63 0 V ! 3187 0 R -63 0 V ! 250 1238 M 63 0 V ! 3187 0 R -63 0 V ! 250 1707 M 63 0 V ! 3187 0 R -63 0 V ! 250 2176 M 63 0 V ! 3187 0 R -63 0 V ! 250 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1063 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1875 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2688 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 250 300 M ! 3250 0 V ! 0 1876 V ! -3250 0 V ! 250 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 250 300 M ! 11 9 V ! 11 10 V ! 11 9 V 10 9 V 11 9 V - 11 9 V - 11 9 V - 11 9 V - 11 9 V - 11 9 V - 11 9 V 10 8 V 11 9 V 11 9 V ! 11 8 V ! 11 9 V ! 11 8 V ! 11 8 V ! 11 8 V 10 9 V 11 8 V 11 8 V 11 8 V ! 11 8 V ! 11 8 V ! 11 7 V 10 8 V 11 8 V ! 11 7 V 11 8 V 11 8 V ! 11 7 V ! 11 7 V 11 8 V 10 7 V 11 7 V 11 7 V 11 7 V ! 11 7 V ! 11 7 V ! 11 7 V ! 11 7 V 10 6 V 11 7 V ! 11 7 V ! 11 6 V ! 11 7 V 11 6 V 11 7 V 10 6 V 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V 10 6 V 11 6 V 11 5 V ! 11 6 V ! 11 6 V 11 5 V 11 5 V - 11 6 V 10 5 V 11 5 V 11 5 V ! 11 6 V ! 11 5 V ! 11 5 V ! 11 4 V 10 5 V 11 5 V 11 5 V ! 11 4 V 11 5 V 11 5 V ! 11 4 V ! 11 4 V ! 10 5 V ! 11 4 V ! 11 4 V ! 11 4 V 11 5 V ! 11 4 V ! 11 4 V ! 11 3 V 10 4 V 11 4 V 11 4 V ! 11 3 V ! 11 4 V 11 4 V ! 11 3 V 10 3 V 11 4 V 11 3 V ! 11 3 V ! 11 3 V ! 11 3 V ! 11 3 V 11 3 V 10 3 V 11 3 V 11 3 V 11 3 V ! 11 2 V ! 11 3 V ! 11 2 V 11 3 V 10 2 V 11 3 V ! 11 2 V ! 11 2 V ! 11 2 V ! 11 2 V 11 2 V 10 2 V 11 2 V 11 2 V 11 2 V ! 11 1 V 11 2 V 11 2 V ! 11 1 V 10 2 V 11 1 V ! 11 1 V 11 2 V - 11 1 V - 11 1 V - 11 1 V - 11 1 V 10 1 V 11 1 V 11 1 V ! 11 0 V ! 11 1 V 11 1 V - 11 0 V 10 1 V 11 0 V 11 1 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 -1 V ! 11 0 V ! 10 -1 V ! 11 0 V 11 -1 V 11 -1 V 11 0 V - 11 -1 V - 11 -1 V 10 -1 V 11 -1 V 11 -1 V 11 -1 V ! 11 -1 V 11 -2 V ! 11 -1 V 11 -1 V 10 -2 V ! 11 -1 V ! 11 -2 V ! 11 -2 V ! 11 -1 V ! 11 -2 V ! 11 -2 V 11 -2 V 10 -2 V 11 -2 V 11 -2 V 11 -2 V ! 11 -2 V ! 11 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 11 -2 V ! 11 -3 V 11 -2 V - 11 -3 V - 11 -3 V - 11 -3 V 10 -3 V 11 -3 V 11 -3 V 11 -3 V 11 -3 V ! 11 -3 V ! 11 -3 V ! 11 -4 V 10 -3 V 11 -3 V ! 11 -4 V ! 11 -4 V 11 -3 V - 11 -4 V - 11 -4 V 10 -4 V 11 -3 V 11 -4 V 11 -4 V ! 11 -5 V ! 11 -4 V ! 11 -4 V ! 11 -4 V ! 10 -5 V 11 -4 V 11 -4 V 11 -5 V 11 -5 V ! 11 -4 V ! 11 -5 V 11 -5 V 10 -5 V ! 11 -4 V 11 -5 V 11 -5 V ! 11 -6 V 11 -5 V 11 -5 V 10 -5 V - 11 -6 V 11 -5 V 11 -5 V ! 11 -6 V ! 11 -6 V 11 -5 V - 11 -6 V 10 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V 11 -6 V 10 -6 V ! 11 -7 V 11 -6 V 11 -7 V 11 -6 V ! 11 -7 V ! 11 -7 V 10 -6 V 11 -7 V ! 11 -7 V ! 11 -7 V ! 11 -7 V ! 11 -7 V ! 11 -7 V 11 -7 V 10 -7 V ! 11 -8 V 11 -7 V 11 -7 V 11 -8 V 11 -8 V ! 11 -7 V ! 11 -8 V 10 -8 V - 11 -7 V - 11 -8 V 11 -8 V 11 -8 V 11 -8 V 11 -8 V 10 -9 V 11 -8 V ! 11 -8 V ! 11 -8 V ! 11 -9 V ! 11 -8 V ! 11 -9 V ! 11 -9 V 10 -8 V 11 -9 V ! 11 -9 V ! 11 -9 V ! 11 -9 V ! 11 -9 V ! 11 -9 V 11 -9 V 10 -9 V 11 -9 V ! 11 -10 V ! 11 -9 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 250 300 M ! 11 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V ! 11 0 V 10 1 V 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V ! 11 1 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V ! 11 1 V 11 0 V 10 0 V 11 0 V 11 1 V 11 0 V ! 11 0 V ! 11 0 V 11 1 V 11 0 V 10 1 V ! 11 0 V ! 11 0 V ! 11 1 V ! 11 0 V ! 11 1 V 11 0 V 10 1 V 11 0 V ! 11 1 V 11 0 V ! 11 1 V ! 11 1 V 11 0 V 11 1 V 10 1 V 11 0 V 11 1 V 11 1 V 11 1 V ! 11 1 V 11 0 V - 11 1 V 10 1 V - 11 1 V - 11 1 V - 11 1 V - 11 1 V - 11 1 V - 11 1 V 10 1 V 11 1 V ! 11 2 V ! 11 1 V ! 11 1 V 11 1 V ! 11 2 V 11 1 V 10 1 V - 11 2 V 11 1 V 11 2 V 11 1 V ! 11 2 V 11 1 V - 11 2 V 10 1 V ! 11 2 V ! 11 2 V ! 11 2 V 11 1 V - 11 2 V - 11 2 V 10 2 V 11 2 V 11 2 V 11 2 V 11 2 V 11 2 V ! 11 2 V 11 3 V 10 2 V 11 2 V 11 3 V ! 11 2 V ! 11 2 V 11 3 V ! 11 2 V 11 3 V 10 3 V - 11 2 V - 11 3 V - 11 3 V - 11 3 V - 11 2 V 11 3 V 10 3 V 11 3 V 11 3 V 11 3 V ! 11 4 V ! 11 3 V ! 11 3 V 11 3 V 10 4 V 11 3 V 11 4 V ! 11 3 V ! 11 4 V ! 11 3 V ! 11 4 V ! 11 4 V 10 4 V - 11 4 V 11 3 V ! 11 4 V ! 11 4 V ! 11 5 V ! 11 4 V 10 4 V 11 4 V ! 11 5 V ! 11 4 V 11 4 V ! 11 5 V ! 11 5 V 11 4 V 10 5 V - 11 5 V 11 4 V 11 5 V 11 5 V 11 5 V 11 5 V ! 11 6 V 10 5 V 11 5 V 11 5 V ! 11 6 V 11 5 V ! 11 6 V ! 11 6 V 10 5 V 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V ! 11 6 V 11 6 V 10 6 V ! 11 7 V 11 6 V ! 11 7 V 11 6 V 11 7 V 11 7 V 11 6 V 10 7 V - 11 7 V - 11 7 V - 11 7 V - 11 7 V 11 8 V - 11 7 V 10 7 V ! 11 8 V ! 11 7 V ! 11 8 V ! 11 8 V ! 11 8 V 11 7 V 11 8 V 10 8 V - 11 9 V 11 8 V 11 8 V 11 8 V 11 9 V ! 11 8 V 11 9 V 10 9 V ! 11 9 V ! 11 9 V ! 11 8 V ! 11 10 V ! 11 9 V 11 9 V 10 9 V ! 11 10 V 11 9 V ! 11 10 V 11 9 V 11 10 V ! 11 10 V 11 10 V 10 10 V 11 10 V ! 11 11 V 11 10 V 11 10 V ! 11 11 V 11 10 V - 11 11 V 10 11 V - 11 11 V - 11 11 V - 11 11 V - 11 11 V - 11 11 V - 11 12 V 10 11 V - 11 12 V 11 11 V 11 12 V 11 12 V 11 12 V 11 12 V ! 11 12 V ! 10 13 V ! 11 12 V ! 11 13 V ! 11 12 V ! 11 13 V 11 13 V 11 12 V 11 13 V ! 10 14 V ! 11 13 V ! 11 13 V ! 11 14 V 11 13 V 11 14 V ! 11 13 V 10 14 V 11 14 V 11 14 V ! 11 15 V ! 11 14 V 11 14 V ! 11 15 V 11 14 V 10 15 V 11 15 V 11 15 V ! 11 15 V ! 11 15 V ! 11 15 V 11 16 V ! 11 15 V 10 16 V 11 16 V 11 16 V ! 11 16 V ! 11 16 V ! 11 16 V ! 11 16 V 10 17 V 11 16 V ! 11 17 V ! 11 17 V ! 11 17 V ! 11 17 V ! 11 17 V 11 17 V 10 17 V 11 18 V ! 11 18 V 11 17 V - 11 18 V - 11 18 V - 11 18 V - 11 19 V 10 18 V - 11 19 V - 11 18 V - 11 19 V 1.000 UL LT2 ! 3137 1863 M 263 0 V ! 250 2176 M ! 11 -19 V ! 11 -18 V ! 11 -19 V 10 -18 V - 11 -19 V - 11 -18 V - 11 -18 V - 11 -18 V 11 -17 V ! 11 -18 V 11 -18 V 10 -17 V 11 -17 V ! 11 -17 V ! 11 -17 V ! 11 -17 V ! 11 -17 V ! 11 -17 V ! 11 -16 V 10 -17 V 11 -16 V 11 -16 V ! 11 -16 V ! 11 -16 V ! 11 -16 V 11 -16 V 10 -16 V ! 11 -15 V 11 -16 V - 11 -15 V - 11 -15 V - 11 -15 V - 11 -15 V - 11 -15 V 10 -15 V ! 11 -14 V 11 -15 V ! 11 -14 V ! 11 -14 V 11 -15 V 11 -14 V ! 11 -14 V 10 -14 V - 11 -13 V 11 -14 V ! 11 -13 V 11 -14 V - 11 -13 V - 11 -13 V 10 -14 V 11 -13 V ! 11 -12 V ! 11 -13 V ! 11 -13 V ! 11 -12 V 11 -13 V ! 11 -12 V 10 -13 V 11 -12 V 11 -12 V 11 -12 V ! 11 -12 V ! 11 -12 V ! 11 -11 V 11 -12 V 10 -11 V 11 -12 V - 11 -11 V - 11 -11 V - 11 -11 V - 11 -11 V - 11 -11 V 10 -11 V 11 -11 V 11 -10 V ! 11 -11 V ! 11 -10 V ! 11 -10 V ! 11 -11 V 11 -10 V 10 -10 V 11 -10 V 11 -10 V 11 -10 V ! 11 -9 V ! 11 -10 V ! 11 -9 V ! 11 -10 V 10 -9 V - 11 -9 V - 11 -9 V 11 -10 V ! 11 -8 V 11 -9 V 11 -9 V 10 -9 V 11 -9 V ! 11 -8 V 11 -9 V ! 11 -8 V ! 11 -8 V ! 11 -8 V 11 -9 V 10 -8 V 11 -8 V ! 11 -7 V ! 11 -8 V 11 -8 V 11 -8 V ! 11 -7 V 11 -8 V 10 -7 V 11 -7 V 11 -8 V - 11 -7 V - 11 -7 V - 11 -7 V - 11 -7 V 10 -7 V 11 -6 V 11 -7 V ! 11 -7 V ! 11 -6 V ! 11 -7 V ! 11 -6 V 11 -7 V 10 -6 V 11 -6 V 11 -6 V 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 10 -5 V ! 11 -6 V ! 11 -6 V 11 -5 V 11 -6 V - 11 -5 V - 11 -5 V 10 -5 V ! 11 -6 V ! 11 -5 V ! 11 -5 V 11 -5 V 11 -5 V ! 11 -4 V 11 -5 V 10 -5 V ! 11 -4 V 11 -5 V 11 -5 V ! 11 -4 V ! 11 -4 V 11 -5 V - 11 -4 V 10 -4 V - 11 -4 V 11 -5 V ! 11 -4 V ! 11 -4 V ! 11 -3 V ! 11 -4 V 10 -4 V 11 -4 V 11 -4 V ! 11 -3 V 11 -4 V ! 11 -3 V 11 -4 V ! 11 -3 V 10 -4 V 11 -3 V ! 11 -3 V ! 11 -3 V 11 -4 V 11 -3 V 11 -3 V ! 11 -3 V 10 -3 V 11 -3 V ! 11 -2 V 11 -3 V 11 -3 V 11 -3 V - 11 -2 V 10 -3 V 11 -3 V ! 11 -2 V 11 -3 V ! 11 -2 V ! 11 -2 V 11 -3 V 11 -2 V 10 -2 V 11 -3 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V 10 -2 V 11 -2 V - 11 -2 V - 11 -1 V - 11 -2 V - 11 -2 V - 11 -2 V 10 -1 V 11 -2 V ! 11 -1 V ! 11 -2 V ! 11 -1 V 11 -2 V ! 11 -1 V 11 -2 V 10 -1 V - 11 -1 V 11 -2 V 11 -1 V 11 -1 V 11 -1 V 11 -2 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V - 11 -1 V - 11 -1 V - 11 -1 V - 11 -1 V 10 -1 V 11 -1 V - 11 0 V - 11 -1 V - 11 -1 V - 11 -1 V - 11 -1 V - 11 0 V 10 -1 V 11 -1 V ! 11 0 V 11 -1 V 11 -1 V 11 0 V 11 -1 V - 11 0 V 10 -1 V ! 11 0 V 11 -1 V ! 11 0 V 11 -1 V - 11 0 V - 11 0 V 10 -1 V 11 0 V 11 -1 V 11 0 V 11 0 V 11 0 V ! 11 -1 V 11 0 V 10 0 V 11 0 V 11 -1 V 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V 11 -1 V 10 0 V 11 0 V 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V 11 0 V 10 -1 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V 11 0 V ! 11 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V stroke grestore end showpage ! } ! \put(3087,1863){\rjust{$a=1,b=4$}} ! \put(3087,1963){\rjust{$a=4,b=1$}} ! \put(3087,2063){\rjust{$a=2,b=2$}} ! \put(1875,2276){\cjust{Beta Distribution}} ! \put(1875,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{1}} ! \put(2688,200){\cjust{0.75}} ! \put(1875,200){\cjust{0.5}} ! \put(1063,200){\cjust{0.25}} ! \put(250,200){\cjust{0}} ! \put(200,2176){\rjust{4}} ! \put(200,1707){\rjust{3}} ! \put(200,1238){\rjust{2}} ! \put(200,769){\rjust{1}} ! \put(200,300){\rjust{0}} \endGNUPLOTpicture --- 279,1268 ---- 1.000 UL LTb ! 350 300 M 63 0 V ! 3037 0 R -63 0 V ! 350 744 M 63 0 V ! 3037 0 R -63 0 V ! 350 1188 M 63 0 V ! 3037 0 R -63 0 V ! 350 1632 M 63 0 V ! 3037 0 R -63 0 V ! 350 2076 M 63 0 V ! 3037 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1125 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1900 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2675 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3100 0 V ! 0 1776 V ! -3100 0 V ! 350 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 350 300 M 10 9 V 11 9 V 10 8 V + 10 9 V 11 9 V + 10 8 V 11 9 V ! 10 8 V 10 9 V 11 8 V + 10 8 V + 10 9 V 11 8 V + 10 8 V 11 8 V ! 10 8 V 10 8 V 11 8 V ! 10 8 V ! 10 7 V 11 8 V + 10 8 V + 10 7 V 11 8 V ! 10 7 V 11 8 V 10 7 V + 10 7 V 11 7 V + 10 7 V + 10 8 V 11 7 V + 10 7 V + 11 6 V + 10 7 V + 10 7 V 11 7 V ! 10 7 V 10 6 V 11 7 V ! 10 6 V ! 10 7 V 11 6 V + 10 6 V 11 7 V 10 6 V + 10 6 V 11 6 V ! 10 6 V 10 6 V 11 6 V + 10 6 V + 10 6 V 11 5 V ! 10 6 V 11 5 V + 10 6 V + 10 6 V 11 5 V 10 5 V + 10 6 V 11 5 V + 10 5 V 11 5 V ! 10 5 V 10 5 V 11 5 V + 10 5 V + 10 5 V 11 5 V ! 10 4 V ! 10 5 V 11 5 V + 10 4 V 11 5 V ! 10 4 V ! 10 4 V 11 5 V ! 10 4 V 10 4 V 11 4 V + 10 4 V 11 4 V ! 10 4 V ! 10 4 V 11 4 V ! 10 4 V 10 3 V 11 4 V + 10 4 V + 10 3 V 11 3 V ! 10 4 V 11 3 V 10 3 V + 10 4 V 11 3 V + 10 3 V + 10 3 V 11 3 V + 10 3 V 11 3 V ! 10 3 V ! 10 2 V 11 3 V + 10 3 V 10 2 V 11 3 V ! 10 2 V ! 10 3 V 11 2 V 10 2 V 11 2 V + 10 2 V + 10 3 V 11 2 V + 10 2 V + 10 1 V 11 2 V ! 10 2 V 11 2 V + 10 1 V + 10 2 V 11 2 V ! 10 1 V 10 2 V 11 1 V ! 10 1 V ! 10 1 V 11 2 V 10 1 V 11 1 V + 10 1 V + 10 1 V 11 1 V ! 10 1 V ! 10 0 V 11 1 V 10 1 V 11 0 V + 10 1 V + 10 0 V 11 1 V ! 10 0 V ! 10 0 V ! 11 1 V ! 10 0 V 10 0 V 11 0 V + 10 0 V 11 0 V ! 10 0 V ! 10 0 V 11 -1 V + 10 0 V + 10 0 V 11 -1 V + 10 0 V + 10 -1 V 11 0 V 10 -1 V 11 -1 V + 10 0 V + 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V 11 -1 V ! 10 -1 V 11 -2 V ! 10 -1 V ! 10 -1 V 11 -1 V 10 -2 V ! 10 -1 V 11 -2 V 10 -2 V + 10 -1 V 11 -2 V + 10 -2 V 11 -2 V + 10 -1 V + 10 -2 V 11 -2 V ! 10 -3 V 10 -2 V 11 -2 V ! 10 -2 V 11 -2 V 10 -3 V + 10 -2 V 11 -3 V + 10 -2 V + 10 -3 V 11 -3 V + 10 -2 V + 10 -3 V 11 -3 V + 10 -3 V 11 -3 V ! 10 -3 V 10 -3 V 11 -3 V ! 10 -4 V ! 10 -3 V 11 -3 V 10 -4 V 11 -3 V + 10 -3 V + 10 -4 V 11 -4 V + 10 -3 V + 10 -4 V 11 -4 V ! 10 -4 V ! 10 -4 V 11 -4 V + 10 -4 V 11 -4 V + 10 -4 V + 10 -4 V 11 -5 V + 10 -4 V + 10 -4 V 11 -5 V ! 10 -4 V 11 -5 V 10 -5 V ! 10 -4 V 11 -5 V + 10 -5 V + 10 -5 V 11 -5 V ! 10 -5 V ! 10 -5 V 11 -5 V + 10 -5 V 11 -5 V + 10 -6 V 10 -5 V 11 -5 V + 10 -6 V + 10 -6 V 11 -5 V ! 10 -6 V 11 -5 V 10 -6 V ! 10 -6 V 11 -6 V 10 -6 V ! 10 -6 V 11 -6 V + 10 -6 V + 10 -6 V 11 -7 V + 10 -6 V 11 -6 V ! 10 -7 V 10 -6 V 11 -7 V ! 10 -6 V ! 10 -7 V 11 -7 V 10 -7 V ! 10 -7 V ! 11 -6 V ! 10 -7 V 11 -7 V + 10 -8 V + 10 -7 V 11 -7 V + 10 -7 V + 10 -7 V 11 -8 V + 10 -7 V 11 -8 V ! 10 -7 V 10 -8 V 11 -8 V + 10 -7 V + 10 -8 V 11 -8 V + 10 -8 V + 10 -8 V 11 -8 V + 10 -8 V 11 -8 V 10 -9 V + 10 -8 V 11 -8 V ! 10 -9 V 10 -8 V 11 -9 V ! 10 -8 V 11 -9 V 10 -9 V + 10 -8 V 11 -9 V ! 10 -9 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 350 300 M 10 0 V 11 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V ! 10 0 V 10 1 V 11 0 V 10 0 V ! 10 0 V 11 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V 11 1 V + 10 0 V + 10 0 V 11 0 V ! 10 0 V 11 1 V + 10 0 V + 10 0 V 11 0 V 10 1 V ! 10 0 V 11 0 V 10 1 V + 10 0 V 11 0 V ! 10 1 V 11 0 V ! 10 0 V ! 10 1 V 11 0 V + 10 1 V + 10 0 V 11 1 V + 10 0 V 10 1 V 11 0 V + 10 1 V 11 1 V + 10 0 V + 10 1 V 11 1 V + 10 0 V + 10 1 V 11 1 V ! 10 1 V 11 0 V 10 1 V 10 1 V 11 1 V ! 10 1 V ! 10 1 V 11 1 V ! 10 1 V ! 10 1 V 11 1 V 10 1 V 11 1 V + 10 1 V + 10 1 V 11 2 V + 10 1 V + 10 1 V 11 1 V ! 10 2 V 11 1 V 10 1 V ! 10 2 V 11 1 V 10 2 V + 10 1 V 11 2 V + 10 1 V + 10 2 V 11 2 V + 10 1 V 11 2 V + 10 2 V + 10 2 V 11 2 V + 10 2 V + 10 1 V 11 2 V ! 10 2 V 11 3 V 10 2 V + 10 2 V 11 2 V + 10 2 V + 10 2 V 11 3 V ! 10 2 V ! 10 2 V 11 3 V ! 10 2 V 11 3 V + 10 2 V 10 3 V 11 3 V + 10 2 V 10 3 V 11 3 V + 10 3 V 11 3 V + 10 3 V + 10 3 V 11 3 V ! 10 3 V ! 10 3 V 11 3 V + 10 3 V 10 4 V 11 3 V + 10 3 V 11 4 V ! 10 3 V 10 4 V 11 3 V ! 10 4 V 10 4 V 11 4 V ! 10 3 V 11 4 V ! 10 4 V ! 10 4 V 11 4 V + 10 4 V 10 5 V 11 4 V + 10 4 V + 10 4 V 11 5 V + 10 4 V 11 5 V + 10 4 V + 10 5 V 11 5 V + 10 4 V + 10 5 V 11 5 V ! 10 5 V 10 5 V 11 5 V + 10 5 V 11 5 V ! 10 6 V ! 10 5 V 11 5 V ! 10 6 V 10 5 V 11 6 V ! 10 6 V ! 11 5 V ! 10 6 V ! 10 6 V 11 6 V 10 6 V ! 10 6 V 11 6 V ! 10 6 V ! 10 7 V 11 6 V + 10 6 V 11 7 V + 10 7 V + 10 6 V 11 7 V + 10 7 V + 10 7 V 11 6 V 10 7 V 11 8 V 10 7 V ! 10 7 V 11 7 V + 10 8 V + 10 7 V 11 8 V + 10 7 V 10 8 V 11 8 V + 10 8 V 11 8 V + 10 8 V + 10 8 V 11 8 V + 10 8 V + 10 8 V 11 9 V ! 10 8 V 11 9 V 10 9 V ! 10 8 V 11 9 V 10 9 V ! 10 9 V 11 9 V ! 10 9 V ! 10 10 V 11 9 V + 10 9 V 11 10 V ! 10 9 V ! 10 10 V 11 10 V 10 10 V + 10 10 V 11 10 V ! 10 10 V 11 10 V + 10 10 V + 10 11 V 11 10 V ! 10 11 V ! 10 11 V 11 10 V 10 11 V 10 11 V 11 11 V + 10 11 V 11 12 V + 10 11 V + 10 11 V 11 12 V + 10 12 V + 10 11 V 11 12 V + 10 12 V 11 12 V ! 10 12 V ! 10 12 V 11 13 V + 10 12 V + 10 13 V 11 12 V + 10 13 V + 10 13 V 11 13 V ! 10 13 V 11 13 V + 10 13 V + 10 13 V 11 14 V ! 10 13 V 10 14 V 11 14 V + 10 13 V + 10 14 V 11 14 V ! 10 15 V 11 14 V ! 10 14 V ! 10 15 V 11 14 V 10 15 V + 10 15 V 11 15 V + 10 15 V 11 15 V ! 10 15 V ! 10 15 V 11 16 V ! 10 15 V 10 16 V 11 16 V + 10 16 V + 10 16 V 11 16 V ! 10 16 V ! 11 17 V ! 10 16 V 10 17 V 11 16 V ! 10 17 V ! 10 17 V 11 17 V 10 17 V 11 18 V ! 10 17 V ! 10 18 V 11 17 V 10 18 V 1.000 UL LT2 ! 3087 1763 M 263 0 V ! 350 2076 M 10 -18 V 11 -17 V ! 10 -18 V ! 10 -17 V 11 -18 V 10 -17 V 11 -17 V ! 10 -17 V 10 -17 V 11 -16 V + 10 -17 V + 10 -16 V + 11 -17 V + 10 -16 V 11 -16 V ! 10 -16 V ! 10 -16 V 11 -16 V 10 -16 V ! 10 -15 V 11 -16 V 10 -15 V ! 10 -15 V 11 -15 V ! 10 -15 V 11 -15 V + 10 -15 V + 10 -15 V 11 -14 V ! 10 -15 V 10 -14 V 11 -14 V ! 10 -15 V ! 11 -14 V ! 10 -14 V ! 10 -13 V 11 -14 V 10 -14 V + 10 -13 V + 11 -14 V + 10 -13 V + 10 -13 V 11 -13 V ! 10 -13 V 11 -13 V ! 10 -13 V 10 -13 V 11 -12 V + 10 -13 V + 10 -12 V + 11 -13 V + 10 -12 V + 10 -12 V 11 -12 V + 10 -12 V 11 -12 V ! 10 -11 V ! 10 -12 V 11 -12 V 10 -11 V + 10 -11 V 11 -12 V 10 -11 V 11 -11 V + 10 -11 V + 10 -11 V 11 -10 V ! 10 -11 V ! 10 -11 V 11 -10 V + 10 -11 V 10 -10 V 11 -10 V + 10 -10 V 11 -10 V + 10 -10 V + 10 -10 V 11 -10 V ! 10 -10 V 10 -9 V 11 -10 V ! 10 -9 V 11 -9 V + 10 -10 V + 10 -9 V 11 -9 V 10 -9 V + 10 -9 V 11 -9 V ! 10 -8 V ! 10 -9 V 11 -9 V ! 10 -8 V 11 -9 V 10 -8 V + 10 -8 V 11 -8 V ! 10 -8 V ! 10 -8 V 11 -8 V + 10 -8 V 11 -8 V ! 10 -8 V ! 10 -7 V 11 -8 V 10 -7 V + 10 -8 V 11 -7 V + 10 -7 V + 10 -7 V 11 -8 V 10 -7 V 11 -6 V + 10 -7 V + 10 -7 V 11 -7 V ! 10 -6 V ! 10 -7 V 11 -7 V 10 -6 V 11 -6 V + 10 -7 V + 10 -6 V 11 -6 V + 10 -6 V + 10 -6 V 11 -6 V ! 10 -6 V ! 10 -6 V 11 -5 V + 10 -6 V 11 -6 V 10 -5 V ! 10 -6 V 11 -5 V + 10 -5 V + 10 -6 V 11 -5 V ! 10 -5 V 11 -5 V 10 -5 V ! 10 -5 V 11 -5 V + 10 -5 V + 10 -4 V 11 -5 V ! 10 -5 V ! 10 -4 V 11 -5 V 10 -4 V 11 -5 V ! 10 -4 V 10 -4 V 11 -4 V + 10 -5 V + 10 -4 V 11 -4 V ! 10 -4 V ! 10 -4 V 11 -4 V ! 10 -3 V 11 -4 V ! 10 -4 V 10 -4 V 11 -3 V ! 10 -4 V ! 10 -3 V 11 -4 V + 10 -3 V 11 -3 V + 10 -4 V + 10 -3 V 11 -3 V ! 10 -3 V 10 -3 V 11 -3 V ! 10 -3 V ! 10 -3 V 11 -3 V + 10 -3 V 11 -3 V + 10 -3 V + 10 -2 V 11 -3 V 10 -3 V + 10 -2 V 11 -3 V ! 10 -2 V 11 -3 V ! 10 -2 V ! 10 -2 V 11 -3 V + 10 -2 V + 10 -2 V 11 -2 V 10 -2 V + 10 -2 V 11 -3 V 10 -2 V 11 -2 V 10 -1 V + 10 -2 V 11 -2 V ! 10 -2 V ! 10 -2 V 11 -2 V ! 10 -1 V 11 -2 V + 10 -2 V 10 -1 V 11 -2 V + 10 -1 V + 10 -2 V 11 -1 V + 10 -2 V + 10 -1 V 11 -1 V + 10 -2 V 11 -1 V + 10 -1 V + 10 -1 V 11 -2 V 10 -1 V 10 -1 V 11 -1 V 10 -1 V 11 -1 V ! 10 -1 V ! 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V 11 0 V + 10 -1 V 11 -1 V 10 -1 V ! 10 0 V 11 -1 V ! 10 -1 V ! 10 0 V 11 -1 V 10 -1 V 11 0 V + 10 -1 V + 10 0 V 11 -1 V + 10 0 V + 10 -1 V 11 0 V + 10 -1 V + 10 0 V 11 0 V + 10 -1 V 11 0 V ! 10 0 V ! 10 -1 V 11 0 V 10 0 V + 10 -1 V 11 0 V + 10 0 V + 10 0 V 11 -1 V + 10 0 V 11 0 V ! 10 0 V ! 10 0 V 11 -1 V 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V ! 10 0 V ! 10 0 V 11 0 V 10 -1 V 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1763){\rjust{$a=1,b=4$}}% ! \put(3037,1863){\rjust{$a=4,b=1$}}% ! \put(3037,1963){\rjust{$a=2,b=2$}}% ! \put(1900,2226){\cjust{Beta Distribution}}% ! \put(1900,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 1}}% ! \put(2675,200){\cjust{ 0.75}}% ! \put(1900,200){\cjust{ 0.5}}% ! \put(1125,200){\cjust{ 0.25}}% ! \put(350,200){\cjust{ 0}}% ! \put(300,2076){\rjust{ 4}}% ! \put(300,1632){\rjust{ 3}}% ! \put(300,1188){\rjust{ 2}}% ! \put(300,744){\rjust{ 1}}% ! \put(300,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-binomial.tex gsl-1.4/doc/rand-binomial.tex *** gsl-1.3/doc/rand-binomial.tex Mon Dec 10 19:24:35 2001 --- gsl-1.4/doc/rand-binomial.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-binomial.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-binomial.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,673 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 925 M ! 3150 0 R ! 350 1551 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 493 300 M ! 0 1876 R ! 636 300 M 0 63 V ! 0 1813 R 0 -63 V ! 780 300 M ! 0 1876 R ! 923 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1066 300 M ! 0 1876 R ! 1209 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1352 300 M ! 0 1876 R ! 1495 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1639 300 M ! 0 1876 R ! 1782 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M ! 0 1876 R ! 2068 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2211 300 M ! 0 1876 R ! 2355 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2498 300 M ! 0 1876 R ! 2641 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2784 300 M ! 0 1876 R ! 2927 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3070 300 M ! 0 1876 R ! 3214 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3357 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 306 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 55 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 214 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 458 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 549 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 257 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -257 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -549 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V - 0 -458 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 0 -214 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 0 -55 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 0 -6 V stroke --- 279,681 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 892 M ! 3000 0 R ! 450 1484 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 586 300 M ! 0 1776 R ! 723 300 M 0 63 V ! 0 1713 R 0 -63 V ! 859 300 M ! 0 1776 R ! 995 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1132 300 M ! 0 1776 R ! 1268 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1405 300 M ! 0 1776 R ! 1541 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1677 300 M ! 0 1776 R ! 1814 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M ! 0 1776 R ! 2086 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2223 300 M ! 0 1776 R ! 2359 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2495 300 M ! 0 1776 R ! 2632 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2768 300 M ! 0 1776 R ! 2905 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3041 300 M ! 0 1776 R ! 3177 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3314 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 306 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 52 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 202 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 434 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 520 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V ! 0 243 V 10 0 V 10 0 V 10 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -243 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -520 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -434 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -202 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -52 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 0 -6 V stroke *************** *** 675,702 **** end showpage ! } ! \put(3087,2063){\rjust{$p=0.5,n=9$}} ! \put(1925,2276){\cjust{Binomial Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3357,200){\cjust{10}} ! \put(3070,200){\cjust{9}} ! \put(2784,200){\cjust{8}} ! \put(2498,200){\cjust{7}} ! \put(2211,200){\cjust{6}} ! \put(1925,200){\cjust{5}} ! \put(1639,200){\cjust{4}} ! \put(1352,200){\cjust{3}} ! \put(1066,200){\cjust{2}} ! \put(780,200){\cjust{1}} ! \put(493,200){\cjust{0}} ! \put(300,2176){\rjust{0.3}} ! \put(300,1551){\rjust{0.2}} ! \put(300,925){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 683,712 ---- end showpage ! }}% ! \put(3037,1963){\rjust{$p=0.5,n=9$}}% ! \put(1950,2226){\cjust{Binomial Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3314,200){\cjust{ 10}}% ! \put(3041,200){\cjust{ 9}}% ! \put(2768,200){\cjust{ 8}}% ! \put(2495,200){\cjust{ 7}}% ! \put(2223,200){\cjust{ 6}}% ! \put(1950,200){\cjust{ 5}}% ! \put(1677,200){\cjust{ 4}}% ! \put(1405,200){\cjust{ 3}}% ! \put(1132,200){\cjust{ 2}}% ! \put(859,200){\cjust{ 1}}% ! \put(586,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.3}}% ! \put(400,1484){\rjust{ 0.2}}% ! \put(400,892){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-bivariate-gaussian.tex gsl-1.4/doc/rand-bivariate-gaussian.tex *** gsl-1.3/doc/rand-bivariate-gaussian.tex Mon Dec 10 19:24:35 2001 --- gsl-1.4/doc/rand-bivariate-gaussian.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-bivariate-gaussian.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:55 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-bivariate-gaussian.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 2358,2375 **** end showpage ! } ! \put(3202,1188){\cjust{$y$}} ! \put(2785,1723){\ljust{2}} ! \put(2785,1455){\ljust{1}} ! \put(2785,1188){\ljust{0}} ! \put(2785,920){\ljust{-1}} ! \put(2785,653){\ljust{-2}} ! \put(1800,385){\cjust{$x$}} ! \put(2735,553){\cjust{2}} ! \put(2267,553){\cjust{1}} ! \put(1800,553){\cjust{0}} ! \put(1332,553){\cjust{-1}} ! \put(865,553){\cjust{-2}} ! \put(3074,1912){\rjust{$\sigma_x=1, \sigma_y=1, \rho=0.9$}} ! \put(1800,2175){\cjust{Bivariate Gaussian Distribution}} \endGNUPLOTpicture --- 2366,2385 ---- end showpage ! }}% ! \put(3202,1188){\cjust{$y$}}% ! \put(2785,1723){\ljust{ 2}}% ! \put(2785,1455){\ljust{ 1}}% ! \put(2785,1188){\ljust{ 0}}% ! \put(2785,920){\ljust{-1}}% ! \put(2785,653){\ljust{-2}}% ! \put(1800,385){\cjust{$x$}}% ! \put(2735,553){\cjust{ 2}}% ! \put(2267,553){\cjust{ 1}}% ! \put(1800,553){\cjust{ 0}}% ! \put(1332,553){\cjust{-1}}% ! \put(865,553){\cjust{-2}}% ! \put(3074,1912){\rjust{$sigma_x=1, sigma_y=1, ho=0.9$}}% ! \put(1800,2175){\cjust{Bivariate Gaussian Distribution}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-cauchy.tex gsl-1.4/doc/rand-cauchy.tex *** gsl-1.3/doc/rand-cauchy.tex Mon Dec 10 19:24:35 2001 --- gsl-1.4/doc/rand-cauchy.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-cauchy.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:55 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-cauchy.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,983 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 769 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 1707 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 665 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1295 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2555 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3185 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 357 M ! 11 1 V 10 1 V - 11 1 V 10 0 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V ! 11 0 V 10 1 V - 11 1 V 10 1 V - 11 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 1 V 11 1 V 10 1 V ! 11 2 V 10 1 V - 11 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 2 V 10 2 V ! 11 1 V 10 2 V ! 11 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 3 V 10 2 V 11 2 V 10 3 V - 11 2 V 10 3 V - 11 3 V - 11 2 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 4 V ! 11 3 V 10 4 V - 11 3 V 10 4 V - 11 4 V 10 4 V - 11 4 V - 11 4 V 10 5 V 11 4 V 10 5 V ! 11 5 V 10 5 V - 11 5 V 10 6 V ! 11 5 V 10 6 V - 11 6 V 10 6 V - 11 6 V 10 7 V - 11 7 V - 11 7 V 10 7 V ! 11 8 V 10 8 V ! 11 8 V 10 9 V - 11 9 V 10 9 V - 11 9 V 10 10 V - 11 11 V 10 10 V ! 11 11 V ! 11 12 V 10 12 V ! 11 13 V 10 13 V - 11 13 V - 10 14 V - 11 15 V 10 15 V ! 11 16 V 10 17 V ! 11 17 V ! 10 18 V ! 11 18 V ! 10 20 V ! 11 20 V ! 11 20 V 10 22 V ! 11 22 V ! 10 24 V ! 11 24 V ! 10 24 V ! 11 26 V ! 10 27 V ! 11 27 V 10 28 V - 11 29 V 10 30 V ! 11 30 V 10 31 V ! 11 32 V ! 11 31 V ! 10 33 V ! 11 32 V ! 10 32 V ! 11 33 V ! 10 32 V ! 11 31 V 10 31 V ! 11 29 V 10 29 V ! 11 27 V ! 10 25 V ! 11 24 V ! 11 21 V ! 10 18 V ! 11 16 V ! 10 13 V ! 11 10 V ! 10 6 V ! 11 3 V 10 0 V ! 11 -3 V ! 10 -6 V ! 11 -10 V ! 10 -13 V ! 11 -16 V ! 10 -18 V ! 11 -21 V ! 11 -24 V ! 10 -25 V ! 11 -27 V 10 -29 V ! 11 -29 V 10 -31 V ! 11 -31 V ! 10 -32 V ! 11 -33 V ! 10 -32 V ! 11 -32 V ! 10 -33 V ! 11 -31 V ! 11 -32 V 10 -31 V - 11 -30 V 10 -30 V ! 11 -29 V 10 -28 V ! 11 -27 V ! 10 -27 V ! 11 -26 V ! 10 -24 V ! 11 -24 V ! 10 -24 V ! 11 -22 V 10 -22 V ! 11 -20 V ! 11 -20 V ! 10 -20 V ! 11 -18 V ! 10 -18 V ! 11 -17 V 10 -17 V ! 11 -16 V 10 -15 V ! 11 -15 V ! 10 -14 V ! 11 -13 V 10 -13 V - 11 -13 V 10 -12 V ! 11 -12 V ! 11 -11 V 10 -10 V - 11 -11 V 10 -10 V - 11 -9 V 10 -9 V - 11 -9 V 10 -9 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -7 V - 11 -7 V - 11 -7 V 10 -7 V ! 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V - 11 -4 V 10 -4 V 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V ! 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 403 M ! 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V - 11 1 V - 11 2 V 10 1 V 11 2 V 10 2 V ! 11 1 V 10 2 V - 11 2 V 10 1 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 11 2 V 10 1 V - 11 3 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 3 V - 11 2 V 10 2 V - 11 3 V 10 2 V - 11 3 V - 11 3 V 10 2 V ! 11 3 V 10 3 V 11 2 V 10 3 V ! 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 4 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 4 V ! 11 3 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 5 V - 11 4 V - 11 5 V 10 4 V - 11 5 V 10 4 V 11 5 V 10 5 V - 11 5 V 10 5 V - 11 6 V 10 5 V - 11 5 V 10 6 V ! 11 5 V 10 6 V - 11 6 V - 11 6 V 10 6 V - 11 6 V 10 6 V - 11 6 V 10 7 V ! 11 6 V 10 7 V - 11 7 V 10 7 V ! 11 7 V 10 7 V - 11 7 V - 11 7 V 10 7 V - 11 8 V 10 7 V - 11 8 V 10 7 V - 11 8 V 10 8 V ! 11 8 V 10 8 V ! 11 8 V 10 8 V - 11 8 V 10 8 V ! 11 8 V ! 11 8 V 10 8 V - 11 8 V 10 8 V ! 11 8 V 10 8 V - 11 8 V 10 8 V ! 11 8 V 10 8 V ! 11 7 V 10 8 V - 11 7 V 10 7 V ! 11 7 V ! 11 7 V 10 6 V - 11 7 V 10 6 V - 11 5 V 10 6 V - 11 5 V 10 5 V 11 5 V 10 4 V ! 11 4 V 10 4 V ! 11 3 V ! 11 3 V 10 2 V ! 11 2 V 10 2 V - 11 1 V 10 1 V ! 11 0 V 10 0 V - 11 0 V 10 -1 V ! 11 -1 V 10 -2 V ! 11 -2 V 10 -2 V ! 11 -3 V ! 11 -3 V 10 -4 V ! 11 -4 V 10 -4 V ! 11 -5 V 10 -5 V 11 -5 V 10 -6 V - 11 -5 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V - 11 -7 V 10 -7 V ! 11 -7 V ! 10 -8 V ! 11 -7 V 10 -8 V ! 11 -8 V 10 -8 V ! 11 -8 V 10 -8 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -8 V ! 11 -8 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -8 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -8 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V ! 11 -8 V 10 -7 V 11 -7 V ! 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -6 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V 11 -5 V 10 -4 V ! 11 -5 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V 11 -2 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -1 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=2$}} ! \put(3087,2063){\rjust{$a=1$}} ! \put(1925,2276){\cjust{Cauchy Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3185,200){\cjust{4}} ! \put(2870,200){\cjust{3}} ! \put(2555,200){\cjust{2}} ! \put(2240,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1610,200){\cjust{-1}} ! \put(1295,200){\cjust{-2}} ! \put(980,200){\cjust{-3}} ! \put(665,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,2176){\rjust{0.4}} ! \put(300,1707){\rjust{0.3}} ! \put(300,1238){\rjust{0.2}} ! \put(300,769){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,993 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 744 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 1632 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 750 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2550 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3150 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 354 M ! 10 1 V ! 10 1 V 10 1 V 10 0 V 10 1 V 10 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 11 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V 10 2 V ! 10 1 V 10 2 V 10 2 V 11 2 V + 10 2 V + 10 2 V + 10 2 V + 10 2 V + 10 2 V + 10 2 V + 10 2 V + 10 3 V + 10 2 V + 10 3 V + 10 2 V + 10 3 V + 10 2 V + 10 3 V + 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V 10 4 V 10 4 V 10 4 V 10 5 V 11 4 V 10 5 V ! 10 4 V ! 10 5 V 10 5 V 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V ! 10 6 V 10 6 V 10 6 V 10 7 V 10 7 V ! 10 7 V 10 8 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 9 V 10 9 V 10 9 V 10 10 V 10 10 V ! 10 11 V ! 10 11 V ! 10 11 V 10 12 V ! 10 12 V ! 10 13 V ! 11 14 V 10 13 V 10 15 V ! 10 15 V ! 10 16 V ! 10 16 V 10 17 V ! 10 17 V ! 10 19 V ! 10 19 V ! 10 19 V ! 10 21 V ! 10 21 V 10 22 V ! 10 23 V ! 10 23 V ! 10 25 V ! 10 25 V ! 10 26 V ! 10 26 V ! 10 28 V ! 10 28 V 10 28 V 10 30 V ! 10 29 V 10 31 V ! 10 30 V 10 31 V ! 10 30 V ! 10 31 V ! 11 30 V ! 10 30 V 10 29 V ! 10 28 V ! 10 27 V ! 10 26 V ! 10 24 V ! 10 22 V ! 10 20 V ! 10 17 V ! 10 15 V ! 10 12 V ! 10 9 V ! 10 7 V ! 10 3 V 10 0 V ! 10 -3 V ! 10 -7 V ! 10 -9 V ! 10 -12 V ! 10 -15 V ! 10 -17 V ! 10 -20 V ! 10 -22 V ! 10 -24 V ! 10 -26 V ! 10 -27 V ! 10 -28 V 10 -29 V ! 10 -30 V ! 11 -30 V 10 -31 V ! 10 -30 V 10 -31 V 10 -30 V ! 10 -31 V ! 10 -29 V ! 10 -30 V 10 -28 V ! 10 -28 V ! 10 -28 V ! 10 -26 V ! 10 -26 V ! 10 -25 V ! 10 -25 V ! 10 -23 V ! 10 -23 V 10 -22 V ! 10 -21 V ! 10 -21 V ! 10 -19 V ! 10 -19 V ! 10 -19 V ! 10 -17 V 10 -17 V ! 10 -16 V ! 10 -16 V 10 -15 V ! 10 -15 V ! 10 -13 V ! 11 -14 V 10 -13 V 10 -12 V ! 10 -12 V ! 10 -11 V ! 10 -11 V ! 10 -11 V 10 -10 V 10 -10 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -8 V ! 10 -8 V ! 10 -8 V 10 -8 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V 10 -5 V 10 -4 V + 10 -5 V 11 -4 V + 10 -5 V + 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 397 M ! 10 2 V 10 1 V 10 1 V 10 1 V 10 1 V 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V 11 2 V + 10 1 V 10 2 V ! 10 1 V ! 10 2 V ! 10 1 V 10 2 V 10 1 V 10 2 V 10 2 V 10 1 V 10 2 V 10 2 V 10 2 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V 10 3 V 10 2 V 10 2 V 10 2 V ! 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V 10 3 V 11 2 V 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 4 V 10 4 V 10 4 V 10 4 V 10 5 V 10 4 V 10 4 V 11 5 V + 10 4 V + 10 5 V + 10 5 V + 10 5 V + 10 5 V + 10 5 V 10 5 V 10 5 V 10 5 V 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V 10 6 V 10 6 V 10 6 V 10 7 V ! 10 6 V ! 10 6 V 10 7 V 10 7 V ! 10 6 V 10 7 V 10 7 V 10 7 V 10 7 V 10 8 V ! 11 7 V ! 10 7 V 10 8 V ! 10 7 V ! 10 7 V 10 8 V 10 8 V ! 10 7 V 10 8 V 10 8 V ! 10 7 V 10 8 V 10 8 V ! 10 7 V 10 8 V ! 10 7 V 10 8 V 10 7 V ! 10 8 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 6 V ! 10 7 V 10 6 V 10 6 V 10 6 V 10 5 V 11 5 V + 10 5 V + 10 5 V 10 4 V ! 10 5 V ! 10 3 V 10 4 V ! 10 3 V 10 2 V ! 10 3 V 10 2 V 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 0 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -4 V ! 10 -3 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -5 V 11 -5 V + 10 -5 V 10 -6 V 10 -6 V 10 -6 V 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -8 V ! 10 -7 V 10 -8 V ! 10 -7 V 10 -8 V ! 10 -7 V 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V 10 -8 V 10 -7 V 10 -7 V ! 10 -8 V 10 -7 V 11 -7 V ! 10 -8 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -4 V 11 -5 V 10 -4 V ! 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V ! 10 -3 V ! 10 -2 V 10 -3 V 11 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 11 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=2$}}% ! \put(3037,1963){\rjust{$a=1$}}% ! \put(1950,2226){\cjust{Cauchy Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3150,200){\cjust{ 4}}% ! \put(2850,200){\cjust{ 3}}% ! \put(2550,200){\cjust{ 2}}% ! \put(2250,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1650,200){\cjust{-1}}% ! \put(1350,200){\cjust{-2}}% ! \put(1050,200){\cjust{-3}}% ! \put(750,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,2076){\rjust{ 0.4}}% ! \put(400,1632){\rjust{ 0.3}}% ! \put(400,1188){\rjust{ 0.2}}% ! \put(400,744){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-chisq.tex gsl-1.4/doc/rand-chisq.tex *** gsl-1.3/doc/rand-chisq.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-chisq.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-chisq.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:55 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-chisq.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,1202 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1400 300 M 0 63 V ! 0 1813 R 0 -63 V 2450 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 790 2176 M ! 2 -8 V ! 11 -31 V ! 11 -30 V 10 -30 V ! 11 -28 V 10 -27 V ! 11 -27 V 10 -25 V - 11 -26 V 10 -24 V - 11 -24 V - 10 -23 V - 11 -22 V 10 -22 V ! 11 -21 V ! 11 -21 V 10 -20 V - 11 -20 V - 10 -19 V - 11 -19 V 10 -19 V - 11 -17 V 10 -18 V ! 11 -17 V 10 -17 V - 11 -17 V 10 -16 V - 11 -15 V 10 -16 V ! 11 -15 V ! 11 -15 V 10 -14 V ! 11 -15 V ! 10 -14 V ! 11 -13 V ! 10 -14 V ! 11 -13 V 10 -13 V - 11 -13 V - 10 -12 V - 11 -12 V 10 -12 V - 11 -12 V 10 -12 V - 11 -11 V - 11 -12 V 10 -11 V - 11 -10 V 10 -11 V ! 11 -11 V 10 -10 V - 11 -10 V 10 -10 V - 11 -10 V 10 -10 V - 11 -9 V 10 -10 V - 11 -9 V - 11 -9 V 10 -9 V - 11 -9 V 10 -9 V - 11 -8 V 10 -9 V ! 11 -8 V 10 -8 V ! 11 -9 V 10 -8 V - 11 -7 V 10 -8 V - 11 -8 V 10 -8 V ! 11 -7 V ! 11 -7 V 10 -8 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V ! 11 -7 V ! 10 -6 V ! 11 -7 V 10 -7 V 11 -6 V 10 -6 V - 11 -7 V - 10 -6 V - 11 -6 V - 11 -6 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -5 V ! 11 -4 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V ! 11 -3 V 10 -4 V 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -4 V - 11 -3 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -2 V 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -1 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V 11 -2 V 10 -1 V ! 11 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -1 V 11 -1 V 10 -2 V 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 2176 M ! 11 -9 V ! 10 -10 V ! 11 -9 V ! 10 -9 V ! 11 -9 V ! 10 -10 V ! 11 -9 V ! 10 -9 V ! 11 -9 V ! 10 -9 V ! 11 -9 V ! 10 -9 V ! 11 -8 V ! 10 -9 V ! 11 -9 V ! 11 -9 V ! 10 -8 V ! 11 -9 V ! 10 -9 V ! 11 -8 V ! 10 -9 V ! 11 -8 V ! 10 -8 V ! 11 -9 V ! 10 -8 V ! 11 -8 V ! 10 -9 V ! 11 -8 V ! 11 -8 V ! 10 -8 V ! 11 -8 V ! 10 -8 V ! 11 -8 V ! 10 -8 V ! 11 -8 V ! 10 -8 V ! 11 -8 V ! 10 -8 V ! 11 -7 V ! 10 -8 V ! 11 -8 V ! 10 -7 V ! 11 -8 V ! 11 -8 V ! 10 -7 V ! 11 -8 V ! 10 -7 V ! 11 -7 V ! 10 -8 V ! 11 -7 V ! 10 -7 V ! 11 -8 V ! 10 -7 V ! 11 -7 V ! 10 -7 V ! 11 -7 V ! 11 -8 V ! 10 -7 V ! 11 -7 V ! 10 -7 V ! 11 -7 V ! 10 -6 V ! 11 -7 V ! 10 -7 V ! 11 -7 V ! 10 -7 V ! 11 -7 V ! 10 -6 V ! 11 -7 V ! 10 -7 V ! 11 -6 V ! 11 -7 V ! 10 -6 V ! 11 -7 V ! 10 -6 V ! 11 -7 V ! 10 -6 V ! 11 -6 V ! 10 -7 V ! 11 -6 V ! 10 -6 V ! 11 -7 V ! 10 -6 V ! 11 -6 V ! 10 -6 V ! 11 -6 V ! 11 -6 V ! 10 -7 V ! 11 -6 V ! 10 -6 V ! 11 -6 V ! 10 -6 V ! 11 -5 V ! 10 -6 V ! 11 -6 V ! 10 -6 V ! 11 -6 V ! 10 -6 V ! 11 -5 V ! 11 -6 V ! 10 -6 V ! 11 -5 V ! 10 -6 V ! 11 -6 V ! 10 -5 V ! 11 -6 V ! 10 -5 V ! 11 -6 V ! 10 -5 V ! 11 -6 V ! 10 -5 V ! 11 -5 V ! 10 -6 V ! 11 -5 V ! 11 -5 V ! 10 -6 V ! 11 -5 V ! 10 -5 V ! 11 -5 V ! 10 -5 V ! 11 -6 V ! 10 -5 V ! 11 -5 V ! 10 -5 V ! 11 -5 V ! 10 -5 V ! 11 -5 V ! 10 -5 V ! 11 -5 V ! 11 -5 V ! 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V ! 11 -5 V ! 11 -4 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V - 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -5 V ! 11 -4 V 10 -4 V 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V 11 -3 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -4 V ! 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 11 -3 V 10 -2 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V ! 11 -3 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -3 V 10 -2 V 11 -2 V 10 -2 V 11 -2 V 10 -2 V 11 -2 V ! 1.000 UL ! LT2 ! 3137 1863 M ! 263 0 V ! 350 300 M ! 11 149 V ! 10 61 V ! 11 46 V ! 10 38 V ! 11 33 V ! 10 29 V ! 11 27 V ! 10 24 V ! 11 23 V ! 10 21 V ! 11 20 V ! 10 18 V ! 11 17 V ! 10 17 V ! 11 16 V ! 11 14 V ! 10 15 V ! 11 13 V ! 10 13 V ! 11 13 V ! 10 11 V ! 11 12 V ! 10 11 V ! 11 10 V ! 10 10 V ! 11 10 V ! 10 9 V ! 11 9 V ! 11 9 V ! 10 8 V ! 11 9 V ! 10 7 V ! 11 8 V ! 10 7 V ! 11 7 V ! 10 7 V ! 11 7 V ! 10 6 V ! 11 6 V ! 10 6 V ! 11 6 V ! 10 5 V ! 11 5 V ! 11 6 V ! 10 5 V ! 11 4 V ! 10 5 V ! 11 4 V ! 10 5 V ! 11 4 V ! 10 4 V ! 11 4 V 10 4 V - 11 3 V 10 4 V - 11 3 V - 11 3 V 10 4 V - 11 3 V 10 3 V ! 11 2 V 10 3 V - 11 3 V 10 2 V - 11 2 V 10 3 V ! 11 2 V 10 2 V 11 2 V 10 2 V ! 11 2 V ! 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V - 11 1 V 10 1 V - 11 1 V 10 1 V ! 11 1 V 10 0 V ! 11 1 V 11 1 V 10 1 V ! 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 1 V 10 0 V - 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 0 V 11 -1 V 10 0 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V ! 11 -1 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 0 V 10 -1 V ! 11 -1 V ! 11 -1 V ! 10 -2 V ! 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V 11 -1 V ! 10 -2 V ! 11 -1 V ! 10 -2 V ! 11 -1 V ! 10 -2 V ! 11 -1 V ! 10 -2 V ! 11 -1 V ! 10 -2 V ! 11 -1 V ! 11 -2 V ! 10 -2 V ! 11 -1 V ! 10 -2 V 11 -1 V - 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V ! 10 -2 V 11 -1 V - 10 -2 V - 11 -2 V - 11 -2 V 10 -1 V - 11 -2 V - 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V 11 -1 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V 11 -1 V - 10 -2 V - 11 -2 V - 10 -2 V - 11 -2 V - 10 -2 V - 11 -2 V - 10 -2 V - 11 -2 V - 10 -2 V - 11 -2 V - 10 -2 V - 11 -2 V - 11 -2 V 10 -1 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -3 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -3 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V ! 10 -2 V ! 11 -2 V stroke grestore end showpage ! } ! \put(3087,1863){\rjust{$\nu=3$}} ! \put(3087,1963){\rjust{$\nu=2$}} ! \put(3087,2063){\rjust{$\nu=1$}} ! \put(1925,2276){\cjust{Chi-squared Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{3}} ! \put(2450,200){\cjust{2}} ! \put(1400,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1238){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,1243 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1450 300 M 0 63 V ! 0 1713 R 0 -63 V 2450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 589 2076 M ! 1 -14 V ! 11 -68 V ! 10 -62 V ! 10 -57 V ! 10 -52 V ! 10 -48 V ! 10 -44 V ! 10 -42 V ! 10 -39 V ! 10 -36 V ! 10 -34 V ! 10 -32 V 10 -30 V ! 10 -29 V 10 -27 V ! 10 -26 V 10 -25 V 10 -24 V 10 -22 V ! 10 -22 V ! 10 -20 V 10 -20 V 10 -19 V 10 -18 V ! 10 -18 V 10 -17 V 10 -16 V 10 -16 V ! 10 -15 V ! 10 -15 V 10 -14 V ! 11 -14 V ! 10 -13 V ! 10 -13 V 10 -13 V 10 -12 V 10 -12 V 10 -11 V 10 -11 V ! 10 -11 V ! 10 -11 V 10 -10 V 10 -10 V 10 -10 V 10 -10 V 10 -9 V 10 -9 V 10 -9 V ! 10 -9 V 10 -8 V ! 10 -9 V 10 -8 V 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V 10 -7 V 11 -6 V + 10 -7 V 10 -6 V 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V ! 10 -5 V 10 -6 V 10 -6 V ! 10 -5 V 10 -6 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V ! 10 -5 V 10 -4 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -4 V 10 -5 V 10 -4 V 10 -4 V ! 10 -4 V 10 -4 V 11 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V 11 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 11 -2 V 10 -1 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 11 -1 V 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V 11 -1 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V 10 -1 V 11 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 1188 M 10 -4 V 10 -5 V 10 -4 V 10 -5 V 10 -4 V ! 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -5 V 10 -4 V ! 10 -4 V 10 -4 V 11 -4 V + 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -3 V ! 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V 10 -4 V 10 -4 V 10 -4 V ! 10 -3 V ! 10 -4 V 10 -4 V 10 -3 V 10 -4 V ! 10 -4 V ! 10 -3 V 10 -4 V 11 -3 V + 10 -4 V + 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 11 -3 V + 10 -4 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 11 -3 V 10 -2 V 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V + 10 -3 V 11 -2 V 10 -2 V + 10 -2 V + 10 -3 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -3 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -3 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V 11 -2 V 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -2 V + 10 -1 V 11 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 11 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 11 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 11 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 1.000 UL ! LT2 ! 3087 1763 M ! 263 0 V ! 450 300 M ! 10 71 V ! 10 28 V ! 10 22 V ! 10 18 V ! 10 16 V ! 10 14 V ! 10 12 V ! 10 12 V ! 10 11 V ! 10 9 V ! 10 10 V ! 10 8 V ! 10 9 V ! 10 8 V ! 11 7 V ! 10 7 V ! 10 7 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 4 V 10 3 V ! 10 4 V ! 10 3 V ! 10 3 V ! 10 4 V 10 3 V 10 2 V 10 3 V ! 10 3 V ! 10 3 V 10 2 V + 10 3 V 11 2 V 10 2 V ! 10 2 V ! 10 2 V ! 10 3 V ! 10 2 V 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V 10 1 V 10 1 V 10 2 V 10 1 V 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V 11 1 V 10 1 V ! 10 0 V 10 1 V 10 0 V ! 10 1 V 10 0 V 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 -1 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 0 V ! 10 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V 10 -1 V 10 -1 V 11 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V 11 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 11 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 11 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 11 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1763){\rjust{$ ! u=3$}}% ! \put(3037,1863){\rjust{$ ! u=2$}}% ! \put(3037,1963){\rjust{$ ! u=1$}}% ! \put(1950,2226){\cjust{Chi-squared Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 3}}% ! \put(2450,200){\cjust{ 2}}% ! \put(1450,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-erlang.tex gsl-1.4/doc/rand-erlang.tex *** gsl-1.3/doc/rand-erlang.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-erlang.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-erlang.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:55 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-erlang.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,1253 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 2176 M ! 11 -31 V ! 10 -31 V ! 11 -30 V 10 -29 V - 11 -29 V 10 -29 V - 11 -28 V 10 -28 V - 11 -27 V 10 -27 V ! 11 -26 V 10 -26 V - 11 -26 V 10 -25 V ! 11 -24 V ! 11 -24 V 10 -24 V ! 11 -24 V 10 -23 V ! 11 -22 V 10 -23 V ! 11 -21 V 10 -22 V - 11 -21 V 10 -21 V - 11 -20 V 10 -21 V ! 11 -19 V ! 11 -20 V 10 -19 V - 11 -19 V 10 -18 V ! 11 -19 V 10 -18 V - 11 -17 V 10 -17 V ! 11 -18 V 10 -16 V - 11 -17 V 10 -16 V - 11 -16 V 10 -16 V - 11 -15 V - 11 -15 V 10 -15 V ! 11 -15 V 10 -14 V 11 -14 V 10 -14 V ! 11 -14 V 10 -13 V - 11 -14 V 10 -13 V ! 11 -13 V 10 -12 V ! 11 -13 V ! 11 -12 V 10 -12 V - 11 -12 V 10 -11 V - 11 -12 V 10 -11 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -11 V - 11 -10 V 10 -10 V - 11 -10 V 10 -10 V - 11 -10 V - 11 -9 V 10 -10 V ! 11 -9 V 10 -9 V - 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -8 V 10 -8 V ! 11 -8 V ! 10 -7 V ! 11 -8 V ! 11 -7 V 10 -7 V - 11 -7 V 10 -8 V - 11 -6 V 10 -7 V ! 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -6 V - 11 -6 V - 10 -5 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V 11 -5 V 10 -4 V - 11 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V 11 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V ! 11 -1 V 10 0 V 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V 11 0 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 300 M ! 11 31 V ! 10 30 V ! 11 29 V ! 10 27 V ! 11 27 V 10 26 V ! 11 25 V ! 10 25 V ! 11 23 V 10 22 V - 11 22 V 10 21 V ! 11 20 V 10 20 V ! 11 18 V 11 18 V 10 17 V - 11 17 V 10 16 V ! 11 15 V 10 15 V ! 11 14 V 10 13 V ! 11 13 V 10 12 V - 11 12 V 10 11 V ! 11 11 V ! 11 10 V 10 10 V - 11 9 V 10 9 V ! 11 8 V 10 8 V - 11 8 V 10 7 V ! 11 6 V 10 6 V - 11 6 V 10 6 V - 11 5 V 10 5 V ! 11 4 V ! 11 4 V 10 4 V 11 4 V 10 3 V ! 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 1 V - 11 0 V 10 1 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -2 V ! 11 -1 V 10 -2 V 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V ! 11 -4 V 10 -4 V ! 11 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V 11 -4 V 10 -4 V - 11 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -1 V - 11 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V - 10 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 1.000 UL ! LT2 ! 3137 1863 M ! 263 0 V ! 350 300 M ! 11 0 V ! 10 1 V ! 11 1 V ! 10 2 V ! 11 2 V 10 3 V ! 11 2 V 10 4 V - 11 3 V 10 4 V 11 4 V 10 5 V ! 11 5 V 10 5 V - 11 5 V - 11 5 V 10 6 V - 11 6 V 10 6 V - 11 6 V 10 6 V - 11 7 V 10 6 V - 11 7 V 10 7 V ! 11 7 V 10 7 V ! 11 7 V ! 11 7 V 10 7 V - 11 7 V 10 7 V ! 11 8 V 10 7 V - 11 7 V 10 7 V - 11 7 V - 10 8 V - 11 7 V 10 7 V - 11 7 V 10 7 V ! 11 7 V ! 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 7 V - 11 6 V 10 7 V ! 11 6 V 10 7 V - 11 6 V 10 6 V - 11 6 V 11 7 V 10 6 V ! 11 5 V 10 6 V - 11 6 V 10 6 V ! 11 5 V 10 5 V - 11 6 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 5 V - 11 4 V - 11 5 V 10 4 V ! 11 5 V 10 4 V ! 11 4 V 10 4 V - 11 4 V 10 4 V 11 4 V 10 3 V ! 11 4 V 10 3 V - 11 3 V 10 3 V - 11 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 2 V 10 3 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 1 V 10 2 V - 11 1 V 10 1 V 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 0 V ! 11 1 V ! 11 0 V 10 0 V ! 11 1 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V ! 11 -1 V 10 -1 V ! 11 0 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V ! 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -3 V 10 -2 V 11 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -3 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V 11 -2 V 10 -2 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -2 V 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V stroke grestore end showpage ! } ! \put(3087,1863){\rjust{$n=3$}} ! \put(3087,1963){\rjust{$n=2$}} ! \put(3087,2063){\rjust{$n=1$}} ! \put(1925,2276){\cjust{Erlang Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1238){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,1263 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 2076 M ! 10 -29 V 10 -29 V 10 -29 V 10 -28 V 10 -27 V ! 10 -28 V ! 10 -26 V ! 10 -26 V 10 -26 V 10 -25 V ! 10 -25 V ! 10 -25 V 10 -24 V ! 10 -24 V ! 11 -23 V 10 -23 V ! 10 -22 V 10 -23 V ! 10 -21 V 10 -22 V 10 -21 V 10 -21 V ! 10 -20 V ! 10 -20 V ! 10 -20 V ! 10 -19 V ! 10 -19 V 10 -19 V 10 -18 V ! 10 -19 V ! 10 -17 V 10 -18 V 10 -17 V ! 10 -17 V ! 10 -17 V ! 10 -16 V 10 -16 V 10 -16 V 10 -16 V 10 -15 V ! 10 -15 V ! 10 -15 V ! 10 -15 V 10 -14 V 11 -14 V 10 -14 V ! 10 -14 V ! 10 -13 V ! 10 -13 V 10 -13 V 10 -13 V ! 10 -13 V ! 10 -12 V ! 10 -12 V ! 10 -12 V 10 -12 V ! 10 -11 V 10 -12 V 10 -11 V 10 -11 V 10 -11 V ! 10 -10 V 10 -11 V 10 -10 V 10 -10 V 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -10 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 11 -8 V 10 -9 V 10 -8 V 10 -8 V 10 -8 V 10 -8 V ! 10 -8 V 10 -7 V 10 -8 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -6 V 10 -5 V 11 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -4 V + 10 -5 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -5 V + 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 11 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 11 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V ! 10 -1 V 10 0 V + 10 -1 V 11 -1 V + 10 0 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V 10 -1 V 11 0 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V ! 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V 11 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 300 M ! 10 29 V ! 10 28 V ! 10 28 V 10 26 V ! 10 26 V ! 10 24 V ! 10 24 V ! 10 23 V 10 22 V 10 21 V ! 10 21 V 10 20 V ! 10 19 V ! 10 18 V 11 18 V 10 17 V 10 16 V ! 10 16 V 10 15 V ! 10 14 V ! 10 14 V 10 13 V ! 10 13 V ! 10 12 V 10 12 V 10 11 V ! 10 11 V 10 10 V 10 9 V ! 10 9 V ! 10 9 V ! 10 9 V ! 10 7 V 10 8 V 10 7 V ! 10 7 V 10 6 V 10 6 V 10 5 V ! 10 6 V ! 10 4 V ! 10 5 V ! 10 4 V 10 4 V 11 4 V 10 3 V ! 10 3 V ! 10 3 V 10 2 V ! 10 3 V 10 2 V 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -2 V ! 10 -1 V 10 -2 V 11 -2 V 10 -3 V 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -4 V ! 10 -3 V ! 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V + 10 -3 V 11 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 11 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -4 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 11 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 11 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V 11 -1 V + 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 11 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 1.000 UL ! LT2 ! 3087 1763 M ! 263 0 V ! 450 300 M ! 10 0 V ! 10 1 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 3 V 10 3 V ! 10 3 V ! 10 4 V 10 4 V 10 4 V + 10 5 V + 10 5 V 11 4 V + 10 6 V 10 5 V ! 10 6 V 10 5 V 10 6 V 10 6 V 10 6 V 10 6 V 10 7 V ! 10 6 V 10 7 V ! 10 6 V 10 7 V 10 7 V ! 10 6 V 10 7 V 10 7 V 10 7 V 10 7 V ! 10 6 V ! 10 7 V 10 7 V 10 7 V 10 7 V 10 7 V ! 10 6 V ! 10 7 V 10 7 V 10 6 V 11 7 V 10 6 V ! 10 7 V ! 10 6 V ! 10 7 V ! 10 6 V 10 6 V 10 6 V ! 10 7 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 5 V ! 10 6 V 10 5 V 10 5 V 10 5 V 10 5 V 10 4 V ! 10 5 V 10 4 V ! 10 5 V 10 4 V 10 4 V + 10 5 V 11 4 V 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 3 V ! 10 4 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 2 V ! 10 3 V ! 10 3 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V ! 10 1 V 10 2 V 10 2 V 10 1 V ! 10 2 V 10 1 V 10 2 V 10 1 V 11 1 V 10 1 V 10 1 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 -1 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V + 10 -1 V + 10 0 V 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 11 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V 11 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V 10 -2 V 11 -1 V 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1763){\rjust{$n=3$}}% ! \put(3037,1863){\rjust{$n=2$}}% ! \put(3037,1963){\rjust{$n=1$}}% ! \put(1950,2226){\cjust{Erlang Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-exponential.tex gsl-1.4/doc/rand-exponential.tex *** gsl-1.3/doc/rand-exponential.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-exponential.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-exponential.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:55 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-exponential.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,938 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1400 300 M 0 63 V ! 0 1813 R 0 -63 V 2450 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 2176 M ! 11 -19 V 10 -18 V ! 11 -19 V ! 10 -18 V ! 11 -18 V ! 10 -18 V ! 11 -17 V 10 -18 V - 11 -17 V 10 -17 V - 11 -17 V 10 -17 V - 11 -16 V 10 -17 V - 11 -16 V - 11 -16 V 10 -16 V ! 11 -16 V 10 -16 V 11 -15 V 10 -15 V ! 11 -16 V 10 -15 V - 11 -14 V 10 -15 V - 11 -15 V 10 -14 V ! 11 -14 V ! 11 -15 V 10 -14 V - 11 -13 V 10 -14 V - 11 -14 V 10 -13 V ! 11 -14 V 10 -13 V - 11 -13 V 10 -13 V ! 11 -12 V 10 -13 V - 11 -13 V 10 -12 V - 11 -12 V - 11 -13 V 10 -12 V ! 11 -12 V 10 -11 V - 11 -12 V 10 -12 V 11 -11 V 10 -11 V - 11 -12 V 10 -11 V - 11 -11 V 10 -11 V - 11 -10 V - 11 -11 V 10 -11 V - 11 -10 V 10 -10 V ! 11 -11 V 10 -10 V ! 11 -10 V 10 -10 V ! 11 -10 V 10 -10 V - 11 -9 V 10 -10 V - 11 -9 V 10 -10 V - 11 -9 V - 11 -9 V 10 -9 V ! 11 -9 V 10 -9 V - 11 -9 V 10 -9 V - 11 -8 V 10 -9 V - 11 -8 V 10 -9 V - 11 -8 V 10 -8 V 11 -8 V 10 -8 V - 11 -8 V - 11 -8 V 10 -8 V - 11 -8 V 10 -8 V - 11 -7 V 10 -8 V - 11 -7 V 10 -7 V ! 11 -8 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -7 V ! 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -5 V ! 11 -6 V 10 -5 V ! 11 -6 V 10 -5 V ! 11 -6 V 10 -5 V - 11 -5 V 10 -6 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V 11 -5 V 10 -4 V - 11 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V ! 11 -3 V 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -2 V 11 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 11 -2 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V ! 1.000 UL ! LT1 ! 3137 1963 M ! 263 0 V ! 350 1238 M ! 11 -5 V ! 10 -4 V ! 11 -5 V ! 10 -5 V ! 11 -4 V ! 10 -5 V ! 11 -4 V ! 10 -5 V ! 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V ! 11 -4 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -4 V 10 -3 V - 11 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V ! 11 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V 11 -3 V 10 -2 V - 11 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V ! 11 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V 11 -1 V 10 -1 V 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$\mu=2$}} ! \put(3087,2063){\rjust{$\mu=1$}} ! \put(1925,2276){\cjust{Exponential Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{3}} ! \put(2450,200){\cjust{2}} ! \put(1400,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1238){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,948 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1450 300 M 0 63 V ! 0 1713 R 0 -63 V 2450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 2076 M 10 -18 V ! 10 -17 V 10 -18 V 10 -17 V 10 -17 V 10 -17 V 10 -16 V ! 10 -17 V ! 10 -16 V ! 10 -17 V ! 10 -16 V ! 10 -15 V ! 10 -16 V 10 -16 V 11 -15 V 10 -15 V ! 10 -16 V ! 10 -14 V 10 -15 V 10 -15 V 10 -14 V ! 10 -15 V ! 10 -14 V ! 10 -14 V 10 -14 V 10 -14 V 10 -13 V ! 10 -14 V ! 10 -13 V ! 10 -14 V ! 10 -13 V 10 -13 V 10 -13 V ! 10 -12 V ! 10 -13 V ! 10 -12 V 10 -13 V 10 -12 V 10 -12 V ! 10 -12 V ! 10 -12 V ! 10 -12 V 10 -11 V 10 -12 V 11 -11 V + 10 -12 V 10 -11 V 10 -11 V 10 -11 V 10 -11 V 10 -10 V ! 10 -11 V ! 10 -10 V ! 10 -11 V ! 10 -10 V 10 -10 V ! 10 -11 V 10 -10 V ! 10 -9 V 10 -10 V 10 -10 V 10 -10 V 10 -9 V ! 10 -10 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V 10 -9 V 10 -9 V 10 -9 V 10 -9 V 10 -8 V + 10 -9 V 11 -8 V + 10 -9 V + 10 -8 V + 10 -8 V + 10 -8 V 10 -8 V 10 -8 V 10 -8 V 10 -8 V 10 -7 V ! 10 -8 V ! 10 -8 V ! 10 -7 V ! 10 -8 V ! 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V ! 11 -7 V ! 10 -6 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V 10 -6 V 10 -5 V 10 -5 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V 11 -5 V 10 -4 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -4 V 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V 10 -4 V ! 10 -3 V 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V 11 -4 V 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V 10 -2 V 11 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V + 10 -2 V 11 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V 11 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 1.000 UL ! LT1 ! 3087 1863 M ! 263 0 V ! 450 1188 M ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 11 -4 V + 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -3 V 10 -4 V 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V 10 -4 V ! 10 -3 V 10 -4 V ! 10 -4 V ! 10 -3 V 10 -4 V 11 -3 V + 10 -4 V + 10 -4 V + 10 -3 V + 10 -4 V 10 -3 V 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 11 -3 V + 10 -4 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -2 V + 10 -3 V + 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V + 10 -3 V 11 -3 V 10 -2 V 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V + 10 -3 V 11 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 11 -2 V + 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 11 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V 10 -1 V 10 -1 V 10 -2 V 11 -1 V 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V 11 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$mu=2$}}% ! \put(3037,1963){\rjust{$mu=1$}}% ! \put(1950,2226){\cjust{Exponential Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 3}}% ! \put(2450,200){\cjust{ 2}}% ! \put(1450,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-exppow.tex gsl-1.4/doc/rand-exppow.tex *** gsl-1.3/doc/rand-exppow.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-exppow.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-exppow.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:58 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-exppow.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,1003 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 535 M 63 0 V ! 3087 0 R -63 0 V ! 350 769 M 63 0 V ! 3087 0 R -63 0 V ! 350 1004 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 1473 M 63 0 V ! 3087 0 R -63 0 V ! 350 1707 M 63 0 V ! 3087 0 R -63 0 V ! 350 1941 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 665 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1295 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2555 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3185 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 1 V 10 0 V 11 0 V 10 0 V ! 11 1 V 11 0 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 2 V - 11 2 V 10 2 V - 11 3 V 10 3 V ! 11 4 V ! 10 5 V ! 11 5 V ! 11 7 V 10 7 V ! 11 9 V ! 10 10 V ! 11 11 V 10 13 V - 11 14 V 10 16 V ! 11 18 V 10 19 V ! 11 22 V 10 23 V ! 11 26 V 10 28 V ! 11 29 V ! 11 32 V 10 34 V ! 11 36 V 10 37 V ! 11 39 V 10 41 V - 11 41 V - 10 43 V - 11 44 V - 10 44 V - 11 45 V - 10 44 V - 11 45 V - 10 43 V - 11 43 V - 11 42 V 10 41 V ! 11 39 V 10 37 V ! 11 35 V 10 33 V ! 11 30 V ! 10 28 V ! 11 26 V 10 22 V ! 11 20 V ! 10 18 V ! 11 14 V ! 11 13 V 10 9 V ! 11 8 V 10 5 V ! 11 4 V ! 10 2 V ! 11 0 V 10 0 V ! 11 0 V ! 10 -2 V ! 11 -4 V 10 -5 V ! 11 -8 V 10 -9 V ! 11 -13 V ! 11 -14 V ! 10 -18 V ! 11 -20 V 10 -22 V ! 11 -26 V ! 10 -28 V ! 11 -30 V 10 -33 V ! 11 -35 V 10 -37 V ! 11 -39 V 10 -41 V - 11 -42 V - 11 -43 V - 10 -43 V - 11 -45 V - 10 -44 V - 11 -45 V - 10 -44 V - 11 -44 V - 10 -43 V - 11 -41 V 10 -41 V ! 11 -39 V 10 -37 V ! 11 -36 V 10 -34 V ! 11 -32 V ! 11 -29 V 10 -28 V ! 11 -26 V 10 -23 V ! 11 -22 V 10 -19 V - 11 -18 V 10 -16 V ! 11 -14 V 10 -13 V ! 11 -11 V ! 10 -10 V ! 11 -9 V 10 -7 V ! 11 -7 V ! 11 -5 V ! 10 -5 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 0 V ! 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 363 M ! 11 0 V 10 1 V ! 11 0 V 10 1 V ! 11 0 V 10 1 V ! 11 0 V 10 1 V ! 11 0 V 10 1 V ! 11 0 V 10 1 V ! 11 0 V 10 1 V - 11 0 V - 11 1 V 10 0 V 11 1 V 10 1 V ! 11 0 V 10 1 V ! 11 0 V 10 1 V - 11 1 V 10 0 V ! 11 1 V 10 0 V ! 11 1 V ! 11 1 V 10 0 V - 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 0 V 10 1 V - 11 1 V 10 0 V - 11 1 V 10 1 V ! 11 1 V ! 11 1 V 10 0 V - 11 1 V 10 1 V - 11 1 V 10 1 V ! 11 1 V 10 0 V - 11 1 V 10 1 V - 11 1 V 10 1 V 11 1 V ! 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V - 11 1 V 10 1 V ! 11 2 V 10 1 V 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 2 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V - 11 2 V 10 1 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 3 V 10 2 V - 11 2 V 10 3 V 11 2 V 10 3 V - 11 3 V 10 2 V - 11 3 V 10 3 V - 11 3 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 3 V ! 11 4 V 10 4 V ! 11 4 V 10 4 V - 11 4 V 10 5 V ! 11 4 V 10 5 V - 11 5 V - 11 5 V 10 6 V - 11 6 V 10 6 V - 11 6 V - 10 7 V 11 7 V 10 8 V - 11 8 V 10 9 V - 11 10 V 10 10 V ! 11 11 V ! 11 13 V ! 10 14 V ! 11 16 V ! 10 18 V ! 11 23 V ! 10 30 V ! 11 46 V 10 0 V ! 11 -46 V ! 10 -30 V ! 11 -23 V ! 10 -18 V ! 11 -16 V ! 10 -14 V ! 11 -13 V ! 11 -11 V 10 -10 V - 11 -10 V 10 -9 V - 11 -8 V 10 -8 V 11 -7 V - 10 -7 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V - 11 -5 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 0 V 10 -1 V - 11 0 V 10 -1 V ! 11 -1 V 10 0 V 11 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V - 11 0 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=2, b=0.5$}} ! \put(3087,2063){\rjust{$a=1, b=2.5$}} ! \put(1925,2276){\cjust{Exponential Power Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3185,200){\cjust{4}} ! \put(2870,200){\cjust{3}} ! \put(2555,200){\cjust{2}} ! \put(2240,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1610,200){\cjust{-1}} ! \put(1295,200){\cjust{-2}} ! \put(980,200){\cjust{-3}} ! \put(665,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,2176){\rjust{0.8}} ! \put(300,1941){\rjust{0.7}} ! \put(300,1707){\rjust{0.6}} ! \put(300,1473){\rjust{0.5}} ! \put(300,1238){\rjust{0.4}} ! \put(300,1004){\rjust{0.3}} ! \put(300,769){\rjust{0.2}} ! \put(300,535){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,1013 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 522 M 63 0 V ! 2937 0 R -63 0 V ! 450 744 M 63 0 V ! 2937 0 R -63 0 V ! 450 966 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 1410 M 63 0 V ! 2937 0 R -63 0 V ! 450 1632 M 63 0 V ! 2937 0 R -63 0 V ! 450 1854 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 750 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2550 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3150 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 1 V + 10 0 V + 10 0 V + 10 0 V + 10 1 V + 10 0 V + 10 1 V + 10 1 V + 10 1 V 10 1 V 10 1 V 10 2 V 10 2 V 10 3 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 6 V ! 10 6 V 10 7 V ! 10 8 V ! 10 9 V ! 10 11 V ! 11 12 V 10 13 V 10 16 V ! 10 16 V 10 19 V ! 10 20 V 10 23 V ! 10 24 V ! 10 26 V 10 28 V ! 10 30 V ! 10 32 V 10 34 V ! 10 35 V 10 37 V ! 10 39 V ! 10 39 V 10 41 V 10 41 V ! 10 42 V ! 10 42 V ! 10 42 V ! 10 42 V ! 10 42 V ! 10 41 V ! 10 39 V ! 10 39 V 10 37 V ! 10 35 V 10 33 V ! 11 31 V ! 10 29 V ! 10 26 V ! 10 24 V 10 22 V ! 10 19 V ! 10 16 V ! 10 14 V ! 10 12 V 10 9 V ! 10 7 V 10 5 V ! 10 4 V ! 10 1 V ! 10 1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -4 V 10 -5 V ! 10 -7 V 10 -9 V ! 10 -12 V ! 10 -14 V ! 10 -16 V ! 10 -19 V 10 -22 V ! 10 -24 V ! 10 -26 V ! 10 -29 V ! 11 -31 V 10 -33 V ! 10 -35 V 10 -37 V ! 10 -39 V ! 10 -39 V ! 10 -41 V ! 10 -42 V ! 10 -42 V ! 10 -42 V ! 10 -42 V ! 10 -42 V 10 -41 V 10 -41 V ! 10 -39 V ! 10 -39 V 10 -37 V ! 10 -35 V 10 -34 V ! 10 -32 V ! 10 -30 V 10 -28 V ! 10 -26 V ! 10 -24 V 10 -23 V ! 10 -20 V 10 -19 V 10 -16 V ! 10 -16 V 10 -13 V ! 11 -12 V ! 10 -11 V ! 10 -9 V ! 10 -8 V 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -4 V ! 10 -4 V ! 10 -3 V 10 -3 V 10 -2 V 10 -2 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 359 M 10 1 V ! 10 0 V 10 1 V ! 10 0 V 10 1 V ! 10 0 V 10 1 V ! 10 0 V 10 1 V ! 10 0 V 10 1 V ! 10 0 V 10 1 V 10 0 V 11 1 V + 10 0 V 10 1 V ! 10 0 V 10 1 V ! 10 0 V 10 1 V 10 0 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V 10 0 V 10 1 V 10 1 V ! 10 0 V ! 10 1 V ! 10 0 V 10 1 V 10 1 V 10 0 V 10 1 V ! 10 1 V 10 0 V 10 1 V 10 1 V ! 10 1 V 10 0 V 10 1 V 10 1 V 11 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 0 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 2 V 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 11 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V 10 2 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 1 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 3 V 11 2 V + 10 2 V + 10 2 V + 10 3 V + 10 2 V 10 3 V 10 2 V 10 3 V 10 3 V 10 3 V 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V 10 4 V ! 10 5 V 10 4 V 10 5 V ! 10 4 V ! 10 5 V ! 10 6 V 10 5 V 10 6 V 10 6 V 11 7 V + 10 6 V + 10 8 V + 10 8 V 10 8 V 10 9 V 10 10 V ! 10 10 V ! 10 12 V ! 10 13 V ! 10 16 V ! 10 17 V ! 10 22 V ! 10 28 V ! 10 44 V 10 0 V ! 10 -44 V ! 10 -28 V ! 10 -22 V ! 10 -17 V ! 10 -16 V ! 10 -13 V ! 10 -12 V ! 10 -10 V 10 -10 V 10 -9 V 10 -8 V + 10 -8 V + 10 -8 V + 10 -6 V 11 -7 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 11 -2 V + 10 -3 V + 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V + 10 -2 V 11 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 11 -1 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V 10 0 V 11 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=2, b=0.5$}}% ! \put(3037,1963){\rjust{$a=1, b=2.5$}}% ! \put(1950,2226){\cjust{Exponential Power Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3150,200){\cjust{ 4}}% ! \put(2850,200){\cjust{ 3}}% ! \put(2550,200){\cjust{ 2}}% ! \put(2250,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1650,200){\cjust{-1}}% ! \put(1350,200){\cjust{-2}}% ! \put(1050,200){\cjust{-3}}% ! \put(750,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,2076){\rjust{ 0.8}}% ! \put(400,1854){\rjust{ 0.7}}% ! \put(400,1632){\rjust{ 0.6}}% ! \put(400,1410){\rjust{ 0.5}}% ! \put(400,1188){\rjust{ 0.4}}% ! \put(400,966){\rjust{ 0.3}}% ! \put(400,744){\rjust{ 0.2}}% ! \put(400,522){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-fdist.tex gsl-1.4/doc/rand-fdist.tex *** gsl-1.3/doc/rand-fdist.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-fdist.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-fdist.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:56 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-fdist.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,921 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 485 2176 M ! 2 -13 V ! 10 -79 V ! 11 -71 V ! 11 -64 V ! 10 -59 V ! 11 -54 V ! 10 -50 V ! 11 -46 V ! 10 -43 V ! 11 -40 V 10 -38 V ! 11 -35 V 10 -33 V ! 11 -31 V ! 10 -30 V ! 11 -28 V ! 11 -26 V ! 10 -26 V ! 11 -24 V 10 -23 V ! 11 -22 V ! 10 -21 V ! 11 -20 V 10 -19 V ! 11 -19 V ! 10 -18 V ! 11 -17 V 10 -16 V - 11 -16 V 10 -15 V ! 11 -15 V ! 11 -15 V 10 -13 V - 11 -14 V - 10 -13 V - 11 -12 V 10 -12 V - 11 -12 V 10 -12 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -10 V - 11 -10 V - 11 -10 V 10 -9 V - 11 -9 V 10 -9 V - 11 -9 V 10 -9 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -8 V - 11 -7 V 10 -7 V ! 11 -8 V 10 -7 V - 11 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -5 V 10 -6 V 11 -5 V 10 -6 V ! 11 -5 V 10 -5 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -5 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -2 V 11 -1 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V 11 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V 11 0 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 300 M ! 11 488 V ! 10 175 V ! 11 119 V ! 10 88 V ! 11 67 V ! 10 53 V ! 11 42 V ! 10 34 V ! 11 26 V ! 10 21 V ! 11 17 V 10 12 V ! 11 9 V 10 6 V ! 11 4 V ! 11 2 V 10 0 V ! 11 -1 V 10 -2 V ! 11 -4 V 10 -5 V - 11 -5 V 10 -6 V ! 11 -7 V 10 -8 V - 11 -7 V 10 -9 V - 11 -8 V - 11 -9 V 10 -9 V - 11 -9 V 10 -9 V - 11 -10 V 10 -9 V - 11 -10 V - 10 -10 V - 11 -9 V - 10 -10 V - 11 -10 V 10 -9 V - 11 -10 V 10 -9 V - 11 -10 V - 11 -9 V 10 -10 V - 11 -9 V 10 -9 V - 11 -10 V 10 -9 V ! 11 -9 V 10 -9 V 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -9 V - 11 -8 V 10 -8 V - 11 -9 V 10 -8 V - 11 -8 V 10 -7 V - 11 -8 V 10 -8 V - 11 -7 V 10 -8 V - 11 -7 V 10 -7 V ! 11 -8 V 10 -7 V - 11 -7 V - 11 -6 V 10 -7 V - 11 -7 V 10 -7 V - 11 -6 V 10 -6 V ! 11 -7 V 10 -6 V 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V - 11 -6 V 10 -6 V ! 11 -5 V 10 -5 V - 11 -6 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V 11 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -1 V 10 -2 V 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V ! 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V 11 -1 V 10 -1 V 11 0 V 10 -1 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$\nu_1=1, \nu_2=2$}} ! \put(3087,2063){\rjust{$\nu_1=1, \nu_2=1$}} ! \put(1925,2276){\cjust{F-Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{2}} ! \put(1925,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1238){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,935 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 579 2076 M ! 1 -12 V ! 10 -75 V ! 11 -67 V ! 10 -61 V ! 10 -56 V ! 10 -51 V ! 10 -47 V ! 10 -44 V ! 10 -40 V 10 -38 V ! 10 -36 V 10 -33 V ! 10 -32 V ! 10 -29 V ! 10 -28 V ! 10 -27 V ! 10 -25 V ! 10 -24 V 10 -23 V ! 10 -22 V ! 10 -20 V ! 10 -20 V 10 -19 V ! 10 -19 V ! 10 -17 V ! 10 -17 V ! 10 -16 V 10 -16 V 10 -15 V ! 10 -14 V ! 10 -14 V ! 10 -14 V ! 11 -13 V 10 -13 V 10 -12 V 10 -12 V 10 -11 V ! 10 -11 V ! 10 -11 V ! 10 -11 V ! 10 -10 V ! 10 -10 V 10 -10 V 10 -9 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -8 V ! 10 -8 V ! 10 -8 V 10 -8 V 10 -8 V 10 -7 V ! 10 -8 V 10 -7 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V + 10 -7 V 11 -5 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -3 V 10 -4 V 10 -3 V 11 -4 V + 10 -3 V 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V 10 -3 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 11 -2 V + 10 -3 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -3 V + 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 11 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -1 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -1 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V 11 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 0 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V 10 0 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 0 V 10 -1 V 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V + 10 -1 V + 10 0 V 11 -1 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V 11 0 V + 10 -1 V + 10 0 V + 10 -1 V + 10 0 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 0 V + 10 -1 V + 10 0 V + 10 -1 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 300 M ! 10 462 V ! 10 166 V ! 10 112 V ! 10 83 V ! 10 64 V ! 10 51 V ! 10 39 V ! 10 32 V ! 10 25 V ! 10 20 V ! 10 15 V 10 12 V ! 10 9 V 10 6 V ! 11 3 V ! 10 2 V 10 0 V ! 10 -1 V 10 -2 V ! 10 -4 V ! 10 -4 V 10 -5 V 10 -6 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -8 V ! 10 -8 V ! 10 -8 V ! 10 -9 V 10 -8 V 10 -9 V 10 -9 V 10 -9 V 10 -9 V 10 -9 V 10 -9 V 10 -10 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V 10 -9 V 11 -9 V + 10 -9 V + 10 -9 V + 10 -8 V + 10 -9 V + 10 -8 V + 10 -9 V + 10 -8 V + 10 -9 V 10 -8 V 10 -8 V 10 -8 V 10 -8 V 10 -7 V 10 -8 V 10 -8 V 10 -7 V ! 10 -8 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -8 V ! 10 -6 V 10 -7 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V + 10 -7 V 11 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -5 V 10 -4 V 11 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 11 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -2 V 10 -3 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 11 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 11 -2 V + 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 11 -1 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V 11 0 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$ ! u_1=1, ! u_2=2$}}% ! \put(3037,1963){\rjust{$ ! u_1=1, ! u_2=1$}}% ! \put(1950,2226){\cjust{F-Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 2}}% ! \put(1950,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-flat.tex gsl-1.4/doc/rand-flat.tex *** gsl-1.3/doc/rand-flat.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-flat.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-flat.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:56 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-flat.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,952 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 0 938 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -938 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 1.000 UL - LT1 - 3137 1963 M - 263 0 V - 350 300 M - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 0 521 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -521 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=1.2,b=4.8$}} ! \put(3087,2063){\rjust{$a=0.5,b=2.5$}} ! \put(1925,2276){\cjust{Flat Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1238){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,962 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 888 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -888 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 1.000 UL + LT1 + 3087 1863 M + 263 0 V + 450 300 M + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 493 V ! 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V ! 0 -493 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=1.2,b=4.8$}}% ! \put(3037,1963){\rjust{$a=0.5,b=2.5$}}% ! \put(1950,2226){\cjust{Flat Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-gamma.tex gsl-1.4/doc/rand-gamma.tex *** gsl-1.3/doc/rand-gamma.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-gamma.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-gamma.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:56 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-gamma.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,1253 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 2176 M ! 11 -31 V ! 10 -31 V ! 11 -30 V 10 -29 V - 11 -29 V 10 -29 V - 11 -28 V 10 -28 V - 11 -27 V 10 -27 V ! 11 -26 V 10 -26 V - 11 -26 V 10 -25 V ! 11 -24 V ! 11 -24 V 10 -24 V ! 11 -24 V 10 -23 V ! 11 -22 V 10 -23 V ! 11 -21 V 10 -22 V - 11 -21 V 10 -21 V - 11 -20 V 10 -21 V ! 11 -19 V ! 11 -20 V 10 -19 V - 11 -19 V 10 -18 V ! 11 -19 V 10 -18 V - 11 -17 V 10 -17 V ! 11 -18 V 10 -16 V - 11 -17 V 10 -16 V - 11 -16 V 10 -16 V - 11 -15 V - 11 -15 V 10 -15 V ! 11 -15 V 10 -14 V 11 -14 V 10 -14 V ! 11 -14 V 10 -13 V - 11 -14 V 10 -13 V ! 11 -13 V 10 -12 V ! 11 -13 V ! 11 -12 V 10 -12 V - 11 -12 V 10 -11 V - 11 -12 V 10 -11 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -11 V - 11 -10 V 10 -10 V - 11 -10 V 10 -10 V - 11 -10 V - 11 -9 V 10 -10 V ! 11 -9 V 10 -9 V - 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -8 V 10 -8 V ! 11 -8 V ! 10 -7 V ! 11 -8 V ! 11 -7 V 10 -7 V - 11 -7 V 10 -8 V - 11 -6 V 10 -7 V ! 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -6 V - 11 -6 V - 10 -5 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V 11 -5 V 10 -4 V - 11 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V 11 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V ! 11 -1 V 10 0 V 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V 10 -1 V 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V 11 0 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 300 M ! 11 31 V ! 10 30 V ! 11 29 V ! 10 27 V ! 11 27 V 10 26 V ! 11 25 V ! 10 25 V ! 11 23 V 10 22 V - 11 22 V 10 21 V ! 11 20 V 10 20 V ! 11 18 V 11 18 V 10 17 V - 11 17 V 10 16 V ! 11 15 V 10 15 V ! 11 14 V 10 13 V ! 11 13 V 10 12 V - 11 12 V 10 11 V ! 11 11 V ! 11 10 V 10 10 V - 11 9 V 10 9 V ! 11 8 V 10 8 V - 11 8 V 10 7 V ! 11 6 V 10 6 V - 11 6 V 10 6 V - 11 5 V 10 5 V ! 11 4 V ! 11 4 V 10 4 V 11 4 V 10 3 V ! 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 1 V - 11 0 V 10 1 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -2 V ! 11 -1 V 10 -2 V 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V ! 11 -4 V 10 -4 V ! 11 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V 11 -4 V 10 -4 V - 11 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V - 11 -4 V 10 -4 V ! 11 -3 V 10 -4 V 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -1 V - 11 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V - 10 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 1.000 UL ! LT2 ! 3137 1863 M ! 263 0 V ! 350 300 M ! 11 0 V ! 10 1 V ! 11 1 V ! 10 2 V ! 11 2 V 10 3 V ! 11 2 V 10 4 V - 11 3 V 10 4 V 11 4 V 10 5 V ! 11 5 V 10 5 V - 11 5 V - 11 5 V 10 6 V - 11 6 V 10 6 V - 11 6 V 10 6 V - 11 7 V 10 6 V - 11 7 V 10 7 V ! 11 7 V 10 7 V ! 11 7 V ! 11 7 V 10 7 V - 11 7 V 10 7 V ! 11 8 V 10 7 V - 11 7 V 10 7 V - 11 7 V - 10 8 V - 11 7 V 10 7 V - 11 7 V 10 7 V ! 11 7 V ! 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 7 V - 11 6 V 10 7 V ! 11 6 V 10 7 V - 11 6 V 10 6 V - 11 6 V 11 7 V 10 6 V ! 11 5 V 10 6 V - 11 6 V 10 6 V ! 11 5 V 10 5 V - 11 6 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 5 V - 11 4 V - 11 5 V 10 4 V ! 11 5 V 10 4 V ! 11 4 V 10 4 V - 11 4 V 10 4 V 11 4 V 10 3 V ! 11 4 V 10 3 V - 11 3 V 10 3 V - 11 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 2 V 10 3 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 1 V 10 2 V - 11 1 V 10 1 V 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 0 V ! 11 1 V ! 11 0 V 10 0 V ! 11 1 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V ! 11 -1 V 10 -1 V ! 11 0 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V ! 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -3 V 10 -2 V 11 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -3 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V 11 -2 V 10 -2 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -2 V 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V stroke grestore end showpage ! } ! \put(3087,1863){\rjust{$a=3$}} ! \put(3087,1963){\rjust{$a=2$}} ! \put(3087,2063){\rjust{$a=1$}} ! \put(1925,2276){\cjust{Gamma Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1}} ! \put(300,1238){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,1263 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 2076 M ! 10 -29 V 10 -29 V 10 -29 V 10 -28 V 10 -27 V ! 10 -28 V ! 10 -26 V ! 10 -26 V 10 -26 V 10 -25 V ! 10 -25 V ! 10 -25 V 10 -24 V ! 10 -24 V ! 11 -23 V 10 -23 V ! 10 -22 V 10 -23 V ! 10 -21 V 10 -22 V 10 -21 V 10 -21 V ! 10 -20 V ! 10 -20 V ! 10 -20 V ! 10 -19 V ! 10 -19 V 10 -19 V 10 -18 V ! 10 -19 V ! 10 -17 V 10 -18 V 10 -17 V ! 10 -17 V ! 10 -17 V ! 10 -16 V 10 -16 V 10 -16 V 10 -16 V 10 -15 V ! 10 -15 V ! 10 -15 V ! 10 -15 V 10 -14 V 11 -14 V 10 -14 V ! 10 -14 V ! 10 -13 V ! 10 -13 V 10 -13 V 10 -13 V ! 10 -13 V ! 10 -12 V ! 10 -12 V ! 10 -12 V 10 -12 V ! 10 -11 V 10 -12 V 10 -11 V 10 -11 V 10 -11 V ! 10 -10 V 10 -11 V 10 -10 V 10 -10 V 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -10 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 11 -8 V 10 -9 V 10 -8 V 10 -8 V 10 -8 V 10 -8 V ! 10 -8 V 10 -7 V 10 -8 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -6 V 10 -5 V 11 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -4 V + 10 -5 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -5 V + 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 11 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 11 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V ! 10 -1 V 10 0 V + 10 -1 V 11 -1 V + 10 0 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V 10 -1 V 11 0 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V ! 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V 11 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 300 M ! 10 29 V ! 10 28 V ! 10 28 V 10 26 V ! 10 26 V ! 10 24 V ! 10 24 V ! 10 23 V 10 22 V 10 21 V ! 10 21 V 10 20 V ! 10 19 V ! 10 18 V 11 18 V 10 17 V 10 16 V ! 10 16 V 10 15 V ! 10 14 V ! 10 14 V 10 13 V ! 10 13 V ! 10 12 V 10 12 V 10 11 V ! 10 11 V 10 10 V 10 9 V ! 10 9 V ! 10 9 V ! 10 9 V ! 10 7 V 10 8 V 10 7 V ! 10 7 V 10 6 V 10 6 V 10 5 V ! 10 6 V ! 10 4 V ! 10 5 V ! 10 4 V 10 4 V 11 4 V 10 3 V ! 10 3 V ! 10 3 V 10 2 V ! 10 3 V 10 2 V 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -2 V ! 10 -1 V 10 -2 V 11 -2 V 10 -3 V 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -4 V ! 10 -3 V ! 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V + 10 -3 V 11 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 11 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -4 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 11 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 11 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V 11 -1 V + 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 11 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 1.000 UL ! LT2 ! 3087 1763 M ! 263 0 V ! 450 300 M ! 10 0 V ! 10 1 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 3 V 10 3 V ! 10 3 V ! 10 4 V 10 4 V 10 4 V + 10 5 V + 10 5 V 11 4 V + 10 6 V 10 5 V ! 10 6 V 10 5 V 10 6 V 10 6 V 10 6 V 10 6 V 10 7 V ! 10 6 V 10 7 V ! 10 6 V 10 7 V 10 7 V ! 10 6 V 10 7 V 10 7 V 10 7 V 10 7 V ! 10 6 V ! 10 7 V 10 7 V 10 7 V 10 7 V 10 7 V ! 10 6 V ! 10 7 V 10 7 V 10 6 V 11 7 V 10 6 V ! 10 7 V ! 10 6 V ! 10 7 V ! 10 6 V 10 6 V 10 6 V ! 10 7 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 5 V ! 10 6 V 10 5 V 10 5 V 10 5 V 10 5 V 10 4 V ! 10 5 V 10 4 V ! 10 5 V 10 4 V 10 4 V + 10 5 V 11 4 V 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 3 V ! 10 4 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 2 V ! 10 3 V ! 10 3 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V ! 10 1 V 10 2 V 10 2 V 10 1 V ! 10 2 V 10 1 V 10 2 V 10 1 V 11 1 V 10 1 V 10 1 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 -1 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V + 10 -1 V + 10 0 V 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 11 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V 11 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V 10 -2 V 11 -1 V 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1763){\rjust{$a=3$}}% ! \put(3037,1863){\rjust{$a=2$}}% ! \put(3037,1963){\rjust{$a=1$}}% ! \put(1950,2226){\cjust{Gamma Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1}}% ! \put(400,1188){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-gaussian-tail.tex gsl-1.4/doc/rand-gaussian-tail.tex *** gsl-1.3/doc/rand-gaussian-tail.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-gaussian-tail.tex Mon Jul 28 14:49:33 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-gaussian-tail.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:48 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-gaussian-tail.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:33 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,643 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V ! 11 0 V 10 0 V 11 0 V ! 10 1206 V ! 11 -30 V ! 10 -30 V ! 11 -29 V ! 10 -29 V ! 11 -29 V 10 -27 V - 11 -28 V 10 -27 V ! 11 -26 V ! 11 -27 V 10 -25 V - 11 -25 V 10 -25 V - 11 -24 V 10 -24 V ! 11 -23 V 10 -23 V ! 11 -22 V 10 -22 V - 11 -22 V 10 -21 V ! 11 -20 V 10 -20 V - 11 -20 V - 11 -19 V 10 -19 V - 11 -18 V 10 -18 V ! 11 -17 V 10 -17 V - 11 -17 V 10 -16 V ! 11 -16 V 10 -15 V - 11 -15 V 10 -14 V ! 11 -15 V 10 -13 V - 11 -14 V - 11 -13 V 10 -12 V - 11 -13 V 10 -12 V ! 11 -11 V 10 -11 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -10 V - 11 -9 V 10 -10 V ! 11 -9 V ! 11 -9 V 10 -8 V - 11 -8 V 10 -8 V - 11 -8 V 10 -7 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -5 V ! 11 -6 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 0 V - 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{$\sigma=1,a=1.5$}} ! \put(1925,2276){\cjust{Gaussian Tail Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{0.2}} ! \put(300,1238){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,653 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1141 V ! 10 -28 V ! 10 -28 V ! 10 -28 V 10 -27 V 10 -27 V ! 10 -26 V ! 10 -26 V ! 10 -26 V 10 -25 V 10 -25 V 10 -24 V ! 10 -24 V 10 -23 V ! 10 -23 V ! 11 -23 V 10 -22 V 10 -21 V ! 10 -21 V ! 10 -21 V ! 10 -21 V ! 10 -19 V 10 -20 V 10 -19 V 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -17 V ! 10 -17 V 10 -17 V 10 -16 V ! 10 -16 V ! 10 -15 V 10 -15 V 10 -14 V ! 10 -14 V ! 10 -14 V ! 10 -14 V 10 -13 V 10 -12 V 10 -12 V ! 10 -12 V ! 10 -12 V 10 -11 V 10 -11 V ! 11 -11 V 10 -10 V 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V 10 -8 V 10 -8 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V ! 11 -3 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V 10 -1 V 11 -1 V + 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 11 0 V 10 0 V 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{$sigma=1,a=1.5$}}% ! \put(1950,2226){\cjust{Gaussian Tail Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.2}}% ! \put(400,1188){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-gaussian.tex gsl-1.4/doc/rand-gaussian.tex *** gsl-1.3/doc/rand-gaussian.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-gaussian.tex Mon Jul 28 14:49:33 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-gaussian.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:48 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-gaussian.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:33 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,988 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 675 M 63 0 V ! 3087 0 R -63 0 V ! 350 1050 M 63 0 V ! 3087 0 R -63 0 V ! 350 1426 M 63 0 V ! 3087 0 R -63 0 V ! 350 1801 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 665 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1295 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2555 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3185 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V ! 11 0 V 10 1 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 1 V 10 0 V - 11 0 V 10 0 V - 11 1 V - 11 0 V 10 0 V ! 11 1 V 10 0 V - 11 1 V 10 0 V - 11 1 V 10 1 V 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 3 V 10 2 V - 11 3 V 10 3 V ! 11 4 V 10 4 V - 11 4 V - 11 4 V - 10 5 V - 11 5 V 10 5 V 11 6 V 10 6 V - 11 7 V 10 7 V ! 11 7 V ! 10 9 V ! 11 8 V 10 9 V ! 11 10 V 10 10 V ! 11 11 V ! 11 11 V 10 13 V - 11 12 V 10 14 V - 11 14 V 10 15 V ! 11 15 V 10 16 V ! 11 17 V 10 18 V ! 11 18 V 10 20 V ! 11 20 V ! 11 20 V 10 22 V - 11 22 V - 10 23 V 11 23 V 10 25 V - 11 24 V 10 26 V - 11 26 V 10 27 V ! 11 27 V 10 28 V - 11 29 V 10 29 V - 11 29 V - 11 29 V - 10 30 V - 11 30 V - 10 30 V - 11 31 V - 10 30 V - 11 30 V - 10 31 V - 11 30 V 10 29 V ! 11 30 V 10 29 V - 11 29 V 10 28 V ! 11 27 V ! 11 27 V 10 26 V ! 11 25 V 10 24 V ! 11 24 V 10 22 V 11 21 V 10 20 V ! 11 18 V ! 10 17 V ! 11 16 V 10 15 V ! 11 12 V ! 11 12 V ! 10 10 V ! 11 8 V ! 10 7 V ! 11 5 V 10 3 V ! 11 2 V 10 0 V ! 11 -2 V 10 -3 V ! 11 -5 V ! 10 -7 V ! 11 -8 V ! 10 -10 V ! 11 -12 V ! 11 -12 V 10 -15 V ! 11 -16 V ! 10 -17 V ! 11 -18 V 10 -20 V 11 -21 V 10 -22 V ! 11 -24 V 10 -24 V - 11 -25 V 10 -26 V ! 11 -27 V ! 11 -27 V 10 -28 V - 11 -29 V 10 -29 V - 11 -30 V 10 -29 V ! 11 -30 V ! 10 -31 V ! 11 -30 V ! 10 -30 V ! 11 -31 V ! 10 -30 V ! 11 -30 V ! 10 -30 V ! 11 -29 V ! 11 -29 V 10 -29 V - 11 -29 V 10 -28 V ! 11 -27 V 10 -27 V - 11 -26 V 10 -26 V - 11 -24 V 10 -25 V 11 -23 V - 10 -23 V - 11 -22 V 10 -22 V ! 11 -20 V ! 11 -20 V 10 -20 V ! 11 -18 V 10 -18 V ! 11 -17 V 10 -16 V - 11 -15 V 10 -15 V ! 11 -14 V 10 -14 V - 11 -12 V 10 -13 V ! 11 -11 V ! 11 -11 V 10 -10 V ! 11 -10 V ! 10 -9 V ! 11 -8 V 10 -9 V ! 11 -7 V 10 -7 V - 11 -7 V 10 -6 V ! 11 -6 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 10 0 V 11 0 V ! 11 -1 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 -1 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 333 M ! 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 2 V 10 2 V - 11 1 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 3 V 11 2 V 10 2 V - 11 3 V 10 2 V - 11 3 V 10 2 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V - 11 3 V 10 4 V ! 11 3 V 10 4 V - 11 3 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V - 10 5 V - 11 4 V 11 5 V 10 5 V - 11 4 V 10 5 V - 11 5 V 10 5 V ! 11 5 V 10 6 V - 11 5 V 10 6 V - 11 5 V 10 6 V - 11 5 V - 11 6 V 10 6 V - 11 6 V 10 6 V - 11 6 V 10 7 V - 11 6 V 10 6 V - 11 7 V 10 6 V - 11 7 V 10 7 V ! 11 6 V 10 7 V - 11 7 V - 11 7 V 10 7 V 11 7 V 10 7 V - 11 8 V 10 7 V - 11 7 V - 10 8 V - 11 7 V 10 7 V - 11 8 V 10 7 V - 11 8 V 10 7 V - 11 8 V - 11 7 V - 10 8 V - 11 8 V 10 7 V - 11 8 V 10 7 V ! 11 8 V ! 10 8 V ! 11 7 V ! 10 8 V ! 11 7 V 10 8 V ! 11 7 V ! 11 7 V 10 8 V - 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 7 V ! 11 7 V 10 6 V 11 7 V 10 6 V - 11 7 V - 11 6 V 10 6 V - 11 6 V 10 5 V - 11 6 V 10 6 V - 11 5 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 5 V - 11 4 V 10 5 V ! 11 4 V ! 11 4 V 10 3 V ! 11 4 V 10 3 V - 11 4 V 10 3 V 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 11 1 V 10 1 V ! 11 1 V 10 1 V - 11 1 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V 11 -3 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -6 V - 11 -6 V 10 -5 V - 11 -6 V 10 -6 V - 11 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V ! 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V 11 -7 V 10 -7 V - 11 -7 V - 10 -8 V - 11 -7 V - 11 -7 V - 10 -8 V - 11 -7 V - 10 -8 V - 11 -7 V - 10 -8 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -8 V - 11 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V ! 11 -7 V 10 -8 V - 11 -7 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V - 11 -7 V 10 -7 V ! 11 -6 V 10 -7 V 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V - 11 -6 V 10 -7 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V ! 11 -6 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -5 V - 11 -4 V 10 -5 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$\sigma=2$}} ! \put(3087,2063){\rjust{$\sigma=1$}} ! \put(1925,2276){\cjust{Gaussian Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3185,200){\cjust{4}} ! \put(2870,200){\cjust{3}} ! \put(2555,200){\cjust{2}} ! \put(2240,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1610,200){\cjust{-1}} ! \put(1295,200){\cjust{-2}} ! \put(980,200){\cjust{-3}} ! \put(665,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,2176){\rjust{0.5}} ! \put(300,1801){\rjust{0.4}} ! \put(300,1426){\rjust{0.3}} ! \put(300,1050){\rjust{0.2}} ! \put(300,675){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,998 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 655 M 63 0 V ! 2937 0 R -63 0 V ! 450 1010 M 63 0 V ! 2937 0 R -63 0 V ! 450 1366 M 63 0 V ! 2937 0 R -63 0 V ! 450 1721 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 750 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2550 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3150 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 1 V 11 0 V 10 1 V ! 10 0 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V 10 2 V 10 2 V 10 2 V 10 3 V ! 10 2 V ! 10 4 V ! 10 3 V ! 10 3 V ! 10 4 V 10 4 V 10 5 V + 10 4 V 11 6 V + 10 5 V + 10 6 V 10 6 V 10 7 V ! 10 7 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 10 V 10 9 V ! 10 11 V 10 10 V ! 10 12 V ! 10 12 V ! 10 13 V 10 13 V 10 14 V 10 15 V ! 10 15 V 10 16 V ! 10 17 V ! 10 17 V 10 18 V ! 10 19 V ! 10 20 V 10 20 V ! 10 21 V ! 10 22 V 10 22 V 11 23 V + 10 24 V + 10 24 V + 10 25 V 10 25 V 10 26 V 10 27 V ! 10 26 V ! 10 28 V ! 10 27 V ! 10 28 V 10 28 V 10 29 V 10 29 V ! 10 28 V ! 10 29 V ! 10 29 V ! 10 28 V 10 29 V 10 28 V ! 10 28 V ! 10 28 V ! 10 27 V ! 10 26 V 10 26 V ! 10 26 V ! 10 24 V 10 24 V ! 10 23 V 10 22 V 11 21 V 10 20 V ! 10 18 V ! 10 18 V ! 10 16 V 10 15 V ! 10 14 V ! 10 12 V ! 10 11 V ! 10 9 V ! 10 8 V ! 10 6 V ! 10 5 V 10 3 V ! 10 2 V 10 0 V ! 10 -2 V 10 -3 V ! 10 -5 V ! 10 -6 V ! 10 -8 V ! 10 -9 V ! 10 -11 V ! 10 -12 V ! 10 -14 V 10 -15 V ! 10 -16 V ! 10 -18 V ! 10 -18 V 10 -20 V 11 -21 V 10 -22 V ! 10 -23 V ! 10 -24 V 10 -24 V 10 -26 V ! 10 -26 V ! 10 -26 V ! 10 -27 V ! 10 -28 V ! 10 -28 V ! 10 -28 V ! 10 -29 V 10 -28 V 10 -29 V 10 -29 V ! 10 -28 V ! 10 -29 V 10 -29 V 10 -28 V ! 10 -28 V ! 10 -27 V ! 10 -28 V ! 10 -26 V 10 -27 V 10 -26 V 10 -25 V + 10 -25 V + 10 -24 V + 10 -24 V 11 -23 V 10 -22 V ! 10 -22 V ! 10 -21 V 10 -20 V ! 10 -20 V ! 10 -19 V 10 -18 V ! 10 -17 V ! 10 -17 V 10 -16 V 10 -15 V ! 10 -15 V 10 -14 V 10 -13 V ! 10 -13 V ! 10 -12 V ! 10 -12 V 10 -10 V ! 10 -11 V 10 -9 V ! 10 -10 V ! 10 -8 V ! 10 -8 V ! 10 -8 V ! 10 -7 V 10 -7 V 10 -6 V ! 10 -6 V 10 -5 V ! 11 -6 V ! 10 -4 V 10 -5 V 10 -4 V ! 10 -4 V 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V 10 0 V + 10 -1 V 11 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 331 M ! 10 1 V 10 2 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V 10 2 V 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V 10 2 V 11 2 V + 10 3 V 10 2 V 10 2 V 10 2 V 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V 10 3 V 10 3 V 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 11 5 V + 10 4 V 10 5 V 10 5 V 10 5 V ! 10 4 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V 10 6 V 10 6 V 10 6 V 10 6 V 10 6 V 10 7 V 10 6 V 10 6 V 10 7 V ! 10 6 V 10 7 V 10 7 V + 10 6 V 11 7 V 10 7 V 10 7 V 10 7 V 10 7 V 10 7 V 10 7 V 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V 10 8 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V 10 8 V 10 7 V 10 7 V 10 7 V 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V ! 10 7 V 10 6 V 11 7 V + 10 7 V + 10 6 V + 10 7 V + 10 6 V + 10 7 V + 10 6 V + 10 6 V + 10 6 V + 10 6 V 10 6 V 10 6 V 10 5 V 10 6 V 10 5 V 10 5 V 10 5 V 10 5 V ! 10 5 V ! 10 5 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V 10 3 V ! 10 4 V 10 3 V 10 3 V 11 3 V + 10 3 V 10 2 V ! 10 3 V 10 2 V 10 2 V 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -3 V 10 -2 V + 10 -3 V 11 -3 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -6 V 10 -5 V 10 -6 V 10 -6 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V 10 -7 V ! 10 -6 V 10 -7 V ! 10 -6 V 10 -7 V 11 -7 V + 10 -6 V + 10 -7 V + 10 -7 V + 10 -7 V + 10 -7 V + 10 -7 V + 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -8 V 10 -7 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V 10 -8 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -7 V 11 -7 V 10 -6 V ! 10 -7 V ! 10 -7 V 10 -6 V 10 -7 V 10 -6 V 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V 10 -5 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -4 V ! 11 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V + 10 -3 V 11 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$sigma=2$}}% ! \put(3037,1963){\rjust{$sigma=1$}}% ! \put(1950,2226){\cjust{Gaussian Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3150,200){\cjust{ 4}}% ! \put(2850,200){\cjust{ 3}}% ! \put(2550,200){\cjust{ 2}}% ! \put(2250,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1650,200){\cjust{-1}}% ! \put(1350,200){\cjust{-2}}% ! \put(1050,200){\cjust{-3}}% ! \put(750,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,2076){\rjust{ 0.5}}% ! \put(400,1721){\rjust{ 0.4}}% ! \put(400,1366){\rjust{ 0.3}}% ! \put(400,1010){\rjust{ 0.2}}% ! \put(400,655){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-geometric.tex gsl-1.4/doc/rand-geometric.tex *** gsl-1.3/doc/rand-geometric.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-geometric.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-geometric.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-geometric.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,674 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 568 M ! 3150 0 R ! 350 836 M ! 3150 0 R ! 350 1104 M ! 3150 0 R ! 350 1372 M ! 3150 0 R ! 350 1640 M ! 3150 0 R ! 350 1908 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 613 300 M ! 0 1876 R ! 875 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1138 300 M ! 0 1876 R ! 1400 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1663 300 M ! 0 1876 R ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2188 300 M ! 0 1876 R 2450 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2713 300 M ! 0 1876 R ! 2975 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3238 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 1340 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 0 -670 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -335 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -167 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -84 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V ! 0 -42 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{$p=0.5$}} ! \put(1925,2276){\cjust{Geometric Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3238,200){\cjust{5}} ! \put(2713,200){\cjust{4}} ! \put(2188,200){\cjust{3}} ! \put(1663,200){\cjust{2}} ! \put(1138,200){\cjust{1}} ! \put(613,200){\cjust{0}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,684 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 554 M ! 3000 0 R ! 450 807 M ! 3000 0 R ! 450 1061 M ! 3000 0 R ! 450 1315 M ! 3000 0 R ! 450 1569 M ! 3000 0 R ! 450 1822 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 700 300 M ! 0 1776 R ! 950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1200 300 M ! 0 1776 R ! 1450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1700 300 M ! 0 1776 R ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2200 300 M ! 0 1776 R 2450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2700 300 M ! 0 1776 R ! 2950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3200 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 1269 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -635 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 -317 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -158 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -80 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 -39 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{$p=0.5$}}% ! \put(1950,2226){\cjust{Geometric Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3200,200){\cjust{ 5}}% ! \put(2700,200){\cjust{ 4}}% ! \put(2200,200){\cjust{ 3}}% ! \put(1700,200){\cjust{ 2}}% ! \put(1200,200){\cjust{ 1}}% ! \put(700,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-gumbel1.tex gsl-1.4/doc/rand-gumbel1.tex *** gsl-1.3/doc/rand-gumbel1.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-gumbel1.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-gumbel1.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-gumbel1.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,683 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 568 M 63 0 V ! 3087 0 R -63 0 V ! 350 836 M 63 0 V ! 3087 0 R -63 0 V ! 350 1104 M 63 0 V ! 3087 0 R -63 0 V ! 350 1372 M 63 0 V ! 3087 0 R -63 0 V ! 350 1640 M 63 0 V ! 3087 0 R -63 0 V ! 350 1908 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 744 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1138 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1531 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2319 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2713 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3106 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 312 M ! 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V - 11 2 V 10 1 V - 11 2 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 3 V 11 2 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 3 V 10 3 V ! 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 4 V ! 11 5 V ! 11 4 V 10 5 V - 11 5 V 10 6 V - 11 5 V 10 6 V ! 11 5 V 10 6 V ! 11 7 V 10 6 V - 11 6 V 10 7 V - 11 7 V 10 7 V 11 7 V - 11 8 V 10 8 V ! 11 7 V 10 8 V - 11 8 V 10 9 V ! 11 8 V 10 9 V - 11 9 V 10 9 V ! 11 9 V 10 9 V - 11 10 V - 11 9 V 10 10 V ! 11 10 V 10 10 V - 11 10 V 10 10 V - 11 10 V - 10 11 V - 11 10 V - 10 11 V - 11 10 V - 10 11 V - 11 11 V - 10 11 V - 11 10 V - 11 11 V - 10 11 V - 11 11 V 10 11 V ! 11 12 V 10 11 V 11 11 V 10 11 V ! 11 11 V 10 11 V ! 11 11 V 10 11 V ! 11 11 V 10 11 V ! 11 11 V ! 11 10 V 10 11 V - 11 11 V 10 10 V - 11 11 V 10 10 V - 11 11 V 10 10 V - 11 10 V 10 10 V ! 11 10 V 10 9 V - 11 10 V - 11 9 V 10 10 V - 11 9 V 10 9 V - 11 9 V 10 9 V - 11 8 V 10 8 V ! 11 9 V 10 8 V 11 8 V 10 7 V - 11 8 V 10 7 V ! 11 7 V ! 11 7 V 10 7 V - 11 6 V 10 7 V - 11 6 V 10 6 V ! 11 6 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 5 V ! 11 5 V 10 4 V - 11 4 V - 11 4 V 10 4 V - 11 3 V 10 3 V ! 11 3 V 10 3 V 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 2 V 10 1 V ! 11 2 V ! 11 1 V 10 1 V - 11 1 V 10 1 V - 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 0 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V - 11 -4 V 10 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V ! 11 -4 V 10 -5 V - 11 -4 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V 11 -5 V - 10 -6 V - 11 -5 V - 11 -6 V 10 -5 V ! 11 -5 V 10 -6 V - 11 -6 V 10 -5 V - 11 -6 V 10 -5 V ! 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V ! 11 -6 V ! 11 -5 V 10 -6 V ! 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -6 V 10 -5 V - 11 -6 V 10 -6 V - 11 -6 V 10 -5 V - 11 -6 V - 11 -6 V 10 -6 V 11 -5 V 10 -6 V - 11 -6 V 10 -5 V - 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -6 V 10 -5 V - 11 -6 V 10 -5 V - 11 -6 V - 11 -5 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -5 V - 11 -6 V 10 -5 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -4 V 10 -5 V - 11 -5 V - 11 -4 V 10 -5 V 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -3 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{Type 1, $a=1,b=1$}} ! \put(1925,2276){\cjust{Type 1 Gumbel Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{2}} ! \put(3106,200){\cjust{1.5}} ! \put(2713,200){\cjust{1}} ! \put(2319,200){\cjust{0.5}} ! \put(1925,200){\cjust{0}} ! \put(1531,200){\cjust{-0.5}} ! \put(1138,200){\cjust{-1}} ! \put(744,200){\cjust{-1.5}} ! \put(350,200){\cjust{-2}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,693 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 554 M 63 0 V ! 2937 0 R -63 0 V ! 450 807 M 63 0 V ! 2937 0 R -63 0 V ! 450 1061 M 63 0 V ! 2937 0 R -63 0 V ! 450 1315 M 63 0 V ! 2937 0 R -63 0 V ! 450 1569 M 63 0 V ! 2937 0 R -63 0 V ! 450 1822 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 825 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1200 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1575 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2325 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2700 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3075 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 312 M ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 2 V 10 1 V 10 2 V 10 2 V ! 10 2 V ! 10 1 V 10 3 V + 10 2 V + 10 2 V 11 2 V 10 3 V ! 10 2 V 10 3 V 10 3 V ! 10 3 V ! 10 3 V ! 10 4 V ! 10 3 V 10 4 V 10 4 V 10 4 V ! 10 4 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 5 V ! 10 5 V ! 10 5 V 10 5 V 10 6 V 10 6 V ! 10 5 V 10 6 V ! 10 7 V ! 10 6 V ! 10 7 V 10 6 V 10 7 V 10 7 V 11 7 V 10 8 V ! 10 7 V ! 10 8 V ! 10 8 V ! 10 8 V 10 8 V 10 9 V ! 10 8 V 10 9 V 10 9 V ! 10 8 V 10 9 V 10 10 V ! 10 9 V ! 10 9 V ! 10 10 V ! 10 10 V ! 10 9 V ! 10 10 V ! 10 10 V ! 10 10 V ! 10 10 V 10 10 V 10 10 V 10 11 V ! 10 10 V ! 10 10 V 10 11 V + 10 10 V 11 11 V + 10 10 V 10 11 V ! 10 10 V 10 11 V ! 10 10 V 10 11 V ! 10 10 V ! 10 10 V 10 11 V ! 10 10 V ! 10 10 V 10 11 V 10 10 V 10 10 V 10 10 V 10 10 V ! 10 10 V ! 10 9 V ! 10 10 V ! 10 10 V ! 10 9 V 10 9 V 10 10 V 10 9 V 10 9 V 10 8 V ! 10 9 V ! 10 9 V 10 8 V 11 8 V + 10 8 V + 10 8 V + 10 8 V + 10 8 V 10 7 V 10 7 V ! 10 8 V ! 10 6 V 10 7 V 10 7 V 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 5 V 10 5 V 10 5 V 10 5 V ! 10 5 V ! 10 4 V ! 10 5 V 10 4 V 10 4 V 10 3 V ! 10 4 V ! 10 3 V ! 10 3 V 10 3 V 11 3 V 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V 10 2 V 10 1 V ! 10 2 V 10 1 V 10 1 V 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -4 V 10 -3 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V 10 -5 V 10 -4 V ! 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 11 -5 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -6 V 10 -5 V 10 -5 V ! 10 -5 V 10 -6 V ! 10 -5 V ! 10 -5 V 10 -6 V ! 10 -5 V 10 -6 V ! 10 -5 V ! 10 -5 V 10 -6 V ! 10 -5 V 10 -6 V ! 10 -5 V 10 -6 V 10 -5 V 10 -6 V 10 -5 V 10 -6 V 11 -5 V + 10 -5 V 10 -6 V 10 -5 V 10 -6 V ! 10 -5 V 10 -6 V 10 -5 V 10 -5 V 10 -6 V ! 10 -5 V 10 -6 V 10 -5 V 10 -5 V 10 -6 V 10 -5 V 10 -5 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 11 -5 V + 10 -5 V + 10 -5 V + 10 -5 V + 10 -5 V 10 -4 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V 10 -4 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -4 V 11 -4 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -3 V + 10 -4 V + 10 -4 V 10 -3 V 10 -4 V 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{Type 1, $a=1,b=1$}}% ! \put(1950,2226){\cjust{Type 1 Gumbel Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 2}}% ! \put(3075,200){\cjust{ 1.5}}% ! \put(2700,200){\cjust{ 1}}% ! \put(2325,200){\cjust{ 0.5}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1575,200){\cjust{-0.5}}% ! \put(1200,200){\cjust{-1}}% ! \put(825,200){\cjust{-1.5}}% ! \put(450,200){\cjust{-2}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-gumbel2.tex gsl-1.4/doc/rand-gumbel2.tex *** gsl-1.3/doc/rand-gumbel2.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-gumbel2.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-gumbel2.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-gumbel2.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,663 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 568 M 63 0 V ! 3087 0 R -63 0 V ! 350 836 M 63 0 V ! 3087 0 R -63 0 V ! 350 1104 M 63 0 V ! 3087 0 R -63 0 V ! 350 1372 M 63 0 V ! 3087 0 R -63 0 V ! 350 1640 M 63 0 V ! 3087 0 R -63 0 V ! 350 1908 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1138 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2713 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 1 V 10 1 V ! 11 2 V ! 10 3 V 11 5 V ! 11 8 V 10 11 V ! 11 15 V 10 17 V ! 11 22 V ! 10 25 V ! 11 28 V ! 10 32 V ! 11 35 V ! 10 37 V ! 11 40 V 10 42 V - 11 43 V - 11 44 V - 10 45 V - 11 46 V - 10 45 V - 11 46 V - 10 45 V - 11 45 V - 10 44 V - 11 43 V 10 41 V ! 11 41 V ! 10 40 V ! 11 38 V 10 36 V ! 11 35 V ! 11 34 V 10 32 V ! 11 31 V 10 29 V ! 11 27 V 10 26 V ! 11 25 V ! 10 23 V ! 11 22 V 10 20 V ! 11 19 V 10 18 V ! 11 16 V ! 11 15 V 10 14 V ! 11 13 V ! 10 12 V ! 11 11 V 10 10 V ! 11 9 V 10 7 V - 11 7 V 10 7 V ! 11 5 V ! 10 4 V ! 11 4 V 10 3 V ! 11 3 V ! 11 2 V 10 1 V - 11 1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -4 V 10 -4 V - 11 -4 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -5 V - 11 -6 V 10 -6 V ! 11 -6 V 10 -7 V - 11 -6 V 10 -6 V - 11 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V - 10 -8 V - 11 -7 V 10 -8 V - 11 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V - 11 -8 V 10 -7 V - 11 -7 V 10 -8 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V - 11 -6 V 10 -7 V 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V ! 11 -6 V ! 11 -7 V 10 -6 V - 11 -6 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V ! 11 -6 V 11 -5 V 10 -6 V - 11 -6 V 10 -5 V ! 11 -6 V 10 -5 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V - 11 -6 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -5 V - 11 -4 V 10 -5 V 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -4 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V 11 -2 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{Type 2, $a=1,b=1$}} ! \put(1925,2276){\cjust{Type 2 Gumbel Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{2}} ! \put(2713,200){\cjust{1.5}} ! \put(1925,200){\cjust{1}} ! \put(1138,200){\cjust{0.5}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,673 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 554 M 63 0 V ! 2937 0 R -63 0 V ! 450 807 M 63 0 V ! 2937 0 R -63 0 V ! 450 1061 M 63 0 V ! 2937 0 R -63 0 V ! 450 1315 M 63 0 V ! 2937 0 R -63 0 V ! 450 1569 M 63 0 V ! 2937 0 R -63 0 V ! 450 1822 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1200 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2700 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 1 V ! 10 1 V ! 10 1 V ! 10 4 V 11 5 V ! 10 7 V 10 11 V ! 10 13 V 10 17 V ! 10 20 V ! 10 24 V ! 10 27 V ! 10 30 V ! 10 33 V ! 10 35 V ! 10 38 V ! 10 39 V ! 10 41 V ! 10 42 V ! 10 43 V ! 10 43 V ! 10 43 V ! 10 43 V ! 10 43 V ! 10 42 V 10 42 V 10 41 V ! 10 39 V ! 10 39 V ! 10 37 V 10 36 V ! 10 35 V ! 10 33 V 10 32 V ! 11 30 V 10 29 V ! 10 28 V 10 26 V ! 10 24 V ! 10 24 V ! 10 22 V 10 20 V ! 10 19 V 10 18 V ! 10 17 V ! 10 16 V 10 14 V ! 10 13 V ! 10 13 V ! 10 11 V 10 10 V ! 10 9 V ! 10 9 V 10 7 V 10 7 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 3 V ! 10 3 V 10 3 V ! 10 2 V 10 1 V 10 0 V ! 11 0 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -5 V 10 -6 V 10 -5 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V 10 -7 V 10 -6 V 10 -7 V 10 -7 V ! 11 -6 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -8 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -8 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V ! 10 -6 V ! 10 -7 V 10 -7 V 10 -7 V 11 -7 V + 10 -7 V 10 -6 V ! 10 -7 V ! 10 -7 V 10 -6 V ! 10 -7 V ! 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -6 V 11 -5 V 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V 10 -6 V 10 -5 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -4 V 10 -5 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -5 V 11 -4 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V ! 10 -3 V ! 11 -4 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 11 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{Type 2, $a=1,b=1$}}% ! \put(1950,2226){\cjust{Type 2 Gumbel Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 2}}% ! \put(2700,200){\cjust{ 1.5}}% ! \put(1950,200){\cjust{ 1}}% ! \put(1200,200){\cjust{ 0.5}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-hypergeometric.tex gsl-1.4/doc/rand-hypergeometric.tex *** gsl-1.3/doc/rand-hypergeometric.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-hypergeometric.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-hypergeometric.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:50:00 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-hypergeometric.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,515 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 568 M ! 3150 0 R ! 350 836 M ! 3150 0 R ! 350 1104 M ! 3150 0 R ! 350 1372 M ! 3150 0 R ! 350 1640 M ! 3150 0 R ! 350 1908 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 493 300 M ! 0 1876 R ! 636 300 M 0 63 V ! 0 1813 R 0 -63 V ! 780 300 M ! 0 1876 R ! 923 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1066 300 M ! 0 1876 R ! 1209 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1352 300 M ! 0 1876 R ! 1495 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1639 300 M ! 0 1876 R ! 1782 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M ! 0 1876 R ! 2068 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2211 300 M ! 0 1876 R ! 2355 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2498 300 M ! 0 1876 R ! 2641 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2784 300 M ! 0 1876 R ! 2927 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3070 300 M ! 0 1876 R ! 3214 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3357 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 1628 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -221 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -874 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -221 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{$n1=5, n2=20, t=3$}} ! \put(1925,2276){\cjust{Hypergeometric Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3357,200){\cjust{10}} ! \put(3070,200){\cjust{9}} ! \put(2784,200){\cjust{8}} ! \put(2498,200){\cjust{7}} ! \put(2211,200){\cjust{6}} ! \put(1925,200){\cjust{5}} ! \put(1639,200){\cjust{4}} ! \put(1352,200){\cjust{3}} ! \put(1066,200){\cjust{2}} ! \put(780,200){\cjust{1}} ! \put(493,200){\cjust{0}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,525 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 554 M ! 3000 0 R ! 450 807 M ! 3000 0 R ! 450 1061 M ! 3000 0 R ! 450 1315 M ! 3000 0 R ! 450 1569 M ! 3000 0 R ! 450 1822 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 586 300 M ! 0 1776 R ! 723 300 M 0 63 V ! 0 1713 R 0 -63 V ! 859 300 M ! 0 1776 R ! 995 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1132 300 M ! 0 1776 R ! 1268 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1405 300 M ! 0 1776 R ! 1541 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1677 300 M ! 0 1776 R ! 1814 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M ! 0 1776 R ! 2086 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2223 300 M ! 0 1776 R ! 2359 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2495 300 M ! 0 1776 R ! 2632 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2768 300 M ! 0 1776 R ! 2905 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3041 300 M ! 0 1776 R ! 3177 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3314 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 1558 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -210 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 -827 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -210 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{$n1=5, n2=20, t=3$}}% ! \put(1950,2226){\cjust{Hypergeometric Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3314,200){\cjust{ 10}}% ! \put(3041,200){\cjust{ 9}}% ! \put(2768,200){\cjust{ 8}}% ! \put(2495,200){\cjust{ 7}}% ! \put(2223,200){\cjust{ 6}}% ! \put(1950,200){\cjust{ 5}}% ! \put(1677,200){\cjust{ 4}}% ! \put(1405,200){\cjust{ 3}}% ! \put(1132,200){\cjust{ 2}}% ! \put(859,200){\cjust{ 1}}% ! \put(586,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-landau.tex gsl-1.4/doc/rand-landau.tex *** gsl-1.3/doc/rand-landau.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-landau.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-landau.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:58 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-landau.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,541 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 560 300 M 0 63 V ! 0 1813 R 0 -63 V ! 770 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1190 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1400 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1820 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2030 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V 2450 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2660 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3080 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3290 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 350 300 M ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 0 V ! 21 1 V ! 21 0 V ! 21 2 V ! 21 3 V ! 21 6 V ! 21 10 V ! 21 15 V ! 21 22 V ! 21 31 V ! 21 42 V ! 21 53 V ! 21 64 V ! 21 77 V ! 21 87 V ! 21 96 V ! 21 104 V ! 21 108 V ! 21 111 V ! 21 111 V ! 21 108 V ! 21 104 V ! 21 97 V ! 21 89 V ! 21 79 V ! 21 69 V ! 21 59 V ! 21 49 V ! 21 38 V ! 21 28 V ! 21 19 V ! 21 10 V ! 21 2 V ! 21 -5 V ! 21 -11 V ! 21 -18 V ! 21 -22 V ! 21 -26 V ! 21 -30 V ! 21 -32 V ! 21 -35 V ! 21 -37 V ! 21 -38 V ! 21 -38 V ! 21 -40 V ! 21 -40 V ! 21 -39 V ! 21 -40 V ! 21 -39 V ! 21 -39 V ! 21 -38 V ! 21 -37 V ! 21 -36 V ! 21 -36 V ! 21 -34 V ! 21 -33 V ! 21 -33 V ! 21 -31 V ! 21 -30 V ! 21 -29 V ! 21 -29 V ! 21 -27 V ! 21 -26 V ! 21 -25 V ! 21 -25 V ! 21 -23 V ! 21 -22 V ! 21 -22 V ! 21 -21 V ! 21 -20 V ! 21 -19 V ! 21 -18 V ! 21 -18 V ! 21 -17 V ! 21 -16 V ! 21 -16 V ! 21 -15 V ! 21 -15 V ! 21 -14 V ! 21 -13 V ! 21 -13 V ! 21 -12 V ! 21 -12 V ! 21 -12 V ! 21 -11 V ! 21 -10 V ! 21 -10 V ! 21 -10 V ! 21 -10 V ! 21 -9 V ! 21 -9 V ! 21 -8 V ! 21 -8 V ! 21 -8 V ! 21 -8 V ! 21 -7 V ! 21 -7 V ! 21 -7 V ! 21 -6 V ! 21 -7 V ! 21 -6 V ! 21 -6 V ! 21 -6 V ! 21 -5 V ! 21 -5 V ! 21 -6 V ! 21 -5 V ! 21 -5 V ! 21 -4 V ! 21 -5 V ! 21 -4 V ! 21 -4 V ! 21 -4 V ! 21 -4 V ! 21 -4 V ! 21 -4 V ! 21 -4 V ! 21 -3 V ! 21 -4 V ! 21 -3 V ! 21 -3 V ! 21 -3 V ! 21 -3 V ! 21 -3 V ! 21 -3 V ! 21 -3 V ! 21 -3 V ! 21 -2 V ! 21 -3 V ! 21 -2 V ! 21 -3 V ! 21 -2 V ! 21 -2 V ! 21 -2 V ! 21 -3 V stroke grestore end showpage ! } ! \put(1925,2276){\cjust{Landau Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{10}} ! \put(3290,200){\cjust{9}} ! \put(3080,200){\cjust{8}} ! \put(2870,200){\cjust{7}} ! \put(2660,200){\cjust{6}} ! \put(2450,200){\cjust{5}} ! \put(2240,200){\cjust{4}} ! \put(2030,200){\cjust{3}} ! \put(1820,200){\cjust{2}} ! \put(1610,200){\cjust{1}} ! \put(1400,200){\cjust{0}} ! \put(1190,200){\cjust{-1}} ! \put(980,200){\cjust{-2}} ! \put(770,200){\cjust{-3}} ! \put(560,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,2176){\rjust{0.2}} ! \put(300,1238){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,551 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V 2450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 450 300 M ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 0 V ! 20 1 V ! 20 0 V ! 20 2 V ! 20 3 V ! 20 6 V ! 20 9 V ! 20 14 V ! 20 21 V ! 20 30 V ! 20 39 V ! 20 50 V ! 20 61 V ! 20 72 V ! 20 83 V ! 20 91 V ! 20 98 V ! 20 103 V ! 20 105 V ! 20 105 V ! 20 102 V ! 20 98 V ! 20 92 V ! 20 84 V ! 20 75 V ! 20 66 V ! 20 56 V ! 20 46 V ! 20 36 V ! 20 27 V ! 20 18 V ! 20 9 V ! 20 2 V ! 20 -5 V ! 20 -11 V ! 20 -16 V ! 20 -21 V ! 20 -25 V ! 20 -28 V ! 20 -31 V ! 20 -33 V ! 20 -34 V ! 20 -36 V ! 20 -37 V ! 20 -38 V ! 20 -37 V ! 20 -38 V ! 20 -37 V ! 20 -37 V ! 20 -37 V ! 20 -36 V ! 20 -35 V ! 20 -34 V ! 20 -34 V ! 20 -32 V ! 20 -32 V ! 20 -31 V ! 20 -29 V ! 20 -29 V ! 20 -28 V ! 20 -26 V ! 20 -26 V ! 20 -25 V ! 20 -24 V ! 20 -23 V ! 20 -22 V ! 20 -21 V ! 20 -21 V ! 20 -19 V ! 20 -19 V ! 20 -18 V ! 20 -18 V ! 20 -16 V ! 20 -17 V ! 20 -15 V ! 20 -15 V ! 20 -14 V ! 20 -14 V ! 20 -13 V ! 20 -13 V ! 20 -12 V ! 20 -12 V ! 20 -11 V ! 20 -11 V ! 20 -10 V ! 20 -10 V ! 20 -10 V ! 20 -9 V ! 20 -9 V ! 20 -9 V ! 20 -8 V ! 20 -8 V ! 20 -8 V ! 20 -7 V ! 20 -8 V ! 20 -6 V ! 20 -7 V ! 20 -7 V ! 20 -6 V ! 20 -6 V ! 20 -6 V ! 20 -5 V ! 20 -6 V ! 20 -5 V ! 20 -5 V ! 20 -5 V ! 20 -5 V ! 20 -4 V ! 20 -5 V ! 20 -4 V ! 20 -4 V ! 20 -4 V ! 20 -4 V ! 20 -4 V ! 20 -3 V ! 20 -4 V ! 20 -3 V ! 20 -4 V ! 20 -3 V ! 20 -3 V ! 20 -3 V ! 20 -3 V ! 20 -3 V ! 20 -3 V ! 20 -2 V ! 20 -3 V ! 20 -3 V ! 20 -2 V ! 20 -2 V ! 20 -3 V ! 20 -2 V ! 20 -2 V ! 20 -3 V ! 20 -2 V ! 20 -2 V stroke grestore end showpage ! }}% ! \put(1950,2226){\cjust{Landau Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 10}}% ! \put(3250,200){\cjust{ 9}}% ! \put(3050,200){\cjust{ 8}}% ! \put(2850,200){\cjust{ 7}}% ! \put(2650,200){\cjust{ 6}}% ! \put(2450,200){\cjust{ 5}}% ! \put(2250,200){\cjust{ 4}}% ! \put(2050,200){\cjust{ 3}}% ! \put(1850,200){\cjust{ 2}}% ! \put(1650,200){\cjust{ 1}}% ! \put(1450,200){\cjust{ 0}}% ! \put(1250,200){\cjust{-1}}% ! \put(1050,200){\cjust{-2}}% ! \put(850,200){\cjust{-3}}% ! \put(650,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,2076){\rjust{ 0.2}}% ! \put(400,1188){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-laplace.tex gsl-1.4/doc/rand-laplace.tex *** gsl-1.3/doc/rand-laplace.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-laplace.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-laplace.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:58 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-laplace.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,988 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 641 M 63 0 V ! 3087 0 R -63 0 V ! 350 982 M 63 0 V ! 3087 0 R -63 0 V ! 350 1323 M 63 0 V ! 3087 0 R -63 0 V ! 350 1664 M 63 0 V ! 3087 0 R -63 0 V ! 350 2005 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 665 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1295 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2555 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3185 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 311 M ! 11 1 V 10 0 V ! 11 1 V 10 0 V - 11 1 V 10 0 V ! 11 1 V 10 0 V ! 11 1 V 10 0 V ! 11 1 V 10 0 V ! 11 1 V 10 0 V ! 11 1 V ! 11 1 V 10 0 V 11 1 V 10 1 V ! 11 0 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 0 V 10 1 V - 11 1 V - 11 1 V 10 1 V - 11 1 V - 10 2 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V ! 11 1 V 10 2 V ! 11 1 V ! 11 2 V 10 2 V - 11 2 V 10 1 V 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 3 V - 11 2 V 10 2 V - 11 3 V - 11 2 V 10 3 V - 11 3 V 10 2 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 3 V 10 3 V ! 11 4 V 10 4 V - 11 4 V 10 3 V ! 11 4 V ! 11 5 V 10 4 V - 11 5 V 10 4 V 11 5 V 10 5 V - 11 5 V 10 5 V - 11 6 V 10 6 V - 11 5 V 10 6 V - 11 7 V 10 6 V ! 11 7 V ! 11 7 V 10 7 V - 11 7 V 10 8 V ! 11 8 V 10 8 V - 11 9 V 10 9 V - 11 9 V 10 9 V ! 11 10 V 10 10 V - 11 10 V - 11 11 V 10 11 V ! 11 11 V 10 12 V ! 11 12 V 10 13 V ! 11 13 V 10 14 V - 11 14 V 10 14 V - 11 15 V 10 16 V ! 11 16 V 10 16 V - 11 17 V - 11 18 V 10 18 V ! 11 19 V 10 20 V ! 11 20 V 10 21 V - 11 21 V 10 23 V - 11 23 V 10 24 V ! 11 25 V 10 25 V ! 11 27 V ! 10 27 V ! 11 28 V ! 11 29 V 10 31 V ! 11 31 V ! 10 32 V ! 11 34 V 10 34 V ! 11 36 V 10 37 V - 11 38 V 10 39 V ! 11 41 V ! 10 42 V ! 11 44 V ! 11 45 V 10 47 V ! 11 48 V ! 10 50 V ! 11 52 V ! 10 53 V ! 11 55 V ! 10 0 V ! 11 -55 V ! 10 -53 V ! 11 -52 V ! 10 -50 V ! 11 -48 V 10 -47 V ! 11 -45 V ! 11 -44 V ! 10 -42 V ! 11 -41 V 10 -39 V - 11 -38 V 10 -37 V ! 11 -36 V 10 -34 V ! 11 -34 V ! 10 -32 V ! 11 -31 V 10 -31 V ! 11 -29 V ! 11 -28 V ! 10 -27 V ! 11 -27 V 10 -25 V - 11 -25 V 10 -24 V ! 11 -23 V 10 -23 V - 11 -21 V 10 -21 V ! 11 -20 V 10 -20 V ! 11 -19 V 10 -18 V - 11 -18 V - 11 -17 V 10 -16 V ! 11 -16 V 10 -16 V - 11 -15 V 10 -14 V - 11 -14 V 10 -14 V ! 11 -13 V 10 -13 V - 11 -12 V - 10 -12 V 11 -11 V 10 -11 V - 11 -11 V - 11 -10 V 10 -10 V ! 11 -10 V 10 -9 V - 11 -9 V 10 -9 V - 11 -9 V 10 -8 V - 11 -8 V 10 -8 V ! 11 -7 V 10 -7 V - 11 -7 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -5 V 10 -6 V ! 11 -6 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V 11 -5 V 10 -4 V ! 11 -5 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V - 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 370 M ! 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V 10 2 V ! 11 1 V 10 2 V - 11 1 V 10 1 V ! 11 2 V 11 1 V 10 2 V - 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 2 V 10 2 V - 11 2 V 10 1 V - 11 2 V 10 2 V ! 11 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 3 V ! 11 2 V 10 2 V 11 3 V ! 11 2 V 10 3 V ! 11 2 V 10 3 V - 11 2 V 10 3 V - 11 3 V 10 2 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 3 V ! 11 4 V 10 4 V ! 11 3 V ! 11 4 V 10 4 V ! 11 4 V 10 4 V 11 4 V 10 5 V - 11 4 V 10 4 V - 11 5 V 10 4 V ! 11 5 V 10 4 V - 11 5 V 10 5 V ! 11 5 V ! 11 5 V 10 5 V - 11 5 V 10 5 V - 11 6 V 10 5 V ! 11 5 V 10 6 V - 11 6 V 10 6 V - 11 5 V 10 6 V - 11 6 V 11 7 V 10 6 V - 11 6 V 10 7 V ! 11 6 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 8 V ! 11 7 V 10 8 V - 11 8 V - 11 8 V 10 8 V ! 11 8 V 10 9 V - 11 8 V 10 9 V - 11 8 V 10 9 V - 11 9 V 10 10 V - 11 9 V 10 10 V ! 11 9 V 10 10 V - 11 10 V - 11 10 V 10 11 V 11 10 V 10 11 V - 11 11 V 10 11 V ! 11 11 V 10 12 V - 11 12 V 10 11 V ! 11 12 V 10 13 V ! 11 12 V ! 11 13 V 10 13 V - 11 13 V 10 13 V - 11 14 V 10 14 V - 11 14 V 10 0 V - 11 -14 V 10 -14 V - 11 -14 V 10 -13 V - 11 -13 V 10 -13 V ! 11 -13 V ! 11 -12 V 10 -13 V ! 11 -12 V 10 -11 V - 11 -12 V 10 -12 V - 11 -11 V 10 -11 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -11 V 11 -10 V - 11 -10 V 10 -10 V ! 11 -9 V 10 -10 V - 11 -9 V 10 -10 V - 11 -9 V 10 -9 V - 11 -8 V 10 -9 V - 11 -8 V 10 -9 V ! 11 -8 V 10 -8 V - 11 -8 V - 11 -8 V 10 -8 V - 11 -7 V 10 -8 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V - 11 -7 V 10 -7 V - 11 -6 V 10 -7 V ! 11 -6 V 10 -6 V 11 -7 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -6 V 10 -6 V ! 11 -5 V 10 -5 V ! 11 -6 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V ! 11 -3 V 10 -4 V 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=2$}} ! \put(3087,2063){\rjust{$a=1$}} ! \put(1925,2276){\cjust{Laplace Distribution (Two-sided Exponential)}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3185,200){\cjust{4}} ! \put(2870,200){\cjust{3}} ! \put(2555,200){\cjust{2}} ! \put(2240,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1610,200){\cjust{-1}} ! \put(1295,200){\cjust{-2}} ! \put(980,200){\cjust{-3}} ! \put(665,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,2005){\rjust{0.5}} ! \put(300,1664){\rjust{0.4}} ! \put(300,1323){\rjust{0.3}} ! \put(300,982){\rjust{0.2}} ! \put(300,641){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,998 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 623 M 63 0 V ! 2937 0 R -63 0 V ! 450 946 M 63 0 V ! 2937 0 R -63 0 V ! 450 1269 M 63 0 V ! 2937 0 R -63 0 V ! 450 1592 M 63 0 V ! 2937 0 R -63 0 V ! 450 1915 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 750 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2550 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3150 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 311 M 10 0 V ! 10 1 V 10 0 V 10 0 V ! 10 1 V 10 0 V ! 10 1 V 10 0 V ! 10 1 V 10 0 V ! 10 1 V 10 0 V ! 10 1 V 10 0 V 11 1 V 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V 10 1 V 11 2 V 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V 10 2 V 10 3 V 10 2 V 10 3 V 10 2 V 10 3 V 10 3 V 10 3 V ! 10 2 V 10 4 V 10 3 V ! 10 3 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 11 5 V + 10 4 V + 10 5 V + 10 5 V + 10 5 V 10 5 V 10 5 V 10 6 V 10 6 V 10 6 V ! 10 6 V ! 10 6 V ! 10 7 V ! 10 6 V 10 7 V 10 8 V ! 10 7 V ! 10 8 V ! 10 8 V 10 8 V 10 9 V 10 9 V ! 10 9 V ! 10 9 V ! 10 10 V 10 10 V 10 11 V ! 10 11 V ! 10 11 V 10 12 V ! 11 11 V 10 13 V ! 10 13 V ! 10 13 V ! 10 14 V 10 14 V 10 14 V 10 16 V ! 10 15 V ! 10 17 V 10 16 V 10 18 V ! 10 17 V ! 10 19 V ! 10 19 V 10 20 V ! 10 20 V ! 10 22 V 10 21 V 10 23 V 10 24 V ! 10 24 V 10 25 V ! 10 26 V ! 10 26 V ! 10 28 V ! 10 29 V ! 10 29 V 10 31 V ! 10 31 V ! 11 33 V 10 34 V ! 10 35 V ! 10 36 V 10 37 V 10 39 V ! 10 40 V ! 10 41 V ! 10 43 V ! 10 44 V ! 10 46 V 10 47 V ! 10 49 V ! 10 51 V ! 10 52 V ! 10 0 V ! 10 -52 V ! 10 -51 V ! 10 -49 V 10 -47 V ! 10 -46 V ! 10 -44 V ! 10 -43 V ! 10 -41 V ! 10 -40 V 10 -39 V 10 -37 V ! 10 -36 V ! 10 -35 V 10 -34 V ! 11 -33 V ! 10 -31 V 10 -31 V ! 10 -29 V ! 10 -29 V ! 10 -28 V ! 10 -26 V ! 10 -26 V 10 -25 V 10 -24 V ! 10 -24 V 10 -23 V 10 -21 V ! 10 -22 V ! 10 -20 V 10 -20 V ! 10 -19 V ! 10 -19 V ! 10 -17 V 10 -18 V 10 -16 V ! 10 -17 V ! 10 -15 V 10 -16 V 10 -14 V 10 -14 V ! 10 -14 V ! 10 -13 V ! 10 -13 V 10 -13 V 11 -11 V + 10 -12 V + 10 -11 V + 10 -11 V 10 -11 V 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -9 V 10 -9 V 10 -9 V 10 -8 V 10 -8 V ! 10 -8 V ! 10 -7 V ! 10 -8 V ! 10 -7 V ! 10 -6 V 10 -7 V 10 -6 V 10 -6 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -4 V 11 -5 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V + 10 -2 V 11 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V + 10 -1 V 11 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 -1 V 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 366 M ! 10 1 V ! 10 2 V ! 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V ! 10 1 V ! 10 2 V 11 1 V 10 2 V 10 1 V ! 10 2 V 10 1 V 10 2 V 10 1 V 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 3 V ! 10 2 V ! 10 2 V 10 2 V 11 3 V ! 10 2 V ! 10 2 V 10 3 V ! 10 2 V ! 10 3 V ! 10 2 V 10 3 V 10 3 V 10 2 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V 10 4 V ! 10 3 V 10 4 V ! 10 3 V 10 4 V + 10 3 V + 10 4 V + 10 4 V + 10 3 V 11 4 V + 10 4 V + 10 4 V + 10 4 V + 10 4 V 10 5 V 10 4 V 10 4 V ! 10 5 V 10 4 V 10 5 V ! 10 4 V 10 5 V 10 5 V 10 5 V ! 10 4 V ! 10 6 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V ! 10 6 V 10 6 V 10 6 V 10 6 V 11 7 V 10 6 V 10 7 V ! 10 6 V ! 10 7 V ! 10 7 V 10 7 V 10 7 V 10 7 V 10 8 V ! 10 7 V ! 10 8 V ! 10 8 V 10 8 V 10 8 V ! 10 8 V ! 10 8 V ! 10 9 V ! 10 8 V ! 10 9 V ! 10 9 V 10 9 V 10 9 V 10 9 V 10 10 V 10 10 V ! 10 9 V 10 10 V 10 11 V + 10 10 V 11 10 V 10 11 V 10 11 V ! 10 11 V ! 10 11 V 10 12 V 10 11 V ! 10 12 V ! 10 12 V ! 10 12 V 10 13 V ! 10 12 V 10 13 V 10 13 V 10 14 V 10 0 V 10 -14 V 10 -13 V 10 -13 V ! 10 -12 V 10 -13 V ! 10 -12 V ! 10 -12 V ! 10 -12 V 10 -11 V 10 -12 V 10 -11 V 10 -11 V ! 10 -11 V 10 -11 V 11 -10 V 10 -10 V ! 10 -11 V ! 10 -10 V ! 10 -9 V 10 -10 V 10 -10 V 10 -9 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V ! 10 -9 V ! 10 -8 V ! 10 -8 V ! 10 -8 V 10 -8 V 10 -8 V 10 -8 V 10 -7 V ! 10 -8 V ! 10 -7 V ! 10 -7 V 10 -7 V 10 -7 V 10 -7 V ! 10 -6 V ! 10 -7 V 10 -6 V 11 -7 V 10 -6 V 10 -6 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V 10 -5 V ! 10 -5 V ! 10 -6 V 10 -4 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -5 V 10 -4 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 11 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V 10 -3 V 10 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V 11 -3 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V 10 -2 V 11 -1 V + 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=2$}}% ! \put(3037,1963){\rjust{$a=1$}}% ! \put(1950,2226){\cjust{Laplace Distribution (Two-sided Exponential)}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3150,200){\cjust{ 4}}% ! \put(2850,200){\cjust{ 3}}% ! \put(2550,200){\cjust{ 2}}% ! \put(2250,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1650,200){\cjust{-1}}% ! \put(1350,200){\cjust{-2}}% ! \put(1050,200){\cjust{-3}}% ! \put(750,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,1915){\rjust{ 0.5}}% ! \put(400,1592){\rjust{ 0.4}}% ! \put(400,1269){\rjust{ 0.3}}% ! \put(400,946){\rjust{ 0.2}}% ! \put(400,623){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-levy.tex gsl-1.4/doc/rand-levy.tex *** gsl-1.3/doc/rand-levy.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-levy.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-levy.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:58 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-levy.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,983 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 717 M 63 0 V ! 3087 0 R -63 0 V ! 350 1134 M 63 0 V ! 3087 0 R -63 0 V ! 350 1551 M 63 0 V ! 3087 0 R -63 0 V ! 350 1968 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 665 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1295 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2555 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3185 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 351 M ! 11 1 V 10 0 V - 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 1 V 10 1 V - 11 0 V - 11 1 V 10 1 V - 11 1 V 10 1 V 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V ! 11 1 V 10 2 V - 11 1 V - 11 1 V 10 1 V ! 11 1 V 10 2 V - 11 1 V 10 1 V - 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 2 V 10 1 V ! 11 2 V 10 1 V ! 11 2 V ! 11 2 V 10 1 V - 11 2 V 10 2 V 11 2 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 3 V - 11 2 V - 11 3 V 10 2 V - 11 3 V 10 2 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 4 V - 11 4 V 10 4 V ! 11 4 V 10 4 V 11 4 V 10 5 V - 11 5 V 10 4 V - 11 5 V 10 5 V - 11 6 V 10 5 V ! 11 6 V 10 6 V - 11 6 V - 11 6 V 10 7 V ! 11 6 V ! 10 8 V ! 11 7 V 10 7 V ! 11 8 V 10 9 V - 11 8 V 10 9 V - 11 9 V 10 10 V - 11 9 V - 11 11 V 10 10 V - 11 12 V 10 11 V 11 12 V 10 13 V - 11 13 V 10 13 V ! 11 14 V 10 15 V - 11 15 V 10 16 V - 11 17 V 10 17 V ! 11 18 V ! 11 18 V 10 19 V - 11 20 V 10 21 V ! 11 21 V ! 10 22 V ! 11 23 V ! 10 24 V ! 11 24 V 10 25 V - 11 26 V 10 26 V ! 11 27 V ! 10 28 V ! 11 28 V ! 11 28 V ! 10 29 V ! 11 28 V ! 10 29 V ! 11 29 V ! 10 28 V ! 11 28 V 10 28 V ! 11 26 V 10 25 V ! 11 24 V 10 23 V ! 11 20 V ! 11 19 V ! 10 17 V ! 11 14 V 10 11 V ! 11 9 V ! 10 6 V ! 11 3 V 10 0 V ! 11 -3 V ! 10 -6 V ! 11 -9 V 10 -11 V ! 11 -14 V ! 10 -17 V ! 11 -19 V ! 11 -20 V 10 -23 V ! 11 -24 V 10 -25 V ! 11 -26 V ! 10 -28 V ! 11 -28 V ! 10 -28 V ! 11 -29 V ! 10 -29 V ! 11 -28 V ! 10 -29 V ! 11 -28 V ! 11 -28 V ! 10 -28 V 11 -27 V 10 -26 V - 11 -26 V 10 -25 V ! 11 -24 V ! 10 -24 V ! 11 -23 V ! 10 -22 V ! 11 -21 V 10 -21 V - 11 -20 V 10 -19 V ! 11 -18 V ! 11 -18 V 10 -17 V - 11 -17 V 10 -16 V - 11 -15 V 10 -15 V ! 11 -14 V 10 -13 V - 11 -13 V 10 -13 V 11 -12 V 10 -11 V - 11 -12 V 10 -10 V - 11 -11 V - 11 -9 V 10 -10 V - 11 -9 V 10 -9 V - 11 -8 V 10 -9 V ! 11 -8 V ! 10 -7 V ! 11 -7 V 10 -8 V ! 11 -6 V 10 -7 V - 11 -6 V - 11 -6 V 10 -6 V ! 11 -6 V 10 -5 V - 11 -6 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V 11 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V 11 -1 V 10 0 V ! 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 302 M ! 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 0 V 10 1 V - 11 0 V 10 0 V - 11 1 V 10 0 V - 11 1 V 10 0 V - 11 0 V 10 1 V ! 11 0 V ! 11 1 V 10 1 V 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 0 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V - 11 1 V - 11 1 V 10 2 V ! 11 1 V 10 2 V - 11 1 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 3 V 10 2 V ! 11 3 V 10 2 V ! 11 3 V 11 3 V 10 3 V - 11 4 V 10 3 V ! 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 5 V - 11 5 V 10 5 V ! 11 5 V ! 11 5 V 10 6 V - 11 6 V 10 6 V - 11 7 V 10 6 V ! 11 7 V 10 7 V - 11 8 V 10 7 V ! 11 8 V 10 9 V - 11 8 V 10 9 V - 11 9 V - 11 9 V - 10 10 V 11 10 V 10 10 V - 11 11 V 10 10 V - 11 12 V 10 11 V ! 11 12 V 10 12 V ! 11 12 V 10 12 V ! 11 13 V 10 13 V ! 11 14 V ! 11 13 V 10 14 V - 11 15 V 10 14 V ! 11 15 V 10 15 V - 11 15 V 10 15 V - 11 15 V 10 16 V ! 11 16 V 10 16 V 11 16 V - 11 17 V 10 16 V - 11 17 V 10 16 V - 11 17 V - 10 17 V - 11 17 V - 10 17 V - 11 17 V 10 16 V - 11 17 V - 10 17 V - 11 17 V 10 16 V - 11 17 V - 11 16 V 10 16 V - 11 16 V 10 16 V - 11 16 V 10 15 V ! 11 15 V 10 15 V - 11 14 V 10 14 V - 11 14 V 10 14 V ! 11 13 V 10 12 V - 11 13 V - 11 11 V 10 12 V ! 11 11 V 10 10 V - 11 10 V 10 9 V 11 9 V 10 8 V ! 11 7 V 10 7 V - 11 7 V 10 6 V ! 11 5 V ! 11 4 V 10 4 V - 11 3 V 10 3 V ! 11 2 V 10 1 V ! 11 1 V 10 0 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -4 V ! 11 -4 V ! 11 -5 V 10 -6 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -8 V 11 -9 V 10 -9 V - 11 -10 V 10 -10 V ! 11 -11 V 10 -12 V - 11 -11 V - 11 -13 V 10 -12 V ! 11 -13 V 10 -14 V - 11 -14 V 10 -14 V - 11 -14 V 10 -15 V ! 11 -15 V 10 -15 V - 11 -16 V 10 -16 V ! 11 -16 V 10 -16 V - 11 -16 V - 11 -17 V 10 -16 V - 11 -17 V - 10 -17 V - 11 -17 V 10 -16 V - 11 -17 V - 10 -17 V - 11 -17 V - 10 -17 V - 11 -17 V 10 -16 V - 11 -17 V 10 -16 V - 11 -17 V - 11 -16 V 10 -16 V 11 -16 V 10 -16 V ! 11 -15 V 10 -15 V - 11 -15 V 10 -15 V ! 11 -15 V 10 -14 V - 11 -15 V 10 -14 V - 11 -13 V - 11 -14 V 10 -13 V ! 11 -13 V 10 -12 V - 11 -12 V 10 -12 V - 11 -12 V 10 -11 V ! 11 -12 V 10 -10 V ! 11 -11 V 10 -10 V - 11 -10 V 10 -10 V ! 11 -9 V ! 11 -9 V 10 -9 V - 11 -8 V 10 -9 V ! 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -6 V 10 -6 V ! 11 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V 11 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 -1 V ! 11 0 V 10 -1 V 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V ! 11 0 V 10 -1 V ! 11 0 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$c=1, \alpha=2.0$}} ! \put(3087,2063){\rjust{$c=1, \alpha=1.0$}} ! \put(1925,2276){\cjust{Levy Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3185,200){\cjust{4}} ! \put(2870,200){\cjust{3}} ! \put(2555,200){\cjust{2}} ! \put(2240,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1610,200){\cjust{-1}} ! \put(1295,200){\cjust{-2}} ! \put(980,200){\cjust{-3}} ! \put(665,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,1968){\rjust{0.4}} ! \put(300,1551){\rjust{0.3}} ! \put(300,1134){\rjust{0.2}} ! \put(300,717){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,993 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 695 M 63 0 V ! 2937 0 R -63 0 V ! 450 1089 M 63 0 V ! 2937 0 R -63 0 V ! 450 1484 M 63 0 V ! 2937 0 R -63 0 V ! 450 1879 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 750 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2550 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3150 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 348 M ! 10 1 V ! 10 1 V 10 0 V 10 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V 10 1 V 10 1 V + 10 0 V 11 1 V 10 1 V 10 1 V 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V 10 1 V ! 10 2 V 10 1 V 10 1 V ! 10 2 V 10 1 V ! 10 2 V 10 1 V 10 2 V + 10 1 V 11 2 V 10 2 V 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V 10 2 V 10 3 V 10 2 V 10 2 V 10 3 V ! 10 2 V ! 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V ! 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V 10 4 V 11 4 V + 10 4 V + 10 5 V + 10 4 V 10 5 V 10 4 V 10 5 V 10 5 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V 10 6 V 10 7 V ! 10 6 V 10 7 V ! 10 7 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 9 V 10 9 V 10 9 V 10 10 V 10 10 V 10 11 V + 10 10 V + 10 12 V 11 12 V + 10 12 V 10 13 V 10 13 V ! 10 14 V ! 10 15 V ! 10 15 V 10 15 V 10 16 V 10 17 V ! 10 18 V ! 10 18 V ! 10 19 V 10 19 V 10 21 V ! 10 21 V ! 10 21 V ! 10 23 V ! 10 23 V ! 10 23 V ! 10 25 V ! 10 25 V 10 25 V 10 26 V ! 10 27 V ! 10 26 V ! 10 27 V 10 28 V ! 10 27 V ! 10 27 V ! 11 27 V ! 10 27 V 10 25 V ! 10 25 V ! 10 24 V 10 23 V ! 10 21 V ! 10 20 V ! 10 18 V ! 10 15 V ! 10 13 V 10 11 V ! 10 9 V ! 10 5 V ! 10 3 V 10 0 V ! 10 -3 V ! 10 -5 V ! 10 -9 V 10 -11 V ! 10 -13 V ! 10 -15 V ! 10 -18 V ! 10 -20 V ! 10 -21 V 10 -23 V ! 10 -24 V 10 -25 V ! 10 -25 V ! 10 -27 V 11 -27 V + 10 -27 V + 10 -27 V + 10 -28 V + 10 -27 V + 10 -26 V + 10 -27 V 10 -26 V 10 -25 V ! 10 -25 V ! 10 -25 V ! 10 -23 V ! 10 -23 V ! 10 -23 V ! 10 -21 V ! 10 -21 V 10 -21 V 10 -19 V ! 10 -19 V ! 10 -18 V ! 10 -18 V 10 -17 V 10 -16 V 10 -15 V ! 10 -15 V ! 10 -15 V ! 10 -14 V 10 -13 V 10 -13 V + 10 -12 V 11 -12 V + 10 -12 V + 10 -10 V 10 -11 V 10 -10 V 10 -10 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -8 V 10 -8 V ! 10 -8 V ! 10 -8 V ! 10 -7 V ! 10 -7 V ! 10 -6 V 10 -7 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V 10 -5 V 10 -5 V 10 -4 V 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 11 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 11 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 302 M ! 10 0 V 10 1 V 10 0 V ! 10 0 V ! 10 0 V 10 1 V 10 0 V 10 0 V 10 0 V 10 1 V ! 10 0 V ! 10 1 V ! 10 0 V 10 1 V 11 0 V 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V 10 2 V ! 10 1 V 10 2 V 10 2 V 10 2 V ! 10 3 V 10 2 V ! 10 2 V ! 10 3 V ! 10 3 V ! 10 3 V 11 3 V 10 3 V 10 3 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 5 V 10 5 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 6 V 10 6 V 10 6 V 10 6 V ! 10 6 V ! 10 7 V 10 7 V 10 7 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 9 V ! 10 9 V 10 9 V 10 9 V 11 10 V 10 10 V 10 10 V 10 11 V ! 10 10 V ! 10 11 V 10 12 V ! 10 11 V 10 12 V ! 10 12 V ! 10 13 V 10 13 V ! 10 12 V ! 10 14 V ! 10 13 V ! 10 14 V 10 14 V 10 14 V ! 10 14 V ! 10 14 V ! 10 15 V ! 10 15 V 10 15 V 10 15 V 10 16 V ! 10 15 V ! 10 16 V ! 10 15 V ! 10 16 V 10 16 V 11 16 V 10 16 V 10 16 V 10 16 V 10 16 V 10 16 V 10 16 V 10 15 V ! 10 16 V ! 10 16 V ! 10 15 V ! 10 15 V ! 10 16 V ! 10 15 V ! 10 14 V 10 15 V 10 14 V 10 14 V ! 10 14 V ! 10 13 V ! 10 13 V ! 10 13 V ! 10 12 V 10 12 V 10 12 V ! 10 11 V ! 10 11 V ! 10 10 V 10 10 V 10 9 V 11 9 V 10 8 V ! 10 8 V ! 10 7 V 10 7 V 10 6 V ! 10 5 V ! 10 5 V ! 10 4 V 10 4 V 10 3 V ! 10 3 V 10 1 V ! 10 2 V 10 0 V ! 10 0 V ! 10 0 V ! 10 -2 V 10 -1 V 10 -3 V ! 10 -3 V 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -5 V 10 -6 V 10 -7 V ! 10 -7 V ! 10 -8 V 10 -8 V 11 -9 V 10 -9 V 10 -10 V ! 10 -10 V ! 10 -11 V ! 10 -11 V ! 10 -12 V 10 -12 V 10 -12 V ! 10 -13 V ! 10 -13 V ! 10 -13 V ! 10 -14 V 10 -14 V 10 -14 V 10 -15 V ! 10 -14 V 10 -15 V 10 -16 V ! 10 -15 V ! 10 -15 V ! 10 -16 V ! 10 -16 V ! 10 -15 V 10 -16 V 10 -16 V 10 -16 V 10 -16 V 10 -16 V 10 -16 V 11 -16 V 10 -16 V ! 10 -16 V ! 10 -15 V ! 10 -16 V ! 10 -15 V ! 10 -16 V ! 10 -15 V 10 -15 V 10 -15 V ! 10 -15 V ! 10 -14 V ! 10 -14 V ! 10 -14 V 10 -14 V 10 -14 V 10 -13 V ! 10 -14 V ! 10 -12 V ! 10 -13 V ! 10 -13 V 10 -12 V 10 -12 V 10 -11 V ! 10 -12 V ! 10 -11 V 10 -10 V ! 10 -11 V 10 -10 V 10 -10 V ! 11 -10 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V ! 10 -8 V ! 10 -8 V ! 10 -8 V ! 10 -7 V 10 -7 V 10 -7 V 10 -6 V 10 -6 V 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -3 V 10 -3 V 10 -3 V 11 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V 10 -1 V 11 0 V + 10 -1 V + 10 0 V + 10 -1 V + 10 0 V + 10 -1 V 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$c=1, alpha=2.0$}}% ! \put(3037,1963){\rjust{$c=1, alpha=1.0$}}% ! \put(1950,2226){\cjust{Levy Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3150,200){\cjust{ 4}}% ! \put(2850,200){\cjust{ 3}}% ! \put(2550,200){\cjust{ 2}}% ! \put(2250,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1650,200){\cjust{-1}}% ! \put(1350,200){\cjust{-2}}% ! \put(1050,200){\cjust{-3}}% ! \put(750,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,1879){\rjust{ 0.4}}% ! \put(400,1484){\rjust{ 0.3}}% ! \put(400,1089){\rjust{ 0.2}}% ! \put(400,695){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-levyskew.tex gsl-1.4/doc/rand-levyskew.tex *** gsl-1.3/doc/rand-levyskew.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-levyskew.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-levyskew.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:58 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-levyskew.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,658 **** 1.000 UL LTb ! 250 300 M 63 0 V ! 3187 0 R -63 0 V ! 250 300 M 0 63 V ! 0 1813 R 0 -63 V ! 575 300 M 0 63 V ! 0 1813 R 0 -63 V ! 900 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1225 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1550 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1875 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2200 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2525 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3175 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 250 300 M ! 3250 0 V ! 0 1876 V ! -3250 0 V ! 250 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 250 300 M ! 11 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V ! 11 0 V ! 11 0 V 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 10 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 11 0 V 10 1 V 11 0 V ! 11 0 V ! 11 0 V ! 11 1 V ! 11 1 V ! 11 0 V ! 11 2 V 10 1 V 11 2 V 11 2 V ! 11 2 V ! 11 4 V 11 4 V ! 11 4 V ! 11 6 V 10 7 V ! 11 8 V ! 11 9 V ! 11 11 V ! 11 12 V ! 11 14 V ! 11 16 V 10 17 V ! 11 20 V ! 11 22 V 11 25 V ! 11 27 V ! 11 29 V ! 11 31 V ! 11 34 V ! 10 37 V ! 11 38 V ! 11 41 V 11 43 V ! 11 45 V 11 47 V 11 49 V ! 11 50 V ! 10 51 V ! 11 52 V ! 11 52 V ! 11 54 V ! 11 53 V ! 11 53 V ! 11 53 V ! 10 51 V 11 51 V ! 11 50 V ! 11 48 V 11 47 V ! 11 45 V 11 42 V ! 11 40 V 10 38 V ! 11 35 V ! 11 33 V ! 11 30 V ! 11 26 V ! 11 24 V ! 11 22 V ! 11 18 V ! 10 15 V ! 11 12 V ! 11 10 V 11 7 V ! 11 4 V ! 11 2 V ! 11 -1 V 10 -3 V 11 -6 V ! 11 -7 V ! 11 -10 V 11 -11 V ! 11 -13 V ! 11 -15 V ! 11 -17 V 10 -17 V ! 11 -19 V 11 -20 V ! 11 -22 V ! 11 -22 V ! 11 -22 V ! 11 -24 V 11 -24 V 10 -24 V - 11 -25 V - 11 -25 V - 11 -26 V - 11 -25 V - 11 -26 V - 11 -25 V - 10 -26 V - 11 -25 V - 11 -25 V - 11 -25 V - 11 -25 V - 11 -25 V 11 -24 V 11 -24 V 10 -23 V 11 -23 V ! 11 -23 V ! 11 -22 V 11 -22 V 11 -21 V ! 11 -21 V ! 11 -21 V 10 -20 V 11 -19 V ! 11 -19 V ! 11 -19 V ! 11 -18 V ! 11 -17 V 11 -17 V 10 -17 V 11 -16 V ! 11 -16 V ! 11 -15 V 11 -15 V ! 11 -14 V ! 11 -14 V 11 -14 V 10 -13 V ! 11 -13 V ! 11 -13 V 11 -12 V ! 11 -11 V 11 -12 V 11 -11 V ! 11 -10 V 10 -11 V 11 -10 V 11 -9 V - 11 -10 V - 11 -9 V - 11 -9 V - 11 -8 V 10 -9 V 11 -8 V ! 11 -8 V ! 11 -7 V ! 11 -8 V ! 11 -7 V 11 -7 V - 11 -6 V 10 -7 V 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -6 V ! 11 -5 V 11 -6 V 10 -5 V 11 -5 V 11 -5 V - 11 -5 V - 11 -4 V - 11 -5 V - 11 -4 V 10 -4 V 11 -5 V 11 -4 V 11 -4 V ! 11 -3 V ! 11 -4 V ! 11 -4 V 11 -4 V 10 -3 V ! 11 -4 V ! 11 -3 V ! 11 -3 V ! 11 -3 V ! 11 -4 V 11 -3 V 11 -3 V 10 -3 V 11 -3 V 11 -3 V 11 -2 V ! 11 -3 V ! 11 -3 V ! 11 -3 V ! 10 -2 V ! 11 -3 V ! 11 -3 V 11 -2 V ! 11 -3 V 11 -2 V 11 -3 V ! 11 -2 V 10 -2 V 11 -3 V ! 11 -2 V ! 11 -2 V 11 -3 V 11 -2 V ! 11 -2 V 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -3 V 10 -2 V 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V - 11 -2 V 10 -2 V 11 -2 V 11 -2 V 11 -2 V 11 -2 V 11 -2 V 11 -2 V 11 -2 V 10 -1 V 11 -2 V ! 11 -2 V ! 11 -2 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{$c=1, \alpha=1.0, \beta=1.0$}} ! \put(1875,2276){\cjust{Levy Skew Distribution}} ! \put(1875,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3175,200){\cjust{4}} ! \put(2850,200){\cjust{3}} ! \put(2525,200){\cjust{2}} ! \put(2200,200){\cjust{1}} ! \put(1875,200){\cjust{0}} ! \put(1550,200){\cjust{-1}} ! \put(1225,200){\cjust{-2}} ! \put(900,200){\cjust{-3}} ! \put(575,200){\cjust{-4}} ! \put(250,200){\cjust{-5}} ! \put(200,300){\rjust{0}} \endGNUPLOTpicture --- 279,668 ---- 1.000 UL LTb ! 350 300 M 63 0 V ! 3037 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 660 300 M 0 63 V ! 0 1713 R 0 -63 V ! 970 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1280 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1590 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1900 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2210 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2520 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2830 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3140 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3100 0 V ! 0 1776 V ! -3100 0 V ! 350 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 350 300 M 10 0 V 11 0 V 10 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V ! 10 0 V ! 10 0 V 11 0 V 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 11 1 V + 10 0 V 11 0 V + 10 0 V 10 1 V 11 0 V ! 10 1 V 10 1 V 11 2 V + 10 1 V 11 2 V ! 10 3 V ! 10 3 V 11 4 V ! 10 4 V ! 10 5 V ! 11 7 V 10 7 V ! 10 9 V ! 11 10 V ! 10 12 V ! 11 13 V ! 10 15 V 10 17 V ! 11 19 V ! 10 21 V ! 10 23 V 11 25 V ! 10 28 V ! 11 30 V ! 10 32 V ! 10 34 V ! 11 37 V ! 10 39 V ! 10 40 V 11 43 V ! 10 44 V ! 10 46 V 11 47 V + 10 49 V 11 49 V ! 10 50 V ! 10 50 V 11 51 V ! 10 50 V ! 10 50 V ! 11 49 V ! 10 48 V 11 47 V ! 10 46 V ! 10 44 V 11 42 V ! 10 40 V 10 38 V ! 11 36 V ! 10 34 V ! 10 30 V ! 11 28 V ! 10 26 V ! 11 23 V ! 10 20 V ! 10 17 V ! 11 14 V ! 10 12 V ! 10 9 V 11 7 V ! 10 4 V ! 11 1 V ! 10 0 V 10 -3 V 11 -6 V ! 10 -7 V ! 10 -9 V 11 -11 V ! 10 -12 V ! 10 -14 V ! 11 -16 V 10 -17 V ! 11 -18 V ! 10 -19 V ! 10 -20 V 11 -20 V ! 10 -22 V ! 10 -22 V ! 11 -23 V ! 10 -23 V ! 10 -24 V ! 11 -23 V ! 10 -24 V 11 -24 V + 10 -25 V 10 -24 V 11 -24 V + 10 -24 V + 10 -24 V 11 -24 V 10 -23 V 11 -23 V ! 10 -23 V ! 10 -23 V 11 -22 V + 10 -22 V + 10 -21 V 11 -21 V ! 10 -21 V 10 -20 V + 11 -20 V + 10 -19 V 11 -19 V ! 10 -19 V ! 10 -18 V 11 -17 V 10 -17 V + 10 -17 V 11 -16 V ! 10 -16 V 11 -15 V ! 10 -15 V ! 10 -15 V 11 -14 V 10 -13 V ! 10 -14 V 11 -12 V ! 10 -13 V ! 10 -12 V 11 -12 V + 10 -11 V 11 -11 V ! 10 -11 V 10 -11 V 11 -10 V + 10 -9 V + 10 -10 V 11 -9 V 10 -9 V + 11 -9 V + 10 -8 V + 10 -8 V 11 -8 V ! 10 -8 V ! 10 -7 V 11 -7 V 10 -7 V + 10 -7 V + 11 -7 V + 10 -6 V 11 -6 V ! 10 -6 V ! 10 -6 V 11 -6 V 10 -5 V + 10 -6 V 11 -5 V + 10 -5 V 11 -5 V 10 -4 V + 10 -5 V 11 -5 V + 10 -4 V + 10 -4 V 11 -4 V + 10 -4 V + 10 -4 V 11 -4 V ! 10 -4 V 11 -4 V 10 -3 V ! 10 -4 V 11 -3 V + 10 -3 V + 10 -4 V 11 -3 V 10 -3 V 11 -3 V + 10 -3 V + 10 -3 V 11 -3 V + 10 -3 V + 10 -3 V 11 -2 V ! 10 -3 V ! 10 -3 V 11 -2 V ! 10 -3 V 11 -2 V + 10 -3 V + 10 -2 V 11 -3 V ! 10 -2 V 10 -2 V 11 -3 V ! 10 -2 V ! 10 -2 V 11 -3 V + 10 -2 V 11 -2 V ! 10 -2 V ! 10 -2 V 11 -2 V 10 -3 V 10 -2 V 11 -2 V 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V 11 -2 V + 10 -1 V 11 -2 V + 10 -2 V + 10 -2 V 11 -2 V + 10 -2 V + 10 -2 V 11 -2 V 10 -1 V 11 -2 V ! 10 -2 V ! 10 -2 V ! 11 -1 V ! 10 -2 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{$c=1, alpha=1.0, beta=1.0$}}% ! \put(1900,2226){\cjust{Levy Skew Distribution}}% ! \put(1900,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3140,200){\cjust{ 4}}% ! \put(2830,200){\cjust{ 3}}% ! \put(2520,200){\cjust{ 2}}% ! \put(2210,200){\cjust{ 1}}% ! \put(1900,200){\cjust{ 0}}% ! \put(1590,200){\cjust{-1}}% ! \put(1280,200){\cjust{-2}}% ! \put(970,200){\cjust{-3}}% ! \put(660,200){\cjust{-4}}% ! \put(350,200){\cjust{-5}}% ! \put(300,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-logarithmic.tex gsl-1.4/doc/rand-logarithmic.tex *** gsl-1.3/doc/rand-logarithmic.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-logarithmic.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-logarithmic.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-logarithmic.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,681 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 568 M ! 3150 0 R ! 350 836 M ! 3150 0 R ! 350 1104 M ! 3150 0 R ! 350 1372 M ! 3150 0 R ! 350 1640 M ! 3150 0 R ! 350 1908 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 493 300 M ! 0 1876 R ! 636 300 M 0 63 V ! 0 1813 R 0 -63 V ! 780 300 M ! 0 1876 R ! 923 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1066 300 M ! 0 1876 R ! 1209 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1352 300 M ! 0 1876 R ! 1495 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1639 300 M ! 0 1876 R ! 1782 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M ! 0 1876 R ! 2068 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2211 300 M ! 0 1876 R ! 2355 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2498 300 M ! 0 1876 R ! 2641 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2784 300 M ! 0 1876 R ! 2927 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3070 300 M ! 0 1876 R ! 3214 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3357 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 1558 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 929 845 L - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -290 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -121 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -59 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -31 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -18 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 0 -10 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V 0 -6 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 0 -4 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 0 -2 V stroke --- 279,689 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 554 M ! 3000 0 R ! 450 807 M ! 3000 0 R ! 450 1061 M ! 3000 0 R ! 450 1315 M ! 3000 0 R ! 450 1569 M ! 3000 0 R ! 450 1822 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 586 300 M ! 0 1776 R ! 723 300 M 0 63 V ! 0 1713 R 0 -63 V ! 859 300 M ! 0 1776 R ! 995 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1132 300 M ! 0 1776 R ! 1268 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1405 300 M ! 0 1776 R ! 1541 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1677 300 M ! 0 1776 R ! 1814 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M ! 0 1776 R ! 2086 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2223 300 M ! 0 1776 R ! 2359 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2495 300 M ! 0 1776 R ! 2632 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2768 300 M ! 0 1776 R ! 2905 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3041 300 M ! 0 1776 R ! 3177 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3314 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 1475 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -959 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -275 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -115 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 0 -55 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -30 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -16 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 0 -10 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 0 -6 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 0 -3 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 0 -2 V stroke *************** *** 683,714 **** end showpage ! } ! \put(3087,2063){\rjust{$p=0.7$}} ! \put(1925,2276){\cjust{Logarithmic Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3357,200){\cjust{10}} ! \put(3070,200){\cjust{9}} ! \put(2784,200){\cjust{8}} ! \put(2498,200){\cjust{7}} ! \put(2211,200){\cjust{6}} ! \put(1925,200){\cjust{5}} ! \put(1639,200){\cjust{4}} ! \put(1352,200){\cjust{3}} ! \put(1066,200){\cjust{2}} ! \put(780,200){\cjust{1}} ! \put(493,200){\cjust{0}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 691,724 ---- end showpage ! }}% ! \put(3037,1963){\rjust{$p=0.7$}}% ! \put(1950,2226){\cjust{Logarithmic Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3314,200){\cjust{ 10}}% ! \put(3041,200){\cjust{ 9}}% ! \put(2768,200){\cjust{ 8}}% ! \put(2495,200){\cjust{ 7}}% ! \put(2223,200){\cjust{ 6}}% ! \put(1950,200){\cjust{ 5}}% ! \put(1677,200){\cjust{ 4}}% ! \put(1405,200){\cjust{ 3}}% ! \put(1132,200){\cjust{ 2}}% ! \put(859,200){\cjust{ 1}}% ! \put(586,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-logistic.tex gsl-1.4/doc/rand-logistic.tex *** gsl-1.3/doc/rand-logistic.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-logistic.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-logistic.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:57 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-logistic.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,978 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 925 M 63 0 V ! 3087 0 R -63 0 V ! 350 1551 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 665 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1295 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2555 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3185 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 342 M ! 11 1 V 10 1 V - 11 2 V 10 1 V - 11 2 V 10 2 V ! 11 1 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 11 2 V 10 3 V ! 11 2 V 10 3 V - 11 2 V 10 3 V - 11 3 V 10 2 V - 11 3 V 10 3 V ! 11 3 V 10 4 V ! 11 3 V ! 11 3 V 10 4 V - 11 3 V 10 4 V ! 11 4 V 10 4 V - 11 4 V 10 4 V - 11 5 V 10 4 V - 11 5 V 10 5 V ! 11 5 V 10 5 V - 11 5 V 11 5 V 10 6 V ! 11 5 V 10 6 V - 11 6 V 10 7 V - 11 6 V 10 7 V - 11 6 V 10 7 V ! 11 8 V 10 7 V - 11 8 V - 11 7 V 10 8 V - 11 9 V 10 8 V ! 11 9 V 10 9 V - 11 9 V 10 10 V ! 11 9 V 10 10 V - 11 10 V 10 11 V ! 11 10 V 10 11 V 11 12 V - 11 11 V 10 12 V ! 11 12 V 10 13 V - 11 12 V 10 13 V - 11 13 V 10 14 V ! 11 14 V 10 14 V - 11 14 V 10 15 V - 11 15 V 10 15 V ! 11 16 V ! 11 15 V 10 17 V - 11 16 V 10 17 V - 11 17 V 10 17 V - 11 17 V 10 18 V ! 11 18 V 10 18 V - 11 18 V 10 19 V 11 19 V ! 11 19 V 10 19 V - 11 20 V 10 19 V - 11 20 V - 10 20 V - 11 20 V - 10 19 V - 11 21 V - 10 20 V - 11 20 V - 10 20 V - 11 20 V - 10 20 V - 11 20 V - 11 20 V - 10 20 V - 11 19 V - 10 20 V - 11 19 V 10 19 V ! 11 19 V 10 18 V - 11 18 V 10 18 V - 11 18 V 10 17 V ! 11 16 V 10 16 V - 11 16 V - 11 15 V 10 15 V ! 11 14 V 10 13 V - 11 13 V 10 12 V 11 11 V 10 11 V ! 11 10 V ! 10 9 V ! 11 9 V 10 7 V ! 11 7 V ! 11 6 V 10 5 V ! 11 5 V 10 3 V ! 11 3 V 10 1 V - 11 1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -3 V 10 -3 V ! 11 -5 V 10 -5 V ! 11 -6 V ! 11 -7 V 10 -7 V ! 11 -9 V ! 10 -9 V ! 11 -10 V 10 -11 V 11 -11 V 10 -12 V - 11 -13 V 10 -13 V ! 11 -14 V 10 -15 V - 11 -15 V - 11 -16 V 10 -16 V ! 11 -16 V 10 -17 V - 11 -18 V 10 -18 V - 11 -18 V 10 -18 V ! 11 -19 V 10 -19 V ! 11 -19 V ! 10 -20 V ! 11 -19 V ! 10 -20 V ! 11 -20 V ! 11 -20 V ! 10 -20 V ! 11 -20 V ! 10 -20 V ! 11 -20 V ! 10 -20 V ! 11 -21 V ! 10 -19 V ! 11 -20 V ! 10 -20 V ! 11 -20 V 10 -19 V - 11 -20 V 10 -19 V 11 -19 V - 11 -19 V 10 -19 V - 11 -18 V 10 -18 V ! 11 -18 V 10 -18 V - 11 -17 V 10 -17 V - 11 -17 V 10 -17 V - 11 -16 V 10 -17 V ! 11 -15 V ! 11 -16 V 10 -15 V - 11 -15 V 10 -15 V - 11 -14 V 10 -14 V ! 11 -14 V 10 -14 V - 11 -13 V 10 -13 V - 11 -12 V 10 -13 V ! 11 -12 V 10 -12 V - 11 -11 V 11 -12 V 10 -11 V - 11 -10 V 10 -11 V ! 11 -10 V 10 -10 V - 11 -9 V 10 -10 V - 11 -9 V 10 -9 V ! 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -7 V - 11 -8 V 10 -7 V ! 11 -8 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V - 11 -5 V 10 -5 V 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 519 M ! 11 3 V 10 3 V - 11 4 V 10 3 V ! 11 3 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 3 V ! 11 4 V ! 11 4 V 10 3 V - 11 4 V 10 4 V - 11 4 V 10 3 V ! 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V - 11 5 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 5 V - 11 4 V 10 4 V - 11 5 V 10 4 V - 11 5 V 10 4 V - 11 5 V 10 4 V ! 11 5 V 11 4 V 10 5 V - 11 5 V 10 4 V - 11 5 V 10 5 V - 11 5 V 10 4 V - 11 5 V 10 5 V - 11 5 V 10 5 V - 11 5 V - 11 5 V 10 4 V - 11 5 V 10 5 V ! 11 5 V 10 5 V - 11 5 V 10 5 V ! 11 5 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 5 V ! 11 5 V ! 11 5 V 10 5 V - 11 5 V 10 5 V - 11 6 V 10 5 V ! 11 5 V 10 5 V - 11 4 V 10 5 V - 11 5 V 10 5 V ! 11 5 V 10 5 V 11 5 V ! 11 5 V 10 5 V - 11 4 V 10 5 V - 11 5 V 10 5 V ! 11 4 V 10 5 V - 11 4 V 10 5 V ! 11 4 V 10 5 V - 11 4 V - 11 5 V 10 4 V ! 11 4 V 10 4 V ! 11 5 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 3 V 11 4 V 10 4 V ! 11 4 V 10 3 V - 11 4 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 3 V 10 2 V ! 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 10 1 V - 11 2 V 10 1 V ! 11 1 V 10 2 V 11 1 V 10 1 V - 11 1 V - 11 0 V 10 1 V - 11 1 V 10 0 V - 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 -1 V ! 11 0 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V 11 -1 V 10 -1 V - 11 -2 V - 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V ! 11 -5 V 10 -5 V ! 11 -4 V 10 -5 V ! 11 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -4 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -6 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V - 11 -4 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V 11 -4 V 10 -4 V - 11 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V ! 11 -4 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -3 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=2$}} ! \put(3087,2063){\rjust{$a=1$}} ! \put(1925,2276){\cjust{Logistic Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(3185,200){\cjust{4}} ! \put(2870,200){\cjust{3}} ! \put(2555,200){\cjust{2}} ! \put(2240,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1610,200){\cjust{-1}} ! \put(1295,200){\cjust{-2}} ! \put(980,200){\cjust{-3}} ! \put(665,200){\cjust{-4}} ! \put(350,200){\cjust{-5}} ! \put(300,2176){\rjust{0.3}} ! \put(300,1551){\rjust{0.2}} ! \put(300,925){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,988 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 892 M 63 0 V ! 2937 0 R -63 0 V ! 450 1484 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 750 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1350 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2550 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3150 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 339 M ! 10 2 V 10 1 V 10 1 V 10 2 V ! 10 1 V 10 2 V 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 1 V 10 2 V 10 2 V 11 2 V 10 3 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 3 V ! 10 2 V 10 3 V 10 3 V 10 2 V 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V 10 4 V ! 10 3 V ! 10 3 V 10 4 V 10 4 V ! 10 3 V 10 4 V 10 4 V 10 4 V 10 5 V ! 10 4 V ! 10 4 V ! 10 5 V ! 10 5 V ! 10 5 V 10 5 V 11 5 V 10 6 V ! 10 5 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 7 V 10 6 V 10 7 V 10 7 V 10 7 V ! 10 8 V 10 7 V 10 8 V 10 8 V ! 10 8 V ! 10 9 V ! 10 8 V 10 9 V 10 10 V ! 10 9 V ! 10 10 V ! 10 10 V ! 10 10 V 10 10 V 10 11 V ! 10 11 V ! 10 11 V 10 11 V 11 12 V 10 12 V ! 10 12 V ! 10 13 V ! 10 13 V 10 13 V 10 13 V 10 14 V ! 10 13 V ! 10 15 V 10 14 V 10 15 V 10 15 V ! 10 15 V ! 10 16 V ! 10 15 V ! 10 16 V ! 10 17 V ! 10 16 V 10 17 V 10 17 V 10 17 V 10 18 V ! 10 17 V ! 10 18 V ! 10 18 V ! 10 18 V ! 10 19 V 10 18 V 10 19 V 11 19 V ! 10 18 V 10 19 V 10 19 V 10 19 V ! 10 19 V ! 10 19 V ! 10 19 V ! 10 19 V ! 10 19 V ! 10 19 V ! 10 19 V ! 10 18 V ! 10 19 V ! 10 18 V 10 18 V 10 18 V 10 17 V ! 10 18 V ! 10 16 V ! 10 17 V ! 10 16 V 10 16 V 10 15 V ! 10 15 V ! 10 14 V ! 10 14 V ! 10 13 V 10 13 V 10 12 V 11 11 V 10 11 V ! 10 10 V ! 10 10 V ! 10 8 V ! 10 8 V ! 10 7 V 10 7 V ! 10 6 V 10 5 V ! 10 4 V 10 3 V ! 10 2 V ! 10 2 V 10 1 V 10 0 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -3 V ! 10 -4 V 10 -5 V ! 10 -6 V 10 -7 V ! 10 -7 V ! 10 -8 V ! 10 -8 V ! 10 -10 V ! 10 -10 V 10 -11 V 11 -11 V 10 -12 V 10 -13 V ! 10 -13 V ! 10 -14 V ! 10 -14 V ! 10 -15 V 10 -15 V 10 -16 V ! 10 -16 V ! 10 -17 V ! 10 -16 V ! 10 -18 V 10 -17 V 10 -18 V 10 -18 V ! 10 -18 V 10 -19 V ! 10 -18 V 10 -19 V 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -18 V 11 -19 V 10 -19 V 10 -18 V ! 10 -19 V ! 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -17 V 10 -18 V 10 -17 V 10 -17 V 10 -17 V ! 10 -16 V ! 10 -17 V ! 10 -16 V ! 10 -15 V ! 10 -16 V ! 10 -15 V 10 -15 V 10 -15 V 10 -14 V ! 10 -15 V ! 10 -13 V 10 -14 V 10 -13 V 10 -13 V ! 10 -13 V ! 10 -13 V ! 10 -12 V 10 -12 V 11 -12 V 10 -11 V 10 -11 V ! 10 -11 V ! 10 -11 V ! 10 -10 V ! 10 -10 V 10 -10 V 10 -10 V 10 -9 V ! 10 -10 V ! 10 -9 V ! 10 -8 V ! 10 -9 V ! 10 -8 V 10 -8 V 10 -8 V 10 -7 V ! 10 -8 V 10 -7 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -5 V + 10 -6 V 11 -5 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -4 V ! 10 -5 V 10 -4 V 10 -4 V 10 -4 V ! 10 -3 V ! 10 -4 V 10 -4 V 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 10 -3 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V + 10 -3 V 11 -2 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -2 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 508 M ! 10 2 V 10 3 V 10 3 V ! 10 4 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V ! 10 4 V ! 10 3 V 10 3 V 10 4 V 10 3 V ! 11 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 5 V 10 4 V 10 4 V 10 4 V 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 5 V 11 4 V + 10 4 V + 10 5 V + 10 4 V 10 5 V 10 4 V 10 5 V 10 4 V 10 5 V 10 5 V 10 4 V 10 5 V ! 10 4 V 10 5 V 10 5 V ! 10 4 V 10 5 V 10 5 V 10 5 V ! 10 4 V 10 5 V 10 5 V 10 5 V ! 10 4 V 10 5 V 10 5 V 10 5 V ! 10 4 V ! 10 5 V 10 5 V 11 5 V ! 10 4 V 10 5 V 10 5 V 10 5 V ! 10 4 V 10 5 V 10 5 V ! 10 4 V ! 10 5 V 10 5 V 10 4 V ! 10 5 V 10 4 V ! 10 5 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 5 V 10 4 V 10 4 V 10 3 V 11 4 V 10 4 V ! 10 4 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 3 V ! 10 4 V ! 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 2 V ! 10 3 V 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V ! 10 3 V 10 2 V 10 2 V 10 2 V 10 1 V ! 10 2 V 10 2 V 11 1 V + 10 2 V + 10 1 V + 10 1 V + 10 1 V + 10 1 V + 10 1 V 10 1 V 10 1 V 10 0 V 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 -1 V 10 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -2 V 11 -1 V + 10 -2 V + 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V 10 -4 V 11 -4 V + 10 -3 V + 10 -4 V + 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 10 -5 V ! 10 -4 V 11 -5 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -4 V 10 -5 V 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -5 V 10 -4 V 11 -4 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -5 V + 10 -4 V + 10 -4 V + 10 -4 V + 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 11 -3 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -2 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=2$}}% ! \put(3037,1963){\rjust{$a=1$}}% ! \put(1950,2226){\cjust{Logistic Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(3150,200){\cjust{ 4}}% ! \put(2850,200){\cjust{ 3}}% ! \put(2550,200){\cjust{ 2}}% ! \put(2250,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1650,200){\cjust{-1}}% ! \put(1350,200){\cjust{-2}}% ! \put(1050,200){\cjust{-3}}% ! \put(750,200){\cjust{-4}}% ! \put(450,200){\cjust{-5}}% ! \put(400,2076){\rjust{ 0.3}}% ! \put(400,1484){\rjust{ 0.2}}% ! \put(400,892){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-lognormal.tex gsl-1.4/doc/rand-lognormal.tex *** gsl-1.3/doc/rand-lognormal.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-lognormal.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-lognormal.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:57 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-lognormal.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,961 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 568 M 63 0 V ! 3087 0 R -63 0 V ! 350 836 M 63 0 V ! 3087 0 R -63 0 V ! 350 1104 M 63 0 V ! 3087 0 R -63 0 V ! 350 1372 M 63 0 V ! 3087 0 R -63 0 V ! 350 1640 M 63 0 V ! 3087 0 R -63 0 V ! 350 1908 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1400 300 M 0 63 V ! 0 1813 R 0 -63 V 2450 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 361 303 M ! 10 23 V ! 11 51 V ! 10 74 V ! 11 91 V ! 10 101 V ! 11 104 V ! 10 106 V ! 11 104 V ! 10 101 V ! 11 96 V ! 10 91 V ! 11 85 V ! 10 79 V ! 11 73 V ! 11 68 V ! 10 62 V ! 11 57 V ! 10 51 V ! 11 47 V ! 10 42 V ! 11 38 V ! 10 34 V ! 11 30 V ! 10 27 V ! 11 24 V ! 10 20 V ! 11 18 V ! 11 15 V ! 10 13 V ! 11 10 V 10 9 V ! 11 6 V ! 10 5 V ! 11 3 V ! 10 1 V ! 11 1 V 10 -1 V ! 11 -3 V ! 10 -3 V ! 11 -4 V 10 -5 V ! 11 -6 V 11 -7 V 10 -8 V ! 11 -8 V 10 -9 V - 11 -9 V 10 -10 V ! 11 -10 V 10 -11 V - 11 -11 V 10 -11 V - 11 -12 V 10 -11 V - 11 -12 V - 11 -13 V 10 -12 V ! 11 -13 V ! 10 -13 V ! 11 -12 V ! 10 -13 V ! 11 -13 V ! 10 -14 V ! 11 -13 V 10 -13 V ! 11 -13 V 10 -13 V - 11 -14 V 10 -13 V ! 11 -13 V ! 11 -13 V 10 -13 V ! 11 -13 V 10 -13 V ! 11 -13 V 10 -13 V ! 11 -13 V 10 -13 V - 11 -13 V 10 -12 V - 11 -13 V 10 -12 V - 11 -13 V 10 -12 V - 11 -12 V - 11 -12 V 10 -12 V - 11 -12 V 10 -12 V ! 11 -12 V 10 -11 V - 11 -12 V 10 -11 V - 11 -12 V 10 -11 V - 11 -11 V 10 -11 V - 11 -11 V - 11 -10 V 10 -11 V - 11 -11 V 10 -10 V - 11 -10 V 10 -11 V ! 11 -10 V 10 -10 V 11 -10 V 10 -9 V - 11 -10 V 10 -10 V - 11 -9 V 10 -9 V - 11 -10 V - 11 -9 V 10 -9 V - 11 -9 V 10 -9 V - 11 -8 V 10 -9 V ! 11 -9 V 10 -8 V - 11 -9 V 10 -8 V - 11 -8 V 10 -8 V - 11 -8 V 10 -8 V - 11 -8 V - 11 -8 V - 10 -7 V - 11 -8 V 10 -7 V ! 11 -8 V 10 -7 V - 11 -7 V 10 -8 V ! 11 -7 V 10 -7 V 11 -7 V 10 -6 V ! 11 -7 V ! 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -6 V 10 -7 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V ! 11 -6 V ! 11 -5 V 10 -6 V - 11 -6 V 10 -5 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -6 V 10 -5 V - 11 -4 V - 11 -5 V 10 -5 V 11 -5 V 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -3 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -4 V 10 -3 V 11 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 10 -2 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V ! 11 -1 V 10 -2 V 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 361 300 M 10 0 V ! 11 1 V ! 10 3 V ! 11 3 V 10 6 V ! 11 6 V ! 10 8 V ! 11 9 V 10 10 V ! 11 11 V 10 12 V ! 11 12 V 10 13 V - 11 14 V - 11 14 V - 10 14 V - 11 14 V 10 14 V ! 11 15 V 10 14 V - 11 14 V 10 14 V ! 11 14 V 10 14 V - 11 14 V 10 13 V ! 11 14 V ! 11 13 V 10 12 V ! 11 13 V 10 12 V ! 11 12 V 10 12 V - 11 11 V 10 11 V ! 11 11 V 10 10 V - 11 11 V 10 9 V - 11 10 V 10 9 V 11 9 V ! 11 9 V ! 10 9 V ! 11 8 V 10 8 V - 11 8 V 10 7 V - 11 7 V 10 7 V ! 11 7 V 10 6 V ! 11 6 V 10 6 V ! 11 6 V ! 11 6 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 4 V - 11 5 V 10 4 V ! 11 4 V 10 4 V ! 11 3 V 10 4 V - 11 3 V 10 3 V ! 11 3 V ! 11 3 V 10 3 V - 11 2 V 10 3 V ! 11 2 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 2 V ! 11 1 V 10 2 V - 11 1 V 10 1 V ! 11 1 V ! 11 2 V 10 0 V - 11 1 V 10 1 V - 11 1 V 10 0 V ! 11 1 V 10 0 V - 11 1 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -1 V 11 -2 V 10 -1 V ! 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -1 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V 11 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V 11 -1 V 10 -1 V - 11 -2 V 10 -1 V 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$\zeta=1, \sigma=1$}} ! \put(3087,2063){\rjust{$\zeta=0, \sigma=1$}} ! \put(1925,2276){\cjust{Lognormal Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{3}} ! \put(2450,200){\cjust{2}} ! \put(1400,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,971 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 554 M 63 0 V ! 2937 0 R -63 0 V ! 450 807 M 63 0 V ! 2937 0 R -63 0 V ! 450 1061 M 63 0 V ! 2937 0 R -63 0 V ! 450 1315 M 63 0 V ! 2937 0 R -63 0 V ! 450 1569 M 63 0 V ! 2937 0 R -63 0 V ! 450 1822 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1450 300 M 0 63 V ! 0 1713 R 0 -63 V 2450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 460 303 M ! 10 21 V ! 10 49 V ! 10 70 V ! 10 86 V ! 10 95 V ! 10 100 V ! 10 100 V ! 10 98 V ! 10 96 V ! 10 90 V ! 10 86 V ! 10 81 V ! 10 75 V ! 11 69 V ! 10 64 V ! 10 59 V ! 10 54 V ! 10 48 V ! 10 45 V ! 10 40 V ! 10 36 V ! 10 32 V ! 10 28 V ! 10 26 V ! 10 22 V ! 10 19 V ! 10 17 V ! 10 15 V ! 10 12 V 10 9 V ! 10 8 V ! 10 7 V ! 10 4 V ! 10 3 V ! 10 2 V ! 10 0 V 10 -1 V ! 10 -2 V ! 10 -4 V ! 10 -4 V 10 -5 V ! 10 -5 V ! 10 -7 V 11 -7 V 10 -8 V ! 10 -8 V ! 10 -9 V 10 -9 V 10 -10 V ! 10 -10 V ! 10 -10 V ! 10 -11 V 10 -11 V 10 -11 V 10 -11 V 10 -12 V ! 10 -12 V ! 10 -12 V ! 10 -12 V ! 10 -12 V ! 10 -12 V 10 -13 V ! 10 -12 V ! 10 -12 V 10 -13 V 10 -13 V ! 10 -12 V 10 -13 V ! 10 -12 V 10 -13 V ! 10 -12 V ! 10 -12 V 10 -13 V ! 11 -12 V 10 -13 V 10 -12 V 10 -12 V 10 -12 V 10 -12 V 10 -12 V ! 10 -12 V ! 10 -12 V ! 10 -11 V ! 10 -12 V ! 10 -12 V ! 10 -11 V ! 10 -11 V ! 10 -12 V 10 -11 V 10 -11 V 10 -11 V 10 -11 V 10 -11 V 10 -10 V 10 -11 V ! 10 -10 V ! 10 -11 V ! 10 -10 V ! 10 -10 V ! 10 -10 V ! 10 -10 V ! 10 -10 V 10 -10 V 11 -10 V 10 -9 V 10 -10 V 10 -9 V 10 -9 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V ! 10 -9 V ! 10 -8 V ! 10 -8 V ! 10 -9 V 10 -8 V 10 -8 V 10 -8 V 10 -8 V 10 -7 V ! 10 -8 V ! 10 -8 V 10 -7 V 10 -8 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -7 V 11 -7 V + 10 -7 V + 10 -7 V + 10 -7 V 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V 10 -6 V 10 -7 V 10 -6 V 10 -6 V 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -5 V 10 -6 V 10 -5 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -6 V 10 -5 V 10 -5 V 11 -5 V + 10 -4 V 10 -5 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 10 -4 V 10 -5 V 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V 10 -3 V 11 -4 V 10 -4 V ! 10 -3 V ! 10 -3 V 10 -4 V ! 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 10 -3 V 11 -2 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 11 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 11 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 460 300 M 10 0 V ! 10 1 V ! 10 2 V ! 10 4 V ! 10 5 V 10 6 V ! 10 7 V ! 10 9 V ! 10 10 V 10 10 V ! 10 11 V ! 10 12 V 10 12 V ! 11 13 V ! 10 13 V 10 13 V 10 14 V ! 10 13 V 10 14 V 10 14 V ! 10 13 V 10 14 V 10 13 V ! 10 13 V ! 10 13 V ! 10 13 V 10 12 V ! 10 13 V 10 12 V ! 10 11 V 10 12 V 10 11 V ! 10 11 V ! 10 11 V ! 10 11 V ! 10 10 V ! 10 10 V ! 10 9 V 10 10 V 10 9 V 10 9 V + 10 8 V + 10 8 V 11 9 V ! 10 7 V 10 8 V 10 7 V 10 7 V ! 10 7 V 10 6 V ! 10 7 V 10 6 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 5 V 10 5 V 10 5 V 10 4 V 10 4 V ! 10 5 V 10 4 V ! 10 3 V 10 4 V 10 3 V ! 10 4 V 10 3 V 10 3 V ! 10 3 V ! 10 2 V ! 10 3 V ! 10 2 V ! 11 3 V ! 10 2 V ! 10 2 V 10 2 V 10 2 V ! 10 1 V 10 2 V ! 10 1 V 10 2 V 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 0 V 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V + 10 0 V + 10 -1 V 11 0 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -2 V ! 10 -1 V ! 10 -1 V 10 -1 V 11 -2 V 10 -1 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V 11 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 11 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 11 -1 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 11 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V 10 -1 V 10 -1 V 11 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$zeta=1, sigma=1$}}% ! \put(3037,1963){\rjust{$zeta=0, sigma=1$}}% ! \put(1950,2226){\cjust{Lognormal Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 3}}% ! \put(2450,200){\cjust{ 2}}% ! \put(1450,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-nbinomial.tex gsl-1.4/doc/rand-nbinomial.tex *** gsl-1.3/doc/rand-nbinomial.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-nbinomial.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-nbinomial.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:50:00 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-nbinomial.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,702 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 925 M ! 3150 0 R ! 350 1551 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 493 300 M ! 0 1876 R ! 636 300 M 0 63 V ! 0 1813 R 0 -63 V ! 780 300 M ! 0 1876 R ! 923 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1066 300 M ! 0 1876 R ! 1209 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1352 300 M ! 0 1876 R ! 1495 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1639 300 M ! 0 1876 R ! 1782 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M ! 0 1876 R ! 2068 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2211 300 M ! 0 1876 R ! 2355 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2498 300 M ! 0 1876 R ! 2641 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2784 300 M ! 0 1876 R ! 2927 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3070 300 M ! 0 1876 R ! 3214 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3357 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 853 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 414 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 121 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -90 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -187 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -203 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 0 -177 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -139 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V - 0 -100 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 0 -69 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 0 -46 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V ! 0 -30 V stroke grestore end showpage ! } ! \put(3087,2063){\rjust{$p=0.5,n=3.5$}} ! \put(1925,2276){\cjust{Negative Binomial Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3357,200){\cjust{10}} ! \put(3070,200){\cjust{9}} ! \put(2784,200){\cjust{8}} ! \put(2498,200){\cjust{7}} ! \put(2211,200){\cjust{6}} ! \put(1925,200){\cjust{5}} ! \put(1639,200){\cjust{4}} ! \put(1352,200){\cjust{3}} ! \put(1066,200){\cjust{2}} ! \put(780,200){\cjust{1}} ! \put(493,200){\cjust{0}} ! \put(300,2176){\rjust{0.3}} ! \put(300,1551){\rjust{0.2}} ! \put(300,925){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,712 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 892 M ! 3000 0 R ! 450 1484 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 586 300 M ! 0 1776 R ! 723 300 M 0 63 V ! 0 1713 R 0 -63 V ! 859 300 M ! 0 1776 R ! 995 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1132 300 M ! 0 1776 R ! 1268 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1405 300 M ! 0 1776 R ! 1541 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1677 300 M ! 0 1776 R ! 1814 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M ! 0 1776 R ! 2086 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2223 300 M ! 0 1776 R ! 2359 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2495 300 M ! 0 1776 R ! 2632 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2768 300 M ! 0 1776 R ! 2905 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3041 300 M ! 0 1776 R ! 3177 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3314 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 823 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 393 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 114 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 -86 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 0 -177 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V ! 0 -191 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V + 0 -168 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 -131 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -95 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -66 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -43 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 0 -28 V stroke grestore end showpage ! }}% ! \put(3037,1963){\rjust{$p=0.5,n=3.5$}}% ! \put(1950,2226){\cjust{Negative Binomial Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3314,200){\cjust{ 10}}% ! \put(3041,200){\cjust{ 9}}% ! \put(2768,200){\cjust{ 8}}% ! \put(2495,200){\cjust{ 7}}% ! \put(2223,200){\cjust{ 6}}% ! \put(1950,200){\cjust{ 5}}% ! \put(1677,200){\cjust{ 4}}% ! \put(1405,200){\cjust{ 3}}% ! \put(1132,200){\cjust{ 2}}% ! \put(859,200){\cjust{ 1}}% ! \put(586,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.3}}% ! \put(400,1484){\rjust{ 0.2}}% ! \put(400,892){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-pareto.tex gsl-1.4/doc/rand-pareto.tex *** gsl-1.3/doc/rand-pareto.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-pareto.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-pareto.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:57 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-pareto.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,958 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 769 M 63 0 V ! 3087 0 R -63 0 V ! 350 1238 M 63 0 V ! 3087 0 R -63 0 V ! 350 1707 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V ! 10 932 V ! 11 -31 V ! 10 -28 V ! 11 -28 V 10 -26 V ! 11 -25 V ! 10 -24 V ! 11 -23 V 10 -22 V - 11 -20 V 10 -20 V ! 11 -20 V ! 11 -18 V 10 -18 V - 11 -16 V 10 -17 V 11 -15 V 10 -15 V - 11 -15 V 10 -14 V ! 11 -13 V 10 -13 V ! 11 -12 V 10 -12 V - 11 -12 V 10 -11 V ! 11 -10 V ! 11 -11 V 10 -10 V - 11 -10 V 10 -9 V - 11 -9 V 10 -9 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -8 V - 11 -7 V 10 -8 V ! 11 -7 V ! 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -5 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V ! 11 -4 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 0 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 0 V ! 11 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V ! 11 0 V ! 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V 11 0 V 10 -1 V ! 11 0 V 10 -1 V 11 0 V 10 -1 V 11 0 V 10 -1 V 11 0 V - 11 -1 V 10 0 V - 11 -1 V 10 0 V - 11 0 V - 10 -1 V - 11 0 V - 10 -1 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 -1 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 -1 V 10 0 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V - 11 -1 V 10 0 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V ! 11 0 V ! 11 -1 V 10 0 V 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 0 V - 10 -1 V - 11 0 V 10 0 V - 11 0 V - 1.000 UL - LT1 - 3137 1963 M - 263 0 V - 350 300 M - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V ! 10 1388 V ! 11 -45 V 10 -43 V ! 11 -42 V ! 10 -40 V ! 11 -39 V 10 -37 V - 11 -35 V 10 -35 V ! 11 -32 V ! 11 -32 V 10 -30 V ! 11 -30 V ! 10 -28 V ! 11 -27 V 10 -26 V ! 11 -25 V ! 10 -25 V ! 11 -23 V 10 -23 V - 11 -22 V 10 -21 V ! 11 -20 V ! 11 -20 V 10 -18 V - 11 -19 V 10 -17 V - 11 -17 V 10 -17 V ! 11 -16 V 10 -15 V - 11 -15 V 10 -15 V ! 11 -14 V 10 -13 V ! 11 -13 V 10 -13 V - 11 -12 V - 11 -12 V 10 -12 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -10 V - 11 -10 V 10 -10 V - 11 -9 V 10 -9 V 11 -9 V 10 -8 V ! 11 -8 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V ! 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V - 11 -5 V 10 -6 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -4 V 11 -4 V 10 -4 V - 11 -4 V 10 -3 V - 11 -4 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V 11 -1 V 10 0 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=3, b=2 $}} ! \put(3087,2063){\rjust{$a=1, b=1$}} ! \put(1925,2276){\cjust{Pareto Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{2}} ! \put(300,1707){\rjust{1.5}} ! \put(300,1238){\rjust{1}} ! \put(300,769){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,968 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 744 M 63 0 V ! 2937 0 R -63 0 V ! 450 1188 M 63 0 V ! 2937 0 R -63 0 V ! 450 1632 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 882 V ! 10 -29 V ! 10 -27 V 10 -26 V ! 10 -25 V ! 10 -23 V ! 10 -23 V 10 -22 V 10 -20 V ! 10 -20 V ! 10 -19 V 10 -18 V 10 -17 V + 10 -17 V + 10 -16 V 11 -15 V 10 -15 V 10 -14 V ! 10 -14 V 10 -13 V ! 10 -13 V ! 10 -12 V 10 -12 V 10 -11 V ! 10 -11 V ! 10 -10 V ! 10 -11 V ! 10 -9 V 10 -10 V 10 -9 V 10 -9 V ! 10 -9 V 10 -8 V 10 -8 V 10 -8 V ! 10 -7 V ! 10 -7 V ! 10 -8 V 10 -6 V ! 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V ! 10 -5 V ! 11 -6 V ! 10 -5 V 10 -6 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -4 V ! 10 -5 V 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V + 10 -3 V 11 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -2 V 11 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 11 0 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V 10 0 V 10 -1 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V ! 10 0 V 10 -1 V 11 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V 10 -1 V 11 0 V 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V 11 0 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 -1 V + 10 0 V + 10 0 V + 10 0 V 10 -1 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 1.000 UL + LT1 + 3087 1863 M + 263 0 V + 450 300 M + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1314 V 10 -43 V ! 10 -41 V ! 10 -39 V ! 10 -38 V 10 -37 V 10 -35 V ! 10 -33 V ! 10 -33 V ! 10 -31 V 10 -30 V ! 10 -29 V ! 10 -27 V ! 10 -27 V 10 -26 V ! 11 -24 V ! 10 -24 V ! 10 -23 V 10 -23 V 10 -21 V ! 10 -21 V ! 10 -19 V ! 10 -20 V ! 10 -18 V 10 -18 V 10 -17 V 10 -17 V ! 10 -16 V ! 10 -16 V 10 -15 V 10 -15 V ! 10 -14 V 10 -13 V ! 10 -14 V ! 10 -12 V 10 -13 V 10 -12 V 10 -11 V ! 10 -12 V ! 10 -11 V ! 10 -10 V ! 10 -10 V 10 -10 V 10 -10 V 10 -9 V 11 -9 V + 10 -9 V + 10 -9 V + 10 -8 V + 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V ! 10 -5 V 10 -6 V 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V 10 -5 V 10 -4 V 11 -4 V + 10 -3 V + 10 -4 V + 10 -4 V + 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V + 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V 11 -1 V + 10 -1 V + 10 -1 V 10 0 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V 10 -1 V 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V 11 -1 V 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=3, b=2 $}}% ! \put(3037,1963){\rjust{$a=1, b=1$}}% ! \put(1950,2226){\cjust{Pareto Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 2}}% ! \put(400,1632){\rjust{ 1.5}}% ! \put(400,1188){\rjust{ 1}}% ! \put(400,744){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-pascal.tex gsl-1.4/doc/rand-pascal.tex *** gsl-1.3/doc/rand-pascal.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-pascal.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-pascal.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:50:00 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-pascal.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,672 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 925 M ! 3150 0 R ! 350 1551 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 493 300 M ! 0 1876 R ! 636 300 M 0 63 V ! 0 1813 R 0 -63 V ! 780 300 M ! 0 1876 R ! 923 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1066 300 M ! 0 1876 R ! 1209 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1352 300 M ! 0 1876 R ! 1495 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1639 300 M ! 0 1876 R ! 1782 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M ! 0 1876 R ! 2068 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2211 300 M ! 0 1876 R ! 2355 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2498 300 M ! 0 1876 R ! 2641 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2784 300 M ! 0 1876 R ! 2927 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3070 300 M ! 0 1876 R ! 3214 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3357 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 1082 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 391 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -196 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -244 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -220 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -171 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -122 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V - 0 -83 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 0 -53 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V - 0 -34 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 0 -20 V stroke --- 279,680 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 892 M ! 3000 0 R ! 450 1484 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 586 300 M ! 0 1776 R ! 723 300 M 0 63 V ! 0 1713 R 0 -63 V ! 859 300 M ! 0 1776 R ! 995 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1132 300 M ! 0 1776 R ! 1268 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1405 300 M ! 0 1776 R ! 1541 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1677 300 M ! 0 1776 R ! 1814 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M ! 0 1776 R ! 2086 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2223 300 M ! 0 1776 R ! 2359 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2495 300 M ! 0 1776 R ! 2632 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2768 300 M ! 0 1776 R ! 2905 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3041 300 M ! 0 1776 R ! 3177 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3314 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 1040 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 370 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -185 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -231 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V ! 0 -208 V 10 0 V 10 0 V 10 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -162 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -116 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -78 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -50 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -32 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 0 -20 V stroke *************** *** 674,701 **** end showpage ! } ! \put(3087,2063){\rjust{$p=0.5,n=3$}} ! \put(1925,2276){\cjust{Pascal Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3357,200){\cjust{10}} ! \put(3070,200){\cjust{9}} ! \put(2784,200){\cjust{8}} ! \put(2498,200){\cjust{7}} ! \put(2211,200){\cjust{6}} ! \put(1925,200){\cjust{5}} ! \put(1639,200){\cjust{4}} ! \put(1352,200){\cjust{3}} ! \put(1066,200){\cjust{2}} ! \put(780,200){\cjust{1}} ! \put(493,200){\cjust{0}} ! \put(300,2176){\rjust{0.3}} ! \put(300,1551){\rjust{0.2}} ! \put(300,925){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 682,711 ---- end showpage ! }}% ! \put(3037,1963){\rjust{$p=0.5,n=3$}}% ! \put(1950,2226){\cjust{Pascal Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3314,200){\cjust{ 10}}% ! \put(3041,200){\cjust{ 9}}% ! \put(2768,200){\cjust{ 8}}% ! \put(2495,200){\cjust{ 7}}% ! \put(2223,200){\cjust{ 6}}% ! \put(1950,200){\cjust{ 5}}% ! \put(1677,200){\cjust{ 4}}% ! \put(1405,200){\cjust{ 3}}% ! \put(1132,200){\cjust{ 2}}% ! \put(859,200){\cjust{ 1}}% ! \put(586,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.3}}% ! \put(400,1484){\rjust{ 0.2}}% ! \put(400,892){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-poisson.tex gsl-1.4/doc/rand-poisson.tex *** gsl-1.3/doc/rand-poisson.tex Mon Dec 10 19:24:36 2001 --- gsl-1.4/doc/rand-poisson.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-poisson.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-poisson.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,673 **** 1.000 UL LTb ! 350 300 M ! 3150 0 R ! 350 925 M ! 3150 0 R ! 350 1551 M ! 3150 0 R ! 350 2176 M ! 3150 0 R ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 493 300 M ! 0 1876 R ! 636 300 M 0 63 V ! 0 1813 R 0 -63 V ! 780 300 M ! 0 1876 R ! 923 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1066 300 M ! 0 1876 R ! 1209 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1352 300 M ! 0 1876 R ! 1495 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1639 300 M ! 0 1876 R ! 1782 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M ! 0 1876 R ! 2068 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2211 300 M ! 0 1876 R ! 2355 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2498 300 M ! 0 1876 R ! 2641 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2784 300 M ! 0 1876 R ! 2927 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3070 300 M ! 0 1876 R ! 3214 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3357 300 M ! 0 1876 R ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 813 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 770 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 321 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -267 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -502 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -417 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 0 -244 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 0 -112 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V - 0 -43 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 0 -14 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 10 0 V 11 0 V 11 0 V 0 -4 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V 10 0 V ! 11 0 V 0 -1 V stroke --- 279,681 ---- 1.000 UL LTb ! 450 300 M ! 3000 0 R ! 450 892 M ! 3000 0 R ! 450 1484 M ! 3000 0 R ! 450 2076 M ! 3000 0 R ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 586 300 M ! 0 1776 R ! 723 300 M 0 63 V ! 0 1713 R 0 -63 V ! 859 300 M ! 0 1776 R ! 995 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1132 300 M ! 0 1776 R ! 1268 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1405 300 M ! 0 1776 R ! 1541 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1677 300 M ! 0 1776 R ! 1814 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M ! 0 1776 R ! 2086 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2223 300 M ! 0 1776 R ! 2359 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2495 300 M ! 0 1776 R ! 2632 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2768 300 M ! 0 1776 R ! 2905 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3041 300 M ! 0 1776 R ! 3177 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3314 300 M ! 0 1776 R ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 786 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 729 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 304 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -254 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 0 -474 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V + 0 -396 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -230 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -106 V + 10 0 V + 10 0 V + 10 0 V 11 0 V 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -41 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 0 -13 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 0 -4 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 0 -1 V stroke *************** *** 675,702 **** end showpage ! } ! \put(3087,2063){\rjust{$\mu=2.5$}} ! \put(1925,2276){\cjust{Poisson Distribution}} ! \put(1925,100){\cjust{$k$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3357,200){\cjust{10}} ! \put(3070,200){\cjust{9}} ! \put(2784,200){\cjust{8}} ! \put(2498,200){\cjust{7}} ! \put(2211,200){\cjust{6}} ! \put(1925,200){\cjust{5}} ! \put(1639,200){\cjust{4}} ! \put(1352,200){\cjust{3}} ! \put(1066,200){\cjust{2}} ! \put(780,200){\cjust{1}} ! \put(493,200){\cjust{0}} ! \put(300,2176){\rjust{0.3}} ! \put(300,1551){\rjust{0.2}} ! \put(300,925){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 683,712 ---- end showpage ! }}% ! \put(3037,1963){\rjust{$mu=2.5$}}% ! \put(1950,2226){\cjust{Poisson Distribution}}% ! \put(1950,50){\cjust{$k$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3314,200){\cjust{ 10}}% ! \put(3041,200){\cjust{ 9}}% ! \put(2768,200){\cjust{ 8}}% ! \put(2495,200){\cjust{ 7}}% ! \put(2223,200){\cjust{ 6}}% ! \put(1950,200){\cjust{ 5}}% ! \put(1677,200){\cjust{ 4}}% ! \put(1405,200){\cjust{ 3}}% ! \put(1132,200){\cjust{ 2}}% ! \put(859,200){\cjust{ 1}}% ! \put(586,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.3}}% ! \put(400,1484){\rjust{ 0.2}}% ! \put(400,892){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-rayleigh-tail.tex gsl-1.4/doc/rand-rayleigh-tail.tex *** gsl-1.3/doc/rand-rayleigh-tail.tex Mon Dec 10 19:24:37 2001 --- gsl-1.4/doc/rand-rayleigh-tail.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-rayleigh-tail.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:57 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-rayleigh-tail.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,988 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 472 M 63 0 V ! 3087 0 R -63 0 V ! 350 644 M 63 0 V ! 3087 0 R -63 0 V ! 350 816 M 63 0 V ! 3087 0 R -63 0 V ! 350 988 M 63 0 V ! 3087 0 R -63 0 V ! 350 1161 M 63 0 V ! 3087 0 R -63 0 V ! 350 1333 M 63 0 V ! 3087 0 R -63 0 V ! 350 1505 M 63 0 V ! 3087 0 R -63 0 V ! 350 1677 M 63 0 V ! 3087 0 R -63 0 V ! 350 1849 M 63 0 V ! 3087 0 R -63 0 V ! 350 2021 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V 11 0 V ! 10 1721 V ! 11 -1 V ! 10 -1 V ! 11 -3 V 10 -3 V - 11 -5 V 10 -5 V ! 11 -6 V 10 -7 V ! 11 -7 V 10 -9 V ! 11 -9 V ! 11 -10 V 10 -11 V ! 11 -11 V 10 -12 V - 11 -13 V 10 -13 V ! 11 -14 V 10 -15 V - 11 -15 V 10 -15 V ! 11 -16 V 10 -17 V ! 11 -17 V 10 -17 V ! 11 -18 V ! 11 -18 V 10 -19 V - 11 -19 V 10 -19 V - 11 -19 V 10 -20 V ! 11 -20 V 10 -20 V - 11 -21 V 10 -20 V - 11 -21 V - 10 -21 V - 11 -21 V - 11 -21 V - 10 -21 V - 11 -21 V - 10 -21 V - 11 -21 V - 10 -21 V - 11 -22 V - 10 -21 V - 11 -21 V - 10 -21 V - 11 -21 V 10 -20 V - 11 -21 V - 10 -21 V - 11 -20 V - 11 -20 V 10 -20 V 11 -20 V 10 -20 V - 11 -19 V 10 -20 V ! 11 -19 V 10 -19 V - 11 -18 V 10 -19 V ! 11 -18 V 10 -17 V - 11 -18 V 10 -17 V - 11 -17 V - 11 -17 V 10 -17 V - 11 -16 V 10 -16 V ! 11 -16 V 10 -15 V - 11 -15 V 10 -15 V ! 11 -14 V 10 -14 V - 11 -14 V 10 -14 V - 11 -13 V - 11 -13 V 10 -13 V ! 11 -12 V 10 -12 V - 11 -12 V 10 -12 V ! 11 -11 V 10 -11 V - 11 -10 V 10 -11 V ! 11 -10 V 10 -10 V - 11 -9 V 10 -10 V ! 11 -9 V ! 11 -8 V 10 -9 V - 11 -8 V 10 -8 V - 11 -8 V 10 -8 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V 11 -6 V 10 -6 V - 11 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V ! 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V 11 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 0 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V 10 0 V 11 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 0 V ! 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 -1 V - 11 0 V - 11 0 V 10 0 V 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 1.000 UL - LT1 - 3137 1963 M - 263 0 V - 350 300 M - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V 11 0 V ! 11 0 V ! 10 216 V ! 11 7 V ! 10 6 V ! 11 7 V ! 10 6 V ! 11 7 V ! 10 6 V ! 11 7 V ! 10 6 V ! 11 7 V ! 10 6 V ! 11 6 V ! 10 6 V ! 11 6 V ! 11 6 V ! 10 6 V ! 11 6 V 10 6 V - 11 6 V 10 5 V 11 6 V 10 6 V ! 11 5 V 10 6 V - 11 5 V 10 5 V - 11 6 V - 11 5 V 10 5 V - 11 5 V 10 5 V ! 11 5 V 10 4 V - 11 5 V 10 5 V - 11 4 V 10 5 V - 11 4 V 10 4 V ! 11 5 V 10 4 V - 11 4 V - 11 4 V 10 4 V - 11 4 V 10 3 V 11 4 V 10 4 V ! 11 3 V 10 4 V - 11 3 V 10 3 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 3 V - 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 3 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V - 11 1 V 10 2 V - 11 1 V 10 2 V - 11 1 V 10 1 V ! 11 1 V 10 1 V ! 11 1 V 10 1 V 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 0 V ! 11 1 V 10 0 V ! 11 0 V 10 0 V - 11 1 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 -1 V ! 11 -1 V ! 11 0 V 10 -1 V ! 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V 11 -2 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -2 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V 10 -3 V ! 11 -3 V 10 -3 V 11 -4 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 10 -4 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -2 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -2 V 10 -3 V 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V - 11 -2 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V 11 -2 V 10 -2 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$a=0.5,\sigma=2$}} ! \put(3087,2063){\rjust{$a=1,\sigma=1$}} ! \put(1925,2276){\cjust{Rayleigh Tail Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2021){\rjust{1}} ! \put(300,1849){\rjust{0.9}} ! \put(300,1677){\rjust{0.8}} ! \put(300,1505){\rjust{0.7}} ! \put(300,1333){\rjust{0.6}} ! \put(300,1161){\rjust{0.5}} ! \put(300,988){\rjust{0.4}} ! \put(300,816){\rjust{0.3}} ! \put(300,644){\rjust{0.2}} ! \put(300,472){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,998 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 463 M 63 0 V ! 2937 0 R -63 0 V ! 450 626 M 63 0 V ! 2937 0 R -63 0 V ! 450 789 M 63 0 V ! 2937 0 R -63 0 V ! 450 952 M 63 0 V ! 2937 0 R -63 0 V ! 450 1115 M 63 0 V ! 2937 0 R -63 0 V ! 450 1278 M 63 0 V ! 2937 0 R -63 0 V ! 450 1441 M 63 0 V ! 2937 0 R -63 0 V ! 450 1603 M 63 0 V ! 2937 0 R -63 0 V ! 450 1766 M 63 0 V ! 2937 0 R -63 0 V ! 450 1929 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 1629 V ! 10 0 V ! 10 -2 V ! 10 -2 V 10 -3 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -7 V 10 -7 V ! 10 -8 V ! 10 -9 V 10 -9 V ! 10 -10 V 10 -11 V ! 11 -12 V ! 10 -12 V 10 -12 V 10 -13 V ! 10 -14 V ! 10 -14 V 10 -15 V 10 -15 V ! 10 -16 V ! 10 -16 V 10 -17 V ! 10 -16 V ! 10 -18 V 10 -17 V ! 10 -18 V ! 10 -18 V ! 10 -19 V ! 10 -18 V 10 -19 V 10 -19 V 10 -20 V ! 10 -19 V ! 10 -20 V ! 10 -20 V ! 10 -19 V ! 10 -20 V 10 -20 V 10 -20 V 10 -20 V 10 -20 V 11 -20 V 10 -20 V 10 -20 V ! 10 -20 V ! 10 -20 V ! 10 -20 V ! 10 -20 V ! 10 -19 V ! 10 -20 V 10 -19 V 10 -19 V ! 10 -19 V ! 10 -19 V ! 10 -18 V ! 10 -19 V ! 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -17 V 10 -17 V 10 -17 V 10 -17 V 10 -16 V ! 10 -16 V ! 10 -16 V ! 10 -16 V 10 -15 V 10 -15 V ! 10 -15 V ! 11 -15 V ! 10 -14 V 10 -14 V 10 -14 V 10 -13 V ! 10 -13 V ! 10 -13 V ! 10 -13 V 10 -12 V 10 -12 V ! 10 -12 V ! 10 -11 V 10 -11 V 10 -11 V ! 10 -11 V ! 10 -10 V 10 -10 V 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V 10 -9 V 10 -8 V 10 -8 V 10 -7 V ! 10 -7 V ! 10 -8 V 10 -7 V 11 -6 V + 10 -7 V + 10 -6 V + 10 -6 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -4 V 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 11 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 0 V 10 -1 V 10 -1 V ! 10 0 V 10 -1 V 10 0 V + 10 -1 V 11 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 1.000 UL ! LT1 ! 3087 1863 M ! 263 0 V ! 450 300 M ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 11 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 204 V ! 10 7 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 7 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V ! 10 6 V 10 6 V 10 5 V + 10 6 V 11 6 V + 10 5 V 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 5 V ! 10 5 V 10 6 V 10 5 V 10 5 V 10 5 V ! 10 5 V 10 4 V 10 5 V 10 5 V 10 4 V ! 10 5 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 3 V 10 4 V 10 4 V 10 3 V 11 4 V + 10 3 V 10 4 V ! 10 3 V ! 10 3 V 10 4 V 10 3 V 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V 10 3 V 10 2 V ! 10 3 V ! 10 2 V ! 10 3 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 1 V ! 10 2 V 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V 10 1 V 11 1 V 10 1 V 10 1 V ! 10 1 V ! 10 1 V 10 0 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 -1 V ! 10 0 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V ! 10 0 V ! 10 -1 V 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V 10 -2 V 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V 11 -2 V 10 -3 V 10 -2 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 11 -3 V + 10 -3 V + 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 11 -4 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V ! 10 -2 V 10 -3 V 11 -2 V + 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$a=0.5,sigma=2$}}% ! \put(3037,1963){\rjust{$a=1,sigma=1$}}% ! \put(1950,2226){\cjust{Rayleigh Tail Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,1929){\rjust{ 1}}% ! \put(400,1766){\rjust{ 0.9}}% ! \put(400,1603){\rjust{ 0.8}}% ! \put(400,1441){\rjust{ 0.7}}% ! \put(400,1278){\rjust{ 0.6}}% ! \put(400,1115){\rjust{ 0.5}}% ! \put(400,952){\rjust{ 0.4}}% ! \put(400,789){\rjust{ 0.3}}% ! \put(400,626){\rjust{ 0.2}}% ! \put(400,463){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-rayleigh.tex gsl-1.4/doc/rand-rayleigh.tex *** gsl-1.3/doc/rand-rayleigh.tex Mon Dec 10 19:24:37 2001 --- gsl-1.4/doc/rand-rayleigh.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-rayleigh.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:57 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-rayleigh.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,973 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 568 M 63 0 V ! 3087 0 R -63 0 V ! 350 836 M 63 0 V ! 3087 0 R -63 0 V ! 350 1104 M 63 0 V ! 3087 0 R -63 0 V ! 350 1372 M 63 0 V ! 3087 0 R -63 0 V ! 350 1640 M 63 0 V ! 3087 0 R -63 0 V ! 350 1908 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 980 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1610 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2240 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2870 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 300 M ! 11 45 V ! 10 45 V ! 11 44 V ! 10 45 V ! 11 44 V ! 10 45 V ! 11 44 V ! 10 43 V ! 11 44 V 10 43 V - 11 43 V 10 42 V ! 11 42 V 10 41 V ! 11 41 V ! 11 41 V 10 40 V - 11 39 V 10 39 V ! 11 38 V 10 37 V - 11 36 V 10 36 V ! 11 35 V ! 10 35 V ! 11 33 V 10 33 V ! 11 32 V ! 11 30 V 10 31 V ! 11 29 V 10 28 V ! 11 27 V ! 10 26 V ! 11 26 V 10 24 V - 11 23 V 10 23 V ! 11 21 V ! 10 20 V ! 11 20 V 10 18 V ! 11 17 V ! 11 16 V 10 15 V ! 11 15 V ! 10 13 V ! 11 12 V ! 10 11 V ! 11 10 V ! 10 9 V ! 11 8 V ! 10 7 V ! 11 6 V 10 5 V ! 11 4 V ! 11 3 V 10 2 V - 11 1 V 10 0 V ! 11 0 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -4 V 10 -5 V ! 11 -6 V 10 -7 V - 11 -7 V 10 -8 V ! 11 -9 V ! 11 -9 V 10 -10 V 11 -11 V 10 -11 V ! 11 -12 V 10 -13 V - 11 -13 V 10 -14 V ! 11 -14 V 10 -15 V - 11 -15 V 10 -15 V ! 11 -16 V 10 -17 V ! 11 -17 V ! 11 -17 V 10 -17 V - 11 -18 V 10 -18 V - 11 -19 V 10 -18 V ! 11 -19 V 10 -19 V - 11 -20 V 10 -19 V - 11 -20 V 10 -19 V - 11 -20 V - 11 -20 V - 10 -20 V - 11 -20 V - 10 -20 V - 11 -20 V - 10 -20 V - 11 -20 V - 10 -20 V - 11 -19 V - 10 -20 V - 11 -20 V - 10 -20 V - 11 -19 V - 10 -20 V - 11 -19 V - 11 -19 V 10 -19 V - 11 -19 V 10 -18 V 11 -19 V 10 -18 V - 11 -18 V 10 -18 V - 11 -17 V 10 -18 V - 11 -17 V 10 -17 V ! 11 -16 V 10 -17 V ! 11 -16 V ! 11 -16 V 10 -15 V ! 11 -15 V 10 -15 V - 11 -15 V 10 -15 V ! 11 -14 V 10 -14 V 11 -14 V 10 -13 V ! 11 -13 V 10 -13 V - 11 -12 V - 11 -13 V 10 -12 V ! 11 -11 V 10 -12 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -11 V - 11 -10 V 10 -10 V ! 11 -9 V 10 -9 V - 11 -10 V 10 -8 V - 11 -9 V - 11 -8 V 10 -8 V ! 11 -8 V 10 -8 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V ! 11 -6 V 10 -6 V 11 -6 V 10 -6 V - 11 -6 V - 11 -6 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -4 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V ! 11 -1 V 10 0 V 11 -1 V ! 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V ! 11 0 V 10 -1 V - 11 0 V 10 0 V ! 11 0 V ! 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 -1 V 10 0 V 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 0 V ! 11 0 V 10 0 V 11 0 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 300 M ! 11 11 V 10 11 V ! 11 12 V ! 10 11 V ! 11 11 V 10 11 V ! 11 11 V 10 11 V - 11 12 V 10 11 V ! 11 11 V ! 10 11 V ! 11 11 V 10 11 V ! 11 11 V ! 11 11 V 10 11 V ! 11 10 V 10 11 V 11 11 V 10 11 V - 11 10 V - 10 11 V - 11 11 V 10 10 V - 11 11 V 10 10 V - 11 10 V - 11 11 V 10 10 V - 11 10 V 10 10 V - 11 10 V 10 10 V ! 11 10 V 10 9 V - 11 10 V 10 10 V ! 11 9 V 10 10 V - 11 9 V 10 9 V ! 11 10 V ! 11 9 V 10 9 V - 11 9 V 10 8 V 11 9 V 10 9 V - 11 8 V - 10 9 V - 11 8 V 10 8 V - 11 8 V 10 8 V - 11 8 V - 11 8 V 10 8 V - 11 7 V 10 8 V ! 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 7 V - 11 7 V 10 6 V ! 11 7 V 10 6 V - 11 6 V - 11 6 V 10 6 V - 11 6 V 10 5 V 11 6 V 10 5 V - 11 5 V - 10 6 V - 11 5 V 10 5 V - 11 4 V 10 5 V - 11 4 V 10 5 V - 11 4 V - 11 4 V 10 4 V ! 11 4 V 10 4 V - 11 3 V 10 4 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 3 V 10 3 V - 11 2 V - 11 3 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V 11 2 V 10 1 V ! 11 2 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V - 11 1 V 10 0 V - 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 -1 V ! 11 0 V 10 -1 V - 11 -1 V - 11 -1 V 10 -1 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -4 V - 11 -4 V 10 -4 V 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -4 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -4 V 10 -5 V ! 11 -5 V ! 11 -5 V 10 -5 V 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -5 V 11 -4 V 10 -5 V - 11 -4 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -5 V 10 -4 V ! 11 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -3 V 11 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V 10 -3 V - 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$\sigma=2$}} ! \put(3087,2063){\rjust{$\sigma=1$}} ! \put(1925,2276){\cjust{Rayleigh Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{5}} ! \put(2870,200){\cjust{4}} ! \put(2240,200){\cjust{3}} ! \put(1610,200){\cjust{2}} ! \put(980,200){\cjust{1}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{0.7}} ! \put(300,1908){\rjust{0.6}} ! \put(300,1640){\rjust{0.5}} ! \put(300,1372){\rjust{0.4}} ! \put(300,1104){\rjust{0.3}} ! \put(300,836){\rjust{0.2}} ! \put(300,568){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,983 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 554 M 63 0 V ! 2937 0 R -63 0 V ! 450 807 M 63 0 V ! 2937 0 R -63 0 V ! 450 1061 M 63 0 V ! 2937 0 R -63 0 V ! 450 1315 M 63 0 V ! 2937 0 R -63 0 V ! 450 1569 M 63 0 V ! 2937 0 R -63 0 V ! 450 1822 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1050 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1650 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2250 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2850 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 300 M ! 10 42 V 10 43 V 10 42 V ! 10 42 V ! 10 42 V ! 10 42 V ! 10 42 V 10 41 V ! 10 42 V ! 10 40 V ! 10 41 V ! 10 40 V 10 40 V 10 39 V ! 11 39 V ! 10 38 V ! 10 38 V 10 37 V 10 36 V ! 10 36 V ! 10 36 V ! 10 34 V ! 10 34 V 10 33 V ! 10 33 V ! 10 32 V 10 31 V ! 10 30 V ! 10 29 V ! 10 28 V 10 28 V ! 10 27 V ! 10 25 V ! 10 25 V 10 24 V 10 23 V ! 10 22 V ! 10 21 V ! 10 21 V ! 10 19 V 10 18 V ! 10 17 V ! 10 17 V 10 15 V ! 11 14 V ! 10 14 V ! 10 12 V ! 10 12 V ! 10 10 V ! 10 10 V ! 10 8 V ! 10 8 V ! 10 6 V ! 10 6 V 10 5 V ! 10 4 V ! 10 2 V ! 10 2 V 10 2 V 10 0 V ! 10 -1 V ! 10 -1 V 10 -2 V ! 10 -4 V 10 -3 V 10 -5 V ! 10 -5 V ! 10 -7 V ! 10 -7 V 10 -7 V 10 -8 V ! 10 -9 V ! 10 -10 V 10 -10 V 11 -11 V 10 -11 V ! 10 -12 V ! 10 -12 V 10 -13 V 10 -14 V ! 10 -14 V ! 10 -14 V 10 -15 V 10 -15 V ! 10 -16 V ! 10 -16 V ! 10 -16 V 10 -17 V ! 10 -16 V ! 10 -18 V 10 -17 V 10 -18 V 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -19 V ! 10 -18 V ! 10 -19 V 10 -19 V 10 -19 V 10 -19 V 10 -19 V 10 -18 V 11 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -19 V + 10 -18 V + 10 -19 V + 10 -18 V + 10 -19 V + 10 -18 V 10 -18 V 10 -18 V 10 -18 V 10 -17 V ! 10 -18 V ! 10 -17 V 10 -17 V ! 10 -17 V ! 10 -17 V ! 10 -16 V ! 10 -16 V ! 10 -16 V ! 10 -16 V 10 -15 V ! 10 -16 V 10 -15 V 10 -15 V ! 10 -14 V ! 10 -14 V 10 -14 V 11 -14 V 10 -13 V ! 10 -14 V 10 -13 V 10 -12 V ! 10 -13 V ! 10 -12 V ! 10 -12 V ! 10 -11 V 10 -12 V 10 -11 V ! 10 -10 V 10 -11 V 10 -10 V ! 10 -10 V ! 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V 10 -9 V 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V 10 -7 V 10 -7 V ! 10 -7 V 10 -6 V 11 -6 V + 10 -7 V + 10 -5 V + 10 -6 V 10 -6 V 10 -5 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -4 V ! 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V 10 -2 V 10 -2 V 11 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V ! 10 -1 V 10 0 V 11 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V 10 -1 V 10 0 V 10 0 V 10 -1 V 10 0 V ! 10 0 V 10 -1 V 10 0 V ! 10 0 V ! 10 0 V 10 -1 V 10 0 V 10 0 V 10 0 V ! 10 0 V ! 10 0 V 10 -1 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 0 V 11 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 -1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 11 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V + 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 300 M 10 11 V ! 10 10 V 10 11 V ! 10 10 V 10 11 V 10 11 V ! 10 10 V 10 11 V ! 10 10 V 10 11 V ! 10 10 V 10 11 V + 10 10 V + 10 10 V 11 11 V + 10 10 V 10 11 V 10 10 V 10 10 V 10 10 V 10 10 V 10 10 V ! 10 10 V ! 10 10 V ! 10 10 V ! 10 10 V ! 10 10 V ! 10 10 V ! 10 10 V 10 9 V 10 10 V ! 10 9 V 10 10 V 10 9 V ! 10 10 V ! 10 9 V ! 10 9 V ! 10 9 V ! 10 9 V ! 10 9 V ! 10 9 V ! 10 9 V 10 9 V 10 8 V 11 9 V + 10 8 V + 10 8 V 10 9 V 10 8 V 10 8 V 10 8 V 10 8 V ! 10 8 V ! 10 7 V ! 10 8 V ! 10 7 V ! 10 8 V ! 10 7 V ! 10 7 V ! 10 7 V 10 7 V 10 7 V 10 7 V 10 6 V ! 10 7 V ! 10 6 V ! 10 6 V ! 10 7 V ! 10 6 V ! 10 6 V ! 10 5 V 10 6 V 10 6 V 10 5 V 11 6 V 10 5 V 10 5 V 10 5 V 10 5 V 10 4 V ! 10 5 V ! 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 3 V ! 10 4 V ! 10 3 V ! 10 3 V ! 10 3 V 10 3 V 10 3 V 10 2 V ! 10 3 V ! 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V 10 2 V 10 2 V 11 2 V 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 1 V 10 0 V 10 1 V 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 -1 V 10 0 V 10 -1 V ! 10 0 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V 10 -1 V 11 -2 V + 10 -1 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V + 10 -2 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V 11 -3 V 10 -4 V 10 -4 V 10 -4 V ! 10 -3 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -5 V ! 10 -4 V ! 10 -4 V 10 -5 V 10 -4 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 11 -5 V + 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 10 -5 V ! 10 -4 V ! 10 -5 V ! 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 10 -5 V 10 -4 V 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V 10 -5 V 11 -4 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -5 V 10 -4 V 10 -5 V 10 -4 V 10 -4 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -5 V ! 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -3 V 11 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 11 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V 10 -2 V 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$sigma=2$}}% ! \put(3037,1963){\rjust{$sigma=1$}}% ! \put(1950,2226){\cjust{Rayleigh Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 5}}% ! \put(2850,200){\cjust{ 4}}% ! \put(2250,200){\cjust{ 3}}% ! \put(1650,200){\cjust{ 2}}% ! \put(1050,200){\cjust{ 1}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 0.7}}% ! \put(400,1822){\rjust{ 0.6}}% ! \put(400,1569){\rjust{ 0.5}}% ! \put(400,1315){\rjust{ 0.4}}% ! \put(400,1061){\rjust{ 0.3}}% ! \put(400,807){\rjust{ 0.2}}% ! \put(400,554){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-tdist.tex gsl-1.4/doc/rand-tdist.tex *** gsl-1.3/doc/rand-tdist.tex Mon Dec 10 19:24:37 2001 --- gsl-1.4/doc/rand-tdist.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-tdist.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:58 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-tdist.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,978 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 675 M 63 0 V ! 3087 0 R -63 0 V ! 350 1050 M 63 0 V ! 3087 0 R -63 0 V ! 350 1426 M 63 0 V ! 3087 0 R -63 0 V ! 350 1801 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 744 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1138 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1531 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2319 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2713 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3106 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 370 M ! 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V 10 1 V - 11 2 V - 11 1 V 10 1 V 11 1 V 10 2 V - 11 1 V 10 1 V - 11 2 V 10 1 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V - 11 1 V - 11 2 V 10 1 V - 11 2 V 10 2 V ! 11 1 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 11 2 V 10 2 V ! 11 3 V 10 2 V - 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 3 V - 11 3 V 10 3 V - 11 3 V 10 3 V - 11 4 V 10 3 V - 11 4 V 10 4 V ! 11 3 V 10 4 V ! 11 4 V 10 5 V - 11 4 V 10 4 V ! 11 5 V 11 4 V 10 5 V - 11 5 V 10 5 V - 11 5 V 10 6 V ! 11 5 V 10 6 V - 11 6 V 10 6 V - 11 6 V 10 7 V ! 11 6 V 10 7 V - 11 7 V - 11 8 V 10 7 V - 11 8 V 10 8 V ! 11 8 V 10 9 V - 11 9 V 10 9 V - 11 9 V 10 10 V - 11 10 V 10 10 V - 11 11 V - 11 11 V 10 11 V ! 11 12 V 10 12 V 11 12 V 10 13 V - 11 13 V 10 14 V - 11 14 V 10 14 V - 11 15 V 10 15 V ! 11 16 V 10 16 V - 11 17 V - 11 17 V 10 17 V ! 11 18 V 10 18 V - 11 19 V 10 19 V ! 11 19 V 10 20 V ! 11 20 V 10 20 V - 11 20 V - 10 21 V - 11 21 V 10 20 V ! 11 21 V ! 11 21 V 10 20 V - 11 21 V 10 19 V ! 11 20 V 10 19 V 11 18 V ! 10 18 V ! 11 17 V 10 16 V ! 11 15 V 10 14 V ! 11 12 V ! 11 11 V 10 10 V ! 11 8 V 10 7 V ! 11 5 V 10 3 V ! 11 2 V 10 0 V ! 11 -2 V 10 -3 V ! 11 -5 V 10 -7 V - 11 -8 V 10 -10 V ! 11 -11 V ! 11 -12 V 10 -14 V ! 11 -15 V 10 -16 V ! 11 -17 V ! 10 -18 V 11 -18 V 10 -19 V - 11 -20 V 10 -19 V ! 11 -21 V 10 -20 V ! 11 -21 V ! 11 -21 V 10 -20 V - 11 -21 V - 10 -21 V - 11 -20 V 10 -20 V ! 11 -20 V 10 -20 V ! 11 -19 V 10 -19 V - 11 -19 V 10 -18 V ! 11 -18 V 10 -17 V - 11 -17 V - 11 -17 V 10 -16 V - 11 -16 V 10 -15 V ! 11 -15 V 10 -14 V - 11 -14 V 10 -14 V - 11 -13 V 10 -13 V ! 11 -12 V 10 -12 V 11 -12 V 10 -11 V - 11 -11 V - 11 -11 V 10 -10 V - 11 -10 V 10 -10 V - 11 -9 V 10 -9 V - 11 -9 V 10 -9 V ! 11 -8 V 10 -8 V - 11 -8 V 10 -7 V - 11 -8 V - 11 -7 V 10 -7 V - 11 -6 V 10 -7 V ! 11 -6 V 10 -6 V ! 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V 11 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V ! 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -2 V 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 319 M ! 11 1 V 10 0 V - 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 0 V 10 1 V ! 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V - 11 1 V 10 1 V ! 11 1 V 10 1 V 11 1 V 10 1 V - 11 2 V 10 1 V ! 11 1 V 10 2 V ! 11 1 V 10 2 V - 11 1 V - 11 2 V 10 1 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 3 V 10 2 V - 11 3 V 10 2 V - 11 3 V - 11 3 V 10 3 V ! 11 3 V 10 3 V 11 3 V 10 3 V - 11 4 V 10 3 V ! 11 4 V 10 4 V - 11 4 V 10 4 V - 11 5 V - 11 4 V 10 5 V ! 11 5 V 10 5 V - 11 5 V 10 6 V - 11 5 V 10 6 V ! 11 6 V 10 7 V ! 11 6 V 10 7 V - 11 7 V 10 7 V - 11 8 V - 11 7 V 10 8 V ! 11 9 V 10 8 V - 11 9 V 10 10 V ! 11 9 V 10 10 V - 11 10 V 10 11 V - 11 11 V 10 11 V ! 11 12 V 10 12 V - 11 12 V - 11 13 V 10 13 V ! 11 13 V 10 14 V - 11 15 V 10 14 V ! 11 15 V 10 16 V - 11 16 V 10 16 V - 11 17 V 10 17 V ! 11 18 V ! 11 18 V 10 18 V 11 19 V 10 19 V ! 11 20 V 10 20 V - 11 20 V 10 20 V - 11 21 V 10 21 V ! 11 22 V ! 10 22 V ! 11 21 V ! 10 23 V ! 11 22 V ! 11 22 V ! 10 23 V ! 11 22 V ! 10 23 V ! 11 23 V ! 10 22 V ! 11 23 V 10 22 V ! 11 22 V 10 22 V ! 11 22 V 10 22 V ! 11 21 V 10 20 V - 11 20 V - 11 20 V 10 19 V - 11 18 V 10 18 V ! 11 17 V 10 16 V ! 11 15 V ! 10 15 V ! 11 13 V 10 13 V - 11 11 V 10 11 V ! 11 9 V ! 11 9 V 10 7 V ! 11 6 V ! 10 5 V ! 11 3 V ! 10 3 V ! 11 1 V 10 0 V ! 11 -1 V ! 10 -3 V ! 11 -3 V ! 10 -5 V ! 11 -6 V 10 -7 V ! 11 -9 V ! 11 -9 V 10 -11 V - 11 -11 V 10 -13 V ! 11 -13 V ! 10 -15 V ! 11 -15 V 10 -16 V ! 11 -17 V 10 -18 V - 11 -18 V 10 -19 V - 11 -20 V - 11 -20 V 10 -20 V ! 11 -21 V ! 10 -22 V ! 11 -22 V ! 10 -22 V ! 11 -22 V 10 -22 V ! 11 -23 V 10 -22 V ! 11 -23 V ! 10 -23 V ! 11 -22 V ! 10 -23 V ! 11 -22 V ! 11 -22 V ! 10 -23 V ! 11 -21 V 10 -22 V - 11 -22 V 10 -21 V ! 11 -21 V 10 -20 V - 11 -20 V 10 -20 V ! 11 -20 V 10 -19 V 11 -19 V 10 -18 V ! 11 -18 V ! 11 -18 V 10 -17 V - 11 -17 V 10 -16 V - 11 -16 V 10 -16 V ! 11 -15 V 10 -14 V - 11 -15 V 10 -14 V - 11 -13 V 10 -13 V ! 11 -13 V ! 11 -12 V 10 -12 V - 11 -12 V 10 -11 V - 11 -11 V 10 -11 V ! 11 -10 V 10 -10 V - 11 -9 V 10 -10 V ! 11 -9 V ! 10 -8 V ! 11 -9 V 10 -8 V ! 11 -7 V 11 -8 V 10 -7 V ! 11 -7 V 10 -7 V - 11 -6 V 10 -7 V - 11 -6 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -4 V - 11 -5 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V ! 11 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V - 11 -1 V 10 -1 V - 11 0 V 10 -1 V 11 -1 V 10 0 V ! 11 -1 V stroke grestore end showpage ! } ! \put(3087,1963){\rjust{$\nu_1=5$}} ! \put(3087,2063){\rjust{$\nu_1=1$}} ! \put(1925,2276){\cjust{Student's t distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{4}} ! \put(3106,200){\cjust{3}} ! \put(2713,200){\cjust{2}} ! \put(2319,200){\cjust{1}} ! \put(1925,200){\cjust{0}} ! \put(1531,200){\cjust{-1}} ! \put(1138,200){\cjust{-2}} ! \put(744,200){\cjust{-3}} ! \put(350,200){\cjust{-4}} ! \put(300,2176){\rjust{0.5}} ! \put(300,1801){\rjust{0.4}} ! \put(300,1426){\rjust{0.3}} ! \put(300,1050){\rjust{0.2}} ! \put(300,675){\rjust{0.1}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,990 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 655 M 63 0 V ! 2937 0 R -63 0 V ! 450 1010 M 63 0 V ! 2937 0 R -63 0 V ! 450 1366 M 63 0 V ! 2937 0 R -63 0 V ! 450 1721 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 825 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1200 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1575 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2325 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2700 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3075 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 367 M ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 11 1 V + 10 1 V + 10 1 V 10 2 V 10 1 V 10 1 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V 10 2 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 11 2 V 10 2 V ! 10 3 V 10 2 V 10 2 V ! 10 3 V 10 2 V 10 3 V ! 10 2 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V 10 3 V 10 3 V 10 3 V 10 3 V 10 4 V ! 10 3 V 10 4 V ! 10 4 V ! 10 4 V ! 10 3 V 10 5 V 10 4 V ! 10 4 V ! 10 4 V ! 10 5 V ! 10 5 V 11 4 V 10 5 V 10 5 V 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V 10 6 V 10 6 V 10 7 V ! 10 6 V ! 10 7 V ! 10 7 V 10 7 V 10 7 V 10 8 V ! 10 8 V ! 10 8 V ! 10 8 V ! 10 9 V ! 10 9 V 10 9 V 10 9 V 10 10 V 10 10 V 10 11 V ! 10 10 V ! 10 11 V ! 10 12 V 10 12 V 11 12 V + 10 12 V + 10 13 V 10 13 V 10 14 V 10 14 V 10 15 V ! 10 14 V ! 10 16 V ! 10 15 V 10 16 V 10 17 V ! 10 17 V ! 10 17 V ! 10 18 V ! 10 18 V 10 18 V 10 19 V ! 10 18 V 10 20 V ! 10 19 V ! 10 19 V 10 20 V 10 20 V ! 10 19 V 10 20 V 10 19 V ! 10 19 V ! 10 19 V 10 19 V 11 18 V ! 10 17 V ! 10 17 V 10 16 V ! 10 15 V 10 14 V ! 10 13 V ! 10 12 V 10 10 V ! 10 10 V ! 10 7 V 10 7 V ! 10 5 V 10 3 V ! 10 1 V 10 0 V ! 10 -1 V 10 -3 V ! 10 -5 V ! 10 -7 V 10 -7 V 10 -10 V ! 10 -10 V ! 10 -12 V ! 10 -13 V 10 -14 V ! 10 -15 V 10 -16 V ! 10 -17 V ! 10 -17 V 11 -18 V 10 -19 V 10 -19 V ! 10 -19 V ! 10 -19 V 10 -20 V ! 10 -19 V 10 -20 V 10 -20 V ! 10 -19 V ! 10 -19 V 10 -20 V ! 10 -18 V 10 -19 V 10 -18 V ! 10 -18 V ! 10 -18 V ! 10 -17 V ! 10 -17 V 10 -17 V 10 -16 V 10 -15 V ! 10 -16 V ! 10 -14 V ! 10 -15 V 10 -14 V 10 -14 V 10 -13 V ! 10 -13 V 10 -12 V 11 -12 V + 10 -12 V + 10 -12 V + 10 -11 V + 10 -10 V 10 -11 V 10 -10 V 10 -10 V 10 -9 V 10 -9 V ! 10 -9 V ! 10 -9 V ! 10 -8 V ! 10 -8 V ! 10 -8 V 10 -8 V 10 -7 V 10 -7 V 10 -7 V ! 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -5 V 10 -5 V 11 -4 V ! 10 -5 V ! 10 -5 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -5 V ! 10 -3 V ! 10 -4 V 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V ! 10 -3 V 10 -2 V 11 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -1 V ! 10 -2 V ! 10 -1 V 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 0 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 318 M ! 10 1 V 10 0 V 10 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V 10 1 V ! 10 0 V ! 10 1 V 10 1 V 11 1 V 10 1 V 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V 10 2 V 10 1 V 10 2 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 2 V ! 10 2 V ! 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 2 V 10 3 V ! 10 2 V 10 3 V + 10 2 V 11 3 V 10 3 V 10 3 V ! 10 3 V ! 10 3 V ! 10 3 V ! 10 4 V ! 10 3 V ! 10 4 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 5 V ! 10 4 V ! 10 5 V ! 10 5 V ! 10 5 V ! 10 6 V 10 5 V 10 6 V 10 6 V ! 10 6 V 10 7 V ! 10 6 V 10 7 V 10 7 V 10 8 V ! 10 7 V ! 10 8 V ! 11 8 V ! 10 9 V 10 8 V 10 10 V ! 10 9 V ! 10 10 V ! 10 10 V 10 10 V 10 11 V 10 11 V ! 10 11 V ! 10 12 V ! 10 12 V 10 12 V 10 13 V ! 10 13 V ! 10 14 V 10 14 V 10 14 V ! 10 15 V ! 10 15 V ! 10 15 V 10 16 V 10 16 V 10 17 V ! 10 17 V ! 10 17 V 10 18 V + 10 18 V + 10 19 V 11 19 V 10 19 V ! 10 19 V ! 10 20 V 10 20 V 10 20 V 10 21 V ! 10 21 V ! 10 21 V ! 10 21 V ! 10 21 V ! 10 21 V 10 22 V ! 10 21 V 10 22 V ! 10 21 V ! 10 21 V 10 22 V ! 10 21 V ! 10 20 V ! 10 21 V ! 10 20 V ! 10 20 V 10 20 V 10 19 V 10 18 V ! 10 18 V ! 10 17 V ! 10 17 V 10 16 V ! 11 16 V ! 10 14 V ! 10 14 V 10 13 V 10 11 V ! 10 11 V ! 10 10 V ! 10 9 V ! 10 8 V 10 7 V ! 10 6 V ! 10 4 V ! 10 4 V ! 10 2 V ! 10 1 V 10 0 V ! 10 -1 V ! 10 -2 V ! 10 -4 V ! 10 -4 V ! 10 -6 V 10 -7 V ! 10 -8 V ! 10 -9 V ! 10 -10 V ! 10 -11 V 10 -11 V 10 -13 V ! 10 -14 V ! 10 -14 V ! 11 -16 V 10 -16 V ! 10 -17 V ! 10 -17 V ! 10 -18 V 10 -18 V 10 -19 V 10 -20 V ! 10 -20 V ! 10 -20 V ! 10 -21 V ! 10 -20 V ! 10 -21 V 10 -22 V ! 10 -21 V ! 10 -21 V 10 -22 V ! 10 -21 V 10 -22 V 10 -21 V ! 10 -21 V ! 10 -21 V ! 10 -21 V ! 10 -21 V ! 10 -21 V 10 -20 V 10 -20 V ! 10 -20 V ! 10 -19 V 10 -19 V 11 -19 V + 10 -19 V 10 -18 V ! 10 -18 V ! 10 -17 V ! 10 -17 V 10 -17 V 10 -16 V 10 -16 V ! 10 -15 V ! 10 -15 V ! 10 -15 V ! 10 -14 V 10 -14 V 10 -14 V 10 -13 V ! 10 -13 V ! 10 -12 V ! 10 -12 V 10 -12 V 10 -11 V 10 -11 V ! 10 -11 V 10 -10 V 10 -10 V ! 10 -10 V ! 10 -9 V ! 10 -10 V 10 -8 V ! 10 -9 V 11 -8 V + 10 -8 V 10 -7 V ! 10 -8 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 11 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V ! 10 -2 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 0 V ! 10 -1 V stroke grestore end showpage ! }}% ! \put(3037,1863){\rjust{$ ! u_1=5$}}% ! \put(3037,1963){\rjust{$ ! u_1=1$}}% ! \put(1950,2226){\cjust{Student's t distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 4}}% ! \put(3075,200){\cjust{ 3}}% ! \put(2700,200){\cjust{ 2}}% ! \put(2325,200){\cjust{ 1}}% ! \put(1950,200){\cjust{ 0}}% ! \put(1575,200){\cjust{-1}}% ! \put(1200,200){\cjust{-2}}% ! \put(825,200){\cjust{-3}}% ! \put(450,200){\cjust{-4}}% ! \put(400,2076){\rjust{ 0.5}}% ! \put(400,1721){\rjust{ 0.4}}% ! \put(400,1366){\rjust{ 0.3}}% ! \put(400,1010){\rjust{ 0.2}}% ! \put(400,655){\rjust{ 0.1}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/rand-weibull.tex gsl-1.4/doc/rand-weibull.tex *** gsl-1.3/doc/rand-weibull.tex Mon Dec 10 19:24:37 2001 --- gsl-1.4/doc/rand-weibull.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: rand-weibull.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:49:59 2001 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: rand-weibull.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 360 237 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(3600,2376) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(3600,2376) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,1253 **** 1.000 UL LTb ! 350 300 M 63 0 V ! 3087 0 R -63 0 V ! 350 925 M 63 0 V ! 3087 0 R -63 0 V ! 350 1551 M 63 0 V ! 3087 0 R -63 0 V ! 350 2176 M 63 0 V ! 3087 0 R -63 0 V ! 350 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1138 300 M 0 63 V ! 0 1813 R 0 -63 V ! 1925 300 M 0 63 V ! 0 1813 R 0 -63 V ! 2713 300 M 0 63 V ! 0 1813 R 0 -63 V ! 3500 300 M 0 63 V ! 0 1813 R 0 -63 V 1.000 UL LTb ! 350 300 M ! 3150 0 V ! 0 1876 V ! -3150 0 V ! 350 300 L 1.000 UL LT0 ! 3137 2063 M 263 0 V ! 350 1551 M ! 11 -9 V 10 -8 V - 11 -8 V 10 -8 V - 11 -8 V - 10 -9 V - 11 -8 V - 10 -7 V - 11 -8 V 10 -8 V ! 11 -8 V 10 -8 V - 11 -7 V 10 -8 V ! 11 -8 V ! 11 -7 V 10 -8 V ! 11 -7 V 10 -8 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -8 V - 11 -7 V 10 -7 V 11 -7 V 10 -7 V - 11 -7 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -6 V - 11 -7 V 10 -7 V - 11 -6 V 10 -7 V - 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V - 11 -6 V 10 -7 V - 11 -6 V - 11 -6 V 10 -6 V ! 11 -7 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V 11 -6 V ! 11 -6 V 10 -5 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V - 11 -5 V 10 -6 V ! 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -6 V 10 -5 V - 11 -5 V - 11 -5 V 10 -6 V - 11 -5 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -5 V 11 -5 V 10 -5 V - 11 -4 V - 11 -5 V 10 -5 V ! 11 -4 V 10 -5 V - 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -5 V ! 11 -4 V ! 11 -4 V 10 -5 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -5 V 10 -4 V - 11 -4 V 10 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -4 V 10 -3 V 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -4 V 10 -3 V - 11 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V 11 -3 V 10 -2 V - 11 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -3 V - 11 -2 V 10 -3 V ! 11 -3 V 10 -3 V 11 -2 V 10 -3 V ! 11 -3 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -2 V 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V ! 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -1 V 10 -2 V - 11 -2 V - 10 -1 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V ! 11 -2 V 10 -1 V 11 -2 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -2 V - 11 -1 V - 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -2 V - 11 -1 V 10 -1 V ! 11 -2 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V ! 11 -1 V ! 11 -1 V 10 -1 V 11 -2 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V 11 -1 V 1.000 UL LT1 ! 3137 1963 M 263 0 V ! 350 300 M ! 11 17 V 10 16 V - 11 17 V - 10 17 V - 11 17 V 10 16 V ! 11 17 V 10 16 V - 11 17 V - 10 17 V - 11 16 V 10 16 V - 11 17 V 10 16 V - 11 16 V - 11 17 V 10 16 V ! 11 16 V 10 16 V - 11 16 V 10 15 V - 11 16 V 10 16 V ! 11 15 V 10 16 V 11 15 V 10 15 V - 11 15 V - 11 15 V 10 15 V - 11 15 V 10 14 V ! 11 15 V 10 14 V - 11 14 V 10 14 V - 11 14 V 10 14 V - 11 14 V 10 13 V ! 11 13 V 10 13 V - 11 13 V - 11 13 V 10 13 V - 11 12 V 10 12 V ! 11 12 V 10 12 V 11 12 V 10 12 V - 11 11 V 10 11 V ! 11 11 V 10 11 V - 11 10 V - 11 11 V 10 10 V - 11 10 V 10 10 V ! 11 9 V 10 9 V - 11 10 V - 10 8 V - 11 9 V 10 9 V - 11 8 V 10 8 V - 11 8 V 10 8 V ! 11 7 V ! 11 7 V 10 7 V - 11 7 V 10 7 V ! 11 6 V 10 6 V ! 11 6 V 10 6 V - 11 5 V 10 5 V ! 11 6 V 10 4 V - 11 5 V 10 4 V - 11 5 V - 11 3 V 10 4 V - 11 4 V 10 3 V - 11 3 V 10 3 V ! 11 3 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V - 11 1 V - 11 2 V 10 1 V - 11 0 V 10 1 V ! 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -2 V - 11 -1 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V 10 -3 V - 11 -3 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -4 V ! 11 -4 V 10 -4 V - 11 -4 V 10 -5 V 11 -4 V 10 -5 V - 11 -4 V 10 -5 V ! 11 -5 V 10 -5 V - 11 -5 V 10 -6 V - 11 -5 V - 11 -6 V 10 -5 V ! 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V - 11 -7 V 10 -7 V ! 11 -6 V 10 -7 V - 11 -7 V 10 -7 V 11 -7 V 10 -7 V ! 11 -8 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V - 11 -8 V 10 -7 V - 11 -7 V - 10 -8 V - 11 -7 V - 10 -8 V - 11 -7 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V - 11 -7 V - 10 -8 V - 11 -7 V 10 -7 V - 11 -8 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V - 10 -8 V - 11 -7 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V - 11 -7 V 10 -7 V - 11 -8 V 10 -7 V - 11 -7 V 10 -7 V - 11 -7 V 10 -7 V ! 11 -7 V 10 -7 V 11 -6 V 10 -7 V ! 11 -7 V ! 11 -7 V 10 -6 V ! 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -7 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -6 V - 11 -6 V 10 -6 V - 11 -6 V 10 -6 V - 11 -5 V 10 -6 V 11 -6 V 10 -5 V - 11 -6 V 10 -5 V - 11 -6 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V - 11 -6 V 10 -5 V - 11 -4 V 10 -5 V - 11 -5 V 10 -5 V - 11 -5 V 10 -4 V - 11 -5 V 10 -5 V ! 11 -4 V 10 -4 V ! 11 -5 V ! 11 -4 V 10 -4 V ! 11 -5 V 10 -4 V - 11 -4 V 10 -4 V 11 -4 V 10 -4 V - 11 -3 V 10 -4 V - 11 -4 V 10 -4 V - 11 -3 V 10 -4 V ! 11 -3 V ! 11 -4 V 10 -3 V ! 11 -4 V 10 -3 V ! 11 -3 V 10 -3 V - 11 -3 V 10 -4 V - 11 -3 V 10 -3 V ! 11 -3 V 10 -2 V - 11 -3 V - 11 -3 V 10 -3 V 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V ! 11 -3 V 10 -2 V - 11 -3 V 10 -2 V - 11 -2 V 10 -3 V - 11 -2 V 10 -2 V ! 11 -2 V 1.000 UL LT2 ! 3137 1863 M 263 0 V ! 350 300 M ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 1 V 10 0 V - 11 0 V 10 0 V - 11 1 V 10 0 V ! 11 1 V 10 0 V - 11 1 V 10 0 V - 11 1 V - 11 0 V 10 1 V ! 11 1 V 10 1 V 11 0 V 10 1 V - 11 1 V 10 1 V ! 11 1 V 10 1 V - 11 1 V 10 1 V - 11 1 V - 11 2 V 10 1 V - 11 1 V 10 1 V - 11 2 V 10 1 V ! 11 2 V 10 1 V ! 11 2 V 10 1 V 11 2 V 10 1 V - 11 2 V 10 2 V - 11 2 V - 11 1 V 10 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V ! 11 2 V 10 2 V - 11 2 V 10 3 V - 11 2 V 10 2 V - 11 2 V - 11 3 V 10 2 V - 11 2 V 10 3 V ! 11 2 V 10 3 V - 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 3 V 10 3 V ! 11 3 V 10 3 V - 11 2 V - 11 3 V 10 3 V - 11 3 V 10 3 V ! 11 3 V 10 3 V 11 3 V 10 4 V - 11 3 V 10 3 V ! 11 3 V 10 4 V - 11 3 V 10 3 V - 11 4 V - 11 3 V 10 3 V ! 11 4 V 10 3 V - 11 4 V 10 4 V ! 11 3 V 10 4 V ! 11 3 V 10 4 V ! 11 4 V 10 4 V - 11 3 V - 11 4 V 10 4 V ! 11 4 V 10 4 V 11 4 V 10 4 V - 11 4 V 10 3 V - 11 4 V - 10 5 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V - 11 4 V 10 4 V - 11 5 V 10 4 V - 11 4 V 10 4 V - 11 5 V 10 4 V - 11 4 V 10 4 V - 11 5 V 10 4 V - 11 4 V - 10 5 V - 11 4 V - 11 5 V 10 4 V ! 11 4 V 10 5 V ! 11 4 V 10 5 V 11 4 V 10 5 V ! 11 4 V 10 5 V ! 11 4 V 10 5 V - 11 4 V - 11 5 V 10 4 V - 11 5 V 10 4 V - 11 5 V 10 4 V ! 11 5 V 10 4 V - 11 5 V 10 4 V ! 11 5 V 10 4 V - 11 5 V 10 4 V - 11 5 V - 11 4 V 10 4 V ! 11 5 V 10 4 V - 11 5 V 10 4 V - 11 5 V 10 4 V - 11 4 V 10 5 V - 11 4 V 10 4 V ! 11 5 V ! 11 4 V 10 4 V 11 4 V 10 5 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 5 V 10 4 V - 11 4 V 10 4 V - 11 4 V 10 4 V - 11 4 V - 11 4 V 10 4 V - 11 3 V 10 4 V - 11 4 V 10 4 V ! 11 4 V 10 3 V - 11 4 V 10 4 V - 11 3 V 10 4 V - 11 3 V 10 4 V ! 11 3 V ! 11 4 V 10 3 V - 11 3 V 10 4 V ! 11 3 V 10 3 V ! 11 3 V 10 3 V ! 11 3 V 10 3 V 11 3 V 10 3 V - 11 3 V - 11 3 V 10 3 V - 11 3 V 10 2 V ! 11 3 V 10 2 V ! 11 3 V 10 2 V ! 11 3 V 10 2 V - 11 2 V 10 3 V - 11 2 V 10 2 V - 11 2 V - 11 2 V 10 2 V - 11 2 V 10 2 V 11 2 V 10 1 V - 11 2 V 10 2 V - 11 1 V 10 2 V - 11 1 V 10 2 V - 11 1 V 10 1 V ! 11 1 V ! 11 2 V 10 1 V ! 11 1 V 10 1 V - 11 0 V 10 1 V - 11 1 V 10 1 V - 11 0 V 10 1 V - 11 0 V 10 1 V - 11 0 V - 11 0 V 10 1 V - 11 0 V 10 0 V ! 11 0 V 10 0 V - 11 0 V 10 0 V - 11 0 V 10 -1 V - 11 0 V 10 0 V - 11 -1 V 10 0 V ! 11 -1 V ! 11 -1 V 10 0 V - 11 -1 V 10 -1 V ! 11 -1 V 10 -1 V - 11 -1 V 10 -1 V - 11 -1 V 10 -2 V - 11 -1 V 10 -1 V - 11 -2 V 11 -1 V 10 -2 V ! 11 -1 V 10 -2 V - 11 -2 V 10 -1 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V - 11 -2 V 10 -2 V ! 11 -2 V 10 -3 V - 11 -2 V stroke grestore end showpage ! } ! \put(3087,1863){\rjust{$a=2,b=3$}} ! \put(3087,1963){\rjust{$a=1,b=2$}} ! \put(3087,2063){\rjust{$a=1,b=1$}} ! \put(1925,2276){\cjust{Weibull Distribution}} ! \put(1925,100){\cjust{$x$}} ! \put(0,1238){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(3500,200){\cjust{2}} ! \put(2713,200){\cjust{1.5}} ! \put(1925,200){\cjust{1}} ! \put(1138,200){\cjust{0.5}} ! \put(350,200){\cjust{0}} ! \put(300,2176){\rjust{1.5}} ! \put(300,1551){\rjust{1}} ! \put(300,925){\rjust{0.5}} ! \put(300,300){\rjust{0}} \endGNUPLOTpicture --- 279,1263 ---- 1.000 UL LTb ! 450 300 M 63 0 V ! 2937 0 R -63 0 V ! 450 892 M 63 0 V ! 2937 0 R -63 0 V ! 450 1484 M 63 0 V ! 2937 0 R -63 0 V ! 450 2076 M 63 0 V ! 2937 0 R -63 0 V ! 450 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1200 300 M 0 63 V ! 0 1713 R 0 -63 V ! 1950 300 M 0 63 V ! 0 1713 R 0 -63 V ! 2700 300 M 0 63 V ! 0 1713 R 0 -63 V ! 3450 300 M 0 63 V ! 0 1713 R 0 -63 V 1.000 UL LTb ! 450 300 M ! 3000 0 V ! 0 1776 V ! -3000 0 V ! 450 300 L 1.000 UL LT0 ! 3087 1963 M 263 0 V ! 450 1484 M 10 -8 V 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V 10 -8 V ! 10 -7 V 10 -8 V ! 10 -7 V 10 -8 V 10 -7 V ! 10 -7 V 10 -8 V 10 -7 V 11 -7 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -6 V 10 -7 V 10 -7 V 10 -6 V ! 10 -7 V 10 -6 V 10 -7 V 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 11 -6 V ! 10 -6 V 10 -5 V 10 -6 V 10 -6 V 10 -6 V ! 10 -5 V 10 -6 V 10 -5 V ! 10 -6 V 10 -5 V 10 -6 V 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -6 V ! 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -5 V 10 -5 V 10 -5 V 10 -4 V 10 -5 V 11 -5 V 10 -5 V 10 -5 V ! 10 -4 V ! 10 -5 V 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -5 V ! 10 -4 V 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -4 V 10 -4 V ! 10 -5 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -5 V ! 10 -4 V ! 10 -4 V 10 -3 V 11 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V 10 -3 V 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -4 V 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -4 V 10 -3 V 10 -3 V 10 -4 V 10 -3 V 11 -3 V + 10 -3 V + 10 -3 V + 10 -4 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V + 10 -3 V 10 -2 V 10 -3 V 10 -3 V 10 -3 V 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -3 V 11 -2 V 10 -3 V ! 10 -3 V 10 -2 V ! 10 -3 V 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V 10 -3 V ! 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -3 V 10 -2 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V ! 10 -2 V 10 -3 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V + 10 -3 V 11 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -1 V 11 -2 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V ! 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -2 V ! 10 -1 V 10 -1 V 11 -2 V 10 -1 V ! 10 -2 V 10 -1 V 10 -2 V 10 -1 V 10 -1 V 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V 11 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -1 V + 10 -2 V + 10 -1 V + 10 -1 V + 10 -1 V 1.000 UL LT1 ! 3087 1863 M 263 0 V ! 450 300 M 10 16 V 10 16 V ! 10 15 V 10 16 V 10 16 V 10 16 V 10 16 V ! 10 15 V ! 10 16 V 10 16 V 10 15 V 10 16 V ! 10 15 V 10 16 V 11 15 V + 10 16 V + 10 15 V + 10 15 V + 10 15 V + 10 15 V + 10 15 V 10 15 V 10 15 V 10 14 V ! 10 15 V ! 10 15 V ! 10 14 V ! 10 14 V ! 10 14 V ! 10 14 V 10 14 V 10 14 V 10 14 V 10 13 V ! 10 14 V ! 10 13 V ! 10 13 V ! 10 13 V 10 13 V 10 13 V 10 12 V ! 10 13 V ! 10 12 V 10 12 V 11 12 V 10 12 V 10 11 V ! 10 12 V ! 10 11 V ! 10 11 V ! 10 11 V ! 10 11 V ! 10 10 V 10 11 V 10 10 V 10 10 V ! 10 10 V ! 10 9 V ! 10 10 V ! 10 9 V ! 10 9 V 10 9 V 10 9 V 10 8 V 10 8 V ! 10 8 V ! 10 8 V ! 10 8 V 10 7 V 10 7 V ! 10 8 V ! 10 6 V ! 10 7 V 10 6 V ! 11 7 V 10 6 V 10 5 V ! 10 6 V ! 10 5 V ! 10 6 V ! 10 5 V ! 10 4 V ! 10 5 V ! 10 4 V ! 10 4 V 10 4 V 10 4 V 10 4 V 10 3 V 10 3 V ! 10 3 V ! 10 3 V ! 10 2 V ! 10 3 V 10 2 V 10 2 V 10 2 V 10 1 V 10 1 V ! 10 2 V 10 1 V 10 0 V ! 10 1 V ! 10 0 V ! 11 1 V 10 0 V 10 -1 V ! 10 0 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -2 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V ! 10 -3 V 10 -3 V 10 -3 V 10 -3 V 10 -4 V 10 -4 V ! 10 -3 V ! 10 -4 V ! 10 -4 V 10 -4 V 10 -5 V 11 -4 V + 10 -4 V 10 -5 V 10 -5 V ! 10 -4 V ! 10 -5 V 10 -5 V 10 -6 V 10 -5 V ! 10 -5 V ! 10 -5 V ! 10 -6 V ! 10 -6 V ! 10 -5 V ! 10 -6 V ! 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -7 V ! 10 -6 V 10 -7 V 10 -7 V + 10 -6 V 11 -7 V 10 -7 V ! 10 -6 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -8 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -7 V 11 -6 V 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V ! 10 -7 V 10 -6 V ! 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -7 V ! 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -6 V ! 10 -7 V ! 10 -6 V ! 10 -7 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 10 -6 V 11 -6 V + 10 -6 V + 10 -5 V + 10 -6 V + 10 -6 V + 10 -5 V + 10 -6 V + 10 -5 V + 10 -6 V + 10 -5 V + 10 -5 V + 10 -6 V + 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -5 V 10 -4 V 10 -5 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V ! 10 -5 V 10 -4 V 10 -4 V + 10 -5 V 11 -4 V 10 -4 V 10 -4 V 10 -4 V 10 -4 V ! 10 -4 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V ! 10 -4 V 10 -3 V ! 10 -4 V 10 -3 V 10 -4 V 10 -3 V ! 10 -3 V ! 10 -4 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V ! 10 -3 V 10 -2 V 10 -3 V 11 -3 V 10 -2 V ! 10 -3 V 10 -2 V ! 10 -3 V ! 10 -2 V ! 10 -3 V 10 -2 V 10 -2 V 10 -3 V 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 1.000 UL LT2 ! 3087 1763 M 263 0 V ! 450 300 M 10 0 V 10 0 V 10 0 V 10 0 V 10 0 V ! 10 1 V 10 0 V 10 0 V 10 1 V ! 10 0 V ! 10 0 V ! 10 1 V ! 10 0 V 10 1 V 11 0 V 10 1 V 10 1 V ! 10 0 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V ! 10 0 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V ! 10 1 V ! 10 2 V 10 1 V ! 10 2 V ! 10 2 V 10 1 V 11 2 V + 10 2 V + 10 2 V + 10 2 V 10 1 V 10 2 V 10 2 V 10 2 V 10 2 V ! 10 3 V ! 10 2 V ! 10 2 V ! 10 2 V 10 2 V 10 3 V 10 2 V 10 2 V 10 3 V ! 10 2 V 10 3 V 10 2 V ! 10 3 V 10 2 V 10 3 V ! 10 2 V 10 3 V 10 3 V 10 3 V ! 10 2 V 10 3 V 11 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V 10 4 V 10 3 V ! 10 3 V 10 4 V 10 3 V 10 3 V ! 10 4 V 10 3 V 10 4 V ! 10 3 V 10 4 V ! 10 3 V 10 4 V ! 10 3 V 10 4 V 10 4 V ! 10 3 V 10 4 V 11 4 V + 10 3 V + 10 4 V + 10 4 V + 10 4 V + 10 4 V 10 4 V 10 3 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V 10 5 V + 10 4 V + 10 4 V 11 4 V + 10 4 V 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V 10 5 V ! 10 4 V ! 10 4 V ! 10 4 V 10 5 V 10 4 V 10 4 V 10 4 V ! 10 5 V ! 10 4 V 10 4 V 10 4 V ! 10 5 V 10 4 V 10 4 V 10 4 V ! 10 5 V 10 4 V 10 4 V 10 4 V 10 5 V 10 4 V ! 10 4 V 10 4 V 11 4 V + 10 4 V + 10 4 V 10 5 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V 10 4 V ! 10 4 V ! 10 4 V ! 10 4 V 10 3 V 10 4 V 10 4 V 10 4 V ! 10 4 V ! 10 4 V 10 3 V 10 4 V ! 10 4 V 10 3 V ! 10 4 V 10 3 V ! 10 4 V 10 3 V + 10 4 V 11 3 V + 10 4 V + 10 3 V + 10 4 V + 10 3 V + 10 3 V + 10 3 V + 10 4 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V + 10 3 V 10 3 V 10 3 V 10 2 V ! 10 3 V ! 10 3 V ! 10 3 V 10 2 V ! 10 3 V 10 2 V ! 10 3 V 10 2 V 10 3 V 10 2 V 10 2 V 10 2 V + 10 3 V 11 2 V + 10 2 V + 10 2 V + 10 2 V + 10 2 V + 10 2 V 10 1 V 10 2 V 10 2 V 10 2 V 10 1 V ! 10 2 V 10 1 V ! 10 2 V ! 10 1 V ! 10 1 V ! 10 1 V ! 10 2 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 1 V 10 0 V ! 10 1 V ! 10 1 V ! 10 0 V ! 10 1 V ! 10 0 V ! 11 1 V ! 10 0 V ! 10 0 V ! 10 1 V ! 10 0 V ! 10 0 V ! 10 0 V ! 10 0 V 10 0 V 10 0 V 10 -1 V 10 0 V 10 0 V ! 10 -1 V 10 0 V 10 -1 V ! 10 0 V ! 10 -1 V ! 10 0 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V ! 10 -1 V 10 -1 V 10 -1 V 10 -2 V 10 -1 V 11 -1 V 10 -2 V ! 10 -1 V 10 -2 V 10 -1 V 10 -2 V 10 -2 V 10 -2 V ! 10 -1 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V ! 10 -2 V 10 -3 V stroke grestore end showpage ! }}% ! \put(3037,1763){\rjust{$a=2,b=3$}}% ! \put(3037,1863){\rjust{$a=1,b=2$}}% ! \put(3037,1963){\rjust{$a=1,b=1$}}% ! \put(1950,2226){\cjust{Weibull Distribution}}% ! \put(1950,50){\cjust{$x$}}% ! \put(100,1188){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(x)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(3450,200){\cjust{ 2}}% ! \put(2700,200){\cjust{ 1.5}}% ! \put(1950,200){\cjust{ 1}}% ! \put(1200,200){\cjust{ 0.5}}% ! \put(450,200){\cjust{ 0}}% ! \put(400,2076){\rjust{ 1.5}}% ! \put(400,1484){\rjust{ 1}}% ! \put(400,892){\rjust{ 0.5}}% ! \put(400,300){\rjust{ 0}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/randist.texi gsl-1.4/doc/randist.texi *** gsl-1.3/doc/randist.texi Wed Dec 18 20:26:58 2002 --- gsl-1.4/doc/randist.texi Tue Aug 12 11:30:26 2003 *************** *** 1,4 **** @cindex random number distributions ! This chapter describes functions for generating random variates and computing their probability distributions. Samples from the --- 1,7 ---- @cindex random number distributions ! @cindex cumulative distribution functions (CDFs) ! @cindex CDFs, cumulative distribution functions ! @cindex inverse cumulative distribution functions ! @cindex quantile functions This chapter describes functions for generating random variates and computing their probability distributions. Samples from the *************** *** 10,14 **** one call to the random number generator. - More complicated distributions are created by the @dfn{acceptance-rejection} method, which compares the desired --- 13,16 ---- *************** *** 16,23 **** analytically. This usually requires several samples from the generator. ! The functions described in this section are declared in ! @file{gsl_randist.h}. @menu * The Gaussian Distribution:: * The Gaussian Tail Distribution:: --- 18,34 ---- analytically. This usually requires several samples from the generator. ! The library also provides cumulative distribution functions and inverse ! cumulative distribution functions, sometimes referred to as quantile ! functions. The cumulative distribution functions and their inverses are ! computed separately for the upper and lower tails of the distribution, ! allowing full accuracy to be retained for small results. ! ! The functions for random variates and probability density functions ! described in this section are declared in @file{gsl_randist.h}. The ! corresponding cumulative distribution functions are declared in ! @file{gsl_cdf.h}. @menu + * Random Number Distribution Introduction:: * The Gaussian Distribution:: * The Gaussian Tail Distribution:: *************** *** 61,69 **** @end menu @page @node The Gaussian Distribution @section The Gaussian Distribution @deftypefn Random double gsl_ran_gaussian (const gsl_rng * @var{r}, double @var{sigma}) ! @cindex Gaussian random variates This function returns a Gaussian random variate, with mean zero and standard deviation @var{sigma}. The probability distribution for --- 72,130 ---- @end menu + @node Random Number Distribution Introduction + @section Introduction + + Continuous random number distributions are defined by a probability + density function, @math{p(x)}, such that the probability of @math{x} + occurring in the infinitesimal range @math{x} to @math{x+dx} is @c{$p\,dx$} + @math{p dx}. + + The cumulative distribution function for the lower tail is defined by, + @tex + \beforedisplay + $$ + P(x) = \int_{-\infty}^{x} dx' p(x') + $$ + \afterdisplay + @end tex + @ifinfo + @example + P(x) = \int_@{-\infty@}^@{x@} dx' p(x') + @end example + @end ifinfo + @noindent + and gives the probability of a variate taking a value less than @math{x}. + + The cumulative distribution function for the upper tail is defined by, + @tex + \beforedisplay + $$ + Q(x) = \int_{x}^{-\infty} dx' p(x') + $$ + \afterdisplay + @end tex + @ifinfo + @example + P(x) = \int_@{x@}^@{-\infty@} dx' p(x') + @end example + @end ifinfo + @noindent + and gives the probability of a variate taking a greater than @math{x}. + The upper and lower cumulative distribution functions are related by + @math{P(x) + Q(x) = 1} and satisfy @c{$0 \le P(x) \le 1$} + @math{0 <= P(x) <= 1}, @c{$0 \le Q(x) \le 1$} + @math{0 <= Q(x) <= 1}. + + The inverse cumulative distributions, @c{$x=P^{-1}(P)$} + @math{x=P^@{-1@}(P)} and @c{$x=Q^{-1}(Q)$} + @math{x=Q^@{-1@}(Q)} give the values of @math{x} + which correspond to a specific value of @math{P} or {Q}. + They can be used to find confidence limits from probability values. + @page @node The Gaussian Distribution @section The Gaussian Distribution @deftypefn Random double gsl_ran_gaussian (const gsl_rng * @var{r}, double @var{sigma}) ! @cindex Gaussian distribution This function returns a Gaussian random variate, with mean zero and standard deviation @var{sigma}. The probability distribution for *************** *** 87,91 **** @code{gsl_ran_gaussian} to obtain a Gaussian distribution with mean @math{\mu}. This function uses the Box-Mueller algorithm which requires two ! calls the random number generator @var{r}. @end deftypefn --- 148,152 ---- @code{gsl_ran_gaussian} to obtain a Gaussian distribution with mean @math{\mu}. This function uses the Box-Mueller algorithm which requires two ! calls to the random number generator @var{r}. @end deftypefn *************** *** 101,106 **** @end tex ! @deftypefun double gsl_ran_gaussian_ratio_method (const gsl_rng * @var{r}, const double @var{sigma}) ! This function computes a gaussian random variate using the Kinderman-Monahan ratio method. @end deftypefun --- 162,167 ---- @end tex ! @deftypefun double gsl_ran_gaussian_ratio_method (const gsl_rng * @var{r}, double @var{sigma}) ! This function computes a Gaussian random variate using the Kinderman-Monahan ratio method. @end deftypefun *************** *** 114,122 **** @end deftypefn @page @node The Gaussian Tail Distribution @section The Gaussian Tail Distribution @deftypefn Random double gsl_ran_gaussian_tail (const gsl_rng * @var{r}, double @var{a}, double @var{sigma}) ! @cindex Gaussian Tail random variates This function provides random variates from the upper tail of a Gaussian distribution with standard deviation @var{sigma}. The values returned --- 175,201 ---- @end deftypefn + @deftypefun double gsl_cdf_gaussian_P (double @var{x}, double @var{sigma}) + @deftypefunx double gsl_cdf_gaussian_Q (double @var{x}, double @var{sigma}) + @deftypefunx double gsl_cdf_gaussian_Pinv (double @var{P}, double @var{sigma}) + @deftypefunx double gsl_cdf_gaussian_Qinv (double @var{Q}, double @var{sigma}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Gaussian + distribution with standard deviation @var{sigma}. + @end deftypefun + + @deftypefun double gsl_cdf_ugaussian_P (double @var{x}) + @deftypefunx double gsl_cdf_ugaussian_Q (double @var{x}) + @deftypefunx double gsl_cdf_ugaussian_Pinv (double @var{P}) + @deftypefunx double gsl_cdf_ugaussian_Qinv (double @var{Q}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the unit Gaussian + distribution. + @end deftypefun + @page @node The Gaussian Tail Distribution @section The Gaussian Tail Distribution @deftypefn Random double gsl_ran_gaussian_tail (const gsl_rng * @var{r}, double @var{a}, double @var{sigma}) ! @cindex Gaussian Tail distribution This function provides random variates from the upper tail of a Gaussian distribution with standard deviation @var{sigma}. The values returned *************** *** 183,187 **** @deftypefn Random void gsl_ran_bivariate_gaussian (const gsl_rng * @var{r}, double @var{sigma_x}, double @var{sigma_y}, double @var{rho}, double * @var{x}, double * @var{y}) ! @cindex Gaussian random variates This function generates a pair of correlated gaussian variates, with mean zero, correlation coefficient @var{rho} and standard deviations --- 262,268 ---- @deftypefn Random void gsl_ran_bivariate_gaussian (const gsl_rng * @var{r}, double @var{sigma_x}, double @var{sigma_y}, double @var{rho}, double * @var{x}, double * @var{y}) ! @cindex Bivariate Gaussian distribution ! @cindex Two-dimensional Gaussian distribution ! @cindex Gaussian distribution, bivariate This function generates a pair of correlated gaussian variates, with mean zero, correlation coefficient @var{rho} and standard deviations *************** *** 192,196 **** \beforedisplay $$ ! p(x,y) dx dy = {1 \over 2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp \left(-(x^2 + y^2 - 2 \rho x y) \over 2\sigma_x^2\sigma_y^2 (1-\rho^2)\right) dx dy $$ \afterdisplay --- 273,277 ---- \beforedisplay $$ ! p(x,y) dx dy = {1 \over 2 \pi \sigma_x \sigma_y \sqrt{1-\rho^2}} \exp \left(-{(x^2/\sigma_x^2 + y^2/\sigma_y^2 - 2 \rho x y/(\sigma_x\sigma_y)) \over 2(1-\rho^2)}\right) dx dy $$ \afterdisplay *************** *** 198,202 **** @ifinfo @example ! p(x,y) dx dy = @{1 \over 2 \pi \sigma_x \sigma_y \sqrt@{1-\rho^2@}@} \exp (-(x^2 + y^2 - 2 \rho x y)/2\sigma_x^2\sigma_y^2 (1-\rho^2)) dx dy @end example @end ifinfo --- 279,283 ---- @ifinfo @example ! p(x,y) dx dy = @{1 \over 2 \pi \sigma_x \sigma_y \sqrt@{1-\rho^2@}@} \exp (-(x^2/\sigma_x^2 + y^2/\sigma_y^2 - 2 \rho x y/(\sigma_x\sigma_y))/2(1-\rho^2)) dx dy @end example @end ifinfo *************** *** 224,228 **** @section The Exponential Distribution @deftypefn Random double gsl_ran_exponential (const gsl_rng * @var{r}, double @var{mu}) ! @cindex Exponential random variates This function returns a random variate from the exponential distribution with mean @var{mu}. The distribution is, --- 305,309 ---- @section The Exponential Distribution @deftypefn Random double gsl_ran_exponential (const gsl_rng * @var{r}, double @var{mu}) ! @cindex Exponential distribution This function returns a random variate from the exponential distribution with mean @var{mu}. The distribution is, *************** *** 257,266 **** @end tex @page @node The Laplace Distribution @section The Laplace Distribution @deftypefn Random double gsl_ran_laplace (const gsl_rng * @var{r}, double @var{a}) ! @cindex two-sided exponential random variates ! @cindex Laplace distribution random variates This function returns a random variate from the Laplace distribution with width @var{a}. The distribution is, --- 338,356 ---- @end tex + @deftypefun double gsl_cdf_exponential_P (double @var{x}, double @var{mu}) + @deftypefunx double gsl_cdf_exponential_Q (double @var{x}, double @var{mu}) + @deftypefunx double gsl_cdf_exponential_Pinv (double @var{P}, double @var{mu}) + @deftypefunx double gsl_cdf_exponential_Qinv (double @var{Q}, double @var{mu}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the exponential + distribution with mean @var{mu}. + @end deftypefun + @page @node The Laplace Distribution @section The Laplace Distribution @deftypefn Random double gsl_ran_laplace (const gsl_rng * @var{r}, double @var{a}) ! @cindex Two-sided exponential distribution ! @cindex Laplace distribution This function returns a random variate from the Laplace distribution with width @var{a}. The distribution is, *************** *** 285,289 **** @deftypefun double gsl_ran_laplace_pdf (double @var{x}, double @var{a}) This function computes the probability density @math{p(x)} at @var{x} ! for a Laplace distribution with mean @var{a}, using the formula given above. @end deftypefun --- 375,379 ---- @deftypefun double gsl_ran_laplace_pdf (double @var{x}, double @var{a}) This function computes the probability density @math{p(x)} at @var{x} ! for a Laplace distribution with width @var{a}, using the formula given above. @end deftypefun *************** *** 294,302 **** @end tex @page @node The Exponential Power Distribution @section The Exponential Power Distribution @deftypefn Random double gsl_ran_exppow (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Exponential power distribution, random variates This function returns a random variate from the exponential power distribution with scale parameter @var{a} and exponent @var{b}. The distribution is, --- 384,402 ---- @end tex + @deftypefun double gsl_cdf_laplace_P (double @var{x}, double @var{a}) + @deftypefunx double gsl_cdf_laplace_Q (double @var{x}, double @var{a}) + @deftypefunx double gsl_cdf_laplace_Pinv (double @var{P}, double @var{a}) + @deftypefunx double gsl_cdf_laplace_Qinv (double @var{Q}, double @var{a}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Laplace + distribution with width @var{a}. + @end deftypefun + + @page @node The Exponential Power Distribution @section The Exponential Power Distribution @deftypefn Random double gsl_ran_exppow (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Exponential power distribution This function returns a random variate from the exponential power distribution with scale parameter @var{a} and exponent @var{b}. The distribution is, *************** *** 337,341 **** @section The Cauchy Distribution @deftypefn Random double gsl_ran_cauchy (const gsl_rng * @var{r}, double @var{a}) ! @cindex Cauchy random variates This function returns a random variate from the Cauchy distribution with scale parameter @var{a}. The probability distribution for Cauchy --- 437,441 ---- @section The Cauchy Distribution @deftypefn Random double gsl_ran_cauchy (const gsl_rng * @var{r}, double @var{a}) ! @cindex Cauchy distribution This function returns a random variate from the Cauchy distribution with scale parameter @var{a}. The probability distribution for Cauchy *************** *** 371,379 **** @end tex @page @node The Rayleigh Distribution @section The Rayleigh Distribution @deftypefn Random double gsl_ran_rayleigh (const gsl_rng * @var{r}, double @var{sigma}) ! @cindex Rayleigh random variates This function returns a random variate from the Rayleigh distribution with scale parameter @var{sigma}. The distribution is, --- 471,489 ---- @end tex + @deftypefun double gsl_cdf_cauchy_P (double @var{x}, double @var{a}) + @deftypefunx double gsl_cdf_cauchy_Q (double @var{x}, double @var{a}) + @deftypefunx double gsl_cdf_cauchy_Pinv (double @var{P}, double @var{a}) + @deftypefunx double gsl_cdf_cauchy_Qinv (double @var{Q}, double @var{a}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Cauchy + distribution with scale parameter @var{a}. + @end deftypefun + + @page @node The Rayleigh Distribution @section The Rayleigh Distribution @deftypefn Random double gsl_ran_rayleigh (const gsl_rng * @var{r}, double @var{sigma}) ! @cindex Rayleigh distribution This function returns a random variate from the Rayleigh distribution with scale parameter @var{sigma}. The distribution is, *************** *** 406,414 **** @end tex @page @node The Rayleigh Tail Distribution @section The Rayleigh Tail Distribution ! @deftypefn Random double gsl_ran_rayleigh_tail (const gsl_rng * @var{r}, double @var{a} double @var{sigma}) ! @cindex Rayleigh Tail random variates This function returns a random variate from the tail of the Rayleigh distribution with scale parameter @var{sigma} and a lower limit of --- 516,534 ---- @end tex + @deftypefun double gsl_cdf_rayleigh_P (double @var{x}, double @var{sigma}) + @deftypefunx double gsl_cdf_rayleigh_Q (double @var{x}, double @var{sigma}) + @deftypefunx double gsl_cdf_rayleigh_Pinv (double @var{P}, double @var{sigma}) + @deftypefunx double gsl_cdf_rayleigh_Qinv (double @var{Q}, double @var{sigma}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Rayleigh + distribution with scale parameter @var{sigma}. + @end deftypefun + + @page @node The Rayleigh Tail Distribution @section The Rayleigh Tail Distribution ! @deftypefn Random double gsl_ran_rayleigh_tail (const gsl_rng * @var{r}, double @var{a}, double @var{sigma}) ! @cindex Rayleigh Tail distribution This function returns a random variate from the tail of the Rayleigh distribution with scale parameter @var{sigma} and a lower limit of *************** *** 447,451 **** @section The Landau Distribution @deftypefn Random double gsl_ran_landau (const gsl_rng * @var{r}) ! @cindex Landau random variates This function returns a random variate from the Landau distribution. The probability distribution for Landau random variates is defined --- 567,571 ---- @section The Landau Distribution @deftypefn Random double gsl_ran_landau (const gsl_rng * @var{r}) ! @cindex Landau distribution This function returns a random variate from the Landau distribution. The probability distribution for Landau random variates is defined *************** *** 496,500 **** @section The Levy alpha-Stable Distributions @deftypefn Random double gsl_ran_levy (const gsl_rng * @var{r}, double @var{c}, double @var{alpha}) ! @cindex Levy distribution, random variates This function returns a random variate from the Levy symmetric stable distribution with scale @var{c} and exponent @var{alpha}. The symmetric --- 616,620 ---- @section The Levy alpha-Stable Distributions @deftypefn Random double gsl_ran_levy (const gsl_rng * @var{r}, double @var{c}, double @var{alpha}) ! @cindex Levy distribution This function returns a random variate from the Levy symmetric stable distribution with scale @var{c} and exponent @var{alpha}. The symmetric *************** *** 535,539 **** @deftypefn Random double gsl_ran_levy_skew (const gsl_rng * @var{r}, double @var{c}, double @var{alpha}, double @var{beta}) ! @cindex Levy distribution, random variates This function returns a random variate from the Levy skew stable distribution with scale @var{c}, exponent @var{alpha} and skewness --- 655,660 ---- @deftypefn Random double gsl_ran_levy_skew (const gsl_rng * @var{r}, double @var{c}, double @var{alpha}, double @var{beta}) ! @cindex Levy distribution, skew ! @cindex Skew Levy distribution This function returns a random variate from the Levy skew stable distribution with scale @var{c}, exponent @var{alpha} and skewness *************** *** 593,597 **** @section The Gamma Distribution @deftypefn Random double gsl_ran_gamma (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Gamma distribution random variates This function returns a random variate from the gamma distribution. The distribution function is, --- 714,718 ---- @section The Gamma Distribution @deftypefn Random double gsl_ran_gamma (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Gamma distribution This function returns a random variate from the gamma distribution. The distribution function is, *************** *** 627,635 **** @end tex @page @node The Flat (Uniform) Distribution @section The Flat (Uniform) Distribution @deftypefn Random double gsl_ran_flat (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex flat distribution random variates This function returns a random variate from the flat (uniform) distribution from @var{a} to @var{b}. The distribution is, --- 748,766 ---- @end tex + @deftypefun double gsl_cdf_gamma_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gamma_Q (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gamma_Pinv (double @var{P}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gamma_Qinv (double @var{Q}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the gamma + distribution with parameters @var{a} and @var{b}. + @end deftypefun + @page @node The Flat (Uniform) Distribution @section The Flat (Uniform) Distribution @deftypefn Random double gsl_ran_flat (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex flat distribution ! @cindex uniform distribution This function returns a random variate from the flat (uniform) distribution from @var{a} to @var{b}. The distribution is, *************** *** 663,671 **** @end tex @page @node The Lognormal Distribution @section The Lognormal Distribution @deftypefn Random double gsl_ran_lognormal (const gsl_rng * @var{r}, double @var{zeta}, double @var{sigma}) ! @cindex Lognormal random variates This function returns a random variate from the lognormal distribution. The distribution function is, --- 794,812 ---- @end tex + @deftypefun double gsl_cdf_flat_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_flat_Q (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_flat_Pinv (double @var{P}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_flat_Qinv (double @var{Q}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for a uniform distribution + from @var{a} to @var{b}. + @end deftypefun + + @page @node The Lognormal Distribution @section The Lognormal Distribution @deftypefn Random double gsl_ran_lognormal (const gsl_rng * @var{r}, double @var{zeta}, double @var{sigma}) ! @cindex Lognormal distribution This function returns a random variate from the lognormal distribution. The distribution function is, *************** *** 698,701 **** --- 839,852 ---- @end tex + @deftypefun double gsl_cdf_lognormal_P (double @var{x}, double @var{zeta}, double @var{sigma}) + @deftypefunx double gsl_cdf_lognormal_Q (double @var{x}, double @var{zeta}, double @var{sigma}) + @deftypefunx double gsl_cdf_lognormal_Pinv (double @var{P}, double @var{zeta}, double @var{sigma}) + @deftypefunx double gsl_cdf_lognormal_Qinv (double @var{Q}, double @var{zeta}, double @var{sigma}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the lognormal + distribution with parameters @var{zeta} and @var{sigma}. + @end deftypefun + + @page @node The Chi-squared Distribution *************** *** 721,725 **** @deftypefn Random double gsl_ran_chisq (const gsl_rng * @var{r}, double @var{nu}) ! @cindex Chi-squared random variates This function returns a random variate from the chi-squared distribution with @var{nu} degrees of freedom. The distribution function is, --- 872,876 ---- @deftypefn Random double gsl_ran_chisq (const gsl_rng * @var{r}, double @var{nu}) ! @cindex Chi-squared distribution This function returns a random variate from the chi-squared distribution with @var{nu} degrees of freedom. The distribution function is, *************** *** 728,732 **** \beforedisplay $$ ! p(x) dx = {1 \over \Gamma(\nu/2) } (x/2)^{\nu/2 - 1} \exp(-x/2) dx $$ \afterdisplay --- 879,883 ---- \beforedisplay $$ ! p(x) dx = {1 \over 2 \Gamma(\nu/2) } (x/2)^{\nu/2 - 1} \exp(-x/2) dx $$ \afterdisplay *************** *** 734,738 **** @ifinfo @example ! p(x) dx = @{1 \over \Gamma(\nu/2) @} (x/2)^@{\nu/2 - 1@} \exp(-x/2) dx @end example @end ifinfo --- 885,889 ---- @ifinfo @example ! p(x) dx = @{1 \over 2 \Gamma(\nu/2) @} (x/2)^@{\nu/2 - 1@} \exp(-x/2) dx @end example @end ifinfo *************** *** 754,757 **** --- 905,919 ---- @end tex + @deftypefun double gsl_cdf_chisq_P (double @var{x}, double @var{nu}) + @deftypefunx double gsl_cdf_chisq_Q (double @var{x}, double @var{nu}) + @deftypefunx double gsl_cdf_chisq_Pinv (double @var{P}, double @var{nu}) + @deftypefunx double gsl_cdf_chisq_Qinv (double @var{Q}, double @var{nu}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the chi-squared + distribution with @var{nu} degrees of freedom. + @end deftypefun + + + @page @node The F-distribution *************** *** 777,781 **** @deftypefn Random double gsl_ran_fdist (const gsl_rng * @var{r}, double @var{nu1}, double @var{nu2}) ! @cindex F-distribution random variates This function returns a random variate from the F-distribution with degrees of freedom @var{nu1} and @var{nu2}. The distribution function is, --- 939,943 ---- @deftypefn Random double gsl_ran_fdist (const gsl_rng * @var{r}, double @var{nu1}, double @var{nu2}) ! @cindex F-distribution This function returns a random variate from the F-distribution with degrees of freedom @var{nu1} and @var{nu2}. The distribution function is, *************** *** 817,820 **** --- 979,989 ---- @end tex + @deftypefun double gsl_cdf_Fdist_P (double @var{x}, double @var{nu1}, double @var{nu2}) + @deftypefunx double gsl_cdf_Fdist_Q (double @var{x}, double @var{nu1}, double @var{nu2}) + These functions compute the cumulative distribution functions + @math{P(x)} and @math{Q(x)} for the F-distribution with @var{nu1} and + @var{nu2} degrees of freedom. + @end deftypefun + @page @node The t-distribution *************** *** 841,845 **** @deftypefn Random double gsl_ran_tdist (const gsl_rng * @var{r}, double @var{nu}) ! @cindex t-distribution random variates This function returns a random variate from the t-distribution. The distribution function is, --- 1010,1015 ---- @deftypefn Random double gsl_ran_tdist (const gsl_rng * @var{r}, double @var{nu}) ! @cindex t-distribution ! @cindex Student t-distribution This function returns a random variate from the t-distribution. The distribution function is, *************** *** 874,882 **** @end tex @page @node The Beta Distribution @section The Beta Distribution @deftypefn Random double gsl_ran_beta (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Beta distribution random variates This function returns a random variate from the beta distribution. The distribution function is, --- 1044,1061 ---- @end tex + @deftypefun double gsl_cdf_tdist_P (double @var{x}, double @var{nu}) + @deftypefunx double gsl_cdf_tdist_Q (double @var{x}, double @var{nu}) + @deftypefunx double gsl_cdf_tdist_Pinv (double @var{P}, double @var{nu}) + @deftypefunx double gsl_cdf_tdist_Qinv (double @var{Q}, double @var{nu}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the t-distribution + with @var{nu} degrees of freedom. + @end deftypefun + @page @node The Beta Distribution @section The Beta Distribution @deftypefn Random double gsl_ran_beta (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Beta distribution This function returns a random variate from the beta distribution. The distribution function is, *************** *** 910,913 **** --- 1089,1099 ---- @end tex + @deftypefun double gsl_cdf_beta_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_beta_Q (double @var{x}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)} and @math{Q(x)} for the beta distribution with + parameters @var{a} and @var{b}. + @end deftypefun + @page @node The Logistic Distribution *************** *** 915,919 **** @deftypefn Random double gsl_ran_logistic (const gsl_rng * @var{r}, double @var{a}) ! @cindex Logistic random variates This function returns a random variate from the logistic distribution. The distribution function is, --- 1101,1105 ---- @deftypefn Random double gsl_ran_logistic (const gsl_rng * @var{r}, double @var{a}) ! @cindex Logistic distribution This function returns a random variate from the logistic distribution. The distribution function is, *************** *** 946,954 **** @end tex @page @node The Pareto Distribution @section The Pareto Distribution @deftypefn Random double gsl_ran_pareto (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Pareto random variates This function returns a random variate from the Pareto distribution of order @var{a}. The distribution function is, --- 1132,1149 ---- @end tex + @deftypefun double gsl_cdf_logistic_P (double @var{x}, double @var{a}) + @deftypefunx double gsl_cdf_logistic_Q (double @var{x}, double @var{a}) + @deftypefunx double gsl_cdf_logistic_Pinv (double @var{P}, double @var{a}) + @deftypefunx double gsl_cdf_logistic_Qinv (double @var{Q}, double @var{a}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the logistic + distribution with scale parameter @var{a}. + @end deftypefun + @page @node The Pareto Distribution @section The Pareto Distribution @deftypefn Random double gsl_ran_pareto (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Pareto distribution This function returns a random variate from the Pareto distribution of order @var{a}. The distribution function is, *************** *** 982,985 **** --- 1177,1189 ---- @end tex + @deftypefun double gsl_cdf_pareto_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_pareto_Q (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_pareto_Pinv (double @var{P}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_pareto_Qinv (double @var{Q}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Pareto + distribution with exponent @var{a} and scale @var{b}. + @end deftypefun + @page @node The Spherical Distribution (2D & 3D) *************** *** 1002,1007 **** have been expensive in the old days, but with modern hardware implementations, this is sometimes the fastest way to go. This is the ! case for my home Pentium (but not the case for my Sun Sparcstation 20 at ! work). Once can avoid the trig evaluations by choosing @var{x} and @var{y} in the interior of a unit circle (choose them at random from the interior of the enclosing square, and then reject those that are outside --- 1206,1211 ---- have been expensive in the old days, but with modern hardware implementations, this is sometimes the fastest way to go. This is the ! case for the Pentium (but not the case for the Sun Sparcstation). ! One can avoid the trig evaluations by choosing @var{x} and @var{y} in the interior of a unit circle (choose them at random from the interior of the enclosing square, and then reject those that are outside *************** *** 1051,1055 **** @section The Weibull Distribution @deftypefn Random double gsl_ran_weibull (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Weibull distribution random variates This function returns a random variate from the Weibull distribution. The distribution function is, --- 1255,1259 ---- @section The Weibull Distribution @deftypefn Random double gsl_ran_weibull (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Weibull distribution This function returns a random variate from the Weibull distribution. The distribution function is, *************** *** 1084,1092 **** @end tex @page @node The Type-1 Gumbel Distribution @section The Type-1 Gumbel Distribution @deftypefn Random double gsl_ran_gumbel1 (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Gumbel distribution (Type 1), random variates @cindex Type 1 Gumbel distribution, random variates This function returns a random variate from the Type-1 Gumbel --- 1288,1306 ---- @end tex + @deftypefun double gsl_cdf_weibull_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_weibull_Q (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_weibull_Pinv (double @var{P}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_weibull_Qinv (double @var{Q}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Weibull + distribution with scale @var{a} and exponent @var{b}. + @end deftypefun + + @page @node The Type-1 Gumbel Distribution @section The Type-1 Gumbel Distribution @deftypefn Random double gsl_ran_gumbel1 (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Gumbel distribution (Type 1) @cindex Type 1 Gumbel distribution, random variates This function returns a random variate from the Type-1 Gumbel *************** *** 1121,1130 **** @end tex @page @node The Type-2 Gumbel Distribution @section The Type-2 Gumbel Distribution @deftypefn Random double gsl_ran_gumbel2 (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Gumbel distribution (Type 2), random variates ! @cindex Type 2 Gumbel distribution, random variate This function returns a random variate from the Type-2 Gumbel distribution. The Type-2 Gumbel distribution function is, --- 1335,1354 ---- @end tex + @deftypefun double gsl_cdf_gumbel1_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gumbel1_Q (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gumbel1_Pinv (double @var{P}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gumbel1_Qinv (double @var{Q}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Type-1 Gumbel + distribution with parameters @var{a} and @var{b}. + @end deftypefun + + @page @node The Type-2 Gumbel Distribution @section The Type-2 Gumbel Distribution @deftypefn Random double gsl_ran_gumbel2 (const gsl_rng * @var{r}, double @var{a}, double @var{b}) ! @cindex Gumbel distribution (Type 2) ! @cindex Type 2 Gumbel distribution This function returns a random variate from the Type-2 Gumbel distribution. The Type-2 Gumbel distribution function is, *************** *** 1158,1165 **** @end tex @page @node The Dirichlet Distribution @section The Dirichlet Distribution ! @deftypefn Random void gsl_ran_dirichlet (const gsl_rng * @var{r}, const size_t @var{K}, const double @var{alpha}[], double @var{theta}[]) @cindex Dirichlet distribution This function returns an array of @var{K} random variates from a Dirichlet --- 1382,1399 ---- @end tex + @deftypefun double gsl_cdf_gumbel2_P (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gumbel2_Q (double @var{x}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gumbel2_Pinv (double @var{P}, double @var{a}, double @var{b}) + @deftypefunx double gsl_cdf_gumbel2_Qinv (double @var{Q}, double @var{a}, double @var{b}) + These functions compute the cumulative distribution functions + @math{P(x)}, @math{Q(x)} and their inverses for the Type-2 Gumbel + distribution with parameters @var{a} and @var{b}. + @end deftypefun + + @page @node The Dirichlet Distribution @section The Dirichlet Distribution ! @deftypefn Random void gsl_ran_dirichlet (const gsl_rng * @var{r}, size_t @var{K}, const double @var{alpha}[], double @var{theta}[]) @cindex Dirichlet distribution This function returns an array of @var{K} random variates from a Dirichlet *************** *** 1185,1189 **** @math{theta_i >= 0} and @c{$\alpha_i \ge 0$} ! @math{alpha_i >= 0}. The normalization factor @math{Z} is --- 1419,1423 ---- @math{theta_i >= 0} and @c{$\alpha_i \ge 0$} ! @math{alpha_i >= 0}. The delta function ensures that @math{\sum \theta_i = 1}. The normalization factor @math{Z} is *************** *** 1209,1213 **** @end deftypefn ! @deftypefun double gsl_ran_dirichlet_pdf (const size_t @var{K}, const double @var{alpha}[], const double @var{theta}[]) This function computes the probability density @c{$p(\theta_1, \ldots , \theta_K)$} --- 1443,1447 ---- @end deftypefn ! @deftypefun double gsl_ran_dirichlet_pdf (size_t @var{K}, const double @var{alpha}[], const double @var{theta}[]) This function computes the probability density @c{$p(\theta_1, \ldots , \theta_K)$} *************** *** 1217,1221 **** @end deftypefun ! @deftypefun double gsl_ran_dirichlet_lnpdf (const size_t @var{K}, const double @var{alpha}[], const double @var{theta}[]) This function computes the logarithm of the probability density @c{$p(\theta_1, \ldots , \theta_K)$} --- 1451,1455 ---- @end deftypefun ! @deftypefun double gsl_ran_dirichlet_lnpdf (size_t @var{K}, const double @var{alpha}[], const double @var{theta}[]) This function computes the logarithm of the probability density @c{$p(\theta_1, \ldots , \theta_K)$} *************** *** 1440,1444 **** @node The Multinomial Distribution @section The Multinomial Distribution ! @deftypefn Random void gsl_ran_multinomial (const gsl_rng * @var{r}, const size_t @var{K}, const unsigned int @var{N}, const double @var{p}[], unsigned int @var{n}[]) @cindex Multinomial distribution --- 1674,1678 ---- @node The Multinomial Distribution @section The Multinomial Distribution ! @deftypefn Random void gsl_ran_multinomial (const gsl_rng * @var{r}, size_t @var{K}, unsigned int @var{N}, const double @var{p}[], unsigned int @var{n}[]) @cindex Multinomial distribution *************** *** 1465,1469 **** are nonnegative integers with @c{$\sum_{k=1}^{K} n_k =N$} ! @math{sum_@{k=1,K@} n_k = N}, and @c{$(p_1, p_2, \ldots, p_K)$} --- 1699,1703 ---- are nonnegative integers with @c{$\sum_{k=1}^{K} n_k =N$} ! @math{sum_@{k=1@}^K n_k = N}, and @c{$(p_1, p_2, \ldots, p_K)$} *************** *** 1478,1482 **** @end deftypefn ! @deftypefun double gsl_ran_multinomial_pdf (const size_t @var{K}, const double @var{p}[], const unsigned int @var{n}[]) This function computes the probability @c{$P(n_1, n_2, \ldots, n_K)$} --- 1712,1716 ---- @end deftypefn ! @deftypefun double gsl_ran_multinomial_pdf (size_t @var{K}, const double @var{p}[], const unsigned int @var{n}[]) This function computes the probability @c{$P(n_1, n_2, \ldots, n_K)$} *************** *** 1486,1490 **** @end deftypefun ! @deftypefun double gsl_ran_multinomial_lnpdf (const size_t @var{K}, const double @var{p}[], const unsigned int @var{n}[]) This function returns the logarithm of the probability for the multinomial distribution @c{$P(n_1, n_2, \ldots, n_K)$} --- 1720,1724 ---- @end deftypefun ! @deftypefun double gsl_ran_multinomial_lnpdf (size_t @var{K}, const double @var{p}[], const unsigned int @var{n}[]) This function returns the logarithm of the probability for the multinomial distribution @c{$P(n_1, n_2, \ldots, n_K)$} *************** *** 1535,1539 **** @section The Pascal Distribution ! @deftypefn Random {unsigned int} gsl_ran_pascal (const gsl_rng * @var{r}, double @var{p}, unsigned int @var{k}) This function returns a random integer from the Pascal distribution. The Pascal distribution is simply a negative binomial distribution with an --- 1769,1773 ---- @section The Pascal Distribution ! @deftypefn Random {unsigned int} gsl_ran_pascal (const gsl_rng * @var{r}, double @var{p}, unsigned int @var{n}) This function returns a random integer from the Pascal distribution. The Pascal distribution is simply a negative binomial distribution with an *************** *** 1765,1804 **** @example ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! const gsl_rng_type * T; ! gsl_rng * r; ! ! int i, n = 10; ! double mu = 3.0; ! ! /* create a generator chosen by the ! environment variable GSL_RNG_TYPE */ ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! /* print n random variates chosen from ! the poisson distribution with mean ! parameter mu */ ! ! for (i = 0; i < n; i++) ! @{ ! unsigned int k = gsl_ran_poisson (r, mu); ! printf(" %u", k); ! @} ! ! printf("\n"); ! return 0; ! @} @end example - @noindent If the library and header files are installed under @file{/usr/local} --- 1999,2004 ---- @example ! @verbatiminclude examples/randpoisson.c @end example @noindent If the library and header files are installed under @file{/usr/local} *************** *** 1815,1819 **** @example $ ./a.out ! 4 2 3 3 1 3 4 1 3 5 @end example --- 2015,2019 ---- @example $ ./a.out ! @verbatiminclude examples/randpoisson.out @end example *************** *** 1826,1831 **** @example $ GSL_RNG_SEED=123 ./a.out ! GSL_RNG_SEED=123 ! 1 1 2 1 2 6 2 1 8 7 @end example --- 2026,2030 ---- @example $ GSL_RNG_SEED=123 ./a.out ! @verbatiminclude examples/randpoisson.2.out @end example *************** *** 1834,1864 **** @example ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! double x = 0, y = 0, dx, dy; ! ! const gsl_rng_type * T; ! gsl_rng * r; ! ! gsl_rng_env_setup(); ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! printf("%g %g\n", x, y); ! ! for (i = 0; i < 10; i++) ! @{ ! gsl_ran_dir_2d (r, &dx, &dy); ! x += dx; y += dy; ! printf("%g %g\n", x, y); ! @} ! return 0; ! @} @end example --- 2033,2037 ---- @example ! @verbatiminclude examples/randwalk.c @end example *************** *** 1871,1874 **** --- 2044,2061 ---- @end tex + The following program computes the upper and lower cumulative + distribution functions for the standard normal distribution at + @math{x=2}. + + @example + @verbatiminclude examples/cdf.c + @end example + @noindent + Here is the output of the program, + + @example + @verbatiminclude examples/cdf.out + @end example + @node Random Number Distribution References and Further Reading @section References and Further Reading *************** *** 1909,1910 **** --- 2096,2130 ---- The Review of Particle Physics is available online in postscript and pdf format. + + @noindent + An overview of methods used to compute cumulative distribution functions + can be found in @cite{Statistical Computing} by W.J. Kennedy and + J.E. Gentle. Another general reference is @cite{Elements of Statistical + Computing} by R.A. Thisted. + + @itemize @asis + @item + William E. Kennedy and James E. Gentle, @cite{Statistical Computing} (1980), + Marcel Dekker, ISBN 0-8247-6898-1. + @end itemize + + @itemize @asis + @item + Ronald A. Thisted, @cite{Elements of Statistical Computing} (1988), + Chapman & Hall, ISBN 0-412-01371-1. + @end itemize + @noindent + The cumulative distribution functions for the Gaussian distribution + are based on the following papers, + + @itemize @asis + @item + @cite{Rational Chebyshev Approximations Using Linear Equations}, + W.J. Cody, W. Fraser, J.F. Hart. Numerische Mathematik 12, 242-251 (1968). + @end itemize + + @itemize @asis + @item + @cite{Rational Chebyshev Approximations for the Error Function}, + W.J. Cody. Mathematics of Computation 23, n107, 631-637 (July 1969). + @end itemize diff -x.info* -rc2P gsl-1.3/doc/random-walk.tex gsl-1.4/doc/random-walk.tex *** gsl-1.3/doc/random-walk.tex Mon Dec 10 19:24:55 2001 --- gsl-1.4/doc/random-walk.tex Mon Jul 28 14:49:34 2003 *************** *** 1,9 **** % GNUPLOT: plain TeX with Postscript \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \begingroup ! % Inner version of \newdimen from btxmac.tex ! \edef\innernewdimen{\expandafter\noexpand\csname newdimen\endcsname}% ! \innernewdimen\GNUPLOTunit ! \endgroup \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit --- 1,11 ---- % GNUPLOT: plain TeX with Postscript + \begingroup + \catcode`\@=11\relax + \def\GNUPLOTspecial{% + \def\do##1{\catcode`##1=12\relax}\dospecials + \catcode`\{=1\catcode`\}=2\catcode\%=14\relax\special}% + % \expandafter\ifx\csname GNUPLOTpicture\endcsname\relax ! \csname newdimen\endcsname\GNUPLOTunit \gdef\GNUPLOTpicture(#1,#2){\vbox to#2\GNUPLOTunit\bgroup \def\put(##1,##2)##3{\unskip\raise##2\GNUPLOTunit *************** *** 20,33 **** \fi \GNUPLOTunit=0.1bp ! \special{! ! %!PS-Adobe-2.0 EPSF-2.0 %%Title: random-walk.tex ! %%Creator: gnuplot 3.5 (pre 3.6) patchlevel beta 347 ! %%CreationDate: Wed Jul 18 12:50:00 2001 %%DocumentFonts: %%BoundingBox: 0 0 251 216 %%Orientation: Landscape %%EndComments ! /gnudict 120 dict def gnudict begin /Color false def --- 22,36 ---- \fi \GNUPLOTunit=0.1bp ! {\GNUPLOTspecial{! ! %!PS-Adobe-2.0 %%Title: random-walk.tex ! %%Creator: gnuplot 3.7 patchlevel 2 ! %%CreationDate: Mon Jul 28 15:49:34 2003 %%DocumentFonts: %%BoundingBox: 0 0 251 216 %%Orientation: Landscape + %%Pages: (atend) %%EndComments ! /gnudict 256 dict def gnudict begin /Color false def *************** *** 57,66 **** /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke gnulinewidth 2 mul setlinewidth } def ! /AL { stroke gnulinewidth 2 div setlinewidth } def ! /UL { gnulinewidth mul /userlinewidth exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def --- 60,70 ---- /DL { Color {setrgbcolor Solid {pop []} if 0 setdash } {pop pop pop Solid {pop []} if 0 setdash} ifelse } def ! /BL { stroke userlinewidth 2 mul setlinewidth } def ! /AL { stroke userlinewidth 2 div setlinewidth } def ! /UL { dup gnulinewidth mul /userlinewidth exch def ! dup 1 lt {pop 1} if 10 mul /udl exch def } def /PL { stroke userlinewidth setlinewidth } def /LTb { BL [] 0 0 0 DL } def ! /LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def /LT0 { PL [] 1 0 0 DL } def /LT1 { PL [4 dl 2 dl] 0 1 0 DL } def *************** *** 258,266 **** hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def end %%EndProlog ! } \GNUPLOTpicture(2519,2160) ! \special{" gnudict begin gsave --- 262,274 ---- hpt 0 360 arc Opaque stroke } def /BoxFill { gsave Rec 1 setgray fill grestore } def + /Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont + dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall + currentdict end definefont end %%EndProlog ! }}% \GNUPLOTpicture(2519,2160) ! {\GNUPLOTspecial{" ! %%Page: 1 1 gnudict begin gsave *************** *** 271,516 **** 1.000 UL LTb ! 300 300 M ! 1660 0 R ! 300 419 M ! 1660 0 R ! 300 537 M ! 1660 0 R ! 300 656 M ! 1660 0 R ! 300 774 M ! 1660 0 R ! 300 893 M ! 1660 0 R ! 300 1011 M ! 1660 0 R ! 300 1130 M ! 1660 0 R ! 300 1249 M ! 1660 0 R ! 300 1367 M ! 1660 0 R ! 300 1486 M ! 1660 0 R ! 300 1604 M ! 1660 0 R ! 300 1723 M ! 1660 0 R ! 300 1841 M ! 1660 0 R ! 300 1960 M ! 1660 0 R ! 300 300 M ! 0 1660 R ! 359 300 M ! 0 63 V ! 0 1597 R ! 0 -63 V ! 419 300 M ! 0 1660 R ! 478 300 M ! 0 63 V ! 0 1597 R ! 0 -63 V ! 537 300 M ! 0 1660 R ! 596 300 M ! 0 63 V ! 0 1597 R ! 0 -63 V ! 656 300 M ! 0 1660 R ! 715 300 M ! 0 63 V ! 0 1597 R ! 0 -63 V ! 774 300 M ! 0 1660 R ! 834 300 M ! 0 63 V ! 0 1597 R ! 0 -63 V ! 893 300 M ! 0 1660 R ! 952 300 M ! 0 63 V ! 0 1597 R ! 0 -63 V ! 1011 300 M ! 0 1660 R ! 1071 300 M 0 63 V ! 0 1597 R 0 -63 V 1130 300 M ! 0 1660 R ! 1189 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1249 300 M ! 0 1660 R ! 1308 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1367 300 M ! 0 1660 R ! 1426 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1486 300 M ! 0 1660 R ! 1545 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1604 300 M ! 0 1660 R ! 1664 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1723 300 M ! 0 1660 R ! 1782 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1841 300 M ! 0 1660 R ! 1901 300 M 0 63 V ! 0 1597 R 0 -63 V ! 1960 300 M ! 0 1660 R 1.000 UL LTa ! 300 1130 M ! 1660 0 V 1.000 UL LTa 1130 300 M ! 0 1660 V 1.000 UL LTb ! 300 300 M ! 1660 0 V ! 0 1660 V ! -1660 0 V ! 300 300 L 1.000 UP 1.000 UL LT0 ! 1130 1130 M ! -118 -7 V ! 911 1060 L ! -105 55 V ! -94 73 V ! 58 103 V ! -75 -91 V ! 68 97 V ! 6 -119 V ! 1 -118 V ! 653 1044 L ! 477 86 R ! 109 47 V ! 41 -111 V ! 91 77 V ! -105 -56 V ! 0 119 V ! 19 117 V ! 44 110 V ! -115 32 V ! -113 -35 V ! -31 -114 V ! 60 -186 R ! 24 116 V ! 115 26 V ! 66 -99 V ! 119 5 V ! 104 -56 V ! 115 -30 V ! 118 8 V ! -73 -93 V ! 1686 893 L ! 97 68 V ! 1130 1130 Pls ! 1012 1123 Pls ! 911 1060 Pls ! 806 1115 Pls ! 712 1188 Pls ! 770 1291 Pls ! 695 1200 Pls ! 763 1297 Pls ! 769 1178 Pls ! 770 1060 Pls ! 653 1044 Pls ! 1130 1130 Pls ! 1239 1177 Pls ! 1280 1066 Pls ! 1371 1143 Pls ! 1266 1087 Pls ! 1266 1206 Pls ! 1285 1323 Pls ! 1329 1433 Pls ! 1214 1465 Pls ! 1101 1430 Pls ! 1070 1316 Pls ! 1130 1130 Pls ! 1154 1246 Pls ! 1269 1272 Pls ! 1335 1173 Pls ! 1454 1178 Pls ! 1558 1122 Pls ! 1673 1092 Pls ! 1791 1100 Pls ! 1718 1007 Pls ! 1686 893 Pls ! 1783 961 Pls stroke grestore end showpage ! } ! \put(1130,2060){\cjust{Random walk}} ! \put(1130,100){\cjust{$k$}} ! \put(0,1130){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! } ! \put(1960,200){\cjust{7}} ! \put(1841,200){\cjust{6}} ! \put(1723,200){\cjust{5}} ! \put(1604,200){\cjust{4}} ! \put(1486,200){\cjust{3}} ! \put(1367,200){\cjust{2}} ! \put(1249,200){\cjust{1}} ! \put(1130,200){\cjust{0}} ! \put(1011,200){\cjust{-1}} ! \put(893,200){\cjust{-2}} ! \put(774,200){\cjust{-3}} ! \put(656,200){\cjust{-4}} ! \put(537,200){\cjust{-5}} ! \put(419,200){\cjust{-6}} ! \put(300,200){\cjust{-7}} ! \put(250,1960){\rjust{7}} ! \put(250,1841){\rjust{6}} ! \put(250,1723){\rjust{5}} ! \put(250,1604){\rjust{4}} ! \put(250,1486){\rjust{3}} ! \put(250,1367){\rjust{2}} ! \put(250,1249){\rjust{1}} ! \put(250,1130){\rjust{0}} ! \put(250,1011){\rjust{-1}} ! \put(250,893){\rjust{-2}} ! \put(250,774){\rjust{-3}} ! \put(250,656){\rjust{-4}} ! \put(250,537){\rjust{-5}} ! \put(250,419){\rjust{-6}} ! \put(250,300){\rjust{-7}} \endGNUPLOTpicture --- 279,548 ---- 1.000 UL LTb ! 350 300 M ! 1560 0 R ! 350 411 M ! 1560 0 R ! 350 523 M ! 1560 0 R ! 350 634 M ! 1560 0 R ! 350 746 M ! 1560 0 R ! 350 857 M ! 1560 0 R ! 350 969 M ! 1560 0 R ! 350 1080 M ! 1560 0 R ! 350 1191 M ! 1560 0 R ! 350 1303 M ! 1560 0 R ! 350 1414 M ! 1560 0 R ! 350 1526 M ! 1560 0 R ! 350 1637 M ! 1560 0 R ! 350 1749 M ! 1560 0 R ! 350 1860 M ! 1560 0 R ! 350 300 M ! 0 1560 R ! 406 300 M ! 0 63 V ! 0 1497 R ! 0 -63 V ! 461 300 M ! 0 1560 R ! 517 300 M ! 0 63 V ! 0 1497 R ! 0 -63 V ! 573 300 M ! 0 1560 R ! 629 300 M ! 0 63 V ! 0 1497 R ! 0 -63 V ! 684 300 M ! 0 1560 R ! 740 300 M ! 0 63 V ! 0 1497 R ! 0 -63 V ! 796 300 M ! 0 1560 R ! 851 300 M ! 0 63 V ! 0 1497 R ! 0 -63 V ! 907 300 M ! 0 1560 R ! 963 300 M ! 0 63 V ! 0 1497 R ! 0 -63 V ! 1019 300 M ! 0 1560 R ! 1074 300 M 0 63 V ! 0 1497 R 0 -63 V 1130 300 M ! 0 1560 R ! 1186 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1241 300 M ! 0 1560 R ! 1297 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1353 300 M ! 0 1560 R ! 1409 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1464 300 M ! 0 1560 R ! 1520 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1576 300 M ! 0 1560 R ! 1631 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1687 300 M ! 0 1560 R ! 1743 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1799 300 M ! 0 1560 R ! 1854 300 M 0 63 V ! 0 1497 R 0 -63 V ! 1910 300 M ! 0 1560 R 1.000 UL LTa ! 350 1080 M ! 1560 0 V 1.000 UL LTa 1130 300 M ! 0 1560 V 1.000 UL LTb ! 350 300 M ! 1560 0 V ! 0 1560 V ! -1560 0 V ! 350 300 L 1.000 UP 1.000 UL LT0 ! 1130 1080 M ! -66 90 V ! 32 107 V ! 98 53 V ! 86 71 V ! -10 -111 V ! -100 -50 V ! -109 24 V ! -76 82 V ! 108 29 V ! 103 41 V ! -66 -336 R ! -103 43 V ! -108 25 V ! 99 50 V ! -74 82 V ! -69 88 V ! 42 -103 V ! -91 -63 V ! 110 16 V ! 57 -96 V ! -83 74 V ! 220 -116 R ! -108 -26 V ! -51 99 V ! -59 95 V ! -106 34 V ! 105 -35 V ! 17 110 V ! -93 -62 V ! -9 111 V ! -63 -92 V ! 44 103 V ! 323 -337 R ! -107 -32 V ! 66 90 V ! 68 89 V ! -26 108 V ! -50 -99 V ! -69 -88 V ! 100 -50 V ! 83 -75 V ! 101 46 V ! 91 65 V ! 1130 1080 Pls ! 1064 1170 Pls ! 1096 1277 Pls ! 1194 1330 Pls ! 1280 1401 Pls ! 1270 1290 Pls ! 1170 1240 Pls ! 1061 1264 Pls ! 985 1346 Pls ! 1093 1375 Pls ! 1196 1416 Pls ! 1130 1080 Pls ! 1027 1123 Pls ! 919 1148 Pls ! 1018 1198 Pls ! 944 1280 Pls ! 875 1368 Pls ! 917 1265 Pls ! 826 1202 Pls ! 936 1218 Pls ! 993 1122 Pls ! 910 1196 Pls ! 1130 1080 Pls ! 1022 1054 Pls ! 971 1153 Pls ! 912 1248 Pls ! 806 1282 Pls ! 911 1247 Pls ! 928 1357 Pls ! 835 1295 Pls ! 826 1406 Pls ! 763 1314 Pls ! 807 1417 Pls ! 1130 1080 Pls ! 1023 1048 Pls ! 1089 1138 Pls ! 1157 1227 Pls ! 1131 1335 Pls ! 1081 1236 Pls ! 1012 1148 Pls ! 1112 1098 Pls ! 1195 1023 Pls ! 1296 1069 Pls ! 1387 1134 Pls stroke grestore end showpage ! }}% ! \put(1130,2010){\cjust{Random walk}}% ! \put(1130,50){\cjust{$k$}}% ! \put(100,1080){% \special{ps: gsave currentpoint currentpoint translate 270 rotate neg exch neg exch translate}% \cstack{$p(k)$}% \special{ps: currentpoint grestore moveto}% ! }% ! \put(1910,200){\cjust{ 7}}% ! \put(1799,200){\cjust{ 6}}% ! \put(1687,200){\cjust{ 5}}% ! \put(1576,200){\cjust{ 4}}% ! \put(1464,200){\cjust{ 3}}% ! \put(1353,200){\cjust{ 2}}% ! \put(1241,200){\cjust{ 1}}% ! \put(1130,200){\cjust{ 0}}% ! \put(1019,200){\cjust{-1}}% ! \put(907,200){\cjust{-2}}% ! \put(796,200){\cjust{-3}}% ! \put(684,200){\cjust{-4}}% ! \put(573,200){\cjust{-5}}% ! \put(461,200){\cjust{-6}}% ! \put(350,200){\cjust{-7}}% ! \put(300,1860){\rjust{ 7}}% ! \put(300,1749){\rjust{ 6}}% ! \put(300,1637){\rjust{ 5}}% ! \put(300,1526){\rjust{ 4}}% ! \put(300,1414){\rjust{ 3}}% ! \put(300,1303){\rjust{ 2}}% ! \put(300,1191){\rjust{ 1}}% ! \put(300,1080){\rjust{ 0}}% ! \put(300,969){\rjust{-1}}% ! \put(300,857){\rjust{-2}}% ! \put(300,746){\rjust{-3}}% ! \put(300,634){\rjust{-4}}% ! \put(300,523){\rjust{-5}}% ! \put(300,411){\rjust{-6}}% ! \put(300,300){\rjust{-7}}% \endGNUPLOTpicture + \endgroup + \endinput diff -x.info* -rc2P gsl-1.3/doc/randplots.gnp gsl-1.4/doc/randplots.gnp *** gsl-1.3/doc/randplots.gnp Mon Dec 10 19:24:07 2001 --- gsl-1.4/doc/randplots.gnp Mon Jul 28 14:41:27 2003 *************** *** 2,6 **** set term pstex monochrome set samples 300 ! set size 1,1.1 # Continuous distributions --- 2,7 ---- set term pstex monochrome set samples 300 ! #set size 0.8,0.88 # paperback 6x9 ! set size 1,1.1 # us letter # Continuous distributions *************** *** 81,85 **** set output "rand-chisq.tex" set title "Chi-squared Distribution" ! p(x)=(x/2)**(nu/2.0-1.0) *exp(-x/2)/ gamma(nu/2.0) plot nu=1.0, p(x) title "$\nu=1$", \ nu=2.0, p(x) title "$\nu=2$", \ --- 82,86 ---- set output "rand-chisq.tex" set title "Chi-squared Distribution" ! p(x)=(x/2)**(nu/2.0-1.0) *exp(-x/2)/ (2*gamma(nu/2.0)) plot nu=1.0, p(x) title "$\nu=1$", \ nu=2.0, p(x) title "$\nu=2$", \ diff -x.info* -rc2P gsl-1.3/doc/rng.texi gsl-1.4/doc/rng.texi *** gsl-1.3/doc/rng.texi Sun Dec 15 13:21:05 2002 --- gsl-1.4/doc/rng.texi Tue Jul 29 09:39:01 2003 *************** *** 23,30 **** * Auxiliary random number generator functions:: * Random number environment variables:: ! * Saving and restoring random number generator state:: * Random number generator algorithms:: * Unix random number generators:: - * Numerical Recipes generators:: * Other random number generators:: * Random Number Generator Performance:: --- 23,30 ---- * Auxiliary random number generator functions:: * Random number environment variables:: ! * Copying random number generator state:: ! * Reading and writing random number generator state:: * Random number generator algorithms:: * Unix random number generators:: * Other random number generators:: * Random Number Generator Performance:: *************** *** 193,198 **** @example ! printf("r is a '%s' generator\n", ! gsl_rng_name (r)); @end example @noindent --- 193,198 ---- @example ! printf ("r is a '%s' generator\n", ! gsl_rng_name (r)); @end example @noindent *************** *** 214,218 **** @deftypefn Random {void *} gsl_rng_state (const gsl_rng * @var{r}) @deftypefnx Random size_t gsl_rng_size (const gsl_rng * @var{r}) ! These function return a pointer to the state of generator @var{r} and its size. You can use this information to access the state directly. For example, the following code will write the state of a generator to a --- 214,218 ---- @deftypefn Random {void *} gsl_rng_state (const gsl_rng * @var{r}) @deftypefnx Random size_t gsl_rng_size (const gsl_rng * @var{r}) ! These functions return a pointer to the state of generator @var{r} and its size. You can use this information to access the state directly. For example, the following code will write the state of a generator to a *************** *** 238,246 **** t0 = gsl_rng_types_setup (); ! printf("Available generators:\n"); for (t = t0; *t != 0; t++) @{ ! printf("%s\n", (*t)->name); @} @end example --- 238,246 ---- t0 = gsl_rng_types_setup (); ! printf ("Available generators:\n"); for (t = t0; *t != 0; t++) @{ ! printf ("%s\n", (*t)->name); @} @end example *************** *** 284,309 **** @example ! #include ! #include ! ! gsl_rng * r; /* global generator */ ! ! int ! main (void) ! @{ ! const gsl_rng_type * T; ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! printf("generator type: %s\n", gsl_rng_name (r)); ! printf("seed = %u\n", gsl_rng_default_seed); ! printf("first value = %u\n", gsl_rng_get (r)); ! return 0; ! @} @end example - @noindent Running the program without any environment variables uses the initial --- 284,289 ---- @example ! @verbatiminclude examples/rng.c @end example @noindent Running the program without any environment variables uses the initial *************** *** 312,320 **** @example bash$ ./a.out ! generator type: mt19937 ! seed = 0 ! first value = 2867219139 @end example - @noindent By setting the two variables on the command line we can --- 292,297 ---- @example bash$ ./a.out ! @verbatiminclude examples/rng.out @end example @noindent By setting the two variables on the command line we can *************** *** 330,335 **** @end example ! @node Saving and restoring random number generator state ! @section Saving and restoring random number generator state The above methods ignore the random number `state' which changes from --- 307,312 ---- @end example ! @node Copying random number generator state ! @section Copying random number generator state The above methods ignore the random number `state' which changes from *************** *** 349,356 **** @end deftypefn ! @deftypefn Random void gsl_rng_print_state (const gsl_rng * @var{r}) ! This function prints a hex-dump of the state of the generator @var{r} to ! @code{stdout}. At the moment its only use is for debugging. ! @end deftypefn @node Random number generator algorithms --- 326,353 ---- @end deftypefn ! @node Reading and writing random number generator state ! @section Reading and writing random number generator state ! ! The library provides functions for reading and writing the random ! number state to a file as binary data or formatted text. ! ! @deftypefun int gsl_rng_fwrite (FILE * @var{stream}, const gsl_rng * @var{r}) ! This function writes the random number state of the random number ! generator @var{r} to the stream @var{stream} in binary format. The ! return value is 0 for success and @code{GSL_EFAILED} if there was a ! problem writing to the file. Since the data is written in the native ! binary format it may not be portable between different architectures. ! @end deftypefun ! ! @deftypefun int gsl_rng_fread (FILE * @var{stream}, gsl_rng * @var{r}) ! This function reads the random number state into the random number ! generator @var{r} from the open stream @var{stream} in binary format. ! The random number generator @var{r} must be preinitialized with the ! correct random number generator type since type information is not ! saved. The return value is 0 for success and @code{GSL_EFAILED} if ! there was a problem reading from the file. The data is assumed to ! have been written in the native binary format on the same ! architecture. ! @end deftypefun @node Random number generator algorithms *************** *** 677,698 **** Ziff's article: @math{A=471}, @math{B=1586}, @math{C=6988}, @math{D=9689}. ! If the offsets are appropriately chosen (such the one ones in ! this implementation), then the sequence is said to be maximal. ! I'm not sure what that means, but I would guess that means all ! states are part of the same cycle, which would mean that the ! period for this generator is astronomical; it is ! @c{$(2^K)^D \approx 10^{93334}$} ! @math{(2^K)^D \approx 10^@{93334@}} ! where @math{K=32} is the number of bits in the word, and D is the longest ! lag. This would also mean that any one random number could ! easily be zero; ie ! @c{$0 \le r < 2^{32}$} ! @math{0 <= r < 2^32}. ! ! Ziff doesn't say so, but it seems to me that the bits are ! completely independent here, so one could use this as an efficient ! bit generator; each number supplying 32 random bits. The quality of the ! generated bits depends on the underlying seeding procedure, which ! may need to be improved in some circumstances. For more information see, --- 674,694 ---- Ziff's article: @math{A=471}, @math{B=1586}, @math{C=6988}, @math{D=9689}. ! ! If the offsets are appropriately chosen (such as the one ones in this ! implementation), then the sequence is said to be maximal; that means ! that the period is @math{2^D - 1}, where @math{D} is the longest lag. ! (It is one less than @math{2^D} because it is not permitted to have all ! zeros in the @code{ra[]} array.) For this implementation with ! @math{D=9689} that works out to about @c{$10^{2917}$} ! @math{10^2917}. ! ! Note that the implementation of this generator using a 32-bit ! integer amounts to 32 parallel implementations of one-bit ! generators. One consequence of this is that the period of this ! 32-bit generator is the same as for the one-bit generator. ! Moreover, this inedpendence means that all 32-bit patterns are ! equally likely, and in particular that 0 is an allowed random ! value. (We are grateful to Heiko Bauke for clarifying for us these ! properties of GFSR random number generators.) For more information see, *************** *** 824,862 **** @end deffn - @node Numerical Recipes generators - @section Numerical Recipes generators - @cindex Random number generators, Numerical recipes - @cindex Numerical recipes, random number generators - @comment - The following generators are provided for compatibility with - @cite{Numerical Recipes}. Note that the original Numerical Recipes - functions used single precision while we use double precision. This will - lead to minor discrepancies, but only at the level of single-precision - rounding error. If necessary you can force the returned values to single - precision by storing them in a @code{volatile float}, which prevents the - value being held in a register with double or extended precision. Apart - from this difference the underlying algorithms for the integer part of - the generators are the same. - - @deffn {Generator} gsl_rng_ran0 - Numerical recipes @code{ran0} implements Park and Miller's @sc{minstd} - algorithm with a modified seeding procedure. - @end deffn - - @deffn {Generator} gsl_rng_ran1 - Numerical recipes @code{ran1} implements Park and Miller's @sc{minstd} - algorithm with a 32-element Bayes-Durham shuffle box. - @end deffn - - @deffn {Generator} gsl_rng_ran2 - Numerical recipes @code{ran2} implements a L'Ecuyer combined recursive - generator with a 32-element Bayes-Durham shuffle-box. - @end deffn - - @deffn {Generator} gsl_rng_ran3 - Numerical recipes @code{ran3} implements Knuth's portable - subtractive generator. - @end deffn - @node Other random number generators @section Other random number generators --- 820,823 ---- *************** *** 1271,1275 **** @deffn {Generator} gsl_rng_fishman2x ! This is the L'Ecuyer - Fishman random number generator. It is taken from Knuth's @cite{Seminumerical Algorithms}, 3rd Ed., page 108. Its sequence is, --- 1232,1236 ---- @deffn {Generator} gsl_rng_fishman2x ! This is the L'Ecuyer--Fishman random number generator. It is taken from Knuth's @cite{Seminumerical Algorithms}, 3rd Ed., page 108. Its sequence is, *************** *** 1382,1386 **** @node Random Number Generator Performance ! @section Random Number Generator Performance @comment --- 1343,1347 ---- @node Random Number Generator Performance ! @section Performance @comment *************** *** 1390,1396 **** The following table shows the relative performance of a selection the ! available random number generators. The simulation quality generators ! which offer the best performance are @code{taus}, @code{gfsr4} and ! @code{mt19937}. @comment The large number of generators based on single linear congruences are --- 1351,1358 ---- The following table shows the relative performance of a selection the ! available random number generators. The fastest simulation quality ! generators are @code{taus}, @code{gfsr4} and @code{mt19937}. The ! generators which offer the best mathematically-proven quality are those ! based on the @sc{ranlux} algorithm. @comment The large number of generators based on single linear congruences are *************** *** 1425,1454 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! const gsl_rng_type * T; ! gsl_rng * r; ! ! int i, n = 10; ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! for (i = 0; i < n; i++) ! @{ ! double u = gsl_rng_uniform (r); ! printf("%.5f\n", u); ! @} ! ! gsl_rng_free (r); ! ! return 0; ! @} @end example @noindent --- 1387,1391 ---- @example ! @verbatiminclude examples/rngunif.c @end example @noindent *************** *** 1457,1470 **** @example $ ./a.out ! 0.66758 ! 0.36908 ! 0.72483 ! 0.68776 ! 0.57365 ! 0.81078 ! 0.27108 ! 0.83777 ! 0.13736 ! 0.95745 @end example @noindent --- 1394,1398 ---- @example $ ./a.out ! @verbatiminclude examples/rngunif.out @end example @noindent *************** *** 1478,1493 **** @example $ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out ! GSL_RNG_TYPE=mrg ! GSL_RNG_SEED=123 ! 0.33050 ! 0.86631 ! 0.32982 ! 0.67620 ! 0.53391 ! 0.06457 ! 0.16847 ! 0.70229 ! 0.04371 ! 0.86374 @end example --- 1406,1410 ---- @example $ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out ! @verbatiminclude examples/rngunif.2.out @end example *************** *** 1529,1532 **** --- 1446,1462 ---- @item @url{http://stat.fsu.edu/pub/diehard/} + @end itemize + + @noindent + A comprehensive set of random number generator tests is available from + @sc{nist}, + + @itemize @asis + @item + NIST Special Publication 800-22, "A Statistical Test Suite for the + Validation of Random Number Generators and Pseudo Random Number + Generators for Cryptographic Applications". + @item + @url{http://csrc.nist.gov/rng/} @end itemize diff -x.info* -rc2P gsl-1.3/doc/roots.texi gsl-1.4/doc/roots.texi *** gsl-1.3/doc/roots.texi Sun Dec 15 13:20:56 2002 --- gsl-1.4/doc/roots.texi Wed Jul 16 14:51:00 2003 *************** *** 173,178 **** @example ! printf("s is a '%s' solver\n", ! gsl_root_fsolver_name (s)); @end example --- 173,178 ---- @example ! printf ("s is a '%s' solver\n", ! gsl_root_fsolver_name (s)); @end example *************** *** 194,203 **** @table @code ! @item double (* @var{function}) (double @var{x}, void * @var{params}) this function should return the value @c{$f(x,\hbox{\it params})$} @math{f(x,params)} for argument @var{x} and parameters @var{params} ! @item void * @var{params} a pointer to the parameters of the function @end table --- 194,203 ---- @table @code ! @item double (* function) (double @var{x}, void * @var{params}) this function should return the value @c{$f(x,\hbox{\it params})$} @math{f(x,params)} for argument @var{x} and parameters @var{params} ! @item void * params a pointer to the parameters of the function @end table *************** *** 257,266 **** @table @code ! @item double (* @var{f}) (double @var{x}, void * @var{params}) this function should return the value of @c{$f(x,\hbox{\it params})$} @math{f(x,params)} for argument @var{x} and parameters @var{params} ! @item double (* @var{df}) (double @var{x}, void * @var{params}) this function should return the value of the derivative of @var{f} with respect to @var{x}, --- 257,266 ---- @table @code ! @item double (* f) (double @var{x}, void * @var{params}) this function should return the value of @c{$f(x,\hbox{\it params})$} @math{f(x,params)} for argument @var{x} and parameters @var{params} ! @item double (* df) (double @var{x}, void * @var{params}) this function should return the value of the derivative of @var{f} with respect to @var{x}, *************** *** 268,272 **** @math{f'(x,params)}, for argument @var{x} and parameters @var{params} ! @item void (* @var{fdf}) (double @var{x}, void * @var{params}, double * @var{f}, double * @var{d}f) this function should set the values of the function @var{f} to @c{$f(x,\hbox{\it params})$} --- 268,272 ---- @math{f'(x,params)}, for argument @var{x} and parameters @var{params} ! @item void (* fdf) (double @var{x}, void * @var{params}, double * @var{f}, double * @var{d}f) this function should set the values of the function @var{f} to @c{$f(x,\hbox{\it params})$} *************** *** 280,284 **** same time. ! @item void * @var{params} a pointer to the parameters of the function @end table --- 280,284 ---- same time. ! @item void * params a pointer to the parameters of the function @end table *************** *** 560,564 **** @iftex @sp 1 ! @center @image{roots-bisection,4in} @quotation --- 560,564 ---- @iftex @sp 1 ! @center @image{roots-bisection,3.4in} @quotation *************** *** 671,675 **** @iftex @sp 1 ! @center @image{roots-newtons-method,4in} @quotation --- 671,675 ---- @iftex @sp 1 ! @center @image{roots-newtons-method,3.4in} @quotation *************** *** 686,690 **** @cindex root finding, Secant Method algorithm ! The @dfn{secant method} is a simplified version of Newton's method does not require the computation of the derivative on every step. --- 686,690 ---- @cindex root finding, Secant Method algorithm ! The @dfn{secant method} is a simplified version of Newton's method which does not require the computation of the derivative on every step. *************** *** 707,712 **** @noindent Subsequent iterations avoid the evaluation of the derivative by ! replacing it with a numerical estimate, the slope through the previous ! two points, @tex --- 707,712 ---- @noindent Subsequent iterations avoid the evaluation of the derivative by ! replacing it with a numerical estimate, the slope of the line through ! the previous two points, @tex *************** *** 798,858 **** @example ! struct quadratic_params ! @{ ! double a, b, c; ! @}; ! ! double quadratic (double x, void *params); ! double quadratic_deriv (double x, void *params); ! void quadratic_fdf (double x, void *params, ! double *y, double *dy); @end example - @noindent We place the function definitions in a separate file (@file{demo_fn.c}), @example ! double ! quadratic (double x, void *params) ! @{ ! struct quadratic_params *p ! = (struct quadratic_params *) params; ! ! double a = p->a; ! double b = p->b; ! double c = p->c; ! ! return (a * x + b) * x + c; ! @} ! ! double ! quadratic_deriv (double x, void *params) ! @{ ! struct quadratic_params *p ! = (struct quadratic_params *) params; ! ! double a = p->a; ! double b = p->b; ! double c = p->c; ! ! return 2.0 * a * x + b; ! @} ! ! void ! quadratic_fdf (double x, void *params, ! double *y, double *dy) ! @{ ! struct quadratic_params *p ! = (struct quadratic_params *) params; ! ! double a = p->a; ! double b = p->b; ! double c = p->c; ! ! *y = (a * x + b) * x + c; ! *dy = 2.0 * a * x + b; ! @} @end example - @noindent The first program uses the function solver @code{gsl_root_fsolver_brent} --- 798,809 ---- @example ! @verbatiminclude examples/demo_fn.h @end example @noindent We place the function definitions in a separate file (@file{demo_fn.c}), @example ! @verbatiminclude examples/demo_fn.c @end example @noindent The first program uses the function solver @code{gsl_root_fsolver_brent} *************** *** 877,935 **** @example ! #include ! #include ! #include ! #include ! ! #include "demo_fn.h" ! #include "demo_fn.c" ! ! int ! main (void) ! @{ ! int status; ! int iter = 0, max_iter = 100; ! const gsl_root_fsolver_type *T; ! gsl_root_fsolver *s; ! double r = 0, r_expected = sqrt (5.0); ! double x_lo = 0.0, x_hi = 5.0; ! gsl_function F; ! struct quadratic_params params = @{1.0, 0.0, -5.0@}; ! ! F.function = &quadratic; ! F.params = ¶ms; ! ! T = gsl_root_fsolver_brent; ! s = gsl_root_fsolver_alloc (T); ! gsl_root_fsolver_set (s, &F, x_lo, x_hi); ! ! printf ("using %s method\n", ! gsl_root_fsolver_name (s)); ! ! printf ("%5s [%9s, %9s] %9s %10s %9s\n", ! "iter", "lower", "upper", "root", ! "err", "err(est)"); ! ! do ! @{ ! iter++; ! status = gsl_root_fsolver_iterate (s); ! r = gsl_root_fsolver_root (s); ! x_lo = gsl_root_fsolver_x_lower (s); ! x_hi = gsl_root_fsolver_x_upper (s); ! status = gsl_root_test_interval (x_lo, x_hi, ! 0, 0.001); ! ! if (status == GSL_SUCCESS) ! printf ("Converged:\n"); ! ! printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n", ! iter, x_lo, x_hi, ! r, r - r_expected, ! x_hi - x_lo); ! @} ! while (status == GSL_CONTINUE && iter < max_iter); ! return status; ! @} @end example --- 828,832 ---- @example ! @verbatiminclude examples/roots.c @end example *************** *** 979,1032 **** @example ! #include ! #include ! #include ! #include ! ! #include "demo_fn.h" ! #include "demo_fn.c" ! ! int ! main (void) ! @{ ! int status; ! int iter = 0, max_iter = 100; ! const gsl_root_fdfsolver_type *T; ! gsl_root_fdfsolver *s; ! double x0, x = 5.0, r_expected = sqrt (5.0); ! gsl_function_fdf FDF; ! struct quadratic_params params = @{1.0, 0.0, -5.0@}; ! ! FDF.f = &quadratic; ! FDF.df = &quadratic_deriv; ! FDF.fdf = &quadratic_fdf; ! FDF.params = ¶ms; ! ! T = gsl_root_fdfsolver_newton; ! s = gsl_root_fdfsolver_alloc (T); ! gsl_root_fdfsolver_set (s, &FDF, x); ! ! printf ("using %s method\n", ! gsl_root_fdfsolver_name (s)); ! ! printf ("%-5s %10s %10s %10s\n", ! "iter", "root", "err", "err(est)"); ! do ! @{ ! iter++; ! status = gsl_root_fdfsolver_iterate (s); ! x0 = x; ! x = gsl_root_fdfsolver_root (s); ! status = gsl_root_test_delta (x, x0, 0, 1e-3); ! ! if (status == GSL_SUCCESS) ! printf ("Converged:\n"); ! ! printf ("%5d %10.7f %+10.7f %10.7f\n", ! iter, x, x - r_expected, x - x0); ! @} ! while (status == GSL_CONTINUE && iter < max_iter); ! return status; ! @} @end example @noindent --- 876,880 ---- @example ! @verbatiminclude examples/rootnewt.c @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/siman.texi gsl-1.4/doc/siman.texi *** gsl-1.3/doc/siman.texi Sun Jul 21 13:09:09 2002 --- gsl-1.4/doc/siman.texi Sun Jul 27 08:42:57 2003 *************** *** 135,139 **** @deftp {Data Type} gsl_siman_step_t This function type should modify the configuration @var{xp} using a random step ! taken from the generator @var{r}, up to a maximium distance of @var{step_size}. @example --- 135,139 ---- @deftp {Data Type} gsl_siman_step_t This function type should modify the configuration @var{xp} using a random step ! taken from the generator @var{r}, up to a maximum distance of @var{step_size}. @example *************** *** 203,207 **** @node Examples with Simulated Annealing, , Simulated Annealing functions, Simulated Annealing ! @section Examples with Simulated Annealing The simulated Annealing package is clumsy, and it has to be because it --- 203,207 ---- @node Examples with Simulated Annealing, , Simulated Annealing functions, Simulated Annealing ! @section Examples The simulated Annealing package is clumsy, and it has to be because it *************** *** 225,307 **** @smallexample ! #include ! #include ! #include ! ! /* set up parameters for this simulated annealing run */ ! ! /* how many points do we try before stepping */ ! #define N_TRIES 200 ! ! /* how many iterations for each T? */ ! #define ITERS_FIXED_T 10 ! ! /* max step size in random walk */ ! #define STEP_SIZE 10 ! ! /* Boltzmann constant */ ! #define K 1.0 ! ! /* initial temperature */ ! #define T_INITIAL 0.002 ! ! /* damping factor for temperature */ ! #define MU_T 1.005 ! #define T_MIN 2.0e-6 ! ! gsl_siman_params_t params ! = @{N_TRIES, ITERS_FIXED_T, STEP_SIZE, ! K, T_INITIAL, MU_T, T_MIN@}; ! ! /* now some functions to test in one dimension */ ! double E1(void *xp) ! @{ ! double x = * ((double *) xp); ! ! return exp(-pow((x-1.0),2.0))*sin(8*x); ! @} ! ! double M1(void *xp, void *yp) ! @{ ! double x = *((double *) xp); ! double y = *((double *) yp); ! ! return fabs(x - y); ! @} ! ! void S1(const gsl_rng * r, void *xp, double step_size) ! @{ ! double old_x = *((double *) xp); ! double new_x; ! ! double u = gsl_rng_uniform(r); ! new_x = u * 2 * step_size - step_size + old_x; ! ! memcpy(xp, &new_x, sizeof(new_x)); ! @} ! ! void P1(void *xp) ! @{ ! printf("%12g", *((double *) xp)); ! @} ! ! int ! main(int argc, char *argv[]) ! @{ ! gsl_rng_type * T; ! gsl_rng * r; ! ! double x_initial = 15.5; ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc(T); ! ! gsl_siman_solve(r, &x_initial, E1, S1, M1, P1, ! NULL, NULL, NULL, ! sizeof(double), params); ! return 0; ! @} @end smallexample --- 225,229 ---- @smallexample ! @verbatiminclude examples/siman.c @end smallexample *************** *** 426,430 **** @iftex @sp 1 ! @center @image{12-cities,4.4in} @quotation --- 348,352 ---- @iftex @sp 1 ! @center @image{12-cities,3.4in} @quotation diff -x.info* -rc2P gsl-1.3/doc/sort.texi gsl-1.4/doc/sort.texi *** gsl-1.3/doc/sort.texi Sun Dec 15 13:20:56 2002 --- gsl-1.4/doc/sort.texi Tue Jul 29 09:51:43 2003 *************** *** 15,19 **** * Sorting objects:: * Sorting vectors:: ! * Selecting the k-th smallest or largest elements:: * Computing the rank:: * Sorting Examples:: --- 15,19 ---- * Sorting objects:: * Sorting vectors:: ! * Selecting the k smallest or largest elements:: * Computing the rank:: * Sorting Examples:: *************** *** 83,87 **** @cindex indirect sorting ! @deftypefun int gsl_heapsort_index (size_t * p, const void * @var{array}, size_t @var{count}, size_t @var{size}, gsl_comparison_fn_t @var{compare}) This function indirectly sorts the @var{count} elements of the array --- 83,87 ---- @cindex indirect sorting ! @deftypefun int gsl_heapsort_index (size_t * @var{p}, const void * @var{array}, size_t @var{count}, size_t @var{size}, gsl_comparison_fn_t @var{compare}) This function indirectly sorts the @var{count} elements of the array *************** *** 149,156 **** @end deftypefun ! @node Selecting the k-th smallest or largest elements ! @section Selecting the k-th smallest or largest elements ! The functions described in this section select the @math{k}-th smallest or largest elements of a data set of size @math{N}. The routines use an @math{O(kN)} direct insertion algorithm which is suited to subsets that --- 149,156 ---- @end deftypefun ! @node Selecting the k smallest or largest elements ! @section Selecting the k smallest or largest elements ! The functions described in this section select the @math{k} smallest or largest elements of a data set of size @math{N}. The routines use an @math{O(kN)} direct insertion algorithm which is suited to subsets that *************** *** 163,169 **** @deftypefun void gsl_sort_smallest (double * @var{dest}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function copies the @var{k}-th smallest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in ascending ! numerical order in @var{dest}. The size of the subset @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. --- 163,169 ---- @deftypefun void gsl_sort_smallest (double * @var{dest}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function copies the @var{k} smallest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in ascending ! numerical order in @var{dest}. The size @var{k} of the subset must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. *************** *** 171,177 **** @deftypefun void gsl_sort_largest (double * @var{dest}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function copies the @var{k}-th largest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in descending ! numerical order in @var{dest}. The size of the subset @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. --- 171,177 ---- @deftypefun void gsl_sort_largest (double * @var{dest}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function copies the @var{k} largest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in descending ! numerical order in @var{dest}. @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. *************** *** 180,196 **** @deftypefun void gsl_sort_vector_smallest (double * @var{dest}, size_t @var{k}, const gsl_vector * @var{v}) @deftypefunx void gsl_sort_vector_largest (double * @var{dest}, size_t @var{k}, const gsl_vector * @var{v}) ! These functions copy the @var{k}-th smallest or largest elements of the ! vector @var{v} into the array @var{dest}. The size of the subset @var{k} must be less than or equal to the length of the vector @var{v}. @end deftypefun ! The following functions find the indices of the @math{k}-th smallest or largest elements of a dataset, @deftypefun void gsl_sort_smallest_index (size_t * @var{p}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function stores the indices of the @var{k}-th smallest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in the array @var{p}. The indices are chosen so that the corresponding data is ! in ascending numerical order. The size of the subset @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. --- 180,196 ---- @deftypefun void gsl_sort_vector_smallest (double * @var{dest}, size_t @var{k}, const gsl_vector * @var{v}) @deftypefunx void gsl_sort_vector_largest (double * @var{dest}, size_t @var{k}, const gsl_vector * @var{v}) ! These functions copy the @var{k} smallest or largest elements of the ! vector @var{v} into the array @var{dest}. @var{k} must be less than or equal to the length of the vector @var{v}. @end deftypefun ! The following functions find the indices of the @math{k} smallest or largest elements of a dataset, @deftypefun void gsl_sort_smallest_index (size_t * @var{p}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function stores the indices of the @var{k} smallest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in the array @var{p}. The indices are chosen so that the corresponding data is ! in ascending numerical order. @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. *************** *** 198,205 **** @deftypefun void gsl_sort_largest_index (size_t * @var{p}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function stores the indices of the @var{k}-th largest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in the array @var{p}. The indices are chosen so that the corresponding data is ! in descending numerical order. The size of the subset @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. --- 198,205 ---- @deftypefun void gsl_sort_largest_index (size_t * @var{p}, size_t @var{k}, const double * @var{src}, size_t @var{stride}, size_t @var{n}) ! This function stores the indices of the @var{k} largest elements of the array @var{src}, of size @var{n} and stride @var{stride}, in the array @var{p}. The indices are chosen so that the corresponding data is ! in descending numerical order. @var{k} must be less than or equal to @var{n}. The data @var{src} is not modified by this operation. *************** *** 208,214 **** @deftypefun void gsl_sort_vector_smallest_index (size_t * @var{p}, size_t @var{k}, const gsl_vector * @var{v}) @deftypefunx void gsl_sort_vector_largest_index (size_t * @var{p}, size_t @var{k}, const gsl_vector * @var{v}) ! These functions store the indices of @var{k}-th smallest or largest ! elements of the vector @var{v} in the array @var{p}. The size of the ! subset @var{k} must be less than or equal to the length of the vector @var{v}. @end deftypefun --- 208,213 ---- @deftypefun void gsl_sort_vector_smallest_index (size_t * @var{p}, size_t @var{k}, const gsl_vector * @var{v}) @deftypefunx void gsl_sort_vector_largest_index (size_t * @var{p}, size_t @var{k}, const gsl_vector * @var{v}) ! These functions store the indices of the @var{k} smallest or largest ! elements of the vector @var{v} in the array @var{p}. @var{k} must be less than or equal to the length of the vector @var{v}. @end deftypefun *************** *** 251,256 **** @{ double vi = gsl_vector_get(v, i); ! printf("element = %d, value = %g, rank = %d\n", ! i, vi, rank->data[i]); @} --- 250,255 ---- @{ double vi = gsl_vector_get(v, i); ! printf ("element = %d, value = %g, rank = %d\n", ! i, vi, rank->data[i]); @} *************** *** 271,276 **** for (i = 0; i < v->size; i++) @{ ! double vpi = gsl_vector_get(v, p->data[i]); ! printf("order = %d, value = %g\n", i, vpi); @} @end example --- 270,275 ---- for (i = 0; i < v->size; i++) @{ ! double vpi = gsl_vector_get (v, p->data[i]); ! printf ("order = %d, value = %g\n", i, vpi); @} @end example *************** *** 281,318 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! const gsl_rng_type * T; ! gsl_rng * r; ! ! int i, k = 5, N = 100000; ! ! double * x = malloc (N * sizeof(double)); ! double * small = malloc (k * sizeof(double)); ! ! gsl_rng_env_setup(); ! ! T = gsl_rng_default; ! r = gsl_rng_alloc (T); ! ! for (i = 0; i < N; i++) ! @{ ! x[i] = gsl_rng_uniform(r); ! @} ! ! gsl_sort_smallest (small, k, x, 1, N); ! ! printf("%d smallest values from %d\n", k, N); ! ! for (i = 0; i < k; i++) ! @{ ! printf ("%d: %.18f\n", i, small[i]); ! @} ! return 0; ! @} @end example The output lists the 5 smallest values, in ascending order, --- 280,284 ---- @example ! @verbatiminclude examples/sortsmall.c @end example The output lists the 5 smallest values, in ascending order, *************** *** 320,329 **** @example $ ./a.out ! 5 smallest values from 100000 ! 0: 0.000005466630682349 ! 1: 0.000012384494766593 ! 2: 0.000017581274732947 ! 3: 0.000025131041184068 ! 4: 0.000031369971111417 @end example --- 286,290 ---- @example $ ./a.out ! @verbatiminclude examples/sortsmall.out @end example diff -x.info* -rc2P gsl-1.3/doc/specfunc-bessel.texi gsl-1.4/doc/specfunc-bessel.texi *** gsl-1.3/doc/specfunc-bessel.texi Thu Oct 18 10:13:21 2001 --- gsl-1.4/doc/specfunc-bessel.texi Thu May 8 20:43:49 2003 *************** *** 334,338 **** @deftypefunx int gsl_sf_bessel_y2_e (double @var{x}, gsl_sf_result * @var{result}) These routines compute the irregular spherical Bessel function of second ! order, @math{y_2(x) = (-3/x^2 + 1/x)\cos(x) - (3/x^2)\sin(x)}. @comment Exceptional Return Values: GSL_EUNDRFLW @end deftypefun --- 334,338 ---- @deftypefunx int gsl_sf_bessel_y2_e (double @var{x}, gsl_sf_result * @var{result}) These routines compute the irregular spherical Bessel function of second ! order, @math{y_2(x) = (-3/x^3 + 1/x)\cos(x) - (3/x^2)\sin(x)}. @comment Exceptional Return Values: GSL_EUNDRFLW @end deftypefun *************** *** 579,583 **** @deftypefunx int gsl_sf_bessel_zero_Jnu_e (double @var{nu}, unsigned int @var{s}, gsl_sf_result * @var{result}) These routines compute the location of the @var{s}-th positive zero of ! the Bessel function @math{J_\nu(x)}. @comment Exceptional Return Values: @end deftypefun --- 579,584 ---- @deftypefunx int gsl_sf_bessel_zero_Jnu_e (double @var{nu}, unsigned int @var{s}, gsl_sf_result * @var{result}) These routines compute the location of the @var{s}-th positive zero of ! the Bessel function @math{J_\nu(x)}. The current implementation does not ! support negative values of @var{nu}. @comment Exceptional Return Values: @end deftypefun diff -x.info* -rc2P gsl-1.3/doc/specfunc-chebyshev.texi gsl-1.4/doc/specfunc-chebyshev.texi *** gsl-1.3/doc/specfunc-chebyshev.texi Wed Aug 22 14:30:56 2001 --- gsl-1.4/doc/specfunc-chebyshev.texi Thu May 8 18:58:51 2003 *************** *** 3,7 **** @section Chebyshev Polynomials @cindex Chebyshev polynomials ! The Chebyshev polynomials @c{$T_n(x) = \cos(n \arccos x)$} --- 3,7 ---- @section Chebyshev Polynomials @cindex Chebyshev polynomials ! @cindex polynomials, Chebyshev The Chebyshev polynomials @c{$T_n(x) = \cos(n \arccos x)$} *************** *** 35,39 **** @node The gsl_sf_cheb_series struct @subsection The gsl_sf_cheb_series struct ! @example typedef struct --- 35,40 ---- @node The gsl_sf_cheb_series struct @subsection The gsl_sf_cheb_series struct ! @cindex Chebyshev series ! @cindex series, Chebyshev @example typedef struct diff -x.info* -rc2P gsl-1.3/doc/specfunc-erf.texi gsl-1.4/doc/specfunc-erf.texi *** gsl-1.3/doc/specfunc-erf.texi Thu Oct 18 10:49:27 2001 --- gsl-1.4/doc/specfunc-erf.texi Thu May 8 18:58:51 2003 *************** *** 68,69 **** --- 68,83 ---- @comment Exceptional Return Values: none @end deftypefun + + @cindex hazard function, normal distribution + @cindex Mill's ratio, inverse + The @dfn{hazard function} for the normal distrbution, + also known as the inverse Mill's ratio, is defined as + @math{h(x) = Z(x)/Q(x) = \sqrt{2/\pi} \exp(-x^2 / 2) / \erfc(x/\sqrt 2)}. + It decreases rapidly as @math{x} approaches @math{-\infty} and asymptotes + to @math{h(x) \sim x} as @math{x} approaches @math{+\infty}. + + @deftypefun double gsl_sf_hazard (double @var{x}) + @deftypefunx int gsl_sf_hazard_e (double @var{x}, gsl_sf_result * @var{result}) + These routines compute the hazard function for the normal distribution. + @comment Exceptional Return Values: GSL_EUNDRFLW + @end deftypefun diff -x.info* -rc2P gsl-1.3/doc/specfunc-exp.texi gsl-1.4/doc/specfunc-exp.texi *** gsl-1.3/doc/specfunc-exp.texi Fri Oct 19 14:34:59 2001 --- gsl-1.4/doc/specfunc-exp.texi Thu May 8 18:58:51 2003 *************** *** 114,118 **** @deftypefun int gsl_sf_exp_err_e10_e (double @var{x}, double @var{dx}, gsl_sf_result_e10 * @var{result}) ! This functions exponentiate a quantity @var{x} with an associated absolute error @var{dx} using the @code{gsl_sf_result_e10} type to return a result with extended range. --- 114,118 ---- @deftypefun int gsl_sf_exp_err_e10_e (double @var{x}, double @var{dx}, gsl_sf_result_e10 * @var{result}) ! This function exponentiates a quantity @var{x} with an associated absolute error @var{dx} using the @code{gsl_sf_result_e10} type to return a result with extended range. diff -x.info* -rc2P gsl-1.3/doc/specfunc-expint.texi gsl-1.4/doc/specfunc-expint.texi *** gsl-1.3/doc/specfunc-expint.texi Sun Nov 3 15:03:02 2002 --- gsl-1.4/doc/specfunc-expint.texi Thu May 8 18:58:51 2003 *************** *** 1,3 **** --- 1,4 ---- @cindex exponential integrals + @cindex integrals, exponential Information on the exponential integrals can be found in Abramowitz & *************** *** 16,20 **** @node Exponential Integral @subsection Exponential Integral ! @deftypefun double gsl_sf_expint_E1 (double @var{x}) --- 17,21 ---- @node Exponential Integral @subsection Exponential Integral ! @cindex E1(x), E2(x), Ei(x) @deftypefun double gsl_sf_expint_E1 (double @var{x}) *************** *** 85,88 **** --- 86,92 ---- @node Hyperbolic Integrals @subsection Hyperbolic Integrals + @cindex hyperbolic integrals + @cindex Shi(x) + @cindex Chi(x) @deftypefun double gsl_sf_Shi (double @var{x}) *************** *** 114,118 **** @node Trigonometric Integrals @subsection Trigonometric Integrals ! @deftypefun double gsl_sf_Si (const double @var{x}) @deftypefunx int gsl_sf_Si_e (double @var{x}, gsl_sf_result * @var{result}) --- 118,124 ---- @node Trigonometric Integrals @subsection Trigonometric Integrals ! @cindex trigonometric integrals ! @cindex Si(x) ! @cindex Ci(x) @deftypefun double gsl_sf_Si (const double @var{x}) @deftypefunx int gsl_sf_Si_e (double @var{x}, gsl_sf_result * @var{result}) *************** *** 134,138 **** @node Arctangent Integral @subsection Arctangent Integral ! @deftypefun double gsl_sf_atanint (double @var{x}) @deftypefunx int gsl_sf_atanint_e (double @var{x}, gsl_sf_result * @var{result}) --- 140,144 ---- @node Arctangent Integral @subsection Arctangent Integral ! @cindex arctangent integral @deftypefun double gsl_sf_atanint (double @var{x}) @deftypefunx int gsl_sf_atanint_e (double @var{x}, gsl_sf_result * @var{result}) *************** *** 142,143 **** --- 148,150 ---- @comment Exceptional Return Values: @end deftypefun + diff -x.info* -rc2P gsl-1.3/doc/specfunc-fermi-dirac.texi gsl-1.4/doc/specfunc-fermi-dirac.texi *** gsl-1.3/doc/specfunc-fermi-dirac.texi Thu Oct 18 10:51:36 2001 --- gsl-1.4/doc/specfunc-fermi-dirac.texi Thu May 8 18:58:51 2003 *************** *** 11,15 **** @node Complete Fermi-Dirac Integrals @subsection Complete Fermi-Dirac Integrals ! The complete Fermi-Dirac integral @math{F_j(x)} is given by, --- 11,16 ---- @node Complete Fermi-Dirac Integrals @subsection Complete Fermi-Dirac Integrals ! @cindex complete Fermi-Dirac integrals ! @cindex Fj(x), Fermi-Dirac integral The complete Fermi-Dirac integral @math{F_j(x)} is given by, *************** *** 17,21 **** \beforedisplay $$ ! F_j(x) := {1\over\Gamma(j+1)} \int_0^\infty {t^j \over (\exp(t-x) + 1)} $$ \afterdisplay --- 18,22 ---- \beforedisplay $$ ! F_j(x) := {1\over\Gamma(j+1)} \int_0^\infty dt {t^j \over (\exp(t-x) + 1)} $$ \afterdisplay *************** *** 23,27 **** @ifinfo @example ! F_j(x) := (1/r\Gamma(j+1)) \int_0^\infty (t^j / (\exp(t-x) + 1)) @end example @end ifinfo --- 24,28 ---- @ifinfo @example ! F_j(x) := (1/r\Gamma(j+1)) \int_0^\infty dt (t^j / (\exp(t-x) + 1)) @end example @end ifinfo *************** *** 94,98 **** @node Incomplete Fermi-Dirac Integrals @subsection Incomplete Fermi-Dirac Integrals ! The incomplete Fermi-Dirac integral @math{F_j(x,b)} is given by, --- 95,100 ---- @node Incomplete Fermi-Dirac Integrals @subsection Incomplete Fermi-Dirac Integrals ! @cindex incomplete Fermi-Dirac integral ! @cindex Fj(x,b), incomplete Fermi-Dirac integral The incomplete Fermi-Dirac integral @math{F_j(x,b)} is given by, *************** *** 100,104 **** \beforedisplay $$ ! F_j(x,b) := {1\over\Gamma(j+1)} \int_b^\infty {t^j \over (\exp(t-x) + 1)} $$ \afterdisplay --- 102,106 ---- \beforedisplay $$ ! F_j(x,b) := {1\over\Gamma(j+1)} \int_b^\infty dt {t^j \over (\exp(t-x) + 1)} $$ \afterdisplay *************** *** 106,110 **** @ifinfo @example ! F_j(x,b) := (1/\Gamma(j+1)) \int_b^\infty (t^j / (\Exp(t-x) + 1)) @end example @end ifinfo --- 108,112 ---- @ifinfo @example ! F_j(x,b) := (1/\Gamma(j+1)) \int_b^\infty dt (t^j / (\Exp(t-x) + 1)) @end example @end ifinfo diff -x.info* -rc2P gsl-1.3/doc/specfunc-gamma.texi gsl-1.4/doc/specfunc-gamma.texi *** gsl-1.3/doc/specfunc-gamma.texi Sun Dec 15 13:13:11 2002 --- gsl-1.4/doc/specfunc-gamma.texi Thu May 8 18:58:51 2003 *************** *** 6,10 **** \beforedisplay $$ ! \Gamma(x) = \int_0^t dt \, t^{x-1} \exp(-t) $$ \afterdisplay --- 6,10 ---- \beforedisplay $$ ! \Gamma(x) = \int_0^{\infty} dt \, t^{x-1} \exp(-t) $$ \afterdisplay *************** *** 12,16 **** @ifinfo @example ! \Gamma(x) = \int_0^t dt t^@{x-1@} \exp(-t) @end example @end ifinfo --- 12,16 ---- @ifinfo @example ! \Gamma(x) = \int_0^\infty dt t^@{x-1@} \exp(-t) @end example @end ifinfo *************** *** 167,171 **** @cindex Apell symbol, see Pochammer symbol These routines compute the Pochhammer symbol @math{(a)_x := \Gamma(a + ! x)/\Gamma(x)}, subject to @math{a} and @math{a+x} not being negative integers. The Pochhammer symbol is also known as the Apell symbol. @comment exceptions: GSL_EDOM, GSL_EOVRFLW --- 167,171 ---- @cindex Apell symbol, see Pochammer symbol These routines compute the Pochhammer symbol @math{(a)_x := \Gamma(a + ! x)/\Gamma(a)}, subject to @math{a} and @math{a+x} not being negative integers. The Pochhammer symbol is also known as the Apell symbol. @comment exceptions: GSL_EDOM, GSL_EOVRFLW *************** *** 225,228 **** --- 225,242 ---- @comment exceptions: GSL_EDOM @end deftypefun + + @deftypefun double gsl_sf_gamma_inc (double @var{a}, double @var{x}) + @deftypefunx int gsl_sf_gamma_inc_e (double @var{a}, double @var{x}, gsl_sf_result * @var{result}) + @cindex non-normalized incomplete Gamma function + These functions compute the incomplete Gamma Function + @c{$\Gamma(a,x)$} @math{\Gamma(a,x)}, without + the normalization factor included in the previously defined functions: + @c{$\Gamma(a,x) = \int_x^\infty dt\, t^{(a-1)} \exp(-t)$} + @math{\Gamma(a,x) = \int_x\infty dt t^@{a-1@} \exp(-t)} + for @math{a} real and @c{$x \ge 0$} + @math{x >= 0}. + @comment exceptions: GSL_EDOM + @end deftypefun + diff -x.info* -rc2P gsl-1.3/doc/specfunc-legendre.texi gsl-1.4/doc/specfunc-legendre.texi *** gsl-1.3/doc/specfunc-legendre.texi Fri Oct 26 09:50:48 2001 --- gsl-1.4/doc/specfunc-legendre.texi Thu May 8 18:58:51 2003 *************** *** 136,140 **** @deftypefun int gsl_sf_legendre_array_size (const int @var{lmax}, const int @var{m}) ! This functions returns the size of @var{result_array}[] needed for the array versions of @math{P_l^m(x)}, @var{lmax} - @var{m} + 1. @comment Exceptional Return Values: none --- 136,140 ---- @deftypefun int gsl_sf_legendre_array_size (const int @var{lmax}, const int @var{m}) ! This function returns the size of @var{result_array}[] needed for the array versions of @math{P_l^m(x)}, @var{lmax} - @var{m} + 1. @comment Exceptional Return Values: none diff -x.info* -rc2P gsl-1.3/doc/specfunc.texi gsl-1.4/doc/specfunc.texi *** gsl-1.3/doc/specfunc.texi Fri Oct 26 09:37:42 2001 --- gsl-1.4/doc/specfunc.texi Mon Jun 2 16:16:02 2003 *************** *** 270,293 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! double x = 5.0; ! gsl_sf_result result; ! ! double expected = -0.17759677131433830434739701; ! ! int status = gsl_sf_bessel_J0_e (x, &result); ! ! printf("status = %s\n", gsl_strerror(status)); ! printf("J0(5.0) = %.18f\n" ! " +/- % .18f\n", ! result.val, result.err); ! printf("exact = %.18f\n", expected); ! return status; ! @} @end example @noindent --- 270,274 ---- @example ! @verbatiminclude examples/specfun_e.c @end example @noindent *************** *** 295,302 **** @example $ ./a.out ! status = success ! J0(5.0) = -0.177596771314338292 ! +/- 0.000000000000000193 ! exact = -0.177596771314338292 @end example @noindent --- 276,280 ---- @example $ ./a.out ! @verbatiminclude examples/specfun_e.out @end example @noindent *************** *** 306,324 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! double x = 5.0; ! double expected = -0.17759677131433830434739701; ! ! double y = gsl_sf_bessel_J0 (x); ! ! printf("J0(5.0) = %.18f\n", y); ! printf("exact = %.18f\n", expected); ! return 0; ! @} @end example @noindent --- 284,288 ---- @example ! @verbatiminclude examples/specfun.c @end example @noindent *************** *** 326,331 **** @example $ ./a.out ! J0(5.0) = -0.177596771314338292 ! exact = -0.177596771314338292 @end example --- 290,294 ---- @example $ ./a.out ! @verbatiminclude examples/specfun.out @end example diff -x.info* -rc2P gsl-1.3/doc/stamp-vti gsl-1.4/doc/stamp-vti *** gsl-1.3/doc/stamp-vti Mon Dec 16 19:55:07 2002 --- gsl-1.4/doc/stamp-vti Thu Aug 14 12:36:37 2003 *************** *** 1,3 **** ! @set UPDATED 11 December 2002 ! @set EDITION 1.3 ! @set VERSION 1.3 --- 1,4 ---- ! @set UPDATED 12 August 2003 ! @set UPDATED-MONTH August 2003 ! @set EDITION 1.4 ! @set VERSION 1.4 diff -x.info* -rc2P gsl-1.3/doc/statistics.texi gsl-1.4/doc/statistics.texi *** gsl-1.3/doc/statistics.texi Sun Dec 15 13:21:42 2002 --- gsl-1.4/doc/statistics.texi Sun Jul 27 08:40:56 2003 *************** *** 305,309 **** @section Autocorrelation ! @deftypefun double gsl_stats_lag1_autocorrelation (const double data[], const size_t @var{stride}, const size_t @var{n}) This function computes the lag-1 autocorrelation of the dataset @var{data}. --- 305,309 ---- @section Autocorrelation ! @deftypefun double gsl_stats_lag1_autocorrelation (const double @var{data}[], const size_t @var{stride}, const size_t @var{n}) This function computes the lag-1 autocorrelation of the dataset @var{data}. *************** *** 328,332 **** ! @deftypefun double gsl_stats_lag1_autocorrelation_m (const double data[], const size_t @var{stride}, const size_t @var{n}, const double @var{mean}) This function computes the lag-1 autocorrelation of the dataset @var{data} using the given value of the mean @var{mean}. --- 328,332 ---- ! @deftypefun double gsl_stats_lag1_autocorrelation_m (const double @var{data}[], const size_t @var{stride}, const size_t @var{n}, const double @var{mean}) This function computes the lag-1 autocorrelation of the dataset @var{data} using the given value of the mean @var{mean}. *************** *** 338,342 **** @cindex covariance, of two datasets ! @deftypefun double gsl_stats_covariance (const double @var{data1}[], const size_t @var{stride1}, const double data2[], const size_t @var{stride2}, const size_t @var{n}) This function computes the covariance of the datasets @var{data1} and @var{data2} which must both be of the same length @var{n}. --- 338,342 ---- @cindex covariance, of two datasets ! @deftypefun double gsl_stats_covariance (const double @var{data1}[], const size_t @var{stride1}, const double @var{data2}[], const size_t @var{stride2}, const size_t @var{n}) This function computes the covariance of the datasets @var{data1} and @var{data2} which must both be of the same length @var{n}. *************** *** 360,365 **** This function computes the covariance of the datasets @var{data1} and @var{data2} using the given values of the means, @var{mean1} and ! @var{mean2}. ! @end deftypefun --- 360,365 ---- This function computes the covariance of the datasets @var{data1} and @var{data2} using the given values of the means, @var{mean1} and ! @var{mean2}. This is useful if you have already computed the means of ! @var{data1} and @var{data2} and want to avoid recomputing them. @end deftypefun *************** *** 664,694 **** @node Example statistical programs ! @section Example statistical programs Here is a basic example of how to use the statistical functions: @example ! #include ! #include ! ! int ! main(void) ! @{ ! double data[5] = @{17.2, 18.1, 16.5, 18.3, 12.6@}; ! double mean, variance, largest, smallest; ! ! mean = gsl_stats_mean(data, 1, 5); ! variance = gsl_stats_variance(data, 1, 5); ! largest = gsl_stats_max(data, 1, 5); ! smallest = gsl_stats_min(data, 1, 5); ! ! printf("The dataset is %g, %g, %g, %g, %g\n", ! data[0], data[1], data[2], data[3], data[4]); ! ! printf("The sample mean is %g\n", mean); ! printf("The estimated variance is %g\n", variance); ! printf("The largest value is %g\n", largest); ! printf("The smallest value is %g\n", smallest); ! return 0; ! @} @end example --- 664,672 ---- @node Example statistical programs ! @section Examples Here is a basic example of how to use the statistical functions: @example ! @verbatiminclude examples/stat.c @end example *************** *** 696,704 **** @example ! The dataset is 17.2, 18.1, 16.5, 18.3, 12.6 ! The sample mean is 16.54 ! The estimated variance is 4.2984 ! The largest value is 18.3 ! The smallest value is 12.6 @end example --- 674,678 ---- @example ! @verbatiminclude examples/stat.out @end example *************** *** 707,746 **** @example ! #include ! #include ! #include ! ! int ! main(void) ! @{ ! double data[5] = @{17.2, 18.1, 16.5, 18.3, 12.6@}; ! double median, upperq, lowerq; ! ! printf("Original dataset: %g, %g, %g, %g, %g\n", ! data[0], data[1], data[2], data[3], data[4]); ! ! gsl_sort (data, 1, 5); ! ! printf("Sorted dataset: %g, %g, %g, %g, %g\n", ! data[0], data[1], data[2], data[3], data[4]); ! ! median ! = gsl_stats_median_from_sorted_data (data, ! 1, 5); ! ! upperq ! = gsl_stats_quantile_from_sorted_data (data, ! 1, 5, ! 0.75); ! lowerq ! = gsl_stats_quantile_from_sorted_data (data, ! 1, 5, ! 0.25); ! ! printf("The median is %g\n", median); ! printf("The upper quartile is %g\n", upperq); ! printf("The lower quartile is %g\n", lowerq); ! return 0; ! @} @end example --- 681,685 ---- @example ! @verbatiminclude examples/statsort.c @end example *************** *** 748,756 **** @example ! Original dataset: 17.2, 18.1, 16.5, 18.3, 12.6 ! Sorted dataset: 12.6, 16.5, 17.2, 18.1, 18.3 ! The median is 17.2 ! The upper quartile is 18.1 ! The lower quartile is 16.5 @end example --- 687,691 ---- @example ! @verbatiminclude examples/statsort.out @end example diff -x.info* -rc2P gsl-1.3/doc/sum.texi gsl-1.4/doc/sum.texi *** gsl-1.3/doc/sum.texi Tue Mar 19 18:17:22 2002 --- gsl-1.4/doc/sum.texi Sun Jul 27 08:28:08 2003 *************** *** 76,80 **** converges sufficiently fast then this procedure can be acceptable. It is appropriate to use this method when there is a need to compute many ! extrapolations of series with similar converge properties at high-speed. For example, when numerically integrating a function defined by a parameterized series where the parameter varies only slightly. A --- 76,80 ---- converges sufficiently fast then this procedure can be acceptable. It is appropriate to use this method when there is a need to compute many ! extrapolations of series with similar convergence properties at high-speed. For example, when numerically integrating a function defined by a parameterized series where the parameter varies only slightly. A *************** *** 109,113 **** @node Example of accelerating a series ! @section Example of accelerating a series The following code calculates an estimate of @math{\zeta(2) = \pi^2 / 6} --- 109,113 ---- @node Example of accelerating a series ! @section Examples The following code calculates an estimate of @math{\zeta(2) = \pi^2 / 6} *************** *** 132,182 **** @example ! #include ! #include ! #include ! ! #define N 20 ! ! int ! main (void) ! @{ ! double t[N]; ! double sum_accel, err; ! double sum = 0; ! int n; ! ! gsl_sum_levin_u_workspace * w ! = gsl_sum_levin_u_alloc (N); ! ! const double zeta_2 = M_PI * M_PI / 6.0; ! ! /* terms for zeta(2) = \sum_@{n=1@}^@{\infty@} 1/n^2 */ ! ! for (n = 0; n < N; n++) ! @{ ! double np1 = n + 1.0; ! t[n] = 1.0 / (np1 * np1); ! sum += t[n]; ! @} ! ! gsl_sum_levin_u_accel (t, N, w, &sum_accel, &err); ! ! printf("term-by-term sum = % .16f using %d terms\n", ! sum, N); ! ! printf("term-by-term sum = % .16f using %d terms\n", ! w->sum_plain, w->terms_used); ! ! printf("exact value = % .16f\n", zeta_2); ! printf("accelerated sum = % .16f using %d terms\n", ! sum_accel, w->terms_used); ! ! printf("estimated error = % .16f\n", err); ! printf("actual error = % .16f\n", ! sum_accel - zeta_2); ! ! gsl_sum_levin_u_free (w); ! return 0; ! @} @end example @noindent --- 132,136 ---- @example ! @verbatiminclude examples/sum.c @end example @noindent *************** *** 190,199 **** @example bash$ ./a.out ! term-by-term sum = 1.5961632439130233 using 20 terms ! term-by-term sum = 1.5759958390005426 using 13 terms ! exact value = 1.6449340668482264 ! accelerated sum = 1.6449340668166479 using 13 terms ! estimated error = 0.0000000000508580 ! actual error = -0.0000000000315785 @end example @noindent --- 144,148 ---- @example bash$ ./a.out ! @verbatiminclude examples/sum.out @end example @noindent diff -x.info* -rc2P gsl-1.3/doc/texinfo.tex gsl-1.4/doc/texinfo.tex *** gsl-1.3/doc/texinfo.tex Tue Jun 4 21:58:55 2002 --- gsl-1.4/doc/texinfo.tex Mon Jun 16 08:00:23 2003 *************** *** 4,11 **** \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % ! \def\texinfoversion{2002-06-04.06} % ! % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, ! % 2000, 01, 02 Free Software Foundation, Inc. % % This texinfo.tex file is free software; you can redistribute it and/or --- 4,11 ---- \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % ! \def\texinfoversion{2003-05-04.08} % ! % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, ! % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. % % This texinfo.tex file is free software; you can redistribute it and/or *************** *** 30,45 **** % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: ! % ftp://ftp.gnu.org/gnu/texinfo.tex % (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) - % ftp://texinfo.org/texinfo/texinfo.tex % ftp://tug.org/tex/texinfo.tex % (and all CTAN mirrors, see http://www.ctan.org), % and /home/gd/gnu/doc/texinfo.tex on the GNU machines. ! % % The texinfo.tex in any given Texinfo distribution could well be out % of date, so if that's what you're using, please check. - % - % Texinfo has a small home page at http://texinfo.org/ and also - % http://www.gnu.org/software/texinfo. % % Send bug reports to bug-texinfo@gnu.org. Please include including a --- 30,43 ---- % Please try the latest version of texinfo.tex before submitting bug % reports; you can get the latest version from: ! % ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex % (and all GNU mirrors, see http://www.gnu.org/order/ftp.html) % ftp://tug.org/tex/texinfo.tex % (and all CTAN mirrors, see http://www.ctan.org), % and /home/gd/gnu/doc/texinfo.tex on the GNU machines. ! % ! % The GNU Texinfo home page is http://www.gnu.org/software/texinfo. ! % % The texinfo.tex in any given Texinfo distribution could well be out % of date, so if that's what you're using, please check. % % Send bug reports to bug-texinfo@gnu.org. Please include including a *************** *** 59,64 **** % than two; texi2dvi does it as many times as necessary. % ! % It is possible to adapt texinfo.tex for other languages. You can get ! % the existing language-specific files from the full Texinfo distribution. \message{Loading texinfo [version \texinfoversion]:} --- 57,63 ---- % than two; texi2dvi does it as many times as necessary. % ! % It is possible to adapt texinfo.tex for other languages, to some ! % extent. You can get the existing language-specific files from the ! % full Texinfo distribution. \message{Loading texinfo [version \texinfoversion]:} *************** *** 70,74 **** \catcode`+=\active \catcode`\_=\active} ! % Save some parts of plain tex whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet --- 69,80 ---- \catcode`+=\active \catcode`\_=\active} ! \message{Basics,} ! \chardef\other=12 ! ! % We never want plain's \outer definition of \+ in Texinfo. ! % For @tex, we can use \tabalign. ! \let\+ = \relax ! ! % Save some plain tex macros whose names we will redefine. \let\ptexb=\b \let\ptexbullet=\bullet *************** *** 80,96 **** \let\ptexequiv=\equiv \let\ptexexclam=\! \let\ptexi=\i \let\ptexlbrace=\{ \let\ptexrbrace=\} \let\ptexstar=\* \let\ptext=\t - % We never want plain's outer \+ definition in Texinfo. - % For @tex, we can use \tabalign. - \let\+ = \relax - - \message{Basics,} - \chardef\other=12 - % If this character appears in an error message or help string, it % starts a new line in the output. --- 86,101 ---- \let\ptexequiv=\equiv \let\ptexexclam=\! + \let\ptexgtr=> + \let\ptexhat=^ \let\ptexi=\i + \let\ptexindent=\indent \let\ptexlbrace=\{ + \let\ptexless=< + \let\ptexplus=+ \let\ptexrbrace=\} + \let\ptexslash=\/ \let\ptexstar=\* \let\ptext=\t % If this character appears in an error message or help string, it % starts a new line in the output. *************** *** 139,180 **** \ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi % Ignore a token. % \def\gobble#1{} \hyphenation{ap-pen-dix} - \hyphenation{mini-buf-fer mini-buf-fers} \hyphenation{eshell} \hyphenation{white-space} % Margin to add to right of even pages, to left of odd pages. ! \newdimen \bindingoffset ! \newdimen \normaloffset \newdimen\pagewidth \newdimen\pageheight % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, ! % since that produces some useless output on the terminal. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% ! \ifx\eTeXversion\undefined ! \def\loggingall{\tracingcommands2 \tracingstats2 ! \tracingpages1 \tracingoutput1 \tracinglostchars1 ! \tracingmacros2 \tracingparagraphs1 \tracingrestores1 ! \showboxbreadth\maxdimen\showboxdepth\maxdimen ! }% ! \else ! \def\loggingall{\tracingcommands3 \tracingstats2 ! \tracingpages1 \tracingoutput1 \tracinglostchars1 ! \tracingmacros2 \tracingparagraphs1 \tracingrestores1 ! \tracingscantokens1 \tracingassigns1 \tracingifs1 ! \tracinggroups1 \tracingnesting2 ! \showboxbreadth\maxdimen\showboxdepth\maxdimen }% - \fi % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. ! % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} --- 144,210 ---- \ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi + % In some macros, we cannot use the `\? notation---the left quote is + % in some cases the escape char. + \chardef\colonChar = `\: + \chardef\commaChar = `\, + \chardef\dotChar = `\. + \chardef\equalChar = `\= + \chardef\exclamChar= `\! + \chardef\questChar = `\? + \chardef\semiChar = `\; + \chardef\spaceChar = `\ % + \chardef\underChar = `\_ + % Ignore a token. % \def\gobble#1{} + % True if #1 is the empty string, i.e., called like `\ifempty{}'. + % + \def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}% + \def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}% + + % Hyphenation fixes. \hyphenation{ap-pen-dix} \hyphenation{eshell} + \hyphenation{mini-buf-fer mini-buf-fers} + \hyphenation{time-stamp} \hyphenation{white-space} % Margin to add to right of even pages, to left of odd pages. ! \newdimen\bindingoffset ! \newdimen\normaloffset \newdimen\pagewidth \newdimen\pageheight % Sometimes it is convenient to have everything in the transcript file % and nothing on the terminal. We don't just call \tracingall here, ! % since that produces some useless output on the terminal. We also make ! % some effort to order the tracing commands to reduce output in the log ! % file; cf. trace.sty in LaTeX. % \def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% ! \def\loggingall{% ! \tracingstats2 ! \tracingpages1 ! \tracinglostchars2 % 2 gives us more in etex ! \tracingparagraphs1 ! \tracingoutput1 ! \tracingmacros2 ! \tracingrestores1 ! \showboxbreadth\maxdimen \showboxdepth\maxdimen ! \ifx\eTeXversion\undefined\else % etex gives us more logging ! \tracingscantokens1 ! \tracingifs1 ! \tracinggroups1 ! \tracingnesting2 ! \tracingassigns1 ! \fi ! \tracingcommands3 % 3 gives us more in etex ! \errorcontextlines\maxdimen }% % add check for \lastpenalty to plain's definitions. If the last thing % we did was a \nobreak, we don't want to insert more space. ! % \def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount \removelastskip\penalty-50\smallskip\fi\fi} *************** *** 277,281 **** \fi }% end of \shipout\vbox ! }% end of group with \turnoffactive \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi --- 307,311 ---- \fi }% end of \shipout\vbox ! }% end of group with \normalturnoffactive \advancepageno \ifnum\outputpenalty>-20000 \else\dosupereject\fi *************** *** 437,451 **** - % Single-spacing is done by various environments (specifically, in - % \nonfillstart and \quotations). - \newskip\singlespaceskip \singlespaceskip = 12.5pt - \def\singlespace{% - % Why was this kern here? It messes up equalizing space above and below - % environments. --karl, 6may93 - %{\advance \baselineskip by -\singlespaceskip - %\kern \baselineskip}% - \setleading\singlespaceskip - } - %% Simple single-character @ commands --- 467,470 ---- *************** *** 467,480 **** \let\}=\myrbrace \begingroup ! % Definitions to produce actual \{ & \} command in an index. ! \catcode`\{ = 12 \catcode`\} = 12 \catcode`\[ = 1 \catcode`\] = 2 ! \catcode`\@ = 0 \catcode`\\ = 12 ! @gdef@lbracecmd[\{]% ! @gdef@rbracecmd[\}]% ! @endgroup % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent ! % Others are defined by plain TeX: @` @' @" @^ @~ @= @v @H. \let\, = \c \let\dotaccent = \. --- 486,502 ---- \let\}=\myrbrace \begingroup ! % Definitions to produce \{ and \} commands for indices, ! % and @{ and @} for the aux file. ! \catcode`\{ = \other \catcode`\} = \other \catcode`\[ = 1 \catcode`\] = 2 ! \catcode`\! = 0 \catcode`\\ = \other ! !gdef!lbracecmd[\{]% ! !gdef!rbracecmd[\}]% ! !gdef!lbraceatcmd[@{]% ! !gdef!rbraceatcmd[@}]% ! !endgroup % Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent ! % Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. \let\, = \c \let\dotaccent = \. *************** *** 485,489 **** % Other special characters: @questiondown @exclamdown ! % Plain TeX defines: @AA @AE @O @OE @L (and lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} --- 507,511 ---- % Other special characters: @questiondown @exclamdown ! % Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. \def\questiondown{?`} \def\exclamdown{!`} *************** *** 518,521 **** --- 540,546 ---- \def\*{\hfil\break\hbox{}\ignorespaces} + % @/ allows a line break. + \let\/=\allowbreak + % @. is an end-of-sentence period. \def\.{.\spacefactor=3000 } *************** *** 540,543 **** --- 565,578 ---- % the text is small, which looks bad. % + % Another complication is that the group might be very large. This can + % cause the glue on the previous page to be unduly stretched, because it + % does not have much material. In this case, it's better to add an + % explicit \vfill so that the extra space is at the bottom. The + % threshold for doing this is if the group is more than \vfilllimit + % percent of a page (\vfilllimit can be changed inside of @tex). + % + \newbox\groupbox + \def\vfilllimit{0.7} + % \def\group{\begingroup \ifnum\catcode13=\active \else *************** *** 553,560 **** \def\Egroup{% \egroup % End the \vtop. \endgroup % End the \group. }% % ! \vtop\bgroup % We have to put a strut on the last line in case the @group is in % the midst of an example, rather than completely enclosing it. --- 588,607 ---- \def\Egroup{% \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \copy\groupbox \endgroup % End the \group. }% % ! \setbox\groupbox = \vtop\bgroup % We have to put a strut on the last line in case the @group is in % the midst of an example, rather than completely enclosing it. *************** *** 681,686 **** } ! ! % @page forces the start of a new page % \def\page{\par\vfill\supereject} --- 728,732 ---- } ! % @page forces the start of a new page. % \def\page{\par\vfill\supereject} *************** *** 731,738 **** % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). ! % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. ! \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts --- 777,784 ---- % (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; % else use TEXT for both). ! % \def\inmargin#1{\parseinmargin #1,,\finish} \def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. ! \setbox0 = \hbox{\ignorespaces #2}% \ifdim\wd0 > 0pt \def\lefttext{#1}% have both texts *************** *** 754,765 **** % Allow normal characters that we make active in the argument (a file name). \def\include{\begingroup ! \catcode`\\=12 ! \catcode`~=12 ! \catcode`^=12 ! \catcode`_=12 ! \catcode`|=12 ! \catcode`<=12 ! \catcode`>=12 ! \catcode`+=12 \parsearg\includezzz} % Restore active chars for included file. --- 800,811 ---- % Allow normal characters that we make active in the argument (a file name). \def\include{\begingroup ! \catcode`\\=\other ! \catcode`~=\other ! \catcode`^=\other ! \catcode`_=\other ! \catcode`|=\other ! \catcode`<=\other ! \catcode`>=\other ! \catcode`+=\other \parsearg\includezzz} % Restore active chars for included file. *************** *** 767,770 **** --- 813,817 ---- % Read the included file in a group so nested @include's work. \def\thisfile{#1}% + \let\value=\expandablevalue \input\thisfile \endgroup} *************** *** 772,781 **** \def\thisfile{} ! % @center line outputs that line, centered ! ! \def\center{\parsearg\centerzzz} ! \def\centerzzz #1{{\advance\hsize by -\leftskip ! \advance\hsize by -\rightskip ! \centerline{#1}}} % @sp n outputs n lines of vertical space --- 819,833 ---- \def\thisfile{} ! % @center line ! % outputs that line, centered. ! % ! \def\center{\parsearg\docenter} ! \def\docenter#1{{% ! \ifhmode \hfil\break \fi ! \advance\hsize by -\leftskip ! \advance\hsize by -\rightskip ! \line{\hfil \ignorespaces#1\unskip \hfil}% ! \ifhmode \break \fi ! }} % @sp n outputs n lines of vertical space *************** *** 797,802 **** % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. ! % We cannot implement @paragraphindent asis, though. ! % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} --- 849,855 ---- % @paragraphindent NCHARS % We'll use ems for NCHARS, close enough. ! % NCHARS can also be the word `asis' or `none'. ! % We cannot feasibly implement @paragraphindent asis, though. ! % \def\asisword{asis} % no translation, these are keywords \def\noneword{none} *************** *** 833,836 **** --- 886,936 ---- } + % @firstparagraphindent WORD + % If WORD is `none', then suppress indentation of the first paragraph + % after a section heading. If WORD is `insert', then do indentat such + % paragraphs. + % + % The paragraph indentation is suppressed or not by calling + % \suppressfirstparagraphindent, which the sectioning commands do. We + % switch the definition of this back and forth according to WORD. By + % default, we suppress indentation. + % + \def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} + \newdimen\currentparindent + % + \def\insertword{insert} + % + \def\firstparagraphindent{\parsearg\dofirstparagraphindent} + \def\dofirstparagraphindent#1{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi + } + + % Here is how we actually suppress indentation. Redefine \everypar to + % \kern backwards by \parindent, and then reset itself to empty. + % + % We also make \indent itself not actually do anything until the next + % paragraph. + % + \gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \global\let\indent=\ptexindent + \global\everypar = {}% + }% + \global\everypar = {% + \kern-\parindent + \global\let\indent=\ptexindent + \global\everypar = {}% + }% + }% + + % @asis just yields its argument. Used with @table, for example. % *************** *** 841,849 **** % to set catcodes according to plain TeX first, to allow for subscripts, % superscripts, special math chars, etc. - % - % @math does not do math typesetting in section titles, index - % entries, and other such contexts where the catcodes are set before - % @math gets a chance to work. This could perhaps be fixed, but for now - % at least we can have real math in the main text, where it's needed most. % \let\implicitmath = $%$ font-lock fix --- 941,944 ---- *************** *** 853,860 **** % _ within @math be active (mathcode "8000), and distinguish by seeing % if the current family is \slfam, which is what @var uses. ! % ! {\catcode95 = \active % 95 = _ \gdef\mathunderscore{% ! \catcode95=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% }} --- 948,955 ---- % _ within @math be active (mathcode "8000), and distinguish by seeing % if the current family is \slfam, which is what @var uses. ! % ! {\catcode\underChar = \active \gdef\mathunderscore{% ! \catcode\underChar=\active \def_{\ifnum\fam=\slfam \_\else\sb\fi}% }} *************** *** 864,868 **** % this is not advertised and we don't care. Texinfo does not % otherwise define @\. ! % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} --- 959,963 ---- % this is not advertised and we don't care. Texinfo does not % otherwise define @\. ! % % The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} *************** *** 872,878 **** --- 967,991 ---- \mathcode`\_="8000 \mathunderscore \let\\ = \mathbackslash + \mathactive \implicitmath\finishmath} \def\finishmath#1{#1\implicitmath\Etex} + % Some active characters (such as <) are spaced differently in math. + % We have to reset their definitions in case the @math was an + % argument to a command which set the catcodes (such as @item or @section). + % + { + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + } + } + % @bullet and @minus need the same treatment as @math, just above. \def\bullet{\implicitmath\ptexbullet\implicitmath} *************** *** 966,970 **** \ifx\empty\imageheight\else height \imageheight \fi \ifnum\pdftexversion<13 ! #1.pdf% \else {#1.pdf}% --- 1079,1083 ---- \ifx\empty\imageheight\else height \imageheight \fi \ifnum\pdftexversion<13 ! #1.pdf% \else {#1.pdf}% *************** *** 987,1025 **** \openin 1 \jobname.toc \ifeof 1\else\begingroup ! \closein 1 ! \indexnofonts ! \def\tt{} ! \let\_ = \normalunderscore ! % Thanh's hack / proper braces in bookmarks \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace % \def\chapentry ##1##2##3{} - \let\appendixentry = \chapentry - \def\unnumbchapentry ##1##2{} \def\secentry ##1##2##3##4{\advancenumber{chap##2}} - \def\unnumbsecentry ##1##2##3{\advancenumber{chap##2}} \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} - \def\unnumbsubsecentry ##1##2##3##4{\advancenumber{sec##2.##3}} \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} ! \def\unnumbsubsubsecentry ##1##2##3##4##5{\advancenumber{subsec##2.##3.##4}} \input \jobname.toc \def\chapentry ##1##2##3{% \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} - \let\appendixentry = \chapentry - \def\unnumbchapentry ##1##2{% - \pdfoutline goto name{\pdfmkpgn{##2}}{##1}} \def\secentry ##1##2##3##4{% \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} - \def\unnumbsecentry ##1##2##3{% - \pdfoutline goto name{\pdfmkpgn{##3}}{##1}} \def\subsecentry ##1##2##3##4##5{% \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} - \def\unnumbsubsecentry ##1##2##3##4{% - \pdfoutline goto name{\pdfmkpgn{##4}}{##1}} \def\subsubsecentry ##1##2##3##4##5##6{% \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} ! \def\unnumbsubsubsecentry ##1##2##3##4##5{% ! \pdfoutline goto name{\pdfmkpgn{##5}}{##1}} \input \jobname.toc \endgroup\fi --- 1100,1137 ---- \openin 1 \jobname.toc \ifeof 1\else\begingroup ! \closein 1 ! % Thanh's hack / proper braces in bookmarks \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace % \def\chapentry ##1##2##3{} \def\secentry ##1##2##3##4{\advancenumber{chap##2}} \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}} \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}} ! \let\appendixentry = \chapentry ! \let\unnumbchapentry = \chapentry ! \let\unnumbsecentry = \secentry ! \let\unnumbsubsecentry = \subsecentry ! \let\unnumbsubsubsecentry = \subsubsecentry \input \jobname.toc \def\chapentry ##1##2##3{% \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}} \def\secentry ##1##2##3##4{% \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}} \def\subsecentry ##1##2##3##4##5{% \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}} \def\subsubsecentry ##1##2##3##4##5##6{% \pdfoutline goto name{\pdfmkpgn{##6}}{##1}} ! \let\appendixentry = \chapentry ! \let\unnumbchapentry = \chapentry ! \let\unnumbsecentry = \secentry ! \let\unnumbsubsecentry = \subsecentry ! \let\unnumbsubsubsecentry = \subsubsecentry ! % ! % Make special characters normal for writing to the pdf file. ! % ! \indexnofonts ! \let\tt=\relax ! \turnoffactive \input \jobname.toc \endgroup\fi *************** *** 1033,1037 **** \ifnum\lnkcount>0,\fi \picknum{#1}% ! \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{\the\pgn}}% \linkcolor #1% --- 1145,1149 ---- \ifnum\lnkcount>0,\fi \picknum{#1}% ! \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{\the\pgn}}% \linkcolor #1% *************** *** 1088,1092 **** \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 ! \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi --- 1200,1204 ---- \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 ! \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 \else \ifnum0=\countA\else\makelink\fi *************** *** 1171,1175 **** \ifx\bigger\relax % not really supported. ! \let\mainmagstep=\magstep1 \setfont\textrm\rmshape{12}{1000} \setfont\texttt\ttshape{12}{1000} --- 1283,1287 ---- \ifx\bigger\relax % not really supported. ! \mainmagstep=\magstep1 \setfont\textrm\rmshape{12}{1000} \setfont\texttt\ttshape{12}{1000} *************** *** 1179,1185 **** \setfont\texttt\ttshape{10}{\mainmagstep} \fi ! % Instead of cmb10, you many want to use cmbx10. % cmbx10 is a prettier font on its own, but cmb10 ! % looks better when embedded in a line with cmr10. \setfont\textbf\bfshape{10}{\mainmagstep} \setfont\textit\itshape{10}{\mainmagstep} --- 1291,1298 ---- \setfont\texttt\ttshape{10}{\mainmagstep} \fi ! % Instead of cmb10, you may want to use cmbx10. % cmbx10 is a prettier font on its own, but cmb10 ! % looks better when embedded in a line with cmr10 ! % (in Bob's opinion). \setfont\textbf\bfshape{10}{\mainmagstep} \setfont\textit\itshape{10}{\mainmagstep} *************** *** 1232,1235 **** --- 1345,1349 ---- \font\titlesy=cmsy10 scaled \magstep4 \def\authorrm{\secrm} + \def\authortt{\sectt} % Chapter (and unnumbered) fonts (17.28pt). *************** *** 1329,1333 **** \let\tenttsl=\smallerttsl \resetmathfonts \setleading{9.5pt}} ! \let\smallexamplefonts = \smallerfonts % Set up the default fonts, so we can use them for creating boxes. --- 1443,1465 ---- \let\tenttsl=\smallerttsl \resetmathfonts \setleading{9.5pt}} ! ! % Set the fonts to use with the @small... environments. ! \let\smallexamplefonts = \smallfonts ! ! % About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample ! % can fit this many characters: ! % 8.5x11=86 smallbook=72 a4=90 a5=69 ! % If we use \smallerfonts (8pt), then we can fit this many characters: ! % 8.5x11=90+ smallbook=80 a4=90+ a5=77 ! % For me, subjectively, the few extra characters that fit aren't worth ! % the additional smallness of 8pt. So I'm making the default 9pt. ! % ! % By the way, for comparison, here's what fits with @example (10pt): ! % 8.5x11=71 smallbook=60 a4=75 a5=58 ! % ! % I wish we used A4 paper on this side of the Atlantic. ! % ! % --karl, 24jan03. ! % Set up the default fonts, so we can use them for creating boxes. *************** *** 1346,1349 **** --- 1478,1482 ---- \setfont\shortcontbf\bxshape{12}{1000} \setfont\shortcontsl\slshape{12}{1000} + \setfont\shortconttt\ttshape{12}{1000} %% Add scribe-like font environments, plus @l for inline lisp (usually sans *************** *** 1352,1358 **** % \smartitalic{ARG} outputs arg in italics, followed by an italic correction % unless the following character is such as not to need one. ! \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} ! \def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} ! \def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} \let\i=\smartitalic --- 1485,1492 ---- % \smartitalic{ARG} outputs arg in italics, followed by an italic correction % unless the following character is such as not to need one. ! \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else ! \ptexslash\fi\fi\fi} ! \def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} ! \def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} \let\i=\smartitalic *************** *** 1372,1375 **** --- 1506,1520 ---- \def\restorehyphenation{\hyphenchar\font = `- } + % Set sfcode to normal for the chars that usually have another value. + % Can't use plain's \frenchspacing because it uses the `\x notation, and + % sometimes \x has an active definition that messes things up. + % + \catcode`@=11 + \def\frenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + } + \catcode`@=\other + \def\t#1{% {\tt \rawbackslash \frenchspacing #1}% *************** *** 1471,1474 **** --- 1616,1622 ---- \else\ifx\arg\wordcode \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle option `\arg'}% \fi\fi\fi } *************** *** 1477,1483 **** \def\wordcode{code} ! % Default is kbdinputdistinct. (Too much of a hassle to call the macro, ! % the catcodes are wrong for parsearg to work.) ! \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl} \def\xkey{\key} --- 1625,1630 ---- \def\wordcode{code} ! % Default is `distinct.' ! \kbdinputstyle distinct \def\xkey{\key} *************** *** 1522,1526 **** % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. ! % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf --- 1669,1673 ---- % rms does not like angle brackets --karl, 17may97. % So now @email is just like @uref, unless we are pdf. ! % %\def\email#1{\angleleft{\tt #1}\angleright} \ifpdf *************** *** 1567,1570 **** --- 1714,1727 ---- \def\pounds{{\it\$}} + % @registeredsymbol - R in a circle. For now, only works in text size; + % we'd have to redo the font mechanism to change the \scriptstyle and + % \scriptscriptstyle font sizes to make it look right in headings. + % Adapted from the plain.tex definition of \copyright. + % + \def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{$\scriptstyle\rm R$}\hfil\crcr\Orb}}% + }$% + } + \message{page headings,} *************** *** 1593,1597 **** \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% % ! \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% % % Leave some space at the very top of the page. --- 1750,1755 ---- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% % ! \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines ! \let\tt=\authortt}% % % Leave some space at the very top of the page. *************** *** 1874,1881 **** \nobreak \vskip-\parskip % ! % Stop a page break at the \parskip glue coming up. Unfortunately % we can't prevent a possible page break at the following ! % \baselineskip glue. ! \nobreak \endgroup \itemxneedsnegativevskipfalse --- 2032,2047 ---- \nobreak \vskip-\parskip % ! % Stop a page break at the \parskip glue coming up. (Unfortunately % we can't prevent a possible page break at the following ! % \baselineskip glue.) However, if what follows is an environment ! % such as @example, there will be no \parskip glue; then ! % the negative vskip we just would cause the example and the item to ! % crash together. So we use this bizarre value of 10001 as a signal ! % to \aboveenvbreak to insert \parskip glue after all. ! % (Possibly there are other commands that could be followed by ! % @example which need the same treatment, but not section titles; or ! % maybe section titles are the only special case and they should be ! % penalty 10001...) ! \penalty 10001 \endgroup \itemxneedsnegativevskipfalse *************** *** 1970,1990 **** } ! \def\itemizey #1#2{% ! \aboveenvbreak % ! \itemmax=\itemindent % ! \advance \itemmax by -\itemmargin % ! \advance \leftskip by \itemindent % ! \exdentamount=\itemindent ! \parindent = 0pt % ! \parskip = \smallskipamount % ! \ifdim \parskip=0pt \parskip=2pt \fi% ! \def#2{\endgraf\afterenvbreak\endgroup}% ! \def\itemcontents{#1}% ! \let\item=\itemizeitem} ! ! % Set sfcode to normal for the chars that usually have another value. ! % These are `.?!:;,' ! \def\frenchspacing{\sfcode46=1000 \sfcode63=1000 \sfcode33=1000 ! \sfcode58=1000 \sfcode59=1000 \sfcode44=1000 } % \splitoff TOKENS\endmark defines \first to be the first token in --- 2136,2154 ---- } ! \def\itemizey#1#2{% ! \aboveenvbreak ! \itemmax=\itemindent ! \advance\itemmax by -\itemmargin ! \advance\leftskip by \itemindent ! \exdentamount=\itemindent ! \parindent=0pt ! \parskip=\smallskipamount ! \ifdim\parskip=0pt \parskip=2pt \fi ! \def#2{\endgraf\afterenvbreak\endgroup}% ! \def\itemcontents{#1}% ! % @itemize with no arg is equivalent to @itemize @bullet. ! \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi ! \let\item=\itemizeitem ! } % \splitoff TOKENS\endmark defines \first to be the first token in *************** *** 2209,2214 **** \else \global\advance\colcount by 1 ! \setbox0=\hbox{#1\unskip }% Add a normal word space as a separator; ! % typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi --- 2373,2378 ---- \else \global\advance\colcount by 1 ! \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a ! % separator; typically that is always in the input, anyway. \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% \fi *************** *** 2225,2234 **** } - % This used to have \hskip1sp. But then the space in a template line is - % not enough. That is bad. So let's go back to just & until we - % encounter the problem it was intended to solve again. - % --karl, nathan@acm.org, 20apr99. - \def\tab{&} - % @multitable ... @end multitable definitions: % --- 2389,2392 ---- *************** *** 2236,2240 **** \def\dotable#1{\bgroup \vskip\parskip ! \let\item\crcr \tolerance=9500 \hbadness=9500 --- 2394,2404 ---- \def\dotable#1{\bgroup \vskip\parskip ! \let\item=\crcrwithfootnotes ! % A \tab used to include \hskip1sp. But then the space in a template ! % line is not enough. That is bad. So let's go back to just & until ! % we encounter the problem it was intended to solve again. --karl, ! % nathan@acm.org, 20apr99. ! \let\tab=&% ! \let\startfootins=\startsavedfootnote \tolerance=9500 \hbadness=9500 *************** *** 2244,2248 **** \overfullrule=0pt \global\colcount=0 ! \def\Emultitable{\global\setpercentfalse\cr\egroup\egroup}% % % To parse everything between @multitable and @item: --- 2408,2416 ---- \overfullrule=0pt \global\colcount=0 ! \def\Emultitable{% ! \global\setpercentfalse ! \crcrwithfootnotes\crcr ! \egroup\egroup ! }% % % To parse everything between @multitable and @item: *************** *** 2333,2336 **** --- 2501,2523 ---- \fi} + % In case a @footnote appears inside an alignment, save the footnote + % text to a box and make the \insert when a row of the table is + % finished. Otherwise, the insertion is lost, it never migrates to the + % main vertical list. --kasal, 22jan03. + % + \newbox\savedfootnotes + % + % \dotable \let's \startfootins to this, so that \dofootnote will call + % it instead of starting the insertion right away. + \def\startsavedfootnote{% + \global\setbox\savedfootnotes = \vbox\bgroup + \unvbox\savedfootnotes + } + \def\crcrwithfootnotes{% + \crcr + \ifvoid\savedfootnotes \else + \noalign{\insert\footins{\box\savedfootnotes}}% + \fi + } \message{conditionals,} *************** *** 2368,2430 **** % incorrectly. % \def\ignoremorecommands{% \let\defcodeindex = \relax ! \let\defcv = \relax ! \let\deffn = \relax ! \let\deffnx = \relax \let\defindex = \relax ! \let\defivar = \relax ! \let\defmac = \relax ! \let\defmethod = \relax ! \let\defop = \relax ! \let\defopt = \relax ! \let\defspec = \relax ! \let\deftp = \relax ! \let\deftypefn = \relax ! \let\deftypefun = \relax ! \let\deftypeivar = \relax ! \let\deftypeop = \relax ! \let\deftypevar = \relax ! \let\deftypevr = \relax ! \let\defun = \relax ! \let\defvar = \relax ! \let\defvr = \relax ! \let\ref = \relax ! \let\xref = \relax ! \let\printindex = \relax ! \let\pxref = \relax ! \let\settitle = \relax ! \let\setchapternewpage = \relax ! \let\setchapterstyle = \relax ! \let\everyheading = \relax \let\evenheading = \relax - \let\oddheading = \relax \let\everyfooting = \relax ! \let\evenfooting = \relax ! \let\oddfooting = \relax \let\headings = \relax \let\include = \relax \let\lowersections = \relax ! \let\down = \relax \let\raisesections = \relax ! \let\up = \relax \let\set = \relax ! \let\clear = \relax ! \let\item = \relax } ! % Ignore @ignore, @ifhtml, @ifinfo, @ifplaintext, @ifnottex, @html, @menu, ! % @direntry, and @documentdescription. % ! \def\ignore{\doignore{ignore}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} - \def\ifplaintext{\doignore{ifplaintext}} \def\ifnottex{\doignore{ifnottex}} ! \def\html{\doignore{html}} \def\menu{\doignore{menu}} ! \def\direntry{\doignore{direntry}} ! \def\documentdescription{\doignore{documentdescription}} ! \def\documentdescriptionword{documentdescription} % @dircategory CATEGORY -- specify a category of the dir file --- 2555,2669 ---- % incorrectly. % + % We use \empty instead of \relax for the @def... commands, so that \end + % doesn't throw an error. For instance: + % @ignore + % @deffn ... + % @end deffn + % @end ignore + % + % The @end deffn is going to get expanded, because we're trying to allow + % nested conditionals. But we don't want to expand the actual @deffn, + % since it might be syntactically correct and intended to be ignored. + % Since \end checks for \relax, using \empty does not cause an error. + % \def\ignoremorecommands{% \let\defcodeindex = \relax ! \let\defcv = \empty ! \let\defcvx = \empty ! \let\Edefcv = \empty ! \let\deffn = \empty ! \let\deffnx = \empty ! \let\Edeffn = \empty \let\defindex = \relax ! \let\defivar = \empty ! \let\defivarx = \empty ! \let\Edefivar = \empty ! \let\defmac = \empty ! \let\defmacx = \empty ! \let\Edefmac = \empty ! \let\defmethod = \empty ! \let\defmethodx = \empty ! \let\Edefmethod = \empty ! \let\defop = \empty ! \let\defopx = \empty ! \let\Edefop = \empty ! \let\defopt = \empty ! \let\defoptx = \empty ! \let\Edefopt = \empty ! \let\defspec = \empty ! \let\defspecx = \empty ! \let\Edefspec = \empty ! \let\deftp = \empty ! \let\deftpx = \empty ! \let\Edeftp = \empty ! \let\deftypefn = \empty ! \let\deftypefnx = \empty ! \let\Edeftypefn = \empty ! \let\deftypefun = \empty ! \let\deftypefunx = \empty ! \let\Edeftypefun = \empty ! \let\deftypeivar = \empty ! \let\deftypeivarx = \empty ! \let\Edeftypeivar = \empty ! \let\deftypemethod = \empty ! \let\deftypemethodx = \empty ! \let\Edeftypemethod = \empty ! \let\deftypeop = \empty ! \let\deftypeopx = \empty ! \let\Edeftypeop = \empty ! \let\deftypevar = \empty ! \let\deftypevarx = \empty ! \let\Edeftypevar = \empty ! \let\deftypevr = \empty ! \let\deftypevrx = \empty ! \let\Edeftypevr = \empty ! \let\defun = \empty ! \let\defunx = \empty ! \let\Edefun = \empty ! \let\defvar = \empty ! \let\defvarx = \empty ! \let\Edefvar = \empty ! \let\defvr = \empty ! \let\defvrx = \empty ! \let\Edefvr = \empty ! \let\clear = \relax ! \let\down = \relax ! \let\evenfooting = \relax \let\evenheading = \relax \let\everyfooting = \relax ! \let\everyheading = \relax \let\headings = \relax \let\include = \relax + \let\item = \relax \let\lowersections = \relax ! \let\oddfooting = \relax ! \let\oddheading = \relax ! \let\printindex = \relax ! \let\pxref = \relax \let\raisesections = \relax ! \let\ref = \relax \let\set = \relax ! \let\setchapternewpage = \relax ! \let\setchapterstyle = \relax ! \let\settitle = \relax ! \let\up = \relax ! \let\verbatiminclude = \relax ! \let\xref = \relax } ! % Ignore @ignore, @ifhtml, @ifinfo, and the like. % ! \def\direntry{\doignore{direntry}} ! \def\documentdescriptionword{documentdescription} ! \def\documentdescription{\doignore{documentdescription}} ! \def\html{\doignore{html}} \def\ifhtml{\doignore{ifhtml}} \def\ifinfo{\doignore{ifinfo}} \def\ifnottex{\doignore{ifnottex}} ! \def\ifplaintext{\doignore{ifplaintext}} ! \def\ifxml{\doignore{ifxml}} ! \def\ignore{\doignore{ignore}} \def\menu{\doignore{menu}} ! \def\xml{\doignore{xml}} % @dircategory CATEGORY -- specify a category of the dir file *************** *** 2444,2448 **** % % Make sure that spaces turn into tokens that match what \doignoretext wants. ! \catcode32 = 10 % % Ignore braces, too, so mismatched braces don't cause trouble. --- 2683,2687 ---- % % Make sure that spaces turn into tokens that match what \doignoretext wants. ! \catcode\spaceChar = 10 % % Ignore braces, too, so mismatched braces don't cause trouble. *************** *** 2486,2490 **** \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} \immediate\write16{ Then upgrade your TeX installation if you can.} ! \immediate\write16{ (See ftp://ftp.gnu.org/pub/gnu/TeX.README.)} \immediate\write16{If you are stuck with version 3.0, run the} \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} --- 2725,2729 ---- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.} \immediate\write16{ Then upgrade your TeX installation if you can.} ! \immediate\write16{ (See ftp://ftp.gnu.org/non-gnu/TeX.README.)} \immediate\write16{If you are stuck with version 3.0, run the} \immediate\write16{ script ``tex3patch'' from the Texinfo distribution} *************** *** 2508,2513 **** % command, so that nested ignore constructs work. Thus, we put the % text into a \vbox and then do nothing with the result. To minimize ! % the change of memory overflow, we follow the approach outlined on ! % page 401 of the TeXbook: make the current font be a dummy font. % \setbox0 = \vbox\bgroup --- 2747,2752 ---- % command, so that nested ignore constructs work. Thus, we put the % text into a \vbox and then do nothing with the result. To minimize ! % the chance of memory overflow, we follow the approach outlined on ! % page 401 of the TeXbook. % \setbox0 = \vbox\bgroup *************** *** 2530,2535 **** % Set the current font to be \nullfont, a TeX primitive, and define % all the font commands to also use \nullfont. We don't use ! % dummy.tfm, as suggested in the TeXbook, because not all sites ! % might have that installed. Therefore, math mode will still % produce output, but that should be an extremely small amount of % stuff compared to the main input. --- 2769,2774 ---- % Set the current font to be \nullfont, a TeX primitive, and define % all the font commands to also use \nullfont. We don't use ! % dummy.tfm, as suggested in the TeXbook, because some sites ! % might not have that installed. Therefore, math mode will still % produce output, but that should be an extremely small amount of % stuff compared to the main input. *************** *** 2560,2564 **** \pretolerance = 10000 % ! % Do not execute instructions in @tex \def\tex{\doignore{tex}}% % Do not execute macro definitions. --- 2799,2803 ---- \pretolerance = 10000 % ! % Do not execute instructions in @tex. \def\tex{\doignore{tex}}% % Do not execute macro definitions. *************** *** 2605,2609 **** % such active characters to their normal equivalents. \gdef\value{\begingroup ! \catcode`\-=12 \catcode`\_=12 \indexbreaks \let_\normalunderscore \valuexxx} --- 2844,2848 ---- % such active characters to their normal equivalents. \gdef\value{\begingroup ! \catcode`\-=\other \catcode`\_=\other \indexbreaks \let_\normalunderscore \valuexxx} *************** *** 2614,2626 **** % properly in indexes (we \let\value to this in \indexdummies). Ones % whose names contain - or _ still won't work, but we can't do anything ! % about that. The command has to be fully expandable, since the result ! % winds up in the index file. This means that if the variable's value ! % contains other Texinfo commands, it's almost certain it will fail ! % (although perhaps we could fix that with sufficient work to do a ! % one-level expansion on the result, instead of complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% \else \csname SET#1\endcsname --- 2853,2867 ---- % properly in indexes (we \let\value to this in \indexdummies). Ones % whose names contain - or _ still won't work, but we can't do anything ! % about that. The command has to be fully expandable (if the variable ! % is set), since the result winds up in the index file. This means that ! % if the variable's value contains other Texinfo commands, it's almost ! % certain it will fail (although perhaps we could fix that with ! % sufficient work to do a one-level expansion on the result, instead of ! % complete). % \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% \else \csname SET#1\endcsname *************** *** 2631,2641 **** % with @set. % ! \def\ifset{\parsearg\ifsetxxx} ! \def\ifsetxxx #1{% \expandafter\ifx\csname SET#1\endcsname\relax ! \expandafter\ifsetfail \else ! \expandafter\ifsetsucceed \fi } \def\ifsetsucceed{\conditionalsucceed{ifset}} --- 2872,2883 ---- % with @set. % ! \def\ifset{\parsearg\doifset} ! \def\doifset#1{% \expandafter\ifx\csname SET#1\endcsname\relax ! \let\next=\ifsetfail \else ! \let\next=\ifsetsucceed \fi + \next } \def\ifsetsucceed{\conditionalsucceed{ifset}} *************** *** 2646,2656 **** % defined with @set, or has been undefined with @clear. % ! \def\ifclear{\parsearg\ifclearxxx} ! \def\ifclearxxx #1{% \expandafter\ifx\csname SET#1\endcsname\relax ! \expandafter\ifclearsucceed \else ! \expandafter\ifclearfail \fi } \def\ifclearsucceed{\conditionalsucceed{ifclear}} --- 2888,2899 ---- % defined with @set, or has been undefined with @clear. % ! \def\ifclear{\parsearg\doifclear} ! \def\doifclear#1{% \expandafter\ifx\csname SET#1\endcsname\relax ! \let\next=\ifclearsucceed \else ! \let\next=\ifclearfail \fi + \next } \def\ifclearsucceed{\conditionalsucceed{ifclear}} *************** *** 2671,2696 **** \defineunmatchedend{ifnotplaintext} ! % We can't just want to start a group at @iftex (etc.) and end it at ! % @end iftex, since then @set commands inside the conditional have no ! % effect (they'd get reverted at the end of the group). So we must ! % define \Eiftex to redefine itself to be its previous value. (We can't ! % just define it to fail again with an ``unmatched end'' error, since ! % the @ifset might be nested.) ! % ! \def\conditionalsucceed#1{% ! \edef\temp{% ! % Remember the current value of \E#1. ! \let\nece{prevE#1} = \nece{E#1}% ! % ! % At the `@end #1', redefine \E#1 to be its previous value. ! \def\nece{E#1}{\let\nece{E#1} = \nece{prevE#1}}% ! }% ! \temp ! } ! ! % We need to expand lots of \csname's, but we don't want to expand the ! % control sequences after we've constructed them. % ! \def\nece#1{\expandafter\noexpand\csname#1\endcsname} % @defininfoenclose. --- 2914,2924 ---- \defineunmatchedend{ifnotplaintext} ! % True conditional. Since \set globally defines its variables, we can ! % just start and end a group (to keep the @end definition undefined at ! % the outer level). % ! \def\conditionalsucceed#1{\begingroup ! \expandafter\def\csname E#1\endcsname{\endgroup}% ! } % @defininfoenclose. *************** *** 2743,2750 **** % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. ! % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. ! % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} --- 2971,2978 ---- % @synindex foo bar makes index foo feed into index bar. % Do this instead of @defindex foo if you don't want it as a separate index. ! % % @syncodeindex foo bar similar, but put all entries made for index foo % inside @code. ! % \def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} \def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} *************** *** 2785,2886 **** \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} ! % Take care of texinfo commands likely to appear in an index entry. ! % (Must be a way to avoid doing expansion at all, and thus not have to ! % laboriously list every single command here.) ! % \def\indexdummies{% ! \def\ { }% ! \def\@{@}% change to @@ when we switch to @ as escape char in aux files. ! % Need these in case \tex is in effect and \{ is a \delimiter again. ! % But can't use \lbracecmd and \rbracecmd because texindex assumes ! % braces and backslashes are used only as delimiters. ! \let\{ = \mylbrace ! \let\} = \myrbrace ! \def\_{{\realbackslash _}}% ! \normalturnoffactive ! % ! % Take care of the plain tex accent commands. ! \def\,##1{\realbackslash ,{##1}}% ! \def\"{\realbackslash "}% ! \def\`{\realbackslash `}% ! \def\'{\realbackslash '}% ! \def\^{\realbackslash ^}% ! \def\~{\realbackslash ~}% ! \def\={\realbackslash =}% ! \def\b{\realbackslash b}% ! \def\c{\realbackslash c}% ! \def\d{\realbackslash d}% ! \def\u{\realbackslash u}% ! \def\v{\realbackslash v}% ! \def\H{\realbackslash H}% ! \def\dotless##1{\realbackslash dotless {##1}}% ! % Take care of the plain tex special European modified letters. ! \def\AA{\realbackslash AA}% ! \def\AE{\realbackslash AE}% ! \def\L{\realbackslash L}% ! \def\OE{\realbackslash OE}% ! \def\O{\realbackslash O}% ! \def\aa{\realbackslash aa}% ! \def\ae{\realbackslash ae}% ! \def\l{\realbackslash l}% ! \def\oe{\realbackslash oe}% ! \def\o{\realbackslash o}% ! \def\ss{\realbackslash ss}% ! % ! % Although these internals commands shouldn't show up, sometimes they do. ! \def\bf{\realbackslash bf }% ! \def\gtr{\realbackslash gtr}% ! \def\hat{\realbackslash hat}% ! \def\less{\realbackslash less}% ! %\def\rm{\realbackslash rm }% ! \def\sf{\realbackslash sf}% ! \def\sl{\realbackslash sl }% ! \def\tclose##1{\realbackslash tclose {##1}}% ! \def\tt{\realbackslash tt}% ! % ! \def\b##1{\realbackslash b {##1}}% ! \def\i##1{\realbackslash i {##1}}% ! \def\sc##1{\realbackslash sc {##1}}% ! \def\t##1{\realbackslash t {##1}}% ! \def\r##1{\realbackslash r {##1}}% ! % ! \def\TeX{\realbackslash TeX}% ! \def\acronym##1{\realbackslash acronym {##1}}% ! \def\cite##1{\realbackslash cite {##1}}% ! \def\code##1{\realbackslash code {##1}}% ! \def\command##1{\realbackslash command {##1}}% ! \def\dfn##1{\realbackslash dfn {##1}}% ! \def\dots{\realbackslash dots }% ! \def\emph##1{\realbackslash emph {##1}}% ! \def\env##1{\realbackslash env {##1}}% ! \def\file##1{\realbackslash file {##1}}% ! \def\kbd##1{\realbackslash kbd {##1}}% ! \def\key##1{\realbackslash key {##1}}% ! \def\math##1{\realbackslash math {##1}}% ! \def\option##1{\realbackslash option {##1}}% ! \def\samp##1{\realbackslash samp {##1}}% ! \def\strong##1{\realbackslash strong {##1}}% ! \def\uref##1{\realbackslash uref {##1}}% ! \def\url##1{\realbackslash url {##1}}% ! \def\var##1{\realbackslash var {##1}}% ! \def\w{\realbackslash w }% ! % ! % These math commands don't seem likely to be used in index entries. ! \def\copyright{\realbackslash copyright}% ! \def\equiv{\realbackslash equiv}% ! \def\error{\realbackslash error}% ! \def\expansion{\realbackslash expansion}% ! \def\point{\realbackslash point}% ! \def\print{\realbackslash print}% ! \def\result{\realbackslash result}% ! % ! % Handle some cases of @value -- where the variable name does not ! % contain - or _, and the value does not contain any ! % (non-fully-expandable) commands. ! \let\value = \expandablevalue ! % ! \unsepspaces ! % Turn off macro expansion ! \turnoffmacros } --- 3013,3176 ---- \def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} ! % Take care of Texinfo commands that can appear in an index entry. ! % Since there are some commands we want to expand, and others we don't, ! % we have to laboriously prevent expansion for those that we don't. ! % \def\indexdummies{% ! \def\@{@}% change to @@ when we switch to @ as escape char in index files. ! \def\ {\realbackslash\space }% ! % Need these in case \tex is in effect and \{ is a \delimiter again. ! % But can't use \lbracecmd and \rbracecmd because texindex assumes ! % braces and backslashes are used only as delimiters. ! \let\{ = \mylbrace ! \let\} = \myrbrace ! % ! % \definedummyword defines \#1 as \realbackslash #1\space, thus ! % effectively preventing its expansion. This is used only for control ! % words, not control letters, because the \space would be incorrect ! % for control characters, but is needed to separate the control word ! % from whatever follows. ! % ! % For control letters, we have \definedummyletter, which omits the ! % space. ! % ! % These can be used both for control words that take an argument and ! % those that do not. If it is followed by {arg} in the input, then ! % that will dutifully get written to the index (or wherever). ! % ! \def\definedummyword##1{% ! \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}% ! }% ! \def\definedummyletter##1{% ! \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% ! }% ! % ! % Do the redefinitions. ! \commondummies ! } ! ! % For the aux file, @ is the escape character. So we want to redefine ! % everything using @ instead of \realbackslash. When everything uses ! % @, this will be simpler. ! % ! \def\atdummies{% ! \def\@{@@}% ! \def\ {@ }% ! \let\{ = \lbraceatcmd ! \let\} = \rbraceatcmd ! % ! % (See comments in \indexdummies.) ! \def\definedummyword##1{% ! \expandafter\def\csname ##1\endcsname{@##1\space}% ! }% ! \def\definedummyletter##1{% ! \expandafter\def\csname ##1\endcsname{@##1}% ! }% ! % ! % Do the redefinitions. ! \commondummies ! } ! ! % Called from \indexdummies and \atdummies. \definedummyword and ! % \definedummyletter must be defined first. ! % ! \def\commondummies{% ! % ! \normalturnoffactive ! % ! % Control letters and accents. ! \definedummyletter{_}% ! \definedummyletter{,}% ! \definedummyletter{"}% ! \definedummyletter{`}% ! \definedummyletter{'}% ! \definedummyletter{^}% ! \definedummyletter{~}% ! \definedummyletter{=}% ! \definedummyword{u}% ! \definedummyword{v}% ! \definedummyword{H}% ! \definedummyword{dotaccent}% ! \definedummyword{ringaccent}% ! \definedummyword{tieaccent}% ! \definedummyword{ubaraccent}% ! \definedummyword{udotaccent}% ! \definedummyword{dotless}% ! % ! % Other non-English letters. ! \definedummyword{AA}% ! \definedummyword{AE}% ! \definedummyword{L}% ! \definedummyword{OE}% ! \definedummyword{O}% ! \definedummyword{aa}% ! \definedummyword{ae}% ! \definedummyword{l}% ! \definedummyword{oe}% ! \definedummyword{o}% ! \definedummyword{ss}% ! % ! % Although these internal commands shouldn't show up, sometimes they do. ! \definedummyword{bf}% ! \definedummyword{gtr}% ! \definedummyword{hat}% ! \definedummyword{less}% ! \definedummyword{sf}% ! \definedummyword{sl}% ! \definedummyword{tclose}% ! \definedummyword{tt}% ! % ! % Texinfo font commands. ! \definedummyword{b}% ! \definedummyword{i}% ! \definedummyword{r}% ! \definedummyword{sc}% ! \definedummyword{t}% ! % ! \definedummyword{TeX}% ! \definedummyword{acronym}% ! \definedummyword{cite}% ! \definedummyword{code}% ! \definedummyword{command}% ! \definedummyword{dfn}% ! \definedummyword{dots}% ! \definedummyword{emph}% ! \definedummyword{env}% ! \definedummyword{file}% ! \definedummyword{kbd}% ! \definedummyword{key}% ! \definedummyword{math}% ! \definedummyword{option}% ! \definedummyword{samp}% ! \definedummyword{strong}% ! \definedummyword{uref}% ! \definedummyword{url}% ! \definedummyword{var}% ! \definedummyword{w}% ! % ! % Assorted special characters. ! \definedummyword{bullet}% ! \definedummyword{copyright}% ! \definedummyword{dots}% ! \definedummyword{enddots}% ! \definedummyword{equiv}% ! \definedummyword{error}% ! \definedummyword{expansion}% ! \definedummyword{minus}% ! \definedummyword{pounds}% ! \definedummyword{point}% ! \definedummyword{print}% ! \definedummyword{result}% ! % ! % Handle some cases of @value -- where the variable name does not ! % contain - or _, and the value does not contain any ! % (non-fully-expandable) commands. ! \let\value = \expandablevalue ! % ! % Normal spaces, not active ones. ! \unsepspaces ! % ! % No macro expansion. ! \turnoffmacros } *************** *** 2891,2971 **** \gdef\unsepspaces{\obeyspaces\let =\space}} ! % \indexnofonts no-ops all font-change commands. ! % This is used when outputting the strings to sort the index by. ! \def\indexdummyfont#1{#1} \def\indexdummytex{TeX} \def\indexdummydots{...} ! \def\indexnofonts{% ! \def\@{@}% ! % how to handle braces? ! \def\_{\normalunderscore}% ! % ! \let\,=\indexdummyfont ! \let\"=\indexdummyfont ! \let\`=\indexdummyfont ! \let\'=\indexdummyfont ! \let\^=\indexdummyfont ! \let\~=\indexdummyfont ! \let\==\indexdummyfont ! \let\b=\indexdummyfont ! \let\c=\indexdummyfont ! \let\d=\indexdummyfont ! \let\u=\indexdummyfont ! \let\v=\indexdummyfont ! \let\H=\indexdummyfont ! \let\dotless=\indexdummyfont ! % Take care of the plain tex special European modified letters. ! \def\AA{AA}% ! \def\AE{AE}% ! \def\L{L}% ! \def\OE{OE}% ! \def\O{O}% ! \def\aa{aa}% ! \def\ae{ae}% ! \def\l{l}% ! \def\oe{oe}% ! \def\o{o}% ! \def\ss{ss}% ! % ! % Don't no-op \tt, since it isn't a user-level command ! % and is used in the definitions of the active chars like <, >, |, etc. ! % Likewise with the other plain tex font commands. ! %\let\tt=\indexdummyfont ! % ! \let\b=\indexdummyfont ! \let\i=\indexdummyfont ! \let\r=\indexdummyfont ! \let\sc=\indexdummyfont ! \let\t=\indexdummyfont ! % ! \let\TeX=\indexdummytex ! \let\acronym=\indexdummyfont ! \let\cite=\indexdummyfont ! \let\code=\indexdummyfont ! \let\command=\indexdummyfont ! \let\dfn=\indexdummyfont ! \let\dots=\indexdummydots ! \let\emph=\indexdummyfont ! \let\env=\indexdummyfont ! \let\file=\indexdummyfont ! \let\kbd=\indexdummyfont ! \let\key=\indexdummyfont ! \let\math=\indexdummyfont ! \let\option=\indexdummyfont ! \let\samp=\indexdummyfont ! \let\strong=\indexdummyfont ! \let\uref=\indexdummyfont ! \let\url=\indexdummyfont ! \let\var=\indexdummyfont ! \let\w=\indexdummyfont ! } ! ! % To define \realbackslash, we must make \ not be an escape. ! % We must first make another character (@) an escape ! % so we do not become unable to do a definition. ! ! {\catcode`\@=0 \catcode`\\=\other ! @gdef@realbackslash{\}} \let\indexbackslash=0 %overridden during \printindex. --- 3181,3264 ---- \gdef\unsepspaces{\obeyspaces\let =\space}} ! ! % \indexnofonts is used when outputting the strings to sort the index ! % by, and when constructing control sequence names. It eliminates all ! % control sequences and just writes whatever the best ASCII sort string ! % would be for a given command (usually its argument). ! % \def\indexdummytex{TeX} \def\indexdummydots{...} ! % \def\indexnofonts{% ! \def\ { }% ! \def\@{@}% ! % how to handle braces? ! \def\_{\normalunderscore}% ! % ! \let\,=\asis ! \let\"=\asis ! \let\`=\asis ! \let\'=\asis ! \let\^=\asis ! \let\~=\asis ! \let\==\asis ! \let\u=\asis ! \let\v=\asis ! \let\H=\asis ! \let\dotaccent=\asis ! \let\ringaccent=\asis ! \let\tieaccent=\asis ! \let\ubaraccent=\asis ! \let\udotaccent=\asis ! \let\dotless=\asis ! % ! % Other non-English letters. ! \def\AA{AA}% ! \def\AE{AE}% ! \def\L{L}% ! \def\OE{OE}% ! \def\O{O}% ! \def\aa{aa}% ! \def\ae{ae}% ! \def\l{l}% ! \def\oe{oe}% ! \def\o{o}% ! \def\ss{ss}% ! \def\exclamdown{!}% ! \def\questiondown{?}% ! % ! % Don't no-op \tt, since it isn't a user-level command ! % and is used in the definitions of the active chars like <, >, |, etc. ! % Likewise with the other plain tex font commands. ! %\let\tt=\asis ! % ! % Texinfo font commands. ! \let\b=\asis ! \let\i=\asis ! \let\r=\asis ! \let\sc=\asis ! \let\t=\asis ! % ! \let\TeX=\indexdummytex ! \let\acronym=\asis ! \let\cite=\asis ! \let\code=\asis ! \let\command=\asis ! \let\dfn=\asis ! \let\dots=\indexdummydots ! \let\emph=\asis ! \let\env=\asis ! \let\file=\asis ! \let\kbd=\asis ! \let\key=\asis ! \let\math=\asis ! \let\option=\asis ! \let\samp=\asis ! \let\strong=\asis ! \let\uref=\asis ! \let\url=\asis ! \let\var=\asis ! \let\w=\asis ! } \let\indexbackslash=0 %overridden during \printindex. *************** *** 2999,3024 **** % so it will be output as is; and it will print as backslash. % ! \def\thirdarg{#3}% ! % ! % If third arg is present, precede it with space in sort key. ! \ifx\thirdarg\emptymacro ! \let\subentry = \empty ! \else ! \def\subentry{ #3}% ! \fi ! % ! % First process the index entry with all font commands turned ! % off to get the string to sort by. ! {\indexnofonts \xdef\indexsorttmp{#2\subentry}}% ! % ! % Now the real index entry with the fonts. \toks0 = {#2}% % ! % If the third (subentry) arg is present, add it to the index ! % line to write. \ifx\thirdarg\emptymacro \else ! \toks0 = \expandafter{\the\toks0{#3}}% \fi % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write --- 3292,3313 ---- % so it will be output as is; and it will print as backslash. % ! % The main index entry text. \toks0 = {#2}% % ! % If third arg is present, precede it with space in sort key. ! \def\thirdarg{#3}% \ifx\thirdarg\emptymacro \else ! % If the third (subentry) arg is present, add it to the index ! % line to write. ! \toks0 = \expandafter{\the\toks0 \space #3}% \fi % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % % Set up the complete index entry, with both the sort key and % the original text, including any font commands. We write *************** *** 3051,3060 **** \ifvmode \skip0 = \lastskip ! \ifdim\lastskip = 0pt \else \nobreak\vskip-\lastskip \fi \fi % \temp % do the write % - % \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi \fi --- 3340,3348 ---- \ifvmode \skip0 = \lastskip ! \ifdim\lastskip = 0pt \else \nobreak\vskip-\skip0 \fi \fi % \temp % do the write % \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi \fi *************** *** 3106,3109 **** --- 3394,3398 ---- \smallfonts \rm \tolerance = 9500 + \everypar = {}% don't want the \kern\-parindent from indentation suppression. \indexbreaks % *************** *** 3349,3353 **** \hbox to\pagewidth{\box0\hfil\box2}% } ! % % All done with double columns. \def\enddoublecolumns{% --- 3638,3642 ---- \hbox to\pagewidth{\box0\hfil\box2}% } ! % % All done with double columns. \def\enddoublecolumns{% *************** *** 3487,3490 **** --- 3776,3780 ---- \fi \fi + \suppressfirstparagraphindent } *************** *** 3506,3509 **** --- 3796,3800 ---- \fi \fi + \suppressfirstparagraphindent } *************** *** 3525,3528 **** --- 3816,3820 ---- \fi \fi + \suppressfirstparagraphindent } *************** *** 3532,3571 **** \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz #1{% ! \secno=0 \subsecno=0 \subsubsecno=0 ! \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% ! \chapmacro {#1}{\the\chapno}% ! \gdef\thissection{#1}% ! \gdef\thischaptername{#1}% ! % We don't substitute the actual chapter name into \thischapter ! % because we don't want its macros evaluated now. ! \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash chapentry{\the\toks0}% ! {\the\chapno}}}% ! \temp ! \donoderef ! \global\let\section = \numberedsec ! \global\let\subsection = \numberedsubsec ! \global\let\subsubsection = \numberedsubsubsec ! } \outer\def\appendix{\parsearg\appendixyyy} \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz \def\appendixzzz #1{% ! \secno=0 \subsecno=0 \subsubsecno=0 ! \global\advance \appendixno by 1 ! \message{\putwordAppendix\space \appendixletter}% ! \chapmacro {#1}{\putwordAppendix{} \appendixletter}% ! \gdef\thissection{#1}% ! \gdef\thischaptername{#1}% ! \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash appendixentry{\the\toks0}% ! {\appendixletter}}}% ! \temp ! \appendixnoderef ! \global\let\section = \appendixsec ! \global\let\subsection = \appendixsubsec ! \global\let\subsubsection = \appendixsubsubsec } --- 3824,3862 ---- \def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz \def\chapterzzz #1{% ! \secno=0 \subsecno=0 \subsubsecno=0 ! \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}% ! \chapmacro {#1}{\the\chapno}% ! \gdef\thissection{#1}% ! \gdef\thischaptername{#1}% ! % We don't substitute the actual chapter name into \thischapter ! % because we don't want its macros evaluated now. ! \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}% ! \writetocentry{chap}{#1}{{\the\chapno}} ! \donoderef ! \global\let\section = \numberedsec ! \global\let\subsection = \numberedsubsec ! \global\let\subsubsection = \numberedsubsubsec ! } ! ! % we use \chapno to avoid indenting back ! \def\appendixbox#1{% ! \setbox0 = \hbox{\putwordAppendix{} \the\chapno}% ! \hbox to \wd0{#1\hss}} \outer\def\appendix{\parsearg\appendixyyy} \def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz \def\appendixzzz #1{% ! \secno=0 \subsecno=0 \subsubsecno=0 ! \global\advance \appendixno by 1 ! \message{\putwordAppendix\space \appendixletter}% ! \chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}% ! \gdef\thissection{#1}% ! \gdef\thischaptername{#1}% ! \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}% ! \writetocentry{appendix}{#1}{{\appendixletter}} ! \appendixnoderef ! \global\let\section = \appendixsec ! \global\let\subsection = \appendixsubsec ! \global\let\subsubsection = \appendixsubsubsec } *************** *** 3580,3607 **** \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz \def\unnumberedzzz #1{% ! \secno=0 \subsecno=0 \subsubsecno=0 ! % ! % This used to be simply \message{#1}, but TeX fully expands the ! % argument to \message. Therefore, if #1 contained @-commands, TeX ! % expanded them. For example, in `@unnumbered The @cite{Book}', TeX ! % expanded @cite (which turns out to cause errors because \cite is meant ! % to be executed, not expanded). ! % ! % Anyway, we don't want the fully-expanded definition of @cite to appear ! % as a result of the \message, we just want `@cite' itself. We use ! % \the to achieve this: TeX expands \the only once, ! % simply yielding the contents of . (We also do this for ! % the toc entries.) ! \toks0 = {#1}\message{(\the\toks0)}% ! % ! \unnumbchapmacro {#1}% ! \gdef\thischapter{#1}\gdef\thissection{#1}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash unnumbchapentry{\the\toks0}}}% ! \temp ! \unnumbnoderef ! \global\let\section = \unnumberedsec ! \global\let\subsection = \unnumberedsubsec ! \global\let\subsubsection = \unnumberedsubsubsec } --- 3871,3896 ---- \def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz \def\unnumberedzzz #1{% ! \secno=0 \subsecno=0 \subsubsecno=0 ! % ! % This used to be simply \message{#1}, but TeX fully expands the ! % argument to \message. Therefore, if #1 contained @-commands, TeX ! % expanded them. For example, in `@unnumbered The @cite{Book}', TeX ! % expanded @cite (which turns out to cause errors because \cite is meant ! % to be executed, not expanded). ! % ! % Anyway, we don't want the fully-expanded definition of @cite to appear ! % as a result of the \message, we just want `@cite' itself. We use ! % \the to achieve this: TeX expands \the only once, ! % simply yielding the contents of . (We also do this for ! % the toc entries.) ! \toks0 = {#1}\message{(\the\toks0)}% ! % ! \unnumbchapmacro {#1}% ! \gdef\thischapter{#1}\gdef\thissection{#1}% ! \writetocentry{unnumbchap}{#1}{{\the\chapno}} ! \unnumbnoderef ! \global\let\section = \unnumberedsec ! \global\let\subsection = \unnumberedsubsec ! \global\let\subsubsection = \unnumberedsubsubsec } *************** *** 3610,3621 **** \def\secyyy #1{\numhead1{#1}} % normally calls seczzz \def\seczzz #1{% ! \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % ! \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% ! {\the\chapno}{\the\secno}}}% ! \temp ! \donoderef ! \nobreak } --- 3899,3907 ---- \def\secyyy #1{\numhead1{#1}} % normally calls seczzz \def\seczzz #1{% ! \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % ! \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}% ! \writetocentry{sec}{#1}{{\the\chapno}{\the\secno}} ! \donoderef ! \nobreak } *************** *** 3624,3635 **** \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz \def\appendixsectionzzz #1{% ! \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % ! \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash secentry{\the\toks0}% ! {\appendixletter}{\the\secno}}}% ! \temp ! \appendixnoderef ! \nobreak } --- 3910,3918 ---- \def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz \def\appendixsectionzzz #1{% ! \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 % ! \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}% ! \writetocentry{sec}{#1}{{\appendixletter}{\the\secno}} ! \appendixnoderef ! \nobreak } *************** *** 3637,3647 **** \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz \def\unnumberedseczzz #1{% ! \plainsecheading {#1}\gdef\thissection{#1}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsecentry% ! {\the\toks0}{\the\chapno}}}% ! \temp ! \unnumbnoderef ! \nobreak } --- 3920,3927 ---- \def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz \def\unnumberedseczzz #1{% ! \plainsecheading {#1}\gdef\thissection{#1}% ! \writetocentry{unnumbsec}{#1}{{\the\chapno}{\the\secno}} ! \unnumbnoderef ! \nobreak } *************** *** 3650,3661 **** \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz \def\numberedsubseczzz #1{% ! \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % ! \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% ! {\the\chapno}{\the\secno}{\the\subsecno}}}% ! \temp ! \donoderef ! \nobreak } --- 3930,3938 ---- \def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz \def\numberedsubseczzz #1{% ! \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % ! \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}% ! \writetocentry{subsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}} ! \donoderef ! \nobreak } *************** *** 3663,3674 **** \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz \def\appendixsubseczzz #1{% ! \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % ! \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash subsecentry{\the\toks0}% ! {\appendixletter}{\the\secno}{\the\subsecno}}}% ! \temp ! \appendixnoderef ! \nobreak } --- 3940,3948 ---- \def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz \def\appendixsubseczzz #1{% ! \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 % ! \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}% ! \writetocentry{subsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}} ! \appendixnoderef ! \nobreak } *************** *** 3676,3686 **** \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz \def\unnumberedsubseczzz #1{% ! \plainsubsecheading {#1}\gdef\thissection{#1}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsecentry% ! {\the\toks0}{\the\chapno}{\the\secno}}}% ! \temp ! \unnumbnoderef ! \nobreak } --- 3950,3957 ---- \def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz \def\unnumberedsubseczzz #1{% ! \plainsubsecheading {#1}\gdef\thissection{#1}% ! \writetocentry{unnumbsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}} ! \unnumbnoderef ! \nobreak } *************** *** 3689,3701 **** \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz \def\numberedsubsubseczzz #1{% ! \gdef\thissection{#1}\global\advance \subsubsecno by 1 % ! \subsubsecheading {#1} ! {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% ! {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% ! \temp ! \donoderef ! \nobreak } --- 3960,3969 ---- \def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz \def\numberedsubsubseczzz #1{% ! \gdef\thissection{#1}\global\advance \subsubsecno by 1 % ! \subsubsecheading {#1} ! {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}% ! \writetocentry{subsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}} ! \donoderef ! \nobreak } *************** *** 3703,3715 **** \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz \def\appendixsubsubseczzz #1{% ! \gdef\thissection{#1}\global\advance \subsubsecno by 1 % ! \subsubsecheading {#1} ! {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash subsubsecentry{\the\toks0}% ! {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}}% ! \temp ! \appendixnoderef ! \nobreak } --- 3971,3980 ---- \def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz \def\appendixsubsubseczzz #1{% ! \gdef\thissection{#1}\global\advance \subsubsecno by 1 % ! \subsubsecheading {#1} ! {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}% ! \writetocentry{subsubsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}} ! \appendixnoderef ! \nobreak } *************** *** 3717,3727 **** \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz \def\unnumberedsubsubseczzz #1{% ! \plainsubsubsecheading {#1}\gdef\thissection{#1}% ! \toks0 = {#1}% ! \edef\temp{\noexpand\writetocentry{\realbackslash unnumbsubsubsecentry% ! {\the\toks0}{\the\chapno}{\the\secno}{\the\subsecno}}}% ! \temp ! \unnumbnoderef ! \nobreak } --- 3982,3989 ---- \def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz \def\unnumberedsubsubseczzz #1{% ! \plainsubsubsecheading {#1}\gdef\thissection{#1}% ! \writetocentry{unnumbsubsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}} ! \unnumbnoderef ! \nobreak } *************** *** 3764,3777 **** \def\majorheading{\parsearg\majorheadingzzz} \def\majorheadingzzz #1{% ! {\advance\chapheadingskip by 10pt \chapbreak }% ! {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 ! \parindent=0pt\raggedright ! \rm #1\hfill}}\bigskip \par\penalty 200} \def\chapheading{\parsearg\chapheadingzzz} \def\chapheadingzzz #1{\chapbreak % ! {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 ! \parindent=0pt\raggedright ! \rm #1\hfill}}\bigskip \par\penalty 200} % @heading, @subheading, @subsubheading. --- 4026,4039 ---- \def\majorheading{\parsearg\majorheadingzzz} \def\majorheadingzzz #1{% ! {\advance\chapheadingskip by 10pt \chapbreak }% ! {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 ! \parindent=0pt\raggedright ! \rm #1\hfill}}\bigskip \par\penalty 200} \def\chapheading{\parsearg\chapheadingzzz} \def\chapheadingzzz #1{\chapbreak % ! {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 ! \parindent=0pt\raggedright ! \rm #1\hfill}}\bigskip \par\penalty 200} % @heading, @subheading, @subsubheading. *************** *** 3919,3923 **** \unhbox0 #3}% }% ! \ifdim\parskip<10pt \nobreak\kern10pt\nobreak\kern-\parskip\fi \nobreak } --- 4181,4194 ---- \unhbox0 #3}% }% ! % Add extra space after the heading -- either a line space or a ! % paragraph space, whichever is more. (Some people like to set ! % \parskip to large values for some reason.) Don't allow stretch, though. ! \nobreak ! \ifdim\parskip>\normalbaselineskip ! \kern\parskip ! \else ! \kern\normalbaselineskip ! \fi ! \nobreak } *************** *** 3931,3944 **** % argument, which will end up as the last argument to the \...entry macro. % ! % We open the .toc file here instead of at @setfilename or any other ! % fixed time so that @contents can be put in the document anywhere. % \newif\iftocfileopened ! \def\writetocentry#1{% \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi ! \iflinks \write\tocfile{#1{\folio}}\fi % % Tell \shipout to create a page destination if we're doing pdf, which --- 4202,4221 ---- % argument, which will end up as the last argument to the \...entry macro. % ! % Usage: \writetocentry{chap}{The Name of The Game}{{\the\chapno}} ! % We open the .toc file for writing here instead of at @setfilename (or ! % any other fixed time) so that @contents can be anywhere in the document. % \newif\iftocfileopened ! \def\writetocentry#1#2#3{% \iftocfileopened\else \immediate\openout\tocfile = \jobname.toc \global\tocfileopenedtrue \fi ! % ! \iflinks ! \toks0 = {#2}% ! \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}#3{\folio}}}% ! \temp ! \fi % % Tell \shipout to create a page destination if we're doing pdf, which *************** *** 3979,3983 **** % % Roman numerals for page numbers. ! \ifnum \pageno>0 \pageno = \lastnegativepageno \fi } --- 4256,4260 ---- % % Roman numerals for page numbers. ! \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi } *************** *** 3996,4000 **** \endgroup \lastnegativepageno = \pageno ! \pageno = \savepageno } --- 4273,4277 ---- \endgroup \lastnegativepageno = \pageno ! \global\pageno = \savepageno } *************** *** 4008,4021 **** % We want a true roman here for the page numbers. \secfonts ! \let\rm=\shortcontrm \let\bf=\shortcontbf \let\sl=\shortcontsl \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\secentry ##1##2##3##4{} - \def\unnumbsecentry ##1##2##3{} \def\subsecentry ##1##2##3##4##5{} - \def\unnumbsubsecentry ##1##2##3##4{} \def\subsubsecentry ##1##2##3##4##5##6{} ! \def\unnumbsubsubsecentry ##1##2##3##4##5{} \openin 1 \jobname.toc \ifeof 1 \else --- 4285,4299 ---- % We want a true roman here for the page numbers. \secfonts ! \let\rm=\shortcontrm \let\bf=\shortcontbf ! \let\sl=\shortcontsl \let\tt=\shortconttt \rm \hyphenpenalty = 10000 \advance\baselineskip by 1pt % Open it up a little. \def\secentry ##1##2##3##4{} \def\subsecentry ##1##2##3##4##5{} \def\subsubsecentry ##1##2##3##4##5##6{} ! \let\unnumbsecentry = \secentry ! \let\unnumbsubsecentry = \subsecentry ! \let\unnumbsubsubsecentry = \subsubsecentry \openin 1 \jobname.toc \ifeof 1 \else *************** *** 4027,4031 **** \endgroup \lastnegativepageno = \pageno ! \pageno = \savepageno } \let\shortcontents = \summarycontents --- 4305,4309 ---- \endgroup \lastnegativepageno = \pageno ! \global\pageno = \savepageno } \let\shortcontents = \summarycontents *************** *** 4050,4054 **** % Appendices, in the main contents. ! \def\appendixentry#1#2#3{\dochapentry{\putwordAppendix{} #2\labelspace#1}{#3}} % % Appendices, in the short toc. --- 4328,4333 ---- % Appendices, in the main contents. ! \def\appendixentry#1#2#3{% ! \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}} % % Appendices, in the short toc. *************** *** 4074,4092 **** % Unnumbered chapters. ! \def\unnumbchapentry#1#2{\dochapentry{#1}{#2}} ! \def\shortunnumberedentry#1#2{\tocentry{#1}{\doshortpageno\bgroup#2\egroup}} % Sections. \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} ! \def\unnumbsecentry#1#2#3{\dosecentry{#1}{#3}} % Subsections. \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} ! \def\unnumbsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} % And subsubsections. \def\subsubsecentry#1#2#3#4#5#6{% \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} ! \def\unnumbsubsubsecentry#1#2#3#4#5{\dosubsubsecentry{#1}{#5}} % This parameter controls the indentation of the various levels. --- 4353,4371 ---- % Unnumbered chapters. ! \def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}} ! \def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}} % Sections. \def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}} ! \def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}} % Subsections. \def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}} ! \def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}} % And subsubsections. \def\subsubsecentry#1#2#3#4#5#6{% \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}} ! \def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}} % This parameter controls the indentation of the various levels. *************** *** 4150,4154 **** % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. ! % % Since these characters are used in examples, it should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. --- 4429,4433 ---- % @point{}, @result{}, @expansion{}, @print{}, @equiv{}. ! % % Since these characters are used in examples, it should be an even number of % \tt widths. Each \tt character is 1en, so two makes it 1em. *************** *** 4162,4166 **** % The @error{} command. % Adapted from the TeXbook's \boxit. ! % \newbox\errorbox % --- 4441,4445 ---- % The @error{} command. % Adapted from the TeXbook's \boxit. ! % \newbox\errorbox % *************** *** 4190,4201 **** \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 ! \catcode `\^=7 \catcode `\_=8 \catcode `\~=13 \let~=\tie \catcode `\%=14 ! \catcode 43=12 % plus ! \catcode`\"=12 ! \catcode`\==12 ! \catcode`\|=12 ! \catcode`\<=12 ! \catcode`\>=12 \escapechar=`\\ % --- 4469,4480 ---- \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 ! \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie \catcode `\%=14 ! \catcode `\+=\other ! \catcode `\"=\other ! \catcode `\==\other ! \catcode `\|=\other ! \catcode `\<=\other ! \catcode `\>=\other \escapechar=`\\ % *************** *** 4209,4215 **** --- 4488,4496 ---- \let\!=\ptexexclam \let\i=\ptexi + \let\indent=\ptexindent \let\{=\ptexlbrace \let\+=\tabalign \let\}=\ptexrbrace + \let\/=\ptexslash \let\*=\ptexstar \let\t=\ptext *************** *** 4251,4263 **** % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the ! % start of the next paragraph will insert \parskip % \def\aboveenvbreak{{% ! \ifnum\lastpenalty < 10000 \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip ! \penalty-50 \vskip\envskipamount \fi --- 4532,4547 ---- % to help in doing that, since in @example-like environments \parskip % is reset to zero; thus the \afterenvbreak inserts no space -- but the ! % start of the next paragraph will insert \parskip. % \def\aboveenvbreak{{% ! % =10000 instead of <10000 because of a special case in \itemzzz, q.v. ! \ifnum \lastpenalty=10000 \else \advance\envskipamount by \parskip \endgraf \ifdim\lastskip<\envskipamount \removelastskip ! % it's not a good place to break if the last penalty was \nobreak ! % or better ... ! \ifnum\lastpenalty>10000 \else \penalty-50 \fi \vskip\envskipamount \fi *************** *** 4291,4295 **** \newskip\lskip\newskip\rskip ! \long\def\cartouche{% \begingroup \lskip=\leftskip \rskip=\rightskip --- 4575,4580 ---- \newskip\lskip\newskip\rskip ! \def\cartouche{% ! \par % can't be in the midst of a paragraph. \begingroup \lskip=\leftskip \rskip=\rightskip *************** *** 4338,4342 **** \hfuzz = 12pt % Don't be fussy \sepspaces % Make spaces be word-separators rather than space tokens. - \singlespace \let\par = \lisppar % don't ignore blank lines \obeylines % each line of input is a line of output --- 4623,4626 ---- *************** *** 4377,4396 **** \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} ! % @small... is usually equivalent to the non-small (@smallbook ! % redefines). We must call \example (or whatever) last in the ! % definition, since it reads the return following the @example (or ! % whatever) command. ! % ! % This actually allows (for example) @end display inside an ! % @smalldisplay. Too bad, but makeinfo will catch the error anyway. ! % ! \def\smalldisplay{\begingroup\def\Esmalldisplay{\nonfillfinish\endgroup}\display} ! \def\smallexample{\begingroup\def\Esmallexample{\nonfillfinish\endgroup}\lisp} ! \def\smallformat{\begingroup\def\Esmallformat{\nonfillfinish\endgroup}\format} ! \def\smalllisp{\begingroup\def\Esmalllisp{\nonfillfinish\endgroup}\lisp} ! ! % Real @smallexample and @smalllisp (when @smallbook): use smaller fonts. % Originally contributed by Pavel@xerox. ! \def\smalllispx{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}% \def\Esmallexample{\nonfillfinish\endgroup}% --- 4661,4667 ---- \def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp} ! % @smallexample and @smalllisp: use smaller fonts. % Originally contributed by Pavel@xerox. ! \def\smalllisp{\begingroup \def\Esmalllisp{\nonfillfinish\endgroup}% \def\Esmallexample{\nonfillfinish\endgroup}% *************** *** 4398,4401 **** --- 4669,4674 ---- \lisp } + \let\smallexample = \smalllisp + % @display: same as @lisp except keep current font. *************** *** 4407,4413 **** } % ! % @smalldisplay (when @smallbook): @display plus smaller fonts. % ! \def\smalldisplayx{\begingroup \def\Esmalldisplay{\nonfillfinish\endgroup}% \smallexamplefonts \rm --- 4680,4686 ---- } % ! % @smalldisplay: @display plus smaller fonts. % ! \def\smalldisplay{\begingroup \def\Esmalldisplay{\nonfillfinish\endgroup}% \smallexamplefonts \rm *************** *** 4424,4430 **** } % ! % @smallformat (when @smallbook): @format plus smaller fonts. % ! \def\smallformatx{\begingroup \def\Esmallformat{\nonfillfinish\endgroup}% \smallexamplefonts \rm --- 4697,4703 ---- } % ! % @smallformat: @format plus smaller fonts. % ! \def\smallformat{\begingroup \def\Esmallformat{\nonfillfinish\endgroup}% \smallexamplefonts \rm *************** *** 4453,4457 **** \begingroup\inENV %This group ends at the end of the @quotation body {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip - \singlespace \parindent=0pt % We have retained a nonzero parskip for the environment, since we're --- 4726,4729 ---- *************** *** 4470,4474 **** % LaTeX-like @verbatim...@end verbatim and @verb{...} ! % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org --- 4742,4746 ---- % LaTeX-like @verbatim...@end verbatim and @verb{...} ! % If we want to allow any as delimiter, % we need the curly braces so that makeinfo sees the @verb command, eg: % `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org *************** *** 4476,4483 **** % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % ! % [Knuth] p. 344; only we need to do '@' too \def\dospecials{% ! \do\ \do\\\do\@\do\{\do\}\do\$\do\&% ! \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~} % % [Knuth] p. 380 --- 4748,4759 ---- % [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. % ! % [Knuth] p.344; only we need to do the other characters Texinfo sets ! % active too. Otherwise, they get lost as the first character on a ! % verbatim line. \def\dospecials{% ! \do\ \do\\\do\{\do\}\do\$\do\&% ! \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% ! \do\<\do\>\do\|\do\@\do+\do\"% ! } % % [Knuth] p. 380 *************** *** 4544,4549 **** } ! % Do the @verb magic: verbatim text is quoted by unique ! % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % --- 4820,4825 ---- } ! % Do the @verb magic: verbatim text is quoted by unique ! % delimiter characters. Before first delimiter expect a % right brace, after last delimiter expect closing brace: % *************** *** 4564,4570 **** % \def\doverbatim#1@end verbatim{#1} % ! % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': ! % we need not redefine '\', '{' and '}' % % Inspired by LaTeX's verbatim command set [latex.ltx] --- 4840,4846 ---- % \def\doverbatim#1@end verbatim{#1} % ! % For Texinfo it's a lot easier than for LaTeX, % because texinfo's \verbatim doesn't stop at '\end{verbatim}': ! % we need not redefine '\', '{' and '}'. % % Inspired by LaTeX's verbatim command set [latex.ltx] *************** *** 4576,4582 **** %% #1|endgroup|def|Everbatim[]|end[verbatim]] %% |endgroup \begingroup \catcode`\ =\active ! \gdef\doverbatim#1@end verbatim{#1\end{verbatim}} \endgroup % --- 4852,4863 ---- %% #1|endgroup|def|Everbatim[]|end[verbatim]] %% |endgroup + % \begingroup \catcode`\ =\active ! \obeylines % ! % ignore everything up to the first ^^M, that's the newline at the end ! % of the @verbatim input line itself. Otherwise we get an extra blank ! % line in the output. ! \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}% \endgroup % *************** *** 4594,4605 **** \def\verbatiminclude{% \begingroup ! \catcode`\\=12 ! \catcode`~=12 ! \catcode`^=12 ! \catcode`_=12 ! \catcode`|=12 ! \catcode`<=12 ! \catcode`>=12 ! \catcode`+=12 \parsearg\doverbatiminclude } --- 4875,4886 ---- \def\verbatiminclude{% \begingroup ! \catcode`\\=\other ! \catcode`~=\other ! \catcode`^=\other ! \catcode`_=\other ! \catcode`|=\other ! \catcode`<=\other ! \catcode`>=\other ! \catcode`+=\other \parsearg\doverbatiminclude } *************** *** 4615,4656 **** \endgroup \begingroup ! \def\thisfile{#1}% ! \expandafter\expandafter\setupverbatiminclude\input\thisfile ! \endgroup\nonfillfinish\endgroup } % @copying ... @end copying. ! % Save the text away for @insertcopying later. ! % ! \newbox\copyingbox % \def\copying{\begingroup \parindent = 0pt % looks wrong on title page ! \def\Ecopying{\egroup\endgroup}% ! \global\setbox\copyingbox = \vbox\bgroup } - % @insertcopying. - % - \def\insertcopying{\unvcopy\copyingbox} - - \message{defuns,} % @defun etc. % Allow user to change definition object font (\df) internally ! \def\setdeffont #1 {\csname DEF#1\endcsname} \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt - \newskip\deftypemargin \deftypemargin=12pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\parencount ! % define \functionparens, which makes ( and ) and & do special things. ! % \functionparens affects the group it is contained in. \def\activeparens{% ! \catcode`\(=\active \catcode`\)=\active \catcode`\&=\active ! \catcode`\[=\active \catcode`\]=\active} % Make control sequences which act like normal parenthesis chars. --- 4896,4995 ---- \endgroup \begingroup ! \let\value=\expandablevalue ! \def\thisfile{#1}% ! \expandafter\expandafter\setupverbatiminclude\input\thisfile ! \endgroup ! \nonfillfinish ! \endgroup } % @copying ... @end copying. ! % Save the text away for @insertcopying later. Many commands won't be ! % allowed in this context, but that's ok. ! % ! % We save the uninterpreted tokens, rather than creating a box. ! % Saving the text in a box would be much easier, but then all the ! % typesetting commands (@smallbook, font changes, etc.) have to be done ! % beforehand -- and a) we want @copying to be done first in the source ! % file; b) letting users define the frontmatter in as flexible order as ! % possible is very desirable. % \def\copying{\begingroup + % Define a command to swallow text until we reach `@end copying'. + % \ is the escape char in this texinfo.tex file, so it is the + % delimiter for the command; @ will be the escape char when we read + % it, but that doesn't matter. + \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}% + % + % We must preserve ^^M's in the input file; see \insertcopying below. + \catcode`\^^M = \active + \docopying + } + + % What we do to finish off the copying text. + % + \def\enddocopying{\endgroup\ignorespaces} + + % @insertcopying. Here we must play games with ^^M's. On the one hand, + % we need them to delimit commands such as `@end quotation', so they + % must be active. On the other hand, we certainly don't want every + % end-of-line to be a \par, as would happen with the normal active + % definition of ^^M. On the third hand, two ^^M's in a row should still + % generate a \par. + % + % Our approach is to make ^^M insert a space and a penalty1 normally; + % then it can also check if \lastpenalty=1. If it does, then manually + % do \par. + % + % This messes up the normal definitions of @c[omment], so we redefine + % it. Similarly for @ignore. (These commands are used in the gcc + % manual for man page generation.) + % + % Seems pretty fragile, most line-oriented commands will presumably + % fail, but for the limited use of getting the copying text (which + % should be quite simple) inserted, we can hope it's ok. + % + {\catcode`\^^M=\active % + \gdef\insertcopying{\begingroup % \parindent = 0pt % looks wrong on title page ! \def^^M{% ! \ifnum \lastpenalty=1 % ! \par % ! \else % ! \space \penalty 1 % ! \fi % ! }% ! % ! % Fix @c[omment] for catcode 13 ^^M's. ! \def\c##1^^M{\ignorespaces}% ! \let\comment = \c % ! % ! % Don't bother jumping through all the hoops that \doignore does, it ! % would be very hard since the catcodes are already set. ! \long\def\ignore##1\end ignore{\ignorespaces}% ! % ! \copyingtext % ! \endgroup}% } \message{defuns,} % @defun etc. % Allow user to change definition object font (\df) internally ! \def\setdeffont#1 {\csname DEF#1\endcsname} \newskip\defbodyindent \defbodyindent=.4in \newskip\defargsindent \defargsindent=50pt \newskip\deflastargmargin \deflastargmargin=18pt \newcount\parencount ! ! % We want ()&[] to print specially on the defun line. ! % \def\activeparens{% ! \catcode`\(=\active \catcode`\)=\active ! \catcode`\&=\active ! \catcode`\[=\active \catcode`\]=\active ! } % Make control sequences which act like normal parenthesis chars. *************** *** 4699,4732 **** % Active &'s sneak into the index arguments, so make sure it's defined. { ! \catcode`& = 13 \global\let& = \ampnr } ! % First, defname, which formats the header line itself. ! % #1 should be the function name. ! % #2 should be the type of definition, such as "Function". ! ! \def\defname #1#2{% ! % Get the values of \leftskip and \rightskip as they were ! % outside the @def... ! \dimen2=\leftskip ! \advance\dimen2 by -\defbodyindent ! \noindent ! \setbox0=\hbox{\hskip \deflastargmargin{\rm #2}\hskip \deftypemargin}% ! \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line ! \dimen1=\hsize \advance \dimen1 by -\defargsindent %size for continuations ! \parshape 2 0in \dimen0 \defargsindent \dimen1 ! % Now output arg 2 ("Function" or some such) ! % ending at \deftypemargin from the right margin, ! % but stuck inside a box of width 0 so it does not interfere with linebreaking ! {% Adjust \hsize to exclude the ambient margins, ! % so that \rightline will obey them. ! \advance \hsize by -\dimen2 ! \rlap{\rightline{{\rm #2}\hskip -1.25pc }}}% ! % Make all lines underfull and no complaints: ! \tolerance=10000 \hbadness=10000 ! \advance\leftskip by -\defbodyindent ! \exdentamount=\defbodyindent ! {\df #1}\enskip % Generate function name } --- 5038,5086 ---- % Active &'s sneak into the index arguments, so make sure it's defined. { ! \catcode`& = \active \global\let& = \ampnr } ! % \defname, which formats the name of the @def (not the args). ! % #1 is the function name. ! % #2 is the type of definition, such as "Function". ! % ! \def\defname#1#2{% ! % How we'll output the type name. Putting it in brackets helps ! % distinguish it from the body text that may end up on the next line ! % just below it. ! \ifempty{#2}% ! \def\defnametype{}% ! \else ! \def\defnametype{[\rm #2]}% ! \fi ! % ! % Get the values of \leftskip and \rightskip as they were outside the @def... ! \dimen2=\leftskip ! \advance\dimen2 by -\defbodyindent ! % ! % Figure out values for the paragraph shape. ! \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}% ! \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line ! \dimen1=\hsize \advance \dimen1 by -\defargsindent % size for continuations ! \parshape 2 0in \dimen0 \defargsindent \dimen1 ! % ! % Output arg 2 ("Function" or some such) but stuck inside a box of ! % width 0 so it does not interfere with linebreaking. ! \noindent ! % ! {% Adjust \hsize to exclude the ambient margins, ! % so that \rightline will obey them. ! \advance \hsize by -\dimen2 ! \dimen3 = 0pt % was -1.25pc ! \rlap{\rightline{\defnametype\kern\dimen3}}% ! }% ! % ! % Allow all lines to be underfull without complaint: ! \tolerance=10000 \hbadness=10000 ! \advance\leftskip by -\defbodyindent ! \exdentamount=\defbodyindent ! {\df #1}\enskip % output function name ! % \defunargs will be called next to output the arguments, if any. } *************** *** 4735,4739 **** % #2 is the \...x control sequence (which our caller defines). % #3 is the control sequence to process the header, such as \defunheader. ! % \def\parsebodycommon#1#2#3{% \begingroup\inENV --- 5089,5093 ---- % #2 is the \...x control sequence (which our caller defines). % #3 is the control sequence to process the header, such as \defunheader. ! % \def\parsebodycommon#1#2#3{% \begingroup\inENV *************** *** 4741,4746 **** % which is there to keep the function description together with its % header. But if there's nothing but headers, we want to allow a ! % break after all. ! \ifnum\lastpenalty = 10000 \penalty0 \fi \medbreak % --- 5095,5103 ---- % which is there to keep the function description together with its % header. But if there's nothing but headers, we want to allow a ! % break after all. Check for penalty 10002 (inserted by ! % \defargscommonending) instead of 10000, since the sectioning ! % commands insert a \penalty10000, and we don't want to allow a break ! % between a section heading and a defun. ! \ifnum\lastpenalty=10002 \penalty0 \fi \medbreak % *************** *** 4754,4775 **** } % Process body of @defun, @deffn, @defmac, etc. % \def\defparsebody#1#2#3{% \parsebodycommon{#1}{#2}{#3}% ! \def#2{\begingroup\obeylines\activeparens\spacesplit#3}% ! \catcode61=\active % 61 is `=' \begingroup\obeylines\activeparens \spacesplit#3% } ! % #1, #2, #3 are the common arguments (see \defparsebody). % #4, delimited by the space, is the class name. % \def\defmethparsebody#1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}}}% \begingroup\obeylines\activeparens ! \spacesplit{#3{#4}}% } --- 5111,5146 ---- } + % Common part of the \...x definitions. + % + \def\defxbodycommon{% + % As with \parsebodycommon above, allow line break if we have multiple + % x headers in a row. It's not a great place, though. + \ifnum\lastpenalty=10000 \penalty1000 \fi + % + \begingroup\obeylines + } + % Process body of @defun, @deffn, @defmac, etc. % \def\defparsebody#1#2#3{% \parsebodycommon{#1}{#2}{#3}% ! \def#2{\defxbodycommon \activeparens \spacesplit#3}% ! \catcode\equalChar=\active \begingroup\obeylines\activeparens \spacesplit#3% } ! % #1, #2, #3 are the common arguments (see \parsebodycommon above). % #4, delimited by the space, is the class name. % \def\defmethparsebody#1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}% \begingroup\obeylines\activeparens ! % The \empty here prevents misinterpretation of a construct such as ! % @deffn {whatever} {Enharmonic comma} ! % See comments at \deftpparsebody, although in our case we don't have ! % to remove the \empty afterwards, since it is empty. ! \spacesplit{#3{#4}}\empty } *************** *** 4781,4785 **** \def\deftypemethparsebody#1#2#3#4 #5 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 ##2 {\begingroup\obeylines\activeparens\spacesplit{#3{##1}{##2}}}% \begingroup\obeylines\activeparens \spacesplit{#3{#4}{#5}}% --- 5152,5156 ---- \def\deftypemethparsebody#1#2#3#4 #5 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}% \begingroup\obeylines\activeparens \spacesplit{#3{#4}{#5}}% *************** *** 4792,4801 **** % input at hand. Thus also need a control sequence (passed as #5) for % the \E... definition to assign the category name to. ! % \def\deftypeopparsebody#1#2#3#4#5 #6 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 ##2 ##3 {% ! \def#4{##1}% ! \begingroup\obeylines\activeparens\spacesplit{#3{##2}{##3}}}% \begingroup\obeylines\activeparens \spacesplit{#3{#5}{#6}}% --- 5163,5171 ---- % input at hand. Thus also need a control sequence (passed as #5) for % the \E... definition to assign the category name to. ! % \def\deftypeopparsebody#1#2#3#4#5 #6 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 ##2 ##3 {\def#4{##1}% ! \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}% \begingroup\obeylines\activeparens \spacesplit{#3{#5}{#6}}% *************** *** 4806,4810 **** \parsebodycommon{#1}{#2}{#3}% \def#2##1 ##2 {\def#4{##1}% ! \begingroup\obeylines\activeparens\spacesplit{#3{##2}}}% \begingroup\obeylines\activeparens \spacesplit{#3{#5}}% --- 5176,5180 ---- \parsebodycommon{#1}{#2}{#3}% \def#2##1 ##2 {\def#4{##1}% ! \defxbodycommon \activeparens \spacesplit{#3{##2}}}% \begingroup\obeylines\activeparens \spacesplit{#3{#5}}% *************** *** 4817,4822 **** \def\defvarparsebody #1#2#3{% \parsebodycommon{#1}{#2}{#3}% ! \def#2{\begingroup\obeylines\spacesplit#3}% ! \catcode61=\active % \begingroup\obeylines \spacesplit#3% --- 5187,5192 ---- \def\defvarparsebody #1#2#3{% \parsebodycommon{#1}{#2}{#3}% ! \def#2{\defxbodycommon \spacesplit#3}% ! \catcode\equalChar=\active \begingroup\obeylines \spacesplit#3% *************** *** 4827,4831 **** \parsebodycommon{#1}{#2}{#3}% \def#2##1 ##2 {\def#4{##1}% ! \begingroup\obeylines\spacesplit{#3{##2}}}% \begingroup\obeylines \spacesplit{#3{#5}}% --- 5197,5201 ---- \parsebodycommon{#1}{#2}{#3}% \def#2##1 ##2 {\def#4{##1}% ! \defxbodycommon \spacesplit{#3{##2}}}% \begingroup\obeylines \spacesplit{#3{#5}}% *************** *** 4834,4838 **** \def\defvrparsebody#1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% \begingroup\obeylines \spacesplit{#3{#4}}% --- 5204,5208 ---- \def\defvrparsebody#1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}% \begingroup\obeylines \spacesplit{#3{#4}}% *************** *** 4850,4854 **** \def\deftpparsebody #1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 {\begingroup\obeylines\spacesplit{#3{##1}}}% \begingroup\obeylines \spacesplit{\parsetpheaderline{#3{#4}}}\empty --- 5220,5224 ---- \def\deftpparsebody #1#2#3#4 {% \parsebodycommon{#1}{#2}{#3}% ! \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}% \begingroup\obeylines \spacesplit{\parsetpheaderline{#3{#4}}}\empty *************** *** 4868,4872 **** }% ! % Split up #2 at the first space token. % call #1 with two arguments: % the first is all of #2 before the space token, --- 5238,5242 ---- }% ! % Split up #2 (the rest of the input line) at the first space token. % call #1 with two arguments: % the first is all of #2 before the space token, *************** *** 4875,4889 **** % and the second is passed as empty. % ! {\obeylines ! \gdef\spacesplit#1#2^^M{\endgroup\spacesplitfoo{#1}#2 \relax\spacesplitfoo}% ! \long\gdef\spacesplitfoo#1#2 #3#4\spacesplitfoo{% ! \ifx\relax #3% ! #1{#2}{}\else #1{#2}{#3#4}\fi}} % Define @defun. ! % First, define the processing that is wanted for arguments of \defun ! % Use this to expand the args and terminate the paragraph they make up \def\defunargs#1{\functionparens \sl % Expand, preventing hyphenation at `-' chars. --- 5245,5272 ---- % and the second is passed as empty. % ! {\obeylines % ! \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}% ! \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{% ! \ifx\relax #3% ! #1{#2}{}% ! \else % ! #1{#2}{#3#4}% ! \fi}% ! } % Define @defun. ! % This is called to end the arguments processing for all the @def... commands. ! % ! \def\defargscommonending{% ! \interlinepenalty = 10000 ! \advance\rightskip by 0pt plus 1fil ! \endgraf ! \nobreak\vskip -\parskip ! \penalty 10002 % signal to \parsebodycommon. ! } + % This expands the args and terminates the paragraph they comprise. + % \def\defunargs#1{\functionparens \sl % Expand, preventing hyphenation at `-' chars. *************** *** 4894,4900 **** {\tensl\hyphenchar\font=45}% \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% ! \interlinepenalty=10000 ! \advance\rightskip by 0pt plus 1fil ! \endgraf\nobreak\vskip -\parskip\nobreak } --- 5277,5281 ---- {\tensl\hyphenchar\font=45}% \ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi% ! \defargscommonending } *************** *** 4905,4911 **** \boldbraxnoamp \tclose{#1}% avoid \code because of side effects on active chars ! \interlinepenalty=10000 ! \advance\rightskip by 0pt plus 1fil ! \endgraf\nobreak\vskip -\parskip\nobreak } --- 5286,5290 ---- \boldbraxnoamp \tclose{#1}% avoid \code because of side effects on active chars ! \defargscommonending } *************** *** 4918,4922 **** \def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% \begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % ! \catcode 61=\other % Turn off change made in \defparsebody } --- 5297,5301 ---- \def\deffnheader #1#2#3{\doind {fn}{\code{#2}}% \begingroup\defname {#2}{#1}\defunargs{#3}\endgroup % ! \catcode\equalChar=\other % Turn off change made in \defparsebody } *************** *** 4928,4932 **** \begingroup\defname {#1}{\putwordDeffunc}% \defunargs {#2}\endgroup % ! \catcode 61=\other % Turn off change made in \defparsebody } --- 5307,5311 ---- \begingroup\defname {#1}{\putwordDeffunc}% \defunargs {#2}\endgroup % ! \catcode\equalChar=\other % Turn off change made in \defparsebody } *************** *** 4942,4946 **** \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% \deftypefunargs {#3}\endgroup % ! \catcode 61=\other % Turn off change made in \defparsebody } --- 5321,5325 ---- \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}% \deftypefunargs {#3}\endgroup % ! \catcode\equalChar=\other % Turn off change made in \defparsebody } *************** *** 4963,4967 **** \defname {\defheaderxcond#2\relax$.$#3}{#1}% \deftypefunargs {#4}\endgroup % ! \catcode 61=\other % Turn off change made in \defparsebody } --- 5342,5346 ---- \defname {\defheaderxcond#2\relax$.$#3}{#1}% \deftypefunargs {#4}\endgroup % ! \catcode\equalChar=\other % Turn off change made in \defparsebody } *************** *** 4973,4977 **** \begingroup\defname {#1}{\putwordDefmac}% \defunargs {#2}\endgroup % ! \catcode 61=\other % Turn off change made in \defparsebody } --- 5352,5356 ---- \begingroup\defname {#1}{\putwordDefmac}% \defunargs {#2}\endgroup % ! \catcode\equalChar=\other % Turn off change made in \defparsebody } *************** *** 4983,4987 **** \begingroup\defname {#1}{\putwordDefspec}% \defunargs {#2}\endgroup % ! \catcode 61=\other % Turn off change made in \defparsebody } --- 5362,5366 ---- \begingroup\defname {#1}{\putwordDefspec}% \defunargs {#2}\endgroup % ! \catcode\equalChar=\other % Turn off change made in \defparsebody } *************** *** 4992,4998 **** % \def\defopheader#1#2#3{% ! \dosubind {fn}{\code{#2}}{\putwordon\ #1}% Make entry in function index ! \begingroup\defname {#2}{\defoptype\ \putwordon\ #1}% ! \defunargs {#3}\endgroup % } --- 5371,5379 ---- % \def\defopheader#1#2#3{% ! \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% function index entry ! \begingroup ! \defname{#2}{\defoptype\ \putwordon\ #1}% ! \defunargs{#3}% ! \endgroup } *************** *** 5061,5067 **** \def\defcvarheader #1#2#3{% ! \dosubind {vr}{\code{#2}}{\putwordof\ #1}% Make entry in var index ! \begingroup\defname {#2}{\defcvtype\ \putwordof\ #1}% ! \defvarargs {#3}\endgroup % } --- 5442,5450 ---- \def\defcvarheader #1#2#3{% ! \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% variable index entry ! \begingroup ! \defname{#2}{\defcvtype\ \putwordof\ #1}% ! \defvarargs{#3}% ! \endgroup } *************** *** 5071,5075 **** % \def\defivarheader#1#2#3{% ! \dosubind {vr}{\code{#2}}{\putwordof\ #1}% entry in var index \begingroup \defname{#2}{\putwordInstanceVariableof\ #1}% --- 5454,5458 ---- % \def\defivarheader#1#2#3{% ! \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% entry in var index \begingroup \defname{#2}{\putwordInstanceVariableof\ #1}% *************** *** 5083,5088 **** % This must expand the args and terminate the paragraph they make up \def\defvarargs #1{\normalparens #1% ! \interlinepenalty=10000 ! \endgraf\nobreak\vskip -\parskip\nobreak} % @defvr Counter foo-count --- 5466,5471 ---- % This must expand the args and terminate the paragraph they make up \def\defvarargs #1{\normalparens #1% ! \defargscommonending ! } % @defvr Counter foo-count *************** *** 5120,5125 **** \dovarind#2 \relax% Make entry in variables index \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% ! \interlinepenalty=10000 ! \endgraf\nobreak\vskip -\parskip\nobreak \endgroup} \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} --- 5503,5507 ---- \dovarind#2 \relax% Make entry in variables index \begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}% ! \defargscommonending \endgroup} \def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}} *************** *** 5131,5136 **** \def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} ! \interlinepenalty=10000 ! \endgraf\nobreak\vskip -\parskip\nobreak \endgroup} --- 5513,5517 ---- \def\deftypevrheader #1#2#3{\dovarind#3 \relax% \begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1} ! \defargscommonending \endgroup} *************** *** 5149,5153 **** % These definitions are used if you use @defunx (etc.) % anywhere other than immediately after a @defun or @defunx. ! % \def\defcvx#1 {\errmessage{@defcvx in invalid context}} \def\deffnx#1 {\errmessage{@deffnx in invalid context}} --- 5530,5534 ---- % These definitions are used if you use @defunx (etc.) % anywhere other than immediately after a @defun or @defunx. ! % \def\defcvx#1 {\errmessage{@defcvx in invalid context}} \def\deffnx#1 {\errmessage{@deffnx in invalid context}} *************** *** 5181,5185 **** \begingroup \newlinechar`\^^M % Undo catcode changes of \startcontents and \doprintindex ! \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ % Append \endinput to make sure that TeX does not see the ending newline. \toks0={#1\endinput}% --- 5562,5566 ---- \begingroup \newlinechar`\^^M % Undo catcode changes of \startcontents and \doprintindex ! \catcode`\@=0 \catcode`\\=\other \escapechar=`\@ % Append \endinput to make sure that TeX does not see the ending newline. \toks0={#1\endinput}% *************** *** 5195,5199 **** \begingroup \newlinechar`\^^M % Undo catcode changes of \startcontents and \doprintindex ! \catcode`\@=0 \catcode`\\=12 \escapechar=`\@ \let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} \fi --- 5576,5580 ---- \begingroup \newlinechar`\^^M % Undo catcode changes of \startcontents and \doprintindex ! \catcode`\@=0 \catcode`\\=\other \escapechar=`\@ \let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup} \fi *************** *** 5225,5229 **** % Trim a single trailing ^^M off a string. ! {\catcode`\^^M=12\catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% --- 5606,5610 ---- % Trim a single trailing ^^M off a string. ! {\catcode`\^^M=\other \catcode`\Q=3% \gdef\eatcr #1{\eatcra #1Q^^MQ}% \gdef\eatcra#1^^MQ{\eatcrb#1Q}% *************** *** 5240,5266 **** \def\macrobodyctxt{% ! \catcode`\~=12 ! \catcode`\^=12 ! \catcode`\_=12 ! \catcode`\|=12 ! \catcode`\<=12 ! \catcode`\>=12 ! \catcode`\+=12 ! \catcode`\{=12 ! \catcode`\}=12 ! \catcode`\@=12 ! \catcode`\^^M=12 \usembodybackslash} \def\macroargctxt{% ! \catcode`\~=12 ! \catcode`\^=12 ! \catcode`\_=12 ! \catcode`\|=12 ! \catcode`\<=12 ! \catcode`\>=12 ! \catcode`\+=12 ! \catcode`\@=12 ! \catcode`\\=12} % \mbodybackslash is the definition of \ in @macro bodies. --- 5621,5647 ---- \def\macrobodyctxt{% ! \catcode`\~=\other ! \catcode`\^=\other ! \catcode`\_=\other ! \catcode`\|=\other ! \catcode`\<=\other ! \catcode`\>=\other ! \catcode`\+=\other ! \catcode`\{=\other ! \catcode`\}=\other ! \catcode`\@=\other ! \catcode`\^^M=\other \usembodybackslash} \def\macroargctxt{% ! \catcode`\~=\other ! \catcode`\^=\other ! \catcode`\_=\other ! \catcode`\|=\other ! \catcode`\<=\other ! \catcode`\>=\other ! \catcode`\+=\other ! \catcode`\@=\other ! \catcode`\\=\other} % \mbodybackslash is the definition of \ in @macro bodies. *************** *** 5303,5326 **** \fi} ! \def\unmacro{\parsearg\unmacroxxx} ! \def\unmacroxxx#1{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% ! % Remove the macro name from \macrolist \begingroup ! \edef\tempa{\expandafter\noexpand\csname#1\endcsname}% ! \def\do##1{% ! \def\tempb{##1}% ! \ifx\tempa\tempb ! % remove this ! \else ! \toks0 = \expandafter{\newmacrolist\do}% ! \edef\newmacrolist{\the\toks0\expandafter\noexpand\tempa}% ! \fi}% ! \def\newmacrolist{}% ! % Execute macro list to define \newmacrolist ! \macrolist ! \global\let\macrolist\newmacrolist \endgroup \else --- 5684,5697 ---- \fi} ! \def\unmacro{\parsearg\dounmacro} ! \def\dounmacro#1{% \if1\csname ismacro.#1\endcsname \global\cslet{#1}{macsave.#1}% \global\expandafter\let \csname ismacro.#1\endcsname=0% ! % Remove the macro name from \macrolist: \begingroup ! \expandafter\let\csname#1\endcsname \relax ! \let\do\unmacrodo ! \xdef\macrolist{\macrolist}% \endgroup \else *************** *** 5329,5332 **** --- 5700,5714 ---- } + % Called by \do from \dounmacro on each macro. The idea is to omit any + % macro definitions that have been changed to \relax. + % + \def\unmacrodo#1{% + \ifx#1\relax + % remove this + \else + \noexpand\do \noexpand #1% + \fi + } + % This makes use of the obscure feature that if the last token of a % is #, then the preceding argument is delimited by *************** *** 5476,5481 **** % @node's job is to define \lastnode. \def\node{\ENVcheck\parsearg\nodezzz} ! \def\nodezzz#1{\nodexxx [#1,]} ! \def\nodexxx[#1,#2]{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\relax --- 5858,5863 ---- % @node's job is to define \lastnode. \def\node{\ENVcheck\parsearg\nodezzz} ! \def\nodezzz#1{\nodexxx #1,\finishnodeparse} ! \def\nodexxx#1,#2\finishnodeparse{\gdef\lastnode{#1}} \let\nwnode=\node \let\lastnode=\relax *************** *** 5511,5523 **** \gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} ! % \setref{NAME}{SNT} defines a cross-reference point NAME, namely ! % NAME-title, NAME-pg, and NAME-SNT. Called from \foonoderef. We have ! % to set \indexdummies so commands such as @code in a section title ! % aren't expanded. It would be nicer not to expand the titles in the ! % first place, but there's so many layers that that is hard to do. % \def\setref#1#2{{% ! \indexdummies \pdfmkdest{#1}% \dosetq{#1-title}{Ytitle}% \dosetq{#1-pg}{Ypagenumber}% --- 5893,5913 ---- \gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} ! % \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an ! % anchor), namely NAME-title (the corresponding @chapter/etc. name), ! % NAME-pg (the page number), and NAME-snt (section number and type). ! % Called from \foonoderef. ! % ! % We have to set \indexdummies so commands such as @code in a section ! % title aren't expanded. It would be nicer not to expand the titles in ! % the first place, but there's so many layers that that is hard to do. ! % ! % Likewise, use \turnoffactive so that punctuation chars such as underscore ! % and backslash work in node names. % \def\setref#1#2{{% ! \atdummies \pdfmkdest{#1}% + % + \turnoffactive \dosetq{#1-title}{Ytitle}% \dosetq{#1-pg}{Ypagenumber}% *************** *** 5571,5575 **** \leavevmode \getfilename{#4}% ! {\normalturnoffactive \ifnum\filenamelength>0 \startlink attr{/Border [0 0 0]}% --- 5961,5965 ---- \leavevmode \getfilename{#4}% ! {\turnoffactive \otherbackslash \ifnum\filenamelength>0 \startlink attr{/Border [0 0 0]}% *************** *** 5591,5595 **** % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. ! {\normalturnoffactive % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. --- 5981,5985 ---- % printing. So we \turnoffactive for the \refx-snt, back on for the % printing, back off for the \refx-pg. ! {\turnoffactive \otherbackslash % Only output a following space if the -snt ref is nonempty; for % @unnumbered and @anchor, it won't be. *************** *** 5597,5655 **** \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% ! % [mynode], ! [\printednodename],\space ! % page 3 ! \turnoffactive \putwordpage\tie\refx{#1-pg}{}% \fi \endlink \endgroup} ! % \dosetq is the interface for calls from other macros ! % Use \normalturnoffactive so that punctuation chars such as underscore ! % and backslash work in node names. (\turnoffactive doesn't do \.) \def\dosetq#1#2{% {\let\folio=0% - \normalturnoffactive \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% ! \iflinks ! \next ! \fi }% } ! % \internalsetq {foo}{page} expands into ! % CHARACTERS 'xrdef {foo}{...expansion of \Ypage...} ! % When the aux file is read, ' is the escape character ! ! \def\internalsetq #1#2{'xrdef {#1}{\csname #2\endcsname}} ! ! % Things to be expanded by \internalsetq \def\Ypagenumber{\folio} - \def\Ytitle{\thissection} - \def\Ynothing{} - \def\Ysectionnumberandtype{% ! \ifnum\secno=0 \putwordChapter\xreftie\the\chapno % ! \else \ifnum \subsecno=0 \putwordSection\xreftie\the\chapno.\the\secno % ! \else \ifnum \subsubsecno=0 % ! \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno % ! \else % ! \putwordSection\xreftie\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno % ! \fi \fi \fi } \def\Yappendixletterandtype{% ! \ifnum\secno=0 \putwordAppendix\xreftie'char\the\appendixno{}% ! \else \ifnum \subsecno=0 \putwordSection\xreftie'char\the\appendixno.\the\secno % ! \else \ifnum \subsubsecno=0 % ! \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno % ! \else % ! \putwordSection\xreftie'char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno % ! \fi \fi \fi } ! ! \gdef\xreftie{'tie} % Use TeX 3.0's \inputlineno to get the line number, for better error --- 5987,6051 ---- \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi }% ! % output the `[mynode]' via a macro. ! \xrefprintnodename\printednodename ! % ! % But we always want a comma and a space: ! ,\space ! % ! % output the `page 3'. ! \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}% \fi \endlink \endgroup} ! % This macro is called from \xrefX for the `[nodename]' part of xref ! % output. It's a separate macro only so it can be changed more easily, ! % since not square brackets don't work in some documents. Particularly ! % one that Bob is working on :). ! % ! \def\xrefprintnodename#1{[#1]} ! % \dosetq is called from \setref to do the actual \write (\iflinks). ! % \def\dosetq#1#2{% {\let\folio=0% \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}% ! \iflinks \next \fi }% } ! % \internalsetq{foo}{page} expands into ! % CHARACTERS @xrdef{foo}{...expansion of \page...} ! \def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}} + % Things to be expanded by \internalsetq. + % \def\Ypagenumber{\folio} \def\Ytitle{\thissection} \def\Ynothing{} \def\Ysectionnumberandtype{% ! \ifnum\secno=0 ! \putwordChapter@tie \the\chapno ! \else \ifnum\subsecno=0 ! \putwordSection@tie \the\chapno.\the\secno ! \else \ifnum\subsubsecno=0 ! \putwordSection@tie \the\chapno.\the\secno.\the\subsecno ! \else ! \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno ! \fi\fi\fi ! } \def\Yappendixletterandtype{% ! \ifnum\secno=0 ! \putwordAppendix@tie @char\the\appendixno{}% ! \else \ifnum\subsecno=0 ! \putwordSection@tie @char\the\appendixno.\the\secno ! \else \ifnum\subsubsecno=0 ! \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno ! \else ! \putwordSection@tie ! @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno ! \fi\fi\fi ! } % Use TeX 3.0's \inputlineno to get the line number, for better error *************** *** 5657,5661 **** % \ifx\inputlineno\thisisundefined ! \let\linenumber = \empty % Non-3.0. \else \def\linenumber{\the\inputlineno:\space} --- 6053,6057 ---- % \ifx\inputlineno\thisisundefined ! \let\linenumber = \empty % Pre-3.0. \else \def\linenumber{\the\inputlineno:\space} *************** *** 5664,5670 **** % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. ! \def\refx#1#2{% ! \expandafter\ifx\csname X#1\endcsname\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright --- 6060,6072 ---- % Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. % If its value is nonempty, SUFFIX is output afterward. ! % \def\refx#1#2{% ! {% ! \indexnofonts ! \otherbackslash ! \expandafter\global\expandafter\let\expandafter\thisrefX ! \csname X#1\endcsname ! }% ! \ifx\thisrefX\relax % If not defined, say something at least. \angleleft un\-de\-fined\angleright *************** *** 5681,5685 **** \else % It's defined, so just use it. ! \csname X#1\endcsname \fi #2% Output the suffix in any case. --- 6083,6087 ---- \else % It's defined, so just use it. ! \thisrefX \fi #2% Output the suffix in any case. *************** *** 5688,5697 **** % This is the macro invoked by entries in the aux file. % ! \def\xrdef#1{\begingroup ! % Reenable \ as an escape while reading the second argument. ! \catcode`\\ = 0 ! \afterassignment\endgroup ! \expandafter\gdef\csname X#1\endcsname ! } % Read the last existing aux file, if any. No error if none exists. --- 6090,6094 ---- % This is the macro invoked by entries in the aux file. % ! \def\xrdef#1{\expandafter\gdef\csname X#1\endcsname} % Read the last existing aux file, if any. No error if none exists. *************** *** 5724,5730 **** \catcode`\^^^=\other \catcode`\^^_=\other ! \catcode`\@=\other ! \catcode`\^=\other ! % It was suggested to define this as 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, --- 6121,6125 ---- \catcode`\^^^=\other \catcode`\^^_=\other ! % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. % in xref tags, i.e., node names. But since ^^e4 notation isn't % supported in the main text, it doesn't seem desirable. Furthermore, *************** *** 5739,5742 **** --- 6134,6140 ---- % and then to call \auxhat in \setq. % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... \catcode`\~=\other \catcode`\[=\other *************** *** 5750,5754 **** --- 6148,6154 ---- \catcode`\#=\other \catcode`\&=\other + \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % % Make the characters 128-255 be printing characters {% *************** *** 5760,5774 **** }% }% ! % The aux file uses ' as the escape (for now). % Turn off \ as an escape so we do not lose on % entries which were dumped with control sequences in their names. ! % For example, 'xrdef {$\leq $-fun}{page ...} made by @defun ^^ % Reference to such entries still does not work the way one would wish, % but at least they do not bomb out when the aux file is read in. \catcode`\{=1 \catcode`\}=2 ! \catcode`\%=\other ! \catcode`\'=0 ! \catcode`\\=\other % \openin 1 \jobname.aux --- 6160,6175 ---- }% }% ! % % Turn off \ as an escape so we do not lose on % entries which were dumped with control sequences in their names. ! % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^ % Reference to such entries still does not work the way one would wish, % but at least they do not bomb out when the aux file is read in. + \catcode`\\=\other + % + % @ is our escape character in .aux files. \catcode`\{=1 \catcode`\}=2 ! \catcode`\@=0 % \openin 1 \jobname.aux *************** *** 5804,5807 **** --- 6205,6209 ---- % Auto-number footnotes. Otherwise like plain. \gdef\footnote{% + \let\indent=\ptexindent \global\advance\footnoteno by \@ne \edef\thisfootno{$^{\the\footnoteno}$}% *************** *** 5810,5819 **** % extra spacing after we do the footnote number. \let\@sf\empty ! \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf ! \footnotezzz }% --- 6212,6221 ---- % extra spacing after we do the footnote number. \let\@sf\empty ! \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi % % Remove inadvertent blank space before typesetting the footnote number. \unskip \thisfootno\@sf ! \dofootnote }% *************** *** 5825,5832 **** % the footnote is read. --karl, 16nov96. % ! \long\gdef\footnotezzz{\insert\footins\bgroup % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes --- 6227,6241 ---- % the footnote is read. --karl, 16nov96. % ! % The start of the footnote looks usually like this: ! \gdef\startfootins{\insert\footins\bgroup} ! % ! % ... but this macro is redefined inside @multitable. ! % ! \gdef\dofootnote{% ! \startfootins % We want to typeset this text as a normal paragraph, even if the % footnote reference occurs in (for example) a display environment. % So reset some parameters. + \hsize=\pagewidth \interlinepenalty\interfootnotelinepenalty \splittopskip\ht\strutbox % top baseline for broken footnotes *************** *** 5858,5867 **** \futurelet\next\fo@t } - \def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else\let\next\f@t\fi \next} - \def\f@@t{\bgroup\aftergroup\@foot\let\next} - \def\f@t#1{#1\@foot} - \def\@foot{\strut\par\egroup} - }%end \catcode `\@=11 --- 6267,6270 ---- *************** *** 5910,5915 **** \ifeof 1 \else \closein 1 ! % Do not bother showing banner with post-v2.7 epsf.tex (available in ! % doc/epsf.tex until it shows up on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex --- 6313,6318 ---- \ifeof 1 \else \closein 1 ! % Do not bother showing banner with epsf.tex v2.7k (available in ! % doc/epsf.tex and on ctan). \def\epsfannounce{\toks0 = }% \input epsf.tex *************** *** 5950,5954 **** % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space ! % above and below. \nobreak\vskip\parskip \nobreak --- 6353,6357 ---- % Usually we'll have text after the image which will insert % \parskip glue, so insert it here too to equalize the space ! % above and below. \nobreak\vskip\parskip \nobreak *************** *** 6036,6044 **** % Parameters in order: 1) textheight; 2) textwidth; 3) voffset; ! % 4) hoffset; 5) binding offset; 6) topskip. We also call ! % \setleading{\textleading}, so the caller should define \textleading. ! % The caller should also set \parskip. % ! \def\internalpagesizes#1#2#3#4#5#6{% \voffset = #3\relax \topskip = #6\relax --- 6439,6449 ---- % Parameters in order: 1) textheight; 2) textwidth; 3) voffset; ! % 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8) ! % physical page width. ! % ! % We also call \setleading{\textleading}, so the caller should define ! % \textleading. The caller should also set \parskip. % ! \def\internalpagesizes#1#2#3#4#5#6#7#8{% \voffset = #3\relax \topskip = #6\relax *************** *** 6059,6062 **** --- 6464,6472 ---- \bindingoffset = #5\relax % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + \fi + % \setleading{\textleading} % *************** *** 6065,6077 **** } - % Use `small' versions. - % - \def\smallenvironments{% - \let\smalldisplay = \smalldisplayx - \let\smallexample = \smalllispx - \let\smallformat = \smallformatx - \let\smalllisp = \smalllispx - } - % @letterpaper (the default). \def\letterpaper{{\globaldefs = 1 --- 6475,6478 ---- *************** *** 6080,6084 **** % % If page is nothing but text, make it come out even. ! \internalpagesizes{46\baselineskip}{6in}{\voffset}{.25in}{\bindingoffset}{36pt}% }} --- 6481,6488 ---- % % If page is nothing but text, make it come out even. ! \internalpagesizes{46\baselineskip}{6in}% ! {\voffset}{.25in}% ! {\bindingoffset}{36pt}% ! {11in}{8.5in}% }} *************** *** 6088,6092 **** \textleading = 12pt % ! \internalpagesizes{7.5in}{5.in}{\voffset}{.25in}{\bindingoffset}{16pt}% % \lispnarrowing = 0.3in --- 6492,6499 ---- \textleading = 12pt % ! \internalpagesizes{7.5in}{5in}% ! {\voffset}{.25in}% ! {\bindingoffset}{16pt}% ! {9.25in}{7in}% % \lispnarrowing = 0.3in *************** *** 6094,6100 **** \hfuzz = 1pt \contentsrightmargin = 0pt - \deftypemargin = 0pt \defbodyindent = .5cm - \smallenvironments }} --- 6501,6505 ---- *************** *** 6102,6111 **** \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt ! \textleading = 12pt % ! \internalpagesizes{53\baselineskip}{160mm}{\voffset}{4mm}{\bindingoffset}{44pt}% % \tolerance = 700 \hfuzz = 1pt }} --- 6507,6531 ---- \def\afourpaper{{\globaldefs = 1 \parskip = 3pt plus 2pt minus 1pt ! \textleading = 13.2pt % ! % Double-side printing via postscript on Laserjet 4050 ! % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. ! % To change the settings for a different printer or situation, adjust ! % \normaloffset until the front-side and back-side texts align. Then ! % do the same for \bindingoffset. You can set these for testing in ! % your texinfo source file like this: ! % @tex ! % \global\normaloffset = -6mm ! % \global\bindingoffset = 10mm ! % @end tex ! \internalpagesizes{51\baselineskip}{160mm} ! {\voffset}{\hoffset}% ! {\bindingoffset}{44pt}% ! {297mm}{210mm}% % \tolerance = 700 \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm }} *************** *** 6117,6151 **** \textleading = 12.5pt % ! \internalpagesizes{166mm}{120mm}{\voffset}{-8mm}{\bindingoffset}{8pt}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt ! \contentsrightmargin = 0mm ! \deftypemargin = 0pt \defbodyindent = 2mm \tableindent = 12mm - % - \smallenvironments }} ! % A specific text layout, 24x15cm overall, intended for A4 paper. Top margin ! % 29mm, hence bottom margin 28mm, nominal side margin 3cm. \def\afourlatex{{\globaldefs = 1 - \textleading = 13.6pt - % \afourpaper ! \internalpagesizes{237mm}{150mm}{3.6mm}{3.6mm}{3mm}{7mm}% % ! % Must explicitly reset to 0 because we call \afourpaper, apparently, ! % although this does not entirely make sense. \globaldefs = 0 }} ! % Use @afourwide to print on European A4 paper in wide format. ! \def\afourwide{% \afourpaper ! \internalpagesizes{6.5in}{9.5in}{\hoffset}{\normaloffset}{\bindingoffset}{7mm}% ! } % @pagesizes TEXTHEIGHT[,TEXTWIDTH] --- 6537,6574 ---- \textleading = 12.5pt % ! \internalpagesizes{160mm}{120mm}% ! {\voffset}{\hoffset}% ! {\bindingoffset}{8pt}% ! {210mm}{148mm}% % \lispnarrowing = 0.2in \tolerance = 800 \hfuzz = 1.2pt ! \contentsrightmargin = 0pt \defbodyindent = 2mm \tableindent = 12mm }} ! % A specific text layout, 24x15cm overall, intended for A4 paper. \def\afourlatex{{\globaldefs = 1 \afourpaper ! \internalpagesizes{237mm}{150mm}% ! {\voffset}{4.6mm}% ! {\bindingoffset}{7mm}% ! {297mm}{210mm}% % ! % Must explicitly reset to 0 because we call \afourpaper. \globaldefs = 0 }} ! % Use @afourwide to print on A4 paper in landscape format. ! \def\afourwide{{\globaldefs = 1 \afourpaper ! \internalpagesizes{241mm}{165mm}% ! {\voffset}{-2.95mm}% ! {\bindingoffset}{7mm}% ! {297mm}{210mm}% ! \globaldefs = 0 ! }} % @pagesizes TEXTHEIGHT[,TEXTWIDTH] *************** *** 6162,6166 **** \setleading{\textleading}% % ! \internalpagesizes{#1}{\hsize}{\voffset}{\normaloffset}{\bindingoffset}{44pt}% }} --- 6585,6598 ---- \setleading{\textleading}% % ! \dimen0 = #1 ! \advance\dimen0 by \voffset ! % ! \dimen2 = \hsize ! \advance\dimen2 by \normaloffset ! % ! \internalpagesizes{#1}{\hsize}% ! {\voffset}{\normaloffset}% ! {\bindingoffset}{44pt}% ! {\dimen0}{\dimen2}% }} *************** *** 6226,6230 **** \def_{\ifusingtt\normalunderscore\_} % Subroutine for the previous macro. ! \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em height.1ex}} \catcode`\|=\active --- 6658,6662 ---- \def_{\ifusingtt\normalunderscore\_} % Subroutine for the previous macro. ! \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } \catcode`\|=\active *************** *** 6240,6245 **** \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix - %\catcode 27=\active - %\def^^[{$\diamondsuit$} % Set up an active definition for =, but don't enable it most of the time. --- 6672,6675 ---- *************** *** 6258,6299 **** \catcode`\@=0 ! % \rawbackslashxx output one backslash character in current font \global\chardef\rawbackslashxx=`\\ - %{\catcode`\\=\other - %@gdef@rawbackslashxx{\}} ! % \rawbackslash redefines \ as input to do \rawbackslashxx. {\catcode`\\=\active ! @gdef@rawbackslash{@let\=@rawbackslashxx }} % \normalbackslash outputs one backslash in fixed width font. \def\normalbackslash{{\tt\rawbackslashxx}} - % \catcode 17=0 % Define control-q \catcode`\\=\active % Used sometimes to turn off (effectively) the active characters % even after parsing them. ! @def@turnoffactive{@let"=@normaldoublequote ! @let\=@realbackslash ! @let~=@normaltilde ! @let^=@normalcaret ! @let_=@normalunderscore ! @let|=@normalverticalbar ! @let<=@normalless ! @let>=@normalgreater ! @let+=@normalplus ! @let$=@normaldollar}%$ font-lock fix ! ! @def@normalturnoffactive{@let"=@normaldoublequote ! @let\=@normalbackslash ! @let~=@normaltilde ! @let^=@normalcaret ! @let_=@normalunderscore ! @let|=@normalverticalbar ! @let<=@normalless ! @let>=@normalgreater ! @let+=@normalplus ! @let$=@normaldollar}%$ font-lock fix % Make _ and + \other characters, temporarily. --- 6688,6731 ---- \catcode`\@=0 ! % \rawbackslashxx outputs one backslash character in current font, ! % as in \char`\\. \global\chardef\rawbackslashxx=`\\ ! % \rawbackslash defines an active \ to do \rawbackslashxx. ! % \otherbackslash defines an active \ to be a literal `\' character with ! % catcode other. {\catcode`\\=\active ! @gdef@rawbackslash{@let\=@rawbackslashxx} ! @gdef@otherbackslash{@let\=@realbackslash} ! } ! ! % \realbackslash is an actual character `\' with catcode other. ! {\catcode`\\=\other @gdef@realbackslash{\}} % \normalbackslash outputs one backslash in fixed width font. \def\normalbackslash{{\tt\rawbackslashxx}} \catcode`\\=\active % Used sometimes to turn off (effectively) the active characters % even after parsing them. ! @def@turnoffactive{% ! @let"=@normaldoublequote ! @let\=@realbackslash ! @let~=@normaltilde ! @let^=@normalcaret ! @let_=@normalunderscore ! @let|=@normalverticalbar ! @let<=@normalless ! @let>=@normalgreater ! @let+=@normalplus ! @let$=@normaldollar %$ font-lock fix ! } ! ! % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of ! % the literal character `\'. (Thus, \ is not expandable when this is in ! % effect.) ! % ! @def@normalturnoffactive{@turnoffactive @let\=@normalbackslash} % Make _ and + \other characters, temporarily. *************** *** 6323,6327 **** @escapechar = `@@ ! % These look ok in all fonts, so just make them not special. @catcode`@& = @other @catcode`@# = @other --- 6755,6759 ---- @escapechar = `@@ ! % These look ok in all fonts, so just make them not special. @catcode`@& = @other @catcode`@# = @other diff -x.info* -rc2P gsl-1.3/doc/usage.texi gsl-1.4/doc/usage.texi *** gsl-1.3/doc/usage.texi Tue Apr 2 20:36:35 2002 --- gsl-1.4/doc/usage.texi Sat Aug 2 16:16:53 2003 *************** *** 10,14 **** * Compiling and Linking:: * Shared Libraries:: - * Autoconf macros:: * Inline functions:: * Long double:: --- 10,13 ---- *************** *** 21,24 **** --- 20,42 ---- * Code Reuse:: @end menu + @node An Example Program + @section An Example Program + + The following short program demonstrates the use of the library by + computing the value of the Bessel function @math{J_0(x)} for @math{x=5}, + + @example + @verbatiminclude examples/intro.c + @end example + @noindent + The output is shown below, and should be correct to double-precision + accuracy, + + @example + @verbatiminclude examples/intro.out + @end example + @noindent + The steps needed to compile this program are described in the following + sections. @node ANSI C Compliance *************** *** 63,73 **** as a command line flag. The default location of the @file{gsl} directory is @file{/usr/local/include/gsl}. A typical compilation ! command for a source file @file{app.c} with the GNU C compiler @code{gcc} is, @example ! gcc -I/usr/local/include -c app.c @end example @noindent ! This results in an object file @file{app.o}. The default include path for @code{gcc} searches @file{/usr/local/include} automatically so the @code{-I} option can be omitted when GSL is installed in its default --- 81,91 ---- as a command line flag. The default location of the @file{gsl} directory is @file{/usr/local/include/gsl}. A typical compilation ! command for a source file @file{example.c} with the GNU C compiler @code{gcc} is, @example ! gcc -I/usr/local/include -c example.c @end example @noindent ! This results in an object file @file{example.o}. The default include path for @code{gcc} searches @file{/usr/local/include} automatically so the @code{-I} option can be omitted when GSL is installed in its default *************** *** 88,92 **** @example ! gcc app.o -lgsl -lgslcblas -lm @end example @noindent --- 106,110 ---- @example ! gcc example.o -lgsl -lgslcblas -lm @end example @noindent *************** *** 95,99 **** @example ! gcc app.o -lgsl -lcblas -lm @end example @noindent --- 113,117 ---- @example ! gcc example.o -lgsl -lcblas -lm @end example @noindent *************** *** 107,111 **** @example ! gcc app.o -lgsl -lcblas -latlas -lm @end example @noindent --- 125,129 ---- @example ! gcc example.o -lgsl -lcblas -latlas -lm @end example @noindent *************** *** 125,210 **** @node Shared Libraries @section Shared Libraries ! To run a program linked with the shared version of the library it may be necessary to define the shell variable @code{LD_LIBRARY_PATH} to include ! the directory where the library is installed. For example, @example ! LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ./app @end example @noindent ! To compile a statically linked version of the program instead, use the ! @code{-static} flag in @code{gcc}, @example ! gcc -static app.o -lgsl -lgslcblas -lm @end example ! @node Autoconf macros ! @section Autoconf macros ! ! For applications using @code{autoconf} the standard macro ! @code{AC_CHECK_LIB} can be used to link with the library automatically ! from a @code{configure} script. The library itself depends on the ! presence of a @sc{cblas} and math library as well, so these must also be ! located before linking with the main @code{libgsl} file. The following ! commands should be placed in the @file{configure.in} file to perform ! these tests, ! ! @example ! AC_CHECK_LIB(m,main) ! AC_CHECK_LIB(gslcblas,main) ! AC_CHECK_LIB(gsl,main) ! @end example ! @noindent ! Assuming the libraries are found the output during the configure stage ! looks like this, ! @example ! checking for main in -lm... yes ! checking for main in -lgslcblas... yes ! checking for main in -lgsl... yes ! @end example ! @noindent ! If the library is found then the tests will define the macros ! @code{HAVE_LIBGSL}, @code{HAVE_LIBGSLCBLAS}, @code{HAVE_LIBM} and add ! the options @code{-lgsl -lgslcblas -lm} to the variable @code{LIBS}. ! ! The tests above will find any version of the library. They are suitable ! for general use, where the versions of the functions are not important. ! An alternative macro is available in the file @file{gsl.m4} to test for ! a specific version of the library. To use this macro simply add the ! following line to your @file{configure.in} file instead of the tests ! above: ! ! @example ! AM_PATH_GSL(GSL_VERSION, ! [action-if-found], ! [action-if-not-found]) ! @end example ! @noindent ! The argument @code{GSL_VERSION} should be the two or three digit ! @sc{major.minor} or @sc{major.minor.micro} version number of the release ! you require. A suitable choice for @code{action-if-not-found} is, @example ! AC_MSG_ERROR(could not find required version of GSL) @end example - @noindent - Then you can add the variables @code{GSL_LIBS} and @code{GSL_CFLAGS} to - your Makefile.am files to obtain the correct compiler flags. - @code{GSL_LIBS} is equal to the output of the @code{gsl-config --libs} - command and @code{GSL_CFLAGS} is equal to @code{gsl-config --cflags} - command. For example, - - @example - libgsdv_la_LDFLAGS = \ - $(GTK_LIBDIR) \ - $(GTK_LIBS) -lgsdvgsl $(GSL_LIBS) -lgslcblas - @end example - @noindent - Note that the macro @code{AM_PATH_GSL} needs to use the C compiler so it - should appear in the @file{configure.in} file before the macro - @code{AC_LANG_CPLUSPLUS} for programs that use C++. @node Inline functions --- 143,177 ---- @node Shared Libraries @section Shared Libraries ! @cindex shared libraries ! @cindex libraries, shared ! @cindex LD_LIBRARY_PATH To run a program linked with the shared version of the library it may be necessary to define the shell variable @code{LD_LIBRARY_PATH} to include ! the directory where the library is installed. For example, in the ! Bourne shell (@code{/bin/sh} or @code{/bin/bash}), the library path can be set ! with the following commands: @example ! LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH ! export LD_LIBRARY_PATH ! ./example @end example @noindent ! In the C-shell (@code{/bin/csh} or @code{/bin/tcsh}) the equivalent ! command is, @example ! setenv LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH @end example ! To save retyping these commands each session they should be placed in an ! individual or system-wide login file. ! To compile a statically linked version of the program, use the ! @code{-static} flag in @code{gcc}, @example ! gcc -static example.o -lgsl -lgslcblas -lm @end example @node Inline functions *************** *** 213,217 **** @cindex inline functions @cindex HAVE_INLINE - @cindex autoconf, using with GSL The @code{inline} keyword is not part of ANSI C and the library does not export any inline function definitions by default. However, the library --- 180,183 ---- *************** *** 222,244 **** @example ! gcc -c -DHAVE_INLINE app.c @end example @noindent ! If you use @code{autoconf} this macro can be defined automatically. ! The following test should be placed in your @file{configure.in} file, ! ! @example ! AC_C_INLINE ! ! if test "$ac_cv_c_inline" != no ; then ! AC_DEFINE(HAVE_INLINE,1) ! AC_SUBST(HAVE_INLINE) ! fi ! @end example ! @noindent ! and the macro will then be defined in the compilation flags or by ! including the file @file{config.h} before any library headers. If you ! do not define the macro @code{HAVE_INLINE} then the slower non-inlined ! versions of the functions will be used instead. Note that the actual usage of the inline keyword is @code{extern --- 188,197 ---- @example ! gcc -c -DHAVE_INLINE example.c @end example @noindent ! If you use @code{autoconf} this macro can be defined automatically. If ! you do not define the macro @code{HAVE_INLINE} then the slower ! non-inlined versions of the functions will be used instead. Note that the actual usage of the inline keyword is @code{extern *************** *** 285,300 **** the BSD math library. You can write your application to use the native versions of these functions, and substitute the GSL versions via a ! preprocessor macro if they are unavailable on another platform. The ! substitution can be made automatically if you use @code{autoconf}. For ! example, to test whether the BSD function @code{hypot} is available you ! can include the following line in the configure file @file{configure.in} ! for your application, ! @example ! AC_CHECK_FUNCS(hypot) ! @end example ! @noindent ! and place the following macro definitions in the file ! @file{config.h.in}, @example --- 238,246 ---- the BSD math library. You can write your application to use the native versions of these functions, and substitute the GSL versions via a ! preprocessor macro if they are unavailable on another platform. ! For example, after determining whether the BSD function @code{hypot} is ! available you can include the following macro definitions in a file ! @file{config.h} with your application, @example *************** *** 307,312 **** @noindent The application source files can then use the include command ! @code{#include } to substitute @code{gsl_hypot} for each ! occurrence of @code{hypot} when @code{hypot} is not available. In most circumstances the best strategy is to use the native versions of --- 253,260 ---- @noindent The application source files can then use the include command ! @code{#include } to replace each occurrence of @code{hypot} by ! @code{gsl_hypot} when @code{hypot} is not available. This substitution ! can be made automatically if you use @code{autoconf}, see @ref{Autoconf ! Macros}. In most circumstances the best strategy is to use the native versions of diff -x.info* -rc2P gsl-1.3/doc/vectors.texi gsl-1.4/doc/vectors.texi *** gsl-1.3/doc/vectors.texi Sun Dec 15 13:22:00 2002 --- gsl-1.4/doc/vectors.texi Sun Aug 3 15:52:56 2003 *************** *** 165,182 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! gsl_block * b = gsl_block_alloc (100); ! ! printf("length of block = %u\n", b->size); ! printf("block data address = %#x\n", b->data); ! ! gsl_block_free (b); ! return 0; ! @} @end example @comment --- 165,169 ---- @example ! @verbatiminclude examples/block.c @end example @comment *************** *** 185,190 **** @example ! length of block = 100 ! block data address = 0x804b0d8 @end example @comment --- 172,176 ---- @example ! @verbatiminclude examples/block.out @end example @comment *************** *** 320,324 **** @deftypefun {double *} gsl_vector_ptr (gsl_vector * @var{v}, size_t @var{i}) ! @deftypefunx {const double *} gsl_vector_ptr (const gsl_vector * @var{v}, size_t @var{i}) These functions return a pointer to the @var{i}-th element of a vector @var{v}. If @var{i} lies outside the allowed range of 0 to @var{n-1} --- 306,310 ---- @deftypefun {double *} gsl_vector_ptr (gsl_vector * @var{v}, size_t @var{i}) ! @deftypefunx {const double *} gsl_vector_const_ptr (const gsl_vector * @var{v}, size_t @var{i}) These functions return a pointer to the @var{i}-th element of a vector @var{v}. If @var{i} lies outside the allowed range of 0 to @var{n-1} *************** *** 646,650 **** of a vector. ! @deftypefun int gsl_vector_swap_elements (gsl_vector * @var{v}, size_t i, size_t j) This function exchanges the @var{i}-th and @var{j}-th elements of the vector @var{v} in-place. --- 632,636 ---- of a vector. ! @deftypefun int gsl_vector_swap_elements (gsl_vector * @var{v}, size_t @var{i}, size_t @var{j}) This function exchanges the @var{i}-th and @var{j}-th elements of the vector @var{v} in-place. *************** *** 746,770 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! gsl_vector * v = gsl_vector_alloc (3); ! ! for (i = 0; i < 3; i++) ! @{ ! gsl_vector_set (v, i, 1.23 + i); ! @} ! ! for (i = 0; i < 100; i++) ! @{ ! printf("v_%d = %g\n", i, gsl_vector_get (v, i)); ! @} ! ! return 0; ! @} @end example @comment --- 732,736 ---- @example ! @verbatiminclude examples/vector.c @end example @comment *************** *** 786,810 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! gsl_vector * v = gsl_vector_alloc (100); ! ! for (i = 0; i < 100; i++) ! @{ ! gsl_vector_set (v, i, 1.23 + i); ! @} ! ! @{ ! FILE * f = fopen("test.dat", "w"); ! gsl_vector_fprintf (f, v, "%.5g"); ! fclose (f); ! @} ! return 0; ! @} @end example @comment --- 752,756 ---- @example ! @verbatiminclude examples/vectorw.c @end example @comment *************** *** 816,841 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i; ! gsl_vector * v = gsl_vector_alloc (10); ! ! @{ ! FILE * f = fopen("test.dat", "r"); ! gsl_vector_fscanf (f, v); ! fclose (f); ! @} ! ! for (i = 0; i < 10; i++) ! @{ ! printf("%g\n", gsl_vector_get(v, i)); ! @} ! ! return 0; ! @} @end example --- 762,766 ---- @example ! @verbatiminclude examples/vectorr.c @end example *************** *** 963,967 **** The functions for accessing the elements of a matrix use the same range ! checking system as vectors. You turn off range checking by recompiling your program with the preprocessor definition @code{GSL_RANGE_CHECK_OFF}. --- 888,892 ---- The functions for accessing the elements of a matrix use the same range ! checking system as vectors. You can turn off range checking by recompiling your program with the preprocessor definition @code{GSL_RANGE_CHECK_OFF}. *************** *** 994,998 **** @deftypefun {double *} gsl_matrix_ptr (gsl_matrix * @var{m}, size_t @var{i}, size_t @var{j}) ! @deftypefunx {const double *} gsl_matrix_ptr (const gsl_matrix * @var{m}, size_t @var{i}, size_t @var{j}) These functions return a pointer to the (@var{i},@var{j})th element of a matrix @var{m}. If @var{i} or @var{j} lie outside the allowed range of --- 919,923 ---- @deftypefun {double *} gsl_matrix_ptr (gsl_matrix * @var{m}, size_t @var{i}, size_t @var{j}) ! @deftypefunx {const double *} gsl_matrix_const_ptr (const gsl_matrix * @var{m}, size_t @var{i}, size_t @var{j}) These functions return a pointer to the (@var{i},@var{j})th element of a matrix @var{m}. If @var{i} or @var{j} lie outside the allowed range of *************** *** 1383,1387 **** @end deftypefun ! @deftypefun int gsl_matrix_swap (gsl_matrix * @var{m1}, const gsl_matrix * @var{m2}) This function exchanges the elements of the matrices @var{m1} and @var{m2} by copying. The two matrices must have the same size. --- 1308,1312 ---- @end deftypefun ! @deftypefun int gsl_matrix_swap (gsl_matrix * @var{m1}, gsl_matrix * @var{m2}) This function exchanges the elements of the matrices @var{m1} and @var{m2} by copying. The two matrices must have the same size. *************** *** 1405,1409 **** @deftypefun int gsl_matrix_get_col (gsl_vector * @var{v}, const gsl_matrix * @var{m}, size_t @var{j}) ! This function copies the elements of the @var{i}-th column of the matrix @var{m} into the vector @var{v}. The length of the vector must be the same as the length of the column. --- 1330,1334 ---- @deftypefun int gsl_matrix_get_col (gsl_vector * @var{v}, const gsl_matrix * @var{m}, size_t @var{j}) ! This function copies the elements of the @var{j}-th column of the matrix @var{m} into the vector @var{v}. The length of the vector must be the same as the length of the column. *************** *** 1418,1422 **** @deftypefun int gsl_matrix_set_col (gsl_matrix * @var{m}, size_t @var{j}, const gsl_vector * @var{v}) This function copies the elements of the vector @var{v} into the ! @var{i}-th column of the matrix @var{m}. The length of the vector must be the same as the length of the column. @end deftypefun --- 1343,1347 ---- @deftypefun int gsl_matrix_set_col (gsl_matrix * @var{m}, size_t @var{j}, const gsl_vector * @var{v}) This function copies the elements of the vector @var{v} into the ! @var{j}-th column of the matrix @var{m}. The length of the vector must be the same as the length of the column. @end deftypefun *************** *** 1444,1448 **** @end deftypefun ! @deftypefun int gsl_matrix_transpose_memcpy (gsl_matrix * @var{dest}, gsl_matrix * @var{src}) This function makes the matrix @var{dest} the transpose of the matrix @var{src} by copying the elements of @var{src} into @var{dest}. This --- 1369,1373 ---- @end deftypefun ! @deftypefun int gsl_matrix_transpose_memcpy (gsl_matrix * @var{dest}, const gsl_matrix * @var{src}) This function makes the matrix @var{dest} the transpose of the matrix @var{src} by copying the elements of @var{src} into @var{dest}. This *************** *** 1460,1464 **** @subsection Matrix operations ! The following operations are only defined for real matrices. @deftypefun int gsl_matrix_add (gsl_matrix * @var{a}, const gsl_matrix * @var{b}) --- 1385,1389 ---- @subsection Matrix operations ! The following operations are defined for real and complex matrices. @deftypefun int gsl_matrix_add (gsl_matrix * @var{a}, const gsl_matrix * @var{b}) *************** *** 1499,1502 **** --- 1424,1428 ---- @subsection Finding maximum and minimum elements of matrices + The following operations are only defined for real matrices. @deftypefun double gsl_matrix_max (const gsl_matrix * @var{m}) *************** *** 1516,1520 **** This function returns the indices of the maximum value in the matrix @var{m}, storing them in @var{imax} and @var{jmax}. When there are ! several equal maximum elements then the first element found is returned. @end deftypefun --- 1442,1447 ---- This function returns the indices of the maximum value in the matrix @var{m}, storing them in @var{imax} and @var{jmax}. When there are ! several equal maximum elements then the first element found is returned, ! searching in row-major order. @end deftypefun *************** *** 1522,1526 **** This function returns the indices of the minimum value in the matrix @var{m}, storing them in @var{imax} and @var{jmax}. When there are ! several equal minimum elements then the first element found is returned. @end deftypefun --- 1449,1454 ---- This function returns the indices of the minimum value in the matrix @var{m}, storing them in @var{imax} and @var{jmax}. When there are ! several equal minimum elements then the first element found is returned, ! searching in row-major order. @end deftypefun *************** *** 1529,1533 **** the matrix @var{m}, storing them in (@var{imin},@var{jmin}) and (@var{imax},@var{jmax}). When there are several equal minimum or maximum ! elements then the first elements found are returned. @end deftypefun --- 1457,1462 ---- the matrix @var{m}, storing them in (@var{imin},@var{jmin}) and (@var{imax},@var{jmax}). When there are several equal minimum or maximum ! elements then the first elements found are returned, searching in ! row-major order. @end deftypefun *************** *** 1548,1571 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i, j; ! gsl_matrix * m = gsl_matrix_alloc (10, 3); ! ! for (i = 0; i < 10; i++) ! for (j = 0; j < 3; j++) ! gsl_matrix_set (m, i, j, 0.23 + 100*i + j); ! ! for (i = 0; i < 100; i++) ! for (j = 0; j < 3; j++) ! printf("m(%d,%d) = %g\n", i, j, ! gsl_matrix_get (m, i, j)); ! ! return 0; ! @} @end example @comment --- 1477,1481 ---- @example ! @verbatiminclude examples/matrix.c @end example @comment *************** *** 1592,1632 **** @example ! #include ! #include ! ! int ! main (void) ! @{ ! int i, j, k = 0; ! gsl_matrix * m = gsl_matrix_alloc (100, 100); ! gsl_matrix * a = gsl_matrix_alloc (100, 100); ! ! for (i = 0; i < 100; i++) ! for (j = 0; j < 100; j++) ! gsl_matrix_set (m, i, j, 0.23 + i + j); ! ! @{ ! FILE * f = fopen("test.dat", "w"); ! gsl_matrix_fwrite (f, m); ! fclose (f); ! @} ! ! @{ ! FILE * f = fopen("test.dat", "r"); ! gsl_matrix_fread (f, a); ! fclose (f); ! @} ! ! for (i = 0; i < 100; i++) ! for (j = 0; j < 100; j++) ! @{ ! double mij = gsl_matrix_get(m, i, j); ! double aij = gsl_matrix_get(a, i, j); ! if (mij != aij) k++; ! @} ! ! printf("differences = %d (should be zero)\n", k); ! return (k > 0); ! @} @end example @comment --- 1502,1506 ---- @example ! @verbatiminclude examples/matrixw.c @end example @comment *************** *** 1641,1672 **** @example ! #include ! #include ! #include ! #include ! ! int ! main (void) ! @{ ! size_t i,j; ! ! gsl_matrix *m = gsl_matrix_alloc (10, 10); ! ! for (i = 0; i < 10; i++) ! for (j = 0; j < 10; j++) ! gsl_matrix_set (m, i, j, sin (i) + cos (j)); ! ! for (j = 0; j < 10; j++) ! @{ ! gsl_vector_view column = gsl_matrix_column (m, j); ! double d; ! ! d = gsl_blas_dnrm2 (&column.vector); ! ! printf ("matrix column %d, norm = %g\n", j, d); ! @} ! ! gsl_matrix_free (m); ! @} @end example @noindent --- 1515,1519 ---- @example ! @verbatiminclude examples/vectorview.c @end example @noindent *************** *** 1676,1690 **** @example $ ./a.out ! matrix column 0, norm = 4.31461 ! matrix column 1, norm = 3.1205 ! matrix column 2, norm = 2.19316 ! matrix column 3, norm = 3.26114 ! matrix column 4, norm = 2.53416 ! matrix column 5, norm = 2.57281 ! matrix column 6, norm = 4.20469 ! matrix column 7, norm = 3.65202 ! matrix column 8, norm = 2.08524 ! matrix column 9, norm = 3.07313 octave> m = sin(0:9)' * ones(1,10) + ones(10,1) * cos(0:9); --- 1523,1530 ---- @example $ ./a.out ! @verbatiminclude examples/vectorview.out ! @end example + @example octave> m = sin(0:9)' * ones(1,10) + ones(10,1) * cos(0:9); diff -x.info* -rc2P gsl-1.3/doc/version-ref.texi gsl-1.4/doc/version-ref.texi *** gsl-1.3/doc/version-ref.texi Mon Dec 16 19:55:07 2002 --- gsl-1.4/doc/version-ref.texi Thu Aug 14 12:36:37 2003 *************** *** 1,3 **** ! @set UPDATED 11 December 2002 ! @set EDITION 1.3 ! @set VERSION 1.3 --- 1,4 ---- ! @set UPDATED 12 August 2003 ! @set UPDATED-MONTH August 2003 ! @set EDITION 1.4 ! @set VERSION 1.4 diff -x.info* -rc2P gsl-1.3/eigen/ChangeLog gsl-1.4/eigen/ChangeLog *** gsl-1.3/eigen/ChangeLog Sat Nov 16 19:06:01 2002 --- gsl-1.4/eigen/ChangeLog Thu Jan 2 18:20:07 2003 *************** *** 1,2 **** --- 1,12 ---- + 2003-01-02 Brian Gough + + * symmv.c (gsl_eigen_symmv): change gsl_isnan to isnan + + * symm.c (gsl_eigen_symm): change gsl_isnan to isnan + + * hermv.c (gsl_eigen_hermv): change gsl_isnan to isnan + + * herm.c (gsl_eigen_herm): change gsl_isnan to isnan + 2002-11-16 Brian Gough diff -x.info* -rc2P gsl-1.3/eigen/Makefile.am gsl-1.4/eigen/Makefile.am *** gsl-1.3/eigen/Makefile.am Wed Aug 28 18:05:45 2002 --- gsl-1.4/eigen/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 11,15 **** TESTS = test ! test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la test_SOURCES = test.c --- 11,15 ---- TESTS = test ! test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/eigen/Makefile.in gsl-1.4/eigen/Makefile.in *** gsl-1.3/eigen/Makefile.in Wed Dec 18 22:38:18 2002 --- gsl-1.4/eigen/Makefile.in Thu Aug 14 12:30:28 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgsleigen.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgsleigen.la *************** *** 97,196 **** TESTS = test ! test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgsleigen_la_LDFLAGS = ! libgsleigen_la_LIBADD = ! libgsleigen_la_OBJECTS = jacobi.lo symm.lo symmv.lo herm.lo hermv.lo \ ! sort.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgsleigen.la ../test/libgsltest.la \ ! ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la \ ! ../matrix/libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../complex/libgslcomplex.la \ ! ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la \ ! ../err/libgslerr.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgsleigen_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps eigen/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,245 ---- TESTS = test ! test_LDADD = libgsleigen.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../utils/libutils.la test_SOURCES = test.c + subdir = eigen + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgsleigen_la_LDFLAGS = ! libgsleigen_la_LIBADD = ! am_libgsleigen_la_OBJECTS = jacobi.lo symm.lo symmv.lo herm.lo hermv.lo \ ! sort.lo ! libgsleigen_la_OBJECTS = $(am_libgsleigen_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgsleigen.la ../test/libgsltest.la \ ! ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ ! ../blas/libgslblas.la ../cblas/libgslcblas.la \ ! ../matrix/libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../complex/libgslcomplex.la \ ! ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la \ ! ../err/libgslerr.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgsleigen_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu eigen/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgsleigen.la: $(libgsleigen_la_OBJECTS) $(libgsleigen_la_DEPENDENCIES) + $(LINK) $(libgsleigen_la_LDFLAGS) $(libgsleigen_la_OBJECTS) $(libgsleigen_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 201,337 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgsleigen.la: $(libgsleigen_la_OBJECTS) $(libgsleigen_la_DEPENDENCIES) ! $(LINK) $(libgsleigen_la_LDFLAGS) $(libgsleigen_la_OBJECTS) $(libgsleigen_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = eigen distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 250,454 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 340,389 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 457,523 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/eigen/herm.c gsl-1.4/eigen/herm.c *** gsl-1.3/eigen/herm.c Sat Nov 16 19:06:01 2002 --- gsl-1.4/eigen/herm.c Fri Jul 25 15:18:10 2003 *************** *** 109,124 **** if (N == 1) ! { ! gsl_complex A00 = gsl_matrix_complex_get (A, 0, 0); ! gsl_vector_set (eval, 0, GSL_REAL(A00)); ! return GSL_SUCCESS; ! } { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_complex_view tau_vec = gsl_vector_complex_view_array (w->tau, N-1); ! gsl_linalg_hermtd_decomp (A, &tau_vec.vector); ! gsl_linalg_hermtd_unpack_T (A, &d_vec.vector, &sd_vec.vector); } --- 109,124 ---- if (N == 1) ! { ! gsl_complex A00 = gsl_matrix_complex_get (A, 0, 0); ! gsl_vector_set (eval, 0, GSL_REAL(A00)); ! return GSL_SUCCESS; ! } { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_complex_view tau_vec = gsl_vector_complex_view_array (w->tau, N-1); ! gsl_linalg_hermtd_decomp (A, &tau_vec.vector); ! gsl_linalg_hermtd_unpack_T (A, &d_vec.vector, &sd_vec.vector); } *************** *** 134,138 **** while (b > 0) { ! if (sd[b - 1] == 0.0 || gsl_isnan(sd[b - 1])) { b--; --- 134,138 ---- while (b > 0) { ! if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) { b--; diff -x.info* -rc2P gsl-1.3/eigen/hermv.c gsl-1.4/eigen/hermv.c *** gsl-1.3/eigen/hermv.c Sat Nov 16 19:06:01 2002 --- gsl-1.4/eigen/hermv.c Fri Jul 25 15:18:10 2003 *************** *** 146,163 **** if (N == 1) ! { ! gsl_complex A00 = gsl_matrix_complex_get (A, 0, 0); ! gsl_vector_set (eval, 0, GSL_REAL(A00)); gsl_matrix_complex_set (evec, 0, 0, GSL_COMPLEX_ONE); ! return GSL_SUCCESS; ! } /* Transform the matrix into a symmetric tridiagonal form */ { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_complex_view tau_vec = gsl_vector_complex_view_array (w->tau, N-1); ! gsl_linalg_hermtd_decomp (A, &tau_vec.vector); gsl_linalg_hermtd_unpack (A, &tau_vec.vector, evec, &d_vec.vector, &sd_vec.vector); } --- 146,163 ---- if (N == 1) ! { ! gsl_complex A00 = gsl_matrix_complex_get (A, 0, 0); ! gsl_vector_set (eval, 0, GSL_REAL(A00)); gsl_matrix_complex_set (evec, 0, 0, GSL_COMPLEX_ONE); ! return GSL_SUCCESS; ! } /* Transform the matrix into a symmetric tridiagonal form */ { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_complex_view tau_vec = gsl_vector_complex_view_array (w->tau, N-1); ! gsl_linalg_hermtd_decomp (A, &tau_vec.vector); gsl_linalg_hermtd_unpack (A, &tau_vec.vector, evec, &d_vec.vector, &sd_vec.vector); } *************** *** 174,178 **** while (b > 0) { ! if (sd[b - 1] == 0.0 || gsl_isnan(sd[b - 1])) { b--; --- 174,178 ---- while (b > 0) { ! if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) { b--; diff -x.info* -rc2P gsl-1.3/eigen/jacobi.c gsl-1.4/eigen/jacobi.c *** gsl-1.3/eigen/jacobi.c Mon Nov 19 21:39:35 2001 --- gsl-1.4/eigen/jacobi.c Fri Jul 25 15:18:10 2003 *************** *** 122,131 **** const REAL d_ip = gsl_vector_get(eval, ip); const REAL d_iq = gsl_vector_get(eval, iq); ! const REAL a_ipiq = gsl_matrix_get(a, ip, iq); g = 100.0 * fabs(a_ipiq); if( i > 4 && fabs(d_ip)+g == fabs(d_ip) && fabs(d_iq)+g == fabs(d_iq) ! ) { gsl_matrix_set(a, ip, iq, 0.0); } --- 122,131 ---- const REAL d_ip = gsl_vector_get(eval, ip); const REAL d_iq = gsl_vector_get(eval, iq); ! const REAL a_ipiq = gsl_matrix_get(a, ip, iq); g = 100.0 * fabs(a_ipiq); if( i > 4 && fabs(d_ip)+g == fabs(d_ip) && fabs(d_iq)+g == fabs(d_iq) ! ) { gsl_matrix_set(a, ip, iq, 0.0); } *************** *** 147,153 **** z[ip] -= h; z[iq] += h; ! gsl_vector_set(eval, ip, d_ip - h); ! gsl_vector_set(eval, iq, d_iq + h); ! gsl_matrix_set(a, ip, iq, 0.0); for(j=0; j 0) ! sd[k - 1] = bk1; ! if (k < n - 2) ! sd[k + 1] = bp; ! x = bk; ! z = zk; } } --- 139,173 ---- { ! double bk1 = c * bk - s * zk; ! double ap1 = c * (c * ap - s * bp) + s * (s * aq - c * bp); ! double bp1 = c * (s * ap + c * bp) - s * (s * bp + c * aq); ! double zp1 = -s * bq; ! double aq1 = s * (s * ap + c * bp) + c * (s * bp + c * aq); ! double bq1 = c * bq; ! ak = ap1; ! bk = bp1; ! zk = zp1; ! ap = aq1; ! bp = bq1; ! if (k < n - 2) ! aq = d[k + 2]; ! if (k < n - 3) ! bq = sd[k + 2]; ! d[k] = ak; ! if (k > 0) ! sd[k - 1] = bk1; ! if (k < n - 2) ! sd[k + 1] = bp; ! x = bk; ! z = zk; } } diff -x.info* -rc2P gsl-1.3/eigen/sort.c gsl-1.4/eigen/sort.c *** gsl-1.3/eigen/sort.c Mon Nov 19 21:39:35 2001 --- gsl-1.4/eigen/sort.c Fri Jul 25 15:18:10 2003 *************** *** 46,95 **** for (i = 0; i < N - 1; i++) ! { ! size_t j; ! size_t k = i; ! ! double ek = gsl_vector_get (eval, i); ! ! /* search for something to swap */ ! for (j = i + 1; j < N; j++) ! { ! int test; ! const double ej = gsl_vector_get (eval, j); ! switch (sort_type) ! { case GSL_EIGEN_SORT_VAL_ASC: ! test = (ej < ek); ! break; ! case GSL_EIGEN_SORT_VAL_DESC: ! test = (ej > ek); ! break; ! case GSL_EIGEN_SORT_ABS_ASC: ! test = (fabs (ej) < fabs (ek)); ! break; ! case GSL_EIGEN_SORT_ABS_DESC: ! test = (fabs (ej) > fabs (ek)); ! break; default: GSL_ERROR ("unrecognized sort type", GSL_EINVAL); ! } ! if (test) ! { ! k = j; ! ek = ej; ! } ! } ! ! if (k != i) ! { ! /* swap eigenvalues */ ! gsl_vector_swap_elements (eval, i, k); ! /* swap eigenvectors */ gsl_matrix_swap_columns (evec, i, k); ! } ! } return GSL_SUCCESS; --- 46,95 ---- for (i = 0; i < N - 1; i++) ! { ! size_t j; ! size_t k = i; ! ! double ek = gsl_vector_get (eval, i); ! ! /* search for something to swap */ ! for (j = i + 1; j < N; j++) ! { ! int test; ! const double ej = gsl_vector_get (eval, j); ! switch (sort_type) ! { case GSL_EIGEN_SORT_VAL_ASC: ! test = (ej < ek); ! break; ! case GSL_EIGEN_SORT_VAL_DESC: ! test = (ej > ek); ! break; ! case GSL_EIGEN_SORT_ABS_ASC: ! test = (fabs (ej) < fabs (ek)); ! break; ! case GSL_EIGEN_SORT_ABS_DESC: ! test = (fabs (ej) > fabs (ek)); ! break; default: GSL_ERROR ("unrecognized sort type", GSL_EINVAL); ! } ! if (test) ! { ! k = j; ! ek = ej; ! } ! } ! ! if (k != i) ! { ! /* swap eigenvalues */ ! gsl_vector_swap_elements (eval, i, k); ! /* swap eigenvectors */ gsl_matrix_swap_columns (evec, i, k); ! } ! } return GSL_SUCCESS; *************** *** 116,165 **** for (i = 0; i < N - 1; i++) ! { ! size_t j; ! size_t k = i; ! ! double ek = gsl_vector_get (eval, i); ! ! /* search for something to swap */ ! for (j = i + 1; j < N; j++) ! { ! int test; ! const double ej = gsl_vector_get (eval, j); ! switch (sort_type) ! { case GSL_EIGEN_SORT_VAL_ASC: ! test = (ej < ek); ! break; ! case GSL_EIGEN_SORT_VAL_DESC: ! test = (ej > ek); ! break; ! case GSL_EIGEN_SORT_ABS_ASC: ! test = (fabs (ej) < fabs (ek)); ! break; ! case GSL_EIGEN_SORT_ABS_DESC: ! test = (fabs (ej) > fabs (ek)); ! break; default: GSL_ERROR ("unrecognized sort type", GSL_EINVAL); ! } ! if (test) ! { ! k = j; ! ek = ej; ! } ! } ! ! if (k != i) ! { ! /* swap eigenvalues */ ! gsl_vector_swap_elements (eval, i, k); ! /* swap eigenvectors */ gsl_matrix_complex_swap_columns (evec, i, k); ! } ! } return GSL_SUCCESS; --- 116,165 ---- for (i = 0; i < N - 1; i++) ! { ! size_t j; ! size_t k = i; ! ! double ek = gsl_vector_get (eval, i); ! ! /* search for something to swap */ ! for (j = i + 1; j < N; j++) ! { ! int test; ! const double ej = gsl_vector_get (eval, j); ! switch (sort_type) ! { case GSL_EIGEN_SORT_VAL_ASC: ! test = (ej < ek); ! break; ! case GSL_EIGEN_SORT_VAL_DESC: ! test = (ej > ek); ! break; ! case GSL_EIGEN_SORT_ABS_ASC: ! test = (fabs (ej) < fabs (ek)); ! break; ! case GSL_EIGEN_SORT_ABS_DESC: ! test = (fabs (ej) > fabs (ek)); ! break; default: GSL_ERROR ("unrecognized sort type", GSL_EINVAL); ! } ! if (test) ! { ! k = j; ! ek = ej; ! } ! } ! ! if (k != i) ! { ! /* swap eigenvalues */ ! gsl_vector_swap_elements (eval, i, k); ! /* swap eigenvectors */ gsl_matrix_complex_swap_columns (evec, i, k); ! } ! } return GSL_SUCCESS; diff -x.info* -rc2P gsl-1.3/eigen/symm.c gsl-1.4/eigen/symm.c *** gsl-1.3/eigen/symm.c Sat Nov 16 19:06:01 2002 --- gsl-1.4/eigen/symm.c Fri Jul 25 15:18:10 2003 *************** *** 43,47 **** { GSL_ERROR_NULL ("matrix dimension must be positive integer", ! GSL_EINVAL); } --- 43,47 ---- { GSL_ERROR_NULL ("matrix dimension must be positive integer", ! GSL_EINVAL); } *************** *** 84,88 **** int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, ! gsl_eigen_symm_workspace * w) { if (A->size1 != A->size2) --- 84,88 ---- int gsl_eigen_symm (gsl_matrix * A, gsl_vector * eval, ! gsl_eigen_symm_workspace * w) { if (A->size1 != A->size2) *************** *** 105,113 **** if (N == 1) ! { ! double A00 = gsl_matrix_get (A, 0, 0); ! gsl_vector_set (eval, 0, A00); ! return GSL_SUCCESS; ! } /* use sd as the temporary workspace for the decomposition, --- 105,113 ---- if (N == 1) ! { ! double A00 = gsl_matrix_get (A, 0, 0); ! gsl_vector_set (eval, 0, A00); ! return GSL_SUCCESS; ! } /* use sd as the temporary workspace for the decomposition, *************** *** 116,123 **** { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_view tau = gsl_vector_view_array (sd, N - 1); ! gsl_linalg_symmtd_decomp (A, &tau.vector); gsl_linalg_symmtd_unpack_T (A, &d_vec.vector, &sd_vec.vector); } --- 116,123 ---- { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_view tau = gsl_vector_view_array (sd, N - 1); ! gsl_linalg_symmtd_decomp (A, &tau.vector); gsl_linalg_symmtd_unpack_T (A, &d_vec.vector, &sd_vec.vector); } *************** *** 134,138 **** while (b > 0) { ! if (sd[b - 1] == 0.0 || gsl_isnan(sd[b - 1])) { b--; --- 134,138 ---- while (b > 0) { ! if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) { b--; diff -x.info* -rc2P gsl-1.3/eigen/symmv.c gsl-1.4/eigen/symmv.c *** gsl-1.3/eigen/symmv.c Sat Nov 16 19:06:01 2002 --- gsl-1.4/eigen/symmv.c Fri Jul 25 15:18:10 2003 *************** *** 122,131 **** if (N == 1) ! { ! double A00 = gsl_matrix_get (A, 0, 0); ! gsl_vector_set (eval, 0, A00); gsl_matrix_set (evec, 0, 0, 1.0); ! return GSL_SUCCESS; ! } /* use sd as the temporary workspace for the decomposition when --- 122,131 ---- if (N == 1) ! { ! double A00 = gsl_matrix_get (A, 0, 0); ! gsl_vector_set (eval, 0, A00); gsl_matrix_set (evec, 0, 0, 1.0); ! return GSL_SUCCESS; ! } /* use sd as the temporary workspace for the decomposition when *************** *** 133,140 **** { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_view tau = gsl_vector_view_array (sd, N - 1); ! gsl_linalg_symmtd_decomp (A, &tau.vector); gsl_linalg_symmtd_unpack (A, &tau.vector, evec, &d_vec.vector, &sd_vec.vector); } --- 133,140 ---- { ! gsl_vector_view d_vec = gsl_vector_view_array (d, N); ! gsl_vector_view sd_vec = gsl_vector_view_array (sd, N - 1); ! gsl_vector_view tau = gsl_vector_view_array (sd, N - 1); ! gsl_linalg_symmtd_decomp (A, &tau.vector); gsl_linalg_symmtd_unpack (A, &tau.vector, evec, &d_vec.vector, &sd_vec.vector); } *************** *** 151,155 **** while (b > 0) { ! if (sd[b - 1] == 0.0 || gsl_isnan(sd[b - 1])) { b--; --- 151,155 ---- while (b > 0) { ! if (sd[b - 1] == 0.0 || isnan(sd[b - 1])) { b--; diff -x.info* -rc2P gsl-1.3/err/ChangeLog gsl-1.4/err/ChangeLog *** gsl-1.3/err/ChangeLog Sat Apr 27 20:28:35 2002 --- gsl-1.4/err/ChangeLog Tue Jun 17 14:41:56 2003 *************** *** 1,2 **** --- 1,6 ---- + 2003-06-17 Brian Gough + + * warn.c: removed, the functions are not used + Sat Apr 27 21:27:32 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/err/Makefile.am gsl-1.4/err/Makefile.am *** gsl-1.3/err/Makefile.am Fri May 5 10:18:04 2000 --- gsl-1.4/err/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 3,7 **** pkginclude_HEADERS = gsl_errno.h gsl_message.h ! libgslerr_la_SOURCES = error.c stream.c message.c strerror.c warn.c check_PROGRAMS = test --- 3,7 ---- pkginclude_HEADERS = gsl_errno.h gsl_message.h ! libgslerr_la_SOURCES = error.c stream.c message.c strerror.c check_PROGRAMS = test *************** *** 10,12 **** test_SOURCES = test.c ! test_LDADD = libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 10,12 ---- test_SOURCES = test.c ! test_LDADD = libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/err/Makefile.in gsl-1.4/err/Makefile.in *** gsl-1.3/err/Makefile.in Wed Dec 18 22:36:45 2002 --- gsl-1.4/err/Makefile.in Thu Aug 14 12:31:17 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,93 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslerr.la pkginclude_HEADERS = gsl_errno.h gsl_message.h ! libgslerr_la_SOURCES = error.c stream.c message.c strerror.c warn.c check_PROGRAMS = test --- 60,149 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslerr.la pkginclude_HEADERS = gsl_errno.h gsl_message.h ! libgslerr_la_SOURCES = error.c stream.c message.c strerror.c check_PROGRAMS = test *************** *** 96,189 **** test_SOURCES = test.c ! test_LDADD = libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslerr_la_LDFLAGS = ! libgslerr_la_LIBADD = ! libgslerr_la_OBJECTS = error.lo stream.lo message.lo strerror.lo \ ! warn.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslerr_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps err/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 152,236 ---- test_SOURCES = test.c ! test_LDADD = libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = err ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslerr_la_LDFLAGS = ! libgslerr_la_LIBADD = ! am_libgslerr_la_OBJECTS = error.lo stream.lo message.lo strerror.lo ! libgslerr_la_OBJECTS = $(am_libgslerr_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslerr.la ../test/libgsltest.la \ ! ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO SOURCES = $(libgslerr_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu err/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslerr.la: $(libgslerr_la_OBJECTS) $(libgslerr_la_DEPENDENCIES) + $(LINK) $(libgslerr_la_LDFLAGS) $(libgslerr_la_OBJECTS) $(libgslerr_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 194,330 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslerr.la: $(libgslerr_la_OBJECTS) $(libgslerr_la_DEPENDENCIES) ! $(LINK) $(libgslerr_la_LDFLAGS) $(libgslerr_la_OBJECTS) $(libgslerr_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = err distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 241,445 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 333,382 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 448,514 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/err/gsl_errno.h gsl-1.4/err/gsl_errno.h *** gsl-1.3/err/gsl_errno.h Mon Jun 10 13:08:53 2002 --- gsl-1.4/err/gsl_errno.h Fri Jul 25 15:18:18 2003 *************** *** 76,94 **** void gsl_error (const char * reason, const char * file, int line, ! int gsl_errno); ! ! void gsl_warning (const char * reason, const char * file, int line, ! int gsl_errno) ; void gsl_stream_printf (const char *label, const char *file, ! int line, const char *reason); const char * gsl_strerror (const int gsl_errno); typedef void gsl_error_handler_t (const char * reason, const char * file, ! int line, int gsl_errno); typedef void gsl_stream_handler_t (const char * label, const char * file, ! int line, const char * reason); gsl_error_handler_t * --- 76,91 ---- void gsl_error (const char * reason, const char * file, int line, ! int gsl_errno); void gsl_stream_printf (const char *label, const char *file, ! int line, const char *reason); const char * gsl_strerror (const int gsl_errno); typedef void gsl_error_handler_t (const char * reason, const char * file, ! int line, int gsl_errno); typedef void gsl_stream_handler_t (const char * label, const char * file, ! int line, const char * reason); gsl_error_handler_t * *************** *** 131,160 **** #define GSL_ERROR_NULL(reason, gsl_errno) GSL_ERROR_VAL(reason, gsl_errno, 0) - - - /* GSL library code can occasionally generate warnings, which are not - intended to be fatal. You can compile a version of the library with - warnings turned off globally by defining the preprocessor constant - GSL_WARNINGS_OFF. This turns off the warnings, but does not disable - error handling in any way or turn off error messages. - - GSL_WARNING() is not intended for use in client code -- use - GSL_MESSAGE() instead. */ - - #ifdef GSL_WARNINGS_OFF /* throw away warnings */ - #define GSL_WARNING(warning, gsl_errno) \ - do { } while(0) - #else /* output all warnings */ - #define GSL_WARNING(warning, gsl_errno) \ - do { \ - gsl_warning (warning, __FILE__, __LINE__, gsl_errno) ; \ - } while (0) - #endif - - /* Warnings can also be turned off at runtime by setting the variable - gsl_warnings_off to a non-zero value */ - - GSL_VAR int gsl_warnings_off ; - /* Sometimes you have several status results returned from --- 128,131 ---- diff -x.info* -rc2P gsl-1.3/err/gsl_message.h gsl-1.4/err/gsl_message.h *** gsl-1.3/err/gsl_message.h Mon Jun 10 13:09:02 2002 --- gsl-1.4/err/gsl_message.h Fri Jul 25 15:18:18 2003 *************** *** 43,47 **** void gsl_message(const char * message, const char * file, int line, ! unsigned int mask); #ifndef GSL_MESSAGE_MASK --- 43,47 ---- void gsl_message(const char * message, const char * file, int line, ! unsigned int mask); #ifndef GSL_MESSAGE_MASK *************** *** 70,74 **** do { \ if (mask & GSL_MESSAGE_MASK) \ ! gsl_message (message, __FILE__, __LINE__, mask) ; \ } while (0) #endif --- 70,74 ---- do { \ if (mask & GSL_MESSAGE_MASK) \ ! gsl_message (message, __FILE__, __LINE__, mask) ; \ } while (0) #endif diff -x.info* -rc2P gsl-1.3/err/message.c gsl-1.4/err/message.c *** gsl-1.3/err/message.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/err/message.c Fri Jul 25 15:18:10 2003 *************** *** 30,34 **** void gsl_message (const char * reason, const char * file, int line, ! unsigned int mask) { if (mask & gsl_message_mask) --- 30,34 ---- void gsl_message (const char * reason, const char * file, int line, ! unsigned int mask) { if (mask & gsl_message_mask) diff -x.info* -rc2P gsl-1.3/err/stream.c gsl-1.4/err/stream.c *** gsl-1.3/err/stream.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/err/stream.c Fri Jul 25 15:18:10 2003 *************** *** 31,35 **** void gsl_stream_printf (const char *label, const char *file, int line, ! const char *reason) { if (gsl_stream == NULL) --- 31,35 ---- void gsl_stream_printf (const char *label, const char *file, int line, ! const char *reason) { if (gsl_stream == NULL) diff -x.info* -rc2P gsl-1.3/err/test.c gsl-1.4/err/test.c *** gsl-1.3/err/test.c Tue Jun 12 18:14:21 2001 --- gsl-1.4/err/test.c Fri Jul 25 15:18:10 2003 *************** *** 86,96 **** int status = 0; for (j = 0; j < n; j++) ! { ! if (j != i) ! status |= (errors[i].number == errors[j].number); ! } gsl_test (status, "%s is distinct from other error values", ! errors[i].name); } --- 86,96 ---- int status = 0; for (j = 0; j < n; j++) ! { ! if (j != i) ! status |= (errors[i].number == errors[j].number); ! } gsl_test (status, "%s is distinct from other error values", ! errors[i].name); } *************** *** 100,112 **** int e1 = errors[i].number ; for (j = 0; j < n; j++) ! { ! if (j != i) ! { ! int e2 = errors[j].number; ! status |= (gsl_strerror(e1) == gsl_strerror(e2)) ; ! } ! } gsl_test (status, "%s has a distinct error message", ! errors[i].name); } --- 100,112 ---- int e1 = errors[i].number ; for (j = 0; j < n; j++) ! { ! if (j != i) ! { ! int e2 = errors[j].number; ! status |= (gsl_strerror(e1) == gsl_strerror(e2)) ; ! } ! } gsl_test (status, "%s has a distinct error message", ! errors[i].name); } Only in gsl-1.3/err: warn.c diff -x.info* -rc2P gsl-1.3/fft/Makefile.am gsl-1.4/fft/Makefile.am *** gsl-1.3/fft/Makefile.am Sun Aug 26 19:53:02 2001 --- gsl-1.4/fft/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 15,21 **** test_SOURCES = test.c signals.c ! test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! #errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ! #benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la --- 15,21 ---- test_SOURCES = test.c signals.c ! test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! #errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! #benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la diff -x.info* -rc2P gsl-1.3/fft/Makefile.in gsl-1.4/fft/Makefile.in *** gsl-1.3/fft/Makefile.in Wed Dec 18 22:39:01 2002 --- gsl-1.4/fft/Makefile.in Thu Aug 14 12:30:06 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslfft.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslfft.la *************** *** 101,193 **** test_SOURCES = test.c signals.c ! test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslfft_la_LDFLAGS = ! libgslfft_la_LIBADD = ! libgslfft_la_OBJECTS = dft.lo fft.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) signals.$(OBJEXT) ! test_DEPENDENCIES = libgslfft.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslfft_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps fft/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 157,242 ---- test_SOURCES = test.c signals.c ! test_LDADD = libgslfft.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = fft ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslfft_la_LDFLAGS = ! libgslfft_la_LIBADD = ! am_libgslfft_la_OBJECTS = dft.lo fft.lo ! libgslfft_la_OBJECTS = $(am_libgslfft_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) signals.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslfft.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslfft_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu fft/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslfft.la: $(libgslfft_la_OBJECTS) $(libgslfft_la_DEPENDENCIES) + $(LINK) $(libgslfft_la_LDFLAGS) $(libgslfft_la_OBJECTS) $(libgslfft_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 198,334 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslfft.la: $(libgslfft_la_OBJECTS) $(libgslfft_la_DEPENDENCIES) ! $(LINK) $(libgslfft_la_LDFLAGS) $(libgslfft_la_OBJECTS) $(libgslfft_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = fft distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 247,451 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 337,390 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean - #errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la - #benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 454,524 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + #errs_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la + #benchmark_LDADD = libgslfft.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/fft/bitreverse.c gsl-1.4/fft/bitreverse.c *** gsl-1.3/fft/bitreverse.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/fft/bitreverse.c Fri Jul 25 15:18:10 2003 *************** *** 26,32 **** static int FUNCTION(fft_complex,bitreverse_order) (BASE data[], ! const size_t stride, ! const size_t n, ! size_t logn) { /* This is the Goldrader bit-reversal algorithm */ --- 26,32 ---- static int FUNCTION(fft_complex,bitreverse_order) (BASE data[], ! const size_t stride, ! const size_t n, ! size_t logn) { /* This is the Goldrader bit-reversal algorithm */ *************** *** 42,59 **** if (i < j) ! { ! const BASE tmp_real = REAL(data,stride,i); ! const BASE tmp_imag = IMAG(data,stride,i); ! REAL(data,stride,i) = REAL(data,stride,j); ! IMAG(data,stride,i) = IMAG(data,stride,j); ! REAL(data,stride,j) = tmp_real; ! IMAG(data,stride,j) = tmp_imag; ! } while (k <= j) ! { ! j = j - k ; ! k = k / 2 ; ! } j += k ; --- 42,59 ---- if (i < j) ! { ! const BASE tmp_real = REAL(data,stride,i); ! const BASE tmp_imag = IMAG(data,stride,i); ! REAL(data,stride,i) = REAL(data,stride,j); ! IMAG(data,stride,i) = IMAG(data,stride,j); ! REAL(data,stride,j) = tmp_real; ! IMAG(data,stride,j) = tmp_imag; ! } while (k <= j) ! { ! j = j - k ; ! k = k / 2 ; ! } j += k ; *************** *** 66,72 **** static int FUNCTION(fft_real,bitreverse_order) (BASE data[], ! const size_t stride, ! const size_t n, ! size_t logn) { /* This is the Goldrader bit-reversal algorithm */ --- 66,72 ---- static int FUNCTION(fft_real,bitreverse_order) (BASE data[], ! const size_t stride, ! const size_t n, ! size_t logn) { /* This is the Goldrader bit-reversal algorithm */ *************** *** 82,96 **** if (i < j) ! { ! const BASE tmp = VECTOR(data,stride,i); ! VECTOR(data,stride,i) = VECTOR(data,stride,j); ! VECTOR(data,stride,j) = tmp; ! } while (k <= j) ! { ! j = j - k ; ! k = k / 2 ; ! } j += k ; --- 82,96 ---- if (i < j) ! { ! const BASE tmp = VECTOR(data,stride,i); ! VECTOR(data,stride,i) = VECTOR(data,stride,j); ! VECTOR(data,stride,j) = tmp; ! } while (k <= j) ! { ! j = j - k ; ! k = k / 2 ; ! } j += k ; diff -x.info* -rc2P gsl-1.3/fft/c_init.c gsl-1.4/fft/c_init.c *** gsl-1.3/fft/c_init.c Tue Jul 24 13:27:06 2001 --- gsl-1.4/fft/c_init.c Fri Jul 25 15:18:10 2003 *************** *** 49,53 **** GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", ! GSL_ENOMEM, 0); } --- 49,53 ---- GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", ! GSL_ENOMEM, 0); } *************** *** 61,65 **** free (wavetable->trig); ! free (wavetable); GSL_ERROR_VAL ("factorization failed", GSL_EFACTOR, 0); --- 61,65 ---- free (wavetable->trig); ! free (wavetable); GSL_ERROR_VAL ("factorization failed", GSL_EFACTOR, 0); *************** *** 77,100 **** const size_t factor = wavetable->factor[i]; wavetable->twiddle[i] = wavetable->trig + t; ! product_1 = product; /* product_1 = p_(i-1) */ product *= factor; q = n / product; for (j = 1; j < factor; j++) ! { ! size_t k; ! size_t m = 0; ! for (k = 1; k <= q; k++) ! { ! double theta; ! m = m + j * product_1; ! m = m % n; ! theta = d_theta * m; /* d_theta*j*k*p_(i-1) */ ! GSL_REAL(wavetable->trig[t]) = cos (theta); ! GSL_IMAG(wavetable->trig[t]) = sin (theta); ! ! t++; ! } ! } } --- 77,100 ---- const size_t factor = wavetable->factor[i]; wavetable->twiddle[i] = wavetable->trig + t; ! product_1 = product; /* product_1 = p_(i-1) */ product *= factor; q = n / product; for (j = 1; j < factor; j++) ! { ! size_t k; ! size_t m = 0; ! for (k = 1; k <= q; k++) ! { ! double theta; ! m = m + j * product_1; ! m = m % n; ! theta = d_theta * m; /* d_theta*j*k*p_(i-1) */ ! GSL_REAL(wavetable->trig[t]) = cos (theta); ! GSL_IMAG(wavetable->trig[t]) = sin (theta); ! ! t++; ! } ! } } diff -x.info* -rc2P gsl-1.3/fft/c_main.c gsl-1.4/fft/c_main.c *** gsl-1.3/fft/c_main.c Tue Jul 24 13:26:13 2001 --- gsl-1.4/fft/c_main.c Fri Jul 25 15:18:10 2003 *************** *** 18,31 **** */ int FUNCTION(gsl_fft_complex,forward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, TYPE(gsl_fft_complex_workspace) * work) { gsl_fft_direction sign = forward; int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, ! wavetable, work, sign); return status; } --- 18,33 ---- */ + #include "c_pass.h" + int FUNCTION(gsl_fft_complex,forward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, TYPE(gsl_fft_complex_workspace) * work) { gsl_fft_direction sign = forward; int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, ! wavetable, work, sign); return status; } *************** *** 33,44 **** int FUNCTION(gsl_fft_complex,backward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, TYPE(gsl_fft_complex_workspace) * work) { gsl_fft_direction sign = backward; int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, ! wavetable, work, sign); return status; } --- 35,46 ---- int FUNCTION(gsl_fft_complex,backward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, TYPE(gsl_fft_complex_workspace) * work) { gsl_fft_direction sign = backward; int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, ! wavetable, work, sign); return status; } *************** *** 46,57 **** int FUNCTION(gsl_fft_complex,inverse) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, TYPE(gsl_fft_complex_workspace) * work) { gsl_fft_direction sign = backward; int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, ! wavetable, work, sign); if (status) --- 48,59 ---- int FUNCTION(gsl_fft_complex,inverse) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, TYPE(gsl_fft_complex_workspace) * work) { gsl_fft_direction sign = backward; int status = FUNCTION(gsl_fft_complex,transform) (data, stride, n, ! wavetable, work, sign); if (status) *************** *** 67,72 **** for (i = 0; i < n; i++) { ! REAL(data,stride,i) *= norm; ! IMAG(data,stride,i) *= norm; } } --- 69,74 ---- for (i = 0; i < n; i++) { ! REAL(data,stride,i) *= norm; ! IMAG(data,stride,i) *= norm; } } *************** *** 76,84 **** int FUNCTION(gsl_fft_complex,transform) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, ! TYPE(gsl_fft_complex_workspace) * work, ! const gsl_fft_direction sign) { const size_t nf = wavetable->nf; --- 78,86 ---- int FUNCTION(gsl_fft_complex,transform) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_complex_wavetable) * wavetable, ! TYPE(gsl_fft_complex_workspace) * work, ! const gsl_fft_direction sign) { const size_t nf = wavetable->nf; *************** *** 107,111 **** if (n == 1) ! { /* FFT of 1 data point is the identity */ return 0; } --- 109,113 ---- if (n == 1) ! { /* FFT of 1 data point is the identity */ return 0; } *************** *** 128,218 **** if (state == 0) ! { ! in = data; ! istride = stride; ! out = scratch; ! ostride = 1; ! state = 1; ! } else ! { ! in = scratch; ! istride = 1; ! out = data; ! ostride = stride; ! state = 0; ! } if (factor == 2) ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_complex,pass_2) (in, istride, out, ostride, sign, ! product, n, twiddle1); ! } else if (factor == 3) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! FUNCTION(fft_complex,pass_3) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2); ! } else if (factor == 4) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! FUNCTION(fft_complex,pass_4) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3); ! } else if (factor == 5) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! twiddle4 = twiddle3 + q; ! FUNCTION(fft_complex,pass_5) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4); ! } else if (factor == 6) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! twiddle4 = twiddle3 + q; ! twiddle5 = twiddle4 + q; ! FUNCTION(fft_complex,pass_6) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4, twiddle5); ! } else if (factor == 7) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! twiddle4 = twiddle3 + q; ! twiddle5 = twiddle4 + q; ! twiddle6 = twiddle5 + q; ! FUNCTION(fft_complex,pass_7) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4, twiddle5, ! twiddle6); ! } else ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_complex,pass_n) (in, istride, out, ostride, sign, ! factor, product, n, twiddle1); ! } } ! if (state == 1) /* copy results back from scratch to data */ { for (i = 0; i < n; i++) ! { ! REAL(data,stride,i) = REAL(scratch,1,i) ; ! IMAG(data,stride,i) = IMAG(scratch,1,i) ; ! } } --- 130,220 ---- if (state == 0) ! { ! in = data; ! istride = stride; ! out = scratch; ! ostride = 1; ! state = 1; ! } else ! { ! in = scratch; ! istride = 1; ! out = data; ! ostride = stride; ! state = 0; ! } if (factor == 2) ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_complex,pass_2) (in, istride, out, ostride, sign, ! product, n, twiddle1); ! } else if (factor == 3) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! FUNCTION(fft_complex,pass_3) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2); ! } else if (factor == 4) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! FUNCTION(fft_complex,pass_4) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3); ! } else if (factor == 5) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! twiddle4 = twiddle3 + q; ! FUNCTION(fft_complex,pass_5) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4); ! } else if (factor == 6) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! twiddle4 = twiddle3 + q; ! twiddle5 = twiddle4 + q; ! FUNCTION(fft_complex,pass_6) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4, twiddle5); ! } else if (factor == 7) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + q; ! twiddle3 = twiddle2 + q; ! twiddle4 = twiddle3 + q; ! twiddle5 = twiddle4 + q; ! twiddle6 = twiddle5 + q; ! FUNCTION(fft_complex,pass_7) (in, istride, out, ostride, sign, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4, twiddle5, ! twiddle6); ! } else ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_complex,pass_n) (in, istride, out, ostride, sign, ! factor, product, n, twiddle1); ! } } ! if (state == 1) /* copy results back from scratch to data */ { for (i = 0; i < n; i++) ! { ! REAL(data,stride,i) = REAL(scratch,1,i) ; ! IMAG(data,stride,i) = IMAG(scratch,1,i) ; ! } } diff -x.info* -rc2P gsl-1.3/fft/c_pass.h gsl-1.4/fft/c_pass.h *** gsl-1.3/fft/c_pass.h Tue Jul 24 13:28:22 2001 --- gsl-1.4/fft/c_pass.h Fri Jul 25 15:18:18 2003 *************** *** 20,106 **** static int FUNCTION(fft_complex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); static int FUNCTION(fft_complex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]); static int FUNCTION(fft_complex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]); static int FUNCTION(fft_complex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]); static int FUNCTION(fft_complex,pass_6) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[]); static int FUNCTION(fft_complex,pass_7) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[], ! const TYPE(gsl_complex) twiddle6[]); static int FUNCTION(fft_complex,pass_n) (BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); --- 20,106 ---- static int FUNCTION(fft_complex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); static int FUNCTION(fft_complex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]); static int FUNCTION(fft_complex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]); static int FUNCTION(fft_complex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]); static int FUNCTION(fft_complex,pass_6) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[]); static int FUNCTION(fft_complex,pass_7) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[], ! const TYPE(gsl_complex) twiddle6[]); static int FUNCTION(fft_complex,pass_n) (BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); diff -x.info* -rc2P gsl-1.3/fft/c_pass_2.c gsl-1.4/fft/c_pass_2.c *** gsl-1.3/fft/c_pass_2.c Tue Jul 24 13:28:57 2001 --- gsl-1.4/fft/c_pass_2.c Fri Jul 25 15:18:10 2003 *************** *** 20,30 **** static int FUNCTION(fft_complex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t i = 0, j = 0; --- 20,30 ---- static int FUNCTION(fft_complex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t i = 0, j = 0; *************** *** 42,96 **** if (k == 0) ! { ! w_real = 1.0; ! w_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w_real = GSL_REAL(twiddle[k - 1]); ! w_imag = GSL_IMAG(twiddle[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w_real = GSL_REAL(twiddle[k - 1]); ! w_imag = -GSL_IMAG(twiddle[k - 1]); ! } ! } for (k1 = 0; k1 < product_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! ! /* compute x = W(2) z */ ! ! /* x0 = z0 + z1 */ ! const ATOMIC x0_real = z0_real + z1_real; ! const ATOMIC x0_imag = z0_imag + z1_imag; ! ! /* x1 = z0 - z1 */ ! const ATOMIC x1_real = z0_real - z1_real; ! const ATOMIC x1_imag = z0_imag - z1_imag; ! ! /* apply twiddle factors */ ! ! /* out0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* out1 = w * x1 */ ! REAL(out,ostride,j+product_1) = w_real * x1_real - w_imag * x1_imag; ! IMAG(out,ostride,j+product_1) = w_real * x1_imag + w_imag * x1_real; ! ! i++; ! j++; ! } j += jump; } --- 42,96 ---- if (k == 0) ! { ! w_real = 1.0; ! w_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w_real = GSL_REAL(twiddle[k - 1]); ! w_imag = GSL_IMAG(twiddle[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w_real = GSL_REAL(twiddle[k - 1]); ! w_imag = -GSL_IMAG(twiddle[k - 1]); ! } ! } for (k1 = 0; k1 < product_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! ! /* compute x = W(2) z */ ! ! /* x0 = z0 + z1 */ ! const ATOMIC x0_real = z0_real + z1_real; ! const ATOMIC x0_imag = z0_imag + z1_imag; ! ! /* x1 = z0 - z1 */ ! const ATOMIC x1_real = z0_real - z1_real; ! const ATOMIC x1_imag = z0_imag - z1_imag; ! ! /* apply twiddle factors */ ! ! /* out0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* out1 = w * x1 */ ! REAL(out,ostride,j+product_1) = w_real * x1_real - w_imag * x1_imag; ! IMAG(out,ostride,j+product_1) = w_real * x1_imag + w_imag * x1_real; ! ! i++; ! j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_pass_3.c gsl-1.4/fft/c_pass_3.c *** gsl-1.3/fft/c_pass_3.c Tue Jul 24 13:29:09 2001 --- gsl-1.4/fft/c_pass_3.c Fri Jul 25 15:18:10 2003 *************** *** 20,31 **** static int FUNCTION(fft_complex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) * twiddle1, ! const TYPE(gsl_complex) * twiddle2) { size_t i = 0, j = 0; --- 20,31 ---- static int FUNCTION(fft_complex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) * twiddle1, ! const TYPE(gsl_complex) * twiddle2) { size_t i = 0, j = 0; *************** *** 45,125 **** if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! } ! } for (k1 = 0; k1 < product_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! ! /* compute x = W(3) z */ ! ! /* t1 = z1 + z2 */ ! const ATOMIC t1_real = z1_real + z2_real; ! const ATOMIC t1_imag = z1_imag + z2_imag; ! ! /* t2 = z0 - t1/2 */ ! const ATOMIC t2_real = z0_real - t1_real / 2.0; ! const ATOMIC t2_imag = z0_imag - t1_imag / 2.0; ! ! /* t3 = (+/-) sin(pi/3)*(z1 - z2) */ ! const ATOMIC t3_real = ((int) sign) * tau * (z1_real - z2_real); ! const ATOMIC t3_imag = ((int) sign) * tau * (z1_imag - z2_imag); ! ! /* x0 = z0 + t1 */ ! const ATOMIC x0_real = z0_real + t1_real; ! const ATOMIC x0_imag = z0_imag + t1_imag; ! ! /* x1 = t2 + i t3 */ ! const ATOMIC x1_real = t2_real - t3_imag; ! const ATOMIC x1_imag = t2_imag + t3_real; ! ! /* x2 = t2 - i t3 */ ! const ATOMIC x2_real = t2_real + t3_imag; ! const ATOMIC x2_imag = t2_imag - t3_real; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j+product_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j+product_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j+2*product_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*product_1) = w2_real * x2_imag + w2_imag * x2_real; ! i++; j++; ! } j += jump; } --- 45,125 ---- if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! } ! } for (k1 = 0; k1 < product_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! ! /* compute x = W(3) z */ ! ! /* t1 = z1 + z2 */ ! const ATOMIC t1_real = z1_real + z2_real; ! const ATOMIC t1_imag = z1_imag + z2_imag; ! ! /* t2 = z0 - t1/2 */ ! const ATOMIC t2_real = z0_real - t1_real / 2.0; ! const ATOMIC t2_imag = z0_imag - t1_imag / 2.0; ! ! /* t3 = (+/-) sin(pi/3)*(z1 - z2) */ ! const ATOMIC t3_real = ((int) sign) * tau * (z1_real - z2_real); ! const ATOMIC t3_imag = ((int) sign) * tau * (z1_imag - z2_imag); ! ! /* x0 = z0 + t1 */ ! const ATOMIC x0_real = z0_real + t1_real; ! const ATOMIC x0_imag = z0_imag + t1_imag; ! ! /* x1 = t2 + i t3 */ ! const ATOMIC x1_real = t2_real - t3_imag; ! const ATOMIC x1_imag = t2_imag + t3_real; ! ! /* x2 = t2 - i t3 */ ! const ATOMIC x2_real = t2_real + t3_imag; ! const ATOMIC x2_imag = t2_imag - t3_real; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j+product_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j+product_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j+2*product_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*product_1) = w2_real * x2_imag + w2_imag * x2_real; ! i++; j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_pass_4.c gsl-1.4/fft/c_pass_4.c *** gsl-1.3/fft/c_pass_4.c Tue Jul 24 13:29:15 2001 --- gsl-1.4/fft/c_pass_4.c Fri Jul 25 15:18:10 2003 *************** *** 20,32 **** static int FUNCTION(fft_complex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]) { size_t i = 0, j = 0; --- 20,32 ---- static int FUNCTION(fft_complex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]) { size_t i = 0, j = 0; *************** *** 44,145 **** if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! const ATOMIC z3_real = REAL(in,istride,i+3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i+3*m); ! ! /* compute x = W(4) z */ ! ! /* t1 = z0 + z2 */ ! const ATOMIC t1_real = z0_real + z2_real; ! const ATOMIC t1_imag = z0_imag + z2_imag; ! ! /* t2 = z1 + z3 */ ! const ATOMIC t2_real = z1_real + z3_real; ! const ATOMIC t2_imag = z1_imag + z3_imag; ! ! /* t3 = z0 - z2 */ ! const ATOMIC t3_real = z0_real - z2_real; ! const ATOMIC t3_imag = z0_imag - z2_imag; ! ! /* t4 = (+/-) (z1 - z3) */ ! const ATOMIC t4_real = ((int) sign) * (z1_real - z3_real); ! const ATOMIC t4_imag = ((int) sign) * (z1_imag - z3_imag); ! ! /* x0 = t1 + t2 */ ! const ATOMIC x0_real = t1_real + t2_real; ! const ATOMIC x0_imag = t1_imag + t2_imag; ! ! /* x1 = t3 + i t4 */ ! const ATOMIC x1_real = t3_real - t4_imag; ! const ATOMIC x1_imag = t3_imag + t4_real; ! ! /* x2 = t1 - t2 */ ! const ATOMIC x2_real = t1_real - t2_real; ! const ATOMIC x2_imag = t1_imag - t2_imag; ! ! /* x3 = t3 - i t4 */ ! const ATOMIC x3_real = t3_real + t4_imag; ! const ATOMIC x3_imag = t3_imag - t4_real; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out, ostride, j + p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out, ostride, j + p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out, ostride, j + 2 * p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out, ostride, j + 2 * p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out, ostride, j + 3 * p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out, ostride, j + 3 * p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! i++; ! j++; ! } j += jump; } --- 44,145 ---- if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! const ATOMIC z3_real = REAL(in,istride,i+3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i+3*m); ! ! /* compute x = W(4) z */ ! ! /* t1 = z0 + z2 */ ! const ATOMIC t1_real = z0_real + z2_real; ! const ATOMIC t1_imag = z0_imag + z2_imag; ! ! /* t2 = z1 + z3 */ ! const ATOMIC t2_real = z1_real + z3_real; ! const ATOMIC t2_imag = z1_imag + z3_imag; ! ! /* t3 = z0 - z2 */ ! const ATOMIC t3_real = z0_real - z2_real; ! const ATOMIC t3_imag = z0_imag - z2_imag; ! ! /* t4 = (+/-) (z1 - z3) */ ! const ATOMIC t4_real = ((int) sign) * (z1_real - z3_real); ! const ATOMIC t4_imag = ((int) sign) * (z1_imag - z3_imag); ! ! /* x0 = t1 + t2 */ ! const ATOMIC x0_real = t1_real + t2_real; ! const ATOMIC x0_imag = t1_imag + t2_imag; ! ! /* x1 = t3 + i t4 */ ! const ATOMIC x1_real = t3_real - t4_imag; ! const ATOMIC x1_imag = t3_imag + t4_real; ! ! /* x2 = t1 - t2 */ ! const ATOMIC x2_real = t1_real - t2_real; ! const ATOMIC x2_imag = t1_imag - t2_imag; ! ! /* x3 = t3 - i t4 */ ! const ATOMIC x3_real = t3_real + t4_imag; ! const ATOMIC x3_imag = t3_imag - t4_real; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out, ostride, j + p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out, ostride, j + p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out, ostride, j + 2 * p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out, ostride, j + 2 * p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out, ostride, j + 3 * p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out, ostride, j + 3 * p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! i++; ! j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_pass_5.c gsl-1.4/fft/c_pass_5.c *** gsl-1.3/fft/c_pass_5.c Tue Jul 24 13:29:49 2001 --- gsl-1.4/fft/c_pass_5.c Fri Jul 25 15:18:10 2003 *************** *** 20,33 **** static int FUNCTION(fft_complex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]) { size_t i = 0, j = 0; --- 20,33 ---- static int FUNCTION(fft_complex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]) { size_t i = 0, j = 0; *************** *** 50,203 **** if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! w4_real = 1.0; ! w4_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = GSL_IMAG(twiddle4[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = -GSL_IMAG(twiddle4[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! ATOMIC x0_real, x0_imag, x1_real, x1_imag, x2_real, x2_imag, ! x3_real, x3_imag, x4_real, x4_imag; ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i + m); ! const ATOMIC z1_imag = IMAG(in,istride,i + m); ! const ATOMIC z2_real = REAL(in,istride,i + 2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i + 2*m); ! const ATOMIC z3_real = REAL(in,istride,i + 3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i + 3*m); ! const ATOMIC z4_real = REAL(in,istride,i + 4*m); ! const ATOMIC z4_imag = IMAG(in,istride,i + 4*m); ! ! /* compute x = W(5) z */ ! ! /* t1 = z1 + z4 */ ! const ATOMIC t1_real = z1_real + z4_real; ! const ATOMIC t1_imag = z1_imag + z4_imag; ! ! /* t2 = z2 + z3 */ ! const ATOMIC t2_real = z2_real + z3_real; ! const ATOMIC t2_imag = z2_imag + z3_imag; ! ! /* t3 = z1 - z4 */ ! const ATOMIC t3_real = z1_real - z4_real; ! const ATOMIC t3_imag = z1_imag - z4_imag; ! ! /* t4 = z2 - z3 */ ! const ATOMIC t4_real = z2_real - z3_real; ! const ATOMIC t4_imag = z2_imag - z3_imag; ! ! /* t5 = t1 + t2 */ ! const ATOMIC t5_real = t1_real + t2_real; ! const ATOMIC t5_imag = t1_imag + t2_imag; ! ! /* t6 = (sqrt(5)/4)(t1 - t2) */ ! const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); ! const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); ! ! /* t7 = z0 - ((t5)/4) */ ! const ATOMIC t7_real = z0_real - t5_real / 4.0; ! const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; ! ! /* t8 = t7 + t6 */ ! const ATOMIC t8_real = t7_real + t6_real; ! const ATOMIC t8_imag = t7_imag + t6_imag; ! ! /* t9 = t7 - t6 */ ! const ATOMIC t9_real = t7_real - t6_real; ! const ATOMIC t9_imag = t7_imag - t6_imag; ! ! /* t10 = sin(2 pi/5) t3 + sin(2 pi/10) t4 */ ! const ATOMIC t10_real = ((int) sign) * (sin_2pi_by_5 * t3_real + ! sin_2pi_by_10 * t4_real); ! const ATOMIC t10_imag = ((int) sign) * (sin_2pi_by_5 * t3_imag + ! sin_2pi_by_10 * t4_imag); ! ! /* t11 = sin(2 pi/10) t3 - sin(2 pi/5) t4 */ ! const ATOMIC t11_real = ((int) sign) * (sin_2pi_by_10 * t3_real - ! sin_2pi_by_5 * t4_real); ! const ATOMIC t11_imag = ((int) sign) * (sin_2pi_by_10 * t3_imag - ! sin_2pi_by_5 * t4_imag); ! ! /* x0 = z0 + t5 */ ! x0_real = z0_real + t5_real; ! x0_imag = z0_imag + t5_imag; ! ! /* x1 = t8 + i t10 */ ! x1_real = t8_real - t10_imag; ! x1_imag = t8_imag + t10_real; ! ! /* x2 = t9 + i t11 */ ! x2_real = t9_real - t11_imag; ! x2_imag = t9_imag + t11_real; ! ! /* x3 = t9 - i t11 */ ! x3_real = t9_real + t11_imag; ! x3_imag = t9_imag - t11_real; ! ! /* x4 = t8 - i t10 */ ! x4_real = t8_real + t10_imag; ! x4_imag = t8_imag - t10_real; ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j + p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j + p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j + 2*p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; ! IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; ! ! i++; ! j++; ! } j += jump; } --- 50,203 ---- if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! w4_real = 1.0; ! w4_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = GSL_IMAG(twiddle4[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = -GSL_IMAG(twiddle4[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! ATOMIC x0_real, x0_imag, x1_real, x1_imag, x2_real, x2_imag, ! x3_real, x3_imag, x4_real, x4_imag; ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i + m); ! const ATOMIC z1_imag = IMAG(in,istride,i + m); ! const ATOMIC z2_real = REAL(in,istride,i + 2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i + 2*m); ! const ATOMIC z3_real = REAL(in,istride,i + 3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i + 3*m); ! const ATOMIC z4_real = REAL(in,istride,i + 4*m); ! const ATOMIC z4_imag = IMAG(in,istride,i + 4*m); ! ! /* compute x = W(5) z */ ! ! /* t1 = z1 + z4 */ ! const ATOMIC t1_real = z1_real + z4_real; ! const ATOMIC t1_imag = z1_imag + z4_imag; ! ! /* t2 = z2 + z3 */ ! const ATOMIC t2_real = z2_real + z3_real; ! const ATOMIC t2_imag = z2_imag + z3_imag; ! ! /* t3 = z1 - z4 */ ! const ATOMIC t3_real = z1_real - z4_real; ! const ATOMIC t3_imag = z1_imag - z4_imag; ! ! /* t4 = z2 - z3 */ ! const ATOMIC t4_real = z2_real - z3_real; ! const ATOMIC t4_imag = z2_imag - z3_imag; ! ! /* t5 = t1 + t2 */ ! const ATOMIC t5_real = t1_real + t2_real; ! const ATOMIC t5_imag = t1_imag + t2_imag; ! ! /* t6 = (sqrt(5)/4)(t1 - t2) */ ! const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); ! const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); ! ! /* t7 = z0 - ((t5)/4) */ ! const ATOMIC t7_real = z0_real - t5_real / 4.0; ! const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; ! ! /* t8 = t7 + t6 */ ! const ATOMIC t8_real = t7_real + t6_real; ! const ATOMIC t8_imag = t7_imag + t6_imag; ! ! /* t9 = t7 - t6 */ ! const ATOMIC t9_real = t7_real - t6_real; ! const ATOMIC t9_imag = t7_imag - t6_imag; ! ! /* t10 = sin(2 pi/5) t3 + sin(2 pi/10) t4 */ ! const ATOMIC t10_real = ((int) sign) * (sin_2pi_by_5 * t3_real + ! sin_2pi_by_10 * t4_real); ! const ATOMIC t10_imag = ((int) sign) * (sin_2pi_by_5 * t3_imag + ! sin_2pi_by_10 * t4_imag); ! ! /* t11 = sin(2 pi/10) t3 - sin(2 pi/5) t4 */ ! const ATOMIC t11_real = ((int) sign) * (sin_2pi_by_10 * t3_real - ! sin_2pi_by_5 * t4_real); ! const ATOMIC t11_imag = ((int) sign) * (sin_2pi_by_10 * t3_imag - ! sin_2pi_by_5 * t4_imag); ! ! /* x0 = z0 + t5 */ ! x0_real = z0_real + t5_real; ! x0_imag = z0_imag + t5_imag; ! ! /* x1 = t8 + i t10 */ ! x1_real = t8_real - t10_imag; ! x1_imag = t8_imag + t10_real; ! ! /* x2 = t9 + i t11 */ ! x2_real = t9_real - t11_imag; ! x2_imag = t9_imag + t11_real; ! ! /* x3 = t9 - i t11 */ ! x3_real = t9_real + t11_imag; ! x3_imag = t9_imag - t11_real; ! ! /* x4 = t8 - i t10 */ ! x4_real = t8_real + t10_imag; ! x4_imag = t8_imag - t10_real; ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j + p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j + p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j + 2*p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; ! IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; ! ! i++; ! j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_pass_6.c gsl-1.4/fft/c_pass_6.c *** gsl-1.3/fft/c_pass_6.c Tue Jul 24 13:29:49 2001 --- gsl-1.4/fft/c_pass_6.c Fri Jul 25 15:18:10 2003 *************** *** 20,34 **** static int FUNCTION(fft_complex,pass_6) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[]) { --- 20,34 ---- static int FUNCTION(fft_complex,pass_6) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[]) { *************** *** 50,218 **** if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! w4_real = 1.0; ! w4_imag = 0.0; ! w5_real = 1.0; ! w5_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = GSL_IMAG(twiddle5[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = -GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = -GSL_IMAG(twiddle5[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! const ATOMIC z3_real = REAL(in,istride,i+3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i+3*m); ! const ATOMIC z4_real = REAL(in,istride,i+4*m); ! const ATOMIC z4_imag = IMAG(in,istride,i+4*m); ! const ATOMIC z5_real = REAL(in,istride,i+5*m); ! const ATOMIC z5_imag = IMAG(in,istride,i+5*m); ! ! /* compute x = W(6) z */ ! ! /* W(6) is a combination of sums and differences of W(3) acting ! on the even and odd elements of z */ ! ! /* ta1 = z2 + z4 */ ! const ATOMIC ta1_real = z2_real + z4_real; ! const ATOMIC ta1_imag = z2_imag + z4_imag; ! ! /* ta2 = z0 - ta1/2 */ ! const ATOMIC ta2_real = z0_real - ta1_real / 2; ! const ATOMIC ta2_imag = z0_imag - ta1_imag / 2; ! ! /* ta3 = (+/-) sin(pi/3)*(z2 - z4) */ ! const ATOMIC ta3_real = ((int) sign) * tau * (z2_real - z4_real); ! const ATOMIC ta3_imag = ((int) sign) * tau * (z2_imag - z4_imag); ! ! /* a0 = z0 + ta1 */ ! const ATOMIC a0_real = z0_real + ta1_real; ! const ATOMIC a0_imag = z0_imag + ta1_imag; ! ! /* a1 = ta2 + i ta3 */ ! const ATOMIC a1_real = ta2_real - ta3_imag; ! const ATOMIC a1_imag = ta2_imag + ta3_real; ! ! /* a2 = ta2 - i ta3 */ ! const ATOMIC a2_real = ta2_real + ta3_imag; ! const ATOMIC a2_imag = ta2_imag - ta3_real; ! ! /* tb1 = z5 + z1 */ ! const ATOMIC tb1_real = z5_real + z1_real; ! const ATOMIC tb1_imag = z5_imag + z1_imag; ! ! /* tb2 = z3 - tb1/2 */ ! const ATOMIC tb2_real = z3_real - tb1_real / 2; ! const ATOMIC tb2_imag = z3_imag - tb1_imag / 2; ! ! /* tb3 = (+/-) sin(pi/3)*(z5 - z1) */ ! const ATOMIC tb3_real = ((int) sign) * tau * (z5_real - z1_real); ! const ATOMIC tb3_imag = ((int) sign) * tau * (z5_imag - z1_imag); ! ! /* b0 = z3 + tb1 */ ! const ATOMIC b0_real = z3_real + tb1_real; ! const ATOMIC b0_imag = z3_imag + tb1_imag; ! ! /* b1 = tb2 + i tb3 */ ! const ATOMIC b1_real = tb2_real - tb3_imag; ! const ATOMIC b1_imag = tb2_imag + tb3_real; ! ! /* b2 = tb2 - i tb3 */ ! const ATOMIC b2_real = tb2_real + tb3_imag; ! const ATOMIC b2_imag = tb2_imag - tb3_real; ! ! /* x0 = a0 + b0 */ ! const ATOMIC x0_real = a0_real + b0_real; ! const ATOMIC x0_imag = a0_imag + b0_imag; ! ! /* x4 = a1 + b1 */ ! const ATOMIC x4_real = a1_real + b1_real; ! const ATOMIC x4_imag = a1_imag + b1_imag; ! ! /* x2 = a2 + b2 */ ! const ATOMIC x2_real = a2_real + b2_real; ! const ATOMIC x2_imag = a2_imag + b2_imag; ! ! /* x3 = a0 - b0 */ ! const ATOMIC x3_real = a0_real - b0_real; ! const ATOMIC x3_imag = a0_imag - b0_imag; ! ! /* x1 = a1 - b1 */ ! const ATOMIC x1_real = a1_real - b1_real; ! const ATOMIC x1_imag = a1_imag - b1_imag; ! ! /* x5 = a2 - b2 */ ! const ATOMIC x5_real = a2_real - b2_real; ! const ATOMIC x5_imag = a2_imag - b2_imag; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j+p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j+p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j+2*p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; ! IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; ! ! /* to5 = w5 * x5 */ ! REAL(out,ostride,j+5*p_1) = w5_real * x5_real - w5_imag * x5_imag; ! IMAG(out,ostride,j+5*p_1) = w5_real * x5_imag + w5_imag * x5_real; ! ! i++; ! j++; ! } j += jump; } --- 50,218 ---- if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! w4_real = 1.0; ! w4_imag = 0.0; ! w5_real = 1.0; ! w5_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = GSL_IMAG(twiddle5[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = -GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = -GSL_IMAG(twiddle5[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! const ATOMIC z3_real = REAL(in,istride,i+3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i+3*m); ! const ATOMIC z4_real = REAL(in,istride,i+4*m); ! const ATOMIC z4_imag = IMAG(in,istride,i+4*m); ! const ATOMIC z5_real = REAL(in,istride,i+5*m); ! const ATOMIC z5_imag = IMAG(in,istride,i+5*m); ! ! /* compute x = W(6) z */ ! ! /* W(6) is a combination of sums and differences of W(3) acting ! on the even and odd elements of z */ ! ! /* ta1 = z2 + z4 */ ! const ATOMIC ta1_real = z2_real + z4_real; ! const ATOMIC ta1_imag = z2_imag + z4_imag; ! ! /* ta2 = z0 - ta1/2 */ ! const ATOMIC ta2_real = z0_real - ta1_real / 2; ! const ATOMIC ta2_imag = z0_imag - ta1_imag / 2; ! ! /* ta3 = (+/-) sin(pi/3)*(z2 - z4) */ ! const ATOMIC ta3_real = ((int) sign) * tau * (z2_real - z4_real); ! const ATOMIC ta3_imag = ((int) sign) * tau * (z2_imag - z4_imag); ! ! /* a0 = z0 + ta1 */ ! const ATOMIC a0_real = z0_real + ta1_real; ! const ATOMIC a0_imag = z0_imag + ta1_imag; ! ! /* a1 = ta2 + i ta3 */ ! const ATOMIC a1_real = ta2_real - ta3_imag; ! const ATOMIC a1_imag = ta2_imag + ta3_real; ! ! /* a2 = ta2 - i ta3 */ ! const ATOMIC a2_real = ta2_real + ta3_imag; ! const ATOMIC a2_imag = ta2_imag - ta3_real; ! ! /* tb1 = z5 + z1 */ ! const ATOMIC tb1_real = z5_real + z1_real; ! const ATOMIC tb1_imag = z5_imag + z1_imag; ! ! /* tb2 = z3 - tb1/2 */ ! const ATOMIC tb2_real = z3_real - tb1_real / 2; ! const ATOMIC tb2_imag = z3_imag - tb1_imag / 2; ! ! /* tb3 = (+/-) sin(pi/3)*(z5 - z1) */ ! const ATOMIC tb3_real = ((int) sign) * tau * (z5_real - z1_real); ! const ATOMIC tb3_imag = ((int) sign) * tau * (z5_imag - z1_imag); ! ! /* b0 = z3 + tb1 */ ! const ATOMIC b0_real = z3_real + tb1_real; ! const ATOMIC b0_imag = z3_imag + tb1_imag; ! ! /* b1 = tb2 + i tb3 */ ! const ATOMIC b1_real = tb2_real - tb3_imag; ! const ATOMIC b1_imag = tb2_imag + tb3_real; ! ! /* b2 = tb2 - i tb3 */ ! const ATOMIC b2_real = tb2_real + tb3_imag; ! const ATOMIC b2_imag = tb2_imag - tb3_real; ! ! /* x0 = a0 + b0 */ ! const ATOMIC x0_real = a0_real + b0_real; ! const ATOMIC x0_imag = a0_imag + b0_imag; ! ! /* x4 = a1 + b1 */ ! const ATOMIC x4_real = a1_real + b1_real; ! const ATOMIC x4_imag = a1_imag + b1_imag; ! ! /* x2 = a2 + b2 */ ! const ATOMIC x2_real = a2_real + b2_real; ! const ATOMIC x2_imag = a2_imag + b2_imag; ! ! /* x3 = a0 - b0 */ ! const ATOMIC x3_real = a0_real - b0_real; ! const ATOMIC x3_imag = a0_imag - b0_imag; ! ! /* x1 = a1 - b1 */ ! const ATOMIC x1_real = a1_real - b1_real; ! const ATOMIC x1_imag = a1_imag - b1_imag; ! ! /* x5 = a2 - b2 */ ! const ATOMIC x5_real = a2_real - b2_real; ! const ATOMIC x5_imag = a2_imag - b2_imag; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j+p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j+p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j+2*p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; ! IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; ! ! /* to5 = w5 * x5 */ ! REAL(out,ostride,j+5*p_1) = w5_real * x5_real - w5_imag * x5_imag; ! IMAG(out,ostride,j+5*p_1) = w5_real * x5_imag + w5_imag * x5_real; ! ! i++; ! j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_pass_7.c gsl-1.4/fft/c_pass_7.c *** gsl-1.3/fft/c_pass_7.c Tue Jul 24 13:29:49 2001 --- gsl-1.4/fft/c_pass_7.c Fri Jul 25 15:18:10 2003 *************** *** 20,35 **** static int FUNCTION(fft_complex,pass_7) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[], ! const TYPE(gsl_complex) twiddle6[]) { size_t i = 0, j = 0; --- 20,35 ---- static int FUNCTION(fft_complex,pass_7) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[], ! const TYPE(gsl_complex) twiddle5[], ! const TYPE(gsl_complex) twiddle6[]) { size_t i = 0, j = 0; *************** *** 56,310 **** if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! w4_real = 1.0; ! w4_imag = 0.0; ! w5_real = 1.0; ! w5_imag = 0.0; ! w6_real = 1.0; ! w6_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = GSL_IMAG(twiddle5[k - 1]); ! w6_real = GSL_REAL(twiddle6[k - 1]); ! w6_imag = GSL_IMAG(twiddle6[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = -GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = -GSL_IMAG(twiddle5[k - 1]); ! w6_real = GSL_REAL(twiddle6[k - 1]); ! w6_imag = -GSL_IMAG(twiddle6[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! const ATOMIC z3_real = REAL(in,istride,i+3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i+3*m); ! const ATOMIC z4_real = REAL(in,istride,i+4*m); ! const ATOMIC z4_imag = IMAG(in,istride,i+4*m); ! const ATOMIC z5_real = REAL(in,istride,i+5*m); ! const ATOMIC z5_imag = IMAG(in,istride,i+5*m); ! const ATOMIC z6_real = REAL(in,istride,i+6*m); ! const ATOMIC z6_imag = IMAG(in,istride,i+6*m); ! ! /* compute x = W(7) z */ ! ! /* t0 = z1 + z6 */ ! const ATOMIC t0_real = z1_real + z6_real ; ! const ATOMIC t0_imag = z1_imag + z6_imag ; ! ! /* t1 = z1 - z6 */ ! const ATOMIC t1_real = z1_real - z6_real ; ! const ATOMIC t1_imag = z1_imag - z6_imag ; ! ! /* t2 = z2 + z5 */ ! const ATOMIC t2_real = z2_real + z5_real ; ! const ATOMIC t2_imag = z2_imag + z5_imag ; ! ! /* t3 = z2 - z5 */ ! const ATOMIC t3_real = z2_real - z5_real ; ! const ATOMIC t3_imag = z2_imag - z5_imag ; ! ! /* t4 = z4 + z3 */ ! const ATOMIC t4_real = z4_real + z3_real ; ! const ATOMIC t4_imag = z4_imag + z3_imag ; ! ! /* t5 = z4 - z3 */ ! const ATOMIC t5_real = z4_real - z3_real ; ! const ATOMIC t5_imag = z4_imag - z3_imag ; ! ! /* t6 = t2 + t0 */ ! const ATOMIC t6_real = t2_real + t0_real ; ! const ATOMIC t6_imag = t2_imag + t0_imag ; ! ! /* t7 = t5 + t3 */ ! const ATOMIC t7_real = t5_real + t3_real ; ! const ATOMIC t7_imag = t5_imag + t3_imag ; ! ! /* b0 = z0 + t6 + t4 */ ! const ATOMIC b0_real = z0_real + t6_real + t4_real ; ! const ATOMIC b0_imag = z0_imag + t6_imag + t4_imag ; ! ! /* b1 = ((cos(2pi/7) + cos(4pi/7) + cos(6pi/7))/3-1) (t6 + t4) */ ! const ATOMIC b1_real = (((c1 + c2 + c3)/3.0 - 1.0) * (t6_real + t4_real)); ! const ATOMIC b1_imag = (((c1 + c2 + c3)/3.0 - 1.0) * (t6_imag + t4_imag)); ! ! /* b2 = ((2*cos(2pi/7) - cos(4pi/7) - cos(6pi/7))/3) (t0 - t4) */ ! const ATOMIC b2_real = (((2.0 * c1 - c2 - c3)/3.0) * (t0_real - t4_real)); ! const ATOMIC b2_imag = (((2.0 * c1 - c2 - c3)/3.0) * (t0_imag - t4_imag)); ! ! /* b3 = ((cos(2pi/7) - 2*cos(4pi/7) + cos(6pi/7))/3) (t4 - t2) */ ! const ATOMIC b3_real = (((c1 - 2.0*c2 + c3)/3.0) * (t4_real - t2_real)); ! const ATOMIC b3_imag = (((c1 - 2.0*c2 + c3)/3.0) * (t4_imag - t2_imag)); ! ! /* b4 = ((cos(2pi/7) + cos(4pi/7) - 2*cos(6pi/7))/3) (t2 - t0) */ ! const ATOMIC b4_real = (((c1 + c2 - 2.0 * c3)/3.0) * (t2_real - t0_real)); ! const ATOMIC b4_imag = (((c1 + c2 - 2.0 * c3)/3.0) * (t2_imag - t0_imag)); ! ! /* b5 = sign * ((sin(2pi/7) + sin(4pi/7) - sin(6pi/7))/3) (t7 + t1) */ ! const ATOMIC b5_real = (-(int)sign) * ((s1 + s2 - s3)/3.0) * (t7_real + t1_real) ; ! const ATOMIC b5_imag = (-(int)sign) * ((s1 + s2 - s3)/3.0) * (t7_imag + t1_imag) ; ! ! /* b6 = sign * ((2sin(2pi/7) - sin(4pi/7) + sin(6pi/7))/3) (t1 - t5) */ ! const ATOMIC b6_real = (-(int)sign) * ((2.0 * s1 - s2 + s3)/3.0) * (t1_real - t5_real) ; ! const ATOMIC b6_imag = (-(int)sign) * ((2.0 * s1 - s2 + s3)/3.0) * (t1_imag - t5_imag) ; ! ! /* b7 = sign * ((sin(2pi/7) - 2sin(4pi/7) - sin(6pi/7))/3) (t5 - t3) */ ! const ATOMIC b7_real = (-(int)sign) * ((s1 - 2.0 * s2 - s3)/3.0) * (t5_real - t3_real) ; ! const ATOMIC b7_imag = (-(int)sign) * ((s1 - 2.0 * s2 - s3)/3.0) * (t5_imag - t3_imag) ; ! ! /* b8 = sign * ((sin(2pi/7) + sin(4pi/7) + 2sin(6pi/7))/3) (t3 - t1) */ ! const ATOMIC b8_real = (-(int)sign) * ((s1 + s2 + 2.0 * s3)/3.0) * (t3_real - t1_real) ; ! const ATOMIC b8_imag = (-(int)sign) * ((s1 + s2 + 2.0 * s3)/3.0) * (t3_imag - t1_imag) ; ! ! ! /* T0 = b0 + b1 */ ! const ATOMIC T0_real = b0_real + b1_real ; ! const ATOMIC T0_imag = b0_imag + b1_imag ; ! ! /* T1 = b2 + b3 */ ! const ATOMIC T1_real = b2_real + b3_real ; ! const ATOMIC T1_imag = b2_imag + b3_imag ; ! ! /* T2 = b4 - b3 */ ! const ATOMIC T2_real = b4_real - b3_real ; ! const ATOMIC T2_imag = b4_imag - b3_imag ; ! ! /* T3 = -b2 - b4 */ ! const ATOMIC T3_real = -b2_real - b4_real ; ! const ATOMIC T3_imag = -b2_imag - b4_imag ; ! ! /* T4 = b6 + b7 */ ! const ATOMIC T4_real = b6_real + b7_real ; ! const ATOMIC T4_imag = b6_imag + b7_imag ; ! ! /* T5 = b8 - b7 */ ! const ATOMIC T5_real = b8_real - b7_real ; ! const ATOMIC T5_imag = b8_imag - b7_imag ; ! ! /* T6 = -b8 - b6 */ ! const ATOMIC T6_real = -b8_real - b6_real ; ! const ATOMIC T6_imag = -b8_imag - b6_imag ; ! ! /* T7 = T0 + T1 */ ! const ATOMIC T7_real = T0_real + T1_real ; ! const ATOMIC T7_imag = T0_imag + T1_imag ; ! ! /* T8 = T0 + T2 */ ! const ATOMIC T8_real = T0_real + T2_real ; ! const ATOMIC T8_imag = T0_imag + T2_imag ; ! ! /* T9 = T0 + T3 */ ! const ATOMIC T9_real = T0_real + T3_real ; ! const ATOMIC T9_imag = T0_imag + T3_imag ; ! ! /* T10 = T4 + b5 */ ! const ATOMIC T10_real = T4_real + b5_real ; ! const ATOMIC T10_imag = T4_imag + b5_imag ; ! ! /* T11 = T5 + b5 */ ! const ATOMIC T11_real = T5_real + b5_real ; ! const ATOMIC T11_imag = T5_imag + b5_imag ; ! ! /* T12 = T6 + b5 */ ! const ATOMIC T12_real = T6_real + b5_real ; ! const ATOMIC T12_imag = T6_imag + b5_imag ; ! ! ! /* x0 = b0 */ ! const ATOMIC x0_real = b0_real ; ! const ATOMIC x0_imag = b0_imag ; ! ! /* x1 = T7 - i T10 */ ! const ATOMIC x1_real = T7_real + T10_imag ; ! const ATOMIC x1_imag = T7_imag - T10_real ; ! ! /* x2 = T9 - i T12 */ ! const ATOMIC x2_real = T9_real + T12_imag ; ! const ATOMIC x2_imag = T9_imag - T12_real ; ! ! /* x3 = T8 + i T11 */ ! const ATOMIC x3_real = T8_real - T11_imag ; ! const ATOMIC x3_imag = T8_imag + T11_real ; ! ! /* x4 = T8 - i T11 */ ! const ATOMIC x4_real = T8_real + T11_imag ; ! const ATOMIC x4_imag = T8_imag - T11_real ; ! ! /* x5 = T9 + i T12 */ ! const ATOMIC x5_real = T9_real - T12_imag ; ! const ATOMIC x5_imag = T9_imag + T12_real ; ! ! /* x6 = T7 + i T10 */ ! const ATOMIC x6_real = T7_real - T10_imag ; ! const ATOMIC x6_imag = T7_imag + T10_real ; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j+p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j+p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j+2*p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; ! IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; ! ! /* to5 = w5 * x5 */ ! REAL(out,ostride,j+5*p_1) = w5_real * x5_real - w5_imag * x5_imag; ! IMAG(out,ostride,j+5*p_1) = w5_real * x5_imag + w5_imag * x5_real; ! ! /* to6 = w6 * x6 */ ! REAL(out,ostride,j+6*p_1) = w6_real * x6_real - w6_imag * x6_imag; ! IMAG(out,ostride,j+6*p_1) = w6_real * x6_imag + w6_imag * x6_real; ! ! i++; j++; ! } j += jump; } --- 56,310 ---- if (k == 0) ! { ! w1_real = 1.0; ! w1_imag = 0.0; ! w2_real = 1.0; ! w2_imag = 0.0; ! w3_real = 1.0; ! w3_imag = 0.0; ! w4_real = 1.0; ! w4_imag = 0.0; ! w5_real = 1.0; ! w5_imag = 0.0; ! w6_real = 1.0; ! w6_imag = 0.0; ! } else ! { ! if (sign == forward) ! { ! /* forward tranform */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = GSL_IMAG(twiddle5[k - 1]); ! w6_real = GSL_REAL(twiddle6[k - 1]); ! w6_imag = GSL_IMAG(twiddle6[k - 1]); ! } ! else ! { ! /* backward tranform: w -> conjugate(w) */ ! w1_real = GSL_REAL(twiddle1[k - 1]); ! w1_imag = -GSL_IMAG(twiddle1[k - 1]); ! w2_real = GSL_REAL(twiddle2[k - 1]); ! w2_imag = -GSL_IMAG(twiddle2[k - 1]); ! w3_real = GSL_REAL(twiddle3[k - 1]); ! w3_imag = -GSL_IMAG(twiddle3[k - 1]); ! w4_real = GSL_REAL(twiddle4[k - 1]); ! w4_imag = -GSL_IMAG(twiddle4[k - 1]); ! w5_real = GSL_REAL(twiddle5[k - 1]); ! w5_imag = -GSL_IMAG(twiddle5[k - 1]); ! w6_real = GSL_REAL(twiddle6[k - 1]); ! w6_imag = -GSL_IMAG(twiddle6[k - 1]); ! } ! } for (k1 = 0; k1 < p_1; k1++) ! { ! const ATOMIC z0_real = REAL(in,istride,i); ! const ATOMIC z0_imag = IMAG(in,istride,i); ! const ATOMIC z1_real = REAL(in,istride,i+m); ! const ATOMIC z1_imag = IMAG(in,istride,i+m); ! const ATOMIC z2_real = REAL(in,istride,i+2*m); ! const ATOMIC z2_imag = IMAG(in,istride,i+2*m); ! const ATOMIC z3_real = REAL(in,istride,i+3*m); ! const ATOMIC z3_imag = IMAG(in,istride,i+3*m); ! const ATOMIC z4_real = REAL(in,istride,i+4*m); ! const ATOMIC z4_imag = IMAG(in,istride,i+4*m); ! const ATOMIC z5_real = REAL(in,istride,i+5*m); ! const ATOMIC z5_imag = IMAG(in,istride,i+5*m); ! const ATOMIC z6_real = REAL(in,istride,i+6*m); ! const ATOMIC z6_imag = IMAG(in,istride,i+6*m); ! ! /* compute x = W(7) z */ ! ! /* t0 = z1 + z6 */ ! const ATOMIC t0_real = z1_real + z6_real ; ! const ATOMIC t0_imag = z1_imag + z6_imag ; ! ! /* t1 = z1 - z6 */ ! const ATOMIC t1_real = z1_real - z6_real ; ! const ATOMIC t1_imag = z1_imag - z6_imag ; ! ! /* t2 = z2 + z5 */ ! const ATOMIC t2_real = z2_real + z5_real ; ! const ATOMIC t2_imag = z2_imag + z5_imag ; ! ! /* t3 = z2 - z5 */ ! const ATOMIC t3_real = z2_real - z5_real ; ! const ATOMIC t3_imag = z2_imag - z5_imag ; ! ! /* t4 = z4 + z3 */ ! const ATOMIC t4_real = z4_real + z3_real ; ! const ATOMIC t4_imag = z4_imag + z3_imag ; ! ! /* t5 = z4 - z3 */ ! const ATOMIC t5_real = z4_real - z3_real ; ! const ATOMIC t5_imag = z4_imag - z3_imag ; ! ! /* t6 = t2 + t0 */ ! const ATOMIC t6_real = t2_real + t0_real ; ! const ATOMIC t6_imag = t2_imag + t0_imag ; ! ! /* t7 = t5 + t3 */ ! const ATOMIC t7_real = t5_real + t3_real ; ! const ATOMIC t7_imag = t5_imag + t3_imag ; ! ! /* b0 = z0 + t6 + t4 */ ! const ATOMIC b0_real = z0_real + t6_real + t4_real ; ! const ATOMIC b0_imag = z0_imag + t6_imag + t4_imag ; ! ! /* b1 = ((cos(2pi/7) + cos(4pi/7) + cos(6pi/7))/3-1) (t6 + t4) */ ! const ATOMIC b1_real = (((c1 + c2 + c3)/3.0 - 1.0) * (t6_real + t4_real)); ! const ATOMIC b1_imag = (((c1 + c2 + c3)/3.0 - 1.0) * (t6_imag + t4_imag)); ! ! /* b2 = ((2*cos(2pi/7) - cos(4pi/7) - cos(6pi/7))/3) (t0 - t4) */ ! const ATOMIC b2_real = (((2.0 * c1 - c2 - c3)/3.0) * (t0_real - t4_real)); ! const ATOMIC b2_imag = (((2.0 * c1 - c2 - c3)/3.0) * (t0_imag - t4_imag)); ! ! /* b3 = ((cos(2pi/7) - 2*cos(4pi/7) + cos(6pi/7))/3) (t4 - t2) */ ! const ATOMIC b3_real = (((c1 - 2.0*c2 + c3)/3.0) * (t4_real - t2_real)); ! const ATOMIC b3_imag = (((c1 - 2.0*c2 + c3)/3.0) * (t4_imag - t2_imag)); ! ! /* b4 = ((cos(2pi/7) + cos(4pi/7) - 2*cos(6pi/7))/3) (t2 - t0) */ ! const ATOMIC b4_real = (((c1 + c2 - 2.0 * c3)/3.0) * (t2_real - t0_real)); ! const ATOMIC b4_imag = (((c1 + c2 - 2.0 * c3)/3.0) * (t2_imag - t0_imag)); ! ! /* b5 = sign * ((sin(2pi/7) + sin(4pi/7) - sin(6pi/7))/3) (t7 + t1) */ ! const ATOMIC b5_real = (-(int)sign) * ((s1 + s2 - s3)/3.0) * (t7_real + t1_real) ; ! const ATOMIC b5_imag = (-(int)sign) * ((s1 + s2 - s3)/3.0) * (t7_imag + t1_imag) ; ! ! /* b6 = sign * ((2sin(2pi/7) - sin(4pi/7) + sin(6pi/7))/3) (t1 - t5) */ ! const ATOMIC b6_real = (-(int)sign) * ((2.0 * s1 - s2 + s3)/3.0) * (t1_real - t5_real) ; ! const ATOMIC b6_imag = (-(int)sign) * ((2.0 * s1 - s2 + s3)/3.0) * (t1_imag - t5_imag) ; ! ! /* b7 = sign * ((sin(2pi/7) - 2sin(4pi/7) - sin(6pi/7))/3) (t5 - t3) */ ! const ATOMIC b7_real = (-(int)sign) * ((s1 - 2.0 * s2 - s3)/3.0) * (t5_real - t3_real) ; ! const ATOMIC b7_imag = (-(int)sign) * ((s1 - 2.0 * s2 - s3)/3.0) * (t5_imag - t3_imag) ; ! ! /* b8 = sign * ((sin(2pi/7) + sin(4pi/7) + 2sin(6pi/7))/3) (t3 - t1) */ ! const ATOMIC b8_real = (-(int)sign) * ((s1 + s2 + 2.0 * s3)/3.0) * (t3_real - t1_real) ; ! const ATOMIC b8_imag = (-(int)sign) * ((s1 + s2 + 2.0 * s3)/3.0) * (t3_imag - t1_imag) ; ! ! ! /* T0 = b0 + b1 */ ! const ATOMIC T0_real = b0_real + b1_real ; ! const ATOMIC T0_imag = b0_imag + b1_imag ; ! ! /* T1 = b2 + b3 */ ! const ATOMIC T1_real = b2_real + b3_real ; ! const ATOMIC T1_imag = b2_imag + b3_imag ; ! ! /* T2 = b4 - b3 */ ! const ATOMIC T2_real = b4_real - b3_real ; ! const ATOMIC T2_imag = b4_imag - b3_imag ; ! ! /* T3 = -b2 - b4 */ ! const ATOMIC T3_real = -b2_real - b4_real ; ! const ATOMIC T3_imag = -b2_imag - b4_imag ; ! ! /* T4 = b6 + b7 */ ! const ATOMIC T4_real = b6_real + b7_real ; ! const ATOMIC T4_imag = b6_imag + b7_imag ; ! ! /* T5 = b8 - b7 */ ! const ATOMIC T5_real = b8_real - b7_real ; ! const ATOMIC T5_imag = b8_imag - b7_imag ; ! ! /* T6 = -b8 - b6 */ ! const ATOMIC T6_real = -b8_real - b6_real ; ! const ATOMIC T6_imag = -b8_imag - b6_imag ; ! ! /* T7 = T0 + T1 */ ! const ATOMIC T7_real = T0_real + T1_real ; ! const ATOMIC T7_imag = T0_imag + T1_imag ; ! ! /* T8 = T0 + T2 */ ! const ATOMIC T8_real = T0_real + T2_real ; ! const ATOMIC T8_imag = T0_imag + T2_imag ; ! ! /* T9 = T0 + T3 */ ! const ATOMIC T9_real = T0_real + T3_real ; ! const ATOMIC T9_imag = T0_imag + T3_imag ; ! ! /* T10 = T4 + b5 */ ! const ATOMIC T10_real = T4_real + b5_real ; ! const ATOMIC T10_imag = T4_imag + b5_imag ; ! ! /* T11 = T5 + b5 */ ! const ATOMIC T11_real = T5_real + b5_real ; ! const ATOMIC T11_imag = T5_imag + b5_imag ; ! ! /* T12 = T6 + b5 */ ! const ATOMIC T12_real = T6_real + b5_real ; ! const ATOMIC T12_imag = T6_imag + b5_imag ; ! ! ! /* x0 = b0 */ ! const ATOMIC x0_real = b0_real ; ! const ATOMIC x0_imag = b0_imag ; ! ! /* x1 = T7 - i T10 */ ! const ATOMIC x1_real = T7_real + T10_imag ; ! const ATOMIC x1_imag = T7_imag - T10_real ; ! ! /* x2 = T9 - i T12 */ ! const ATOMIC x2_real = T9_real + T12_imag ; ! const ATOMIC x2_imag = T9_imag - T12_real ; ! ! /* x3 = T8 + i T11 */ ! const ATOMIC x3_real = T8_real - T11_imag ; ! const ATOMIC x3_imag = T8_imag + T11_real ; ! ! /* x4 = T8 - i T11 */ ! const ATOMIC x4_real = T8_real + T11_imag ; ! const ATOMIC x4_imag = T8_imag - T11_real ; ! ! /* x5 = T9 + i T12 */ ! const ATOMIC x5_real = T9_real - T12_imag ; ! const ATOMIC x5_imag = T9_imag + T12_real ; ! ! /* x6 = T7 + i T10 */ ! const ATOMIC x6_real = T7_real - T10_imag ; ! const ATOMIC x6_imag = T7_imag + T10_real ; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! REAL(out,ostride,j) = x0_real; ! IMAG(out,ostride,j) = x0_imag; ! ! /* to1 = w1 * x1 */ ! REAL(out,ostride,j+p_1) = w1_real * x1_real - w1_imag * x1_imag; ! IMAG(out,ostride,j+p_1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! REAL(out,ostride,j+2*p_1) = w2_real * x2_real - w2_imag * x2_imag; ! IMAG(out,ostride,j+2*p_1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! REAL(out,ostride,j+3*p_1) = w3_real * x3_real - w3_imag * x3_imag; ! IMAG(out,ostride,j+3*p_1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! REAL(out,ostride,j+4*p_1) = w4_real * x4_real - w4_imag * x4_imag; ! IMAG(out,ostride,j+4*p_1) = w4_real * x4_imag + w4_imag * x4_real; ! ! /* to5 = w5 * x5 */ ! REAL(out,ostride,j+5*p_1) = w5_real * x5_real - w5_imag * x5_imag; ! IMAG(out,ostride,j+5*p_1) = w5_real * x5_imag + w5_imag * x5_real; ! ! /* to6 = w6 * x6 */ ! REAL(out,ostride,j+6*p_1) = w6_real * x6_real - w6_imag * x6_imag; ! IMAG(out,ostride,j+6*p_1) = w6_real * x6_imag + w6_imag * x6_real; ! ! i++; j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_pass_n.c gsl-1.4/fft/c_pass_n.c *** gsl-1.3/fft/c_pass_n.c Tue Jul 24 14:00:16 2001 --- gsl-1.4/fft/c_pass_n.c Fri Jul 25 15:18:10 2003 *************** *** 20,31 **** static int FUNCTION(fft_complex,pass_n) (BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t i = 0, j = 0; --- 20,31 ---- static int FUNCTION(fft_complex,pass_n) (BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const gsl_fft_direction sign, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t i = 0, j = 0; *************** *** 48,59 **** { for (i = 0; i < m; i++) ! { ! const size_t idx = i + e * m; ! const size_t idxc = i + (factor - e) * m; ! REAL(out,ostride,idx) = REAL(in,istride,idx) + REAL(in,istride,idxc); ! IMAG(out,ostride,idx) = IMAG(in,istride,idx) + IMAG(in,istride,idxc); ! REAL(out,ostride,idxc) = REAL(in,istride,idx) - REAL(in,istride,idxc); ! IMAG(out,ostride,idxc) = IMAG(in,istride,idx) - IMAG(in,istride,idxc); ! } } --- 48,59 ---- { for (i = 0; i < m; i++) ! { ! const size_t idx = i + e * m; ! const size_t idxc = i + (factor - e) * m; ! REAL(out,ostride,idx) = REAL(in,istride,idx) + REAL(in,istride,idxc); ! IMAG(out,ostride,idx) = IMAG(in,istride,idx) + IMAG(in,istride,idxc); ! REAL(out,ostride,idxc) = REAL(in,istride,idx) - REAL(in,istride,idxc); ! IMAG(out,ostride,idxc) = IMAG(in,istride,idx) - IMAG(in,istride,idxc); ! } } *************** *** 69,76 **** { for (i = 0; i < m; i++) ! { ! REAL(in,istride,i) += REAL(out,ostride,i + e1*m) ; ! IMAG(in,istride,i) += IMAG(out,ostride,i + e1*m) ; ! } } --- 69,76 ---- { for (i = 0; i < m; i++) ! { ! REAL(in,istride,i) += REAL(out,ostride,i + e1*m) ; ! IMAG(in,istride,i) += IMAG(out,ostride,i + e1*m) ; ! } } *************** *** 85,137 **** for (i = 0; i < m; i++) ! { ! REAL(in,istride,i+em) = REAL(out,ostride,i) ; ! IMAG(in,istride,i+em) = IMAG(out,ostride,i) ; ! REAL(in,istride,i+ecm) = REAL(out,ostride,i) ; ! IMAG(in,istride,i+ecm) = IMAG(out,ostride,i) ; ! } for (e1 = 1; e1 < (factor - 1) / 2 + 1; e1++) ! { ! if (idx == 0) { ! w_real = 1 ; ! w_imag = 0 ; ! } else { ! if (sign == forward) { ! w_real = GSL_REAL(twiddle[idx - 1]) ; ! w_imag = GSL_IMAG(twiddle[idx - 1]) ; ! } else { ! w_real = GSL_REAL(twiddle[idx - 1]) ; ! w_imag = -GSL_IMAG(twiddle[idx - 1]) ; ! } ! } ! ! for (i = 0; i < m; i++) ! { ! const ATOMIC xp_real = REAL(out,ostride,i + e1 * m); ! const ATOMIC xp_imag = IMAG(out,ostride,i + e1 * m); ! const ATOMIC xm_real = REAL(out,ostride,i + (factor - e1) *m); ! const ATOMIC xm_imag = IMAG(out,ostride,i + (factor - e1) *m); ! ! const ATOMIC ap = w_real * xp_real ; ! const ATOMIC am = w_imag * xm_imag ; ! ! ATOMIC sum_real = ap - am; ! ATOMIC sumc_real = ap + am; ! ! const ATOMIC bp = w_real * xp_imag ; ! const ATOMIC bm = w_imag * xm_real ; ! ! ATOMIC sum_imag = bp + bm; ! ATOMIC sumc_imag = bp - bm; ! ! REAL(in,istride,i + em) += sum_real; ! IMAG(in,istride,i + em) += sum_imag; ! REAL(in,istride,i + ecm) += sumc_real; ! IMAG(in,istride,i + ecm) += sumc_imag; ! } ! idx += idx_step ; ! idx %= factor * q ; ! } } --- 85,137 ---- for (i = 0; i < m; i++) ! { ! REAL(in,istride,i+em) = REAL(out,ostride,i) ; ! IMAG(in,istride,i+em) = IMAG(out,ostride,i) ; ! REAL(in,istride,i+ecm) = REAL(out,ostride,i) ; ! IMAG(in,istride,i+ecm) = IMAG(out,ostride,i) ; ! } for (e1 = 1; e1 < (factor - 1) / 2 + 1; e1++) ! { ! if (idx == 0) { ! w_real = 1 ; ! w_imag = 0 ; ! } else { ! if (sign == forward) { ! w_real = GSL_REAL(twiddle[idx - 1]) ; ! w_imag = GSL_IMAG(twiddle[idx - 1]) ; ! } else { ! w_real = GSL_REAL(twiddle[idx - 1]) ; ! w_imag = -GSL_IMAG(twiddle[idx - 1]) ; ! } ! } ! ! for (i = 0; i < m; i++) ! { ! const ATOMIC xp_real = REAL(out,ostride,i + e1 * m); ! const ATOMIC xp_imag = IMAG(out,ostride,i + e1 * m); ! const ATOMIC xm_real = REAL(out,ostride,i + (factor - e1) *m); ! const ATOMIC xm_imag = IMAG(out,ostride,i + (factor - e1) *m); ! ! const ATOMIC ap = w_real * xp_real ; ! const ATOMIC am = w_imag * xm_imag ; ! ! ATOMIC sum_real = ap - am; ! ATOMIC sumc_real = ap + am; ! ! const ATOMIC bp = w_real * xp_imag ; ! const ATOMIC bm = w_imag * xm_real ; ! ! ATOMIC sum_imag = bp + bm; ! ATOMIC sumc_imag = bp - bm; ! ! REAL(in,istride,i + em) += sum_real; ! IMAG(in,istride,i + em) += sum_imag; ! REAL(in,istride,i + ecm) += sumc_real; ! IMAG(in,istride,i + ecm) += sumc_imag; ! } ! idx += idx_step ; ! idx %= factor * q ; ! } } *************** *** 149,156 **** { for (k1 = 0; k1 < p_1; k1++) ! { ! REAL(out,ostride,k1 + e1 * p_1) = REAL(in,istride,k1 + e1 * m) ; ! IMAG(out,ostride,k1 + e1 * p_1) = IMAG(in,istride,k1 + e1 * m) ; ! } } --- 149,156 ---- { for (k1 = 0; k1 < p_1; k1++) ! { ! REAL(out,ostride,k1 + e1 * p_1) = REAL(in,istride,k1 + e1 * m) ; ! IMAG(out,ostride,k1 + e1 * p_1) = IMAG(in,istride,k1 + e1 * m) ; ! } } *************** *** 161,170 **** { for (k1 = 0; k1 < p_1; k1++) ! { ! REAL(out,ostride,j) = REAL(in,istride,i); ! IMAG(out,ostride,j) = IMAG(in,istride,i); ! i++; ! j++; ! } j += jump; } --- 161,170 ---- { for (k1 = 0; k1 < p_1; k1++) ! { ! REAL(out,ostride,j) = REAL(in,istride,i); ! IMAG(out,ostride,j) = IMAG(in,istride,i); ! i++; ! j++; ! } j += jump; } *************** *** 176,200 **** { for (k1 = 0; k1 < p_1; k1++) ! { ! for (e1 = 1; e1 < factor; e1++) ! { ! ATOMIC x_real = REAL(in, istride,i + e1 * m); ! ATOMIC x_imag = IMAG(in, istride,i + e1 * m); ! ! ATOMIC w_real, w_imag ; ! if (sign == forward) { ! w_real = GSL_REAL(twiddle[(e1-1)*q + k-1]) ; ! w_imag = GSL_IMAG(twiddle[(e1-1)*q + k-1]) ; ! } else { ! w_real = GSL_REAL(twiddle[(e1-1)*q + k-1]) ; ! w_imag = -GSL_IMAG(twiddle[(e1-1)*q + k-1]) ; ! } ! ! REAL(out,ostride,j + e1 * p_1) = w_real * x_real - w_imag * x_imag; ! IMAG(out,ostride,j + e1 * p_1) = w_real * x_imag + w_imag * x_real; ! } ! i++; ! j++; ! } j += jump; } --- 176,200 ---- { for (k1 = 0; k1 < p_1; k1++) ! { ! for (e1 = 1; e1 < factor; e1++) ! { ! ATOMIC x_real = REAL(in, istride,i + e1 * m); ! ATOMIC x_imag = IMAG(in, istride,i + e1 * m); ! ! ATOMIC w_real, w_imag ; ! if (sign == forward) { ! w_real = GSL_REAL(twiddle[(e1-1)*q + k-1]) ; ! w_imag = GSL_IMAG(twiddle[(e1-1)*q + k-1]) ; ! } else { ! w_real = GSL_REAL(twiddle[(e1-1)*q + k-1]) ; ! w_imag = -GSL_IMAG(twiddle[(e1-1)*q + k-1]) ; ! } ! ! REAL(out,ostride,j + e1 * p_1) = w_real * x_real - w_imag * x_imag; ! IMAG(out,ostride,j + e1 * p_1) = w_real * x_imag + w_imag * x_real; ! } ! i++; ! j++; ! } j += jump; } diff -x.info* -rc2P gsl-1.3/fft/c_radix2.c gsl-1.4/fft/c_radix2.c *** gsl-1.3/fft/c_radix2.c Tue May 1 22:22:29 2001 --- gsl-1.4/fft/c_radix2.c Fri Jul 25 15:18:10 2003 *************** *** 20,24 **** int FUNCTION(gsl_fft_complex,radix2_forward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, const size_t n) { gsl_fft_direction sign = forward; --- 20,24 ---- int FUNCTION(gsl_fft_complex,radix2_forward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, const size_t n) { gsl_fft_direction sign = forward; *************** *** 29,33 **** int FUNCTION(gsl_fft_complex,radix2_backward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, const size_t n) { gsl_fft_direction sign = backward; --- 29,33 ---- int FUNCTION(gsl_fft_complex,radix2_backward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, const size_t n) { gsl_fft_direction sign = backward; *************** *** 38,42 **** int FUNCTION(gsl_fft_complex,radix2_inverse) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, const size_t n) { gsl_fft_direction sign = backward; --- 38,42 ---- int FUNCTION(gsl_fft_complex,radix2_inverse) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, const size_t n) { gsl_fft_direction sign = backward; *************** *** 55,60 **** for (i = 0; i < n; i++) { ! REAL(data,stride,i) *= norm; ! IMAG(data,stride,i) *= norm; } } --- 55,60 ---- for (i = 0; i < n; i++) { ! REAL(data,stride,i) *= norm; ! IMAG(data,stride,i) *= norm; } } *************** *** 67,73 **** int FUNCTION(gsl_fft_complex,radix2_transform) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const gsl_fft_direction sign) { int result ; --- 67,73 ---- int FUNCTION(gsl_fft_complex,radix2_transform) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const gsl_fft_direction sign) { int result ; *************** *** 119,169 **** for (b = 0; b < n; b += 2 * dual) ! { ! const size_t i = b ; ! const size_t j = b + dual; ! ! const ATOMIC z1_real = REAL(data,stride,j) ; ! const ATOMIC z1_imag = IMAG(data,stride,j) ; ! ! const ATOMIC wd_real = z1_real ; ! const ATOMIC wd_imag = z1_imag ; ! ! REAL(data,stride,j) = REAL(data,stride,i) - wd_real; ! IMAG(data,stride,j) = IMAG(data,stride,i) - wd_imag; ! REAL(data,stride,i) += wd_real; ! IMAG(data,stride,i) += wd_imag; ! } /* a = 1 .. (dual-1) */ for (a = 1; a < dual; a++) ! { ! /* trignometric recurrence for w-> exp(i theta) w */ ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! for (b = 0; b < n; b += 2 * dual) ! { ! const size_t i = b + a; ! const size_t j = b + a + dual; ! ! const ATOMIC z1_real = REAL(data,stride,j) ; ! const ATOMIC z1_imag = IMAG(data,stride,j) ; ! ! const ATOMIC wd_real = w_real * z1_real - w_imag * z1_imag; ! const ATOMIC wd_imag = w_real * z1_imag + w_imag * z1_real; ! ! REAL(data,stride,j) = REAL(data,stride,i) - wd_real; ! IMAG(data,stride,j) = IMAG(data,stride,i) - wd_imag; ! REAL(data,stride,i) += wd_real; ! IMAG(data,stride,i) += wd_imag; ! } ! } dual *= 2; } --- 119,169 ---- for (b = 0; b < n; b += 2 * dual) ! { ! const size_t i = b ; ! const size_t j = b + dual; ! ! const ATOMIC z1_real = REAL(data,stride,j) ; ! const ATOMIC z1_imag = IMAG(data,stride,j) ; ! ! const ATOMIC wd_real = z1_real ; ! const ATOMIC wd_imag = z1_imag ; ! ! REAL(data,stride,j) = REAL(data,stride,i) - wd_real; ! IMAG(data,stride,j) = IMAG(data,stride,i) - wd_imag; ! REAL(data,stride,i) += wd_real; ! IMAG(data,stride,i) += wd_imag; ! } /* a = 1 .. (dual-1) */ for (a = 1; a < dual; a++) ! { ! /* trignometric recurrence for w-> exp(i theta) w */ ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! for (b = 0; b < n; b += 2 * dual) ! { ! const size_t i = b + a; ! const size_t j = b + a + dual; ! ! const ATOMIC z1_real = REAL(data,stride,j) ; ! const ATOMIC z1_imag = IMAG(data,stride,j) ; ! ! const ATOMIC wd_real = w_real * z1_real - w_imag * z1_imag; ! const ATOMIC wd_imag = w_real * z1_imag + w_imag * z1_real; ! ! REAL(data,stride,j) = REAL(data,stride,i) - wd_real; ! IMAG(data,stride,j) = IMAG(data,stride,i) - wd_imag; ! REAL(data,stride,i) += wd_real; ! IMAG(data,stride,i) += wd_imag; ! } ! } dual *= 2; } *************** *** 176,181 **** int FUNCTION(gsl_fft_complex,radix2_dif_forward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n) { gsl_fft_direction sign = forward; --- 176,181 ---- int FUNCTION(gsl_fft_complex,radix2_dif_forward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n) { gsl_fft_direction sign = forward; *************** *** 186,191 **** int FUNCTION(gsl_fft_complex,radix2_dif_backward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n) { gsl_fft_direction sign = backward; --- 186,191 ---- int FUNCTION(gsl_fft_complex,radix2_dif_backward) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n) { gsl_fft_direction sign = backward; *************** *** 196,201 **** int FUNCTION(gsl_fft_complex,radix2_dif_inverse) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n) { gsl_fft_direction sign = backward; --- 196,201 ---- int FUNCTION(gsl_fft_complex,radix2_dif_inverse) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n) { gsl_fft_direction sign = backward; *************** *** 214,219 **** for (i = 0; i < n; i++) { ! REAL(data,stride,i) *= norm; ! IMAG(data,stride,i) *= norm; } } --- 214,219 ---- for (i = 0; i < n; i++) { ! REAL(data,stride,i) *= norm; ! IMAG(data,stride,i) *= norm; } } *************** *** 224,230 **** int FUNCTION(gsl_fft_complex,radix2_dif_transform) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const gsl_fft_direction sign) { int result ; --- 224,230 ---- int FUNCTION(gsl_fft_complex,radix2_dif_transform) (TYPE(gsl_complex_packed_array) data, ! const size_t stride, ! const size_t n, ! const gsl_fft_direction sign) { int result ; *************** *** 270,299 **** for (b = 0; b < dual; b++) ! { ! for (a = 0; a < n; a+= 2 * dual) ! { ! const size_t i = b + a; ! const size_t j = b + a + dual; ! ! const ATOMIC t1_real = REAL(data,stride,i) + REAL(data,stride,j); ! const ATOMIC t1_imag = IMAG(data,stride,i) + IMAG(data,stride,j); ! const ATOMIC t2_real = REAL(data,stride,i) - REAL(data,stride,j); ! const ATOMIC t2_imag = IMAG(data,stride,i) - IMAG(data,stride,j); ! ! REAL(data,stride,i) = t1_real; ! IMAG(data,stride,i) = t1_imag; ! REAL(data,stride,j) = w_real*t2_real - w_imag * t2_imag; ! IMAG(data,stride,j) = w_real*t2_imag + w_imag * t2_real; ! } ! ! /* trignometric recurrence for w-> exp(i theta) w */ ! ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! } dual /= 2; } --- 270,299 ---- for (b = 0; b < dual; b++) ! { ! for (a = 0; a < n; a+= 2 * dual) ! { ! const size_t i = b + a; ! const size_t j = b + a + dual; ! ! const ATOMIC t1_real = REAL(data,stride,i) + REAL(data,stride,j); ! const ATOMIC t1_imag = IMAG(data,stride,i) + IMAG(data,stride,j); ! const ATOMIC t2_real = REAL(data,stride,i) - REAL(data,stride,j); ! const ATOMIC t2_imag = IMAG(data,stride,i) - IMAG(data,stride,j); ! ! REAL(data,stride,i) = t1_real; ! IMAG(data,stride,i) = t1_imag; ! REAL(data,stride,j) = w_real*t2_real - w_imag * t2_imag; ! IMAG(data,stride,j) = w_real*t2_imag + w_imag * t2_real; ! } ! ! /* trignometric recurrence for w-> exp(i theta) w */ ! ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! } dual /= 2; } diff -x.info* -rc2P gsl-1.3/fft/compare.h gsl-1.4/fft/compare.h *** gsl-1.3/fft/compare.h Wed Apr 18 21:52:53 2001 --- gsl-1.4/fft/compare.h Fri Jul 25 15:18:18 2003 *************** *** 20,30 **** int FUNCTION(compare_complex,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks); int FUNCTION(compare_real,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks); --- 20,30 ---- int FUNCTION(compare_complex,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks); int FUNCTION(compare_real,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks); diff -x.info* -rc2P gsl-1.3/fft/compare_source.c gsl-1.4/fft/compare_source.c *** gsl-1.3/fft/compare_source.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/fft/compare_source.c Fri Jul 25 15:18:10 2003 *************** *** 22,28 **** int FUNCTION(compare_complex,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks) { size_t i; --- 22,28 ---- int FUNCTION(compare_complex,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks) { size_t i; *************** *** 37,43 **** ticks = (fabs (dr) + fabs (di)) / BASE_EPSILON; if (ticks > max_ticks) ! { ! max_ticks = ticks; ! } } --- 37,43 ---- ticks = (fabs (dr) + fabs (di)) / BASE_EPSILON; if (ticks > max_ticks) ! { ! max_ticks = ticks; ! } } *************** *** 56,71 **** if (ticks > 1000) ! { ! flag = "***"; ! } else ! { ! flag = ""; ! } printf ("%15s: %d %.16f %.16f %s\n", name_a, (int)i, ! a[2*stride*i], a[2*stride*i+1], flag); printf ("%15s: %d %.16f %.16f %e %s\n", name_b, (int)i, ! b[2*stride*i], b[2*stride*i+1], ticks, flag); } --- 56,71 ---- if (ticks > 1000) ! { ! flag = "***"; ! } else ! { ! flag = ""; ! } printf ("%15s: %d %.16f %.16f %s\n", name_a, (int)i, ! a[2*stride*i], a[2*stride*i+1], flag); printf ("%15s: %d %.16f %.16f %e %s\n", name_b, (int)i, ! b[2*stride*i], b[2*stride*i+1], ticks, flag); } *************** *** 76,82 **** int FUNCTION(compare_real,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks) { size_t i; --- 76,82 ---- int FUNCTION(compare_real,results) (const char *name_a, const BASE a[], ! const char *name_b, const BASE b[], ! size_t stride, size_t n, ! const double allowed_ticks) { size_t i; *************** *** 90,96 **** ticks = fabs (dr) / BASE_EPSILON; if (ticks > max_ticks) ! { ! max_ticks = ticks; ! } } --- 90,96 ---- ticks = fabs (dr) / BASE_EPSILON; if (ticks > max_ticks) ! { ! max_ticks = ticks; ! } } *************** *** 108,123 **** if (ticks > 1000) ! { ! flag = "***"; ! } else ! { ! flag = ""; ! } printf ("%15s: %d %.16f %s\n", name_a, (int)i, ! a[stride*i], flag); printf ("%15s: %d %.16f %e %s\n", name_b, (int)i, ! b[stride*i], ticks, flag); } --- 108,123 ---- if (ticks > 1000) ! { ! flag = "***"; ! } else ! { ! flag = ""; ! } printf ("%15s: %d %.16f %s\n", name_a, (int)i, ! a[stride*i], flag); printf ("%15s: %d %.16f %e %s\n", name_b, (int)i, ! b[stride*i], ticks, flag); } diff -x.info* -rc2P gsl-1.3/fft/dft_source.c gsl-1.4/fft/dft_source.c *** gsl-1.3/fft/dft_source.c Tue May 1 22:22:29 2001 --- gsl-1.4/fft/dft_source.c Fri Jul 25 15:18:10 2003 *************** *** 20,25 **** int FUNCTION(gsl_dft_complex,forward) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[]) { gsl_fft_direction sign = forward; --- 20,25 ---- int FUNCTION(gsl_dft_complex,forward) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[]) { gsl_fft_direction sign = forward; *************** *** 30,35 **** int FUNCTION(gsl_dft_complex,backward) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[]) { gsl_fft_direction sign = backward; --- 30,35 ---- int FUNCTION(gsl_dft_complex,backward) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[]) { gsl_fft_direction sign = backward; *************** *** 41,46 **** int FUNCTION(gsl_dft_complex,inverse) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[]) { gsl_fft_direction sign = backward; --- 41,46 ---- int FUNCTION(gsl_dft_complex,inverse) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[]) { gsl_fft_direction sign = backward; *************** *** 54,59 **** for (i = 0; i < n; i++) { ! REAL(result,stride,i) *= norm; ! IMAG(result,stride,i) *= norm; } } --- 54,59 ---- for (i = 0; i < n; i++) { ! REAL(result,stride,i) *= norm; ! IMAG(result,stride,i) *= norm; } } *************** *** 63,69 **** int FUNCTION(gsl_dft_complex,transform) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[], ! const gsl_fft_direction sign) { --- 63,69 ---- int FUNCTION(gsl_dft_complex,transform) (const BASE data[], ! const size_t stride, const size_t n, ! BASE result[], ! const gsl_fft_direction sign) { *************** *** 82,100 **** for (j = 0; j < n; j++) ! { ! double theta = d_theta * (double) exponent; ! /* sum = exp(i theta) * data[j] */ ! ATOMIC w_real = (ATOMIC) cos (theta); ! ATOMIC w_imag = (ATOMIC) sin (theta); ! ATOMIC data_real = REAL(data,stride,j); ! ATOMIC data_imag = IMAG(data,stride,j); ! sum_real += w_real * data_real - w_imag * data_imag; ! sum_imag += w_real * data_imag + w_imag * data_real; ! exponent = (exponent + i) % n; ! } REAL(result,stride,i) = sum_real; IMAG(result,stride,i) = sum_imag; --- 82,100 ---- for (j = 0; j < n; j++) ! { ! double theta = d_theta * (double) exponent; ! /* sum = exp(i theta) * data[j] */ ! ATOMIC w_real = (ATOMIC) cos (theta); ! ATOMIC w_imag = (ATOMIC) sin (theta); ! ATOMIC data_real = REAL(data,stride,j); ! ATOMIC data_imag = IMAG(data,stride,j); ! sum_real += w_real * data_real - w_imag * data_imag; ! sum_imag += w_real * data_imag + w_imag * data_real; ! exponent = (exponent + i) % n; ! } REAL(result,stride,i) = sum_real; IMAG(result,stride,i) = sum_imag; diff -x.info* -rc2P gsl-1.3/fft/factorize.c gsl-1.4/fft/factorize.c *** gsl-1.3/fft/factorize.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/fft/factorize.c Fri Jul 25 15:18:10 2003 *************** *** 26,31 **** static int fft_complex_factorize (const size_t n, ! size_t *nf, ! size_t factors[]) { const size_t complex_subtransforms[] = --- 26,31 ---- static int fft_complex_factorize (const size_t n, ! size_t *nf, ! size_t factors[]) { const size_t complex_subtransforms[] = *************** *** 41,46 **** static int fft_halfcomplex_factorize (const size_t n, ! size_t *nf, ! size_t factors[]) { const size_t halfcomplex_subtransforms[] = --- 41,46 ---- static int fft_halfcomplex_factorize (const size_t n, ! size_t *nf, ! size_t factors[]) { const size_t halfcomplex_subtransforms[] = *************** *** 53,58 **** static int fft_real_factorize (const size_t n, ! size_t *nf, ! size_t factors[]) { const size_t real_subtransforms[] = --- 53,58 ---- static int fft_real_factorize (const size_t n, ! size_t *nf, ! size_t factors[]) { const size_t real_subtransforms[] = *************** *** 66,72 **** static int fft_factorize (const size_t n, ! const size_t implemented_subtransforms[], ! size_t *n_factors, ! size_t factors[]) { --- 66,72 ---- static int fft_factorize (const size_t n, ! const size_t implemented_subtransforms[], ! size_t *n_factors, ! size_t factors[]) { *************** *** 94,102 **** factor = implemented_subtransforms[i]; while ((ntest % factor) == 0) ! { ! ntest = ntest / factor; ! factors[nf] = factor; ! nf++; ! } i++; } --- 94,102 ---- factor = implemented_subtransforms[i]; while ((ntest % factor) == 0) ! { ! ntest = ntest / factor; ! factors[nf] = factor; ! nf++; ! } i++; } *************** *** 120,126 **** { while ((ntest % factor) != 0) ! { ! factor += 2; ! } ntest = ntest / factor; factors[nf] = factor; --- 120,126 ---- { while ((ntest % factor) != 0) ! { ! factor += 2; ! } ntest = ntest / factor; factors[nf] = factor; *************** *** 134,143 **** for (i = 0; i < nf; i++) { ! product *= factors[i]; } if (product != n) { ! GSL_ERROR ("factorization failed", GSL_ESANITY); } } --- 134,143 ---- for (i = 0; i < nf; i++) { ! product *= factors[i]; } if (product != n) { ! GSL_ERROR ("factorization failed", GSL_ESANITY); } } diff -x.info* -rc2P gsl-1.3/fft/fft.c gsl-1.4/fft/fft.c *** gsl-1.3/fft/fft.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/fft/fft.c Fri Jul 25 15:18:10 2003 *************** *** 27,31 **** #define BASE_DOUBLE #include "templates_on.h" - #include "c_pass.h" #include "c_init.c" #include "c_main.c" --- 27,30 ---- *************** *** 43,47 **** #define BASE_FLOAT #include "templates_on.h" - #include "c_pass.h" #include "c_init.c" #include "c_main.c" --- 42,45 ---- *************** *** 62,66 **** #define BASE_DOUBLE #include "templates_on.h" - #include "hc_pass.h" #include "hc_init.c" #include "hc_main.c" --- 60,63 ---- *************** *** 77,81 **** #define BASE_FLOAT #include "templates_on.h" - #include "hc_pass.h" #include "hc_init.c" #include "hc_main.c" --- 74,77 ---- *************** *** 95,99 **** #define BASE_DOUBLE #include "templates_on.h" - #include "real_pass.h" #include "real_init.c" #include "real_main.c" --- 91,94 ---- *************** *** 110,114 **** #define BASE_FLOAT #include "templates_on.h" - #include "real_pass.h" #include "real_init.c" #include "real_main.c" --- 105,108 ---- diff -x.info* -rc2P gsl-1.3/fft/gsl_dft_complex.h gsl-1.4/fft/gsl_dft_complex.h *** gsl-1.3/fft/gsl_dft_complex.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/fft/gsl_dft_complex.h Fri Jul 25 15:18:18 2003 *************** *** 40,53 **** int gsl_dft_complex_forward (const double data[], const size_t stride, const size_t n, ! double result[]); int gsl_dft_complex_backward (const double data[], const size_t stride, const size_t n, ! double result[]); int gsl_dft_complex_inverse (const double data[], const size_t stride, const size_t n, ! double result[]); int gsl_dft_complex_transform (const double data[], const size_t stride, const size_t n, ! double result[], const gsl_fft_direction sign); __END_DECLS --- 40,53 ---- int gsl_dft_complex_forward (const double data[], const size_t stride, const size_t n, ! double result[]); int gsl_dft_complex_backward (const double data[], const size_t stride, const size_t n, ! double result[]); int gsl_dft_complex_inverse (const double data[], const size_t stride, const size_t n, ! double result[]); int gsl_dft_complex_transform (const double data[], const size_t stride, const size_t n, ! double result[], const gsl_fft_direction sign); __END_DECLS diff -x.info* -rc2P gsl-1.3/fft/gsl_dft_complex_float.h gsl-1.4/fft/gsl_dft_complex_float.h *** gsl-1.3/fft/gsl_dft_complex_float.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/fft/gsl_dft_complex_float.h Fri Jul 25 15:18:18 2003 *************** *** 40,53 **** int gsl_dft_complex_float_forward (const float data[], const size_t stride, const size_t n, ! float result[]); int gsl_dft_complex_float_backward (const float data[], const size_t stride, const size_t n, ! float result[]); int gsl_dft_complex_float_inverse (const float data[], const size_t stride, const size_t n, ! float result[]); int gsl_dft_complex_float_transform (const float data[], const size_t stride, const size_t n, ! float result[], const gsl_fft_direction sign); __END_DECLS --- 40,53 ---- int gsl_dft_complex_float_forward (const float data[], const size_t stride, const size_t n, ! float result[]); int gsl_dft_complex_float_backward (const float data[], const size_t stride, const size_t n, ! float result[]); int gsl_dft_complex_float_inverse (const float data[], const size_t stride, const size_t n, ! float result[]); int gsl_dft_complex_float_transform (const float data[], const size_t stride, const size_t n, ! float result[], const gsl_fft_direction sign); __END_DECLS diff -x.info* -rc2P gsl-1.3/fft/gsl_fft_halfcomplex.h gsl-1.4/fft/gsl_fft_halfcomplex.h *** gsl-1.3/fft/gsl_fft_halfcomplex.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/fft/gsl_fft_halfcomplex.h Fri Jul 25 15:18:18 2003 *************** *** 61,84 **** int gsl_fft_halfcomplex_backward (double data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work); int gsl_fft_halfcomplex_inverse (double data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work); int gsl_fft_halfcomplex_transform (double data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work); int gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[], ! double complex_coefficient[], ! const size_t stride, const size_t n); int gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[], ! double complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS --- 61,84 ---- int gsl_fft_halfcomplex_backward (double data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work); int gsl_fft_halfcomplex_inverse (double data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work); int gsl_fft_halfcomplex_transform (double data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable * wavetable, gsl_fft_real_workspace * work); int gsl_fft_halfcomplex_unpack (const double halfcomplex_coefficient[], ! double complex_coefficient[], ! const size_t stride, const size_t n); int gsl_fft_halfcomplex_radix2_unpack (const double halfcomplex_coefficient[], ! double complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS diff -x.info* -rc2P gsl-1.3/fft/gsl_fft_halfcomplex_float.h gsl-1.4/fft/gsl_fft_halfcomplex_float.h *** gsl-1.3/fft/gsl_fft_halfcomplex_float.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/fft/gsl_fft_halfcomplex_float.h Fri Jul 25 15:18:18 2003 *************** *** 61,69 **** int gsl_fft_halfcomplex_float_backward (float data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable_float * wavetable, gsl_fft_real_workspace_float * work); int gsl_fft_halfcomplex_float_inverse (float data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable_float * wavetable, gsl_fft_real_workspace_float * work); --- 61,69 ---- int gsl_fft_halfcomplex_float_backward (float data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable_float * wavetable, gsl_fft_real_workspace_float * work); int gsl_fft_halfcomplex_float_inverse (float data[], const size_t stride, const size_t n, ! const gsl_fft_halfcomplex_wavetable_float * wavetable, gsl_fft_real_workspace_float * work); *************** *** 74,84 **** int gsl_fft_halfcomplex_float_unpack (const float halfcomplex_coefficient[], ! float complex_coefficient[], ! const size_t stride, const size_t n); int gsl_fft_halfcomplex_float_radix2_unpack (const float halfcomplex_coefficient[], ! float complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS --- 74,84 ---- int gsl_fft_halfcomplex_float_unpack (const float halfcomplex_coefficient[], ! float complex_coefficient[], ! const size_t stride, const size_t n); int gsl_fft_halfcomplex_float_radix2_unpack (const float halfcomplex_coefficient[], ! float complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS diff -x.info* -rc2P gsl-1.3/fft/gsl_fft_real.h gsl-1.4/fft/gsl_fft_real.h *** gsl-1.3/fft/gsl_fft_real.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/fft/gsl_fft_real.h Fri Jul 25 15:18:18 2003 *************** *** 73,78 **** int gsl_fft_real_unpack (const double real_coefficient[], ! double complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS --- 73,78 ---- int gsl_fft_real_unpack (const double real_coefficient[], ! double complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS diff -x.info* -rc2P gsl-1.3/fft/gsl_fft_real_float.h gsl-1.4/fft/gsl_fft_real_float.h *** gsl-1.3/fft/gsl_fft_real_float.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/fft/gsl_fft_real_float.h Fri Jul 25 15:18:18 2003 *************** *** 72,77 **** int gsl_fft_real_float_unpack (const float real_float_coefficient[], ! float complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS --- 72,77 ---- int gsl_fft_real_float_unpack (const float real_float_coefficient[], ! float complex_coefficient[], ! const size_t stride, const size_t n); __END_DECLS diff -x.info* -rc2P gsl-1.3/fft/hc_init.c gsl-1.4/fft/hc_init.c *** gsl-1.3/fft/hc_init.c Tue Jul 24 13:30:38 2001 --- gsl-1.4/fft/hc_init.c Fri Jul 25 15:18:10 2003 *************** *** 51,55 **** GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", ! GSL_ENOMEM, 0); } --- 51,55 ---- GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", ! GSL_ENOMEM, 0); } *************** *** 79,102 **** const size_t factor = wavetable->factor[i]; wavetable->twiddle[i] = wavetable->trig + t; ! product_1 = product; /* product_1 = p_(i-1) */ product *= factor; q = n / product; for (j = 1; j < factor; j++) ! { ! size_t k; ! size_t m = 0; ! for (k = 1; k < (q + 1) / 2; k++) ! { ! double theta; ! m = m + j * product_1; ! m = m % n; ! theta = d_theta * m; /* d_theta*j*k*product_1 */ ! GSL_REAL(wavetable->trig[t]) = cos (theta); ! GSL_IMAG(wavetable->trig[t]) = sin (theta); ! ! t++; ! } ! } } --- 79,102 ---- const size_t factor = wavetable->factor[i]; wavetable->twiddle[i] = wavetable->trig + t; ! product_1 = product; /* product_1 = p_(i-1) */ product *= factor; q = n / product; for (j = 1; j < factor; j++) ! { ! size_t k; ! size_t m = 0; ! for (k = 1; k < (q + 1) / 2; k++) ! { ! double theta; ! m = m + j * product_1; ! m = m % n; ! theta = d_theta * m; /* d_theta*j*k*product_1 */ ! GSL_REAL(wavetable->trig[t]) = cos (theta); ! GSL_IMAG(wavetable->trig[t]) = sin (theta); ! ! t++; ! } ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_main.c gsl-1.4/fft/hc_main.c *** gsl-1.3/fft/hc_main.c Tue Jul 24 13:30:55 2001 --- gsl-1.4/fft/hc_main.c Fri Jul 25 15:18:10 2003 *************** *** 30,35 **** int FUNCTION(gsl_fft_halfcomplex,backward) (BASE data[], const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { --- 30,35 ---- int FUNCTION(gsl_fft_halfcomplex,backward) (BASE data[], const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { *************** *** 40,45 **** int FUNCTION(gsl_fft_halfcomplex,inverse) (BASE data[], const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { --- 40,45 ---- int FUNCTION(gsl_fft_halfcomplex,inverse) (BASE data[], const size_t stride, ! const size_t n, ! const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { *************** *** 58,62 **** for (i = 0; i < n; i++) { ! data[stride*i] *= norm; } } --- 58,62 ---- for (i = 0; i < n; i++) { ! data[stride*i] *= norm; } } *************** *** 66,70 **** int FUNCTION(gsl_fft_halfcomplex,transform) (BASE data[], const size_t stride, const size_t n, ! const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { --- 66,70 ---- int FUNCTION(gsl_fft_halfcomplex,transform) (BASE data[], const size_t stride, const size_t n, ! const TYPE(gsl_fft_halfcomplex_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { *************** *** 90,94 **** if (n == 1) ! { /* FFT of one data point is the identity */ return 0; } --- 90,94 ---- if (n == 1) ! { /* FFT of one data point is the identity */ return 0; } *************** *** 118,183 **** if (state == 0) ! { ! in = data; ! istride = stride; ! out = scratch; ! ostride = 1; ! state = 1; ! } else ! { ! in = scratch; ! istride = 1; ! out = data; ! ostride = stride; ! state = 0; ! } if (factor == 2) ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_halfcomplex,pass_2) (in, istride, out, ostride, ! product, n, twiddle1); ! } else if (factor == 3) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! FUNCTION(fft_halfcomplex,pass_3) (in, istride, out, ostride, ! product, n, twiddle1, twiddle2); ! } else if (factor == 4) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! FUNCTION(fft_halfcomplex,pass_4) (in, istride, out, ostride, ! product, n, twiddle1, twiddle2, ! twiddle3); ! } else if (factor == 5) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! twiddle4 = twiddle3 + tskip; ! FUNCTION(fft_halfcomplex,pass_5) (in, istride, out, ostride, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4); ! } else ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_halfcomplex,pass_n) (in, istride, out, ostride, ! factor, product, n, twiddle1); ! } } ! if (state == 1) /* copy results back from scratch to data */ { for (i = 0; i < n; i++) ! { ! data[stride*i] = scratch[i] ; ! } } --- 118,183 ---- if (state == 0) ! { ! in = data; ! istride = stride; ! out = scratch; ! ostride = 1; ! state = 1; ! } else ! { ! in = scratch; ! istride = 1; ! out = data; ! ostride = stride; ! state = 0; ! } if (factor == 2) ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_halfcomplex,pass_2) (in, istride, out, ostride, ! product, n, twiddle1); ! } else if (factor == 3) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! FUNCTION(fft_halfcomplex,pass_3) (in, istride, out, ostride, ! product, n, twiddle1, twiddle2); ! } else if (factor == 4) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! FUNCTION(fft_halfcomplex,pass_4) (in, istride, out, ostride, ! product, n, twiddle1, twiddle2, ! twiddle3); ! } else if (factor == 5) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! twiddle4 = twiddle3 + tskip; ! FUNCTION(fft_halfcomplex,pass_5) (in, istride, out, ostride, ! product, n, twiddle1, twiddle2, ! twiddle3, twiddle4); ! } else ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_halfcomplex,pass_n) (in, istride, out, ostride, ! factor, product, n, twiddle1); ! } } ! if (state == 1) /* copy results back from scratch to data */ { for (i = 0; i < n; i++) ! { ! data[stride*i] = scratch[i] ; ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_pass.h gsl-1.4/fft/hc_pass.h *** gsl-1.3/fft/hc_pass.h Tue Jul 24 13:31:07 2001 --- gsl-1.4/fft/hc_pass.h Fri Jul 25 15:18:18 2003 *************** *** 22,74 **** static void FUNCTION(fft_halfcomplex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); static void FUNCTION(fft_halfcomplex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]); static void FUNCTION(fft_halfcomplex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]); static void FUNCTION(fft_halfcomplex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]); static void FUNCTION(fft_halfcomplex,pass_n) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); --- 22,74 ---- static void FUNCTION(fft_halfcomplex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); static void FUNCTION(fft_halfcomplex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]); static void FUNCTION(fft_halfcomplex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]); static void FUNCTION(fft_halfcomplex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]); static void FUNCTION(fft_halfcomplex,pass_n) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]); diff -x.info* -rc2P gsl-1.3/fft/hc_pass_2.c gsl-1.4/fft/hc_pass_2.c *** gsl-1.3/fft/hc_pass_2.c Tue Jul 24 13:31:15 2001 --- gsl-1.4/fft/hc_pass_2.c Fri Jul 25 15:18:10 2003 *************** *** 20,29 **** static void FUNCTION(fft_halfcomplex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t i, j, k, k1, jump; --- 20,29 ---- static void FUNCTION(fft_halfcomplex,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t i, j, k, k1, jump; *************** *** 59,92 **** for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 2 * k1 * q + 2 * k - 1; ! const size_t from1 = 2 * k1 * q - 2 * k + 2 * q - 1; ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! /* compute x = W(2) z */ ! /* x0 = z0 + z1 */ ! const ATOMIC x0_real = z0_real + z1_real; ! const ATOMIC x0_imag = z0_imag - z1_imag; ! /* x1 = z0 - z1 */ ! const ATOMIC x1_real = z0_real - z1_real; ! const ATOMIC x1_imag = z0_imag + z1_imag; ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! VECTOR(out,ostride,to1) = w_real * x1_real - w_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w_imag * x1_real + w_real * x1_imag; ! } } --- 59,92 ---- for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 2 * k1 * q + 2 * k - 1; ! const size_t from1 = 2 * k1 * q - 2 * k + 2 * q - 1; ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! /* compute x = W(2) z */ ! /* x0 = z0 + z1 */ ! const ATOMIC x0_real = z0_real + z1_real; ! const ATOMIC x0_imag = z0_imag - z1_imag; ! /* x1 = z0 - z1 */ ! const ATOMIC x1_real = z0_real - z1_real; ! const ATOMIC x1_imag = z0_imag + z1_imag; ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! VECTOR(out,ostride,to1) = w_real * x1_real - w_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w_imag * x1_real + w_real * x1_imag; ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_pass_3.c gsl-1.4/fft/hc_pass_3.c *** gsl-1.3/fft/hc_pass_3.c Tue Jul 24 13:31:42 2001 --- gsl-1.4/fft/hc_pass_3.c Fri Jul 25 15:18:10 2003 *************** *** 20,30 **** static void FUNCTION(fft_halfcomplex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]) { size_t i, j, k, k1, jump; --- 20,30 ---- static void FUNCTION(fft_halfcomplex,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]) { size_t i, j, k, k1, jump; *************** *** 76,133 **** for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 3 * k1 * q + 2 * k - 1; ! const size_t from1 = from0 + 2 * q; ! const size_t from2 = 3 * k1 * q - 2 * k + 2 * q - 1; ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC z2_real = VECTOR(in,istride,from2); ! const ATOMIC z2_imag = -VECTOR(in,istride,from2 + 1); ! /* compute x = W(3) z */ ! /* t1 = z1 + z2 */ ! const ATOMIC t1_real = z1_real + z2_real; ! const ATOMIC t1_imag = z1_imag + z2_imag; ! /* t2 = z0 - t1/2 */ ! const ATOMIC t2_real = z0_real - t1_real / 2.0; ! const ATOMIC t2_imag = z0_imag - t1_imag / 2.0; ! /* t3 = sin(pi/3)*(z1 - z2) */ ! const ATOMIC t3_real = tau * (z1_real - z2_real); ! const ATOMIC t3_imag = tau * (z1_imag - z2_imag); ! /* x0 = z0 + t1 */ ! const ATOMIC x0_real = z0_real + t1_real; ! const ATOMIC x0_imag = z0_imag + t1_imag; ! /* x1 = t2 + i t3 */ ! const ATOMIC x1_real = t2_real - t3_imag; ! const ATOMIC x1_imag = t2_imag + t3_real; ! /* x2 = t2 - i t3 */ ! const ATOMIC x2_real = t2_real + t3_imag; ! const ATOMIC x2_imag = t2_imag - t3_real; ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! const size_t to2 = to1 + m; ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w1_imag * x1_real + w1_real * x1_imag; ! VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; ! VECTOR(out,ostride,to2 + 1) = w2_imag * x2_real + w2_real * x2_imag; ! } } --- 76,133 ---- for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 3 * k1 * q + 2 * k - 1; ! const size_t from1 = from0 + 2 * q; ! const size_t from2 = 3 * k1 * q - 2 * k + 2 * q - 1; ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC z2_real = VECTOR(in,istride,from2); ! const ATOMIC z2_imag = -VECTOR(in,istride,from2 + 1); ! /* compute x = W(3) z */ ! /* t1 = z1 + z2 */ ! const ATOMIC t1_real = z1_real + z2_real; ! const ATOMIC t1_imag = z1_imag + z2_imag; ! /* t2 = z0 - t1/2 */ ! const ATOMIC t2_real = z0_real - t1_real / 2.0; ! const ATOMIC t2_imag = z0_imag - t1_imag / 2.0; ! /* t3 = sin(pi/3)*(z1 - z2) */ ! const ATOMIC t3_real = tau * (z1_real - z2_real); ! const ATOMIC t3_imag = tau * (z1_imag - z2_imag); ! /* x0 = z0 + t1 */ ! const ATOMIC x0_real = z0_real + t1_real; ! const ATOMIC x0_imag = z0_imag + t1_imag; ! /* x1 = t2 + i t3 */ ! const ATOMIC x1_real = t2_real - t3_imag; ! const ATOMIC x1_imag = t2_imag + t3_real; ! /* x2 = t2 - i t3 */ ! const ATOMIC x2_real = t2_real + t3_imag; ! const ATOMIC x2_imag = t2_imag - t3_real; ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! const size_t to2 = to1 + m; ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w1_imag * x1_real + w1_real * x1_imag; ! VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; ! VECTOR(out,ostride,to2 + 1) = w2_imag * x2_real + w2_real * x2_imag; ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_pass_4.c gsl-1.4/fft/hc_pass_4.c *** gsl-1.3/fft/hc_pass_4.c Tue Jul 24 13:31:42 2001 --- gsl-1.4/fft/hc_pass_4.c Fri Jul 25 15:18:10 2003 *************** *** 20,31 **** static void FUNCTION(fft_halfcomplex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]) { size_t i, j, k, k1, jump; --- 20,31 ---- static void FUNCTION(fft_halfcomplex,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]) { size_t i, j, k, k1, jump; *************** *** 81,155 **** for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 4 * k1 * q + 2 * k - 1; ! const size_t from1 = from0 + 2 * q; ! const size_t from2 = 4 * k1 * q - 2 * k + 2 * q - 1; ! const size_t from3 = from2 + 2 * q; ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC z2_real = VECTOR(in,istride,from3); ! const ATOMIC z2_imag = -VECTOR(in,istride,from3 + 1); ! const ATOMIC z3_real = VECTOR(in,istride,from2); ! const ATOMIC z3_imag = -VECTOR(in,istride,from2 + 1); ! /* compute x = W(4) z */ ! /* t1 = z0 + z2 */ ! const ATOMIC t1_real = z0_real + z2_real; ! const ATOMIC t1_imag = z0_imag + z2_imag; ! /* t2 = z1 + z3 */ ! const ATOMIC t2_real = z1_real + z3_real; ! const ATOMIC t2_imag = z1_imag + z3_imag; ! /* t3 = z0 - z2 */ ! const ATOMIC t3_real = z0_real - z2_real; ! const ATOMIC t3_imag = z0_imag - z2_imag; ! /* t4 = (z1 - z3) */ ! const ATOMIC t4_real = (z1_real - z3_real); ! const ATOMIC t4_imag = (z1_imag - z3_imag); ! /* x0 = t1 + t2 */ ! const ATOMIC x0_real = t1_real + t2_real; ! const ATOMIC x0_imag = t1_imag + t2_imag; ! /* x1 = t3 + i t4 */ ! const ATOMIC x1_real = t3_real - t4_imag; ! const ATOMIC x1_imag = t3_imag + t4_real; ! /* x2 = t1 - t2 */ ! const ATOMIC x2_real = t1_real - t2_real; ! const ATOMIC x2_imag = t1_imag - t2_imag; ! /* x3 = t3 - i t4 */ ! const ATOMIC x3_real = t3_real + t4_imag; ! const ATOMIC x3_imag = t3_imag - t4_real; ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! const size_t to2 = to1 + m; ! const size_t to3 = to2 + m; ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w1_imag * x1_real + w1_real * x1_imag; ! VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; ! VECTOR(out,ostride,to2 + 1) = w2_imag * x2_real + w2_real * x2_imag; ! /* to3 = w3 * x3 */ ! VECTOR(out,ostride,to3) = w3_real * x3_real - w3_imag * x3_imag; ! VECTOR(out,ostride,to3 + 1) = w3_real * x3_imag + w3_imag * x3_real; ! } } --- 81,155 ---- for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 4 * k1 * q + 2 * k - 1; ! const size_t from1 = from0 + 2 * q; ! const size_t from2 = 4 * k1 * q - 2 * k + 2 * q - 1; ! const size_t from3 = from2 + 2 * q; ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC z2_real = VECTOR(in,istride,from3); ! const ATOMIC z2_imag = -VECTOR(in,istride,from3 + 1); ! const ATOMIC z3_real = VECTOR(in,istride,from2); ! const ATOMIC z3_imag = -VECTOR(in,istride,from2 + 1); ! /* compute x = W(4) z */ ! /* t1 = z0 + z2 */ ! const ATOMIC t1_real = z0_real + z2_real; ! const ATOMIC t1_imag = z0_imag + z2_imag; ! /* t2 = z1 + z3 */ ! const ATOMIC t2_real = z1_real + z3_real; ! const ATOMIC t2_imag = z1_imag + z3_imag; ! /* t3 = z0 - z2 */ ! const ATOMIC t3_real = z0_real - z2_real; ! const ATOMIC t3_imag = z0_imag - z2_imag; ! /* t4 = (z1 - z3) */ ! const ATOMIC t4_real = (z1_real - z3_real); ! const ATOMIC t4_imag = (z1_imag - z3_imag); ! /* x0 = t1 + t2 */ ! const ATOMIC x0_real = t1_real + t2_real; ! const ATOMIC x0_imag = t1_imag + t2_imag; ! /* x1 = t3 + i t4 */ ! const ATOMIC x1_real = t3_real - t4_imag; ! const ATOMIC x1_imag = t3_imag + t4_real; ! /* x2 = t1 - t2 */ ! const ATOMIC x2_real = t1_real - t2_real; ! const ATOMIC x2_imag = t1_imag - t2_imag; ! /* x3 = t3 - i t4 */ ! const ATOMIC x3_real = t3_real + t4_imag; ! const ATOMIC x3_imag = t3_imag - t4_real; ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! const size_t to2 = to1 + m; ! const size_t to3 = to2 + m; ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w1_imag * x1_real + w1_real * x1_imag; ! VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; ! VECTOR(out,ostride,to2 + 1) = w2_imag * x2_real + w2_real * x2_imag; ! /* to3 = w3 * x3 */ ! VECTOR(out,ostride,to3) = w3_real * x3_real - w3_imag * x3_imag; ! VECTOR(out,ostride,to3 + 1) = w3_real * x3_imag + w3_imag * x3_real; ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_pass_5.c gsl-1.4/fft/hc_pass_5.c *** gsl-1.3/fft/hc_pass_5.c Tue Jul 24 13:31:42 2001 --- gsl-1.4/fft/hc_pass_5.c Fri Jul 25 15:18:10 2003 *************** *** 20,32 **** static void FUNCTION(fft_halfcomplex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]) { --- 20,32 ---- static void FUNCTION(fft_halfcomplex,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]) { *************** *** 100,219 **** for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 5 * k1 * q + 2 * k - 1; ! const size_t from1 = from0 + 2 * q; ! const size_t from2 = from1 + 2 * q; ! const size_t from3 = 5 * k1 * q - 2 * k + 2 * q - 1; ! const size_t from4 = from3 + 2 * q; ! ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! ! const ATOMIC z2_real = VECTOR(in,istride,from2); ! const ATOMIC z2_imag = VECTOR(in,istride,from2 + 1); ! ! const ATOMIC z3_real = VECTOR(in,istride,from4); ! const ATOMIC z3_imag = -VECTOR(in,istride,from4 + 1); ! ! const ATOMIC z4_real = VECTOR(in,istride,from3); ! const ATOMIC z4_imag = -VECTOR(in,istride,from3 + 1); ! ! /* compute x = W(5) z */ ! ! /* t1 = z1 + z4 */ ! const ATOMIC t1_real = z1_real + z4_real; ! const ATOMIC t1_imag = z1_imag + z4_imag; ! ! /* t2 = z2 + z3 */ ! const ATOMIC t2_real = z2_real + z3_real; ! const ATOMIC t2_imag = z2_imag + z3_imag; ! ! /* t3 = z1 - z4 */ ! const ATOMIC t3_real = z1_real - z4_real; ! const ATOMIC t3_imag = z1_imag - z4_imag; ! ! /* t4 = z2 - z3 */ ! const ATOMIC t4_real = z2_real - z3_real; ! const ATOMIC t4_imag = z2_imag - z3_imag; ! ! /* t5 = t1 + t2 */ ! const ATOMIC t5_real = t1_real + t2_real; ! const ATOMIC t5_imag = t1_imag + t2_imag; ! ! /* t6 = (sqrt(5)/4)(t1 - t2) */ ! const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); ! const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); ! ! /* t7 = z0 - ((t5)/4) */ ! const ATOMIC t7_real = z0_real - t5_real / 4.0; ! const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; ! ! /* t8 = t7 + t6 */ ! const ATOMIC t8_real = t7_real + t6_real; ! const ATOMIC t8_imag = t7_imag + t6_imag; ! ! /* t9 = t7 - t6 */ ! const ATOMIC t9_real = t7_real - t6_real; ! const ATOMIC t9_imag = t7_imag - t6_imag; ! ! /* t10 = sin(2 pi/5) t3 + sin(2 pi/10) t4 */ ! const ATOMIC t10_real = sina * t3_real + sinb * t4_real; ! const ATOMIC t10_imag = sina * t3_imag + sinb * t4_imag; ! ! /* t11 = sin(2 pi/10) t3 - sin(2 pi/5) t4 */ ! const ATOMIC t11_real = sinb * t3_real - sina * t4_real; ! const ATOMIC t11_imag = sinb * t3_imag - sina * t4_imag; ! ! /* x0 = z0 + t5 */ ! const ATOMIC x0_real = z0_real + t5_real; ! const ATOMIC x0_imag = z0_imag + t5_imag; ! ! /* x1 = t8 + i t10 */ ! const ATOMIC x1_real = t8_real - t10_imag; ! const ATOMIC x1_imag = t8_imag + t10_real; ! ! /* x2 = t9 + i t11 */ ! const ATOMIC x2_real = t9_real - t11_imag; ! const ATOMIC x2_imag = t9_imag + t11_real; ! ! /* x3 = t9 - i t11 */ ! const ATOMIC x3_real = t9_real + t11_imag; ! const ATOMIC x3_imag = t9_imag - t11_real; ! ! /* x4 = t8 - i t10 */ ! const ATOMIC x4_real = t8_real + t10_imag; ! const ATOMIC x4_imag = t8_imag - t10_real; ! ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! const size_t to2 = to1 + m; ! const size_t to3 = to2 + m; ! const size_t to4 = to3 + m; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! /* to1 = w1 * x1 */ ! VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; ! VECTOR(out,ostride,to2 + 1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! VECTOR(out,ostride,to3) = w3_real * x3_real - w3_imag * x3_imag; ! VECTOR(out,ostride,to3 + 1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! VECTOR(out,ostride,to4) = w4_real * x4_real - w4_imag * x4_imag; ! VECTOR(out,ostride,to4 + 1) = w4_real * x4_imag + w4_imag * x4_real; ! } } --- 100,219 ---- for (k1 = 0; k1 < product_1; k1++) ! { ! const size_t from0 = 5 * k1 * q + 2 * k - 1; ! const size_t from1 = from0 + 2 * q; ! const size_t from2 = from1 + 2 * q; ! const size_t from3 = 5 * k1 * q - 2 * k + 2 * q - 1; ! const size_t from4 = from3 + 2 * q; ! ! const ATOMIC z0_real = VECTOR(in,istride,from0); ! const ATOMIC z0_imag = VECTOR(in,istride,from0 + 1); ! ! const ATOMIC z1_real = VECTOR(in,istride,from1); ! const ATOMIC z1_imag = VECTOR(in,istride,from1 + 1); ! ! const ATOMIC z2_real = VECTOR(in,istride,from2); ! const ATOMIC z2_imag = VECTOR(in,istride,from2 + 1); ! ! const ATOMIC z3_real = VECTOR(in,istride,from4); ! const ATOMIC z3_imag = -VECTOR(in,istride,from4 + 1); ! ! const ATOMIC z4_real = VECTOR(in,istride,from3); ! const ATOMIC z4_imag = -VECTOR(in,istride,from3 + 1); ! ! /* compute x = W(5) z */ ! ! /* t1 = z1 + z4 */ ! const ATOMIC t1_real = z1_real + z4_real; ! const ATOMIC t1_imag = z1_imag + z4_imag; ! ! /* t2 = z2 + z3 */ ! const ATOMIC t2_real = z2_real + z3_real; ! const ATOMIC t2_imag = z2_imag + z3_imag; ! ! /* t3 = z1 - z4 */ ! const ATOMIC t3_real = z1_real - z4_real; ! const ATOMIC t3_imag = z1_imag - z4_imag; ! ! /* t4 = z2 - z3 */ ! const ATOMIC t4_real = z2_real - z3_real; ! const ATOMIC t4_imag = z2_imag - z3_imag; ! ! /* t5 = t1 + t2 */ ! const ATOMIC t5_real = t1_real + t2_real; ! const ATOMIC t5_imag = t1_imag + t2_imag; ! ! /* t6 = (sqrt(5)/4)(t1 - t2) */ ! const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); ! const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); ! ! /* t7 = z0 - ((t5)/4) */ ! const ATOMIC t7_real = z0_real - t5_real / 4.0; ! const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; ! ! /* t8 = t7 + t6 */ ! const ATOMIC t8_real = t7_real + t6_real; ! const ATOMIC t8_imag = t7_imag + t6_imag; ! ! /* t9 = t7 - t6 */ ! const ATOMIC t9_real = t7_real - t6_real; ! const ATOMIC t9_imag = t7_imag - t6_imag; ! ! /* t10 = sin(2 pi/5) t3 + sin(2 pi/10) t4 */ ! const ATOMIC t10_real = sina * t3_real + sinb * t4_real; ! const ATOMIC t10_imag = sina * t3_imag + sinb * t4_imag; ! ! /* t11 = sin(2 pi/10) t3 - sin(2 pi/5) t4 */ ! const ATOMIC t11_real = sinb * t3_real - sina * t4_real; ! const ATOMIC t11_imag = sinb * t3_imag - sina * t4_imag; ! ! /* x0 = z0 + t5 */ ! const ATOMIC x0_real = z0_real + t5_real; ! const ATOMIC x0_imag = z0_imag + t5_imag; ! ! /* x1 = t8 + i t10 */ ! const ATOMIC x1_real = t8_real - t10_imag; ! const ATOMIC x1_imag = t8_imag + t10_real; ! ! /* x2 = t9 + i t11 */ ! const ATOMIC x2_real = t9_real - t11_imag; ! const ATOMIC x2_imag = t9_imag + t11_real; ! ! /* x3 = t9 - i t11 */ ! const ATOMIC x3_real = t9_real + t11_imag; ! const ATOMIC x3_imag = t9_imag - t11_real; ! ! /* x4 = t8 - i t10 */ ! const ATOMIC x4_real = t8_real + t10_imag; ! const ATOMIC x4_imag = t8_imag - t10_real; ! ! const size_t to0 = k1 * q + 2 * k - 1; ! const size_t to1 = to0 + m; ! const size_t to2 = to1 + m; ! const size_t to3 = to2 + m; ! const size_t to4 = to3 + m; ! ! /* apply twiddle factors */ ! ! /* to0 = 1 * x0 */ ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! /* to1 = w1 * x1 */ ! VECTOR(out,ostride,to1) = w1_real * x1_real - w1_imag * x1_imag; ! VECTOR(out,ostride,to1 + 1) = w1_real * x1_imag + w1_imag * x1_real; ! ! /* to2 = w2 * x2 */ ! VECTOR(out,ostride,to2) = w2_real * x2_real - w2_imag * x2_imag; ! VECTOR(out,ostride,to2 + 1) = w2_real * x2_imag + w2_imag * x2_real; ! ! /* to3 = w3 * x3 */ ! VECTOR(out,ostride,to3) = w3_real * x3_real - w3_imag * x3_imag; ! VECTOR(out,ostride,to3 + 1) = w3_real * x3_imag + w3_imag * x3_real; ! ! /* to4 = w4 * x4 */ ! VECTOR(out,ostride,to4) = w4_real * x4_real - w4_imag * x4_imag; ! VECTOR(out,ostride,to4 + 1) = w4_real * x4_imag + w4_imag * x4_real; ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_pass_n.c gsl-1.4/fft/hc_pass_n.c *** gsl-1.3/fft/hc_pass_n.c Tue Jul 24 13:31:42 2001 --- gsl-1.4/fft/hc_pass_n.c Fri Jul 25 15:18:10 2003 *************** *** 20,30 **** static void FUNCTION(fft_halfcomplex,pass_n) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { --- 20,30 ---- static void FUNCTION(fft_halfcomplex,pass_n) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { *************** *** 48,104 **** for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC sum_real = 0.0; ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC tmp_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; ! ATOMIC tmp_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = tmp_real; ! dw_imag = tmp_imag; ! } ! ! for (e2 = 0; e2 <= factor - e2; e2++) ! { ! ATOMIC z_real, z_imag; ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! if (e2 == 0) ! { ! size_t from_idx = factor * k1 * q; ! z_real = VECTOR(in,istride,from_idx); ! z_imag = 0.0; ! sum_real += w_real * z_real - w_imag * z_imag; ! } ! else if (e2 == factor - e2) ! { ! size_t from_idx = factor * q * k1 + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from_idx); ! z_imag = 0.0; ! sum_real += w_real * z_real; ! } ! else ! { ! size_t from_idx = factor * q * k1 + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from_idx); ! z_imag = VECTOR(in,istride,from_idx + 1); ! sum_real += 2 * (w_real * z_real - w_imag * z_imag); ! } ! ! } ! ! { ! const size_t to_idx = q * k1 + e1 * m; ! VECTOR(out,ostride,to_idx) = sum_real; ! } ! } } --- 48,104 ---- for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC sum_real = 0.0; ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC tmp_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; ! ATOMIC tmp_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = tmp_real; ! dw_imag = tmp_imag; ! } ! ! for (e2 = 0; e2 <= factor - e2; e2++) ! { ! ATOMIC z_real, z_imag; ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! if (e2 == 0) ! { ! size_t from_idx = factor * k1 * q; ! z_real = VECTOR(in,istride,from_idx); ! z_imag = 0.0; ! sum_real += w_real * z_real - w_imag * z_imag; ! } ! else if (e2 == factor - e2) ! { ! size_t from_idx = factor * q * k1 + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from_idx); ! z_imag = 0.0; ! sum_real += w_real * z_real; ! } ! else ! { ! size_t from_idx = factor * q * k1 + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from_idx); ! z_imag = VECTOR(in,istride,from_idx + 1); ! sum_real += 2 * (w_real * z_real - w_imag * z_imag); ! } ! ! } ! ! { ! const size_t to_idx = q * k1 + e1 * m; ! VECTOR(out,ostride,to_idx) = sum_real; ! } ! } } *************** *** 109,179 **** { for (k1 = 0; k1 < product_1; k1++) ! { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC z_real, z_imag; ! ATOMIC sum_real = 0.0; ! ATOMIC sum_imag = 0.0; ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC t_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; ! ATOMIC t_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = t_real; ! dw_imag = t_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! if (e2 < factor - e2) ! { ! const size_t from0 = factor * k1 * q + 2 * k + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = VECTOR(in,istride,from0 + 1); ! } ! else ! { ! const size_t from0 = factor * k1 * q - 2 * k + 2 * (factor - e2) * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = -VECTOR(in,istride,from0 + 1); ! } ! ! sum_real += w_real * z_real - w_imag * z_imag; ! sum_imag += w_real * z_imag + w_imag * z_real; ! } ! ! if (k == 0 || e1 == 0) ! { ! w_real = 1.0; ! w_imag = 0.0; ! } ! else ! { ! size_t tskip = (q + 1) / 2 - 1; ! w_real = GSL_REAL(twiddle[k - 1 + tskip * (e1 - 1)]); ! w_imag = GSL_IMAG(twiddle[k - 1 + tskip * (e1 - 1)]); ! } ! ! { ! const size_t to0 = k1 * q + 2 * k + e1 * m - 1; ! VECTOR(out,ostride,to0) = w_real * sum_real - w_imag * sum_imag; ! VECTOR(out,ostride,to0 + 1) = w_real * sum_imag + w_imag * sum_real; ! } ! } ! } } --- 109,179 ---- { for (k1 = 0; k1 < product_1; k1++) ! { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC z_real, z_imag; ! ATOMIC sum_real = 0.0; ! ATOMIC sum_imag = 0.0; ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC t_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; ! ATOMIC t_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = t_real; ! dw_imag = t_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! if (e2 < factor - e2) ! { ! const size_t from0 = factor * k1 * q + 2 * k + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = VECTOR(in,istride,from0 + 1); ! } ! else ! { ! const size_t from0 = factor * k1 * q - 2 * k + 2 * (factor - e2) * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = -VECTOR(in,istride,from0 + 1); ! } ! ! sum_real += w_real * z_real - w_imag * z_imag; ! sum_imag += w_real * z_imag + w_imag * z_real; ! } ! ! if (k == 0 || e1 == 0) ! { ! w_real = 1.0; ! w_imag = 0.0; ! } ! else ! { ! size_t tskip = (q + 1) / 2 - 1; ! w_real = GSL_REAL(twiddle[k - 1 + tskip * (e1 - 1)]); ! w_imag = GSL_IMAG(twiddle[k - 1 + tskip * (e1 - 1)]); ! } ! ! { ! const size_t to0 = k1 * q + 2 * k + e1 * m - 1; ! VECTOR(out,ostride,to0) = w_real * sum_real - w_imag * sum_imag; ! VECTOR(out,ostride,to0 + 1) = w_real * sum_imag + w_imag * sum_real; ! } ! } ! } } *************** *** 190,255 **** { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! ATOMIC tw_real = 1.0, tw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC w_real, w_imag, z_real, z_imag; ! ! ATOMIC sum_real = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC tmp_real = tw_real * cos_tw_arg - tw_imag * sin_tw_arg; ! ATOMIC tmp_imag = tw_real * sin_tw_arg + tw_imag * cos_tw_arg; ! tw_real = tmp_real; ! tw_imag = tmp_imag; ! } ! ! w_real = tw_real; ! w_imag = tw_imag; ! ! if (e1 > 0) ! { ! ATOMIC t_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; ! ATOMIC t_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = t_real; ! dw_imag = t_imag; ! } ! ! for (e2 = 0; e2 <= factor - e2 - 1; e2++) ! { ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! ! if (e2 == factor - e2 - 1) ! { ! const size_t from0 = factor * k1 * q + q + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = 0.0; ! sum_real += w_real * z_real - w_imag * z_imag; ! } ! else ! { ! const size_t from0 = factor * k1 * q + q + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = VECTOR(in,istride,from0 + 1); ! sum_real += 2 * (w_real * z_real - w_imag * z_imag); ! } ! ! } ! ! { ! const size_t to0 = k1 * q + q + e1 * m - 1; ! VECTOR(out,ostride,to0) = sum_real; ! } ! } } } --- 190,255 ---- { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! ATOMIC tw_real = 1.0, tw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC w_real, w_imag, z_real, z_imag; ! ! ATOMIC sum_real = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC tmp_real = tw_real * cos_tw_arg - tw_imag * sin_tw_arg; ! ATOMIC tmp_imag = tw_real * sin_tw_arg + tw_imag * cos_tw_arg; ! tw_real = tmp_real; ! tw_imag = tmp_imag; ! } ! ! w_real = tw_real; ! w_imag = tw_imag; ! ! if (e1 > 0) ! { ! ATOMIC t_real = dw_real * cos_d_theta - dw_imag * sin_d_theta; ! ATOMIC t_imag = dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = t_real; ! dw_imag = t_imag; ! } ! ! for (e2 = 0; e2 <= factor - e2 - 1; e2++) ! { ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! ! if (e2 == factor - e2 - 1) ! { ! const size_t from0 = factor * k1 * q + q + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = 0.0; ! sum_real += w_real * z_real - w_imag * z_imag; ! } ! else ! { ! const size_t from0 = factor * k1 * q + q + 2 * e2 * q - 1; ! z_real = VECTOR(in,istride,from0); ! z_imag = VECTOR(in,istride,from0 + 1); ! sum_real += 2 * (w_real * z_real - w_imag * z_imag); ! } ! ! } ! ! { ! const size_t to0 = k1 * q + q + e1 * m - 1; ! VECTOR(out,ostride,to0) = sum_real; ! } ! } } } diff -x.info* -rc2P gsl-1.3/fft/hc_radix2.c gsl-1.4/fft/hc_radix2.c *** gsl-1.3/fft/hc_radix2.c Tue May 1 22:22:29 2001 --- gsl-1.4/fft/hc_radix2.c Fri Jul 25 15:18:10 2003 *************** *** 20,25 **** int FUNCTION(gsl_fft_halfcomplex,radix2_backward) (BASE data[], ! const size_t stride, ! const size_t n) { int status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (data, stride, n) ; --- 20,25 ---- int FUNCTION(gsl_fft_halfcomplex,radix2_backward) (BASE data[], ! const size_t stride, ! const size_t n) { int status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (data, stride, n) ; *************** *** 29,34 **** int FUNCTION(gsl_fft_halfcomplex,radix2_inverse) (BASE data[], ! const size_t stride, ! const size_t n) { int status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (data, stride, n); --- 29,34 ---- int FUNCTION(gsl_fft_halfcomplex,radix2_inverse) (BASE data[], ! const size_t stride, ! const size_t n) { int status = FUNCTION(gsl_fft_halfcomplex,radix2_transform) (data, stride, n); *************** *** 46,50 **** for (i = 0; i < n; i++) { ! data[stride*i] *= norm; } } --- 46,50 ---- for (i = 0; i < n; i++) { ! data[stride*i] *= norm; } } *************** *** 54,59 **** int FUNCTION(gsl_fft_halfcomplex,radix2_transform) (BASE data[], ! const size_t stride, ! const size_t n) { int result ; --- 54,59 ---- int FUNCTION(gsl_fft_halfcomplex,radix2_transform) (BASE data[], ! const size_t stride, ! const size_t n) { int result ; *************** *** 92,160 **** for (b = 0; b < q; b++) ! { ! const ATOMIC z0 = VECTOR(data,stride,b*p); ! const ATOMIC z1 = VECTOR(data,stride,b*p + p_1); ! ! const ATOMIC t0_real = z0 + z1 ; ! const ATOMIC t1_real = z0 - z1 ; ! ! VECTOR(data,stride,b*p) = t0_real; ! VECTOR(data,stride,b*p + p_1) = t1_real ; ! } /* a = 1 ... p_{i-1}/2 - 1 */ { ! ATOMIC w_real = 1.0; ! ATOMIC w_imag = 0.0; ! const ATOMIC theta = 2.0 * M_PI / p; ! ! const ATOMIC s = sin (theta); ! const ATOMIC t = sin (theta / 2.0); ! const ATOMIC s2 = 2.0 * t * t; ! ! for (a = 1; a < (p_1)/2; a++) ! { ! /* trignometric recurrence for w-> exp(i theta) w */ ! ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! for (b = 0; b < q; b++) ! { ! ATOMIC z0_real = VECTOR(data,stride,b*p + a) ; ! ATOMIC z0_imag = VECTOR(data,stride,b*p + p - a) ; ! ATOMIC z1_real = VECTOR(data,stride,b*p + p_1 - a) ; ! ATOMIC z1_imag = -VECTOR(data,stride,b*p + p_1 + a) ; ! ! /* t0 = z0 + z1 */ ! ! ATOMIC t0_real = z0_real + z1_real; ! ATOMIC t0_imag = z0_imag + z1_imag; ! ! /* t1 = (z0 - z1) */ ! ! ATOMIC t1_real = z0_real - z1_real; ! ATOMIC t1_imag = z0_imag - z1_imag; ! ! VECTOR(data,stride,b*p + a) = t0_real ; ! VECTOR(data,stride,b*p + p_1 - a) = t0_imag ; ! ! VECTOR(data,stride,b*p + p_1 + a) = (w_real * t1_real - w_imag * t1_imag) ; ! VECTOR(data,stride,b*p + p - a) = (w_real * t1_imag + w_imag * t1_real) ; ! } ! } } if (p_1 > 1) { ! for (b = 0; b < q; b++) { ! VECTOR(data,stride,b*p + p_1/2) *= 2 ; ! VECTOR(data,stride,b*p + p_1 + p_1/2) *= -2 ; ! } } --- 92,160 ---- for (b = 0; b < q; b++) ! { ! const ATOMIC z0 = VECTOR(data,stride,b*p); ! const ATOMIC z1 = VECTOR(data,stride,b*p + p_1); ! ! const ATOMIC t0_real = z0 + z1 ; ! const ATOMIC t1_real = z0 - z1 ; ! ! VECTOR(data,stride,b*p) = t0_real; ! VECTOR(data,stride,b*p + p_1) = t1_real ; ! } /* a = 1 ... p_{i-1}/2 - 1 */ { ! ATOMIC w_real = 1.0; ! ATOMIC w_imag = 0.0; ! const ATOMIC theta = 2.0 * M_PI / p; ! ! const ATOMIC s = sin (theta); ! const ATOMIC t = sin (theta / 2.0); ! const ATOMIC s2 = 2.0 * t * t; ! ! for (a = 1; a < (p_1)/2; a++) ! { ! /* trignometric recurrence for w-> exp(i theta) w */ ! ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! for (b = 0; b < q; b++) ! { ! ATOMIC z0_real = VECTOR(data,stride,b*p + a) ; ! ATOMIC z0_imag = VECTOR(data,stride,b*p + p - a) ; ! ATOMIC z1_real = VECTOR(data,stride,b*p + p_1 - a) ; ! ATOMIC z1_imag = -VECTOR(data,stride,b*p + p_1 + a) ; ! ! /* t0 = z0 + z1 */ ! ! ATOMIC t0_real = z0_real + z1_real; ! ATOMIC t0_imag = z0_imag + z1_imag; ! ! /* t1 = (z0 - z1) */ ! ! ATOMIC t1_real = z0_real - z1_real; ! ATOMIC t1_imag = z0_imag - z1_imag; ! ! VECTOR(data,stride,b*p + a) = t0_real ; ! VECTOR(data,stride,b*p + p_1 - a) = t0_imag ; ! ! VECTOR(data,stride,b*p + p_1 + a) = (w_real * t1_real - w_imag * t1_imag) ; ! VECTOR(data,stride,b*p + p - a) = (w_real * t1_imag + w_imag * t1_real) ; ! } ! } } if (p_1 > 1) { ! for (b = 0; b < q; b++) { ! VECTOR(data,stride,b*p + p_1/2) *= 2 ; ! VECTOR(data,stride,b*p + p_1 + p_1/2) *= -2 ; ! } } diff -x.info* -rc2P gsl-1.3/fft/hc_unpack.c gsl-1.4/fft/hc_unpack.c *** gsl-1.3/fft/hc_unpack.c Tue May 1 22:22:29 2001 --- gsl-1.4/fft/hc_unpack.c Fri Jul 25 15:18:10 2003 *************** *** 20,25 **** int FUNCTION(gsl_fft_halfcomplex,unpack) (const BASE halfcomplex_coefficient[], ! BASE complex_coefficient[], ! const size_t stride, const size_t n) { size_t i; --- 20,25 ---- int FUNCTION(gsl_fft_halfcomplex,unpack) (const BASE halfcomplex_coefficient[], ! BASE complex_coefficient[], ! const size_t stride, const size_t n) { size_t i; *************** *** 56,61 **** int FUNCTION(gsl_fft_halfcomplex,radix2_unpack) (const BASE halfcomplex_coefficient[], ! BASE complex_coefficient[], ! const size_t stride, const size_t n) { size_t i; --- 56,61 ---- int FUNCTION(gsl_fft_halfcomplex,radix2_unpack) (const BASE halfcomplex_coefficient[], ! BASE complex_coefficient[], ! const size_t stride, const size_t n) { size_t i; diff -x.info* -rc2P gsl-1.3/fft/real_init.c gsl-1.4/fft/real_init.c *** gsl-1.3/fft/real_init.c Tue Jul 24 13:32:36 2001 --- gsl-1.4/fft/real_init.c Fri Jul 25 15:18:10 2003 *************** *** 52,63 **** if (wavetable->trig == NULL) ! { /* error in constructor, prevent memory leak */ free(wavetable) ; ! GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", ! GSL_ENOMEM, 0); ! } } --- 52,63 ---- if (wavetable->trig == NULL) ! { /* error in constructor, prevent memory leak */ free(wavetable) ; ! GSL_ERROR_VAL ("failed to allocate trigonometric lookup table", ! GSL_ENOMEM, 0); ! } } *************** *** 87,110 **** const size_t factor = wavetable->factor[i]; wavetable->twiddle[i] = wavetable->trig + t; ! product_1 = product; /* product_1 = p_(i-1) */ product *= factor; q = n / product; for (j = 1; j < factor; j++) ! { ! size_t k; ! size_t m = 0; ! for (k = 1; k < (product_1 + 1) / 2; k++) ! { ! double theta; ! m = m + j * q; ! m = m % n; ! theta = d_theta * m; /* d_theta*j*k*q */ ! GSL_REAL(wavetable->trig[t]) = cos (theta); ! GSL_IMAG(wavetable->trig[t]) = sin (theta); ! ! t++; ! } ! } } --- 87,110 ---- const size_t factor = wavetable->factor[i]; wavetable->twiddle[i] = wavetable->trig + t; ! product_1 = product; /* product_1 = p_(i-1) */ product *= factor; q = n / product; for (j = 1; j < factor; j++) ! { ! size_t k; ! size_t m = 0; ! for (k = 1; k < (product_1 + 1) / 2; k++) ! { ! double theta; ! m = m + j * q; ! m = m % n; ! theta = d_theta * m; /* d_theta*j*k*q */ ! GSL_REAL(wavetable->trig[t]) = cos (theta); ! GSL_IMAG(wavetable->trig[t]) = sin (theta); ! ! t++; ! } ! } } diff -x.info* -rc2P gsl-1.3/fft/real_main.c gsl-1.4/fft/real_main.c *** gsl-1.3/fft/real_main.c Tue Jul 24 13:32:45 2001 --- gsl-1.4/fft/real_main.c Fri Jul 25 15:18:10 2003 *************** *** 30,34 **** int FUNCTION(gsl_fft_real,transform) (BASE data[], const size_t stride, const size_t n, ! const TYPE(gsl_fft_real_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { --- 30,34 ---- int FUNCTION(gsl_fft_real,transform) (BASE data[], const size_t stride, const size_t n, ! const TYPE(gsl_fft_real_wavetable) * wavetable, TYPE(gsl_fft_real_workspace) * work) { *************** *** 56,60 **** if (n == 1) ! { /* FFT of one data point is the identity */ return 0; } --- 56,60 ---- if (n == 1) ! { /* FFT of one data point is the identity */ return 0; } *************** *** 80,142 **** if (state == 0) ! { ! in = data; ! istride = stride; ! out = scratch; ! ostride = 1; ! state = 1; ! } else ! { ! in = scratch; ! istride = 1; ! out = data; ! ostride = stride; ! state = 0; ! } if (factor == 2) ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_real,pass_2) (in, istride, out, ostride, product, n, twiddle1); ! } else if (factor == 3) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! FUNCTION(fft_real,pass_3) (in, istride, out, ostride, product, n, twiddle1, ! twiddle2); ! } else if (factor == 4) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! FUNCTION(fft_real,pass_4) (in, istride, out, ostride, product, n, twiddle1, ! twiddle2, twiddle3); ! } else if (factor == 5) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! twiddle4 = twiddle3 + tskip; ! FUNCTION(fft_real,pass_5) (in, istride, out, ostride, product, n, twiddle1, ! twiddle2, twiddle3, twiddle4); ! } else ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_real,pass_n) (in, istride, out, ostride, factor, product, n, ! twiddle1); ! } } ! if (state == 1) /* copy results back from scratch to data */ { for (i = 0; i < n; i++) ! { ! data[stride*i] = scratch[i] ; ! } } --- 80,142 ---- if (state == 0) ! { ! in = data; ! istride = stride; ! out = scratch; ! ostride = 1; ! state = 1; ! } else ! { ! in = scratch; ! istride = 1; ! out = data; ! ostride = stride; ! state = 0; ! } if (factor == 2) ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_real,pass_2) (in, istride, out, ostride, product, n, twiddle1); ! } else if (factor == 3) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! FUNCTION(fft_real,pass_3) (in, istride, out, ostride, product, n, twiddle1, ! twiddle2); ! } else if (factor == 4) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! FUNCTION(fft_real,pass_4) (in, istride, out, ostride, product, n, twiddle1, ! twiddle2, twiddle3); ! } else if (factor == 5) ! { ! twiddle1 = wavetable->twiddle[i]; ! twiddle2 = twiddle1 + tskip; ! twiddle3 = twiddle2 + tskip; ! twiddle4 = twiddle3 + tskip; ! FUNCTION(fft_real,pass_5) (in, istride, out, ostride, product, n, twiddle1, ! twiddle2, twiddle3, twiddle4); ! } else ! { ! twiddle1 = wavetable->twiddle[i]; ! FUNCTION(fft_real,pass_n) (in, istride, out, ostride, factor, product, n, ! twiddle1); ! } } ! if (state == 1) /* copy results back from scratch to data */ { for (i = 0; i < n; i++) ! { ! data[stride*i] = scratch[i] ; ! } } diff -x.info* -rc2P gsl-1.3/fft/real_pass_2.c gsl-1.4/fft/real_pass_2.c *** gsl-1.3/fft/real_pass_2.c Tue Jul 24 13:33:11 2001 --- gsl-1.4/fft/real_pass_2.c Fri Jul 25 15:18:10 2003 *************** *** 20,29 **** static void FUNCTION(fft_real,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t k, k1; --- 20,29 ---- static void FUNCTION(fft_real,pass_2) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t k, k1; *************** *** 63,102 **** for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! ! const ATOMIC z1_real = w_real * f1_real - w_imag * f1_imag; ! const ATOMIC z1_imag = w_real * f1_imag + w_imag * f1_real; ! ! /* compute x = W(2) z */ ! ! /* x0 = z0 + z1 */ ! const ATOMIC x0_real = z0_real + z1_real; ! const ATOMIC x0_imag = z0_imag + z1_imag; ! ! /* x1 = z0 - z1 */ ! const ATOMIC x1_real = z0_real - z1_real; ! const ATOMIC x1_imag = z0_imag - z1_imag; ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = k1 * product + product - 2 * k - 1; ! ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! /* stored in conjugate location */ ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = -x1_imag; ! } } --- 63,102 ---- for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! ! const ATOMIC z1_real = w_real * f1_real - w_imag * f1_imag; ! const ATOMIC z1_imag = w_real * f1_imag + w_imag * f1_real; ! ! /* compute x = W(2) z */ ! ! /* x0 = z0 + z1 */ ! const ATOMIC x0_real = z0_real + z1_real; ! const ATOMIC x0_imag = z0_imag + z1_imag; ! ! /* x1 = z0 - z1 */ ! const ATOMIC x1_real = z0_real - z1_real; ! const ATOMIC x1_imag = z0_imag - z1_imag; ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = k1 * product + product - 2 * k - 1; ! ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! /* stored in conjugate location */ ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = -x1_imag; ! } } diff -x.info* -rc2P gsl-1.3/fft/real_pass_3.c gsl-1.4/fft/real_pass_3.c *** gsl-1.3/fft/real_pass_3.c Tue Jul 24 13:33:53 2001 --- gsl-1.4/fft/real_pass_3.c Fri Jul 25 15:18:10 2003 *************** *** 20,30 **** static void FUNCTION(fft_real,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]) { size_t k, k1; --- 20,30 ---- static void FUNCTION(fft_real,pass_3) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[]) { size_t k, k1; *************** *** 72,138 **** for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! const size_t from2 = from1 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC f2_real = VECTOR(in,istride,from2); ! const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; ! const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; ! const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; ! const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; ! ! /* compute x = W(3) z */ ! ! /* t1 = z1 + z2 */ ! const ATOMIC t1_real = z1_real + z2_real; ! const ATOMIC t1_imag = z1_imag + z2_imag; ! ! /* t2 = z0 - t1/2 */ ! const ATOMIC t2_real = z0_real - t1_real / 2; ! const ATOMIC t2_imag = z0_imag - t1_imag / 2; ! ! /* t3 = (+/-) sin(pi/3)*(z1 - z2) */ ! const ATOMIC t3_real = -tau * (z1_real - z2_real); ! const ATOMIC t3_imag = -tau * (z1_imag - z2_imag); ! ! /* x0 = z0 + t1 */ ! const ATOMIC x0_real = z0_real + t1_real; ! const ATOMIC x0_imag = z0_imag + t1_imag; ! ! /* x1 = t2 + i t3 */ ! const ATOMIC x1_real = t2_real - t3_imag; ! const ATOMIC x1_imag = t2_imag + t3_real; ! ! /* x2 = t2 - i t3 */ ! const ATOMIC x2_real = t2_real + t3_imag; ! const ATOMIC x2_imag = t2_imag - t3_real; ! ! /* apply twiddle factors */ ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = to0 + 2 * product_1; ! const size_t to2 = 2 * product_1 - 2 * k + k1 * product - 1; ! ! /* to0 = 1 * x0 */ ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! /* to1 = 1 * x1 */ ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = x1_imag; ! ! /* to2 = 1 * x2 */ ! VECTOR(out,ostride,to2) = x2_real; ! VECTOR(out,ostride,to2 + 1) = -x2_imag; ! } } --- 72,138 ---- for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! const size_t from2 = from1 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC f2_real = VECTOR(in,istride,from2); ! const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; ! const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; ! const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; ! const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; ! ! /* compute x = W(3) z */ ! ! /* t1 = z1 + z2 */ ! const ATOMIC t1_real = z1_real + z2_real; ! const ATOMIC t1_imag = z1_imag + z2_imag; ! ! /* t2 = z0 - t1/2 */ ! const ATOMIC t2_real = z0_real - t1_real / 2; ! const ATOMIC t2_imag = z0_imag - t1_imag / 2; ! ! /* t3 = (+/-) sin(pi/3)*(z1 - z2) */ ! const ATOMIC t3_real = -tau * (z1_real - z2_real); ! const ATOMIC t3_imag = -tau * (z1_imag - z2_imag); ! ! /* x0 = z0 + t1 */ ! const ATOMIC x0_real = z0_real + t1_real; ! const ATOMIC x0_imag = z0_imag + t1_imag; ! ! /* x1 = t2 + i t3 */ ! const ATOMIC x1_real = t2_real - t3_imag; ! const ATOMIC x1_imag = t2_imag + t3_real; ! ! /* x2 = t2 - i t3 */ ! const ATOMIC x2_real = t2_real + t3_imag; ! const ATOMIC x2_imag = t2_imag - t3_real; ! ! /* apply twiddle factors */ ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = to0 + 2 * product_1; ! const size_t to2 = 2 * product_1 - 2 * k + k1 * product - 1; ! ! /* to0 = 1 * x0 */ ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! /* to1 = 1 * x1 */ ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = x1_imag; ! ! /* to2 = 1 * x2 */ ! VECTOR(out,ostride,to2) = x2_real; ! VECTOR(out,ostride,to2 + 1) = -x2_imag; ! } } diff -x.info* -rc2P gsl-1.3/fft/real_pass_4.c gsl-1.4/fft/real_pass_4.c *** gsl-1.3/fft/real_pass_4.c Tue Jul 24 13:33:53 2001 --- gsl-1.4/fft/real_pass_4.c Fri Jul 25 15:18:10 2003 *************** *** 20,31 **** static void FUNCTION(fft_real,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]) { size_t k, k1; --- 20,31 ---- static void FUNCTION(fft_real,pass_4) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[]) { size_t k, k1; *************** *** 56,60 **** const ATOMIC t2_real = z1_real + z3_real; ! /* t3 = z0 - z2 */ const ATOMIC t3_real = z0_real - z2_real; --- 56,60 ---- const ATOMIC t2_real = z1_real + z3_real; ! /* t3 = z0 - z2 */ const ATOMIC t3_real = z0_real - z2_real; *************** *** 96,174 **** for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! const size_t from2 = from1 + m; ! const size_t from3 = from2 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC f2_real = VECTOR(in,istride,from2); ! const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); ! const ATOMIC f3_real = VECTOR(in,istride,from3); ! const ATOMIC f3_imag = VECTOR(in,istride,from3 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; ! const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; ! const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; ! const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; ! const ATOMIC z3_real = w3_real * f3_real - w3_imag * f3_imag; ! const ATOMIC z3_imag = w3_real * f3_imag + w3_imag * f3_real; ! ! /* compute x = W(4) z */ ! ! /* t1 = z0 + z2 */ ! const ATOMIC t1_real = z0_real + z2_real; ! const ATOMIC t1_imag = z0_imag + z2_imag; ! ! /* t2 = z1 + z3 */ ! const ATOMIC t2_real = z1_real + z3_real; ! const ATOMIC t2_imag = z1_imag + z3_imag; ! ! /* t3 = z0 - z2 */ ! const ATOMIC t3_real = z0_real - z2_real; ! const ATOMIC t3_imag = z0_imag - z2_imag; ! ! /* t4 = - (z1 - z3) */ ! const ATOMIC t4_real = -(z1_real - z3_real); ! const ATOMIC t4_imag = -(z1_imag - z3_imag); ! ! /* x0 = t1 + t2 */ ! const ATOMIC x0_real = t1_real + t2_real; ! const ATOMIC x0_imag = t1_imag + t2_imag; ! ! /* x1 = t3 + i t4 */ ! const ATOMIC x1_real = t3_real - t4_imag; ! const ATOMIC x1_imag = t3_imag + t4_real; ! ! /* x2 = t1 - t2 */ ! const ATOMIC x2_real = t1_real - t2_real; ! const ATOMIC x2_imag = t1_imag - t2_imag; ! ! /* x3 = t3 - i t4 */ ! const ATOMIC x3_real = t3_real + t4_imag; ! const ATOMIC x3_imag = t3_imag - t4_real; ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = to0 + 2 * product_1; ! const size_t to2 = 2 * product_1 - 2 * k + k1 * product - 1; ! const size_t to3 = to2 + 2 * product_1; ! ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = x1_imag; ! ! VECTOR(out,ostride,to3) = x2_real; ! VECTOR(out,ostride,to3 + 1) = -x2_imag; ! ! VECTOR(out,ostride,to2) = x3_real; ! VECTOR(out,ostride,to2 + 1) = -x3_imag; ! } } --- 96,174 ---- for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! const size_t from2 = from1 + m; ! const size_t from3 = from2 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC f2_real = VECTOR(in,istride,from2); ! const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); ! const ATOMIC f3_real = VECTOR(in,istride,from3); ! const ATOMIC f3_imag = VECTOR(in,istride,from3 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; ! const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; ! const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; ! const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; ! const ATOMIC z3_real = w3_real * f3_real - w3_imag * f3_imag; ! const ATOMIC z3_imag = w3_real * f3_imag + w3_imag * f3_real; ! ! /* compute x = W(4) z */ ! ! /* t1 = z0 + z2 */ ! const ATOMIC t1_real = z0_real + z2_real; ! const ATOMIC t1_imag = z0_imag + z2_imag; ! ! /* t2 = z1 + z3 */ ! const ATOMIC t2_real = z1_real + z3_real; ! const ATOMIC t2_imag = z1_imag + z3_imag; ! ! /* t3 = z0 - z2 */ ! const ATOMIC t3_real = z0_real - z2_real; ! const ATOMIC t3_imag = z0_imag - z2_imag; ! ! /* t4 = - (z1 - z3) */ ! const ATOMIC t4_real = -(z1_real - z3_real); ! const ATOMIC t4_imag = -(z1_imag - z3_imag); ! ! /* x0 = t1 + t2 */ ! const ATOMIC x0_real = t1_real + t2_real; ! const ATOMIC x0_imag = t1_imag + t2_imag; ! ! /* x1 = t3 + i t4 */ ! const ATOMIC x1_real = t3_real - t4_imag; ! const ATOMIC x1_imag = t3_imag + t4_real; ! ! /* x2 = t1 - t2 */ ! const ATOMIC x2_real = t1_real - t2_real; ! const ATOMIC x2_imag = t1_imag - t2_imag; ! ! /* x3 = t3 - i t4 */ ! const ATOMIC x3_real = t3_real + t4_imag; ! const ATOMIC x3_imag = t3_imag - t4_real; ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = to0 + 2 * product_1; ! const size_t to2 = 2 * product_1 - 2 * k + k1 * product - 1; ! const size_t to3 = to2 + 2 * product_1; ! ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = x1_imag; ! ! VECTOR(out,ostride,to3) = x2_real; ! VECTOR(out,ostride,to3 + 1) = -x2_imag; ! ! VECTOR(out,ostride,to2) = x3_real; ! VECTOR(out,ostride,to2 + 1) = -x3_imag; ! } } diff -x.info* -rc2P gsl-1.3/fft/real_pass_5.c gsl-1.4/fft/real_pass_5.c *** gsl-1.3/fft/real_pass_5.c Tue Jul 24 13:33:53 2001 --- gsl-1.4/fft/real_pass_5.c Fri Jul 25 15:18:10 2003 *************** *** 20,32 **** static void FUNCTION(fft_real,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]) { size_t k, k1; --- 20,32 ---- static void FUNCTION(fft_real,pass_5) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle1[], ! const TYPE(gsl_complex) twiddle2[], ! const TYPE(gsl_complex) twiddle3[], ! const TYPE(gsl_complex) twiddle4[]) { size_t k, k1; *************** *** 124,243 **** for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! const size_t from2 = from1 + m; ! const size_t from3 = from2 + m; ! const size_t from4 = from3 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC f2_real = VECTOR(in,istride,from2); ! const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); ! const ATOMIC f3_real = VECTOR(in,istride,from3); ! const ATOMIC f3_imag = VECTOR(in,istride,from3 + 1); ! const ATOMIC f4_real = VECTOR(in,istride,from4); ! const ATOMIC f4_imag = VECTOR(in,istride,from4 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; ! const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; ! const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; ! const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; ! const ATOMIC z3_real = w3_real * f3_real - w3_imag * f3_imag; ! const ATOMIC z3_imag = w3_real * f3_imag + w3_imag * f3_real; ! const ATOMIC z4_real = w4_real * f4_real - w4_imag * f4_imag; ! const ATOMIC z4_imag = w4_real * f4_imag + w4_imag * f4_real; ! ! /* compute x = W(5) z */ ! ! /* t1 = z1 + z4 */ ! const ATOMIC t1_real = z1_real + z4_real; ! const ATOMIC t1_imag = z1_imag + z4_imag; ! ! /* t2 = z2 + z3 */ ! const ATOMIC t2_real = z2_real + z3_real; ! const ATOMIC t2_imag = z2_imag + z3_imag; ! ! /* t3 = z1 - z4 */ ! const ATOMIC t3_real = z1_real - z4_real; ! const ATOMIC t3_imag = z1_imag - z4_imag; ! ! /* t4 = z2 - z3 */ ! const ATOMIC t4_real = z2_real - z3_real; ! const ATOMIC t4_imag = z2_imag - z3_imag; ! ! /* t5 = t1 + t2 */ ! const ATOMIC t5_real = t1_real + t2_real; ! const ATOMIC t5_imag = t1_imag + t2_imag; ! ! /* t6 = (sqrt(5)/4)(t1 - t2) */ ! const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); ! const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); ! ! /* t7 = z0 - ((t5)/4) */ ! const ATOMIC t7_real = z0_real - t5_real / 4.0; ! const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; ! ! /* t8 = t7 + t6 */ ! const ATOMIC t8_real = t7_real + t6_real; ! const ATOMIC t8_imag = t7_imag + t6_imag; ! ! /* t9 = t7 - t6 */ ! const ATOMIC t9_real = t7_real - t6_real; ! const ATOMIC t9_imag = t7_imag - t6_imag; ! ! /* t10 = - (sin(2 pi/5) t3 + sin(2 pi/10) t4) */ ! const ATOMIC t10_real = -sina * t3_real - sinb * t4_real; ! const ATOMIC t10_imag = -sina * t3_imag - sinb * t4_imag; ! ! /* t11 = -(sin(2 pi/10) t3 - sin(2 pi/5) t4) */ ! const ATOMIC t11_real = -sinb * t3_real + sina * t4_real; ! const ATOMIC t11_imag = -sinb * t3_imag + sina * t4_imag; ! ! /* x0 = z0 + t5 */ ! const ATOMIC x0_real = z0_real + t5_real; ! const ATOMIC x0_imag = z0_imag + t5_imag; ! ! /* x1 = t8 + i t10 */ ! const ATOMIC x1_real = t8_real - t10_imag; ! const ATOMIC x1_imag = t8_imag + t10_real; ! ! /* x2 = t9 + i t11 */ ! const ATOMIC x2_real = t9_real - t11_imag; ! const ATOMIC x2_imag = t9_imag + t11_real; ! ! /* x3 = t9 - i t11 */ ! const ATOMIC x3_real = t9_real + t11_imag; ! const ATOMIC x3_imag = t9_imag - t11_real; ! ! /* x4 = t8 - i t10 */ ! const ATOMIC x4_real = t8_real + t10_imag; ! const ATOMIC x4_imag = t8_imag - t10_real; ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = to0 + 2 * product_1; ! const size_t to2 = to1 + 2 * product_1; ! const size_t to3 = 2 * product_1 - 2 * k + k1 * product - 1; ! const size_t to4 = to3 + 2 * product_1; ! ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = x1_imag; ! ! VECTOR(out,ostride,to2) = x2_real; ! VECTOR(out,ostride,to2 + 1) = x2_imag; ! ! VECTOR(out,ostride,to3) = x4_real; ! VECTOR(out,ostride,to3 + 1) = -x4_imag; ! ! VECTOR(out,ostride,to4) = x3_real; ! VECTOR(out,ostride,to4 + 1) = -x3_imag; ! } } --- 124,243 ---- for (k1 = 0; k1 < q; k1++) ! { ! const size_t from0 = k1 * product_1 + 2 * k - 1; ! const size_t from1 = from0 + m; ! const size_t from2 = from1 + m; ! const size_t from3 = from2 + m; ! const size_t from4 = from3 + m; ! ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! const ATOMIC f1_real = VECTOR(in,istride,from1); ! const ATOMIC f1_imag = VECTOR(in,istride,from1 + 1); ! const ATOMIC f2_real = VECTOR(in,istride,from2); ! const ATOMIC f2_imag = VECTOR(in,istride,from2 + 1); ! const ATOMIC f3_real = VECTOR(in,istride,from3); ! const ATOMIC f3_imag = VECTOR(in,istride,from3 + 1); ! const ATOMIC f4_real = VECTOR(in,istride,from4); ! const ATOMIC f4_imag = VECTOR(in,istride,from4 + 1); ! ! const ATOMIC z0_real = f0_real; ! const ATOMIC z0_imag = f0_imag; ! const ATOMIC z1_real = w1_real * f1_real - w1_imag * f1_imag; ! const ATOMIC z1_imag = w1_real * f1_imag + w1_imag * f1_real; ! const ATOMIC z2_real = w2_real * f2_real - w2_imag * f2_imag; ! const ATOMIC z2_imag = w2_real * f2_imag + w2_imag * f2_real; ! const ATOMIC z3_real = w3_real * f3_real - w3_imag * f3_imag; ! const ATOMIC z3_imag = w3_real * f3_imag + w3_imag * f3_real; ! const ATOMIC z4_real = w4_real * f4_real - w4_imag * f4_imag; ! const ATOMIC z4_imag = w4_real * f4_imag + w4_imag * f4_real; ! ! /* compute x = W(5) z */ ! ! /* t1 = z1 + z4 */ ! const ATOMIC t1_real = z1_real + z4_real; ! const ATOMIC t1_imag = z1_imag + z4_imag; ! ! /* t2 = z2 + z3 */ ! const ATOMIC t2_real = z2_real + z3_real; ! const ATOMIC t2_imag = z2_imag + z3_imag; ! ! /* t3 = z1 - z4 */ ! const ATOMIC t3_real = z1_real - z4_real; ! const ATOMIC t3_imag = z1_imag - z4_imag; ! ! /* t4 = z2 - z3 */ ! const ATOMIC t4_real = z2_real - z3_real; ! const ATOMIC t4_imag = z2_imag - z3_imag; ! ! /* t5 = t1 + t2 */ ! const ATOMIC t5_real = t1_real + t2_real; ! const ATOMIC t5_imag = t1_imag + t2_imag; ! ! /* t6 = (sqrt(5)/4)(t1 - t2) */ ! const ATOMIC t6_real = (sqrt (5.0) / 4.0) * (t1_real - t2_real); ! const ATOMIC t6_imag = (sqrt (5.0) / 4.0) * (t1_imag - t2_imag); ! ! /* t7 = z0 - ((t5)/4) */ ! const ATOMIC t7_real = z0_real - t5_real / 4.0; ! const ATOMIC t7_imag = z0_imag - t5_imag / 4.0; ! ! /* t8 = t7 + t6 */ ! const ATOMIC t8_real = t7_real + t6_real; ! const ATOMIC t8_imag = t7_imag + t6_imag; ! ! /* t9 = t7 - t6 */ ! const ATOMIC t9_real = t7_real - t6_real; ! const ATOMIC t9_imag = t7_imag - t6_imag; ! ! /* t10 = - (sin(2 pi/5) t3 + sin(2 pi/10) t4) */ ! const ATOMIC t10_real = -sina * t3_real - sinb * t4_real; ! const ATOMIC t10_imag = -sina * t3_imag - sinb * t4_imag; ! ! /* t11 = -(sin(2 pi/10) t3 - sin(2 pi/5) t4) */ ! const ATOMIC t11_real = -sinb * t3_real + sina * t4_real; ! const ATOMIC t11_imag = -sinb * t3_imag + sina * t4_imag; ! ! /* x0 = z0 + t5 */ ! const ATOMIC x0_real = z0_real + t5_real; ! const ATOMIC x0_imag = z0_imag + t5_imag; ! ! /* x1 = t8 + i t10 */ ! const ATOMIC x1_real = t8_real - t10_imag; ! const ATOMIC x1_imag = t8_imag + t10_real; ! ! /* x2 = t9 + i t11 */ ! const ATOMIC x2_real = t9_real - t11_imag; ! const ATOMIC x2_imag = t9_imag + t11_real; ! ! /* x3 = t9 - i t11 */ ! const ATOMIC x3_real = t9_real + t11_imag; ! const ATOMIC x3_imag = t9_imag - t11_real; ! ! /* x4 = t8 - i t10 */ ! const ATOMIC x4_real = t8_real + t10_imag; ! const ATOMIC x4_imag = t8_imag - t10_real; ! ! const size_t to0 = k1 * product + 2 * k - 1; ! const size_t to1 = to0 + 2 * product_1; ! const size_t to2 = to1 + 2 * product_1; ! const size_t to3 = 2 * product_1 - 2 * k + k1 * product - 1; ! const size_t to4 = to3 + 2 * product_1; ! ! VECTOR(out,ostride,to0) = x0_real; ! VECTOR(out,ostride,to0 + 1) = x0_imag; ! ! VECTOR(out,ostride,to1) = x1_real; ! VECTOR(out,ostride,to1 + 1) = x1_imag; ! ! VECTOR(out,ostride,to2) = x2_real; ! VECTOR(out,ostride,to2 + 1) = x2_imag; ! ! VECTOR(out,ostride,to3) = x4_real; ! VECTOR(out,ostride,to3 + 1) = -x4_imag; ! ! VECTOR(out,ostride,to4) = x3_real; ! VECTOR(out,ostride,to4 + 1) = -x3_imag; ! } } diff -x.info* -rc2P gsl-1.3/fft/real_pass_n.c gsl-1.4/fft/real_pass_n.c *** gsl-1.3/fft/real_pass_n.c Tue Jul 24 13:33:52 2001 --- gsl-1.4/fft/real_pass_n.c Fri Jul 25 15:18:10 2003 *************** *** 20,30 **** static void FUNCTION(fft_real,pass_n) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t k, k1; --- 20,30 ---- static void FUNCTION(fft_real,pass_n) (const BASE in[], ! const size_t istride, ! BASE out[], ! const size_t ostride, ! const size_t factor, ! const size_t product, ! const size_t n, ! const TYPE(gsl_complex) twiddle[]) { size_t k, k1; *************** *** 47,98 **** for (e1 = 0; e1 <= factor - e1; e1++) ! { ! ATOMIC sum_real = 0.0; ! ATOMIC sum_imag = 0.0; ! ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC tmp_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; ! ATOMIC tmp_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = tmp_real; ! dw_imag = tmp_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ATOMIC z_real = VECTOR(in,istride,k1 * product_1 + e2 * m); ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! sum_real += w_real * z_real; ! sum_imag += w_imag * z_real; ! ! } ! if (e1 == 0) ! { ! const size_t to0 = product * k1; ! VECTOR(out,ostride,to0) = sum_real; ! } ! else if (e1 < factor - e1) ! { ! const size_t to0 = k1 * product + 2 * e1 * product_1 - 1; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = sum_imag; ! } ! else if (e1 == factor - e1) ! { ! const size_t to0 = k1 * product + 2 * e1 * product_1 - 1; ! VECTOR(out,ostride,to0) = sum_real; ! } ! } } --- 47,98 ---- for (e1 = 0; e1 <= factor - e1; e1++) ! { ! ATOMIC sum_real = 0.0; ! ATOMIC sum_imag = 0.0; ! ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC tmp_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; ! ATOMIC tmp_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = tmp_real; ! dw_imag = tmp_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ATOMIC z_real = VECTOR(in,istride,k1 * product_1 + e2 * m); ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! sum_real += w_real * z_real; ! sum_imag += w_imag * z_real; ! ! } ! if (e1 == 0) ! { ! const size_t to0 = product * k1; ! VECTOR(out,ostride,to0) = sum_real; ! } ! else if (e1 < factor - e1) ! { ! const size_t to0 = k1 * product + 2 * e1 * product_1 - 1; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = sum_imag; ! } ! else if (e1 == factor - e1) ! { ! const size_t to0 = k1 * product + 2 * e1 * product_1 - 1; ! VECTOR(out,ostride,to0) = sum_real; ! } ! } } *************** *** 103,179 **** { for (k1 = 0; k1 < q; k1++) ! { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC sum_real = 0.0, sum_imag = 0.0; ! ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! const ATOMIC tmp_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; ! const ATOMIC tmp_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = tmp_real; ! dw_imag = tmp_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ! int tskip = (product_1 + 1) / 2 - 1; ! const size_t from0 = k1 * product_1 + 2 * k + e2 * m - 1; ! ATOMIC tw_real, tw_imag; ! ATOMIC z_real, z_imag; ! ! if (e2 == 0) ! { ! tw_real = 1.0; ! tw_imag = 0.0; ! } ! else ! { ! const size_t t_index = (k - 1) + (e2 - 1) * tskip; ! tw_real = GSL_REAL(twiddle[t_index]); ! tw_imag = -GSL_IMAG(twiddle[t_index]); ! } ! ! { ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! ! z_real = tw_real * f0_real - tw_imag * f0_imag; ! z_imag = tw_real * f0_imag + tw_imag * f0_real; ! } ! ! if (e2 > 0) ! { ! const ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! const ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! sum_real += w_real * z_real - w_imag * z_imag; ! sum_imag += w_real * z_imag + w_imag * z_real; ! } ! ! if (e1 < factor - e1) ! { ! const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = sum_imag; ! } ! else ! { ! const size_t to0 = k1 * product - 1 + 2 * (factor - e1) * product_1 - 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = -sum_imag; ! } ! } ! } } --- 103,179 ---- { for (k1 = 0; k1 < q; k1++) ! { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC sum_real = 0.0, sum_imag = 0.0; ! ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ! if (e1 > 0) ! { ! const ATOMIC tmp_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; ! const ATOMIC tmp_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = tmp_real; ! dw_imag = tmp_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ! int tskip = (product_1 + 1) / 2 - 1; ! const size_t from0 = k1 * product_1 + 2 * k + e2 * m - 1; ! ATOMIC tw_real, tw_imag; ! ATOMIC z_real, z_imag; ! ! if (e2 == 0) ! { ! tw_real = 1.0; ! tw_imag = 0.0; ! } ! else ! { ! const size_t t_index = (k - 1) + (e2 - 1) * tskip; ! tw_real = GSL_REAL(twiddle[t_index]); ! tw_imag = -GSL_IMAG(twiddle[t_index]); ! } ! ! { ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! const ATOMIC f0_imag = VECTOR(in,istride,from0 + 1); ! ! z_real = tw_real * f0_real - tw_imag * f0_imag; ! z_imag = tw_real * f0_imag + tw_imag * f0_real; ! } ! ! if (e2 > 0) ! { ! const ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! const ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! sum_real += w_real * z_real - w_imag * z_imag; ! sum_imag += w_real * z_imag + w_imag * z_real; ! } ! ! if (e1 < factor - e1) ! { ! const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = sum_imag; ! } ! else ! { ! const size_t to0 = k1 * product - 1 + 2 * (factor - e1) * product_1 - 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = -sum_imag; ! } ! } ! } } *************** *** 189,262 **** for (k1 = 0; k1 < q; k1++) { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC z_real, z_imag; ! ! ATOMIC sum_real = 0.0; ! ATOMIC sum_imag = 0.0; ! ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ATOMIC tw_real = 1.0, tw_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC t_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; ! ATOMIC t_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = t_real; ! dw_imag = t_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = tw_real * cos_tw_arg - tw_imag * sin_tw_arg; ! ATOMIC tmp_imag = tw_real * sin_tw_arg + tw_imag * cos_tw_arg; ! tw_real = tmp_real; ! tw_imag = tmp_imag; ! } ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! ! { ! const size_t from0 = k1 * product_1 + 2 * k + e2 * m - 1; ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! z_real = tw_real * f0_real; ! z_imag = tw_imag * f0_real; ! } ! ! sum_real += w_real * z_real - w_imag * z_imag; ! sum_imag += w_real * z_imag + w_imag * z_real; ! } ! ! if (e1 + 1 < factor - e1) ! { ! const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = sum_imag; ! } ! else if (e1 + 1 == factor - e1) ! { ! const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! } ! else ! { ! const size_t to0 = k1 * product - 1 + 2 * (factor - e1) * product_1 - 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = -sum_imag; ! } ! } } } --- 189,262 ---- for (k1 = 0; k1 < q; k1++) { ! ATOMIC dw_real = 1.0, dw_imag = 0.0; ! for (e1 = 0; e1 < factor; e1++) ! { ! ATOMIC z_real, z_imag; ! ! ATOMIC sum_real = 0.0; ! ATOMIC sum_imag = 0.0; ! ! ATOMIC w_real = 1.0, w_imag = 0.0; ! ATOMIC tw_real = 1.0, tw_imag = 0.0; ! ! if (e1 > 0) ! { ! ATOMIC t_real = dw_real * cos_d_theta + dw_imag * sin_d_theta; ! ATOMIC t_imag = -dw_real * sin_d_theta + dw_imag * cos_d_theta; ! dw_real = t_real; ! dw_imag = t_imag; ! } ! ! for (e2 = 0; e2 < factor; e2++) ! { ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = tw_real * cos_tw_arg - tw_imag * sin_tw_arg; ! ATOMIC tmp_imag = tw_real * sin_tw_arg + tw_imag * cos_tw_arg; ! tw_real = tmp_real; ! tw_imag = tmp_imag; ! } ! ! if (e2 > 0) ! { ! ATOMIC tmp_real = dw_real * w_real - dw_imag * w_imag; ! ATOMIC tmp_imag = dw_real * w_imag + dw_imag * w_real; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! ! { ! const size_t from0 = k1 * product_1 + 2 * k + e2 * m - 1; ! const ATOMIC f0_real = VECTOR(in,istride,from0); ! z_real = tw_real * f0_real; ! z_imag = tw_imag * f0_real; ! } ! ! sum_real += w_real * z_real - w_imag * z_imag; ! sum_imag += w_real * z_imag + w_imag * z_real; ! } ! ! if (e1 + 1 < factor - e1) ! { ! const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = sum_imag; ! } ! else if (e1 + 1 == factor - e1) ! { ! const size_t to0 = k1 * product - 1 + 2 * e1 * product_1 + 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! } ! else ! { ! const size_t to0 = k1 * product - 1 + 2 * (factor - e1) * product_1 - 2 * k; ! VECTOR(out,ostride,to0) = sum_real; ! VECTOR(out,ostride,to0 + 1) = -sum_imag; ! } ! } } } diff -x.info* -rc2P gsl-1.3/fft/real_radix2.c gsl-1.4/fft/real_radix2.c *** gsl-1.3/fft/real_radix2.c Tue May 1 22:22:29 2001 --- gsl-1.4/fft/real_radix2.c Fri Jul 25 15:18:10 2003 *************** *** 64,133 **** for (b = 0; b < q; b++) ! { ! ATOMIC t0_real = VECTOR(data,stride,b*p) + VECTOR(data,stride,b*p + p_1) ; ! ATOMIC t1_real = VECTOR(data,stride,b*p) - VECTOR(data,stride,b*p + p_1) ; ! ! VECTOR(data,stride,b*p) = t0_real ; ! VECTOR(data,stride,b*p + p_1) = t1_real ; ! } /* a = 1 ... p_{i-1}/2 - 1 */ { ! ATOMIC w_real = 1.0; ! ATOMIC w_imag = 0.0; ! const double theta = - 2.0 * M_PI / p; ! ! const ATOMIC s = sin (theta); ! const ATOMIC t = sin (theta / 2.0); ! const ATOMIC s2 = 2.0 * t * t; ! ! for (a = 1; a < (p_1)/2; a++) ! { ! /* trignometric recurrence for w-> exp(i theta) w */ ! ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! for (b = 0; b < q; b++) ! { ! ATOMIC z0_real = VECTOR(data,stride,b*p + a) ; ! ATOMIC z0_imag = VECTOR(data,stride,b*p + p_1 - a) ; ! ATOMIC z1_real = VECTOR(data,stride,b*p + p_1 + a) ; ! ATOMIC z1_imag = VECTOR(data,stride,b*p + p - a) ; ! ! /* t0 = z0 + w * z1 */ ! ! ATOMIC t0_real = z0_real + w_real * z1_real - w_imag * z1_imag; ! ATOMIC t0_imag = z0_imag + w_real * z1_imag + w_imag * z1_real; ! ! /* t1 = z0 - w * z1 */ ! ! ATOMIC t1_real = z0_real - w_real * z1_real + w_imag * z1_imag; ! ATOMIC t1_imag = z0_imag - w_real * z1_imag - w_imag * z1_real; ! ! VECTOR(data,stride,b*p + a) = t0_real ; ! VECTOR(data,stride,b*p + p - a) = t0_imag ; ! ! VECTOR(data,stride,b*p + p_1 - a) = t1_real ; ! VECTOR(data,stride,b*p + p_1 + a) = -t1_imag ; ! } ! } } if (p_1 > 1) ! { ! for (b = 0; b < q; b++) ! { ! /* a = p_{i-1}/2 */ ! ! VECTOR(data,stride,b*p + p - p_1/2) *= -1 ; ! } ! } } return 0; --- 64,133 ---- for (b = 0; b < q; b++) ! { ! ATOMIC t0_real = VECTOR(data,stride,b*p) + VECTOR(data,stride,b*p + p_1) ; ! ATOMIC t1_real = VECTOR(data,stride,b*p) - VECTOR(data,stride,b*p + p_1) ; ! ! VECTOR(data,stride,b*p) = t0_real ; ! VECTOR(data,stride,b*p + p_1) = t1_real ; ! } /* a = 1 ... p_{i-1}/2 - 1 */ { ! ATOMIC w_real = 1.0; ! ATOMIC w_imag = 0.0; ! const double theta = - 2.0 * M_PI / p; ! ! const ATOMIC s = sin (theta); ! const ATOMIC t = sin (theta / 2.0); ! const ATOMIC s2 = 2.0 * t * t; ! ! for (a = 1; a < (p_1)/2; a++) ! { ! /* trignometric recurrence for w-> exp(i theta) w */ ! ! { ! const ATOMIC tmp_real = w_real - s * w_imag - s2 * w_real; ! const ATOMIC tmp_imag = w_imag + s * w_real - s2 * w_imag; ! w_real = tmp_real; ! w_imag = tmp_imag; ! } ! ! for (b = 0; b < q; b++) ! { ! ATOMIC z0_real = VECTOR(data,stride,b*p + a) ; ! ATOMIC z0_imag = VECTOR(data,stride,b*p + p_1 - a) ; ! ATOMIC z1_real = VECTOR(data,stride,b*p + p_1 + a) ; ! ATOMIC z1_imag = VECTOR(data,stride,b*p + p - a) ; ! ! /* t0 = z0 + w * z1 */ ! ! ATOMIC t0_real = z0_real + w_real * z1_real - w_imag * z1_imag; ! ATOMIC t0_imag = z0_imag + w_real * z1_imag + w_imag * z1_real; ! ! /* t1 = z0 - w * z1 */ ! ! ATOMIC t1_real = z0_real - w_real * z1_real + w_imag * z1_imag; ! ATOMIC t1_imag = z0_imag - w_real * z1_imag - w_imag * z1_real; ! ! VECTOR(data,stride,b*p + a) = t0_real ; ! VECTOR(data,stride,b*p + p - a) = t0_imag ; ! ! VECTOR(data,stride,b*p + p_1 - a) = t1_real ; ! VECTOR(data,stride,b*p + p_1 + a) = -t1_imag ; ! } ! } } if (p_1 > 1) ! { ! for (b = 0; b < q; b++) ! { ! /* a = p_{i-1}/2 */ ! ! VECTOR(data,stride,b*p + p - p_1/2) *= -1 ; ! } ! } } return 0; diff -x.info* -rc2P gsl-1.3/fft/real_unpack.c gsl-1.4/fft/real_unpack.c *** gsl-1.3/fft/real_unpack.c Wed Apr 18 21:52:27 2001 --- gsl-1.4/fft/real_unpack.c Fri Jul 25 15:18:10 2003 *************** *** 22,27 **** int FUNCTION(gsl_fft_real,unpack) (const BASE real_coefficient[], ! BASE complex_coefficient[], ! const size_t stride, const size_t n) { size_t i; --- 22,27 ---- int FUNCTION(gsl_fft_real,unpack) (const BASE real_coefficient[], ! BASE complex_coefficient[], ! const size_t stride, const size_t n) { size_t i; diff -x.info* -rc2P gsl-1.3/fft/signals.h gsl-1.4/fft/signals.h *** gsl-1.3/fft/signals.h Wed May 2 22:50:10 2001 --- gsl-1.4/fft/signals.h Fri Jul 25 15:18:18 2003 *************** *** 19,64 **** int FUNCTION(fft_signal,complex_pulse) (const size_t k, ! const size_t n, ! const size_t stride, ! const BASE z_real, const BASE z_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_constant) (const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_exp) (const int k, ! const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_exppair) (const int k1, ! const int k2, ! const size_t n, ! const size_t stride, ! const BASE z1_real, ! const BASE z1_imag, ! const BASE z2_real, ! const BASE z2_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,real_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]); --- 19,64 ---- int FUNCTION(fft_signal,complex_pulse) (const size_t k, ! const size_t n, ! const size_t stride, ! const BASE z_real, const BASE z_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_constant) (const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_exp) (const int k, ! const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_exppair) (const int k1, ! const int k2, ! const size_t n, ! const size_t stride, ! const BASE z1_real, ! const BASE z1_imag, ! const BASE z2_real, ! const BASE z2_imag, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,complex_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]); int FUNCTION(fft_signal,real_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]); diff -x.info* -rc2P gsl-1.3/fft/signals_source.c gsl-1.4/fft/signals_source.c *** gsl-1.3/fft/signals_source.c Wed May 2 22:50:10 2001 --- gsl-1.4/fft/signals_source.c Fri Jul 25 15:18:10 2003 *************** *** 22,31 **** int FUNCTION(fft_signal,complex_pulse) (const size_t k, ! const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]) { size_t j; --- 22,31 ---- int FUNCTION(fft_signal,complex_pulse) (const size_t k, ! const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]) { size_t j; *************** *** 65,73 **** int FUNCTION(fft_signal,complex_constant) (const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]) { size_t j; --- 65,73 ---- int FUNCTION(fft_signal,complex_constant) (const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]) { size_t j; *************** *** 104,113 **** int FUNCTION(fft_signal,complex_exp) (const int k, ! const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]) { size_t j; --- 104,113 ---- int FUNCTION(fft_signal,complex_exp) (const int k, ! const size_t n, ! const size_t stride, ! const BASE z_real, ! const BASE z_imag, ! BASE data[], ! BASE fft[]) { size_t j; *************** *** 142,150 **** if (k <= 0) { ! freq = (n-k) % n ; } else { ! freq = (k % n); }; --- 142,150 ---- if (k <= 0) { ! freq = (n-k) % n ; } else { ! freq = (k % n); }; *************** *** 160,172 **** int FUNCTION(fft_signal,complex_exppair) (const int k1, ! const int k2, ! const size_t n, ! const size_t stride, ! const BASE z1_real, ! const BASE z1_imag, ! const BASE z2_real, ! const BASE z2_imag, ! BASE data[], ! BASE fft[]) { size_t j; --- 160,172 ---- int FUNCTION(fft_signal,complex_exppair) (const int k1, ! const int k2, ! const size_t n, ! const size_t stride, ! const BASE z1_real, ! const BASE z1_imag, ! const BASE z2_real, ! const BASE z2_imag, ! BASE data[], ! BASE fft[]) { size_t j; *************** *** 207,224 **** if (k1 <= 0) { ! freq1 = (n - k1) % n; } else { ! freq1 = (k1 % n); }; if (k2 <= 0) { ! freq2 = (n - k2) % n; } else { ! freq2 = (k2 % n); }; --- 207,224 ---- if (k1 <= 0) { ! freq1 = (n - k1) % n; } else { ! freq1 = (k1 % n); }; if (k2 <= 0) { ! freq2 = (n - k2) % n; } else { ! freq2 = (k2 % n); }; *************** *** 236,242 **** int FUNCTION(fft_signal,complex_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]) { size_t i; --- 236,242 ---- int FUNCTION(fft_signal,complex_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]) { size_t i; *************** *** 263,269 **** int FUNCTION(fft_signal,real_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]) { size_t i; --- 263,269 ---- int FUNCTION(fft_signal,real_noise) (const size_t n, ! const size_t stride, ! BASE data[], ! BASE fft[]) { size_t i; diff -x.info* -rc2P gsl-1.3/fft/test.c gsl-1.4/fft/test.c *** gsl-1.3/fft/test.c Tue Jun 12 18:14:21 2001 --- gsl-1.4/fft/test.c Fri Jul 25 15:18:10 2003 *************** *** 39,43 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); #include "complex_internal.h" --- 39,43 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); #include "complex_internal.h" *************** *** 90,102 **** { if (i >= start) ! { ! for (stride = 1 ; stride < 4 ; stride++) ! { ! test_complex_bitreverse_order (stride, i) ; ! test_complex_radix2 (stride, i) ; ! test_real_bitreverse_order (stride, i) ; ! test_real_radix2 (stride, i) ; ! } ! } } --- 90,102 ---- { if (i >= start) ! { ! for (stride = 1 ; stride < 4 ; stride++) ! { ! test_complex_bitreverse_order (stride, i) ; ! test_complex_radix2 (stride, i) ; ! test_real_bitreverse_order (stride, i) ; ! test_real_radix2 (stride, i) ; ! } ! } } *************** *** 104,113 **** { for (stride = 1 ; stride < 4 ; stride++) ! { ! test_complex_func (stride, i) ; ! test_complex_float_func (stride, i) ; ! test_real_func (stride, i) ; ! test_real_float_func (stride, i) ; ! } } --- 104,113 ---- { for (stride = 1 ; stride < 4 ; stride++) ! { ! test_complex_func (stride, i) ; ! test_complex_float_func (stride, i) ; ! test_real_func (stride, i) ; ! test_real_float_func (stride, i) ; ! } } diff -x.info* -rc2P gsl-1.3/fft/test_complex_source.c gsl-1.4/fft/test_complex_source.c *** gsl-1.3/fft/test_complex_source.c Mon Jul 16 12:42:11 2001 --- gsl-1.4/fft/test_complex_source.c Fri Jul 25 15:18:10 2003 *************** *** 24,33 **** void FUNCTION(test_complex,func) (size_t stride, size_t n); int FUNCTION(test,offset) (const BASE data[], size_t stride, ! size_t n, size_t offset); void FUNCTION(test_complex,bitreverse_order) (size_t stride, size_t n) ; void FUNCTION(test_complex,radix2) (size_t stride, size_t n); int FUNCTION(test,offset) (const BASE data[], size_t stride, ! size_t n, size_t offset) { int status = 0 ; --- 24,33 ---- void FUNCTION(test_complex,func) (size_t stride, size_t n); int FUNCTION(test,offset) (const BASE data[], size_t stride, ! size_t n, size_t offset); void FUNCTION(test_complex,bitreverse_order) (size_t stride, size_t n) ; void FUNCTION(test_complex,radix2) (size_t stride, size_t n); int FUNCTION(test,offset) (const BASE data[], size_t stride, ! size_t n, size_t offset) { int status = 0 ; *************** *** 39,48 **** for (j = 1; j < stride; j++) ! { ! status |= data[k] != k + offset ; ! k++ ; ! status |= data[k] != k + offset ; ! k++ ; ! } } return status ; --- 39,48 ---- for (j = 1; j < stride; j++) ! { ! status |= data[k] != k + offset ; ! k++ ; ! status |= data[k] != k + offset ; ! k++ ; ! } } return status ; *************** *** 71,75 **** } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* Test allocation */ --- 71,75 ---- } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* Test allocation */ *************** *** 78,82 **** cw = FUNCTION(gsl_fft_complex_wavetable,alloc) (n); gsl_test (cw == 0, NAME(gsl_fft_complex_wavetable) ! "_alloc, n = %d, stride = %d", n, stride); } --- 78,82 ---- cw = FUNCTION(gsl_fft_complex_wavetable,alloc) (n); gsl_test (cw == 0, NAME(gsl_fft_complex_wavetable) ! "_alloc, n = %d, stride = %d", n, stride); } *************** *** 84,88 **** cwork = FUNCTION(gsl_fft_complex_workspace,alloc) (n); gsl_test (cwork == 0, NAME(gsl_fft_complex_workspace) ! "_alloc, n = %d", n); } --- 84,88 ---- cwork = FUNCTION(gsl_fft_complex_workspace,alloc) (n); gsl_test (cwork == 0, NAME(gsl_fft_complex_workspace) ! "_alloc, n = %d", n); } *************** *** 94,99 **** for (i = 0 ; i < n ; i++) { ! REAL(complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } --- 94,99 ---- for (i = 0 ; i < n ; i++) { ! REAL(complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } *************** *** 102,122 **** for (i = 0 ; i < n ; i++) { ! REAL(fft_complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(fft_complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_forward avoids unstrided data, n = %d, stride = %d", ! n, stride); } } --- 102,122 ---- for (i = 0 ; i < n ; i++) { ! REAL(fft_complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(fft_complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_forward avoids unstrided data, n = %d, stride = %d", ! n, stride); } } *************** *** 127,142 **** status = FUNCTION(gsl_fft_complex,inverse) (complex_data, stride, n, cw, cwork); status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_inverse with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_inverse other data untouched, n = %d, stride = %d", ! n, stride); } --- 127,142 ---- status = FUNCTION(gsl_fft_complex,inverse) (complex_data, stride, n, cw, cwork); status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_inverse with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_inverse other data untouched, n = %d, stride = %d", ! n, stride); } *************** *** 150,172 **** for (i = 0; i < n; i++) { ! REAL(complex_tmp,stride,i) *= n; ! IMAG(complex_tmp,stride,i) *= n; } status = FUNCTION(compare_complex,results) ("orig", ! complex_tmp, ! "fft backward", ! fft_complex_tmp, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_backward with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (fft_complex_tmp, stride, n, 3000) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_backward avoids unstrided data, n = %d, stride = %d", ! n, stride); } --- 150,172 ---- for (i = 0; i < n; i++) { ! REAL(complex_tmp,stride,i) *= n; ! IMAG(complex_tmp,stride,i) *= n; } status = FUNCTION(compare_complex,results) ("orig", ! complex_tmp, ! "fft backward", ! fft_complex_tmp, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_backward with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (fft_complex_tmp, stride, n, 3000) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_backward avoids unstrided data, n = %d, stride = %d", ! n, stride); } *************** *** 177,187 **** { FUNCTION(fft_signal,complex_pulse) (1, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of pulse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_pulse, n = %d, stride = %d", n, stride); } --- 177,187 ---- { FUNCTION(fft_signal,complex_pulse) (1, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of pulse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_pulse, n = %d, stride = %d", n, stride); } *************** *** 192,203 **** { FUNCTION(fft_signal,complex_constant) (n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of constant", ! complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_constant, n = %d, stride = %d", n, stride); } --- 192,203 ---- { FUNCTION(fft_signal,complex_constant) (n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of constant", ! complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_constant, n = %d, stride = %d", n, stride); } *************** *** 208,222 **** for (i = 0; i < n; i++) { ! FUNCTION(fft_signal,complex_exp) ((int)i, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); ! FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); ! status |= FUNCTION(compare_complex,results) ("analytic", ! fft_complex_data, ! "fft of exp", ! complex_data, ! stride, n, 1e6); } gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_exp, n = %d, stride = %d", n, stride); } --- 208,222 ---- for (i = 0; i < n; i++) { ! FUNCTION(fft_signal,complex_exp) ((int)i, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); ! FUNCTION(gsl_fft_complex,forward) (complex_data, stride, n, cw, cwork); ! status |= FUNCTION(compare_complex,results) ("analytic", ! fft_complex_data, ! "fft of exp", ! complex_data, ! stride, n, 1e6); } gsl_test (status, NAME(gsl_fft_complex) ! "_forward with signal_exp, n = %d, stride = %d", n, stride); } *************** *** 259,267 **** for (bit = 0; bit < logn; bit++) ! { ! j <<= 1; /* reverse shift i into j */ ! j |= i_tmp & 1; ! i_tmp >>= 1; ! } reversed_data[2*j*stride] = data[2*i*stride] ; --- 259,267 ---- for (bit = 0; bit < logn; bit++) ! { ! j <<= 1; /* reverse shift i into j */ ! j |= i_tmp & 1; ! i_tmp >>= 1; ! } reversed_data[2*j*stride] = data[2*i*stride] ; *************** *** 272,279 **** status = FUNCTION(compare_complex,results) ("naive bit reverse", ! reversed_data, ! "gsl_fft_complex_bitreverse_order", ! data, ! stride, n, 1e6); gsl_test (status, "gsl_fft_complex_bitreverse_order, n = %d", n); --- 272,279 ---- status = FUNCTION(compare_complex,results) ("naive bit reverse", ! reversed_data, ! "gsl_fft_complex_bitreverse_order", ! data, ! stride, n, 1e6); gsl_test (status, "gsl_fft_complex_bitreverse_order, n = %d", n); *************** *** 302,306 **** } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* Test radix-2 fft with noise */ --- 302,306 ---- } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* Test radix-2 fft with noise */ *************** *** 308,316 **** { FUNCTION(fft_signal,complex_noise) (n, stride, complex_data, ! fft_complex_data); for (i = 0 ; i < n ; i++) { ! REAL(complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } --- 308,316 ---- { FUNCTION(fft_signal,complex_noise) (n, stride, complex_data, ! fft_complex_data); for (i = 0 ; i < n ; i++) { ! REAL(complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } *************** *** 319,340 **** for (i = 0 ; i < n ; i++) { ! REAL(fft_complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(fft_complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_noise, n = %d, stride = %d", ! n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward avoids unstrided data, n = %d, stride = %d", ! n, stride); } } --- 319,340 ---- for (i = 0 ; i < n ; i++) { ! REAL(fft_complex_tmp,stride,i) = REAL(complex_data,stride,i) ; ! IMAG(fft_complex_tmp,stride,i) = IMAG(complex_data,stride,i) ; } status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_noise, n = %d, stride = %d", ! n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward avoids unstrided data, n = %d, stride = %d", ! n, stride); } } *************** *** 345,360 **** status = FUNCTION(gsl_fft_complex,radix2_inverse) (complex_data, stride, n); status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_inverse with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_inverse other data untouched, n = %d, stride = %d", ! n, stride); } --- 345,360 ---- status = FUNCTION(gsl_fft_complex,radix2_inverse) (complex_data, stride, n); status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_inverse with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (complex_data, stride, n, 0) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_inverse other data untouched, n = %d, stride = %d", ! n, stride); } *************** *** 368,390 **** for (i = 0; i < n; i++) { ! REAL(complex_tmp,stride,i) *= n; ! IMAG(complex_tmp,stride,i) *= n; } status = FUNCTION(compare_complex,results) ("orig", ! complex_tmp, ! "fft backward", ! fft_complex_tmp, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_backward with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (fft_complex_tmp, stride, n, 3000) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_backward avoids unstrided data, n = %d, stride = %d", ! n, stride); } --- 368,390 ---- for (i = 0; i < n; i++) { ! REAL(complex_tmp,stride,i) *= n; ! IMAG(complex_tmp,stride,i) *= n; } status = FUNCTION(compare_complex,results) ("orig", ! complex_tmp, ! "fft backward", ! fft_complex_tmp, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_backward with signal_noise, n = %d, stride = %d", n, stride); if (stride > 1) { ! status = FUNCTION(test, offset) (fft_complex_tmp, stride, n, 3000) ; ! ! gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_backward avoids unstrided data, n = %d, stride = %d", ! n, stride); } *************** *** 395,405 **** { FUNCTION(fft_signal,complex_pulse) (1, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of pulse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_pulse, n = %d, stride = %d", n, stride); } --- 395,405 ---- { FUNCTION(fft_signal,complex_pulse) (1, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of pulse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_pulse, n = %d, stride = %d", n, stride); } *************** *** 410,422 **** { FUNCTION(fft_signal,complex_constant) (n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of constant", ! complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_constant, n = %d, stride = %d", ! n, stride); } --- 410,422 ---- { FUNCTION(fft_signal,complex_constant) (n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); status = FUNCTION(compare_complex,results) ("analytic", fft_complex_data, ! "fft of constant", ! complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_constant, n = %d, stride = %d", ! n, stride); } *************** *** 427,441 **** for (i = 0; i < n; i++) { ! FUNCTION(fft_signal,complex_exp) ((int)i, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); ! FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); ! status |= FUNCTION(compare_complex,results) ("analytic", ! fft_complex_data, ! "fft of exp", ! complex_data, ! stride, n, 1e6); } gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_exp, n = %d, stride = %d", n, stride); } --- 427,441 ---- for (i = 0; i < n; i++) { ! FUNCTION(fft_signal,complex_exp) ((int)i, n, stride, 1.0, 0.0, complex_data, ! fft_complex_data); ! FUNCTION(gsl_fft_complex,radix2_forward) (complex_data, stride, n); ! status |= FUNCTION(compare_complex,results) ("analytic", ! fft_complex_data, ! "fft of exp", ! complex_data, ! stride, n, 1e6); } gsl_test (status, NAME(gsl_fft_complex) ! "_radix2_forward with signal_exp, n = %d, stride = %d", n, stride); } diff -x.info* -rc2P gsl-1.3/fft/test_real_source.c gsl-1.4/fft/test_real_source.c *** gsl-1.3/fft/test_real_source.c Mon Jul 16 13:45:49 2001 --- gsl-1.4/fft/test_real_source.c Fri Jul 25 15:18:10 2003 *************** *** 52,56 **** } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* mixed radix real fft */ --- 52,56 ---- } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* mixed radix real fft */ *************** *** 58,66 **** rw = FUNCTION(gsl_fft_real_wavetable,alloc) (n); gsl_test (rw == 0, NAME(gsl_fft_real_wavetable) ! "_alloc, n = %d, stride = %d", n, stride); rwork = FUNCTION(gsl_fft_real_workspace,alloc) (n); gsl_test (rwork == 0, NAME(gsl_fft_real_workspace) ! "_alloc, n = %d", n); FUNCTION(fft_signal,real_noise) (n, stride, complex_data, fft_complex_data); --- 58,66 ---- rw = FUNCTION(gsl_fft_real_wavetable,alloc) (n); gsl_test (rw == 0, NAME(gsl_fft_real_wavetable) ! "_alloc, n = %d, stride = %d", n, stride); rwork = FUNCTION(gsl_fft_real_workspace,alloc) (n); gsl_test (rwork == 0, NAME(gsl_fft_real_workspace) ! "_alloc, n = %d", n); FUNCTION(fft_signal,real_noise) (n, stride, complex_data, fft_complex_data); *************** *** 76,83 **** status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_real) ! " with signal_real_noise, n = %d, stride = %d", n, stride); /* compute the inverse fft */ --- 76,83 ---- status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_real) ! " with signal_real_noise, n = %d, stride = %d", n, stride); /* compute the inverse fft */ *************** *** 85,89 **** hcw = FUNCTION(gsl_fft_halfcomplex_wavetable,alloc) (n); gsl_test (hcw == 0, NAME(gsl_fft_halfcomplex_wavetable) ! "_alloc, n = %d, stride = %d", n, stride); status = FUNCTION(gsl_fft_halfcomplex,transform) (real_data, stride, n, hcw, rwork); --- 85,89 ---- hcw = FUNCTION(gsl_fft_halfcomplex_wavetable,alloc) (n); gsl_test (hcw == 0, NAME(gsl_fft_halfcomplex_wavetable) ! "_alloc, n = %d, stride = %d", n, stride); status = FUNCTION(gsl_fft_halfcomplex,transform) (real_data, stride, n, hcw, rwork); *************** *** 97,105 **** status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_halfcomplex) ! " with data from signal_noise, n = %d, stride = %d", n, stride); FUNCTION(gsl_fft_real_workspace,free) (rwork); --- 97,105 ---- status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_halfcomplex) ! " with data from signal_noise, n = %d, stride = %d", n, stride); FUNCTION(gsl_fft_real_workspace,free) (rwork); *************** *** 142,150 **** for (bit = 0; bit < logn; bit++) ! { ! j <<= 1; /* reverse shift i into j */ ! j |= i_tmp & 1; ! i_tmp >>= 1; ! } reversed_data[j*stride] = data[i*stride] ; --- 142,150 ---- for (bit = 0; bit < logn; bit++) ! { ! j <<= 1; /* reverse shift i into j */ ! j |= i_tmp & 1; ! i_tmp >>= 1; ! } reversed_data[j*stride] = data[i*stride] ; *************** *** 154,161 **** status = FUNCTION(compare_real,results) ("naive bit reverse", ! reversed_data, ! "gsl_fft_complex_bitreverse_order", ! data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_real) "_bitreverse_order, n = %d", n); --- 154,161 ---- status = FUNCTION(compare_real,results) ("naive bit reverse", ! reversed_data, ! "gsl_fft_complex_bitreverse_order", ! data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_real) "_bitreverse_order, n = %d", n); *************** *** 189,193 **** } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* radix-2 real fft */ --- 189,193 ---- } ! gsl_set_error_handler (NULL); /* abort on any errors */ /* radix-2 real fft */ *************** *** 205,212 **** status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_real) ! "_radix2 with signal_real_noise, n = %d, stride = %d", n, stride); /* compute the inverse fft */ --- 205,212 ---- status = FUNCTION(compare_complex,results) ("dft", fft_complex_data, ! "fft of noise", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_real) ! "_radix2 with signal_real_noise, n = %d, stride = %d", n, stride); /* compute the inverse fft */ *************** *** 222,230 **** status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_halfcomplex) ! "_radix2 with data from signal_noise, n = %d, stride = %d", n, stride); --- 222,230 ---- status = FUNCTION(compare_complex,results) ("orig", complex_tmp, ! "fft inverse", complex_data, ! stride, n, 1e6); gsl_test (status, NAME(gsl_fft_halfcomplex) ! "_radix2 with data from signal_noise, n = %d, stride = %d", n, stride); diff -x.info* -rc2P gsl-1.3/fit/Makefile.in gsl-1.4/fit/Makefile.in *** gsl-1.3/fit/Makefile.in Wed Dec 18 22:39:15 2002 --- gsl-1.4/fit/Makefile.in Thu Aug 14 12:30:00 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslfit.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslfit.la *************** *** 99,191 **** test_SOURCES = test.c test_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslfit_la_LDFLAGS = ! libgslfit_la_LIBADD = ! libgslfit_la_OBJECTS = linear.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslfit.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ ! ../sys/libgslsys.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslfit_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps fit/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,238 ---- test_SOURCES = test.c test_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + subdir = fit + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslfit_la_LDFLAGS = ! libgslfit_la_LIBADD = ! am_libgslfit_la_OBJECTS = linear.lo ! libgslfit_la_OBJECTS = $(am_libgslfit_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslfit.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ ! ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgslfit_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu fit/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslfit.la: $(libgslfit_la_OBJECTS) $(libgslfit_la_DEPENDENCIES) + $(LINK) $(libgslfit_la_LDFLAGS) $(libgslfit_la_OBJECTS) $(libgslfit_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 196,332 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslfit.la: $(libgslfit_la_OBJECTS) $(libgslfit_la_DEPENDENCIES) ! $(LINK) $(libgslfit_la_LDFLAGS) $(libgslfit_la_OBJECTS) $(libgslfit_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = fit distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 243,447 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 335,388 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean #demo_SOURCES = demo.c #demo_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 450,520 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ! clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-libtool distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-pkgincludeHEADERS \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ ! pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS #demo_SOURCES = demo.c #demo_LDADD = libgslfit.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/fit/linear.c gsl-1.4/fit/linear.c *** gsl-1.3/fit/linear.c Wed May 2 22:50:11 2001 --- gsl-1.4/fit/linear.c Fri Jul 25 15:18:10 2003 *************** *** 40,47 **** int gsl_fit_linear (const double *x, const size_t xstride, ! const double *y, const size_t ystride, ! const size_t n, ! double *c0, double *c1, ! double *cov_00, double *cov_01, double *cov_11, double *sumsq) { double m_x = 0, m_y = 0, m_dx2 = 0, m_dxdy = 0; --- 40,47 ---- int gsl_fit_linear (const double *x, const size_t xstride, ! const double *y, const size_t ystride, ! const size_t n, ! double *c0, double *c1, ! double *cov_00, double *cov_01, double *cov_11, double *sumsq) { double m_x = 0, m_y = 0, m_dx2 = 0, m_dxdy = 0; *************** *** 78,88 **** for (i = 0; i < n; i++) { ! const double dx = x[i * xstride] - m_x; ! const double dy = y[i * ystride] - m_y; ! const double d = dy - b * dx; ! d2 += d * d; } ! s2 = d2 / (n - 2.0); /* chisq per degree of freedom */ *cov_00 = s2 * (1.0 / n) * (1 + m_x * m_x / m_dx2); --- 78,88 ---- for (i = 0; i < n; i++) { ! const double dx = x[i * xstride] - m_x; ! const double dy = y[i * ystride] - m_y; ! const double d = dy - b * dx; ! d2 += d * d; } ! s2 = d2 / (n - 2.0); /* chisq per degree of freedom */ *cov_00 = s2 * (1.0 / n) * (1 + m_x * m_x / m_dx2); *************** *** 111,120 **** int gsl_fit_wlinear (const double *x, const size_t xstride, ! const double *w, const size_t wstride, ! const double *y, const size_t ystride, ! const size_t n, ! double *c0, double *c1, ! double *cov_00, double *cov_01, double *cov_11, ! double *chisq) { --- 111,120 ---- int gsl_fit_wlinear (const double *x, const size_t xstride, ! const double *w, const size_t wstride, ! const double *y, const size_t ystride, ! const size_t n, ! double *c0, double *c1, ! double *cov_00, double *cov_01, double *cov_11, ! double *chisq) { *************** *** 132,143 **** if (wi > 0) ! { ! W += wi; ! wm_x += (x[i * xstride] - wm_x) * (wi / W); ! wm_y += (y[i * ystride] - wm_y) * (wi / W); ! } } ! W = 0; /* reset the total weight */ for (i = 0; i < n; i++) --- 132,143 ---- if (wi > 0) ! { ! W += wi; ! wm_x += (x[i * xstride] - wm_x) * (wi / W); ! wm_y += (y[i * ystride] - wm_y) * (wi / W); ! } } ! W = 0; /* reset the total weight */ for (i = 0; i < n; i++) *************** *** 146,157 **** if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! ! W += wi; ! wm_dx2 += (dx * dx - wm_dx2) * (wi / W); ! wm_dxdy += (dx * dy - wm_dxdy) * (wi / W); ! } } --- 146,157 ---- if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! ! W += wi; ! wm_dx2 += (dx * dx - wm_dx2) * (wi / W); ! wm_dxdy += (dx * dy - wm_dxdy) * (wi / W); ! } } *************** *** 175,187 **** for (i = 0; i < n; i++) { ! const double wi = w[i * wstride]; ! if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! const double d = dy - b * dx; ! d2 += wi * d * d; ! } } --- 175,187 ---- for (i = 0; i < n; i++) { ! const double wi = w[i * wstride]; ! if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! const double d = dy - b * dx; ! d2 += wi * d * d; ! } } *************** *** 196,202 **** int gsl_fit_linear_est (const double x, ! const double c0, const double c1, ! const double c00, const double c01, const double c11, ! double *y, double *y_err) { *y = c0 + c1 * x; --- 196,202 ---- int gsl_fit_linear_est (const double x, ! const double c0, const double c1, ! const double c00, const double c01, const double c11, ! double *y, double *y_err) { *y = c0 + c1 * x; *************** *** 208,213 **** int gsl_fit_mul (const double *x, const size_t xstride, ! const double *y, const size_t ystride, ! const size_t n, double *c1, double *cov_11, double *sumsq) { --- 208,213 ---- int gsl_fit_mul (const double *x, const size_t xstride, ! const double *y, const size_t ystride, ! const size_t n, double *c1, double *cov_11, double *sumsq) { *************** *** 243,253 **** for (i = 0; i < n; i++) { ! const double dx = x[i * xstride] - m_x; ! const double dy = y[i * ystride] - m_y; ! const double d = (m_y - b * m_x) + dy - b * dx; ! d2 += d * d; } ! s2 = d2 / (n - 1.0); /* chisq per degree of freedom */ *cov_11 = s2 * 1.0 / (n * (m_x * m_x + m_dx2)); --- 243,253 ---- for (i = 0; i < n; i++) { ! const double dx = x[i * xstride] - m_x; ! const double dy = y[i * ystride] - m_y; ! const double d = (m_y - b * m_x) + dy - b * dx; ! d2 += d * d; } ! s2 = d2 / (n - 1.0); /* chisq per degree of freedom */ *cov_11 = s2 * 1.0 / (n * (m_x * m_x + m_dx2)); *************** *** 262,268 **** int gsl_fit_wmul (const double *x, const size_t xstride, ! const double *w, const size_t wstride, ! const double *y, const size_t ystride, ! const size_t n, double *c1, double *cov_11, double *chisq) { --- 262,268 ---- int gsl_fit_wmul (const double *x, const size_t xstride, ! const double *w, const size_t wstride, ! const double *y, const size_t ystride, ! const size_t n, double *c1, double *cov_11, double *chisq) { *************** *** 281,292 **** if (wi > 0) ! { ! W += wi; ! wm_x += (x[i * xstride] - wm_x) * (wi / W); ! wm_y += (y[i * ystride] - wm_y) * (wi / W); ! } } ! W = 0; /* reset the total weight */ for (i = 0; i < n; i++) --- 281,292 ---- if (wi > 0) ! { ! W += wi; ! wm_x += (x[i * xstride] - wm_x) * (wi / W); ! wm_y += (y[i * ystride] - wm_y) * (wi / W); ! } } ! W = 0; /* reset the total weight */ for (i = 0; i < n; i++) *************** *** 295,306 **** if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! ! W += wi; ! wm_dx2 += (dx * dx - wm_dx2) * (wi / W); ! wm_dxdy += (dx * dy - wm_dxdy) * (wi / W); ! } } --- 295,306 ---- if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! ! W += wi; ! wm_dx2 += (dx * dx - wm_dx2) * (wi / W); ! wm_dxdy += (dx * dy - wm_dxdy) * (wi / W); ! } } *************** *** 319,331 **** for (i = 0; i < n; i++) { ! const double wi = w[i * wstride]; ! if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! const double d = (wm_y - b * wm_x) + (dy - b * dx); ! d2 += wi * d * d; ! } } --- 319,331 ---- for (i = 0; i < n; i++) { ! const double wi = w[i * wstride]; ! if (wi > 0) ! { ! const double dx = x[i * xstride] - wm_x; ! const double dy = y[i * ystride] - wm_y; ! const double d = (wm_y - b * wm_x) + (dy - b * dx); ! d2 += wi * d * d; ! } } diff -x.info* -rc2P gsl-1.3/gsl/Makefile.am gsl-1.4/gsl/Makefile.am *** gsl-1.3/gsl/Makefile.am Mon May 21 17:03:52 2001 --- gsl-1.4/gsl/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 4,8 **** for h in $$HEADERLIST; do \ BASENAME=`basename $$h`; \ ! $(LN_S) $$h $$BASENAME; \ done --- 4,8 ---- for h in $$HEADERLIST; do \ BASENAME=`basename $$h`; \ ! test -e $$BASENAME || $(LN_S) $$h $$BASENAME; \ done diff -x.info* -rc2P gsl-1.3/gsl/Makefile.in gsl-1.4/gsl/Makefile.in *** gsl-1.3/gsl/Makefile.in Wed Dec 18 22:36:25 2002 --- gsl-1.4/gsl/Makefile.in Thu Aug 14 12:31:29 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,151 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! DIST_COMMON = Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - TAR = tar - GZIP_ENV = --best - all: all-redirect .SUFFIXES: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps gsl/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status tags: TAGS TAGS: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = gsl distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: - uninstall: uninstall-am - all-am: Makefile - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - mostlyclean-generic: --- 60,228 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ + subdir = gsl + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! depcomp = ! am__depfiles_maybe = ! DIST_SOURCES = ! DIST_COMMON = Makefile.am Makefile.in ! all: all-am .SUFFIXES: ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu gsl/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) ! mostlyclean-libtool: ! -rm -f *.lo + clean-libtool: + -rm -rf .libs _libs + + distclean-libtool: + -rm -f libtool + uninstall-info-am: tags: TAGS TAGS: + ctags: CTAGS + CTAGS: ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am check: check-am ! all-am: Makefile ! installdirs: ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 154,185 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-generic mostlyclean-am ! clean: clean-am ! distclean-am: distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: tags distdir info-am info dvi-am dvi check check-am \ ! installcheck-am installcheck install-exec-am install-exec \ ! install-data-am install-data install-am install uninstall-am uninstall \ ! all-redirect all-am all installdirs mostlyclean-generic \ ! distclean-generic clean-generic maintainer-clean-generic clean \ ! mostlyclean distclean maintainer-clean --- 231,291 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-generic clean-libtool mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-generic distclean-libtool ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-generic mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am ! ! .PHONY: all all-am check check-am clean clean-generic clean-libtool \ ! distclean distclean-generic distclean-libtool distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-generic \ ! mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ ! uninstall-info-am *************** *** 188,192 **** for h in $$HEADERLIST; do \ BASENAME=`basename $$h`; \ ! $(LN_S) $$h $$BASENAME; \ done --- 294,298 ---- for h in $$HEADERLIST; do \ BASENAME=`basename $$h`; \ ! test -e $$BASENAME || $(LN_S) $$h $$BASENAME; \ done *************** *** 198,202 **** clean: clean-am remove-links distclean: distclean-am remove-links - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 304,307 ---- diff -x.info* -rc2P gsl-1.3/gsl-histogram.c gsl-1.4/gsl-histogram.c *** gsl-1.3/gsl-histogram.c Fri Oct 19 13:51:28 2001 --- gsl-1.4/gsl-histogram.c Fri Jul 25 15:19:22 2003 *************** *** 58,62 **** while (fscanf(stdin, "%lg", &x) == 1) { ! gsl_histogram_increment(h, x); } --- 58,62 ---- while (fscanf(stdin, "%lg", &x) == 1) { ! gsl_histogram_increment(h, x); } diff -x.info* -rc2P gsl-1.3/gsl-randist.c gsl-1.4/gsl-randist.c *** gsl-1.3/gsl-randist.c Wed Jul 18 10:59:03 2001 --- gsl-1.4/gsl-randist.c Fri Jul 25 15:19:22 2003 *************** *** 100,105 **** if (gsl_rng_default_seed != 0) { fprintf(stderr, ! "overriding GSL_RNG_SEED with command line value, seed = %ld\n", ! seed) ; } --- 100,105 ---- if (gsl_rng_default_seed != 0) { fprintf(stderr, ! "overriding GSL_RNG_SEED with command line value, seed = %ld\n", ! seed) ; } *************** *** 223,227 **** DBL_ARG(rho) ; OUTPUT2(gsl_ran_bivariate_gaussian (r, sigmax, sigmay, rho, &x, &y), ! x, y); } else if (NAME("dir-2d")) --- 223,227 ---- DBL_ARG(rho) ; OUTPUT2(gsl_ran_bivariate_gaussian (r, sigmax, sigmay, rho, &x, &y), ! x, y); } else if (NAME("dir-2d")) diff -x.info* -rc2P gsl-1.3/gsl.spec.in gsl-1.4/gsl.spec.in *** gsl-1.3/gsl.spec.in Fri Dec 13 16:56:18 2002 --- gsl-1.4/gsl.spec.in Thu Dec 19 17:01:17 2002 *************** *** 1,18 **** Summary: GNU Scientific Library (GSL) - name: gsl Packager: rosalia@lanl.gov %define version @VERSION@ %define release 0 ! version: %{version} ! release: %{release} ! #Prereq: ! #requires: ! vendor: The GSL Team Distribution: research software ! copyright: Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 The GSL Team ! source: gsl-%{version}.tar.gz ! group: Libraries/Research %define mybuildroot /var/tmp/%{name}-build - %define installroot /install-tmp BuildRoot: %{mybuildroot} --- 1,16 ---- + Name: gsl Summary: GNU Scientific Library (GSL) Packager: rosalia@lanl.gov %define version @VERSION@ %define release 0 ! Version: %{version} ! Release: %{release} ! License: GPL ! Vendor: The GSL Team Distribution: research software ! Copyright: Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 The GSL Team ! Source: gsl-%{version}.tar.gz ! Group: Libraries/Research %define mybuildroot /var/tmp/%{name}-build BuildRoot: %{mybuildroot} *************** *** 42,63 **** %prep ! %setup -c ! echo "dude, mybuildroot is " %{mybuildroot} ! echo "dude, installroot is " %{installroot} ! echo "dude, RPM_BUILD_ROOT is " $RPM_BUILD_ROOT %build ! cd %{name}-%{version}; ./configure --prefix=/usr; make %install ! cd %{name}-%{version}; make install prefix=%{mybuildroot}/usr ! #cd %{name}-%{version}; make install prefix=%{mybuildroot}/%{installroot} ! %post ! %postun %files ! %doc %{name}-%{version}/{NEWS,ChangeLog,INSTALL,README,AUTHORS,THANKS,BUGS} %doc /usr/info/gsl-ref* /usr/bin/gsl-config --- 40,73 ---- %prep ! %setup -q -n gsl-%{version} %build ! CFLAGS="$RPM_OPT_FLAGS" ! ./configure --prefix=%{_prefix} \ ! --bindir=%{_bindir} --mandir=%{_mandir} \ ! --localstatedir=%{_localstatedir} --libdir=%{_libdir} \ ! --datadir=%{_datadir} --includedir=%{_includedir} \ ! --sysconfdir=%{_sysconfdir} ! make %install ! rm -rf $RPM_BUILD_ROOT ! make prefix=$RPM_BUILD_ROOT%{_prefix} bindir=$RPM_BUILD_ROOT%{_bindir} \ ! mandir=$RPM_BUILD_ROOT%{_mandir} libdir=$RPM_BUILD_ROOT%{_libdir} \ ! localstatedir=$RPM_BUILD_ROOT%{_localstatedir} \ ! datadir=$RPM_BUILD_ROOT%{_datadir} \ ! includedir=$RPM_BUILD_ROOT%{_includedir} \ ! sysconfdir=$RPM_BUILD_ROOT%{_sysconfdir} install ! %clean ! rm -rf $RPM_BUILD_ROOT ! ! %post -p /sbin/ldconfig ! ! %postun -p /sbin/ldconfig %files ! %doc {NEWS,ChangeLog,INSTALL,README,AUTHORS,THANKS,BUGS} %doc /usr/info/gsl-ref* /usr/bin/gsl-config diff -x.info* -rc2P gsl-1.3/gsl_machine.h gsl-1.4/gsl_machine.h *** gsl-1.3/gsl_machine.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/gsl_machine.h Fri Jul 25 15:19:22 2003 *************** *** 93,98 **** /* machine precision constants */ ! /* #define GSL_MACH_EPS 1.0e-15 */ ! #define GSL_SQRT_MACH_EPS 3.2e-08 #define GSL_ROOT3_MACH_EPS 1.0e-05 #define GSL_ROOT4_MACH_EPS 0.000178 --- 93,98 ---- /* machine precision constants */ ! /* #define GSL_MACH_EPS 1.0e-15 */ ! #define GSL_SQRT_MACH_EPS 3.2e-08 #define GSL_ROOT3_MACH_EPS 1.0e-05 #define GSL_ROOT4_MACH_EPS 0.000178 diff -x.info* -rc2P gsl-1.3/gsl_math.h gsl-1.4/gsl_math.h *** gsl-1.3/gsl_math.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/gsl_math.h Fri Jul 25 15:19:22 2003 *************** *** 28,44 **** #ifndef M_E ! #define M_E 2.71828182845904523536028747135 /* e */ #endif #ifndef M_LOG2E ! #define M_LOG2E 1.44269504088896340735992468100 /* log_2 (e) */ #endif #ifndef M_LOG10E ! #define M_LOG10E 0.43429448190325182765112891892 /* log_10 (e) */ #endif #ifndef M_SQRT2 ! #define M_SQRT2 1.41421356237309504880168872421 /* sqrt(2) */ #endif --- 28,44 ---- #ifndef M_E ! #define M_E 2.71828182845904523536028747135 /* e */ #endif #ifndef M_LOG2E ! #define M_LOG2E 1.44269504088896340735992468100 /* log_2 (e) */ #endif #ifndef M_LOG10E ! #define M_LOG10E 0.43429448190325182765112891892 /* log_10 (e) */ #endif #ifndef M_SQRT2 ! #define M_SQRT2 1.41421356237309504880168872421 /* sqrt(2) */ #endif *************** *** 49,77 **** #ifndef M_SQRT3 ! #define M_SQRT3 1.73205080756887729352744634151 /* sqrt(3) */ #endif #ifndef M_PI ! #define M_PI 3.14159265358979323846264338328 /* pi */ #endif #ifndef M_PI_2 ! #define M_PI_2 1.57079632679489661923132169164 /* pi/2 */ #endif #ifndef M_PI_4 ! #define M_PI_4 0.78539816339744830966156608458 /* pi/4 */ #endif #ifndef M_SQRTPI ! #define M_SQRTPI 1.77245385090551602729816748334 /* sqrt(pi) */ #endif #ifndef M_2_SQRTPI ! #define M_2_SQRTPI 1.12837916709551257389615890312 /* 2/sqrt(pi) */ #endif #ifndef M_1_PI ! #define M_1_PI 0.31830988618379067153776752675 /* 1/pi */ #endif --- 49,77 ---- #ifndef M_SQRT3 ! #define M_SQRT3 1.73205080756887729352744634151 /* sqrt(3) */ #endif #ifndef M_PI ! #define M_PI 3.14159265358979323846264338328 /* pi */ #endif #ifndef M_PI_2 ! #define M_PI_2 1.57079632679489661923132169164 /* pi/2 */ #endif #ifndef M_PI_4 ! #define M_PI_4 0.78539816339744830966156608458 /* pi/4 */ #endif #ifndef M_SQRTPI ! #define M_SQRTPI 1.77245385090551602729816748334 /* sqrt(pi) */ #endif #ifndef M_2_SQRTPI ! #define M_2_SQRTPI 1.12837916709551257389615890312 /* 2/sqrt(pi) */ #endif #ifndef M_1_PI ! #define M_1_PI 0.31830988618379067153776752675 /* 1/pi */ #endif *************** *** 81,97 **** #ifndef M_LN10 ! #define M_LN10 2.30258509299404568401799145468 /* ln(10) */ #endif #ifndef M_LN2 ! #define M_LN2 0.69314718055994530941723212146 /* ln(2) */ #endif #ifndef M_LNPI ! #define M_LNPI 1.14472988584940017414342735135 /* ln(pi) */ #endif #ifndef M_EULER ! #define M_EULER 0.57721566490153286060651209008 /* Euler constant */ #endif --- 81,97 ---- #ifndef M_LN10 ! #define M_LN10 2.30258509299404568401799145468 /* ln(10) */ #endif #ifndef M_LN2 ! #define M_LN2 0.69314718055994530941723212146 /* ln(2) */ #endif #ifndef M_LNPI ! #define M_LNPI 1.14472988584940017414342735135 /* ln(pi) */ #endif #ifndef M_EULER ! #define M_EULER 0.57721566490153286060651209008 /* Euler constant */ #endif *************** *** 128,132 **** /* inline-friendly strongly typed versions */ ! #ifdef HAVE_INLINE extern inline int GSL_MAX_INT (int a, int b); --- 128,132 ---- /* inline-friendly strongly typed versions */ ! #if HAVE_INLINE extern inline int GSL_MAX_INT (int a, int b); diff -x.info* -rc2P gsl-1.3/gsl_mode.h gsl-1.4/gsl_mode.h *** gsl-1.3/gsl_mode.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/gsl_mode.h Fri Jul 25 15:19:22 2003 *************** *** 67,71 **** #define GSL_PREC_APPROX 2 ! #ifdef HAVE_INLINE extern inline unsigned int GSL_MODE_PREC(gsl_mode_t mt); --- 67,71 ---- #define GSL_PREC_APPROX 2 ! #if HAVE_INLINE extern inline unsigned int GSL_MODE_PREC(gsl_mode_t mt); diff -x.info* -rc2P gsl-1.3/gsl_pow_int.h gsl-1.4/gsl_pow_int.h *** gsl-1.3/gsl_pow_int.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/gsl_pow_int.h Fri Jul 25 15:19:22 2003 *************** *** 33,37 **** __BEGIN_DECLS ! #ifdef HAVE_INLINE extern inline double gsl_pow_2(const double x); extern inline double gsl_pow_3(const double x); --- 33,37 ---- __BEGIN_DECLS ! #if HAVE_INLINE extern inline double gsl_pow_2(const double x); extern inline double gsl_pow_3(const double x); diff -x.info* -rc2P gsl-1.3/gsl_types.h gsl-1.4/gsl_types.h *** gsl-1.3/gsl_types.h Mon Jun 10 14:03:31 2002 --- gsl-1.4/gsl_types.h Fri Jul 25 15:19:22 2003 *************** *** 24,32 **** #ifdef WIN32 ! # ifdef _DLL # ifdef DLL_EXPORT ! # define GSL_VAR __declspec(dllexport) # else ! # define GSL_VAR __declspec(dllimport) # endif # else --- 24,32 ---- #ifdef WIN32 ! # ifdef GSL_DLL # ifdef DLL_EXPORT ! # define GSL_VAR extern __declspec(dllexport) # else ! # define GSL_VAR extern __declspec(dllimport) # endif # else diff -x.info* -rc2P gsl-1.3/gsl_version.h gsl-1.4/gsl_version.h *** gsl-1.3/gsl_version.h Wed Dec 18 22:33:59 2002 --- gsl-1.4/gsl_version.h Thu Aug 14 12:36:01 2003 *************** *** 16,20 **** ! #define GSL_VERSION "1.3" GSL_VAR const char * gsl_version; --- 16,20 ---- ! #define GSL_VERSION "1.4" GSL_VAR const char * gsl_version; diff -x.info* -rc2P gsl-1.3/histogram/Makefile.am gsl-1.4/histogram/Makefile.am *** gsl-1.3/histogram/Makefile.am Fri Jan 18 21:48:06 2002 --- gsl-1.4/histogram/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 5,30 **** INCLUDES= -I$(top_builddir) ! check_PROGRAMS = test test2d test_resample test2d_resample test_trap test2d_trap ! ! TESTS = test test2d test_resample test2d_resample test_trap test2d_trap ! EXTRA_DIST = urand.c noinst_HEADERS = urand.c find.c find2d.c ! test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test2d_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test_resample_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test2d_resample_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test_trap_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test2d_trap_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! ! test_SOURCES = test.c ! test2d_SOURCES = test2d.c ! test_resample_SOURCES = test_resample.c ! test2d_resample_SOURCES = test2d_resample.c ! test_trap_SOURCES = test_trap.c ! test2d_trap_SOURCES = test2d_trap.c CLEANFILES = test.txt test.dat - libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c --- 5,20 ---- INCLUDES= -I$(top_builddir) ! libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c noinst_HEADERS = urand.c find.c find2d.c ! check_PROGRAMS = test ! TESTS = test ! ! EXTRA_DIST = urand.c ! ! test_SOURCES = test.c test1d.c test2d.c test1d_resample.c test2d_resample.c test1d_trap.c test2d_trap.c ! test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la CLEANFILES = test.txt test.dat diff -x.info* -rc2P gsl-1.3/histogram/Makefile.in gsl-1.4/histogram/Makefile.in *** gsl-1.3/histogram/Makefile.in Wed Dec 18 22:40:04 2002 --- gsl-1.4/histogram/Makefile.in Thu Aug 14 12:29:33 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslhistogram.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslhistogram.la *************** *** 91,236 **** INCLUDES = -I$(top_builddir) ! check_PROGRAMS = test test2d test_resample test2d_resample test_trap test2d_trap ! ! TESTS = test test2d test_resample test2d_resample test_trap test2d_trap ! EXTRA_DIST = urand.c noinst_HEADERS = urand.c find.c find2d.c ! test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test2d_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test_resample_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test2d_resample_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test_trap_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! test2d_trap_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ! ! test_SOURCES = test.c ! test2d_SOURCES = test2d.c ! test_resample_SOURCES = test_resample.c ! test2d_resample_SOURCES = test2d_resample.c ! test_trap_SOURCES = test_trap.c ! test2d_trap_SOURCES = test2d_trap.c ! CLEANFILES = test.txt test.dat ! ! libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c ! mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslhistogram_la_LDFLAGS = ! libgslhistogram_la_LIBADD = ! libgslhistogram_la_OBJECTS = add.lo get.lo init.lo params.lo reset.lo \ ! file.lo pdf.lo add2d.lo get2d.lo init2d.lo params2d.lo reset2d.lo \ ! file2d.lo pdf2d.lo calloc_range.lo calloc_range2d.lo copy.lo copy2d.lo \ ! maxval.lo maxval2d.lo oper.lo oper2d.lo stat.lo stat2d.lo ! check_PROGRAMS = test$(EXEEXT) test2d$(EXEEXT) test_resample$(EXEEXT) \ ! test2d_resample$(EXEEXT) test_trap$(EXEEXT) test2d_trap$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ! test_LDFLAGS = ! test2d_OBJECTS = test2d.$(OBJEXT) ! test2d_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ! test2d_LDFLAGS = ! test_resample_OBJECTS = test_resample.$(OBJEXT) ! test_resample_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ! test_resample_LDFLAGS = ! test2d_resample_OBJECTS = test2d_resample.$(OBJEXT) ! test2d_resample_DEPENDENCIES = libgslhistogram.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ! test2d_resample_LDFLAGS = ! test_trap_OBJECTS = test_trap.$(OBJEXT) ! test_trap_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ! test_trap_LDFLAGS = ! test2d_trap_OBJECTS = test2d_trap.$(OBJEXT) ! test2d_trap_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ! test2d_trap_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - TAR = tar - GZIP_ENV = --best - SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) $(test2d_SOURCES) $(test_resample_SOURCES) $(test2d_resample_SOURCES) $(test_trap_SOURCES) $(test2d_trap_SOURCES) - OBJECTS = $(libgslhistogram_la_OBJECTS) $(test_OBJECTS) $(test2d_OBJECTS) $(test_resample_OBJECTS) $(test2d_resample_OBJECTS) $(test_trap_OBJECTS) $(test2d_trap_OBJECTS) - - all: all-redirect .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps histogram/Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 147,250 ---- INCLUDES = -I$(top_builddir) ! libgslhistogram_la_SOURCES = add.c get.c init.c params.c reset.c file.c pdf.c gsl_histogram.h add2d.c get2d.c init2d.c params2d.c reset2d.c file2d.c pdf2d.c gsl_histogram2d.h calloc_range.c calloc_range2d.c copy.c copy2d.c maxval.c maxval2d.c oper.c oper2d.c stat.c stat2d.c noinst_HEADERS = urand.c find.c find2d.c ! check_PROGRAMS = test ! TESTS = test ! EXTRA_DIST = urand.c + test_SOURCES = test.c test1d.c test2d.c test1d_resample.c test2d_resample.c test1d_trap.c test2d_trap.c + test_LDADD = libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! CLEANFILES = test.txt test.dat ! subdir = histogram ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ! mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslhistogram_la_LDFLAGS = ! libgslhistogram_la_LIBADD = ! am_libgslhistogram_la_OBJECTS = add.lo get.lo init.lo params.lo reset.lo \ ! file.lo pdf.lo add2d.lo get2d.lo init2d.lo params2d.lo \ ! reset2d.lo file2d.lo pdf2d.lo calloc_range.lo calloc_range2d.lo \ ! copy.lo copy2d.lo maxval.lo maxval2d.lo oper.lo oper2d.lo \ ! stat.lo stat2d.lo ! libgslhistogram_la_OBJECTS = $(am_libgslhistogram_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test1d.$(OBJEXT) test2d.$(OBJEXT) \ ! test1d_resample.$(OBJEXT) test2d_resample.$(OBJEXT) \ ! test1d_trap.$(OBJEXT) test2d_trap.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslhistogram.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO ! SOURCES = $(libgslhistogram_la_SOURCES) $(test_SOURCES) ! all: all-am .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu histogram/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslhistogram.la: $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_DEPENDENCIES) + $(LINK) $(libgslhistogram_la_LDFLAGS) $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 241,397 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslhistogram.la: $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_DEPENDENCIES) ! $(LINK) $(libgslhistogram_la_LDFLAGS) $(libgslhistogram_la_OBJECTS) $(libgslhistogram_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! ! test2d$(EXEEXT): $(test2d_OBJECTS) $(test2d_DEPENDENCIES) ! @rm -f test2d$(EXEEXT) ! $(LINK) $(test2d_LDFLAGS) $(test2d_OBJECTS) $(test2d_LDADD) $(LIBS) ! ! test_resample$(EXEEXT): $(test_resample_OBJECTS) $(test_resample_DEPENDENCIES) ! @rm -f test_resample$(EXEEXT) ! $(LINK) $(test_resample_LDFLAGS) $(test_resample_OBJECTS) $(test_resample_LDADD) $(LIBS) ! ! test2d_resample$(EXEEXT): $(test2d_resample_OBJECTS) $(test2d_resample_DEPENDENCIES) ! @rm -f test2d_resample$(EXEEXT) ! $(LINK) $(test2d_resample_LDFLAGS) $(test2d_resample_OBJECTS) $(test2d_resample_LDADD) $(LIBS) ! ! test_trap$(EXEEXT): $(test_trap_OBJECTS) $(test_trap_DEPENDENCIES) ! @rm -f test_trap$(EXEEXT) ! $(LINK) $(test_trap_LDFLAGS) $(test_trap_OBJECTS) $(test_trap_LDADD) $(LIBS) ! ! test2d_trap$(EXEEXT): $(test2d_trap_OBJECTS) $(test2d_trap_DEPENDENCIES) ! @rm -f test2d_trap$(EXEEXT) ! $(LINK) $(test2d_trap_LDFLAGS) $(test2d_trap_OBJECTS) $(test2d_trap_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = histogram distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 255,459 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 401,450 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 463,529 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/histogram/add.c gsl-1.4/histogram/add.c *** gsl-1.3/histogram/add.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/add.c Fri Jul 25 15:18:10 2003 *************** *** 47,51 **** { GSL_ERROR ("index lies outside valid range of 0 .. n - 1", ! GSL_ESANITY); } --- 47,51 ---- { GSL_ERROR ("index lies outside valid range of 0 .. n - 1", ! GSL_ESANITY); } diff -x.info* -rc2P gsl-1.3/histogram/add2d.c gsl-1.4/histogram/add2d.c *** gsl-1.3/histogram/add2d.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/add2d.c Fri Jul 25 15:18:10 2003 *************** *** 35,39 **** int gsl_histogram2d_accumulate (gsl_histogram2d * h, ! double x, double y, double weight) { const size_t nx = h->nx; --- 35,39 ---- int gsl_histogram2d_accumulate (gsl_histogram2d * h, ! double x, double y, double weight) { const size_t nx = h->nx; *************** *** 52,56 **** { GSL_ERROR ("index lies outside valid range of 0 .. nx - 1", ! GSL_ESANITY); } --- 52,56 ---- { GSL_ERROR ("index lies outside valid range of 0 .. nx - 1", ! GSL_ESANITY); } *************** *** 58,62 **** { GSL_ERROR ("index lies outside valid range of 0 .. ny - 1", ! GSL_ESANITY); } --- 58,62 ---- { GSL_ERROR ("index lies outside valid range of 0 .. ny - 1", ! GSL_ESANITY); } diff -x.info* -rc2P gsl-1.3/histogram/calloc_range.c gsl-1.4/histogram/calloc_range.c *** gsl-1.3/histogram/calloc_range.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/calloc_range.c Fri Jul 25 15:18:10 2003 *************** *** 44,48 **** { GSL_ERROR_VAL ("histogram length n must be positive integer", ! GSL_EDOM, 0); } --- 44,48 ---- { GSL_ERROR_VAL ("histogram length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 52,59 **** { if (range[i] >= range[i + 1]) ! { ! GSL_ERROR_VAL ("histogram bin extremes must be " ! "in increasing order", GSL_EDOM, 0); ! } } --- 52,59 ---- { if (range[i] >= range[i + 1]) ! { ! GSL_ERROR_VAL ("histogram bin extremes must be " ! "in increasing order", GSL_EDOM, 0); ! } } *************** *** 65,69 **** { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } --- 65,69 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } *************** *** 75,79 **** free (h); GSL_ERROR_VAL ("failed to allocate space for histogram ranges", ! GSL_ENOMEM, 0); } --- 75,79 ---- free (h); GSL_ERROR_VAL ("failed to allocate space for histogram ranges", ! GSL_ENOMEM, 0); } *************** *** 86,90 **** free (h); GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } --- 86,90 ---- free (h); GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/histogram/calloc_range2d.c gsl-1.4/histogram/calloc_range2d.c *** gsl-1.3/histogram/calloc_range2d.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/calloc_range2d.c Fri Jul 25 15:18:10 2003 *************** *** 38,43 **** gsl_histogram2d * gsl_histogram2d_calloc_range (size_t nx, size_t ny, ! double *xrange, ! double *yrange) { size_t i, j; --- 38,43 ---- gsl_histogram2d * gsl_histogram2d_calloc_range (size_t nx, size_t ny, ! double *xrange, ! double *yrange) { size_t i, j; *************** *** 49,53 **** { GSL_ERROR_VAL ("histogram length nx must be positive integer", ! GSL_EDOM, 0); } --- 49,53 ---- { GSL_ERROR_VAL ("histogram length nx must be positive integer", ! GSL_EDOM, 0); } *************** *** 55,59 **** { GSL_ERROR_VAL ("histogram length ny must be positive integer", ! GSL_EDOM, 0); } --- 55,59 ---- { GSL_ERROR_VAL ("histogram length ny must be positive integer", ! GSL_EDOM, 0); } *************** *** 63,70 **** { if (xrange[i] >= xrange[i + 1]) ! { ! GSL_ERROR_VAL ("histogram xrange not in increasing order", ! GSL_EDOM, 0); ! } } --- 63,70 ---- { if (xrange[i] >= xrange[i + 1]) ! { ! GSL_ERROR_VAL ("histogram xrange not in increasing order", ! GSL_EDOM, 0); ! } } *************** *** 72,79 **** { if (yrange[j] >= yrange[j + 1]) ! { ! GSL_ERROR_VAL ("histogram yrange not in increasing order" ! ,GSL_EDOM, 0); ! } } --- 72,79 ---- { if (yrange[j] >= yrange[j + 1]) ! { ! GSL_ERROR_VAL ("histogram yrange not in increasing order" ! ,GSL_EDOM, 0); ! } } *************** *** 85,89 **** { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } --- 85,89 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } *************** *** 96,100 **** GSL_ERROR_VAL ("failed to allocate space for histogram xrange", ! GSL_ENOMEM, 0); } --- 96,100 ---- GSL_ERROR_VAL ("failed to allocate space for histogram xrange", ! GSL_ENOMEM, 0); } *************** *** 107,111 **** GSL_ERROR_VAL ("failed to allocate space for histogram yrange", ! GSL_ENOMEM, 0); } --- 107,111 ---- GSL_ERROR_VAL ("failed to allocate space for histogram yrange", ! GSL_ENOMEM, 0); } *************** *** 120,124 **** GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } --- 120,124 ---- GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } *************** *** 142,148 **** { for (j = 0; j < ny; j++) ! { ! h->bin[i * ny + j] = 0; ! } } --- 142,148 ---- { for (j = 0; j < ny; j++) ! { ! h->bin[i * ny + j] = 0; ! } } diff -x.info* -rc2P gsl-1.3/histogram/copy.c gsl-1.4/histogram/copy.c *** gsl-1.3/histogram/copy.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/copy.c Fri Jul 25 15:18:10 2003 *************** *** 46,50 **** { GSL_ERROR ("histograms have different sizes, cannot copy", ! GSL_EINVAL); } --- 46,50 ---- { GSL_ERROR ("histograms have different sizes, cannot copy", ! GSL_EINVAL); } *************** *** 80,84 **** { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } --- 80,84 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/histogram/copy2d.c gsl-1.4/histogram/copy2d.c *** gsl-1.3/histogram/copy2d.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/copy2d.c Fri Jul 25 15:18:10 2003 *************** *** 45,49 **** { GSL_ERROR ("histograms have different sizes, cannot copy", ! GSL_EINVAL); } --- 45,49 ---- { GSL_ERROR ("histograms have different sizes, cannot copy", ! GSL_EINVAL); } *************** *** 85,89 **** { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } --- 85,89 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/histogram/file.c gsl-1.4/histogram/file.c *** gsl-1.3/histogram/file.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/file.c Fri Jul 25 15:18:10 2003 *************** *** 50,54 **** int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, ! const char *range_format, const char *bin_format) { size_t i; --- 50,54 ---- int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, ! const char *range_format, const char *bin_format) { size_t i; *************** *** 60,101 **** if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } status = putc (' ', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } status = fprintf (stream, range_format, h->range[i + 1]); if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } status = putc (' ', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } status = fprintf (stream, bin_format, h->bin[i]); if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } --- 60,101 ---- if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } status = putc (' ', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } status = fprintf (stream, range_format, h->range[i + 1]); if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } status = putc (' ', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } status = fprintf (stream, bin_format, h->bin[i]); if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } *************** *** 113,123 **** { int status = fscanf (stream, ! "%lg %lg %lg", h->range + i, &upper, ! h->bin + i); if (status != 3) ! { ! GSL_ERROR ("fscanf failed", GSL_EFAILED); ! } } --- 113,123 ---- { int status = fscanf (stream, ! "%lg %lg %lg", h->range + i, &upper, ! h->bin + i); if (status != 3) ! { ! GSL_ERROR ("fscanf failed", GSL_EFAILED); ! } } diff -x.info* -rc2P gsl-1.3/histogram/file2d.c gsl-1.4/histogram/file2d.c *** gsl-1.3/histogram/file2d.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/file2d.c Fri Jul 25 15:18:10 2003 *************** *** 61,65 **** int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, ! const char *range_format, const char *bin_format) { size_t i, j; --- 61,65 ---- int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, ! const char *range_format, const char *bin_format) { size_t i, j; *************** *** 71,151 **** { for (j = 0; j < ny; j++) ! { ! status = fprintf (stream, range_format, h->xrange[i]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, range_format, h->xrange[i + 1]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, range_format, h->yrange[j]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, range_format, h->yrange[j + 1]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, bin_format, h->bin[i * ny + j]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc ('\n', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } --- 71,151 ---- { for (j = 0; j < ny; j++) ! { ! status = fprintf (stream, range_format, h->xrange[i]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, range_format, h->xrange[i + 1]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, range_format, h->yrange[j]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, range_format, h->yrange[j + 1]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc (' ', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! status = fprintf (stream, bin_format, h->bin[i * ny + j]); ! if (status < 0) ! { ! GSL_ERROR ("fprintf failed", GSL_EFAILED); ! } ! status = putc ('\n', stream); ! if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } ! } status = putc ('\n', stream); if (status == EOF) ! { ! GSL_ERROR ("putc failed", GSL_EFAILED); ! } } *************** *** 164,179 **** { for (j = 0; j < ny; j++) ! { ! int status = fscanf (stream, ! "%lg %lg %lg %lg %lg", ! h->xrange + i, &xupper, ! h->yrange + j, &yupper, ! h->bin + i * ny + j); ! ! if (status != 5) ! { ! GSL_ERROR ("fscanf failed", GSL_EFAILED); ! } ! } h->yrange[ny] = yupper; } --- 164,179 ---- { for (j = 0; j < ny; j++) ! { ! int status = fscanf (stream, ! "%lg %lg %lg %lg %lg", ! h->xrange + i, &xupper, ! h->yrange + j, &yupper, ! h->bin + i * ny + j); ! ! if (status != 5) ! { ! GSL_ERROR ("fscanf failed", GSL_EFAILED); ! } ! } h->yrange[ny] = yupper; } diff -x.info* -rc2P gsl-1.3/histogram/get.c gsl-1.4/histogram/get.c *** gsl-1.3/histogram/get.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/get.c Fri Jul 25 15:18:11 2003 *************** *** 32,36 **** { GSL_ERROR_VAL ("index lies outside valid range of 0 .. n - 1", ! GSL_EDOM, 0); } --- 32,36 ---- { GSL_ERROR_VAL ("index lies outside valid range of 0 .. n - 1", ! GSL_EDOM, 0); } *************** *** 40,44 **** int gsl_histogram_get_range (const gsl_histogram * h, size_t i, ! double *lower, double *upper) { const size_t n = h->n; --- 40,44 ---- int gsl_histogram_get_range (const gsl_histogram * h, size_t i, ! double *lower, double *upper) { const size_t n = h->n; *************** *** 57,61 **** int gsl_histogram_find (const gsl_histogram * h, ! const double x, size_t * i) { int status = find (h->n, h->range, x, i); --- 57,61 ---- int gsl_histogram_find (const gsl_histogram * h, ! const double x, size_t * i) { int status = find (h->n, h->range, x, i); diff -x.info* -rc2P gsl-1.3/histogram/get2d.c gsl-1.4/histogram/get2d.c *** gsl-1.3/histogram/get2d.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/get2d.c Fri Jul 25 15:18:11 2003 *************** *** 33,37 **** { GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1", ! GSL_EDOM, 0); } --- 33,37 ---- { GSL_ERROR_VAL ("index i lies outside valid range of 0 .. nx - 1", ! GSL_EDOM, 0); } *************** *** 39,43 **** { GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1", ! GSL_EDOM, 0); } --- 39,43 ---- { GSL_ERROR_VAL ("index j lies outside valid range of 0 .. ny - 1", ! GSL_EDOM, 0); } *************** *** 47,51 **** int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i, ! double *xlower, double *xupper) { const size_t nx = h->nx; --- 47,51 ---- int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i, ! double *xlower, double *xupper) { const size_t nx = h->nx; *************** *** 64,68 **** int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j, ! double *ylower, double *yupper) { const size_t ny = h->ny; --- 64,68 ---- int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j, ! double *ylower, double *yupper) { const size_t ny = h->ny; *************** *** 81,86 **** int gsl_histogram2d_find (const gsl_histogram2d * h, ! const double x, const double y, ! size_t * i, size_t * j) { int status = find (h->nx, h->xrange, x, i); --- 81,86 ---- int gsl_histogram2d_find (const gsl_histogram2d * h, ! const double x, const double y, ! size_t * i, size_t * j) { int status = find (h->nx, h->xrange, x, i); diff -x.info* -rc2P gsl-1.3/histogram/gsl_histogram.h gsl-1.4/histogram/gsl_histogram.h *** gsl-1.3/histogram/gsl_histogram.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/histogram/gsl_histogram.h Fri Jul 25 15:18:21 2003 *************** *** 56,65 **** int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight); int gsl_histogram_find (const gsl_histogram * h, ! const double x, size_t * i); double gsl_histogram_get (const gsl_histogram * h, size_t i); int gsl_histogram_get_range (const gsl_histogram * h, size_t i, ! double * lower, double * upper); ! double gsl_histogram_max (const gsl_histogram * h); double gsl_histogram_min (const gsl_histogram * h); --- 56,65 ---- int gsl_histogram_accumulate (gsl_histogram * h, double x, double weight); int gsl_histogram_find (const gsl_histogram * h, ! const double x, size_t * i); double gsl_histogram_get (const gsl_histogram * h, size_t i); int gsl_histogram_get_range (const gsl_histogram * h, size_t i, ! double * lower, double * upper); ! double gsl_histogram_max (const gsl_histogram * h); double gsl_histogram_min (const gsl_histogram * h); *************** *** 122,126 **** int gsl_histogram_fread (FILE * stream, gsl_histogram * h); int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, ! const char * range_format, const char * bin_format); int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h); --- 122,126 ---- int gsl_histogram_fread (FILE * stream, gsl_histogram * h); int gsl_histogram_fprintf (FILE * stream, const gsl_histogram * h, ! const char * range_format, const char * bin_format); int gsl_histogram_fscanf (FILE * stream, gsl_histogram * h); diff -x.info* -rc2P gsl-1.3/histogram/gsl_histogram2d.h gsl-1.4/histogram/gsl_histogram2d.h *** gsl-1.3/histogram/gsl_histogram2d.h Mon Jun 10 13:04:36 2002 --- gsl-1.4/histogram/gsl_histogram2d.h Fri Jul 25 15:18:21 2003 *************** *** 53,58 **** gsl_histogram2d * gsl_histogram2d_calloc (const size_t nx, const size_t ny); gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny, ! const double xmin, const double xmax, ! const double ymin, const double ymax); void gsl_histogram2d_free (gsl_histogram2d * h); --- 53,58 ---- gsl_histogram2d * gsl_histogram2d_calloc (const size_t nx, const size_t ny); gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny, ! const double xmin, const double xmax, ! const double ymin, const double ymax); void gsl_histogram2d_free (gsl_histogram2d * h); *************** *** 60,74 **** int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y); int gsl_histogram2d_accumulate (gsl_histogram2d * h, ! double x, double y, double weight); int gsl_histogram2d_find (const gsl_histogram2d * h, ! const double x, const double y, size_t * i, size_t * j); double gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j); int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i, ! double * xlower, double * xupper); int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j, ! double * ylower, double * yupper); ! double gsl_histogram2d_xmax (const gsl_histogram2d * h); double gsl_histogram2d_xmin (const gsl_histogram2d * h); --- 60,74 ---- int gsl_histogram2d_increment (gsl_histogram2d * h, double x, double y); int gsl_histogram2d_accumulate (gsl_histogram2d * h, ! double x, double y, double weight); int gsl_histogram2d_find (const gsl_histogram2d * h, ! const double x, const double y, size_t * i, size_t * j); double gsl_histogram2d_get (const gsl_histogram2d * h, const size_t i, const size_t j); int gsl_histogram2d_get_xrange (const gsl_histogram2d * h, const size_t i, ! double * xlower, double * xupper); int gsl_histogram2d_get_yrange (const gsl_histogram2d * h, const size_t j, ! double * ylower, double * yupper); ! double gsl_histogram2d_xmax (const gsl_histogram2d * h); double gsl_histogram2d_xmin (const gsl_histogram2d * h); *************** *** 83,87 **** gsl_histogram2d * gsl_histogram2d_calloc_range(size_t nx, size_t ny, ! double *xrange, double *yrange); int --- 83,87 ---- gsl_histogram2d * gsl_histogram2d_calloc_range(size_t nx, size_t ny, ! double *xrange, double *yrange); int *************** *** 133,137 **** int gsl_histogram2d_equal_bins_p(const gsl_histogram2d *h1, ! const gsl_histogram2d *h2) ; int --- 133,137 ---- int gsl_histogram2d_equal_bins_p(const gsl_histogram2d *h1, ! const gsl_histogram2d *h2) ; int *************** *** 156,161 **** int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h); int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, ! const char * range_format, ! const char * bin_format); int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h); --- 156,161 ---- int gsl_histogram2d_fread (FILE * stream, gsl_histogram2d * h); int gsl_histogram2d_fprintf (FILE * stream, const gsl_histogram2d * h, ! const char * range_format, ! const char * bin_format); int gsl_histogram2d_fscanf (FILE * stream, gsl_histogram2d * h); *************** *** 164,169 **** void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p); int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, ! double r1, double r2, ! double * x, double * y); __END_DECLS --- 164,169 ---- void gsl_histogram2d_pdf_free (gsl_histogram2d_pdf * p); int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, ! double r1, double r2, ! double * x, double * y); __END_DECLS diff -x.info* -rc2P gsl-1.3/histogram/init.c gsl-1.4/histogram/init.c *** gsl-1.3/histogram/init.c Thu Oct 18 14:22:31 2001 --- gsl-1.4/histogram/init.c Fri Jul 25 15:18:11 2003 *************** *** 31,35 **** { GSL_ERROR_VAL ("histogram length n must be positive integer", ! GSL_EDOM, 0); } --- 31,35 ---- { GSL_ERROR_VAL ("histogram length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 39,43 **** { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } --- 39,43 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram struct", ! GSL_ENOMEM, 0); } *************** *** 46,53 **** if (h->range == 0) { ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram ranges", ! GSL_ENOMEM, 0); } --- 46,53 ---- if (h->range == 0) { ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram ranges", ! GSL_ENOMEM, 0); } *************** *** 57,64 **** { free (h->range); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } --- 57,64 ---- { free (h->range); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } *************** *** 70,74 **** gsl_histogram * gsl_histogram_calloc_uniform (const size_t n, const double xmin, ! const double xmax) { gsl_histogram *h; --- 70,74 ---- gsl_histogram * gsl_histogram_calloc_uniform (const size_t n, const double xmin, ! const double xmax) { gsl_histogram *h; *************** *** 91,95 **** for (i = 0; i < n + 1; i++) { ! h->range[i] = xmin + ((double) i / (double) n) * (xmax - xmin); } } --- 91,95 ---- for (i = 0; i < n + 1; i++) { ! h->range[i] = xmin + ((double) i / (double) n) * (xmax - xmin); } } *************** *** 113,122 **** for (i = 0; i < n + 1; i++) { ! h->range[i] = i; } for (i = 0; i < n; i++) { ! h->bin[i] = 0; } } --- 113,122 ---- for (i = 0; i < n + 1; i++) { ! h->range[i] = i; } for (i = 0; i < n; i++) { ! h->bin[i] = 0; } } diff -x.info* -rc2P gsl-1.3/histogram/init2d.c gsl-1.4/histogram/init2d.c *** gsl-1.3/histogram/init2d.c Fri Jan 18 21:40:44 2002 --- gsl-1.4/histogram/init2d.c Fri Jul 25 15:18:11 2003 *************** *** 32,36 **** { GSL_ERROR_VAL ("histogram2d length nx must be positive integer", ! GSL_EDOM, 0); } --- 32,36 ---- { GSL_ERROR_VAL ("histogram2d length nx must be positive integer", ! GSL_EDOM, 0); } *************** *** 38,42 **** { GSL_ERROR_VAL ("histogram2d length ny must be positive integer", ! GSL_EDOM, 0); } --- 38,42 ---- { GSL_ERROR_VAL ("histogram2d length ny must be positive integer", ! GSL_EDOM, 0); } *************** *** 46,50 **** { GSL_ERROR_VAL ("failed to allocate space for histogram2d struct", ! GSL_ENOMEM, 0); } --- 46,50 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram2d struct", ! GSL_ENOMEM, 0); } *************** *** 53,60 **** if (h->xrange == 0) { ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d x ranges", ! GSL_ENOMEM, 0); } --- 53,60 ---- if (h->xrange == 0) { ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d x ranges", ! GSL_ENOMEM, 0); } *************** *** 64,71 **** { free (h->xrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d y ranges", ! GSL_ENOMEM, 0); } --- 64,71 ---- { free (h->xrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d y ranges", ! GSL_ENOMEM, 0); } *************** *** 76,83 **** free (h->xrange); free (h->yrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } --- 76,83 ---- free (h->xrange); free (h->yrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } *************** *** 90,95 **** gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny, ! const double xmin, const double xmax, ! const double ymin, const double ymax) { gsl_histogram2d *h; --- 90,95 ---- gsl_histogram2d * gsl_histogram2d_calloc_uniform (const size_t nx, const size_t ny, ! const double xmin, const double xmax, ! const double ymin, const double ymax) { gsl_histogram2d *h; *************** *** 117,126 **** for (i = 0; i < nx + 1; i++) { ! h->xrange[i] = xmin + ((double) i / (double) nx) * (xmax - xmin); } for (i = 0; i < ny + 1; i++) { ! h->yrange[i] = ymin + ((double) i / (double) ny) * (ymax - ymin); } } --- 117,126 ---- for (i = 0; i < nx + 1; i++) { ! h->xrange[i] = xmin + ((double) i / (double) nx) * (xmax - xmin); } for (i = 0; i < ny + 1; i++) { ! h->yrange[i] = ymin + ((double) i / (double) ny) * (ymax - ymin); } } *************** *** 137,141 **** { GSL_ERROR_VAL ("histogram2d length nx must be positive integer", ! GSL_EDOM, 0); } --- 137,141 ---- { GSL_ERROR_VAL ("histogram2d length nx must be positive integer", ! GSL_EDOM, 0); } *************** *** 143,147 **** { GSL_ERROR_VAL ("histogram2d length ny must be positive integer", ! GSL_EDOM, 0); } --- 143,147 ---- { GSL_ERROR_VAL ("histogram2d length ny must be positive integer", ! GSL_EDOM, 0); } *************** *** 151,155 **** { GSL_ERROR_VAL ("failed to allocate space for histogram2d struct", ! GSL_ENOMEM, 0); } --- 151,155 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram2d struct", ! GSL_ENOMEM, 0); } *************** *** 158,165 **** if (h->xrange == 0) { ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d x ranges", ! GSL_ENOMEM, 0); } --- 158,165 ---- if (h->xrange == 0) { ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d x ranges", ! GSL_ENOMEM, 0); } *************** *** 169,176 **** { free (h->xrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d y ranges", ! GSL_ENOMEM, 0); } --- 169,176 ---- { free (h->xrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d y ranges", ! GSL_ENOMEM, 0); } *************** *** 181,188 **** free (h->xrange); free (h->yrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } --- 181,188 ---- free (h->xrange); free (h->yrange); ! free (h); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram bins", ! GSL_ENOMEM, 0); } *************** *** 192,206 **** for (i = 0; i < nx + 1; i++) { ! h->xrange[i] = i; } for (i = 0; i < ny + 1; i++) { ! h->yrange[i] = i; } for (i = 0; i < nx * ny; i++) { ! h->bin[i] = 0; } } --- 192,206 ---- for (i = 0; i < nx + 1; i++) { ! h->xrange[i] = i; } for (i = 0; i < ny + 1; i++) { ! h->yrange[i] = i; } for (i = 0; i < nx * ny; i++) { ! h->bin[i] = 0; } } diff -x.info* -rc2P gsl-1.3/histogram/maxval.c gsl-1.4/histogram/maxval.c *** gsl-1.3/histogram/maxval.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/maxval.c Fri Jul 25 15:18:11 2003 *************** *** 45,51 **** { if (h->bin[i] > max) ! { ! max = h->bin[i]; ! } } return max; --- 45,51 ---- { if (h->bin[i] > max) ! { ! max = h->bin[i]; ! } } return max; *************** *** 61,68 **** { if (h->bin[i] > max) ! { ! max = h->bin[i]; ! imax = i; ! } } return imax; --- 61,68 ---- { if (h->bin[i] > max) ! { ! max = h->bin[i]; ! imax = i; ! } } return imax; *************** *** 77,83 **** { if (h->bin[i] < min) ! { ! min = h->bin[i]; ! } } return min; --- 77,83 ---- { if (h->bin[i] < min) ! { ! min = h->bin[i]; ! } } return min; *************** *** 93,100 **** { if (h->bin[i] < min) ! { ! min = h->bin[i]; ! imin = i; ! } } return imin; --- 93,100 ---- { if (h->bin[i] < min) ! { ! min = h->bin[i]; ! imin = i; ! } } return imin; diff -x.info* -rc2P gsl-1.3/histogram/maxval2d.c gsl-1.4/histogram/maxval2d.c *** gsl-1.3/histogram/maxval2d.c Fri Jan 18 21:40:44 2002 --- gsl-1.4/histogram/maxval2d.c Fri Jul 25 15:18:11 2003 *************** *** 49,55 **** { if (h->bin[i] > max) ! { ! max = h->bin[i]; ! } } return max; --- 49,55 ---- { if (h->bin[i] > max) ! { ! max = h->bin[i]; ! } } return max; *************** *** 71,84 **** { for (j = 0; j < ny; j++) ! { ! double x = h->bin[i * ny + j]; ! if (x > max) ! { ! max = x; ! imax = i; ! jmax = j; ! } ! } } --- 71,84 ---- { for (j = 0; j < ny; j++) ! { ! double x = h->bin[i * ny + j]; ! if (x > max) ! { ! max = x; ! imax = i; ! jmax = j; ! } ! } } *************** *** 102,108 **** { if (h->bin[i] < min) ! { ! min = h->bin[i]; ! } } --- 102,108 ---- { if (h->bin[i] < min) ! { ! min = h->bin[i]; ! } } *************** *** 123,136 **** { for (j = 0; j < ny; j++) ! { ! double x = h->bin[i * ny + j]; ! if (x < min) ! { ! min = x; ! imin = i; ! jmin = j; ! } ! } } --- 123,136 ---- { for (j = 0; j < ny; j++) ! { ! double x = h->bin[i * ny + j]; ! if (x < min) ! { ! min = x; ! imin = i; ! jmin = j; ! } ! } } diff -x.info* -rc2P gsl-1.3/histogram/oper.c gsl-1.4/histogram/oper.c *** gsl-1.3/histogram/oper.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/oper.c Fri Jul 25 15:18:11 2003 *************** *** 59,66 **** for (i = 0; i <= h1->n; i++) { ! if (h1->range[i] != h2->range[i]) ! { ! return 0; ! } } } --- 59,66 ---- for (i = 0; i <= h1->n; i++) { ! if (h1->range[i] != h2->range[i]) ! { ! return 0; ! } } } diff -x.info* -rc2P gsl-1.3/histogram/oper2d.c gsl-1.4/histogram/oper2d.c *** gsl-1.3/histogram/oper2d.c Wed Oct 3 10:56:37 2001 --- gsl-1.4/histogram/oper2d.c Fri Jul 25 15:18:11 2003 *************** *** 46,50 **** int gsl_histogram2d_equal_bins_p (const gsl_histogram2d * h1, ! const gsl_histogram2d * h2) { --- 46,50 ---- int gsl_histogram2d_equal_bins_p (const gsl_histogram2d * h1, ! const gsl_histogram2d * h2) { *************** *** 58,72 **** for (i = 0; i <= (h1->nx); i++) { ! if (h1->xrange[i] != h2->xrange[i]) ! { ! return 0; ! } } for (i = 0; i <= (h1->ny); i++) { ! if (h1->yrange[i] != h2->yrange[i]) ! { ! return 0; ! } } } --- 58,72 ---- for (i = 0; i <= (h1->nx); i++) { ! if (h1->xrange[i] != h2->xrange[i]) ! { ! return 0; ! } } for (i = 0; i <= (h1->ny); i++) { ! if (h1->yrange[i] != h2->yrange[i]) ! { ! return 0; ! } } } diff -x.info* -rc2P gsl-1.3/histogram/pdf.c gsl-1.4/histogram/pdf.c *** gsl-1.3/histogram/pdf.c Thu Oct 18 14:23:36 2001 --- gsl-1.4/histogram/pdf.c Fri Jul 25 15:18:11 2003 *************** *** 62,66 **** { GSL_ERROR_VAL ("histogram pdf length n must be positive integer", ! GSL_EDOM, 0); } --- 62,66 ---- { GSL_ERROR_VAL ("histogram pdf length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 70,74 **** { GSL_ERROR_VAL ("failed to allocate space for histogram pdf struct", ! GSL_ENOMEM, 0); } --- 70,74 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram pdf struct", ! GSL_ENOMEM, 0); } *************** *** 77,84 **** if (p->range == 0) { ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram pdf ranges", ! GSL_ENOMEM, 0); } --- 77,84 ---- if (p->range == 0) { ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram pdf ranges", ! GSL_ENOMEM, 0); } *************** *** 88,95 **** { free (p->range); ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram pdf sums", ! GSL_ENOMEM, 0); } --- 88,95 ---- { free (p->range); ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram pdf sums", ! GSL_ENOMEM, 0); } *************** *** 113,120 **** { if (h->bin[i] < 0) ! { ! GSL_ERROR ("histogram bins must be non-negative to compute" ! "a probability distribution", GSL_EDOM); ! } } --- 113,120 ---- { if (h->bin[i] < 0) ! { ! GSL_ERROR ("histogram bins must be non-negative to compute" ! "a probability distribution", GSL_EDOM); ! } } *************** *** 129,133 **** for (i = 0; i < n; i++) { ! mean += (h->bin[i] - mean) / ((double) (i + 1)); } --- 129,133 ---- for (i = 0; i < n; i++) { ! mean += (h->bin[i] - mean) / ((double) (i + 1)); } *************** *** 136,141 **** for (i = 0; i < n; i++) { ! sum += (h->bin[i] / mean) / n; ! p->sum[i + 1] = sum; } } --- 136,141 ---- for (i = 0; i < n; i++) { ! sum += (h->bin[i] / mean) / n; ! p->sum[i + 1] = sum; } } diff -x.info* -rc2P gsl-1.3/histogram/pdf2d.c gsl-1.4/histogram/pdf2d.c *** gsl-1.3/histogram/pdf2d.c Thu Oct 18 14:36:15 2001 --- gsl-1.4/histogram/pdf2d.c Fri Jul 25 15:18:11 2003 *************** *** 28,33 **** int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, ! double r1, double r2, ! double *x, double *y) { size_t k; --- 28,33 ---- int gsl_histogram2d_pdf_sample (const gsl_histogram2d_pdf * p, ! double r1, double r2, ! double *x, double *y) { size_t k; *************** *** 74,78 **** { GSL_ERROR_VAL ("histogram2d pdf length n must be positive integer", ! GSL_EDOM, 0); } --- 74,78 ---- { GSL_ERROR_VAL ("histogram2d pdf length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 82,86 **** { GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf struct", ! GSL_ENOMEM, 0); } --- 82,86 ---- { GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf struct", ! GSL_ENOMEM, 0); } *************** *** 89,96 **** if (p->xrange == 0) { ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf xranges", ! GSL_ENOMEM, 0); } --- 89,96 ---- if (p->xrange == 0) { ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf xranges", ! GSL_ENOMEM, 0); } *************** *** 100,107 **** { free (p->xrange); ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf yranges", ! GSL_ENOMEM, 0); } --- 100,107 ---- { free (p->xrange); ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf yranges", ! GSL_ENOMEM, 0); } *************** *** 112,119 **** free (p->yrange); free (p->xrange); ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf sums", ! GSL_ENOMEM, 0); } --- 112,119 ---- free (p->yrange); free (p->xrange); ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for histogram2d pdf sums", ! GSL_ENOMEM, 0); } *************** *** 140,147 **** { if (h->bin[i] < 0) ! { ! GSL_ERROR ("histogram bins must be non-negative to compute" ! "a probability distribution", GSL_EDOM); ! } } --- 140,147 ---- { if (h->bin[i] < 0) ! { ! GSL_ERROR ("histogram bins must be non-negative to compute" ! "a probability distribution", GSL_EDOM); ! } } *************** *** 161,165 **** for (i = 0; i < n; i++) { ! mean += (h->bin[i] - mean) / ((double) (i + 1)); } --- 161,165 ---- for (i = 0; i < n; i++) { ! mean += (h->bin[i] - mean) / ((double) (i + 1)); } *************** *** 168,173 **** for (i = 0; i < n; i++) { ! sum += (h->bin[i] / mean) / n; ! p->sum[i + 1] = sum; } } --- 168,173 ---- for (i = 0; i < n; i++) { ! sum += (h->bin[i] / mean) / n; ! p->sum[i + 1] = sum; } } diff -x.info* -rc2P gsl-1.3/histogram/stat2d.c gsl-1.4/histogram/stat2d.c *** gsl-1.3/histogram/stat2d.c Wed Mar 6 22:04:23 2002 --- gsl-1.4/histogram/stat2d.c Fri Jul 25 15:18:11 2003 *************** *** 80,93 **** for (j = 0; j < ny; j++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wi += wij; ! } if (wi > 0) ! { ! W += wi; ! wmean += (xi - wmean) * (wi / W); ! } } --- 80,93 ---- for (j = 0; j < ny; j++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wi += wij; ! } if (wi > 0) ! { ! W += wi; ! wmean += (xi - wmean) * (wi / W); ! } } *************** *** 120,134 **** for (i = 0; i < nx; i++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wj += wij; ! } if (wj > 0) ! { ! W += wj; ! wmean += (yj - wmean) * (wj / W); ! } } --- 120,134 ---- for (i = 0; i < nx; i++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wj += wij; ! } if (wj > 0) ! { ! W += wj; ! wmean += (yj - wmean) * (wj / W); ! } } *************** *** 162,176 **** for (j = 0; j < ny; j++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wi += wij; ! } if (wi > 0) ! { ! W += wi; ! wvariance += ((xi * xi) - wvariance) * (wi / W); ! } } --- 162,176 ---- for (j = 0; j < ny; j++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wi += wij; ! } if (wi > 0) ! { ! W += wi; ! wvariance += ((xi * xi) - wvariance) * (wi / W); ! } } *************** *** 207,220 **** for (i = 0; i < nx; i++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wj += wij; ! } if (wj > 0) ! { ! W += wj; ! wvariance += ((yj * yj) - wvariance) * (wj / W); ! } } --- 207,220 ---- for (i = 0; i < nx; i++) ! { ! double wij = h->bin[i * ny + j]; ! if (wij > 0) ! wj += wij; ! } if (wj > 0) ! { ! W += wj; ! wvariance += ((yj * yj) - wvariance) * (wj / W); ! } } *************** *** 249,263 **** { for (i = 0; i < nx; i++) ! { ! double xi = (h->xrange[i + 1] + h->xrange[i]) / 2.0 - xmean; ! double yj = (h->yrange[j + 1] + h->yrange[j]) / 2.0 - ymean; ! double wij = h->bin[i * ny + j]; ! ! if (wij > 0) ! { ! W += wij; ! wcovariance += ((xi * yj) - wcovariance) * (wij / W); ! } ! } } --- 249,263 ---- { for (i = 0; i < nx; i++) ! { ! double xi = (h->xrange[i + 1] + h->xrange[i]) / 2.0 - xmean; ! double yj = (h->yrange[j + 1] + h->yrange[j]) / 2.0 - ymean; ! double wij = h->bin[i * ny + j]; ! ! if (wij > 0) ! { ! W += wij; ! wcovariance += ((xi * yj) - wcovariance) * (wij / W); ! } ! } } diff -x.info* -rc2P gsl-1.3/histogram/test.c gsl-1.4/histogram/test.c *** gsl-1.3/histogram/test.c Sun Dec 15 19:10:43 2002 --- gsl-1.4/histogram/test.c Fri Jul 25 15:18:11 2003 *************** *** 25,485 **** #include ! #define N 397 ! #define NR 10 int main (void) { ! double xr[NR + 1] = ! {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; ! ! gsl_histogram *h, *h1, *hr, *g; ! size_t i, j; ! ! gsl_ieee_env_setup (); ! ! h = gsl_histogram_calloc (N); ! h1 = gsl_histogram_calloc (N); ! g = gsl_histogram_calloc (N); ! ! gsl_test (h->range == 0, "gsl_histogram_alloc returns valid range pointer"); ! gsl_test (h->bin == 0, "gsl_histogram_alloc returns valid bin pointer"); ! gsl_test (h->n != N, "gsl_histogram_alloc returns valid size"); ! ! ! hr = gsl_histogram_calloc_range (NR, xr); ! ! gsl_test (hr->range == 0, "gsl_histogram_calloc_range returns valid range pointer"); ! gsl_test (hr->bin == 0, "gsl_histogram_calloc_range returns valid bin pointer"); ! gsl_test (hr->n != NR, "gsl_histogram_calloc_range returns valid size"); ! ! { ! int status = 0; ! for (i = 0; i <= NR; i++) ! { ! if (hr->range[i] != xr[i]) ! { ! status = 1; ! } ! }; ! ! gsl_test (status, "gsl_histogram_calloc_range creates range"); ! } ! ! for (i = 0; i <= NR; i++) ! { ! hr->range[i] = 0.0; ! } ! ! { ! int status = gsl_histogram_set_ranges (hr, xr, NR+1); ! ! for (i = 0; i <= NR; i++) ! { ! if (hr->range[i] != xr[i]) ! { ! status = 1; ! } ! }; ! ! gsl_test (status, "gsl_histogram_set_range sets range"); ! } ! ! ! for (i = 0; i < N; i++) ! { ! gsl_histogram_accumulate (h, (double) i, (double) i); ! }; ! ! { ! int status = 0; ! ! for (i = 0; i < N; i++) ! { ! if (h->bin[i] != (double) i) ! { ! status = 1; ! } ! }; ! ! gsl_test (status, "gsl_histogram_accumulate writes into array"); ! } ! ! ! { ! int status = 0; ! ! for (i = 0; i < N; i++) ! { ! if (gsl_histogram_get (h, i) != i) ! status = 1; ! }; ! gsl_test (status, "gsl_histogram_get reads from array"); ! } ! ! for (i = 0; i <= N; i++) ! { ! h1->range[i] = 100.0 + i; ! } ! ! gsl_histogram_memcpy (h1, h); ! ! { ! int status = 0; ! for (i = 0; i <= N; i++) ! { ! if (h1->range[i] != h->range[i]) ! status = 1; ! }; ! gsl_test (status, "gsl_histogram_memcpy copies bin ranges"); ! } ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i)) ! status = 1; ! }; ! gsl_test (status, "gsl_histogram_memcpy copies bin values"); ! } ! ! gsl_histogram_free (h1); ! ! h1 = gsl_histogram_clone (h); ! ! { ! int status = 0; ! for (i = 0; i <= N; i++) ! { ! if (h1->range[i] != h->range[i]) ! status = 1; ! }; ! gsl_test (status, "gsl_histogram_clone copies bin ranges"); ! } ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i)) ! status = 1; ! }; ! gsl_test (status, "gsl_histogram_clone copies bin values"); ! } ! ! gsl_histogram_reset (h); ! ! { ! int status = 0; ! ! for (i = 0; i < N; i++) ! { ! if (h->bin[i] != 0) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_reset zeros array"); ! } ! ! ! { ! int status = 0; ! ! for (i = 0; i < N; i++) ! { ! gsl_histogram_increment (h, (double) i); ! ! for (j = 0; j <= i; j++) ! { ! if (h->bin[j] != 1) ! { ! status = 1; ! } ! } ! ! for (j = i + 1; j < N; j++) ! { ! if (h->bin[j] != 0) ! { ! status = 1; ! } ! } ! } ! ! gsl_test (status, "gsl_histogram_increment increases bin value"); ! } ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! double x0 = 0, x1 = 0; ! ! gsl_histogram_get_range (h, i, &x0, &x1); ! ! if (x0 != i || x1 != i + 1) ! { ! status = 1; ! } ! } ! gsl_test (status, "gsl_histogram_getbinrange returns bin range"); ! } ! ! { ! int status = 0; ! if (gsl_histogram_max (h) != N) ! status = 1; ! gsl_test (status, "gsl_histogram_max returns maximum"); ! } ! ! { ! int status = 0; ! if (gsl_histogram_min (h) != 0) ! status = 1; ! gsl_test (status, "gsl_histogram_min returns minimum"); ! } ! ! { ! int status = 0; ! if (gsl_histogram_bins (h) != N) ! status = 1; ! gsl_test (status, "gsl_histogram_bins returns number of bins"); ! } ! ! h->bin[2] = 123456.0; ! h->bin[4] = -654321; ! ! { ! double max = gsl_histogram_max_val (h); ! gsl_test (max != 123456.0, "gsl_histogram_max_val finds maximum value"); ! } ! ! { ! double min = gsl_histogram_min_val (h); ! gsl_test (min != -654321.0, "gsl_histogram_min_val finds minimum value"); ! } ! ! { ! size_t imax = gsl_histogram_max_bin (h); ! gsl_test (imax != 2, "gsl_histogram_max_bin finds maximum value bin"); ! } ! ! { ! size_t imin = gsl_histogram_min_bin (h); ! gsl_test (imin != 4, "gsl_histogram_min_bin find minimum value bin"); ! } ! ! for (i = 0; i < N; i++) ! { ! h->bin[i] = i + 27; ! g->bin[i] = (i + 27) * (i + 1); ! } ! ! { ! double sum=gsl_histogram_sum (h); ! gsl_test(sum != N*27+((N-1)*N)/2, "gsl_histogram_sum sums all bin values"); ! } ! ! gsl_histogram_memcpy (h1, g); ! gsl_histogram_add (h1, h); ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (h1->bin[i] != g->bin[i] + h->bin[i]) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_add histogram addition"); ! } ! ! gsl_histogram_memcpy (h1, g); ! gsl_histogram_sub (h1, h); ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (h1->bin[i] != g->bin[i] - h->bin[i]) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_sub histogram subtraction"); ! } ! ! ! gsl_histogram_memcpy (h1, g); ! gsl_histogram_mul (h1, h); ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (h1->bin[i] != g->bin[i] * h->bin[i]) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_mul histogram multiplication"); ! } ! ! ! gsl_histogram_memcpy (h1, g); ! gsl_histogram_div (h1, h); ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (h1->bin[i] != g->bin[i] / h->bin[i]) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_div histogram division"); ! } ! ! gsl_histogram_memcpy (h1, g); ! gsl_histogram_scale (h1, 0.5); ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (h1->bin[i] != 0.5 * g->bin[i]) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_scale histogram scaling"); ! } ! ! gsl_histogram_memcpy (h1, g); ! gsl_histogram_shift (h1, 0.25); ! ! { ! int status = 0; ! for (i = 0; i < N; i++) ! { ! if (h1->bin[i] != 0.25 + g->bin[i]) ! status = 1; ! } ! gsl_test (status, "gsl_histogram_shift histogram shift"); ! } ! ! ! gsl_histogram_free (h); /* free whatever is in h */ ! ! h = gsl_histogram_calloc_uniform (N, 0.0, 1.0); ! ! gsl_test (h->range == 0, ! "gsl_histogram_calloc_uniform returns valid range pointer"); ! gsl_test (h->bin == 0, ! "gsl_histogram_calloc_uniform returns valid bin pointer"); ! gsl_test (h->n != N, ! "gsl_histogram_calloc_uniform returns valid size"); ! ! gsl_histogram_accumulate (h, 0.0, 1.0); ! gsl_histogram_accumulate (h, 0.1, 2.0); ! gsl_histogram_accumulate (h, 0.2, 3.0); ! gsl_histogram_accumulate (h, 0.3, 4.0); ! ! { ! size_t i1, i2, i3, i4; ! double expected; ! int status = gsl_histogram_find (h, 0.0, &i1); ! status = gsl_histogram_find (h, 0.1, &i2); ! status = gsl_histogram_find (h, 0.2, &i3); ! status = gsl_histogram_find (h, 0.3, &i4); ! ! for (i = 0; i < N; i++) ! { ! if (i == i1) ! { ! expected = 1.0; ! } ! else if (i == i2) ! { ! expected = 2.0; ! } ! else if (i == i3) ! { ! expected = 3.0; ! } ! else if (i == i4) ! { ! expected = 4.0; ! } ! else ! { ! expected = 0.0; ! } ! ! if (h->bin[i] != expected) ! { ! status = 1; ! } ! ! } ! gsl_test (status, "gsl_histogram_find returns index"); ! } ! ! ! { ! FILE *f = fopen ("test.txt", "w"); ! gsl_histogram_fprintf (f, h, "%.19e", "%.19e"); ! fclose (f); ! } ! ! { ! FILE *f = fopen ("test.txt", "r"); ! gsl_histogram *hh = gsl_histogram_calloc (N); ! int status = 0; ! ! gsl_histogram_fscanf (f, hh); ! ! for (i = 0; i < N; i++) ! { ! if (h->range[i] != hh->range[i]) ! status = 1; ! if (h->bin[i] != hh->bin[i]) ! status = 1; ! } ! if (h->range[N] != hh->range[N]) ! status = 1; ! ! gsl_test (status, "gsl_histogram_fprintf and fscanf"); ! ! gsl_histogram_free (hh); ! fclose (f); ! } ! ! { ! FILE *f = fopen ("test.dat", "wb"); ! gsl_histogram_fwrite (f, h); ! fclose (f); ! } ! ! { ! FILE *f = fopen ("test.dat", "rb"); ! gsl_histogram *hh = gsl_histogram_calloc (N); ! int status = 0; ! ! gsl_histogram_fread (f, hh); ! ! for (i = 0; i < N; i++) ! { ! if (h->range[i] != hh->range[i]) ! status = 1; ! if (h->bin[i] != hh->bin[i]) ! status = 1; ! } ! if (h->range[N] != hh->range[N]) ! status = 1; ! ! gsl_test (status, "gsl_histogram_fwrite and fread"); ! ! gsl_histogram_free (hh); ! fclose (f); ! } ! ! gsl_histogram_free (h); ! gsl_histogram_free (g); ! gsl_histogram_free (h1); ! gsl_histogram_free (hr); ! exit (gsl_test_summary ()); } --- 25,45 ---- #include ! void test1d (void); ! void test2d (void); ! void test1d_resample (void); ! void test2d_resample (void); ! void test1d_trap (void); ! void test2d_trap (void); int main (void) { ! test1d(); ! test2d(); ! test1d_resample(); ! test2d_resample(); ! test1d_trap(); ! test2d_trap(); ! exit (gsl_test_summary ()); } diff -x.info* -rc2P gsl-1.3/histogram/test1d.c gsl-1.4/histogram/test1d.c *** gsl-1.3/histogram/test1d.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/histogram/test1d.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,483 ---- + /* histogram/test.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + #include + #include + + #define N 397 + #define NR 10 + + void + test1d (void) + { + double xr[NR + 1] = + {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0}; + + gsl_histogram *h, *h1, *hr, *g; + size_t i, j; + + gsl_ieee_env_setup (); + + h = gsl_histogram_calloc (N); + h1 = gsl_histogram_calloc (N); + g = gsl_histogram_calloc (N); + + gsl_test (h->range == 0, "gsl_histogram_alloc returns valid range pointer"); + gsl_test (h->bin == 0, "gsl_histogram_alloc returns valid bin pointer"); + gsl_test (h->n != N, "gsl_histogram_alloc returns valid size"); + + + hr = gsl_histogram_calloc_range (NR, xr); + + gsl_test (hr->range == 0, "gsl_histogram_calloc_range returns valid range pointer"); + gsl_test (hr->bin == 0, "gsl_histogram_calloc_range returns valid bin pointer"); + gsl_test (hr->n != NR, "gsl_histogram_calloc_range returns valid size"); + + { + int status = 0; + for (i = 0; i <= NR; i++) + { + if (hr->range[i] != xr[i]) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram_calloc_range creates range"); + } + + for (i = 0; i <= NR; i++) + { + hr->range[i] = 0.0; + } + + { + int status = gsl_histogram_set_ranges (hr, xr, NR+1); + + for (i = 0; i <= NR; i++) + { + if (hr->range[i] != xr[i]) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram_set_range sets range"); + } + + + for (i = 0; i < N; i++) + { + gsl_histogram_accumulate (h, (double) i, (double) i); + }; + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (h->bin[i] != (double) i) + { + status = 1; + } + }; + + gsl_test (status, "gsl_histogram_accumulate writes into array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (gsl_histogram_get (h, i) != i) + status = 1; + }; + gsl_test (status, "gsl_histogram_get reads from array"); + } + + for (i = 0; i <= N; i++) + { + h1->range[i] = 100.0 + i; + } + + gsl_histogram_memcpy (h1, h); + + { + int status = 0; + for (i = 0; i <= N; i++) + { + if (h1->range[i] != h->range[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram_memcpy copies bin ranges"); + } + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i)) + status = 1; + }; + gsl_test (status, "gsl_histogram_memcpy copies bin values"); + } + + gsl_histogram_free (h1); + + h1 = gsl_histogram_clone (h); + + { + int status = 0; + for (i = 0; i <= N; i++) + { + if (h1->range[i] != h->range[i]) + status = 1; + }; + gsl_test (status, "gsl_histogram_clone copies bin ranges"); + } + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (gsl_histogram_get (h1, i) != gsl_histogram_get (h, i)) + status = 1; + }; + gsl_test (status, "gsl_histogram_clone copies bin values"); + } + + gsl_histogram_reset (h); + + { + int status = 0; + + for (i = 0; i < N; i++) + { + if (h->bin[i] != 0) + status = 1; + } + gsl_test (status, "gsl_histogram_reset zeros array"); + } + + + { + int status = 0; + + for (i = 0; i < N; i++) + { + gsl_histogram_increment (h, (double) i); + + for (j = 0; j <= i; j++) + { + if (h->bin[j] != 1) + { + status = 1; + } + } + + for (j = i + 1; j < N; j++) + { + if (h->bin[j] != 0) + { + status = 1; + } + } + } + + gsl_test (status, "gsl_histogram_increment increases bin value"); + } + + { + int status = 0; + for (i = 0; i < N; i++) + { + double x0 = 0, x1 = 0; + + gsl_histogram_get_range (h, i, &x0, &x1); + + if (x0 != i || x1 != i + 1) + { + status = 1; + } + } + gsl_test (status, "gsl_histogram_getbinrange returns bin range"); + } + + { + int status = 0; + if (gsl_histogram_max (h) != N) + status = 1; + gsl_test (status, "gsl_histogram_max returns maximum"); + } + + { + int status = 0; + if (gsl_histogram_min (h) != 0) + status = 1; + gsl_test (status, "gsl_histogram_min returns minimum"); + } + + { + int status = 0; + if (gsl_histogram_bins (h) != N) + status = 1; + gsl_test (status, "gsl_histogram_bins returns number of bins"); + } + + h->bin[2] = 123456.0; + h->bin[4] = -654321; + + { + double max = gsl_histogram_max_val (h); + gsl_test (max != 123456.0, "gsl_histogram_max_val finds maximum value"); + } + + { + double min = gsl_histogram_min_val (h); + gsl_test (min != -654321.0, "gsl_histogram_min_val finds minimum value"); + } + + { + size_t imax = gsl_histogram_max_bin (h); + gsl_test (imax != 2, "gsl_histogram_max_bin finds maximum value bin"); + } + + { + size_t imin = gsl_histogram_min_bin (h); + gsl_test (imin != 4, "gsl_histogram_min_bin find minimum value bin"); + } + + for (i = 0; i < N; i++) + { + h->bin[i] = i + 27; + g->bin[i] = (i + 27) * (i + 1); + } + + { + double sum=gsl_histogram_sum (h); + gsl_test(sum != N*27+((N-1)*N)/2, "gsl_histogram_sum sums all bin values"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_add (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] + h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_add histogram addition"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_sub (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] - h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_sub histogram subtraction"); + } + + + gsl_histogram_memcpy (h1, g); + gsl_histogram_mul (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] * h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_mul histogram multiplication"); + } + + + gsl_histogram_memcpy (h1, g); + gsl_histogram_div (h1, h); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != g->bin[i] / h->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_div histogram division"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_scale (h1, 0.5); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != 0.5 * g->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_scale histogram scaling"); + } + + gsl_histogram_memcpy (h1, g); + gsl_histogram_shift (h1, 0.25); + + { + int status = 0; + for (i = 0; i < N; i++) + { + if (h1->bin[i] != 0.25 + g->bin[i]) + status = 1; + } + gsl_test (status, "gsl_histogram_shift histogram shift"); + } + + + gsl_histogram_free (h); /* free whatever is in h */ + + h = gsl_histogram_calloc_uniform (N, 0.0, 1.0); + + gsl_test (h->range == 0, + "gsl_histogram_calloc_uniform returns valid range pointer"); + gsl_test (h->bin == 0, + "gsl_histogram_calloc_uniform returns valid bin pointer"); + gsl_test (h->n != N, + "gsl_histogram_calloc_uniform returns valid size"); + + gsl_histogram_accumulate (h, 0.0, 1.0); + gsl_histogram_accumulate (h, 0.1, 2.0); + gsl_histogram_accumulate (h, 0.2, 3.0); + gsl_histogram_accumulate (h, 0.3, 4.0); + + { + size_t i1, i2, i3, i4; + double expected; + int status = gsl_histogram_find (h, 0.0, &i1); + status = gsl_histogram_find (h, 0.1, &i2); + status = gsl_histogram_find (h, 0.2, &i3); + status = gsl_histogram_find (h, 0.3, &i4); + + for (i = 0; i < N; i++) + { + if (i == i1) + { + expected = 1.0; + } + else if (i == i2) + { + expected = 2.0; + } + else if (i == i3) + { + expected = 3.0; + } + else if (i == i4) + { + expected = 4.0; + } + else + { + expected = 0.0; + } + + if (h->bin[i] != expected) + { + status = 1; + } + + } + gsl_test (status, "gsl_histogram_find returns index"); + } + + + { + FILE *f = fopen ("test.txt", "w"); + gsl_histogram_fprintf (f, h, "%.19e", "%.19e"); + fclose (f); + } + + { + FILE *f = fopen ("test.txt", "r"); + gsl_histogram *hh = gsl_histogram_calloc (N); + int status = 0; + + gsl_histogram_fscanf (f, hh); + + for (i = 0; i < N; i++) + { + if (h->range[i] != hh->range[i]) + status = 1; + if (h->bin[i] != hh->bin[i]) + status = 1; + } + if (h->range[N] != hh->range[N]) + status = 1; + + gsl_test (status, "gsl_histogram_fprintf and fscanf"); + + gsl_histogram_free (hh); + fclose (f); + } + + { + FILE *f = fopen ("test.dat", "wb"); + gsl_histogram_fwrite (f, h); + fclose (f); + } + + { + FILE *f = fopen ("test.dat", "rb"); + gsl_histogram *hh = gsl_histogram_calloc (N); + int status = 0; + + gsl_histogram_fread (f, hh); + + for (i = 0; i < N; i++) + { + if (h->range[i] != hh->range[i]) + status = 1; + if (h->bin[i] != hh->bin[i]) + status = 1; + } + if (h->range[N] != hh->range[N]) + status = 1; + + gsl_test (status, "gsl_histogram_fwrite and fread"); + + gsl_histogram_free (hh); + fclose (f); + } + + gsl_histogram_free (h); + gsl_histogram_free (g); + gsl_histogram_free (h1); + gsl_histogram_free (hr); + } diff -x.info* -rc2P gsl-1.3/histogram/test1d_resample.c gsl-1.4/histogram/test1d_resample.c *** gsl-1.3/histogram/test1d_resample.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/histogram/test1d_resample.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,99 ---- + /* histogram/test1d_resample.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + #include + #include + + #include "urand.c" + + void + test1d_resample (void) + { + size_t i; + int status = 0; + + gsl_histogram *h; + + gsl_ieee_env_setup (); + + h = gsl_histogram_calloc_uniform (10, 0.0, 1.0); + + gsl_histogram_increment (h, 0.1); + gsl_histogram_increment (h, 0.2); + gsl_histogram_increment (h, 0.2); + gsl_histogram_increment (h, 0.3); + + { + gsl_histogram_pdf *p = gsl_histogram_pdf_alloc (10); + + gsl_histogram *hh = gsl_histogram_calloc_uniform (100, 0.0, 1.0); + + gsl_histogram_pdf_init (p, h); + + for (i = 0; i < 100000; i++) + { + double u = urand(); + double x = gsl_histogram_pdf_sample (p, u); + gsl_histogram_increment (hh, x); + } + + for (i = 0; i < 100; i++) + { + double y = gsl_histogram_get (hh, i) / 2500; + double x, xmax; + size_t k; + double ya; + + gsl_histogram_get_range (hh, i, &x, &xmax); + + gsl_histogram_find (h, x, &k); + ya = gsl_histogram_get (h, k); + + if (ya == 0) + { + if (y != 0) + { + printf ("%d: %g vs %g\n", (int) i, y, ya); + status = 1; + } + } + else + { + double err = 1 / sqrt (gsl_histogram_get (hh, i)); + double sigma = fabs ((y - ya) / (ya * err)); + if (sigma > 3) + { + status = 1; + printf ("%g vs %g err=%g sigma=%g\n", y, ya, err, sigma); + } + } + } + + gsl_histogram_pdf_free (p) ; + gsl_histogram_free (hh); + + gsl_test (status, "gsl_histogram_pdf_sample within statistical errors"); + } + + gsl_histogram_free (h); + } diff -x.info* -rc2P gsl-1.3/histogram/test1d_trap.c gsl-1.4/histogram/test1d_trap.c *** gsl-1.3/histogram/test1d_trap.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/histogram/test1d_trap.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,130 ---- + /* histogram/test_trap.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + #include + #include + #include + + #define N 397 + + static void my_error_handler (const char *reason, const char *file, + int line, int err); + static int status = 0; + + void + test1d_trap (void) + { + gsl_histogram *h; + double result, lower, upper; + size_t i; + + gsl_set_error_handler (&my_error_handler); + + gsl_ieee_env_setup (); + + status = 0; + h = gsl_histogram_calloc (0); + gsl_test (!status, "gsl_histogram_calloc traps zero-length histogram"); + gsl_test (h != 0, + "gsl_histogram_calloc returns NULL for zero-length histogram"); + + status = 0; + h = gsl_histogram_calloc_uniform (0, 0.0, 1.0); + gsl_test (!status, + "gsl_histogram_calloc_uniform traps zero-length histogram"); + gsl_test (h != 0, + "gsl_histogram_calloc_uniform returns NULL for zero-length histogram"); + + status = 0; + h = gsl_histogram_calloc_uniform (10, 1.0, 1.0); + gsl_test (!status, + "gsl_histogram_calloc_uniform traps equal endpoints"); + gsl_test (h != 0, + "gsl_histogram_calloc_uniform returns NULL for equal endpoints"); + + status = 0; + h = gsl_histogram_calloc_uniform (10, 2.0, 1.0); + gsl_test (!status, + "gsl_histogram_calloc_uniform traps invalid range"); + gsl_test (h != 0, + "gsl_histogram_calloc_uniform returns NULL for invalid range"); + + h = gsl_histogram_calloc_uniform (N, 0.0, 1.0); + + status = gsl_histogram_accumulate (h, 1.0, 10.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_accumulate traps x at xmax"); + + status = gsl_histogram_accumulate (h, 2.0, 100.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_accumulate traps x above xmax"); + + status = gsl_histogram_accumulate (h, -1.0, 1000.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_accumulate traps x below xmin"); + + status = gsl_histogram_increment (h, 1.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_increment traps x at xmax"); + + status = gsl_histogram_increment (h, 2.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_increment traps x above xmax"); + + status = gsl_histogram_increment (h, -1.0); + gsl_test (status != GSL_EDOM, "gsl_histogram_increment traps x below xmin"); + + + result = gsl_histogram_get (h, N); + gsl_test (result != 0, "gsl_histogram_get traps index at n"); + + result = gsl_histogram_get (h, N + 1); + gsl_test (result != 0, "gsl_histogram_get traps index above n"); + + status = gsl_histogram_get_range (h, N, &lower, &upper); + gsl_test (status != GSL_EDOM, + "gsl_histogram_get_range traps index at n"); + + status = gsl_histogram_get_range (h, N + 1, &lower, &upper); + gsl_test (status != GSL_EDOM, + "gsl_histogram_get_range traps index above n"); + + + status = 0; + gsl_histogram_find (h, -0.01, &i); + gsl_test (status != GSL_EDOM, "gsl_histogram_find traps x below xmin"); + + status = 0; + gsl_histogram_find (h, 1.0, &i); + gsl_test (status != GSL_EDOM, "gsl_histogram_find traps x at xmax"); + + status = 0; + gsl_histogram_find (h, 1.1, &i); + gsl_test (status != GSL_EDOM, "gsl_histogram_find traps x above xmax"); + + gsl_histogram_free (h); + } + + + static void + my_error_handler (const char *reason, const char *file, int line, int err) + { + if (0) + printf ("(caught [%s:%d: %s (%d)])\n", file, line, reason, err); + status = 1; + } diff -x.info* -rc2P gsl-1.3/histogram/test2d.c gsl-1.4/histogram/test2d.c *** gsl-1.3/histogram/test2d.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/histogram/test2d.c Fri Jul 25 15:18:11 2003 *************** *** 35,40 **** #define NR 5 ! int ! main (void) { double xr[MR + 1] = --- 35,40 ---- #define NR 5 ! void ! test2d (void) { double xr[MR + 1] = *************** *** 53,59 **** gsl_test (h->xrange == 0, ! "gsl_histogram2d_calloc returns valid xrange pointer"); gsl_test (h->yrange == 0, ! "gsl_histogram2d_calloc returns valid yrange pointer"); gsl_test (h->bin == 0, "gsl_histogram2d_calloc returns valid bin pointer"); --- 53,59 ---- gsl_test (h->xrange == 0, ! "gsl_histogram2d_calloc returns valid xrange pointer"); gsl_test (h->yrange == 0, ! "gsl_histogram2d_calloc returns valid yrange pointer"); gsl_test (h->bin == 0, "gsl_histogram2d_calloc returns valid bin pointer"); *************** *** 64,72 **** gsl_test (hr->xrange == 0, ! "gsl_histogram2d_calloc_range returns valid xrange pointer"); gsl_test (hr->yrange == 0, ! "gsl_histogram2d_calloc_range returns valid yrange pointer"); gsl_test (hr->bin == 0, ! "gsl_histogram2d_calloc_range returns valid bin pointer"); gsl_test (hr->nx != MR, "gsl_histogram2d_calloc_range returns valid nx"); --- 64,72 ---- gsl_test (hr->xrange == 0, ! "gsl_histogram2d_calloc_range returns valid xrange pointer"); gsl_test (hr->yrange == 0, ! "gsl_histogram2d_calloc_range returns valid yrange pointer"); gsl_test (hr->bin == 0, ! "gsl_histogram2d_calloc_range returns valid bin pointer"); gsl_test (hr->nx != MR, "gsl_histogram2d_calloc_range returns valid nx"); *************** *** 77,88 **** for (i = 0; i <= MR; i++) { ! if (hr->xrange[i] != xr[i]) ! { ! status = 1; ! } }; gsl_test (status, ! "gsl_histogram2d_calloc_range creates xrange"); } --- 77,88 ---- for (i = 0; i <= MR; i++) { ! if (hr->xrange[i] != xr[i]) ! { ! status = 1; ! } }; gsl_test (status, ! "gsl_histogram2d_calloc_range creates xrange"); } *************** *** 91,102 **** for (i = 0; i <= NR; i++) { ! if (hr->yrange[i] != yr[i]) ! { ! status = 1; ! } }; gsl_test (status, ! "gsl_histogram2d_calloc_range creates yrange"); } --- 91,102 ---- for (i = 0; i <= NR; i++) { ! if (hr->yrange[i] != yr[i]) ! { ! status = 1; ! } }; gsl_test (status, ! "gsl_histogram2d_calloc_range creates yrange"); } *************** *** 116,123 **** for (i = 0; i <= MR; i++) { ! if (hr->xrange[i] != xr[i]) ! { ! status = 1; ! } }; --- 116,123 ---- for (i = 0; i <= MR; i++) { ! if (hr->xrange[i] != xr[i]) ! { ! status = 1; ! } }; *************** *** 129,136 **** for (i = 0; i <= NR; i++) { ! if (hr->yrange[i] != yr[i]) ! { ! status = 1; ! } }; --- 129,136 ---- for (i = 0; i <= NR; i++) { ! if (hr->yrange[i] != yr[i]) ! { ! status = 1; ! } }; *************** *** 143,150 **** { for (j = 0; j < N; j++) ! { ! k++; ! gsl_histogram2d_accumulate (h, (double) i, (double) j, (double) k); ! }; } --- 143,150 ---- { for (j = 0; j < N; j++) ! { ! k++; ! gsl_histogram2d_accumulate (h, (double) i, (double) j, (double) k); ! }; } *************** *** 154,168 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (h->bin[i * N + j] != (double) k) ! { ! status = 1; ! } ! } } gsl_test (status, ! "gsl_histogram2d_accumulate writes into array"); } --- 154,168 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (h->bin[i * N + j] != (double) k) ! { ! status = 1; ! } ! } } gsl_test (status, ! "gsl_histogram2d_accumulate writes into array"); } *************** *** 172,181 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (gsl_histogram2d_get (h, i, j) != (double) k) ! status = 1; ! }; } gsl_test (status, "gsl_histogram2d_get reads from array"); --- 172,181 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (gsl_histogram2d_get (h, i, j) != (double) k) ! status = 1; ! }; } gsl_test (status, "gsl_histogram2d_get reads from array"); *************** *** 198,203 **** for (i = 0; i <= M; i++) { ! if (h1->xrange[i] != h->xrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_memcpy copies bin xranges"); --- 198,203 ---- for (i = 0; i <= M; i++) { ! if (h1->xrange[i] != h->xrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_memcpy copies bin xranges"); *************** *** 208,213 **** for (i = 0; i <= N; i++) { ! if (h1->yrange[i] != h->yrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_memcpy copies bin yranges"); --- 208,213 ---- for (i = 0; i <= N; i++) { ! if (h1->yrange[i] != h->yrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_memcpy copies bin yranges"); *************** *** 218,227 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! if (gsl_histogram2d_get (h1, i, j) != ! gsl_histogram2d_get (h, i, j)) ! status = 1; ! } } gsl_test (status, "gsl_histogram2d_memcpy copies bin values"); --- 218,227 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! if (gsl_histogram2d_get (h1, i, j) != ! gsl_histogram2d_get (h, i, j)) ! status = 1; ! } } gsl_test (status, "gsl_histogram2d_memcpy copies bin values"); *************** *** 236,241 **** for (i = 0; i <= M; i++) { ! if (h1->xrange[i] != h->xrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_clone copies bin xranges"); --- 236,241 ---- for (i = 0; i <= M; i++) { ! if (h1->xrange[i] != h->xrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_clone copies bin xranges"); *************** *** 246,251 **** for (i = 0; i <= N; i++) { ! if (h1->yrange[i] != h->yrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_clone copies bin yranges"); --- 246,251 ---- for (i = 0; i <= N; i++) { ! if (h1->yrange[i] != h->yrange[i]) ! status = 1; }; gsl_test (status, "gsl_histogram2d_clone copies bin yranges"); *************** *** 256,265 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! if (gsl_histogram2d_get (h1, i, j) != ! gsl_histogram2d_get (h, i, j)) ! status = 1; ! } } gsl_test (status, "gsl_histogram2d_clone copies bin values"); --- 256,265 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! if (gsl_histogram2d_get (h1, i, j) != ! gsl_histogram2d_get (h, i, j)) ! status = 1; ! } } gsl_test (status, "gsl_histogram2d_clone copies bin values"); *************** *** 274,279 **** for (i = 0; i < M * N; i++) { ! if (h->bin[i] != 0) ! status = 1; } gsl_test (status, "gsl_histogram2d_reset zeros array"); --- 274,279 ---- for (i = 0; i < M * N; i++) { ! if (h->bin[i] != 0) ! status = 1; } gsl_test (status, "gsl_histogram2d_reset zeros array"); *************** *** 289,312 **** for (i = 0; i < M1; i++) { ! for (j = 0; j < N1; j++) ! { ! gsl_histogram2d_increment (h, (double) i, (double) j); ! ! for (k = 0; k <= i * N1 + j; k++) ! { ! if (h->bin[k] != 1) ! { ! status = 1; ! } ! } ! ! for (k = i * N1 + j + 1; k < M1 * N1; k++) ! { ! if (h->bin[k] != 0) ! { ! status = 1; ! } ! } ! } } gsl_test (status, "gsl_histogram2d_increment increases bin value"); --- 289,312 ---- for (i = 0; i < M1; i++) { ! for (j = 0; j < N1; j++) ! { ! gsl_histogram2d_increment (h, (double) i, (double) j); ! ! for (k = 0; k <= i * N1 + j; k++) ! { ! if (h->bin[k] != 1) ! { ! status = 1; ! } ! } ! ! for (k = i * N1 + j + 1; k < M1 * N1; k++) ! { ! if (h->bin[k] != 0) ! { ! status = 1; ! } ! } ! } } gsl_test (status, "gsl_histogram2d_increment increases bin value"); *************** *** 320,333 **** for (i = 0; i < M; i++) { ! double x0 = 0, x1 = 0; ! gsl_histogram2d_get_xrange (h, i, &x0, &x1); ! if (x0 != i || x1 != i + 1) ! { ! status = 1; ! } } gsl_test (status, ! "gsl_histogram2d_get_xlowerlimit and xupperlimit"); } --- 320,333 ---- for (i = 0; i < M; i++) { ! double x0 = 0, x1 = 0; ! gsl_histogram2d_get_xrange (h, i, &x0, &x1); ! if (x0 != i || x1 != i + 1) ! { ! status = 1; ! } } gsl_test (status, ! "gsl_histogram2d_get_xlowerlimit and xupperlimit"); } *************** *** 337,350 **** for (i = 0; i < N; i++) { ! double y0 = 0, y1 = 0; ! gsl_histogram2d_get_yrange (h, i, &y0, &y1); ! if (y0 != i || y1 != i + 1) ! { ! status = 1; ! } } gsl_test (status, ! "gsl_histogram2d_get_ylowerlimit and yupperlimit"); } --- 337,350 ---- for (i = 0; i < N; i++) { ! double y0 = 0, y1 = 0; ! gsl_histogram2d_get_yrange (h, i, &y0, &y1); ! if (y0 != i || y1 != i + 1) ! { ! status = 1; ! } } gsl_test (status, ! "gsl_histogram2d_get_ylowerlimit and yupperlimit"); } *************** *** 403,407 **** double min = gsl_histogram2d_min_val (h); gsl_test (min != -654321.0, ! "gsl_histogram2d_min_val finds minimum value"); } --- 403,407 ---- double min = gsl_histogram2d_min_val (h); gsl_test (min != -654321.0, ! "gsl_histogram2d_min_val finds minimum value"); } *************** *** 410,415 **** gsl_histogram2d_max_bin (h, &imax, &jmax); gsl_test (imax != 3 ! || jmax != 2, ! "gsl_histogram2d_max_bin finds maximum value bin"); } --- 410,415 ---- gsl_histogram2d_max_bin (h, &imax, &jmax); gsl_test (imax != 3 ! || jmax != 2, ! "gsl_histogram2d_max_bin finds maximum value bin"); } *************** *** 418,422 **** gsl_histogram2d_min_bin (h, &imin, &jmin); gsl_test (imin != 4 ! || jmin != 3, "gsl_histogram2d_min_bin find minimum value bin"); } --- 418,422 ---- gsl_histogram2d_min_bin (h, &imin, &jmin); gsl_test (imin != 4 ! || jmin != 3, "gsl_histogram2d_min_bin find minimum value bin"); } *************** *** 430,434 **** double sum = gsl_histogram2d_sum (h); gsl_test (sum != N * M * 27 + ((N * M - 1) * N * M) / 2, ! "gsl_histogram2d_sum sums all bin values"); } --- 430,434 ---- double sum = gsl_histogram2d_sum (h); gsl_test (sum != N * M * 27 + ((N * M - 1) * N * M) / 2, ! "gsl_histogram2d_sum sums all bin values"); } *************** *** 452,458 **** double expected_ymean = (h3->yrange[ybin] + h3->yrange[ybin + 1]) / 2.0; gsl_test_abs (xmean, expected_xmean, 100.0 * GSL_DBL_EPSILON, ! "gsl_histogram2d_xmean"); gsl_test_abs (ymean, expected_ymean, 100.0 * GSL_DBL_EPSILON, ! "gsl_histogram2d_ymean"); }; gsl_histogram2d_free (h3); --- 452,458 ---- double expected_ymean = (h3->yrange[ybin] + h3->yrange[ybin + 1]) / 2.0; gsl_test_abs (xmean, expected_xmean, 100.0 * GSL_DBL_EPSILON, ! "gsl_histogram2d_xmean"); gsl_test_abs (ymean, expected_ymean, 100.0 * GSL_DBL_EPSILON, ! "gsl_histogram2d_ymean"); }; gsl_histogram2d_free (h3); *************** *** 475,490 **** for (xbin = 0; xbin < M; xbin++) { ! double xi = ! ((h3->xrange[xbin] + h3->xrange[xbin + 1]) / 2.0 - xmean) / xsigma; ! for (ybin = 0; ybin < N; ybin++) ! { ! double yi = ! ((h3->yrange[ybin] + h3->yrange[ybin + 1]) / 2.0 - ! ymean) / ysigma; ! double prob = ! norm * exp (-(xi * xi - 2.0 * correl * xi * yi + yi * yi) / ! 2.0 / (1 - correl * correl)); ! h3->bin[xbin * N + ybin] = prob; ! } } { --- 475,490 ---- for (xbin = 0; xbin < M; xbin++) { ! double xi = ! ((h3->xrange[xbin] + h3->xrange[xbin + 1]) / 2.0 - xmean) / xsigma; ! for (ybin = 0; ybin < N; ybin++) ! { ! double yi = ! ((h3->yrange[ybin] + h3->yrange[ybin + 1]) / 2.0 - ! ymean) / ysigma; ! double prob = ! norm * exp (-(xi * xi - 2.0 * correl * xi * yi + yi * yi) / ! 2.0 / (1 - correl * correl)); ! h3->bin[xbin * N + ybin] = prob; ! } } { *************** *** 515,520 **** for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] + h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_add histogram addition"); --- 515,520 ---- for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] + h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_add histogram addition"); *************** *** 528,533 **** for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] - h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_sub histogram subtraction"); --- 528,533 ---- for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] - h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_sub histogram subtraction"); *************** *** 542,547 **** for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] * h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_mul histogram multiplication"); --- 542,547 ---- for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] * h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_mul histogram multiplication"); *************** *** 555,560 **** for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] / h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_div histogram division"); --- 555,560 ---- for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != g->bin[i] / h->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_div histogram division"); *************** *** 568,573 **** for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != 0.5 * g->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_scale histogram scaling"); --- 568,573 ---- for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != 0.5 * g->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_scale histogram scaling"); *************** *** 581,600 **** for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != 0.25 + g->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_shift histogram shift"); } ! gsl_histogram2d_free (h); /* free whatever is in h */ h = gsl_histogram2d_calloc_uniform (M1, N1, 0.0, 5.0, 0.0, 5.0); gsl_test (h->xrange == 0, ! "gsl_histogram2d_calloc_uniform returns valid range pointer"); gsl_test (h->yrange == 0, ! "gsl_histogram2d_calloc_uniform returns valid range pointer"); gsl_test (h->bin == 0, ! "gsl_histogram2d_calloc_uniform returns valid bin pointer"); gsl_test (h->nx != M1, "gsl_histogram2d_calloc_uniform returns valid nx"); gsl_test (h->ny != N1, "gsl_histogram2d_calloc_uniform returns valid ny"); --- 581,600 ---- for (i = 0; i < M * N; i++) { ! if (h1->bin[i] != 0.25 + g->bin[i]) ! status = 1; } gsl_test (status, "gsl_histogram2d_shift histogram shift"); } ! gsl_histogram2d_free (h); /* free whatever is in h */ h = gsl_histogram2d_calloc_uniform (M1, N1, 0.0, 5.0, 0.0, 5.0); gsl_test (h->xrange == 0, ! "gsl_histogram2d_calloc_uniform returns valid range pointer"); gsl_test (h->yrange == 0, ! "gsl_histogram2d_calloc_uniform returns valid range pointer"); gsl_test (h->bin == 0, ! "gsl_histogram2d_calloc_uniform returns valid bin pointer"); gsl_test (h->nx != M1, "gsl_histogram2d_calloc_uniform returns valid nx"); gsl_test (h->ny != N1, "gsl_histogram2d_calloc_uniform returns valid ny"); *************** *** 617,648 **** for (i = 0; i < M1; i++) { ! for (j = 0; j < N1; j++) ! { ! if (i == i1 && j == j1) ! { ! expected = 1.0; ! } ! else if (i == i2 && j == j2) ! { ! expected = 2.0; ! } ! else if (i == i3 && j == j3) ! { ! expected = 3.0; ! } ! else if (i == i4 && j == j4) ! { ! expected = 4.0; ! } ! else ! { ! expected = 0.0; ! } ! ! if (h->bin[i * N1 + j] != expected) ! { ! status = 1; ! } ! } } gsl_test (status, "gsl_histogram2d_find returns index"); --- 617,648 ---- for (i = 0; i < M1; i++) { ! for (j = 0; j < N1; j++) ! { ! if (i == i1 && j == j1) ! { ! expected = 1.0; ! } ! else if (i == i2 && j == j2) ! { ! expected = 2.0; ! } ! else if (i == i3 && j == j3) ! { ! expected = 3.0; ! } ! else if (i == i4 && j == j4) ! { ! expected = 4.0; ! } ! else ! { ! expected = 0.0; ! } ! ! if (h->bin[i * N1 + j] != expected) ! { ! status = 1; ! } ! } } gsl_test (status, "gsl_histogram2d_find returns index"); *************** *** 664,693 **** for (i = 0; i <= M1; i++) { ! if (h->xrange[i] != hh->xrange[i]) ! { ! printf ("xrange[%d] : %g orig vs %g\n", ! (int) i, h->xrange[i], hh->xrange[i]); ! status = 1; ! } } for (j = 0; j <= N1; j++) { ! if (h->yrange[j] != hh->yrange[j]) ! { ! printf ("yrange[%d] : %g orig vs %g\n", ! (int) j, h->yrange[j], hh->yrange[j]); ! status = 1; ! } } for (i = 0; i < M1 * N1; i++) { ! if (h->bin[i] != hh->bin[i]) ! { ! printf ("bin[%d] : %g orig vs %g\n", ! (int) i, h->bin[i], hh->bin[i]); ! status = 1; ! } } --- 664,693 ---- for (i = 0; i <= M1; i++) { ! if (h->xrange[i] != hh->xrange[i]) ! { ! printf ("xrange[%d] : %g orig vs %g\n", ! (int) i, h->xrange[i], hh->xrange[i]); ! status = 1; ! } } for (j = 0; j <= N1; j++) { ! if (h->yrange[j] != hh->yrange[j]) ! { ! printf ("yrange[%d] : %g orig vs %g\n", ! (int) j, h->yrange[j], hh->yrange[j]); ! status = 1; ! } } for (i = 0; i < M1 * N1; i++) { ! if (h->bin[i] != hh->bin[i]) ! { ! printf ("bin[%d] : %g orig vs %g\n", ! (int) i, h->bin[i], hh->bin[i]); ! status = 1; ! } } *************** *** 713,742 **** for (i = 0; i <= M1; i++) { ! if (h->xrange[i] != hh->xrange[i]) ! { ! printf ("xrange[%d] : %g orig vs %g\n", ! (int) i, h->xrange[i], hh->xrange[i]); ! status = 1; ! } } for (j = 0; j <= N1; j++) { ! if (h->yrange[j] != hh->yrange[j]) ! { ! printf ("yrange[%d] : %g orig vs %g\n", ! (int) j, h->yrange[j], hh->yrange[j]); ! status = 1; ! } } for (i = 0; i < M1 * N1; i++) { ! if (h->bin[i] != hh->bin[i]) ! { ! printf ("bin[%d] : %g orig vs %g\n", ! (int) i, h->bin[i], hh->bin[i]); ! status = 1; ! } } --- 713,742 ---- for (i = 0; i <= M1; i++) { ! if (h->xrange[i] != hh->xrange[i]) ! { ! printf ("xrange[%d] : %g orig vs %g\n", ! (int) i, h->xrange[i], hh->xrange[i]); ! status = 1; ! } } for (j = 0; j <= N1; j++) { ! if (h->yrange[j] != hh->yrange[j]) ! { ! printf ("yrange[%d] : %g orig vs %g\n", ! (int) j, h->yrange[j], hh->yrange[j]); ! status = 1; ! } } for (i = 0; i < M1 * N1; i++) { ! if (h->bin[i] != hh->bin[i]) ! { ! printf ("bin[%d] : %g orig vs %g\n", ! (int) i, h->bin[i], hh->bin[i]); ! status = 1; ! } } *************** *** 751,755 **** gsl_histogram2d_free (g); gsl_histogram2d_free (hr); - - exit (gsl_test_summary ()); } --- 751,753 ---- diff -x.info* -rc2P gsl-1.3/histogram/test2d_resample.c gsl-1.4/histogram/test2d_resample.c *** gsl-1.3/histogram/test2d_resample.c Thu Oct 18 14:21:38 2001 --- gsl-1.4/histogram/test2d_resample.c Fri Jul 25 15:18:11 2003 *************** *** 27,32 **** #include "urand.c" ! int ! main (void) { size_t i, j; --- 27,32 ---- #include "urand.c" ! void ! test2d_resample (void) { size_t i, j; *************** *** 44,52 **** { for (j = 0; j < 10; j++) ! { ! double w = 10.0 * i + j; ! total += w; ! gsl_histogram2d_accumulate (h, 0.1 * i, 0.1 * i, w); ! } } --- 44,52 ---- { for (j = 0; j < 10; j++) ! { ! double w = 10.0 * i + j; ! total += w; ! gsl_histogram2d_accumulate (h, 0.1 * i, 0.1 * i, w); ! } } *************** *** 55,60 **** gsl_histogram2d *hh = gsl_histogram2d_calloc_uniform (20, 20, ! 0.0, 1.0, ! 0.0, 1.0); gsl_histogram2d_pdf_init (p, h); --- 55,60 ---- gsl_histogram2d *hh = gsl_histogram2d_calloc_uniform (20, 20, ! 0.0, 1.0, ! 0.0, 1.0); gsl_histogram2d_pdf_init (p, h); *************** *** 62,70 **** for (i = 0; i < N; i++) { ! double u = urand(); ! double v = urand(); ! double x, y; ! status = gsl_histogram2d_pdf_sample (p, u, v, &x, &y); ! status = gsl_histogram2d_increment (hh, x, y); } --- 62,70 ---- for (i = 0; i < N; i++) { ! double u = urand(); ! double v = urand(); ! double x, y; ! status = gsl_histogram2d_pdf_sample (p, u, v, &x, &y); ! status = gsl_histogram2d_increment (hh, x, y); } *************** *** 72,107 **** for (i = 0; i < 20; i++) { ! for (j = 0; j < 20; j++) ! { ! double z = 4 * total * gsl_histogram2d_get (hh, i, j) / (double) N; ! size_t k1, k2; ! double ya; ! double x, xmax, y, ymax; ! ! gsl_histogram2d_get_xrange (hh, i, &x, &xmax); ! gsl_histogram2d_get_yrange (hh, j, &y, &ymax); ! ! gsl_histogram2d_find (h, x, y, &k1, &k2); ! ya = gsl_histogram2d_get (h, k1, k2); ! ! if (ya == 0) ! { ! if (z != 0) ! { ! status = 1; ! printf ("(%d,%d): %g vs %g\n", (int)i, (int)j, z, ya); ! } ! } ! else ! { ! double err = 1 / sqrt (gsl_histogram2d_get (hh, i, j)); ! double sigma = fabs ((z - ya) / (ya * err)); ! if (sigma > 3) ! { ! status = 1; ! printf ("%g vs %g err=%g sigma=%g\n", z, ya, err, sigma); ! } ! } ! } } --- 72,107 ---- for (i = 0; i < 20; i++) { ! for (j = 0; j < 20; j++) ! { ! double z = 4 * total * gsl_histogram2d_get (hh, i, j) / (double) N; ! size_t k1, k2; ! double ya; ! double x, xmax, y, ymax; ! ! gsl_histogram2d_get_xrange (hh, i, &x, &xmax); ! gsl_histogram2d_get_yrange (hh, j, &y, &ymax); ! ! gsl_histogram2d_find (h, x, y, &k1, &k2); ! ya = gsl_histogram2d_get (h, k1, k2); ! ! if (ya == 0) ! { ! if (z != 0) ! { ! status = 1; ! printf ("(%d,%d): %g vs %g\n", (int)i, (int)j, z, ya); ! } ! } ! else ! { ! double err = 1 / sqrt (gsl_histogram2d_get (hh, i, j)); ! double sigma = fabs ((z - ya) / (ya * err)); ! if (sigma > 3) ! { ! status = 1; ! printf ("%g vs %g err=%g sigma=%g\n", z, ya, err, sigma); ! } ! } ! } } *************** *** 113,117 **** gsl_histogram2d_free (h) ; - - exit (gsl_test_summary ()); } --- 113,115 ---- diff -x.info* -rc2P gsl-1.3/histogram/test2d_trap.c gsl-1.4/histogram/test2d_trap.c *** gsl-1.3/histogram/test2d_trap.c Tue Jun 26 11:43:15 2001 --- gsl-1.4/histogram/test2d_trap.c Fri Jul 25 15:18:11 2003 *************** *** 29,38 **** #define M 239 ! void my_error_handler (const char *reason, const char *file, ! int line, int err); ! int status = 0; ! int ! main (void) { gsl_histogram2d *h; --- 29,38 ---- #define M 239 ! static void my_error_handler (const char *reason, const char *file, ! int line, int err); ! static int status = 0; ! void ! test2d_trap (void) { gsl_histogram2d *h; *************** *** 48,52 **** gsl_test (!status, "gsl_histogram_calloc traps zero-width histogram"); gsl_test (h != 0, ! "gsl_histogram2d_calloc returns NULL for zero-width histogram"); --- 48,52 ---- gsl_test (!status, "gsl_histogram_calloc traps zero-width histogram"); gsl_test (h != 0, ! "gsl_histogram2d_calloc returns NULL for zero-width histogram"); *************** *** 55,59 **** gsl_test (!status, "gsl_histogram_calloc traps zero-length histogram"); gsl_test (h != 0, ! "gsl_histogram2d_calloc returns NULL for zero-length histogram"); --- 55,59 ---- gsl_test (!status, "gsl_histogram_calloc traps zero-length histogram"); gsl_test (h != 0, ! "gsl_histogram2d_calloc returns NULL for zero-length histogram"); *************** *** 61,65 **** h = gsl_histogram2d_calloc_uniform (0, 10, 0.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps zero-width histogram"); gsl_test (h != 0, "gsl_histogram2d_calloc_uniform returns NULL for zero-width histogram"); --- 61,65 ---- h = gsl_histogram2d_calloc_uniform (0, 10, 0.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps zero-width histogram"); gsl_test (h != 0, "gsl_histogram2d_calloc_uniform returns NULL for zero-width histogram"); *************** *** 68,72 **** h = gsl_histogram2d_calloc_uniform (10, 0, 0.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps zero-length histogram"); gsl_test (h != 0, "gsl_histogram2d_calloc_uniform returns NULL for zero-length histogram"); --- 68,72 ---- h = gsl_histogram2d_calloc_uniform (10, 0, 0.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps zero-length histogram"); gsl_test (h != 0, "gsl_histogram2d_calloc_uniform returns NULL for zero-length histogram"); *************** *** 75,102 **** h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 1.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps equal endpoints"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for equal endpoints"); status = 0; h = gsl_histogram2d_calloc_uniform (10, 10, 1.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps equal endpoints"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for equal endpoints"); status = 0; h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 2.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps invalid range"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for invalid range"); status = 0; h = gsl_histogram2d_calloc_uniform (10, 10, 2.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps invalid range"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for invalid range"); h = gsl_histogram2d_calloc_uniform (N, M, 0.0, 1.0, 0.0, 1.0); --- 75,102 ---- h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 1.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps equal endpoints"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for equal endpoints"); status = 0; h = gsl_histogram2d_calloc_uniform (10, 10, 1.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps equal endpoints"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for equal endpoints"); status = 0; h = gsl_histogram2d_calloc_uniform (10, 10, 0.0, 1.0, 2.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps invalid range"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for invalid range"); status = 0; h = gsl_histogram2d_calloc_uniform (10, 10, 2.0, 1.0, 0.0, 1.0); gsl_test (!status, ! "gsl_histogram2d_calloc_uniform traps invalid range"); gsl_test (h != 0, ! "gsl_histogram2d_calloc_uniform returns NULL for invalid range"); h = gsl_histogram2d_calloc_uniform (N, M, 0.0, 1.0, 0.0, 1.0); *************** *** 192,201 **** gsl_histogram2d_free (h); - - exit (gsl_test_summary ()); } ! void my_error_handler (const char *reason, const char *file, int line, int err) { --- 192,199 ---- gsl_histogram2d_free (h); } ! static void my_error_handler (const char *reason, const char *file, int line, int err) { Only in gsl-1.3/histogram: test_resample.c Only in gsl-1.3/histogram: test_trap.c diff -x.info* -rc2P gsl-1.3/histogram/urand.c gsl-1.4/histogram/urand.c *** gsl-1.3/histogram/urand.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/histogram/urand.c Fri Jul 25 15:18:11 2003 *************** *** 18,24 **** */ ! double urand (void); ! double urand (void) { static unsigned long int x = 1; x = (1103515245 * x + 12345) & 0x7fffffffUL ; --- 18,24 ---- */ ! static double urand (void); ! static double urand (void) { static unsigned long int x = 1; x = (1103515245 * x + 12345) & 0x7fffffffUL ; diff -x.info* -rc2P gsl-1.3/ieee-utils/ChangeLog gsl-1.4/ieee-utils/ChangeLog *** gsl-1.3/ieee-utils/ChangeLog Mon Aug 26 19:57:47 2002 --- gsl-1.4/ieee-utils/ChangeLog Mon Jul 21 17:19:21 2003 *************** *** 1,2 **** --- 1,17 ---- + 2003-07-21 Brian Gough + + * read.c (gsl_ieee_read_mode_string): added missing + mask-division-by-zero to error message + + 2003-06-14 Brian Gough + + * fp-m68klinux.c fp-ppclinux.c fp-sparclinux.c fp-x86linux.c: + renamed to fp-gnum68k.c fp-gnuppc.c fp-gnusparc.c fp-gnux86.c + since they are dependent on the GNU C Library interface rather + than the kernel interface + + * fp-gnuc99.c: added a fallback to the C99 exception functions for + cases where the operating system is not recognized + Mon Aug 26 20:57:29 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/ieee-utils/Makefile.am gsl-1.4/ieee-utils/Makefile.am *** gsl-1.3/ieee-utils/Makefile.am Mon Jun 25 19:47:26 2001 --- gsl-1.4/ieee-utils/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 5,9 **** libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c ! noinst_HEADERS = fp-aix.c fp-darwin.c fp-hpux.c fp-hpux11.c fp-irix.c fp-m68klinux.c fp-ppclinux.c fp-solaris.c fp-sparclinux.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-x86linux.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c endian.c standardize.c INCLUDES= -I$(top_builddir) --- 5,9 ---- libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c ! noinst_HEADERS = fp-aix.c fp-darwin.c fp-hpux.c fp-hpux11.c fp-irix.c fp-gnum68k.c fp-gnuppc.c fp-solaris.c fp-gnusparc.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-gnux86.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c fp-gnuc99.c endian.c standardize.c INCLUDES= -I$(top_builddir) *************** *** 11,14 **** TESTS = test check_PROGRAMS = test ! test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 11,14 ---- TESTS = test check_PROGRAMS = test ! test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/ieee-utils/Makefile.in gsl-1.4/ieee-utils/Makefile.in *** gsl-1.3/ieee-utils/Makefile.in Wed Dec 18 22:37:48 2002 --- gsl-1.4/ieee-utils/Makefile.in Thu Aug 14 12:30:44 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslieeeutils.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslieeeutils.la *************** *** 91,95 **** libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c ! noinst_HEADERS = fp-aix.c fp-darwin.c fp-hpux.c fp-hpux11.c fp-irix.c fp-m68klinux.c fp-ppclinux.c fp-solaris.c fp-sparclinux.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-x86linux.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c endian.c standardize.c INCLUDES = -I$(top_builddir) --- 147,151 ---- libgslieeeutils_la_SOURCES = print.c make_rep.c gsl_ieee_utils.h env.c fp.c read.c ! noinst_HEADERS = fp-aix.c fp-darwin.c fp-hpux.c fp-hpux11.c fp-irix.c fp-gnum68k.c fp-gnuppc.c fp-solaris.c fp-gnusparc.c fp-sunos4.c fp-tru64.c fp-unknown.c fp-gnux86.c fp-freebsd.c fp-os2emx.c fp-netbsd.c fp-openbsd.c fp-gnuc99.c endian.c standardize.c INCLUDES = -I$(top_builddir) *************** *** 97,190 **** TESTS = test check_PROGRAMS = test ! test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslieeeutils_la_LDFLAGS = ! libgslieeeutils_la_LIBADD = ! libgslieeeutils_la_OBJECTS = print.lo make_rep.lo env.lo fp.lo read.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslieeeutils_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps ieee-utils/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,239 ---- TESTS = test check_PROGRAMS = test ! test_LDADD = libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c + subdir = ieee-utils + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslieeeutils_la_LDFLAGS = ! libgslieeeutils_la_LIBADD = ! am_libgslieeeutils_la_OBJECTS = print.lo make_rep.lo env.lo fp.lo \ ! read.lo ! libgslieeeutils_la_OBJECTS = $(am_libgslieeeutils_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslieeeutils_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu ieee-utils/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslieeeutils.la: $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_DEPENDENCIES) + $(LINK) $(libgslieeeutils_la_LDFLAGS) $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 195,331 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslieeeutils.la: $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_DEPENDENCIES) ! $(LINK) $(libgslieeeutils_la_LDFLAGS) $(libgslieeeutils_la_OBJECTS) $(libgslieeeutils_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = ieee-utils distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 244,448 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 334,383 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 451,517 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/ieee-utils/env.c gsl-1.4/ieee-utils/env.c *** gsl-1.3/ieee-utils/env.c Tue Jul 10 12:12:16 2001 --- gsl-1.4/ieee-utils/env.c Fri Jul 25 15:18:11 2003 *************** *** 88,104 **** { if (exception_mask & GSL_IEEE_MASK_INVALID) ! PRINTC("mask-invalid") ; if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) ! PRINTC("mask-denormalized") ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) ! PRINTC("mask-division-by-zero") ; if (exception_mask & GSL_IEEE_MASK_OVERFLOW) ! PRINTC("mask-overflow") ; if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) ! PRINTC("mask-underflow") ; } --- 88,104 ---- { if (exception_mask & GSL_IEEE_MASK_INVALID) ! PRINTC("mask-invalid") ; if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) ! PRINTC("mask-denormalized") ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) ! PRINTC("mask-division-by-zero") ; if (exception_mask & GSL_IEEE_MASK_OVERFLOW) ! PRINTC("mask-overflow") ; if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) ! PRINTC("mask-underflow") ; } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-aix.c gsl-1.4/ieee-utils/fp-aix.c *** gsl-1.3/ieee-utils/fp-aix.c Tue May 8 09:47:34 2001 --- gsl-1.4/ieee-utils/fp-aix.c Fri Jul 25 15:18:11 2003 *************** *** 38,50 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("AIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("AIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("AIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; } --- 38,50 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("AIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("AIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("AIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; } *************** *** 82,87 **** if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) GSL_ERROR ("AIX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) --- 82,87 ---- if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) GSL_ERROR ("AIX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-darwin.c gsl-1.4/ieee-utils/fp-darwin.c *** gsl-1.3/ieee-utils/fp-darwin.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/ieee-utils/fp-darwin.c Fri Jul 25 15:18:11 2003 *************** *** 65,69 **** if (exception_mask & GSL_IEEE_MASK_INVALID) ! fp_scr.ve = 0 ; //ve bit: invalid op exception enable if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) --- 65,69 ---- if (exception_mask & GSL_IEEE_MASK_INVALID) ! fp_scr.ve = 0 ; //ve bit: invalid op exception enable if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) *************** *** 72,86 **** if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) ! fp_scr.ze = 0 ; //ze bit: zero divide exception enable if (exception_mask & GSL_IEEE_MASK_OVERFLOW) ! fp_scr.oe = 0 ; //oe bit: overflow exception enable if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) ! fp_scr.ue = 0 ; //ue bit: underflow exception enable if (exception_mask & GSL_IEEE_TRAP_INEXACT) { ! fp_scr.xe = 1 ; //xe bit: inexact exception enable } else --- 72,86 ---- if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) ! fp_scr.ze = 0 ; //ze bit: zero divide exception enable if (exception_mask & GSL_IEEE_MASK_OVERFLOW) ! fp_scr.oe = 0 ; //oe bit: overflow exception enable if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) ! fp_scr.ue = 0 ; //ue bit: underflow exception enable if (exception_mask & GSL_IEEE_TRAP_INEXACT) { ! fp_scr.xe = 1 ; //xe bit: inexact exception enable } else diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-gnuc99.c gsl-1.4/ieee-utils/fp-gnuc99.c *** gsl-1.3/ieee-utils/fp-gnuc99.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/ieee-utils/fp-gnuc99.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,176 ---- + /* ieee-utils/fp-gnuc99.c + * + * Copyright (C) 2003 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + #include + + int + gsl_ieee_set_mode (int precision, int rounding, int exception_mask) + { + int mode; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("single precision rounding is not supported by ", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("double precision rounding is not supported by ", + GSL_EUNSUP) ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("extended precision rounding is not supported by ", + GSL_EUNSUP) ; + break ; + } + + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + #ifdef FE_TONEAREST + fesetround (FE_TONEAREST) ; + #else + GSL_ERROR ("round-to-nearest is not supported by ", GSL_EUNSUP) ; + #endif + break ; + case GSL_IEEE_ROUND_DOWN: + #ifdef FE_DOWNWARD + fesetround (FE_DOWNWARD) ; + #else + GSL_ERROR ("round-down is not supported by ", GSL_EUNSUP) ; + #endif + break ; + case GSL_IEEE_ROUND_UP: + #ifdef FE_UPWARD + fesetround (FE_UPWARD) ; + #else + GSL_ERROR ("round-up is not supported by ", GSL_EUNSUP) ; + #endif + break ; + case GSL_IEEE_ROUND_TO_ZERO: + #ifdef FE_TOWARDZERO + fesetround (FE_TOWARDZERO) ; + #else + GSL_ERROR ("round-toward-zero is not supported by ", GSL_EUNSUP) ; + #endif + break ; + default: + fesetround (FE_TONEAREST) ; + } + + /* Turn on all the exceptions apart from 'inexact' */ + + mode = 0; + + #ifdef FE_INVALID + mode |= FE_INVALID; + #endif + + #ifdef FE_DIVBYZERO + mode |= FE_DIVBYZERO; + #endif + + #ifdef FE_OVERFLOW + mode |= FE_OVERFLOW ; + #endif + + #ifdef FE_UNDERFLOW + mode |= FE_UNDERFLOW ; + #endif + + if (exception_mask & GSL_IEEE_MASK_INVALID) + { + #ifdef FE_INVALID + mode &= ~ FE_INVALID ; + #else + GSL_ERROR ("invalid operation exception not supported by ", + GSL_EUNSUP); + #endif + } + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + /* do nothing */ + } + else + { + GSL_ERROR ("denormalized operand exception not supported by . " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + { + #ifdef FE_DIVBYZERO + mode &= ~ FE_DIVBYZERO ; + #else + GSL_ERROR ("division by zero exception not supported by ", + GSL_EUNSUP); + #endif + } + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + { + #ifdef FE_OVERFLOW + mode &= ~ FE_OVERFLOW ; + #else + GSL_ERROR ("overflow exception not supported by ", GSL_EUNSUP); + #endif + } + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + { + #ifdef FE_UNDERFLOW + mode &= ~ FE_UNDERFLOW ; + #else + GSL_ERROR ("underflow exception not supported by ", GSL_EUNSUP); + #endif + } + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + #ifdef FE_INEXACT + mode |= FE_INEXACT ; + #else + GSL_ERROR ("inexact exception not supported by ", GSL_EUNSUP); + #endif + } + else + { + #ifdef FE_INEXACT + mode &= ~ FE_INEXACT ; + #else + /* do nothing */ + #endif + } + + #if HAVE_DECL_FEENABLEEXCEPT + feenableexcept (mode) ; + #elif HAVE_DECL_FESETTRAPENABLE + fesettrapenable (mode); + #else + GSL_ERROR ("unknown exception trap method", GSL_EUNSUP) + #endif + + return GSL_SUCCESS ; + } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-gnum68k.c gsl-1.4/ieee-utils/fp-gnum68k.c *** gsl-1.3/ieee-utils/fp-gnum68k.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/ieee-utils/fp-gnum68k.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,97 ---- + /* ieee-utils/fp-gnum68k.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + int + gsl_ieee_set_mode (int precision, int rounding, int exception_mask) + { + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + /* FIXME: I don't have documentation for the M68K so I'm not sure + about the mapping of the exceptions below. Maybe someone who does + know could correct this. */ + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_OPERR ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + { + GSL_ERROR ("the denormalized operand exception has not been implemented for m68k yet. Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + /*mode |= _FPU_MASK_DM ; ???? */ + } + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_DZ ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OVFL ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UNFL ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ (_FPU_MASK_INEX1 | _FPU_MASK_INEX2) ; + } + else + { + mode |= (_FPU_MASK_INEX1 | _FPU_MASK_INEX2) ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; + } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-gnuppc.c gsl-1.4/ieee-utils/fp-gnuppc.c *** gsl-1.3/ieee-utils/fp-gnuppc.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/ieee-utils/fp-gnuppc.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,92 ---- + /* ieee-utils/fp-gnuppc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough, John Fisher + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + + /* + * Identical to fp-gnux86.c, except with references to + * _FPU_SINGLE, _FPU_DOUBLE, _FPU_EXTENDED, _FPU_MASK_DM + * and _FPU_MASK_PM converted to errors. + */ + + int + gsl_ieee_set_mode (int precision, int rounding, int exception_mask) + { + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + case GSL_IEEE_DOUBLE_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + case GSL_IEEE_EXTENDED_PRECISION: + GSL_ERROR ("powerpc only supports default precision rounding", GSL_EUNSUP); + break ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + GSL_ERROR ("powerpc does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + GSL_ERROR ("powerpc does not support traps for inexact operations", GSL_EUNSUP) ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; + } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-gnusparc.c gsl-1.4/ieee-utils/fp-gnusparc.c *** gsl-1.3/ieee-utils/fp-gnusparc.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/ieee-utils/fp-gnusparc.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,91 ---- + /* ieee-utils/fp-gnusparc.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + int + gsl_ieee_set_mode (int precision, int rounding, int exception_mask) + { + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + GSL_ERROR ("sparc does not support the denormalized operand exception. " + "Use 'mask-denormalized' to work around this.", GSL_EUNSUP) ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ _FPU_MASK_PM ; + } + else + { + mode |= _FPU_MASK_PM ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; + } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-gnux86.c gsl-1.4/ieee-utils/fp-gnux86.c *** gsl-1.3/ieee-utils/fp-gnux86.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/ieee-utils/fp-gnux86.c Fri Jul 25 15:18:11 2003 *************** *** 0 **** --- 1,99 ---- + /* ieee-utils/fp-gnux86.c + * + * Copyright (C) 1996, 1997, 1998, 1999, 2000 Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + /* Handle libc5, where _FPU_SETCW is not available, suggested by + OKUJI Yoshinori and Evgeny Stambulchik + */ + + #ifndef _FPU_SETCW + #include + #define _FPU_SETCW(cw) __setfpucw(cw) + #endif + + int + gsl_ieee_set_mode (int precision, int rounding, int exception_mask) + { + unsigned short mode = 0 ; + + switch (precision) + { + case GSL_IEEE_SINGLE_PRECISION: + mode |= _FPU_SINGLE ; + break ; + case GSL_IEEE_DOUBLE_PRECISION: + mode |= _FPU_DOUBLE ; + break ; + case GSL_IEEE_EXTENDED_PRECISION: + mode |= _FPU_EXTENDED ; + break ; + default: + mode |= _FPU_EXTENDED ; + } + + switch (rounding) + { + case GSL_IEEE_ROUND_TO_NEAREST: + mode |= _FPU_RC_NEAREST ; + break ; + case GSL_IEEE_ROUND_DOWN: + mode |= _FPU_RC_DOWN ; + break ; + case GSL_IEEE_ROUND_UP: + mode |= _FPU_RC_UP ; + break ; + case GSL_IEEE_ROUND_TO_ZERO: + mode |= _FPU_RC_ZERO ; + break ; + default: + mode |= _FPU_RC_NEAREST ; + } + + if (exception_mask & GSL_IEEE_MASK_INVALID) + mode |= _FPU_MASK_IM ; + + if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) + mode |= _FPU_MASK_DM ; + + if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) + mode |= _FPU_MASK_ZM ; + + if (exception_mask & GSL_IEEE_MASK_OVERFLOW) + mode |= _FPU_MASK_OM ; + + if (exception_mask & GSL_IEEE_MASK_UNDERFLOW) + mode |= _FPU_MASK_UM ; + + if (exception_mask & GSL_IEEE_TRAP_INEXACT) + { + mode &= ~ _FPU_MASK_PM ; + } + else + { + mode |= _FPU_MASK_PM ; + } + + _FPU_SETCW(mode) ; + + return GSL_SUCCESS ; + } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-hpux.c gsl-1.4/ieee-utils/fp-hpux.c *** gsl-1.3/ieee-utils/fp-hpux.c Sun Jul 7 19:39:17 2002 --- gsl-1.4/ieee-utils/fp-hpux.c Fri Jul 25 15:18:11 2003 *************** *** 33,45 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; } --- 33,45 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; } *************** *** 83,88 **** { GSL_ERROR ("HP-UX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; } --- 83,88 ---- { GSL_ERROR ("HP-UX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-hpux11.c gsl-1.4/ieee-utils/fp-hpux11.c *** gsl-1.3/ieee-utils/fp-hpux11.c Sun Jul 7 19:39:28 2002 --- gsl-1.4/ieee-utils/fp-hpux11.c Fri Jul 25 15:18:11 2003 *************** *** 33,45 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; } --- 33,45 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("HPUX PA-RISC only supports default precision rounding", ! GSL_EUNSUP) ; break ; } *************** *** 78,83 **** { GSL_ERROR ("HP-UX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; } --- 78,83 ---- { GSL_ERROR ("HP-UX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-irix.c gsl-1.4/ieee-utils/fp-irix.c *** gsl-1.3/ieee-utils/fp-irix.c Wed Apr 18 21:52:28 2001 --- gsl-1.4/ieee-utils/fp-irix.c Fri Jul 25 15:18:11 2003 *************** *** 33,45 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("IRIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("IRIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("IRIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; } --- 33,45 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("IRIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("IRIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("IRIX only supports default precision rounding", ! GSL_EUNSUP) ; break ; } *************** *** 77,82 **** if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) GSL_ERROR ("IRIX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) --- 77,82 ---- if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) GSL_ERROR ("IRIX does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) Only in gsl-1.3/ieee-utils: fp-m68klinux.c diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-netbsd.c gsl-1.4/ieee-utils/fp-netbsd.c *** gsl-1.3/ieee-utils/fp-netbsd.c Tue Sep 11 19:18:26 2001 --- gsl-1.4/ieee-utils/fp-netbsd.c Fri Jul 25 15:18:11 2003 *************** *** 32,44 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("NetBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("NetBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("NetBSD only supports default precision rounding", ! GSL_EUNSUP); break; } --- 32,44 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("NetBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("NetBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("NetBSD only supports default precision rounding", ! GSL_EUNSUP); break; } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-openbsd.c gsl-1.4/ieee-utils/fp-openbsd.c *** gsl-1.3/ieee-utils/fp-openbsd.c Tue Sep 11 19:18:27 2001 --- gsl-1.4/ieee-utils/fp-openbsd.c Fri Jul 25 15:18:11 2003 *************** *** 35,47 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("OpenBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("OpenBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("OpenBSD only supports default precision rounding", ! GSL_EUNSUP); break; } --- 35,47 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("OpenBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("OpenBSD only supports default precision rounding", ! GSL_EUNSUP); break; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("OpenBSD only supports default precision rounding", ! GSL_EUNSUP); break; } Only in gsl-1.3/ieee-utils: fp-ppclinux.c diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-solaris.c gsl-1.4/ieee-utils/fp-solaris.c *** gsl-1.3/ieee-utils/fp-solaris.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/ieee-utils/fp-solaris.c Fri Jul 25 15:18:11 2003 *************** *** 33,45 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("solaris only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("solaris only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("solaris only supports default precision rounding", ! GSL_EUNSUP) ; break ; } --- 33,45 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("solaris only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("solaris only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("solaris only supports default precision rounding", ! GSL_EUNSUP) ; break ; } *************** *** 77,82 **** if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) GSL_ERROR ("solaris does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) --- 77,82 ---- if (exception_mask & GSL_IEEE_MASK_DENORMALIZED) GSL_ERROR ("solaris does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; if (exception_mask & GSL_IEEE_MASK_DIVISION_BY_ZERO) Only in gsl-1.3/ieee-utils: fp-sparclinux.c diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-sunos4.c gsl-1.4/ieee-utils/fp-sunos4.c *** gsl-1.3/ieee-utils/fp-sunos4.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/ieee-utils/fp-sunos4.c Fri Jul 25 15:18:11 2003 *************** *** 78,83 **** { GSL_ERROR ("sunos4 does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; } --- 78,83 ---- { GSL_ERROR ("sunos4 does not support the denormalized operand exception. " ! "Use 'mask-denormalized' to work around this.", ! GSL_EUNSUP) ; } diff -x.info* -rc2P gsl-1.3/ieee-utils/fp-tru64.c gsl-1.4/ieee-utils/fp-tru64.c *** gsl-1.3/ieee-utils/fp-tru64.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/ieee-utils/fp-tru64.c Fri Jul 25 15:18:11 2003 *************** *** 41,59 **** * gcc-2.95 lacking some of the definitions in the system float.h (the * symptoms are errors like: `FP_RND_RN' undeclared). To work around ! * this we include the system float.h before the gcc version, e.g. * * #include "/usr/include/float.h" * #include - * - * This is controlled by the config.h symbol - * `HAVE_FP_RND_IN_USR_INCLUDE_FLOAT_H'. */ ! #ifdef FIND_FP_RND_IN_USR_INCLUDE_FLOAT_H # include "/usr/include/float.h" # undef _FLOAT_H_ #endif - #include #include #include --- 41,59 ---- * gcc-2.95 lacking some of the definitions in the system float.h (the * symptoms are errors like: `FP_RND_RN' undeclared). To work around ! * this we can include the system float.h before the gcc version, e.g. * * #include "/usr/include/float.h" * #include */ ! #include ! ! #ifndef FP_RND_RN ! # undef _FLOAT_H_ # include "/usr/include/float.h" # undef _FLOAT_H_ + # include #endif #include #include *************** *** 76,88 **** case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", ! GSL_EUNSUP) ; break ; } --- 76,88 ---- case GSL_IEEE_SINGLE_PRECISION: GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_DOUBLE_PRECISION: GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", ! GSL_EUNSUP) ; break ; case GSL_IEEE_EXTENDED_PRECISION: GSL_ERROR ("Tru64 Unix on the alpha only supports default precision rounding", ! GSL_EUNSUP) ; break ; } *************** *** 115,133 **** /* from the ieee(3) man page: ! * IEEE_TRAP_ENABLE_INV -> Invalid operation ! * IEEE_TRAP_ENABLE_DZE -> Divide by 0 ! * IEEE_TRAP_ENABLE_OVF -> Overflow ! * IEEE_TRAP_ENABLE_UNF -> Underflow ! * IEEE_TRAP_ENABLE_INE -> Inexact (requires special option to C compiler) ! * IEEE_TRAP_ENABLE_DNO -> denormal operand * Note: IEEE_TRAP_ENABLE_DNO is not supported on OSF 3.x or Digital Unix * 4.0 - 4.0d(?). ! * IEEE_TRAP_ENABLE_MASK -> mask of all the trap enables ! * IEEE_MAP_DMZ -> map denormal inputs to zero ! * IEEE_MAP_UMZ -> map underflow results to zero */ mode = IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF ! | IEEE_TRAP_ENABLE_UNF ; if (exception_mask & GSL_IEEE_MASK_INVALID) --- 115,133 ---- /* from the ieee(3) man page: ! * IEEE_TRAP_ENABLE_INV -> Invalid operation ! * IEEE_TRAP_ENABLE_DZE -> Divide by 0 ! * IEEE_TRAP_ENABLE_OVF -> Overflow ! * IEEE_TRAP_ENABLE_UNF -> Underflow ! * IEEE_TRAP_ENABLE_INE -> Inexact (requires special option to C compiler) ! * IEEE_TRAP_ENABLE_DNO -> denormal operand * Note: IEEE_TRAP_ENABLE_DNO is not supported on OSF 3.x or Digital Unix * 4.0 - 4.0d(?). ! * IEEE_TRAP_ENABLE_MASK -> mask of all the trap enables ! * IEEE_MAP_DMZ -> map denormal inputs to zero ! * IEEE_MAP_UMZ -> map underflow results to zero */ mode = IEEE_TRAP_ENABLE_INV | IEEE_TRAP_ENABLE_DZE | IEEE_TRAP_ENABLE_OVF ! | IEEE_TRAP_ENABLE_UNF ; if (exception_mask & GSL_IEEE_MASK_INVALID) Only in gsl-1.3/ieee-utils: fp-x86linux.c diff -x.info* -rc2P gsl-1.3/ieee-utils/fp.c gsl-1.4/ieee-utils/fp.c *** gsl-1.3/ieee-utils/fp.c Mon Jun 25 19:48:07 2001 --- gsl-1.4/ieee-utils/fp.c Fri Jul 25 15:18:11 2003 *************** *** 1,36 **** #include ! #if defined(HAVE_SPARCLINUX_IEEE_INTERFACE) ! #include "fp-sparclinux.c" ! #elif defined(HAVE_M68KLINUX_IEEE_INTERFACE) ! #include "fp-m68klinux.c" ! #elif defined(HAVE_PPCLINUX_IEEE_INTERFACE) ! #include "fp-ppclinux.c" ! #elif defined(HAVE_X86LINUX_IEEE_INTERFACE) ! #include "fp-x86linux.c" ! #elif defined(HAVE_HPUX11_IEEE_INTERFACE) #include "fp-hpux11.c" ! #elif defined(HAVE_HPUX_IEEE_INTERFACE) #include "fp-hpux.c" ! #elif defined(HAVE_SUNOS4_IEEE_INTERFACE) #include "fp-sunos4.c" ! #elif defined(HAVE_SOLARIS_IEEE_INTERFACE) #include "fp-solaris.c" ! #elif defined(HAVE_IRIX_IEEE_INTERFACE) #include "fp-irix.c" ! #elif defined(HAVE_AIX_IEEE_INTERFACE) #include "fp-aix.c" ! #elif defined(HAVE_TRU64_IEEE_INTERFACE) #include "fp-tru64.c" ! #elif defined(HAVE_FREEBSD_IEEE_INTERFACE) #include "fp-freebsd.c" ! #elif defined(HAVE_OS2EMX_IEEE_INTERFACE) #include "fp-os2emx.c" ! #elif defined(HAVE_NETBSD_IEEE_INTERFACE) #include "fp-netbsd.c" ! #elif defined(HAVE_OPENBSD_IEEE_INTERFACE) #include "fp-openbsd.c" ! #elif defined(HAVE_DARWIN_IEEE_INTERFACE) #include "fp-darwin.c" #else #include "fp-unknown.c" --- 1,38 ---- #include ! #if HAVE_GNUSPARC_IEEE_INTERFACE ! #include "fp-gnusparc.c" ! #elif HAVE_GNUM68K_IEEE_INTERFACE ! #include "fp-gnum68k.c" ! #elif HAVE_GNUPPC_IEEE_INTERFACE ! #include "fp-gnuppc.c" ! #elif HAVE_GNUX86_IEEE_INTERFACE ! #include "fp-gnux86.c" ! #elif HAVE_HPUX11_IEEE_INTERFACE #include "fp-hpux11.c" ! #elif HAVE_HPUX_IEEE_INTERFACE #include "fp-hpux.c" ! #elif HAVE_SUNOS4_IEEE_INTERFACE #include "fp-sunos4.c" ! #elif HAVE_SOLARIS_IEEE_INTERFACE #include "fp-solaris.c" ! #elif HAVE_IRIX_IEEE_INTERFACE #include "fp-irix.c" ! #elif HAVE_AIX_IEEE_INTERFACE #include "fp-aix.c" ! #elif HAVE_TRU64_IEEE_INTERFACE #include "fp-tru64.c" ! #elif HAVE_FREEBSD_IEEE_INTERFACE #include "fp-freebsd.c" ! #elif HAVE_OS2EMX_IEEE_INTERFACE #include "fp-os2emx.c" ! #elif HAVE_NETBSD_IEEE_INTERFACE #include "fp-netbsd.c" ! #elif HAVE_OPENBSD_IEEE_INTERFACE #include "fp-openbsd.c" ! #elif HAVE_DARWIN_IEEE_INTERFACE #include "fp-darwin.c" + #elif HAVE_DECL_FEENABLEEXCEPT || HAVE_DECL_FESETTRAPENABLE + #include "fp-gnuc99.c" #else #include "fp-unknown.c" diff -x.info* -rc2P gsl-1.3/ieee-utils/gsl_ieee_utils.h gsl-1.4/ieee-utils/gsl_ieee_utils.h *** gsl-1.3/ieee-utils/gsl_ieee_utils.h Mon Jun 10 13:04:37 2002 --- gsl-1.4/ieee-utils/gsl_ieee_utils.h Fri Jul 25 15:18:21 2003 *************** *** 91,95 **** void gsl_ieee_env_setup (void) ; int gsl_ieee_read_mode_string (const char * description, int * precision, ! int * rounding, int * exception_mask) ; int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) ; --- 91,95 ---- void gsl_ieee_env_setup (void) ; int gsl_ieee_read_mode_string (const char * description, int * precision, ! int * rounding, int * exception_mask) ; int gsl_ieee_set_mode (int precision, int rounding, int exception_mask) ; diff -x.info* -rc2P gsl-1.3/ieee-utils/make_rep.c gsl-1.4/ieee-utils/make_rep.c *** gsl-1.3/ieee-utils/make_rep.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/ieee-utils/make_rep.c Fri Jul 25 15:18:11 2003 *************** *** 133,138 **** non_zero = (u.ieee.byte[0] || u.ieee.byte[1] || u.ieee.byte[2] ! || u.ieee.byte[3] || u.ieee.byte[4] || u.ieee.byte[5] ! || (u.ieee.byte[6] & 0x0f)) ; r->type = determine_ieee_type (non_zero, e, 2047) ; --- 133,138 ---- non_zero = (u.ieee.byte[0] || u.ieee.byte[1] || u.ieee.byte[2] ! || u.ieee.byte[3] || u.ieee.byte[4] || u.ieee.byte[5] ! || (u.ieee.byte[6] & 0x0f)) ; r->type = determine_ieee_type (non_zero, e, 2047) ; *************** *** 147,151 **** "1100", "1101", "1110", "1111" } ; ! static void sprint_nybble(int i, char *s) --- 147,151 ---- "1100", "1101", "1110", "1111" } ; ! static void sprint_nybble(int i, char *s) *************** *** 172,193 **** { if (non_zero) ! { ! return GSL_IEEE_TYPE_NAN ; ! } else ! { ! return GSL_IEEE_TYPE_INF ; ! } } else if (exponent == 0) { if (non_zero) ! { ! return GSL_IEEE_TYPE_DENORMAL ; ! } else ! { ! return GSL_IEEE_TYPE_ZERO ; ! } } else --- 172,193 ---- { if (non_zero) ! { ! return GSL_IEEE_TYPE_NAN ; ! } else ! { ! return GSL_IEEE_TYPE_INF ; ! } } else if (exponent == 0) { if (non_zero) ! { ! return GSL_IEEE_TYPE_DENORMAL ; ! } else ! { ! return GSL_IEEE_TYPE_ZERO ; ! } } else diff -x.info* -rc2P gsl-1.3/ieee-utils/read.c gsl-1.4/ieee-utils/read.c *** gsl-1.3/ieee-utils/read.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/ieee-utils/read.c Fri Jul 25 15:18:11 2003 *************** *** 26,36 **** static int lookup_string (const char * p, int * precision, int * rounding, ! int * exception_mask) ; int gsl_ieee_read_mode_string (const char * description, ! int * precision, ! int * rounding, ! int * exception_mask) { char * start ; --- 26,36 ---- static int lookup_string (const char * p, int * precision, int * rounding, ! int * exception_mask) ; int gsl_ieee_read_mode_string (const char * description, ! int * precision, ! int * rounding, ! int * exception_mask) { char * start ; *************** *** 65,76 **** if (end) { ! *end = '\0' ; ! do ! { ! end++ ; /* skip over trailing whitespace */ ! } ! while (*end == ' ' || *end == ',') ; } ! new_precision = 0 ; new_rounding = 0 ; --- 65,76 ---- if (end) { ! *end = '\0' ; ! do ! { ! end++ ; /* skip over trailing whitespace */ ! } ! while (*end == ' ' || *end == ',') ; } ! new_precision = 0 ; new_rounding = 0 ; *************** *** 81,114 **** if (status) GSL_ERROR ("unrecognized GSL_IEEE_MODE string.\nValid settings are:\n\n" ! " single-precision double-precision extended-precision\n" ! " round-to-nearest round-down round-up round-to-zero\n" ! " mask-invalid mask-denormalized mask-overflow " ! "mask-underflow\n" ! " mask-all trap-common trap-inexact\n" ! "\n" ! "separated by commas. " ! "(e.g. GSL_IEEE_MODE=\"round-down,mask-underflow\")", ! GSL_EINVAL) ; if (new_precision) { ! *precision = new_precision ; ! precision_count ++ ; ! if (precision_count > 1) ! GSL_ERROR ("attempted to set IEEE precision twice", GSL_EINVAL) ; } if (new_rounding) { ! *rounding = new_rounding ; ! rounding_count ++ ; ! if (rounding_count > 1) ! GSL_ERROR ("attempted to set IEEE rounding mode twice", GSL_EINVAL) ; } if (new_exception) { ! *exception_mask |= new_exception ; ! exception_count ++ ; } --- 81,114 ---- if (status) GSL_ERROR ("unrecognized GSL_IEEE_MODE string.\nValid settings are:\n\n" ! " single-precision double-precision extended-precision\n" ! " round-to-nearest round-down round-up round-to-zero\n" ! " mask-invalid mask-denormalized mask-division-by-zero\n" ! " mask-overflow mask-underflow mask-all\n" ! " trap-common trap-inexact\n" ! "\n" ! "separated by commas. " ! "(e.g. GSL_IEEE_MODE=\"round-down,mask-underflow\")", ! GSL_EINVAL) ; if (new_precision) { ! *precision = new_precision ; ! precision_count ++ ; ! if (precision_count > 1) ! GSL_ERROR ("attempted to set IEEE precision twice", GSL_EINVAL) ; } if (new_rounding) { ! *rounding = new_rounding ; ! rounding_count ++ ; ! if (rounding_count > 1) ! GSL_ERROR ("attempted to set IEEE rounding mode twice", GSL_EINVAL) ; } if (new_exception) { ! *exception_mask |= new_exception ; ! exception_count ++ ; } *************** *** 124,128 **** static int lookup_string (const char * p, int * precision, int * rounding, ! int * exception_mask) { if (strcmp(p,"single-precision") == 0) --- 124,128 ---- static int lookup_string (const char * p, int * precision, int * rounding, ! int * exception_mask) { if (strcmp(p,"single-precision") == 0) diff -x.info* -rc2P gsl-1.3/ieee-utils/test.c gsl-1.4/ieee-utils/test.c *** gsl-1.3/ieee-utils/test.c Mon Aug 26 19:57:04 2002 --- gsl-1.4/ieee-utils/test.c Fri Jul 25 15:18:11 2003 *************** *** 26,33 **** #include ! #if defined(HAVE_IRIX_IEEE_INTERFACE) /* don't test denormals on IRIX */ #else ! #ifdef HAVE_IEEE_DENORMALS #define TEST_DENORMAL 1 #endif --- 26,33 ---- #include ! #if HAVE_IRIX_IEEE_INTERFACE /* don't test denormals on IRIX */ #else ! #if HAVE_IEEE_DENORMALS #define TEST_DENORMAL 1 #endif *************** *** 118,122 **** gsl_test_str (r.mantissa, mantissa, "float x = -1.3304..., mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "float x = -1.3304..., type is NORMAL"); } --- 118,122 ---- gsl_test_str (r.mantissa, mantissa, "float x = -1.3304..., mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "float x = -1.3304..., type is NORMAL"); } *************** *** 148,152 **** gsl_test_str (r.mantissa, mantissa, "float x = 3.37e-31, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "float x = 3.37e-31, type is NORMAL"); } --- 148,152 ---- gsl_test_str (r.mantissa, mantissa, "float x = 3.37e-31, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "float x = 3.37e-31, type is NORMAL"); } *************** *** 154,158 **** { ! float f = FLT_MIN; const char mantissa[] = "00000000000000000000000"; gsl_ieee_float_rep r; --- 154,158 ---- { ! float f = FLT_MIN; const char mantissa[] = "00000000000000000000000"; gsl_ieee_float_rep r; *************** *** 185,189 **** #ifdef TEST_DENORMAL { ! float f = FLT_MIN; char mantissa[] = "10000000000000000000000"; --- 185,189 ---- #ifdef TEST_DENORMAL { ! float f = FLT_MIN; char mantissa[] = "10000000000000000000000"; *************** *** 193,208 **** for (i = 0; i < 23; i++) { ! float x = f / (float)pow (2.0, 1 + (float) i); ! mantissa[i] = '1'; ! gsl_ieee_float_to_rep (&x, &r); ! ! gsl_test_int (r.sign, 0, "float x = FLT_MIN/2^%d, sign is +", i + 1); ! gsl_test_int (r.exponent, -127, ! "float x = FLT_MIN/2^%d, exponent is -127", i + 1); ! gsl_test_str (r.mantissa, mantissa, ! "float x = FLT_MIN/2^%d, mantissa", i + 1); ! gsl_test_int (r.type, GSL_IEEE_TYPE_DENORMAL, ! "float x = FLT_MIN/2^%d, type is DENORMAL", i + 1); ! mantissa[i] = '0'; } } --- 193,208 ---- for (i = 0; i < 23; i++) { ! float x = f / (float)pow (2.0, 1 + (float) i); ! mantissa[i] = '1'; ! gsl_ieee_float_to_rep (&x, &r); ! ! gsl_test_int (r.sign, 0, "float x = FLT_MIN/2^%d, sign is +", i + 1); ! gsl_test_int (r.exponent, -127, ! "float x = FLT_MIN/2^%d, exponent is -127", i + 1); ! gsl_test_str (r.mantissa, mantissa, ! "float x = FLT_MIN/2^%d, mantissa", i + 1); ! gsl_test_int (r.type, GSL_IEEE_TYPE_DENORMAL, ! "float x = FLT_MIN/2^%d, type is DENORMAL", i + 1); ! mantissa[i] = '0'; } } *************** *** 212,216 **** { ! float f = FLT_MAX; const char mantissa[] = "00000000000000000000000"; --- 212,216 ---- { ! float f = FLT_MAX; const char mantissa[] = "00000000000000000000000"; *************** *** 230,234 **** { ! float f = FLT_MAX; const char mantissa[] = "00000000000000000000000"; --- 230,234 ---- { ! float f = FLT_MAX; const char mantissa[] = "00000000000000000000000"; *************** *** 329,333 **** gsl_test_str (r.mantissa, mantissa, "double x = -1.3304..., mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = -1.3304..., type is NORMAL"); } --- 329,333 ---- gsl_test_str (r.mantissa, mantissa, "double x = -1.3304..., mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = -1.3304..., type is NORMAL"); } *************** *** 345,349 **** gsl_test_str (r.mantissa, mantissa, "double x = 3.37e297, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = 3.37e297, type is NORMAL"); } --- 345,349 ---- gsl_test_str (r.mantissa, mantissa, "double x = 3.37e297, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = 3.37e297, type is NORMAL"); } *************** *** 361,365 **** gsl_test_str (r.mantissa, mantissa, "double x = 3.37e-297, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = 3.37e-297, type is NORMAL"); } --- 361,365 ---- gsl_test_str (r.mantissa, mantissa, "double x = 3.37e-297, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = 3.37e-297, type is NORMAL"); } *************** *** 377,381 **** gsl_test_str (r.mantissa, mantissa, "double x = DBL_MIN, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = DBL_MIN, type is NORMAL"); } --- 377,381 ---- gsl_test_str (r.mantissa, mantissa, "double x = DBL_MIN, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = DBL_MIN, type is NORMAL"); } *************** *** 393,397 **** gsl_test_str (r.mantissa, mantissa, "double x = DBL_MAX, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = DBL_MAX, type is NORMAL"); } --- 393,397 ---- gsl_test_str (r.mantissa, mantissa, "double x = DBL_MAX, mantissa"); gsl_test_int (r.type, GSL_IEEE_TYPE_NORMAL, ! "double x = DBL_MAX, type is NORMAL"); } *************** *** 408,423 **** for (i = 0; i < 52; i++) { ! double x = d / pow (2.0, 1 + (double) i); ! mantissa[i] = '1'; ! gsl_ieee_double_to_rep (&x, &r); ! ! gsl_test_int (r.sign, 0, "double x = DBL_MIN/2^%d, sign is +", i + 1); ! gsl_test_int (r.exponent, -1023, ! "double x = DBL_MIN/2^%d, exponent", i + 1); ! gsl_test_str (r.mantissa, mantissa, ! "double x = DBL_MIN/2^%d, mantissa", i + 1); ! gsl_test_int (r.type, GSL_IEEE_TYPE_DENORMAL, ! "double x = DBL_MIN/2^%d, type is DENORMAL", i + 1); ! mantissa[i] = '0'; } } --- 408,423 ---- for (i = 0; i < 52; i++) { ! double x = d / pow (2.0, 1 + (double) i); ! mantissa[i] = '1'; ! gsl_ieee_double_to_rep (&x, &r); ! ! gsl_test_int (r.sign, 0, "double x = DBL_MIN/2^%d, sign is +", i + 1); ! gsl_test_int (r.exponent, -1023, ! "double x = DBL_MIN/2^%d, exponent", i + 1); ! gsl_test_str (r.mantissa, mantissa, ! "double x = DBL_MIN/2^%d, mantissa", i + 1); ! gsl_test_int (r.type, GSL_IEEE_TYPE_DENORMAL, ! "double x = DBL_MIN/2^%d, type is DENORMAL", i + 1); ! mantissa[i] = '0'; } } diff -x.info* -rc2P gsl-1.3/integration/ChangeLog gsl-1.4/integration/ChangeLog *** gsl-1.3/integration/ChangeLog Mon Apr 29 19:06:30 2002 --- gsl-1.4/integration/ChangeLog Sun Jan 12 18:57:56 2003 *************** *** 1,2 **** --- 1,7 ---- + 2003-01-12 Brian Gough + + * qawc.c (gsl_integration_qawc): fixed bisection condition to + prevent singularity falling on interval boundary + Mon Apr 29 20:05:56 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/integration/Makefile.in gsl-1.4/integration/Makefile.in *** gsl-1.3/integration/Makefile.in Wed Dec 18 22:39:48 2002 --- gsl-1.4/integration/Makefile.in Thu Aug 14 12:29:41 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslintegration.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslintegration.la *************** *** 99,193 **** test_SOURCES = test.c tests.c tests.h test_LDADD = libgslintegration.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslintegration_la_LDFLAGS = ! libgslintegration_la_LIBADD = ! libgslintegration_la_OBJECTS = qk15.lo qk21.lo qk31.lo qk41.lo qk51.lo \ ! qk61.lo qk.lo qng.lo qag.lo qags.lo qagp.lo workspace.lo qcheb.lo \ ! qawc.lo qmomo.lo qaws.lo qmomof.lo qawo.lo qawf.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) tests.$(OBJEXT) ! test_DEPENDENCIES = libgslintegration.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslintegration_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps integration/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,242 ---- test_SOURCES = test.c tests.c tests.h test_LDADD = libgslintegration.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + subdir = integration + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslintegration_la_LDFLAGS = ! libgslintegration_la_LIBADD = ! am_libgslintegration_la_OBJECTS = qk15.lo qk21.lo qk31.lo qk41.lo \ ! qk51.lo qk61.lo qk.lo qng.lo qag.lo qags.lo qagp.lo \ ! workspace.lo qcheb.lo qawc.lo qmomo.lo qaws.lo qmomof.lo \ ! qawo.lo qawf.lo ! libgslintegration_la_OBJECTS = $(am_libgslintegration_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) tests.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslintegration.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslintegration_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu integration/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslintegration.la: $(libgslintegration_la_OBJECTS) $(libgslintegration_la_DEPENDENCIES) + $(LINK) $(libgslintegration_la_LDFLAGS) $(libgslintegration_la_OBJECTS) $(libgslintegration_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 198,334 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslintegration.la: $(libgslintegration_la_OBJECTS) $(libgslintegration_la_DEPENDENCIES) ! $(LINK) $(libgslintegration_la_LDFLAGS) $(libgslintegration_la_OBJECTS) $(libgslintegration_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = integration distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 247,451 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 337,386 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 454,520 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/integration/append.c gsl-1.4/integration/append.c *** gsl-1.3/integration/append.c Mon Jul 2 14:10:02 2001 --- gsl-1.4/integration/append.c Fri Jul 25 15:18:11 2003 *************** *** 20,24 **** static inline void append_interval (gsl_integration_workspace * workspace, ! double a1, double b1, double area1, double error1) { const size_t i_new = workspace->size ; --- 20,24 ---- static inline void append_interval (gsl_integration_workspace * workspace, ! double a1, double b1, double area1, double error1) { const size_t i_new = workspace->size ; diff -x.info* -rc2P gsl-1.3/integration/err.c gsl-1.4/integration/err.c *** gsl-1.3/integration/err.c Tue May 1 22:22:30 2001 --- gsl-1.4/integration/err.c Fri Jul 25 15:18:11 2003 *************** *** 33,46 **** if (result_asc != 0 && err != 0) { ! double scale = pow((200 * err / result_asc), 1.5) ; ! ! if (scale < 1) ! { ! err = result_asc * scale ; ! } ! else ! { ! err = result_asc ; ! } } if (result_abs > GSL_DBL_MIN / (50 * GSL_DBL_EPSILON)) --- 33,46 ---- if (result_asc != 0 && err != 0) { ! double scale = pow((200 * err / result_asc), 1.5) ; ! ! if (scale < 1) ! { ! err = result_asc * scale ; ! } ! else ! { ! err = result_asc ; ! } } if (result_abs > GSL_DBL_MIN / (50 * GSL_DBL_EPSILON)) *************** *** 49,55 **** if (min_err > err) ! { ! err = min_err ; ! } } --- 49,55 ---- if (min_err > err) ! { ! err = min_err ; ! } } diff -x.info* -rc2P gsl-1.3/integration/gsl_integration.h gsl-1.4/integration/gsl_integration.h *** gsl-1.3/integration/gsl_integration.h Mon Jun 10 13:04:37 2002 --- gsl-1.4/integration/gsl_integration.h Fri Jul 25 15:18:21 2003 *************** *** 121,151 **** typedef void gsl_integration_rule (const gsl_function * f, ! double a, double b, ! double *result, double *abserr, ! double *defabs, double *resabs); void gsl_integration_qk15 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk21 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk31 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk41 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk51 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk61 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qcheb (gsl_function * f, double a, double b, --- 121,151 ---- typedef void gsl_integration_rule (const gsl_function * f, ! double a, double b, ! double *result, double *abserr, ! double *defabs, double *resabs); void gsl_integration_qk15 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk21 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk31 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk41 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk51 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qk61 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc); void gsl_integration_qcheb (gsl_function * f, double a, double b, *************** *** 157,166 **** enum { ! GSL_INTEG_GAUSS15 = 1, /* 15 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS21 = 2, /* 21 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS31 = 3, /* 31 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS41 = 4, /* 41 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS51 = 5, /* 51 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS61 = 6 /* 61 point Gauss-Kronrod rule */ }; --- 157,166 ---- enum { ! GSL_INTEG_GAUSS15 = 1, /* 15 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS21 = 2, /* 21 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS31 = 3, /* 31 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS41 = 4, /* 41 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS51 = 5, /* 51 point Gauss-Kronrod rule */ ! GSL_INTEG_GAUSS61 = 6 /* 61 point Gauss-Kronrod rule */ }; *************** *** 175,250 **** int gsl_integration_qng (const gsl_function * f, ! double a, double b, ! double epsabs, double epsrel, ! double *result, double *abserr, ! size_t * neval); int gsl_integration_qag (const gsl_function * f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! int key, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagi (gsl_function * f, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagiu (gsl_function * f, ! double a, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagil (gsl_function * f, ! double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qags (const gsl_function * f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagp (const gsl_function * f, ! double *pts, size_t npts, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qawc (gsl_function *f, ! const double a, const double b, const double c, ! const double epsabs, const double epsrel, const size_t limit, ! gsl_integration_workspace * workspace, ! double * result, double * abserr); int gsl_integration_qaws (gsl_function * f, ! const double a, const double b, ! gsl_integration_qaws_table * t, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qawo (gsl_function * f, ! const double a, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr); int gsl_integration_qawf (gsl_function * f, ! const double a, ! const double epsabs, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_workspace * cycle_workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr); __END_DECLS --- 175,250 ---- int gsl_integration_qng (const gsl_function * f, ! double a, double b, ! double epsabs, double epsrel, ! double *result, double *abserr, ! size_t * neval); int gsl_integration_qag (const gsl_function * f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! int key, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagi (gsl_function * f, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagiu (gsl_function * f, ! double a, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagil (gsl_function * f, ! double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qags (const gsl_function * f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qagp (const gsl_function * f, ! double *pts, size_t npts, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qawc (gsl_function *f, ! const double a, const double b, const double c, ! const double epsabs, const double epsrel, const size_t limit, ! gsl_integration_workspace * workspace, ! double * result, double * abserr); int gsl_integration_qaws (gsl_function * f, ! const double a, const double b, ! gsl_integration_qaws_table * t, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr); int gsl_integration_qawo (gsl_function * f, ! const double a, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr); int gsl_integration_qawf (gsl_function * f, ! const double a, ! const double epsabs, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_workspace * cycle_workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr); __END_DECLS diff -x.info* -rc2P gsl-1.3/integration/ptsort.c gsl-1.4/integration/ptsort.c *** gsl-1.3/integration/ptsort.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/integration/ptsort.c Fri Jul 25 15:18:11 2003 *************** *** 39,58 **** for (j = i + 1; j < nint; j++) ! { ! size_t i2 = order[j]; ! double e2 = elist[i2]; ! if (e2 >= e1) ! { ! i_max = i2; ! e1 = e2; ! } ! } if (i_max != i1) ! { ! order[i] = order[i_max]; ! order[i_max] = i1; ! } } --- 39,58 ---- for (j = i + 1; j < nint; j++) ! { ! size_t i2 = order[j]; ! double e2 = elist[i2]; ! if (e2 >= e1) ! { ! i_max = i2; ! e1 = e2; ! } ! } if (i_max != i1) ! { ! order[i] = order[i_max]; ! order[i_max] = i1; ! } } diff -x.info* -rc2P gsl-1.3/integration/qag.c gsl-1.4/integration/qag.c *** gsl-1.3/integration/qag.c Mon Jul 2 14:29:11 2001 --- gsl-1.4/integration/qag.c Fri Jul 25 15:18:11 2003 *************** *** 40,48 **** int gsl_integration_qag (const gsl_function *f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! int key, ! gsl_integration_workspace * workspace, ! double * result, double * abserr) { int status ; --- 40,48 ---- int gsl_integration_qag (const gsl_function *f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! int key, ! gsl_integration_workspace * workspace, ! double * result, double * abserr) { int status ; *************** *** 80,84 **** default: GSL_ERROR("value of key does specify a known integration rule", ! GSL_EINVAL) ; } --- 80,84 ---- default: GSL_ERROR("value of key does specify a known integration rule", ! GSL_EINVAL) ; } *************** *** 106,110 **** int roundoff_type1 = 0, roundoff_type2 = 0, error_type = 0; ! double round_off; /* Initialize results */ --- 106,110 ---- int roundoff_type1 = 0, roundoff_type2 = 0, error_type = 0; ! double round_off; /* Initialize results */ *************** *** 123,127 **** { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } --- 123,127 ---- { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } *************** *** 146,150 **** GSL_ERROR ("cannot reach tolerance because of roundoff error " ! "on first attempt", GSL_EROUND); } else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) --- 146,150 ---- GSL_ERROR ("cannot reach tolerance because of roundoff error " ! "on first attempt", GSL_EROUND); } else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) *************** *** 196,229 **** if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! roundoff_type1++; ! } ! if (iteration >= 10 && error12 > e_i) ! { ! roundoff_type2++; ! } ! } tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); if (errsum > tolerance) ! { ! if (roundoff_type1 >= 6 || roundoff_type2 >= 20) ! { ! error_type = 2; /* round off error */ ! } ! ! /* set error flag in the case of bad integrand behaviour at ! a point of the integration range */ ! ! if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 3; ! } ! } update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); --- 196,229 ---- if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! roundoff_type1++; ! } ! if (iteration >= 10 && error12 > e_i) ! { ! roundoff_type2++; ! } ! } tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); if (errsum > tolerance) ! { ! if (roundoff_type1 >= 6 || roundoff_type2 >= 20) ! { ! error_type = 2; /* round off error */ ! } ! ! /* set error flag in the case of bad integrand behaviour at ! a point of the integration range */ ! ! if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 3; ! } ! } update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); *************** *** 246,255 **** { GSL_ERROR ("roundoff error prevents tolerance from being achieved", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (iteration == limit) --- 246,255 ---- { GSL_ERROR ("roundoff error prevents tolerance from being achieved", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (iteration == limit) diff -x.info* -rc2P gsl-1.3/integration/qagp.c gsl-1.4/integration/qagp.c *** gsl-1.3/integration/qagp.c Mon Jul 2 14:29:37 2001 --- gsl-1.4/integration/qagp.c Fri Jul 25 15:18:11 2003 *************** *** 43,50 **** int gsl_integration_qagp (const gsl_function *f, ! double * pts, size_t npts, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double * result, double * abserr) { int status = qagp (f, pts, npts, --- 43,50 ---- int gsl_integration_qagp (const gsl_function *f, ! double * pts, size_t npts, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double * result, double * abserr) { int status = qagp (f, pts, npts, *************** *** 87,91 **** struct extrapolation_table table; ! const size_t nint = npts - 1; /* number of intervals */ size_t *ndin = workspace->level; /* temporarily alias ndin to level */ --- 87,91 ---- struct extrapolation_table table; ! const size_t nint = npts - 1; /* number of intervals */ size_t *ndin = workspace->level; /* temporarily alias ndin to level */ *************** *** 113,117 **** { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } --- 113,117 ---- { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } *************** *** 122,128 **** { if (pts[i + 1] < pts[i]) ! { ! GSL_ERROR ("points are not in an ascending sequence", GSL_EINVAL); ! } } --- 122,128 ---- { if (pts[i + 1] < pts[i]) ! { ! GSL_ERROR ("points are not in an ascending sequence", GSL_EINVAL); ! } } *************** *** 150,160 **** if (error1 == resasc1 && error1 != 0.0) ! { ! ndin[i] = 1; ! } else ! { ! ndin[i] = 0; ! } } --- 150,160 ---- if (error1 == resasc1 && error1 != 0.0) ! { ! ndin[i] = 1; ! } else ! { ! ndin[i] = 0; ! } } *************** *** 166,172 **** { if (ndin[i]) ! { ! workspace->elist[i] = abserr0; ! } errsum = errsum + workspace->elist[i]; --- 166,172 ---- { if (ndin[i]) ! { ! workspace->elist[i] = abserr0; ! } errsum = errsum + workspace->elist[i]; *************** *** 194,198 **** GSL_ERROR ("cannot reach tolerance because of roundoff error" ! "on first attempt", GSL_EROUND); } else if (abserr0 <= tolerance) --- 194,198 ---- GSL_ERROR ("cannot reach tolerance because of roundoff error" ! "on first attempt", GSL_EROUND); } else if (abserr0 <= tolerance) *************** *** 226,230 **** positive_integrand = test_positivity (result0, resabs0); ! iteration = nint - 1; do --- 226,230 ---- positive_integrand = test_positivity (result0, resabs0); ! iteration = nint - 1; do *************** *** 272,307 **** if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! if (!extrapolate) ! { ! roundoff_type1++; ! } ! else ! { ! roundoff_type2++; ! } ! } ! ! if (i > 10 && error12 > e_i) ! { ! roundoff_type3++; ! } ! } /* Test for roundoff and eventually set error flag */ if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) ! { ! error_type = 2; /* round off error */ ! } if (roundoff_type2 >= 5) ! { ! error_type2 = 1; ! } /* set error flag in the case of bad integrand behaviour at --- 272,307 ---- if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! if (!extrapolate) ! { ! roundoff_type1++; ! } ! else ! { ! roundoff_type2++; ! } ! } ! ! if (i > 10 && error12 > e_i) ! { ! roundoff_type3++; ! } ! } /* Test for roundoff and eventually set error flag */ if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) ! { ! error_type = 2; /* round off error */ ! } if (roundoff_type2 >= 5) ! { ! error_type2 = 1; ! } /* set error flag in the case of bad integrand behaviour at *************** *** 309,315 **** if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 4; ! } /* append the newly-created intervals to the list */ --- 309,315 ---- if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 4; ! } /* append the newly-created intervals to the list */ *************** *** 318,369 **** if (errsum <= tolerance) ! { ! goto compute_result; ! } if (error_type) ! { ! break; ! } if (iteration >= limit - 1) ! { ! error_type = 1; ! break; ! } if (disallow_extrapolation) ! { ! continue; ! } error_over_large_intervals += -last_e_i; if (current_level < workspace->maximum_level) ! { ! error_over_large_intervals += error12; ! } if (!extrapolate) ! { ! /* test whether the interval to be bisected next is the ! smallest interval. */ ! if (large_interval (workspace)) ! continue; ! ! extrapolate = 1; ! workspace->nrmax = 1; ! } /* The smallest interval has the largest error. Before ! bisecting decrease the sum of the errors over the larger ! intervals (error_over_large_intervals) and perform ! extrapolation. */ if (!error_type2 && error_over_large_intervals > ertest) ! { ! if (increase_nrmax (workspace)) ! continue; ! } /* Perform extrapolation */ --- 318,369 ---- if (errsum <= tolerance) ! { ! goto compute_result; ! } if (error_type) ! { ! break; ! } if (iteration >= limit - 1) ! { ! error_type = 1; ! break; ! } if (disallow_extrapolation) ! { ! continue; ! } error_over_large_intervals += -last_e_i; if (current_level < workspace->maximum_level) ! { ! error_over_large_intervals += error12; ! } if (!extrapolate) ! { ! /* test whether the interval to be bisected next is the ! smallest interval. */ ! if (large_interval (workspace)) ! continue; ! ! extrapolate = 1; ! workspace->nrmax = 1; ! } /* The smallest interval has the largest error. Before ! bisecting decrease the sum of the errors over the larger ! intervals (error_over_large_intervals) and perform ! extrapolation. */ if (!error_type2 && error_over_large_intervals > ertest) ! { ! if (increase_nrmax (workspace)) ! continue; ! } /* Perform extrapolation */ *************** *** 372,378 **** if (table.n < 3) ! { ! goto skip_extrapolation; ! } qelg (&table, &reseps, &abseps); --- 372,378 ---- if (table.n < 3) ! { ! goto skip_extrapolation; ! } qelg (&table, &reseps, &abseps); *************** *** 381,410 **** if (ktmin > 5 && err_ext < 0.001 * errsum) ! { ! error_type = 5; ! } if (abseps < err_ext) ! { ! ktmin = 0; ! err_ext = abseps; ! res_ext = reseps; ! correc = error_over_large_intervals; ! ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); ! if (err_ext <= ertest) ! break; ! } /* Prepare bisection of the smallest interval. */ if (table.n == 1) ! { ! disallow_extrapolation = 1; ! } if (error_type == 5) ! { ! break; ! } skip_extrapolation: --- 381,410 ---- if (ktmin > 5 && err_ext < 0.001 * errsum) ! { ! error_type = 5; ! } if (abseps < err_ext) ! { ! ktmin = 0; ! err_ext = abseps; ! res_ext = reseps; ! correc = error_over_large_intervals; ! ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); ! if (err_ext <= ertest) ! break; ! } /* Prepare bisection of the smallest interval. */ if (table.n == 1) ! { ! disallow_extrapolation = 1; ! } if (error_type == 5) ! { ! break; ! } skip_extrapolation: *************** *** 426,449 **** { if (error_type2) ! { ! err_ext += correc; ! } if (error_type == 0) ! error_type = 3; if (result != 0 && area != 0) ! { ! if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; ! } else if (err_ext > errsum) ! { ! goto compute_result; ! } else if (area == 0.0) ! { ! goto return_error; ! } } --- 426,449 ---- { if (error_type2) ! { ! err_ext += correc; ! } if (error_type == 0) ! error_type = 3; if (result != 0 && area != 0) ! { ! if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; ! } else if (err_ext > errsum) ! { ! goto compute_result; ! } else if (area == 0.0) ! { ! goto return_error; ! } } *************** *** 487,506 **** { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) { GSL_ERROR ("roundoff error detected in the extrapolation table", ! GSL_EROUND); } else if (error_type == 5) { GSL_ERROR ("integral is divergent, or slowly convergent", ! GSL_EDIVERGE); } else --- 487,506 ---- { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) { GSL_ERROR ("roundoff error detected in the extrapolation table", ! GSL_EROUND); } else if (error_type == 5) { GSL_ERROR ("integral is divergent, or slowly convergent", ! GSL_EDIVERGE); } else diff -x.info* -rc2P gsl-1.3/integration/qags.c gsl-1.4/integration/qags.c *** gsl-1.3/integration/qags.c Mon Jul 2 14:29:16 2001 --- gsl-1.4/integration/qags.c Fri Jul 25 15:18:11 2003 *************** *** 39,46 **** int gsl_integration_qags (const gsl_function *f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double * result, double * abserr) { int status = qags (f, a, b, epsabs, epsrel, limit, --- 39,46 ---- int gsl_integration_qags (const gsl_function *f, ! double a, double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double * result, double * abserr) { int status = qags (f, a, b, epsabs, epsrel, limit, *************** *** 62,68 **** int gsl_integration_qagi (gsl_function * f, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { int status; --- 62,68 ---- int gsl_integration_qagi (gsl_function * f, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { int status; *************** *** 105,112 **** int gsl_integration_qagil (gsl_function * f, ! double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { int status; --- 105,112 ---- int gsl_integration_qagil (gsl_function * f, ! double b, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { int status; *************** *** 154,161 **** int gsl_integration_qagiu (gsl_function * f, ! double a, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { int status; --- 154,161 ---- int gsl_integration_qagiu (gsl_function * f, ! double a, ! double epsabs, double epsrel, size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { int status; *************** *** 238,242 **** { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } --- 238,242 ---- { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } *************** *** 255,259 **** GSL_ERROR ("cannot reach tolerance because of roundoff error" ! "on first attempt", GSL_EROUND); } else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) --- 255,259 ---- GSL_ERROR ("cannot reach tolerance because of roundoff error" ! "on first attempt", GSL_EROUND); } else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) *************** *** 331,365 **** if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! if (!extrapolate) ! { ! roundoff_type1++; ! } ! else ! { ! roundoff_type2++; ! } ! } ! if (iteration > 10 && error12 > e_i) ! { ! roundoff_type3++; ! } ! } /* Test for roundoff and eventually set error flag */ if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) ! { ! error_type = 2; /* round off error */ ! } if (roundoff_type2 >= 5) ! { ! error_type2 = 1; ! } /* set error flag in the case of bad integrand behaviour at --- 331,365 ---- if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! if (!extrapolate) ! { ! roundoff_type1++; ! } ! else ! { ! roundoff_type2++; ! } ! } ! if (iteration > 10 && error12 > e_i) ! { ! roundoff_type3++; ! } ! } /* Test for roundoff and eventually set error flag */ if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) ! { ! error_type = 2; /* round off error */ ! } if (roundoff_type2 >= 5) ! { ! error_type2 = 1; ! } /* set error flag in the case of bad integrand behaviour at *************** *** 367,373 **** if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 4; ! } /* append the newly-created intervals to the list */ --- 367,373 ---- if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 4; ! } /* append the newly-created intervals to the list */ *************** *** 376,431 **** if (errsum <= tolerance) ! { ! goto compute_result; ! } if (error_type) ! { ! break; ! } if (iteration >= limit - 1) ! { ! error_type = 1; ! break; ! } ! ! if (iteration == 2) /* set up variables on first iteration */ ! { ! error_over_large_intervals = errsum; ! ertest = tolerance; ! append_table (&table, area); ! continue; ! } if (disallow_extrapolation) ! { ! continue; ! } error_over_large_intervals += -last_e_i; if (current_level < workspace->maximum_level) ! { ! error_over_large_intervals += error12; ! } if (!extrapolate) ! { ! /* test whether the interval to be bisected next is the ! smallest interval. */ ! ! if (large_interval (workspace)) ! continue; ! ! extrapolate = 1; ! workspace->nrmax = 1; ! } if (!error_type2 && error_over_large_intervals > ertest) ! { ! if (increase_nrmax (workspace)) ! continue; ! } /* Perform extrapolation */ --- 376,431 ---- if (errsum <= tolerance) ! { ! goto compute_result; ! } if (error_type) ! { ! break; ! } if (iteration >= limit - 1) ! { ! error_type = 1; ! break; ! } ! ! if (iteration == 2) /* set up variables on first iteration */ ! { ! error_over_large_intervals = errsum; ! ertest = tolerance; ! append_table (&table, area); ! continue; ! } if (disallow_extrapolation) ! { ! continue; ! } error_over_large_intervals += -last_e_i; if (current_level < workspace->maximum_level) ! { ! error_over_large_intervals += error12; ! } if (!extrapolate) ! { ! /* test whether the interval to be bisected next is the ! smallest interval. */ ! ! if (large_interval (workspace)) ! continue; ! ! extrapolate = 1; ! workspace->nrmax = 1; ! } if (!error_type2 && error_over_large_intervals > ertest) ! { ! if (increase_nrmax (workspace)) ! continue; ! } /* Perform extrapolation */ *************** *** 438,467 **** if (ktmin > 5 && err_ext < 0.001 * errsum) ! { ! error_type = 5; ! } if (abseps < err_ext) ! { ! ktmin = 0; ! err_ext = abseps; ! res_ext = reseps; ! correc = error_over_large_intervals; ! ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); ! if (err_ext <= ertest) ! break; ! } /* Prepare bisection of the smallest interval. */ if (table.n == 1) ! { ! disallow_extrapolation = 1; ! } if (error_type == 5) ! { ! break; ! } /* work on interval with largest error */ --- 438,467 ---- if (ktmin > 5 && err_ext < 0.001 * errsum) ! { ! error_type = 5; ! } if (abseps < err_ext) ! { ! ktmin = 0; ! err_ext = abseps; ! res_ext = reseps; ! correc = error_over_large_intervals; ! ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); ! if (err_ext <= ertest) ! break; ! } /* Prepare bisection of the smallest interval. */ if (table.n == 1) ! { ! disallow_extrapolation = 1; ! } if (error_type == 5) ! { ! break; ! } /* work on interval with largest error */ *************** *** 483,506 **** { if (error_type2) ! { ! err_ext += correc; ! } if (error_type == 0) ! error_type = 3; if (res_ext != 0.0 && area != 0.0) ! { ! if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; ! } else if (err_ext > errsum) ! { ! goto compute_result; ! } else if (area == 0.0) ! { ! goto return_error; ! } } --- 483,506 ---- { if (error_type2) ! { ! err_ext += correc; ! } if (error_type == 0) ! error_type = 3; if (res_ext != 0.0 && area != 0.0) ! { ! if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; ! } else if (err_ext > errsum) ! { ! goto compute_result; ! } else if (area == 0.0) ! { ! goto return_error; ! } } *************** *** 546,565 **** { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) { GSL_ERROR ("roundoff error detected in the extrapolation table", ! GSL_EROUND); } else if (error_type == 5) { GSL_ERROR ("integral is divergent, or slowly convergent", ! GSL_EDIVERGE); } else --- 546,565 ---- { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) { GSL_ERROR ("roundoff error detected in the extrapolation table", ! GSL_EROUND); } else if (error_type == 5) { GSL_ERROR ("integral is divergent, or slowly convergent", ! GSL_EDIVERGE); } else diff -x.info* -rc2P gsl-1.3/integration/qawc.c gsl-1.4/integration/qawc.c *** gsl-1.3/integration/qawc.c Mon Jul 2 14:29:54 2001 --- gsl-1.4/integration/qawc.c Fri Jul 25 15:18:11 2003 *************** *** 33,41 **** int gsl_integration_qawc (gsl_function * f, ! const double a, const double b, const double c, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { double area, errsum; --- 33,41 ---- int gsl_integration_qawc (gsl_function * f, ! const double a, const double b, const double c, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { double area, errsum; *************** *** 75,79 **** { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } --- 75,79 ---- { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } *************** *** 131,144 **** b2 = b_i; ! if (c > a1 && c < b1) ! { ! b1 = 0.5 * (c + b2) ; ! a2 = b1; ! } else if (c > b1 && c < b2) ! { ! b1 = 0.5 * (a1 + c) ; ! a2 = b1; ! } qc25c (f, a1, b1, c, &area1, &error1, &err_reliable1); --- 131,144 ---- b2 = b_i; ! if (c > a1 && c <= b1) ! { ! b1 = 0.5 * (c + b2) ; ! a2 = b1; ! } else if (c > b1 && c < b2) ! { ! b1 = 0.5 * (a1 + c) ; ! a2 = b1; ! } qc25c (f, a1, b1, c, &area1, &error1, &err_reliable1); *************** *** 152,185 **** if (err_reliable1 && err_reliable2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! roundoff_type1++; ! } ! if (iteration >= 10 && error12 > e_i) ! { ! roundoff_type2++; ! } ! } tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); if (errsum > tolerance) ! { ! if (roundoff_type1 >= 6 || roundoff_type2 >= 20) ! { ! error_type = 2; /* round off error */ ! } ! ! /* set error flag in the case of bad integrand behaviour at ! a point of the integration range */ ! ! if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 3; ! } ! } update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); --- 152,185 ---- if (err_reliable1 && err_reliable2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! roundoff_type1++; ! } ! if (iteration >= 10 && error12 > e_i) ! { ! roundoff_type2++; ! } ! } tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); if (errsum > tolerance) ! { ! if (roundoff_type1 >= 6 || roundoff_type2 >= 20) ! { ! error_type = 2; /* round off error */ ! } ! ! /* set error flag in the case of bad integrand behaviour at ! a point of the integration range */ ! ! if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 3; ! } ! } update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); *************** *** 202,211 **** { GSL_ERROR ("roundoff error prevents tolerance from being achieved", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (iteration == limit) --- 202,211 ---- { GSL_ERROR ("roundoff error prevents tolerance from being achieved", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (iteration == limit) diff -x.info* -rc2P gsl-1.3/integration/qawf.c gsl-1.4/integration/qawf.c *** gsl-1.3/integration/qawf.c Mon Jul 2 14:31:07 2001 --- gsl-1.4/integration/qawf.c Fri Jul 25 15:18:11 2003 *************** *** 31,41 **** int gsl_integration_qawf (gsl_function * f, ! const double a, ! const double epsabs, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_workspace * cycle_workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr) { double area, errsum; --- 31,41 ---- int gsl_integration_qawf (gsl_function * f, ! const double a, ! const double epsabs, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_workspace * cycle_workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr) { double area, errsum; *************** *** 78,99 **** { if (wf->sine == GSL_INTEG_SINE) ! { ! /* The function sin(w x) f(x) is always zero for w = 0 */ ! *result = 0; ! *abserr = 0; ! return GSL_SUCCESS; ! } else ! { ! /* The function cos(w x) f(x) is always f(x) for w = 0 */ ! int status = gsl_integration_qagiu (f, a, epsabs, 0.0, ! cycle_workspace->limit, ! cycle_workspace, ! result, abserr); ! return status; ! } } --- 78,99 ---- { if (wf->sine == GSL_INTEG_SINE) ! { ! /* The function sin(w x) f(x) is always zero for w = 0 */ ! *result = 0; ! *abserr = 0; ! return GSL_SUCCESS; ! } else ! { ! /* The function cos(w x) f(x) is always f(x) for w = 0 */ ! int status = gsl_integration_qagiu (f, a, epsabs, 0.0, ! cycle_workspace->limit, ! cycle_workspace, ! result, abserr); ! return status; ! } } *************** *** 132,137 **** int status = gsl_integration_qawo (f, a1, epsabs1, 0.0, limit, ! cycle_workspace, wf, ! &area1, &error1); append_interval (workspace, a1, b1, area1, error1); --- 132,137 ---- int status = gsl_integration_qawo (f, a1, epsabs1, 0.0, limit, ! cycle_workspace, wf, ! &area1, &error1); append_interval (workspace, a1, b1, area1, error1); *************** *** 149,177 **** if (total_error < epsabs && iteration > 4) ! { ! goto compute_result; ! } if (error1 > correc) ! { ! correc = error1; ! } if (status) ! { ! eps = GSL_MAX_DBL (initial_eps, correc * (1.0 - p)); ! } if (status && total_error < 10 * correc && iteration > 3) ! { ! goto compute_result; ! } append_table (&table, area); if (table.n < 2) ! { ! continue; ! } qelg (&table, &reseps, &erreps); --- 149,177 ---- if (total_error < epsabs && iteration > 4) ! { ! goto compute_result; ! } if (error1 > correc) ! { ! correc = error1; ! } if (status) ! { ! eps = GSL_MAX_DBL (initial_eps, correc * (1.0 - p)); ! } if (status && total_error < 10 * correc && iteration > 3) ! { ! goto compute_result; ! } append_table (&table, area); if (table.n < 2) ! { ! continue; ! } qelg (&table, &reseps, &erreps); *************** *** 180,198 **** if (ktmin >= 15 && err_ext < 0.001 * total_error) ! { ! error_type = 4; ! } if (erreps < err_ext) ! { ! ktmin = 0; ! err_ext = erreps; ! res_ext = reseps; ! ! if (err_ext + 10 * correc <= epsabs) ! break; ! if (err_ext <= epsabs && 10 * correc >= epsabs) ! break; ! } } --- 180,198 ---- if (ktmin >= 15 && err_ext < 0.001 * total_error) ! { ! error_type = 4; ! } if (erreps < err_ext) ! { ! ktmin = 0; ! err_ext = erreps; ! res_ext = reseps; ! ! if (err_ext + 10 * correc <= epsabs) ! break; ! if (err_ext <= epsabs && 10 * correc >= epsabs) ! break; ! } } *************** *** 217,221 **** { if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; } else if (err_ext > errsum) --- 217,221 ---- { if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; } else if (err_ext > errsum) *************** *** 256,275 **** { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) { GSL_ERROR ("roundoff error detected in the extrapolation table", ! GSL_EROUND); } else if (error_type == 5) { GSL_ERROR ("integral is divergent, or slowly convergent", ! GSL_EDIVERGE); } else --- 256,275 ---- { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) { GSL_ERROR ("roundoff error detected in the extrapolation table", ! GSL_EROUND); } else if (error_type == 5) { GSL_ERROR ("integral is divergent, or slowly convergent", ! GSL_EDIVERGE); } else diff -x.info* -rc2P gsl-1.3/integration/qawo.c gsl-1.4/integration/qawo.c *** gsl-1.3/integration/qawo.c Mon Jul 2 14:30:31 2001 --- gsl-1.4/integration/qawo.c Fri Jul 25 15:18:11 2003 *************** *** 38,47 **** int gsl_integration_qawo (gsl_function * f, ! const double a, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr) { double area, errsum; --- 38,47 ---- int gsl_integration_qawo (gsl_function * f, ! const double a, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! gsl_integration_qawo_table * wf, ! double *result, double *abserr) { double area, errsum; *************** *** 86,90 **** { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } --- 86,90 ---- { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } *************** *** 103,107 **** GSL_ERROR ("cannot reach tolerance because of roundoff error" ! "on first attempt", GSL_EROUND); } else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) --- 103,107 ---- GSL_ERROR ("cannot reach tolerance because of roundoff error" ! "on first attempt", GSL_EROUND); } else if ((abserr0 <= tolerance && abserr0 != resasc0) || abserr0 == 0.0) *************** *** 158,165 **** if (current_level >= wf->n) ! { ! error_type = -1 ; /* exceeded limit of table */ ! break ; ! } a1 = a_i; --- 158,165 ---- if (current_level >= wf->n) ! { ! error_type = -1 ; /* exceeded limit of table */ ! break ; ! } a1 = a_i; *************** *** 190,224 **** if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! if (!extrapolate) ! { ! roundoff_type1++; ! } ! else ! { ! roundoff_type2++; ! } ! } ! if (iteration > 10 && error12 > e_i) ! { ! roundoff_type3++; ! } ! } /* Test for roundoff and eventually set error flag */ if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) ! { ! error_type = 2; /* round off error */ ! } if (roundoff_type2 >= 5) ! { ! error_type2 = 1; ! } /* set error flag in the case of bad integrand behaviour at --- 190,224 ---- if (resasc1 != error1 && resasc2 != error2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! if (!extrapolate) ! { ! roundoff_type1++; ! } ! else ! { ! roundoff_type2++; ! } ! } ! if (iteration > 10 && error12 > e_i) ! { ! roundoff_type3++; ! } ! } /* Test for roundoff and eventually set error flag */ if (roundoff_type1 + roundoff_type2 >= 10 || roundoff_type3 >= 20) ! { ! error_type = 2; /* round off error */ ! } if (roundoff_type2 >= 5) ! { ! error_type2 = 1; ! } /* set error flag in the case of bad integrand behaviour at *************** *** 226,232 **** if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 4; ! } /* append the newly-created intervals to the list */ --- 226,232 ---- if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 4; ! } /* append the newly-created intervals to the list */ *************** *** 235,313 **** if (errsum <= tolerance) ! { ! goto compute_result; ! } if (error_type) ! { ! break; ! } if (iteration >= limit - 1) ! { ! error_type = 1; ! break; ! } /* set up variables on first iteration */ ! if (iteration == 2 && extall) ! { ! error_over_large_intervals = errsum; ! ertest = tolerance; ! append_table (&table, area); ! continue; ! } if (disallow_extrapolation) ! { ! continue; ! } if (extall) ! { ! error_over_large_intervals += -last_e_i; ! ! if (current_level < workspace->maximum_level) ! { ! error_over_large_intervals += error12; ! } ! ! if (extrapolate) ! goto label70; ! } if (large_interval(workspace)) ! { ! continue; ! } if (extall) ! { ! extrapolate = 1; ! workspace->nrmax = 1; ! } else ! { ! /* test whether the interval to be bisected next is the ! smallest interval. */ ! size_t i = workspace->i; ! double width = workspace->blist[i] - workspace->alist[i]; ! ! if (0.25 * fabs(width) * abs_omega > 2) ! continue; ! ! extall = 1; ! error_over_large_intervals = errsum; ! ertest = tolerance; ! continue; ! } label70: if (!error_type2 && error_over_large_intervals > ertest) ! { ! if (increase_nrmax (workspace)) ! continue; ! } /* Perform extrapolation */ --- 235,313 ---- if (errsum <= tolerance) ! { ! goto compute_result; ! } if (error_type) ! { ! break; ! } if (iteration >= limit - 1) ! { ! error_type = 1; ! break; ! } /* set up variables on first iteration */ ! if (iteration == 2 && extall) ! { ! error_over_large_intervals = errsum; ! ertest = tolerance; ! append_table (&table, area); ! continue; ! } if (disallow_extrapolation) ! { ! continue; ! } if (extall) ! { ! error_over_large_intervals += -last_e_i; ! ! if (current_level < workspace->maximum_level) ! { ! error_over_large_intervals += error12; ! } ! ! if (extrapolate) ! goto label70; ! } if (large_interval(workspace)) ! { ! continue; ! } if (extall) ! { ! extrapolate = 1; ! workspace->nrmax = 1; ! } else ! { ! /* test whether the interval to be bisected next is the ! smallest interval. */ ! size_t i = workspace->i; ! double width = workspace->blist[i] - workspace->alist[i]; ! ! if (0.25 * fabs(width) * abs_omega > 2) ! continue; ! ! extall = 1; ! error_over_large_intervals = errsum; ! ertest = tolerance; ! continue; ! } label70: if (!error_type2 && error_over_large_intervals > ertest) ! { ! if (increase_nrmax (workspace)) ! continue; ! } /* Perform extrapolation */ *************** *** 316,325 **** if (table.n < 3) ! { ! reset_nrmax(workspace); ! extrapolate = 0; ! error_over_large_intervals = errsum; ! continue; ! } qelg (&table, &reseps, &abseps); --- 316,325 ---- if (table.n < 3) ! { ! reset_nrmax(workspace); ! extrapolate = 0; ! error_over_large_intervals = errsum; ! continue; ! } qelg (&table, &reseps, &abseps); *************** *** 328,357 **** if (ktmin > 5 && err_ext < 0.001 * errsum) ! { ! error_type = 5; ! } if (abseps < err_ext) ! { ! ktmin = 0; ! err_ext = abseps; ! res_ext = reseps; ! correc = error_over_large_intervals; ! ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); ! if (err_ext <= ertest) ! break; ! } /* Prepare bisection of the smallest interval. */ if (table.n == 1) ! { ! disallow_extrapolation = 1; ! } if (error_type == 5) ! { ! break; ! } /* work on interval with largest error */ --- 328,357 ---- if (ktmin > 5 && err_ext < 0.001 * errsum) ! { ! error_type = 5; ! } if (abseps < err_ext) ! { ! ktmin = 0; ! err_ext = abseps; ! res_ext = reseps; ! correc = error_over_large_intervals; ! ertest = GSL_MAX_DBL (epsabs, epsrel * fabs (reseps)); ! if (err_ext <= ertest) ! break; ! } /* Prepare bisection of the smallest interval. */ if (table.n == 1) ! { ! disallow_extrapolation = 1; ! } if (error_type == 5) ! { ! break; ! } /* work on interval with largest error */ *************** *** 373,396 **** { if (error_type2) ! { ! err_ext += correc; ! } if (error_type == 0) ! error_type = 3; if (result != 0 && area != 0) ! { ! if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; ! } else if (err_ext > errsum) ! { ! goto compute_result; ! } else if (area == 0.0) ! { ! goto return_error; ! } } --- 373,396 ---- { if (error_type2) ! { ! err_ext += correc; ! } if (error_type == 0) ! error_type = 3; if (result != 0 && area != 0) ! { ! if (err_ext / fabs (res_ext) > errsum / fabs (area)) ! goto compute_result; ! } else if (err_ext > errsum) ! { ! goto compute_result; ! } else if (area == 0.0) ! { ! goto return_error; ! } } *************** *** 434,443 **** { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) --- 434,443 ---- { GSL_ERROR ("cannot reach tolerance because of roundoff error", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (error_type == 4) diff -x.info* -rc2P gsl-1.3/integration/qaws.c gsl-1.4/integration/qaws.c *** gsl-1.3/integration/qaws.c Mon Jul 2 14:30:10 2001 --- gsl-1.4/integration/qaws.c Fri Jul 25 15:18:11 2003 *************** *** 33,42 **** int gsl_integration_qaws (gsl_function * f, ! const double a, const double b, ! gsl_integration_qaws_table * t, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { double area, errsum; --- 33,42 ---- int gsl_integration_qaws (gsl_function * f, ! const double a, const double b, ! gsl_integration_qaws_table * t, ! const double epsabs, const double epsrel, ! const size_t limit, ! gsl_integration_workspace * workspace, ! double *result, double *abserr) { double area, errsum; *************** *** 66,70 **** { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } --- 66,70 ---- { GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); } *************** *** 85,95 **** if (error1 > error2) { ! append_interval (workspace, a1, b1, area1, error1); ! append_interval (workspace, a2, b2, area2, error2); } else { ! append_interval (workspace, a2, b2, area2, error2); ! append_interval (workspace, a1, b1, area1, error1); } --- 85,95 ---- if (error1 > error2) { ! append_interval (workspace, a1, b1, area1, error1); ! append_interval (workspace, a2, b2, area2, error2); } else { ! append_interval (workspace, a2, b2, area2, error2); ! append_interval (workspace, a1, b1, area1, error1); } *************** *** 152,185 **** if (err_reliable1 && err_reliable2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! roundoff_type1++; ! } ! if (iteration >= 10 && error12 > e_i) ! { ! roundoff_type2++; ! } ! } tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); if (errsum > tolerance) ! { ! if (roundoff_type1 >= 6 || roundoff_type2 >= 20) ! { ! error_type = 2; /* round off error */ ! } ! ! /* set error flag in the case of bad integrand behaviour at ! a point of the integration range */ ! ! if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 3; ! } ! } update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); --- 152,185 ---- if (err_reliable1 && err_reliable2) ! { ! double delta = r_i - area12; ! if (fabs (delta) <= 1.0e-5 * fabs (area12) && error12 >= 0.99 * e_i) ! { ! roundoff_type1++; ! } ! if (iteration >= 10 && error12 > e_i) ! { ! roundoff_type2++; ! } ! } tolerance = GSL_MAX_DBL (epsabs, epsrel * fabs (area)); if (errsum > tolerance) ! { ! if (roundoff_type1 >= 6 || roundoff_type2 >= 20) ! { ! error_type = 2; /* round off error */ ! } ! ! /* set error flag in the case of bad integrand behaviour at ! a point of the integration range */ ! ! if (subinterval_too_small (a1, a2, b2)) ! { ! error_type = 3; ! } ! } update (workspace, a1, b1, area1, error1, a2, b2, area2, error2); *************** *** 202,211 **** { GSL_ERROR ("roundoff error prevents tolerance from being achieved", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (iteration == limit) --- 202,211 ---- { GSL_ERROR ("roundoff error prevents tolerance from being achieved", ! GSL_EROUND); } else if (error_type == 3) { GSL_ERROR ("bad integrand behavior found in the integration interval", ! GSL_ESING); } else if (iteration == limit) diff -x.info* -rc2P gsl-1.3/integration/qc25c.c gsl-1.4/integration/qc25c.c *** gsl-1.3/integration/qc25c.c Wed Apr 18 21:52:29 2001 --- gsl-1.4/integration/qc25c.c Fri Jul 25 15:18:11 2003 *************** *** 52,65 **** gsl_integration_qk15 (&weighted_function, a, b, result, abserr, ! &resabs, &resasc); if (*abserr == resasc) ! { ! *err_reliable = 0; ! } else ! { ! *err_reliable = 1; ! } return; --- 52,65 ---- gsl_integration_qk15 (&weighted_function, a, b, result, abserr, ! &resabs, &resasc); if (*abserr == resasc) ! { ! *err_reliable = 0; ! } else ! { ! *err_reliable = 1; ! } return; *************** *** 74,85 **** for (i = 0; i < 13; i++) ! { ! res12 += cheb12[i] * moment[i]; ! } for (i = 0; i < 25; i++) ! { ! res24 += cheb24[i] * moment[i]; ! } *result = res24; --- 74,85 ---- for (i = 0; i < 13; i++) ! { ! res12 += cheb12[i] * moment[i]; ! } for (i = 0; i < 25; i++) ! { ! res24 += cheb24[i] * moment[i]; ! } *result = res24; *************** *** 116,127 **** if ((k % 2) == 0) ! { ! a2 = 2.0 * cc * a1 - a0; ! } else ! { ! const double km1 = k - 1.0; ! a2 = 2.0 * cc * a1 - a0 - 4.0 / (km1 * km1 - 1.0); ! } moment[k] = a2; --- 116,127 ---- if ((k % 2) == 0) ! { ! a2 = 2.0 * cc * a1 - a0; ! } else ! { ! const double km1 = k - 1.0; ! a2 = 2.0 * cc * a1 - a0 - 4.0 / (km1 * km1 - 1.0); ! } moment[k] = a2; diff -x.info* -rc2P gsl-1.3/integration/qc25f.c gsl-1.4/integration/qc25f.c *** gsl-1.3/integration/qc25f.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qc25f.c Fri Jul 25 15:18:11 2003 *************** *** 52,67 **** if (wf->sine == GSL_INTEG_SINE) ! { ! weighted_function.function = &fn_sin; ! } else ! { ! weighted_function.function = &fn_cos; ! } weighted_function.params = &fn_params; gsl_integration_qk15 (&weighted_function, a, b, result, abserr, ! resabs, resasc); return; --- 52,67 ---- if (wf->sine == GSL_INTEG_SINE) ! { ! weighted_function.function = &fn_sin; ! } else ! { ! weighted_function.function = &fn_cos; ! } weighted_function.params = &fn_params; gsl_integration_qk15 (&weighted_function, a, b, result, abserr, ! resabs, resasc); return; *************** *** 79,86 **** if (level >= wf->n) ! { /* table overflow should not happen, check before calling */ GSL_ERROR_VOID("table overflow in internal function", GSL_ESANITY); ! } /* obtain moments from the table */ --- 79,86 ---- if (level >= wf->n) ! { /* table overflow should not happen, check before calling */ GSL_ERROR_VOID("table overflow in internal function", GSL_ESANITY); ! } /* obtain moments from the table */ *************** *** 92,100 **** for (i = 0; i < 6; i++) ! { ! size_t k = 10 - 2 * i; ! res12_cos += cheb12[k] * moment[k]; ! res12_sin += cheb12[k + 1] * moment[k + 1]; ! } res24_cos = cheb24[24] * moment[24]; --- 92,100 ---- for (i = 0; i < 6; i++) ! { ! size_t k = 10 - 2 * i; ! res12_cos += cheb12[k] * moment[k]; ! res12_sin += cheb12[k + 1] * moment[k + 1]; ! } res24_cos = cheb24[24] * moment[24]; *************** *** 104,113 **** for (i = 0; i < 12; i++) ! { ! size_t k = 22 - 2 * i; ! res24_cos += cheb24[k] * moment[k]; ! res24_sin += cheb24[k + 1] * moment[k + 1]; ! result_abs += fabs(cheb24[k]) + fabs(cheb24[k+1]); ! } est_cos = fabs(res24_cos - res12_cos); --- 104,113 ---- for (i = 0; i < 12; i++) ! { ! size_t k = 22 - 2 * i; ! res24_cos += cheb24[k] * moment[k]; ! res24_sin += cheb24[k + 1] * moment[k + 1]; ! result_abs += fabs(cheb24[k]) + fabs(cheb24[k+1]); ! } est_cos = fabs(res24_cos - res12_cos); *************** *** 118,130 **** if (wf->sine == GSL_INTEG_SINE) ! { ! *result = c * res24_sin + s * res24_cos; ! *abserr = fabs(c * est_sin) + fabs(s * est_cos); ! } else ! { ! *result = c * res24_cos - s * res24_sin; ! *abserr = fabs(c * est_cos) + fabs(s * est_sin); ! } *resabs = result_abs * half_length; --- 118,130 ---- if (wf->sine == GSL_INTEG_SINE) ! { ! *result = c * res24_sin + s * res24_cos; ! *abserr = fabs(c * est_sin) + fabs(s * est_cos); ! } else ! { ! *result = c * res24_cos - s * res24_sin; ! *abserr = fabs(c * est_cos) + fabs(s * est_sin); ! } *resabs = result_abs * half_length; diff -x.info* -rc2P gsl-1.3/integration/qc25s.c gsl-1.4/integration/qc25s.c *** gsl-1.3/integration/qc25s.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qc25s.c Fri Jul 25 15:18:11 2003 *************** *** 32,36 **** static void compute_result (const double * r, const double * cheb12, const double * cheb24, ! double * result12, double * result24); --- 32,36 ---- static void compute_result (const double * r, const double * cheb12, const double * cheb24, ! double * result12, double * result24); *************** *** 66,92 **** if (t->mu == 0) ! { ! double res12 = 0, res24 = 0; ! double u = factor; ! ! compute_result (t->ri, cheb12, cheb24, &res12, &res24); ! ! *result = u * res24; ! *abserr = fabs(u * (res24 - res12)); ! } else ! { ! double res12a = 0, res24a = 0; ! double res12b = 0, res24b = 0; ! ! double u = factor * log(b1 - a1); ! double v = factor; ! ! compute_result (t->ri, cheb12, cheb24, &res12a, &res24a); ! compute_result (t->rg, cheb12, cheb24, &res12b, &res24b); ! ! *result = u * res24a + v * res24b; ! *abserr = fabs(u * (res24a - res12a)) + fabs(v * (res24b - res12b)); ! } *err_reliable = 0; --- 66,92 ---- if (t->mu == 0) ! { ! double res12 = 0, res24 = 0; ! double u = factor; ! ! compute_result (t->ri, cheb12, cheb24, &res12, &res24); ! ! *result = u * res24; ! *abserr = fabs(u * (res24 - res12)); ! } else ! { ! double res12a = 0, res24a = 0; ! double res12b = 0, res24b = 0; ! ! double u = factor * log(b1 - a1); ! double v = factor; ! ! compute_result (t->ri, cheb12, cheb24, &res12a, &res24a); ! compute_result (t->rg, cheb12, cheb24, &res12b, &res24b); ! ! *result = u * res24a + v * res24b; ! *abserr = fabs(u * (res24a - res12a)) + fabs(v * (res24b - res12b)); ! } *err_reliable = 0; *************** *** 104,130 **** if (t->nu == 0) ! { ! double res12 = 0, res24 = 0; ! double u = factor; ! ! compute_result (t->rj, cheb12, cheb24, &res12, &res24); ! ! *result = u * res24; ! *abserr = fabs(u * (res24 - res12)); ! } else ! { ! double res12a = 0, res24a = 0; ! double res12b = 0, res24b = 0; ! ! double u = factor * log(b1 - a1); ! double v = factor; ! ! compute_result (t->rj, cheb12, cheb24, &res12a, &res24a); ! compute_result (t->rh, cheb12, cheb24, &res12b, &res24b); ! ! *result = u * res24a + v * res24b; ! *abserr = fabs(u * (res24a - res12a)) + fabs(v * (res24b - res12b)); ! } *err_reliable = 0; --- 104,130 ---- if (t->nu == 0) ! { ! double res12 = 0, res24 = 0; ! double u = factor; ! ! compute_result (t->rj, cheb12, cheb24, &res12, &res24); ! ! *result = u * res24; ! *abserr = fabs(u * (res24 - res12)); ! } else ! { ! double res12a = 0, res24a = 0; ! double res12b = 0, res24b = 0; ! ! double u = factor * log(b1 - a1); ! double v = factor; ! ! compute_result (t->rj, cheb12, cheb24, &res12a, &res24a); ! compute_result (t->rh, cheb12, cheb24, &res12b, &res24b); ! ! *result = u * res24a + v * res24b; ! *abserr = fabs(u * (res24a - res12a)) + fabs(v * (res24b - res12b)); ! } *err_reliable = 0; *************** *** 139,152 **** gsl_integration_qk15 (&weighted_function, a1, b1, result, abserr, ! &resabs, &resasc); if (*abserr == resasc) ! { ! *err_reliable = 0; ! } else ! { ! *err_reliable = 1; ! } return; --- 139,152 ---- gsl_integration_qk15 (&weighted_function, a1, b1, result, abserr, ! &resabs, &resasc); if (*abserr == resasc) ! { ! *err_reliable = 0; ! } else ! { ! *err_reliable = 1; ! } return; *************** *** 218,222 **** static void compute_result (const double * r, const double * cheb12, const double * cheb24, ! double * result12, double * result24) { size_t i; --- 218,222 ---- static void compute_result (const double * r, const double * cheb12, const double * cheb24, ! double * result12, double * result24) { size_t i; diff -x.info* -rc2P gsl-1.3/integration/qcheb.c gsl-1.4/integration/qcheb.c *** gsl-1.3/integration/qcheb.c Mon Apr 29 19:05:30 2002 --- gsl-1.4/integration/qcheb.c Fri Jul 25 15:18:11 2003 *************** *** 37,50 **** const double x[11] = { 0.9914448613738104, ! 0.9659258262890683, ! 0.9238795325112868, ! 0.8660254037844386, ! 0.7933533402912352, ! 0.7071067811865475, ! 0.6087614290087206, ! 0.5000000000000000, ! 0.3826834323650898, ! 0.2588190451025208, ! 0.1305261922200516 }; const double center = 0.5 * (b + a); --- 37,50 ---- const double x[11] = { 0.9914448613738104, ! 0.9659258262890683, ! 0.9238795325112868, ! 0.8660254037844386, ! 0.7933533402912352, ! 0.7071067811865475, ! 0.6087614290087206, ! 0.5000000000000000, ! 0.3826834323650898, ! 0.2588190451025208, ! 0.1305261922200516 }; const double center = 0.5 * (b + a); *************** *** 118,122 **** { const double alam = (x[0] * v[1] + x[2] * v[3] + x[4] * v[5] ! + x[6] * v[7] + x[8] * v[9] + x[10] * v[11]); cheb24[1] = cheb12[1] + alam; cheb24[23] = cheb12[1] - alam; --- 118,122 ---- { const double alam = (x[0] * v[1] + x[2] * v[3] + x[4] * v[5] ! + x[6] * v[7] + x[8] * v[9] + x[10] * v[11]); cheb24[1] = cheb12[1] + alam; cheb24[23] = cheb12[1] - alam; *************** *** 125,129 **** { const double alam = (x[10] * v[1] - x[8] * v[3] + x[6] * v[5] ! - x[4] * v[7] + x[2] * v[9] - x[0] * v[11]); cheb24[11] = cheb12[11] + alam; cheb24[13] = cheb12[11] - alam; --- 125,129 ---- { const double alam = (x[10] * v[1] - x[8] * v[3] + x[6] * v[5] ! - x[4] * v[7] + x[2] * v[9] - x[0] * v[11]); cheb24[11] = cheb12[11] + alam; cheb24[13] = cheb12[11] - alam; *************** *** 132,136 **** { const double alam = (x[4] * v[1] - x[8] * v[3] - x[0] * v[5] ! - x[10] * v[7] + x[2] * v[9] + x[6] * v[11]); cheb24[5] = cheb12[5] + alam; cheb24[19] = cheb12[5] - alam; --- 132,136 ---- { const double alam = (x[4] * v[1] - x[8] * v[3] - x[0] * v[5] ! - x[10] * v[7] + x[2] * v[9] + x[6] * v[11]); cheb24[5] = cheb12[5] + alam; cheb24[19] = cheb12[5] - alam; *************** *** 139,143 **** { const double alam = (x[6] * v[1] - x[2] * v[3] - x[10] * v[5] ! + x[0] * v[7] - x[8] * v[9] - x[4] * v[11]); cheb24[7] = cheb12[7] + alam; cheb24[17] = cheb12[7] - alam; --- 139,143 ---- { const double alam = (x[6] * v[1] - x[2] * v[3] - x[10] * v[5] ! + x[0] * v[7] - x[8] * v[9] - x[4] * v[11]); cheb24[7] = cheb12[7] + alam; cheb24[17] = cheb12[7] - alam; diff -x.info* -rc2P gsl-1.3/integration/qelg.c gsl-1.4/integration/qelg.c *** gsl-1.3/integration/qelg.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qelg.c Fri Jul 25 15:18:11 2003 *************** *** 114,127 **** if (err2 <= tol2 && err3 <= tol3) ! { ! /* If e0, e1 and e2 are equal to within machine accuracy, ! convergence is assumed. */ ! ! *result = res; ! absolute = err2 + err3; ! relative = 5 * GSL_DBL_EPSILON * fabs (res); ! *abserr = GSL_MAX_DBL (absolute, relative); ! return; ! } e3 = epstab[n - 2 * i]; --- 114,127 ---- if (err2 <= tol2 && err3 <= tol3) ! { ! /* If e0, e1 and e2 are equal to within machine accuracy, ! convergence is assumed. */ ! ! *result = res; ! absolute = err2 + err3; ! relative = 5 * GSL_DBL_EPSILON * fabs (res); ! *abserr = GSL_MAX_DBL (absolute, relative); ! return; ! } e3 = epstab[n - 2 * i]; *************** *** 135,142 **** if (err1 <= tol1 || err2 <= tol2 || err3 <= tol3) ! { ! n_final = 2 * i; ! break; ! } ss = (1 / delta1 + 1 / delta2) - 1 / delta3; --- 135,142 ---- if (err1 <= tol1 || err2 <= tol2 || err3 <= tol3) ! { ! n_final = 2 * i; ! break; ! } ss = (1 / delta1 + 1 / delta2) - 1 / delta3; *************** *** 147,154 **** if (fabs (ss * e1) <= 0.0001) ! { ! n_final = 2 * i; ! break; ! } /* Compute a new element and eventually adjust the value of --- 147,154 ---- if (fabs (ss * e1) <= 0.0001) ! { ! n_final = 2 * i; ! break; ! } /* Compute a new element and eventually adjust the value of *************** *** 159,169 **** { ! const double error = err2 + fabs (res - e2) + err3; ! if (error <= *abserr) ! { ! *abserr = error; ! *result = res; ! } } } --- 159,169 ---- { ! const double error = err2 + fabs (res - e2) + err3; ! if (error <= *abserr) ! { ! *abserr = error; ! *result = res; ! } } } *************** *** 176,180 **** if (n_final == limexp) { ! n_final = 2 * (limexp / 2); } } --- 176,180 ---- if (n_final == limexp) { ! n_final = 2 * (limexp / 2); } } *************** *** 183,196 **** { for (i = 0; i <= newelm; i++) ! { ! epstab[1 + i * 2] = epstab[i * 2 + 3]; ! } } else { for (i = 0; i <= newelm; i++) ! { ! epstab[i * 2] = epstab[i * 2 + 2]; ! } } --- 183,196 ---- { for (i = 0; i <= newelm; i++) ! { ! epstab[1 + i * 2] = epstab[i * 2 + 3]; ! } } else { for (i = 0; i <= newelm; i++) ! { ! epstab[i * 2] = epstab[i * 2 + 2]; ! } } *************** *** 198,204 **** { for (i = 0; i <= n_final; i++) ! { ! epstab[i] = epstab[n_orig - n_final + i]; ! } } --- 198,204 ---- { for (i = 0; i <= n_final; i++) ! { ! epstab[i] = epstab[n_orig - n_final + i]; ! } } *************** *** 211,217 **** } else ! { /* Compute error estimate */ *abserr = (fabs (*result - res3la[2]) + fabs (*result - res3la[1]) ! + fabs (*result - res3la[0])); res3la[0] = res3la[1]; --- 211,217 ---- } else ! { /* Compute error estimate */ *abserr = (fabs (*result - res3la[2]) + fabs (*result - res3la[1]) ! + fabs (*result - res3la[0])); res3la[0] = res3la[1]; diff -x.info* -rc2P gsl-1.3/integration/qk.c gsl-1.4/integration/qk.c *** gsl-1.3/integration/qk.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk.c Fri Jul 25 15:18:11 2003 *************** *** 54,58 **** for (j = 0; j < (n - 1) / 2; j++) { ! const int jtw = j * 2 + 1; /* j=1,2,3 jtw=2,4,6 */ const double abscissa = half_length * xgk[jtw]; const double fval1 = GSL_FN_EVAL (f, center - abscissa); --- 54,58 ---- for (j = 0; j < (n - 1) / 2; j++) { ! const int jtw = j * 2 + 1; /* j=1,2,3 jtw=2,4,6 */ const double abscissa = half_length * xgk[jtw]; const double fval1 = GSL_FN_EVAL (f, center - abscissa); diff -x.info* -rc2P gsl-1.3/integration/qk15.c gsl-1.4/integration/qk15.c *** gsl-1.3/integration/qk15.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk15.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[8] = /* abscissae of the 15-point kronrod rule */ { 0.991455371120812639206854697526329, --- 25,29 ---- L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[8] = /* abscissae of the 15-point kronrod rule */ { 0.991455371120812639206854697526329, *************** *** 40,44 **** xgk[0], xgk[2], ... abscissae to optimally extend the 7-point gauss rule */ ! static const double wg[4] = /* weights of the 7-point gauss rule */ { 0.129484966168869693270611432679082, --- 40,44 ---- xgk[0], xgk[2], ... abscissae to optimally extend the 7-point gauss rule */ ! static const double wg[4] = /* weights of the 7-point gauss rule */ { 0.129484966168869693270611432679082, *************** *** 48,52 **** }; ! static const double wgk[8] = /* weights of the 15-point kronrod rule */ { 0.022935322010529224963732008058970, --- 48,52 ---- }; ! static const double wgk[8] = /* weights of the 15-point kronrod rule */ { 0.022935322010529224963732008058970, diff -x.info* -rc2P gsl-1.3/integration/qk21.c gsl-1.4/integration/qk21.c *** gsl-1.3/integration/qk21.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk21.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[11] = /* abscissae of the 21-point kronrod rule */ { 0.995657163025808080735527280689003, --- 25,29 ---- L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[11] = /* abscissae of the 21-point kronrod rule */ { 0.995657163025808080735527280689003, *************** *** 43,47 **** xgk[0], xgk[2], ... abscissae to optimally extend the 10-point gauss rule */ ! static const double wg[5] = /* weights of the 10-point gauss rule */ { 0.066671344308688137593568809893332, --- 43,47 ---- xgk[0], xgk[2], ... abscissae to optimally extend the 10-point gauss rule */ ! static const double wg[5] = /* weights of the 10-point gauss rule */ { 0.066671344308688137593568809893332, *************** *** 52,56 **** }; ! static const double wgk[11] = /* weights of the 21-point kronrod rule */ { 0.011694638867371874278064396062192, --- 52,56 ---- }; ! static const double wgk[11] = /* weights of the 21-point kronrod rule */ { 0.011694638867371874278064396062192, *************** *** 70,75 **** void gsl_integration_qk21 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[11], fv2[11]; --- 70,75 ---- void gsl_integration_qk21 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[11], fv2[11]; diff -x.info* -rc2P gsl-1.3/integration/qk31.c gsl-1.4/integration/qk31.c *** gsl-1.3/integration/qk31.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk31.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[16] = /* abscissae of the 31-point kronrod rule */ { 0.998002298693397060285172840152271, --- 25,29 ---- L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[16] = /* abscissae of the 31-point kronrod rule */ { 0.998002298693397060285172840152271, *************** *** 48,52 **** xgk[0], xgk[2], ... abscissae to optimally extend the 15-point gauss rule */ ! static const double wg[8] = /* weights of the 15-point gauss rule */ { 0.030753241996117268354628393577204, --- 48,52 ---- xgk[0], xgk[2], ... abscissae to optimally extend the 15-point gauss rule */ ! static const double wg[8] = /* weights of the 15-point gauss rule */ { 0.030753241996117268354628393577204, *************** *** 60,64 **** }; ! static const double wgk[16] = /* weights of the 31-point kronrod rule */ { 0.005377479872923348987792051430128, --- 60,64 ---- }; ! static const double wgk[16] = /* weights of the 31-point kronrod rule */ { 0.005377479872923348987792051430128, diff -x.info* -rc2P gsl-1.3/integration/qk41.c gsl-1.4/integration/qk41.c *** gsl-1.3/integration/qk41.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk41.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[21] = /* abscissae of the 41-point kronrod rule */ { 0.998859031588277663838315576545863, --- 25,29 ---- L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[21] = /* abscissae of the 41-point kronrod rule */ { 0.998859031588277663838315576545863, *************** *** 53,57 **** xgk[0], xgk[2], ... abscissae to optimally extend the 20-point gauss rule */ ! static const double wg[11] = /* weights of the 20-point gauss rule */ { 0.017614007139152118311861962351853, --- 53,57 ---- xgk[0], xgk[2], ... abscissae to optimally extend the 20-point gauss rule */ ! static const double wg[11] = /* weights of the 20-point gauss rule */ { 0.017614007139152118311861962351853, *************** *** 67,71 **** }; ! static const double wgk[21] = /* weights of the 41-point kronrod rule */ { 0.003073583718520531501218293246031, --- 67,71 ---- }; ! static const double wgk[21] = /* weights of the 41-point kronrod rule */ { 0.003073583718520531501218293246031, *************** *** 94,99 **** void gsl_integration_qk41 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[21], fv2[21]; --- 94,99 ---- void gsl_integration_qk41 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[21], fv2[21]; diff -x.info* -rc2P gsl-1.3/integration/qk51.c gsl-1.4/integration/qk51.c *** gsl-1.3/integration/qk51.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk51.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[26] = /* abscissae of the 51-point kronrod rule */ { 0.999262104992609834193457486540341, --- 25,29 ---- L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[26] = /* abscissae of the 51-point kronrod rule */ { 0.999262104992609834193457486540341, *************** *** 58,62 **** xgk[0], xgk[2], ... abscissae to optimally extend the 25-point gauss rule */ ! static const double wg[13] = /* weights of the 25-point gauss rule */ { 0.011393798501026287947902964113235, --- 58,62 ---- xgk[0], xgk[2], ... abscissae to optimally extend the 25-point gauss rule */ ! static const double wg[13] = /* weights of the 25-point gauss rule */ { 0.011393798501026287947902964113235, *************** *** 75,79 **** }; ! static const double wgk[26] = /* weights of the 51-point kronrod rule */ { 0.001987383892330315926507851882843, --- 75,79 ---- }; ! static const double wgk[26] = /* weights of the 51-point kronrod rule */ { 0.001987383892330315926507851882843, *************** *** 109,114 **** void gsl_integration_qk51 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[26], fv2[26]; --- 109,114 ---- void gsl_integration_qk51 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[26], fv2[26]; diff -x.info* -rc2P gsl-1.3/integration/qk61.c gsl-1.4/integration/qk61.c *** gsl-1.3/integration/qk61.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qk61.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[31] = /* abscissae of the 61-point kronrod rule */ { 0.999484410050490637571325895705811, --- 25,29 ---- L. W. Fullerton, Bell Labs, Nov. 1981. */ ! static const double xgk[31] = /* abscissae of the 61-point kronrod rule */ { 0.999484410050490637571325895705811, *************** *** 63,67 **** xgk[0], xgk[2], ... abscissae to optimally extend the 30-point gauss rule */ ! static const double wg[15] = /* weights of the 30-point gauss rule */ { 0.007968192496166605615465883474674, --- 63,67 ---- xgk[0], xgk[2], ... abscissae to optimally extend the 30-point gauss rule */ ! static const double wg[15] = /* weights of the 30-point gauss rule */ { 0.007968192496166605615465883474674, *************** *** 82,86 **** }; ! static const double wgk[31] = /* weights of the 61-point kronrod rule */ { 0.001389013698677007624551591226760, --- 82,86 ---- }; ! static const double wgk[31] = /* weights of the 61-point kronrod rule */ { 0.001389013698677007624551591226760, *************** *** 119,124 **** void gsl_integration_qk61 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[31], fv2[31]; --- 119,124 ---- void gsl_integration_qk61 (const gsl_function * f, double a, double b, ! double *result, double *abserr, ! double *resabs, double *resasc) { double fv1[31], fv2[31]; diff -x.info* -rc2P gsl-1.3/integration/qmomo.c gsl-1.4/integration/qmomo.c *** gsl-1.3/integration/qmomo.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qmomo.c Fri Jul 25 15:18:11 2003 *************** *** 25,29 **** static void initialise (double * ri, double * rj, double * rg, double * rh, ! double alpha, double beta); gsl_integration_qaws_table * --- 25,29 ---- static void initialise (double * ri, double * rj, double * rg, double * rh, ! double alpha, double beta); gsl_integration_qaws_table * *************** *** 58,62 **** { GSL_ERROR_VAL ("failed to allocate space for qaws_table struct", ! GSL_ENOMEM, 0); } --- 58,62 ---- { GSL_ERROR_VAL ("failed to allocate space for qaws_table struct", ! GSL_ENOMEM, 0); } *************** *** 115,119 **** static void initialise (double * ri, double * rj, double * rg, double * rh, ! double alpha, double beta) { const double alpha_p1 = alpha + 1.0; --- 115,119 ---- static void initialise (double * ri, double * rj, double * rg, double * rh, ! double alpha, double beta) { const double alpha_p1 = alpha + 1.0; *************** *** 139,143 **** { ri[i] = -(r_alpha + an * (an - alpha_p2) * ri[i - 1]) ! / (anm1 * (an + alpha_p1)); anm1 = an; an = an + 1.0; --- 139,143 ---- { ri[i] = -(r_alpha + an * (an - alpha_p2) * ri[i - 1]) ! / (anm1 * (an + alpha_p1)); anm1 = an; an = an + 1.0; *************** *** 153,157 **** { rj[i] = -(r_beta + an * (an - beta_p2) * rj[i - 1]) ! / (anm1 * (an + beta_p1)); anm1 = an; an = an + 1.0; --- 153,157 ---- { rj[i] = -(r_beta + an * (an - beta_p2) * rj[i - 1]) ! / (anm1 * (an + beta_p1)); anm1 = an; an = an + 1.0; *************** *** 167,171 **** { rg[i] = -(an * (an - alpha_p2) * rg[i - 1] - an * ri[i - 1] ! + anm1 * ri[i]) / (anm1 * (an + alpha_p1)); anm1 = an; an = an + 1.0; --- 167,171 ---- { rg[i] = -(an * (an - alpha_p2) * rg[i - 1] - an * ri[i - 1] ! + anm1 * ri[i]) / (anm1 * (an + alpha_p1)); anm1 = an; an = an + 1.0; *************** *** 181,185 **** { rh[i] = -(an * (an - beta_p2) * rh[i - 1] - an * rj[i - 1] ! + anm1 * rj[i]) / (anm1 * (an + beta_p1)); anm1 = an; an = an + 1.0; --- 181,185 ---- { rh[i] = -(an * (an - beta_p2) * rh[i - 1] - an * rj[i - 1] ! + anm1 * rj[i]) / (anm1 * (an + beta_p1)); anm1 = an; an = an + 1.0; diff -x.info* -rc2P gsl-1.3/integration/qmomof.c gsl-1.4/integration/qmomof.c *** gsl-1.3/integration/qmomof.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qmomof.c Fri Jul 25 15:18:11 2003 *************** *** 31,36 **** gsl_integration_qawo_table * gsl_integration_qawo_table_alloc (double omega, double L, ! enum gsl_integration_qawo_enum sine, ! size_t n) { gsl_integration_qawo_table *t; --- 31,36 ---- gsl_integration_qawo_table * gsl_integration_qawo_table_alloc (double omega, double L, ! enum gsl_integration_qawo_enum sine, ! size_t n) { gsl_integration_qawo_table *t; *************** *** 40,44 **** { GSL_ERROR_VAL ("table length n must be positive integer", ! GSL_EDOM, 0); } --- 40,44 ---- { GSL_ERROR_VAL ("table length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 49,53 **** { GSL_ERROR_VAL ("failed to allocate space for qawo_table struct", ! GSL_ENOMEM, 0); } --- 49,53 ---- { GSL_ERROR_VAL ("failed to allocate space for qawo_table struct", ! GSL_ENOMEM, 0); } *************** *** 58,62 **** free (t); GSL_ERROR_VAL ("failed to allocate space for chebmo block", ! GSL_ENOMEM, 0); } --- 58,62 ---- free (t); GSL_ERROR_VAL ("failed to allocate space for chebmo block", ! GSL_ENOMEM, 0); } *************** *** 86,91 **** int gsl_integration_qawo_table_set (gsl_integration_qawo_table * t, ! double omega, double L, ! enum gsl_integration_qawo_enum sine) { t->omega = omega; --- 86,91 ---- int gsl_integration_qawo_table_set (gsl_integration_qawo_table * t, ! double omega, double L, ! enum gsl_integration_qawo_enum sine) { t->omega = omega; *************** *** 113,117 **** int gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t, ! double L) { /* return immediately if the length is the same as the old length */ --- 113,117 ---- int gsl_integration_qawo_table_set_length (gsl_integration_qawo_table * t, ! double L) { /* return immediately if the length is the same as the old length */ *************** *** 173,177 **** v[1] = (8 * cospar + (2 * par2 - 8) * sinpar / par) / par2; v[2] = (32 * (par2 - 12) * cospar ! + (2 * ((par2 - 80) * par2 + 192) * sinpar) / par) / par4; if (fabs (par) <= 24) --- 173,177 ---- v[1] = (8 * cospar + (2 * par2 - 8) * sinpar / par) / par2; v[2] = (32 * (par2 - 12) * cospar ! + (2 * ((par2 - 80) * par2 + 192) * sinpar) / par) / par4; if (fabs (par) <= 24) *************** *** 185,196 **** for (k = 0; k < noeq - 1; k++) ! { ! an2 = an * an; ! d[k] = -2 * (an2 - 4) * (par22 - 2 * an2); ! d2[k] = (an - 1) * (an - 2) * par2; ! d1[k + 1] = (an + 3) * (an + 4) * par2; ! v[k + 3] = as - (an2 - 4) * ac; ! an = an + 2.0; ! } an2 = an * an; --- 185,196 ---- for (k = 0; k < noeq - 1; k++) ! { ! an2 = an * an; ! d[k] = -2 * (an2 - 4) * (par22 - 2 * an2); ! d2[k] = (an - 1) * (an - 2) * par2; ! d1[k + 1] = (an + 3) * (an + 4) * par2; ! v[k + 3] = as - (an2 - 4) * ac; ! an = an + 2.0; ! } an2 = an * an; *************** *** 202,208 **** ass = par * sinpar; asap = (((((210 * par2 - 1) * cospar - (105 * par2 - 63) * ass) / an2 ! - (1 - 15 * par2) * cospar + 15 * ass) / an2 ! - cospar + 3 * ass) / an2 ! - cospar) / an2; v[noeq + 2] = v[noeq + 2] - 2 * asap * par2 * (an - 1) * (an - 2); --- 202,208 ---- ass = par * sinpar; asap = (((((210 * par2 - 1) * cospar - (105 * par2 - 63) * ass) / an2 ! - (1 - 15 * par2) * cospar + 15 * ass) / an2 ! - cospar + 3 * ass) / an2 ! - cospar) / an2; v[noeq + 2] = v[noeq + 2] - 2 * asap * par2 * (an - 1) * (an - 2); *************** *** 217,227 **** for (k = 3; k < 13; k++) ! { ! double an2 = an * an; ! v[k] = ((an2 - 4) * (2 * (par22 - 2 * an2) * v[k - 1] - ac) ! + as - par2 * (an + 1) * (an + 2) * v[k - 2]) ! / (par2 * (an - 1) * (an - 2)); ! an = an + 2.0; ! } } --- 217,227 ---- for (k = 3; k < 13; k++) ! { ! double an2 = an * an; ! v[k] = ((an2 - 4) * (2 * (par22 - 2 * an2) * v[k - 1] - ac) ! + as - par2 * (an + 1) * (an + 2) * v[k - 2]) ! / (par2 * (an - 1) * (an - 2)); ! an = an + 2.0; ! } } *************** *** 250,261 **** for (k = 0; k < noeq - 1; k++) ! { ! an2 = an * an; ! d[k] = -2 * (an2 - 4) * (par22 - 2 * an2); ! d2[k] = (an - 1) * (an - 2) * par2; ! d1[k + 1] = (an + 3) * (an + 4) * par2; ! v[k + 2] = ac + (an2 - 4) * as; ! an = an + 2.0; ! } an2 = an * an; --- 250,261 ---- for (k = 0; k < noeq - 1; k++) ! { ! an2 = an * an; ! d[k] = -2 * (an2 - 4) * (par22 - 2 * an2); ! d2[k] = (an - 1) * (an - 2) * par2; ! d1[k + 1] = (an + 3) * (an + 4) * par2; ! v[k + 2] = ac + (an2 - 4) * as; ! an = an + 2.0; ! } an2 = an * an; *************** *** 267,272 **** ass = par * cospar; asap = (((((105 * par2 - 63) * ass - (210 * par2 - 1) * sinpar) / an2 ! + (15 * par2 - 1) * sinpar ! - 15 * ass) / an2 - sinpar - 3 * ass) / an2 - sinpar) / an2; v[noeq + 1] = v[noeq + 1] - 2 * asap * par2 * (an - 1) * (an - 2); --- 267,272 ---- ass = par * cospar; asap = (((((105 * par2 - 63) * ass - (210 * par2 - 1) * sinpar) / an2 ! + (15 * par2 - 1) * sinpar ! - 15 * ass) / an2 - sinpar - 3 * ass) / an2 - sinpar) / an2; v[noeq + 1] = v[noeq + 1] - 2 * asap * par2 * (an - 1) * (an - 2); *************** *** 280,290 **** double an = 3; for (k = 2; k < 12; k++) ! { ! double an2 = an * an; ! v[k] = ((an2 - 4) * (2 * (par22 - 2 * an2) * v[k - 1] + as) ! + ac - par2 * (an + 1) * (an + 2) * v[k - 2]) ! / (par2 * (an - 1) * (an - 2)); ! an = an + 2.0; ! } } --- 280,290 ---- double an = 3; for (k = 2; k < 12; k++) ! { ! double an2 = an * an; ! v[k] = ((an2 - 4) * (2 * (par22 - 2 * an2) * v[k - 1] + as) ! + ac - par2 * (an + 1) * (an + 2) * v[k - 2]) ! / (par2 * (an - 1) * (an - 2)); ! an = an + 2.0; ! } } *************** *** 331,369 **** if (fabs (c[k1]) >= fabs (c[k])) ! { ! { ! double t = c[k1]; ! c[k1] = c[k]; ! c[k] = t; ! }; ! { ! double t = d[k1]; ! d[k1] = d[k]; ! d[k] = t; ! }; ! { ! double t = e[k1]; ! e[k1] = e[k]; ! e[k] = t; ! }; ! { ! double t = b[k1]; ! b[k1] = b[k]; ! b[k] = t; ! }; ! } if (c[k] == 0) ! { ! return GSL_FAILURE ; ! } { ! double t = -c[k1] / c[k]; ! c[k1] = d[k1] + t * d[k]; ! d[k1] = e[k1] + t * e[k]; ! e[k1] = 0; ! b[k1] = b[k1] + t * b[k]; } --- 331,369 ---- if (fabs (c[k1]) >= fabs (c[k])) ! { ! { ! double t = c[k1]; ! c[k1] = c[k]; ! c[k] = t; ! }; ! { ! double t = d[k1]; ! d[k1] = d[k]; ! d[k] = t; ! }; ! { ! double t = e[k1]; ! e[k1] = e[k]; ! e[k] = t; ! }; ! { ! double t = b[k1]; ! b[k1] = b[k]; ! b[k] = t; ! }; ! } if (c[k] == 0) ! { ! return GSL_FAILURE ; ! } { ! double t = -c[k1] / c[k]; ! c[k1] = d[k1] + t * d[k]; ! d[k1] = e[k1] + t * e[k]; ! e[k1] = 0; ! b[k1] = b[k1] + t * b[k]; } diff -x.info* -rc2P gsl-1.3/integration/qng.c gsl-1.4/integration/qng.c *** gsl-1.3/integration/qng.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qng.c Fri Jul 25 15:18:11 2003 *************** *** 30,40 **** int gsl_integration_qng (const gsl_function *f, ! double a, double b, ! double epsabs, double epsrel, ! double * result, double * abserr, size_t * neval) { double fv1[5], fv2[5], fv3[5], fv4[5]; double savfun[21]; /* array of function values which have been computed */ ! double res10, res21, res43, res87; /* 10, 21, 43 and 87 point results */ double result_kronrod, err ; double resabs; /* approximation to the integral of abs(f) */ --- 30,40 ---- int gsl_integration_qng (const gsl_function *f, ! double a, double b, ! double epsabs, double epsrel, ! double * result, double * abserr, size_t * neval) { double fv1[5], fv2[5], fv3[5], fv4[5]; double savfun[21]; /* array of function values which have been computed */ ! double res10, res21, res43, res87; /* 10, 21, 43 and 87 point results */ double result_kronrod, err ; double resabs; /* approximation to the integral of abs(f) */ *************** *** 54,58 **** * neval = 0; GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); }; --- 54,58 ---- * neval = 0; GSL_ERROR ("tolerance cannot be acheived with given epsabs and epsrel", ! GSL_EBADTOL); }; *************** *** 99,105 **** for (k = 0; k < 5; k++) { ! resasc += ! (w21a[k] * (fabs (fv1[k] - mean) + fabs (fv2[k] - mean)) ! + w21b[k] * (fabs (fv3[k] - mean) + fabs (fv4[k] - mean))); } resasc *= abs_half_length ; --- 99,105 ---- for (k = 0; k < 5; k++) { ! resasc += ! (w21a[k] * (fabs (fv1[k] - mean) + fabs (fv2[k] - mean)) ! + w21b[k] * (fabs (fv3[k] - mean) + fabs (fv4[k] - mean))); } resasc *= abs_half_length ; *************** *** 133,137 **** const double abscissa = half_length * x3[k]; const double fval = (GSL_FN_EVAL(f, center + abscissa) ! + GSL_FN_EVAL(f, center - abscissa)); res43 += fval * w43b[k]; savfun[k + 10] = fval; --- 133,137 ---- const double abscissa = half_length * x3[k]; const double fval = (GSL_FN_EVAL(f, center + abscissa) ! + GSL_FN_EVAL(f, center - abscissa)); res43 += fval * w43b[k]; savfun[k + 10] = fval; *************** *** 164,168 **** const double abscissa = half_length * x4[k]; res87 += w87b[k] * (GSL_FN_EVAL(f, center + abscissa) ! + GSL_FN_EVAL(f, center - abscissa)); } --- 164,168 ---- const double abscissa = half_length * x4[k]; res87 += w87b[k] * (GSL_FN_EVAL(f, center + abscissa) ! + GSL_FN_EVAL(f, center - abscissa)); } diff -x.info* -rc2P gsl-1.3/integration/qpsrt2.c gsl-1.4/integration/qpsrt2.c *** gsl-1.3/integration/qpsrt2.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/qpsrt2.c Fri Jul 25 15:18:11 2003 *************** *** 54,60 **** if (level[i_max] < workspace->maximum_level) ! { ! return 1; ! } workspace->nrmax++; --- 54,60 ---- if (level[i_max] < workspace->maximum_level) ! { ! return 1; ! } workspace->nrmax++; diff -x.info* -rc2P gsl-1.3/integration/set_initial.c gsl-1.4/integration/set_initial.c *** gsl-1.3/integration/set_initial.c Mon Jul 2 14:15:32 2001 --- gsl-1.4/integration/set_initial.c Fri Jul 25 15:18:11 2003 *************** *** 1,9 **** static inline void set_initial_result (gsl_integration_workspace * workspace, ! double result, double error); static inline void set_initial_result (gsl_integration_workspace * workspace, ! double result, double error) { workspace->size = 1; --- 1,9 ---- static inline void set_initial_result (gsl_integration_workspace * workspace, ! double result, double error); static inline void set_initial_result (gsl_integration_workspace * workspace, ! double result, double error) { workspace->size = 1; diff -x.info* -rc2P gsl-1.3/integration/test.c gsl-1.4/integration/test.c *** gsl-1.3/integration/test.c Sun Jul 14 12:14:19 2002 --- gsl-1.4/integration/test.c Fri Jul 25 15:18:11 2003 *************** *** 72,76 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); int main (void) --- 72,76 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); int main (void) *************** *** 92,96 **** gsl_integration_qk15 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) smooth abserr") ; --- 92,96 ---- gsl_integration_qk15 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) smooth abserr") ; *************** *** 99,103 **** gsl_integration_qk15 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f1) reverse result") ; --- 99,103 ---- gsl_integration_qk15 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f1) reverse result") ; *************** *** 118,122 **** gsl_integration_qk21 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) smooth abserr") ; --- 118,122 ---- gsl_integration_qk21 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) smooth abserr") ; *************** *** 125,129 **** gsl_integration_qk21 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) reverse abserr") ; --- 125,129 ---- gsl_integration_qk21 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) reverse abserr") ; *************** *** 143,147 **** gsl_integration_qk31 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) smooth abserr") ; --- 143,147 ---- gsl_integration_qk31 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) smooth abserr") ; *************** *** 150,154 **** gsl_integration_qk31 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) reverse abserr") ; --- 150,154 ---- gsl_integration_qk31 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) reverse abserr") ; *************** *** 168,172 **** gsl_integration_qk41 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) smooth abserr") ; --- 168,172 ---- gsl_integration_qk41 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) smooth abserr") ; *************** *** 175,179 **** gsl_integration_qk41 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; --- 175,179 ---- gsl_integration_qk41 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; *************** *** 193,197 **** gsl_integration_qk51 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk51(f1) smooth abserr") ; --- 193,197 ---- gsl_integration_qk51 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk51(f1) smooth abserr") ; *************** *** 200,204 **** gsl_integration_qk51 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk51(f1) reverse abserr") ; --- 200,204 ---- gsl_integration_qk51 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk51(f1) reverse abserr") ; *************** *** 218,222 **** gsl_integration_qk61 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk61(f1) smooth abserr") ; --- 218,222 ---- gsl_integration_qk61 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk61(f1) smooth abserr") ; *************** *** 225,229 **** gsl_integration_qk61 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk61(f1) reverse abserr") ; --- 225,229 ---- gsl_integration_qk61 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk61(f1) reverse abserr") ; *************** *** 247,251 **** gsl_integration_qk15 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) singular abserr") ; --- 247,251 ---- gsl_integration_qk15 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) singular abserr") ; *************** *** 254,258 **** gsl_integration_qk15 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) reverse abserr") ; --- 254,258 ---- gsl_integration_qk15 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f1) reverse abserr") ; *************** *** 272,276 **** gsl_integration_qk21 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) singular abserr") ; --- 272,276 ---- gsl_integration_qk21 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) singular abserr") ; *************** *** 279,283 **** gsl_integration_qk21 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) reverse abserr") ; --- 279,283 ---- gsl_integration_qk21 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk21(f1) reverse abserr") ; *************** *** 297,301 **** gsl_integration_qk31 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) singular abserr") ; --- 297,301 ---- gsl_integration_qk31 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) singular abserr") ; *************** *** 304,308 **** gsl_integration_qk31 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) reverse abserr") ; --- 304,308 ---- gsl_integration_qk31 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f1) reverse abserr") ; *************** *** 322,326 **** gsl_integration_qk41 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) singular abserr") ; --- 322,326 ---- gsl_integration_qk41 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) singular abserr") ; *************** *** 329,333 **** gsl_integration_qk41 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; --- 329,333 ---- gsl_integration_qk41 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f1) reverse abserr") ; *************** *** 347,351 **** gsl_integration_qk51 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) singular abserr") ; --- 347,351 ---- gsl_integration_qk51 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) singular abserr") ; *************** *** 354,358 **** gsl_integration_qk51 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) reverse abserr") ; --- 354,358 ---- gsl_integration_qk51 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f1) reverse abserr") ; *************** *** 372,376 **** gsl_integration_qk61 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) singular abserr") ; --- 372,376 ---- gsl_integration_qk61 (&f, 0.0, 1.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f1) singular result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) singular abserr") ; *************** *** 379,383 **** gsl_integration_qk61 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) reverse abserr") ; --- 379,383 ---- gsl_integration_qk61 (&f, 1.0, 0.0, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f1) reverse abserr") ; *************** *** 401,405 **** gsl_integration_qk15 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) oscill abserr") ; --- 401,405 ---- gsl_integration_qk15 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk15(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) oscill abserr") ; *************** *** 408,412 **** gsl_integration_qk15 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) reverse abserr") ; --- 408,412 ---- gsl_integration_qk15 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk15(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk15(f3) reverse abserr") ; *************** *** 426,430 **** gsl_integration_qk21 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) oscill abserr") ; --- 426,430 ---- gsl_integration_qk21 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk21(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) oscill abserr") ; *************** *** 433,437 **** gsl_integration_qk21 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) reverse abserr") ; --- 433,437 ---- gsl_integration_qk21 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk21(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qk21(f3) reverse abserr") ; *************** *** 451,455 **** gsl_integration_qk31 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) oscill abserr") ; --- 451,455 ---- gsl_integration_qk31 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk31(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) oscill abserr") ; *************** *** 458,462 **** gsl_integration_qk31 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) reverse abserr") ; --- 458,462 ---- gsl_integration_qk31 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk31(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk31(f3) reverse abserr") ; *************** *** 476,480 **** gsl_integration_qk41 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) oscill abserr") ; --- 476,480 ---- gsl_integration_qk41 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk41(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) oscill abserr") ; *************** *** 483,487 **** gsl_integration_qk41 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) reverse abserr") ; --- 483,487 ---- gsl_integration_qk41 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk41(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk41(f3) reverse abserr") ; *************** *** 501,505 **** gsl_integration_qk51 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) oscill abserr") ; --- 501,505 ---- gsl_integration_qk51 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk51(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) oscill abserr") ; *************** *** 508,512 **** gsl_integration_qk51 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) reverse abserr") ; --- 508,512 ---- gsl_integration_qk51 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk51(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk51(f3) reverse abserr") ; *************** *** 526,530 **** gsl_integration_qk61 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) oscill abserr") ; --- 526,530 ---- gsl_integration_qk61 (&f, 0.3, 2.71, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,exp_result,1e-15,"qk61(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) oscill abserr") ; *************** *** 533,537 **** gsl_integration_qk61 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) reverse abserr") ; --- 533,537 ---- gsl_integration_qk61 (&f, 2.71, 0.3, ! &result, &abserr, &resabs, &resasc) ; gsl_test_rel(result,-exp_result,1e-15,"qk61(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qk61(f3) reverse abserr") ; *************** *** 554,558 **** status = gsl_integration_qng (&f, 0.0, 1.0, 1e-1, 0.0, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) smooth abserr") ; --- 554,558 ---- status = gsl_integration_qng (&f, 0.0, 1.0, 1e-1, 0.0, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) smooth abserr") ; *************** *** 561,565 **** status = gsl_integration_qng (&f, 1.0, 0.0, 1e-1, 0.0, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) reverse abserr") ; --- 561,565 ---- status = gsl_integration_qng (&f, 1.0, 0.0, 1e-1, 0.0, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) reverse abserr") ; *************** *** 581,585 **** status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-9, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth 43pt result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) smooth 43pt abserr") ; --- 581,585 ---- status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-9, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) smooth 43pt result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) smooth 43pt abserr") ; *************** *** 588,592 **** status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-9, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse 43pt result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) reverse 43pt abserr") ; --- 588,592 ---- status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-9, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse 43pt result") ; gsl_test_rel(abserr,exp_abserr,1e-5,"qng(f1) reverse 43pt abserr") ; *************** *** 607,611 **** status = gsl_integration_qng (&f, 0.3, 2.71, 0.0, 1e-12, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qnq(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) oscill abserr") ; --- 607,611 ---- status = gsl_integration_qng (&f, 0.3, 2.71, 0.0, 1e-12, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qnq(f3) oscill result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) oscill abserr") ; *************** *** 614,618 **** status = gsl_integration_qng (&f, 2.71, 0.3, 0.0, 1e-12, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qnq(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) reverse abserr") ; --- 614,618 ---- status = gsl_integration_qng (&f, 2.71, 0.3, 0.0, 1e-12, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qnq(f3) reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f3) reverse abserr") ; *************** *** 634,638 **** status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-13, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) 87pt smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt smooth abserr") ; --- 634,638 ---- status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-13, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) 87pt smooth result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt smooth abserr") ; *************** *** 641,645 **** status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-13, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) 87pt reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt reverse abserr") ; --- 641,645 ---- status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-13, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) 87pt reverse result") ; gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) 87pt reverse abserr") ; *************** *** 661,665 **** status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-3, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) sing beyond 87pt result"); gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) sing beyond 87pt abserr"); --- 661,665 ---- status = gsl_integration_qng (&f, 0.0, 1.0, 0.0, 1e-3, ! &result, &abserr, &neval) ; gsl_test_rel(result,exp_result,1e-15,"qng(f1) sing beyond 87pt result"); gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) sing beyond 87pt abserr"); *************** *** 668,672 **** status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-3, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse beyond 87pt result"); gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) rev beyond 87pt abserr"); --- 668,672 ---- status = gsl_integration_qng (&f, 1.0, 0.0, 0.0, 1e-3, ! &result, &abserr, &neval) ; gsl_test_rel(result,-exp_result,1e-15,"qng(f1) reverse beyond 87pt result"); gsl_test_rel(abserr,exp_abserr,1e-7,"qng(f1) rev beyond 87pt abserr"); *************** *** 692,700 **** double b[6] = { 0.03125, 1, 0.5, 0.25, 0.125, 0.0625 } ; double r[6] = { 3.966769831709074375E-06, 5.491842501998222409E-02, ! 1.909827770934243926E-02, 2.776531175604360531E-03, ! 3.280661030752063693E-04, 3.522704932261797744E-05 } ; double e[6] = { 6.678528276336181873E-12, 6.097169993333454062E-16, ! 2.120334764359736934E-16, 3.082568839745514608E-17, ! 3.642265412331439511E-18, 3.910988124757650942E-19 } ; int order[6] = { 1, 2, 3, 4, 5, 6 } ; --- 692,700 ---- double b[6] = { 0.03125, 1, 0.5, 0.25, 0.125, 0.0625 } ; double r[6] = { 3.966769831709074375E-06, 5.491842501998222409E-02, ! 1.909827770934243926E-02, 2.776531175604360531E-03, ! 3.280661030752063693E-04, 3.522704932261797744E-05 } ; double e[6] = { 6.678528276336181873E-12, 6.097169993333454062E-16, ! 2.120334764359736934E-16, 3.082568839745514608E-17, ! 3.642265412331439511E-18, 3.910988124757650942E-19 } ; int order[6] = { 1, 2, 3, 4, 5, 6 } ; *************** *** 705,710 **** status = gsl_integration_qag (&fc, 0.0, 1.0, 0.0, 1e-10, w->limit, ! GSL_INTEG_GAUSS15, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f1) smooth result") ; --- 705,710 ---- status = gsl_integration_qag (&fc, 0.0, 1.0, 0.0, 1e-10, w->limit, ! GSL_INTEG_GAUSS15, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f1) smooth result") ; *************** *** 715,737 **** for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f1) smooth alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f1) smooth blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f1) smooth rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f1) smooth elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qag(f1) smooth order") ; p.neval = 0; status = gsl_integration_qag (&fc, 1.0, 0.0, 0.0, 1e-10, w->limit, ! GSL_INTEG_GAUSS15, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f1) reverse result") ; --- 715,737 ---- for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f1) smooth alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f1) smooth blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f1) smooth rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f1) smooth elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qag(f1) smooth order") ; p.neval = 0; status = gsl_integration_qag (&fc, 1.0, 0.0, 0.0, 1e-10, w->limit, ! GSL_INTEG_GAUSS15, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f1) reverse result") ; *************** *** 761,775 **** double a[8] = { 0, 0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, ! 0.0078125 } ; double b[8] = { 0.0078125, 1, 0.5, 0.25, 0.125, 0.0625, 0.03125, ! 0.015625 } ; double r[8] = { 3.696942726831556522E-08, 5.491842501998223103E-02, ! 1.909827770934243579E-02, 2.776531175604360097E-03, ! 3.280661030752062609E-04, 3.522704932261797744E-05, ! 3.579060884684503576E-06, 3.507395216921808047E-07 } ; double e[8] = { 1.371316364034059572E-15, 6.097169993333454062E-16, ! 2.120334764359736441E-16, 3.082568839745514608E-17, ! 3.642265412331439511E-18, 3.910988124757650460E-19, ! 3.973555800712018091E-20, 3.893990926286736620E-21 } ; int order[8] = { 1, 2, 3, 4, 5, 6, 7, 8 } ; --- 761,775 ---- double a[8] = { 0, 0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, ! 0.0078125 } ; double b[8] = { 0.0078125, 1, 0.5, 0.25, 0.125, 0.0625, 0.03125, ! 0.015625 } ; double r[8] = { 3.696942726831556522E-08, 5.491842501998223103E-02, ! 1.909827770934243579E-02, 2.776531175604360097E-03, ! 3.280661030752062609E-04, 3.522704932261797744E-05, ! 3.579060884684503576E-06, 3.507395216921808047E-07 } ; double e[8] = { 1.371316364034059572E-15, 6.097169993333454062E-16, ! 2.120334764359736441E-16, 3.082568839745514608E-17, ! 3.642265412331439511E-18, 3.910988124757650460E-19, ! 3.973555800712018091E-20, 3.893990926286736620E-21 } ; int order[8] = { 1, 2, 3, 4, 5, 6, 7, 8 } ; *************** *** 780,785 **** status = gsl_integration_qag (&fc, 0.0, 1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS21, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f1,21pt) smooth result") ; --- 780,785 ---- status = gsl_integration_qag (&fc, 0.0, 1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS21, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f1,21pt) smooth result") ; *************** *** 790,812 **** for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f1,21pt) smooth alist") ; for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f1,21pt) smooth blist") ; for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f1,21pt) smooth rlist") ; for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f1,21pt) smooth elist") ; for (i = 0; i < 8 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qag(f1,21pt) smooth order"); p.neval = 0; status = gsl_integration_qag (&fc, 1.0, 0.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS21, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f1,21pt) reverse result") ; --- 790,812 ---- for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f1,21pt) smooth alist") ; for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f1,21pt) smooth blist") ; for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f1,21pt) smooth rlist") ; for (i = 0; i < 8 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f1,21pt) smooth elist") ; for (i = 0; i < 8 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qag(f1,21pt) smooth order"); p.neval = 0; status = gsl_integration_qag (&fc, 1.0, 0.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS21, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f1,21pt) reverse result") ; *************** *** 841,846 **** status = gsl_integration_qag (&fc, 0.3, 2.71, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS31, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f3,31pt) oscill result"); --- 841,846 ---- status = gsl_integration_qag (&fc, 0.3, 2.71, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS31, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f3,31pt) oscill result"); *************** *** 852,857 **** p.neval = 0; status = gsl_integration_qag (&fc, 2.71, 0.3, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS31, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f3,31pt) reverse result"); --- 852,857 ---- p.neval = 0; status = gsl_integration_qag (&fc, 2.71, 0.3, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS31, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f3,31pt) reverse result"); *************** *** 883,888 **** status = gsl_integration_qag (&fc, -1.0, 1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS51, w, ! &result, &abserr) ; gsl_test_int((int)(p.neval),exp_neval,"qag(f16,51pt) sing neval") ; --- 883,888 ---- status = gsl_integration_qag (&fc, -1.0, 1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS51, w, ! &result, &abserr) ; gsl_test_int((int)(p.neval),exp_neval,"qag(f16,51pt) sing neval") ; *************** *** 892,897 **** p.neval = 0; status = gsl_integration_qag (&fc, 1.0, -1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS51, w, ! &result, &abserr) ; gsl_test_int((int)(p.neval),exp_neval,"qag(f16,51pt) rev neval") ; --- 892,897 ---- p.neval = 0; status = gsl_integration_qag (&fc, 1.0, -1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS51, w, ! &result, &abserr) ; gsl_test_int((int)(p.neval),exp_neval,"qag(f16,51pt) rev neval") ; *************** *** 918,923 **** double a[3] = { -5.000000000000000000E-01, ! 0.000000000000000000, ! -1.000000000000000000 } ; double b[3] = { 0.000000000000000000, --- 918,923 ---- double a[3] = { -5.000000000000000000E-01, ! 0.000000000000000000, ! -1.000000000000000000 } ; double b[3] = { 0.000000000000000000, *************** *** 940,945 **** status = gsl_integration_qag (&fc, -1.0, 1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS61, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f16,61pt) limit result") ; --- 940,945 ---- status = gsl_integration_qag (&fc, -1.0, 1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS61, w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qag(f16,61pt) limit result") ; *************** *** 950,971 **** for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f16,61pt) limit alist") ; for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f16,61pt) limit blist") ; for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f16,61pt) limit rlist") ; for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f16,61pt) limit elist") ; for (i = 0; i < 3 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qag(f16,61pt) limit order"); p.neval = 0; status = gsl_integration_qag (&fc, 1.0, -1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS61, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f16,61pt) reverse result") ; --- 950,971 ---- for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qag(f16,61pt) limit alist") ; for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qag(f16,61pt) limit blist") ; for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qag(f16,61pt) limit rlist") ; for (i = 0; i < 3 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qag(f16,61pt) limit elist") ; for (i = 0; i < 3 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qag(f16,61pt) limit order"); p.neval = 0; status = gsl_integration_qag (&fc, 1.0, -1.0, 1e-14, 0.0, w->limit, ! GSL_INTEG_GAUSS61, w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qag(f16,61pt) reverse result") ; *************** *** 996,1008 **** double b[5] = { 0.0625, 1, 0.5, 0.25, 0.125 } ; double r[5] = { 3.919381915366914693E-05, ! 5.491842501998223103E-02, ! 1.909827770934243579E-02, ! 2.776531175604360097E-03, ! 3.280661030752062609E-04 } ; double e[5] = { 2.215538742580964735E-12, ! 6.097169993333454062E-16, ! 2.120334764359736441E-16, ! 3.082568839745514608E-17, ! 3.642265412331439511E-18 } ; int order[5] = { 1, 2, 3, 4, 5 } ; --- 996,1008 ---- double b[5] = { 0.0625, 1, 0.5, 0.25, 0.125 } ; double r[5] = { 3.919381915366914693E-05, ! 5.491842501998223103E-02, ! 1.909827770934243579E-02, ! 2.776531175604360097E-03, ! 3.280661030752062609E-04 } ; double e[5] = { 2.215538742580964735E-12, ! 6.097169993333454062E-16, ! 2.120334764359736441E-16, ! 3.082568839745514608E-17, ! 3.642265412331439511E-18 } ; int order[5] = { 1, 2, 3, 4, 5 } ; *************** *** 1012,1017 **** status = gsl_integration_qags (&fc, 0.0, 1.0, 0.0, 1e-10, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qags(f1) smooth result") ; --- 1012,1017 ---- status = gsl_integration_qags (&fc, 0.0, 1.0, 0.0, 1e-10, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qags(f1) smooth result") ; *************** *** 1022,1043 **** for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qags(f1) smooth alist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qags(f1) smooth blist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qags(f1) smooth rlist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qags(f1) smooth elist") ; for (i = 0; i < 5 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qags(f1) smooth order") ; p.neval = 0; status = gsl_integration_qags (&fc, 1.0, 0.0, 0.0, 1e-10, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qags(f1) reverse result") ; --- 1022,1043 ---- for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qags(f1) smooth alist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qags(f1) smooth blist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qags(f1) smooth rlist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-6,"qags(f1) smooth elist") ; for (i = 0; i < 5 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qags(f1) smooth order") ; p.neval = 0; status = gsl_integration_qags (&fc, 1.0, 0.0, 0.0, 1e-10, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qags(f1) reverse result") ; *************** *** 1068,1106 **** double a[9] = { 1.000000000000000000E+00, ! 5.005000000000000000E+02, ! 2.507500000000000000E+02, ! 1.258750000000000000E+02, ! 6.343750000000000000E+01, ! 3.221875000000000000E+01, ! 1.660937500000000000E+01, ! 8.804687500000000000E+00, ! 4.902343750000000000E+00 } ; double b[9] = { 4.902343750000000000E+00, ! 1.000000000000000000E+03, ! 5.005000000000000000E+02, ! 2.507500000000000000E+02, ! 1.258750000000000000E+02, ! 6.343750000000000000E+01, ! 3.221875000000000000E+01, ! 1.660937500000000000E+01, ! 8.804687500000000000E+00 } ; double r[9] = { -3.890977835520834649E+00, ! -3.297343675805121620E+03, ! -1.475904154146372775E+03, ! -6.517404019686431411E+02, ! -2.829354222635842007E+02, ! -1.201692001973227519E+02, ! -4.959999906099650246E+01, ! -1.971441499411640308E+01, ! -7.457032710459004399E+00 } ; double e[9] = { 6.448276035006137169E-11, ! 3.660786868980994028E-11, ! 1.638582774073219226E-11, ! 7.235772003440423011E-12, ! 3.141214202790722909E-12, ! 1.334146129098576244E-12, ! 5.506706097890446534E-13, ! 2.188739744348345039E-13, ! 8.278969410534525339E-14 } ; int order[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; --- 1068,1106 ---- double a[9] = { 1.000000000000000000E+00, ! 5.005000000000000000E+02, ! 2.507500000000000000E+02, ! 1.258750000000000000E+02, ! 6.343750000000000000E+01, ! 3.221875000000000000E+01, ! 1.660937500000000000E+01, ! 8.804687500000000000E+00, ! 4.902343750000000000E+00 } ; double b[9] = { 4.902343750000000000E+00, ! 1.000000000000000000E+03, ! 5.005000000000000000E+02, ! 2.507500000000000000E+02, ! 1.258750000000000000E+02, ! 6.343750000000000000E+01, ! 3.221875000000000000E+01, ! 1.660937500000000000E+01, ! 8.804687500000000000E+00 } ; double r[9] = { -3.890977835520834649E+00, ! -3.297343675805121620E+03, ! -1.475904154146372775E+03, ! -6.517404019686431411E+02, ! -2.829354222635842007E+02, ! -1.201692001973227519E+02, ! -4.959999906099650246E+01, ! -1.971441499411640308E+01, ! -7.457032710459004399E+00 } ; double e[9] = { 6.448276035006137169E-11, ! 3.660786868980994028E-11, ! 1.638582774073219226E-11, ! 7.235772003440423011E-12, ! 3.141214202790722909E-12, ! 1.334146129098576244E-12, ! 5.506706097890446534E-13, ! 2.188739744348345039E-13, ! 8.278969410534525339E-14 } ; int order[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ; *************** *** 1110,1115 **** status = gsl_integration_qags (&fc, 1.0, 1000.0, 1e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qags(f11) smooth result") ; --- 1110,1115 ---- status = gsl_integration_qags (&fc, 1.0, 1000.0, 1e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-15,"qags(f11) smooth result") ; *************** *** 1120,1141 **** for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qags(f11) smooth alist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qags(f11) smooth blist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qags(f11) smooth rlist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-5,"qags(f11) smooth elist") ; for (i = 0; i < 9 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qags(f11) smooth order"); p.neval = 0; status = gsl_integration_qags (&fc, 1000.0, 1.0, 1e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qags(f11) reverse result") ; --- 1120,1141 ---- for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qags(f11) smooth alist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qags(f11) smooth blist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qags(f11) smooth rlist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-5,"qags(f11) smooth elist") ; for (i = 0; i < 9 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qags(f11) smooth order"); p.neval = 0; status = gsl_integration_qags (&fc, 1000.0, 1.0, 1e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-15,"qags(f11) reverse result") ; *************** *** 1166,1208 **** double a[10] = { 9.687500000000000000E-01, ! 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 7.500000000000000000E-01, ! 1.250000000000000000E-01, ! 8.750000000000000000E-01, ! 6.250000000000000000E-02, ! 9.375000000000000000E-01, ! 3.125000000000000000E-02 } ; double b[10] = { 1.000000000000000000E+00, ! 3.125000000000000000E-02, ! 7.500000000000000000E-01, ! 5.000000000000000000E-01, ! 8.750000000000000000E-01, ! 2.500000000000000000E-01, ! 9.375000000000000000E-01, ! 1.250000000000000000E-01, ! 9.687500000000000000E-01, ! 6.250000000000000000E-02 } ; double r[10] = { -1.390003415539725340E-01, ! 1.429785306003466313E-03, ! -1.229943369113085765E-02, ! 2.995321156568048898E-03, ! -4.980050133751051655E-02, ! 2.785385934678596704E-03, ! -8.653752279614615461E-02, ! 1.736218164975512294E-03, ! -8.398745675010892142E-02, ! 1.041689192004495576E-03 } ; double e[10] = { 2.395037249893453013E-02, ! 2.161214992172538524E-04, ! 5.720644840858777846E-14, ! 3.325474514168701167E-17, ! 3.147380432198176412E-14, ! 3.092399597147240624E-17, ! 9.607595030230581153E-16, ! 1.927589382528252344E-17, ! 9.324480826368044019E-16, ! 1.156507325466566521E-17 } ; int order[10] = { 1, 2, 3, 5, 7, 9, 4, 6, 8, 10 } ; --- 1166,1208 ---- double a[10] = { 9.687500000000000000E-01, ! 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 7.500000000000000000E-01, ! 1.250000000000000000E-01, ! 8.750000000000000000E-01, ! 6.250000000000000000E-02, ! 9.375000000000000000E-01, ! 3.125000000000000000E-02 } ; double b[10] = { 1.000000000000000000E+00, ! 3.125000000000000000E-02, ! 7.500000000000000000E-01, ! 5.000000000000000000E-01, ! 8.750000000000000000E-01, ! 2.500000000000000000E-01, ! 9.375000000000000000E-01, ! 1.250000000000000000E-01, ! 9.687500000000000000E-01, ! 6.250000000000000000E-02 } ; double r[10] = { -1.390003415539725340E-01, ! 1.429785306003466313E-03, ! -1.229943369113085765E-02, ! 2.995321156568048898E-03, ! -4.980050133751051655E-02, ! 2.785385934678596704E-03, ! -8.653752279614615461E-02, ! 1.736218164975512294E-03, ! -8.398745675010892142E-02, ! 1.041689192004495576E-03 } ; double e[10] = { 2.395037249893453013E-02, ! 2.161214992172538524E-04, ! 5.720644840858777846E-14, ! 3.325474514168701167E-17, ! 3.147380432198176412E-14, ! 3.092399597147240624E-17, ! 9.607595030230581153E-16, ! 1.927589382528252344E-17, ! 9.324480826368044019E-16, ! 1.156507325466566521E-17 } ; int order[10] = { 1, 2, 3, 5, 7, 9, 4, 6, 8, 10 } ; *************** *** 1211,1216 **** status = gsl_integration_qagiu (&fc, 0.0, 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(f455) smooth result") ; --- 1211,1216 ---- status = gsl_integration_qagiu (&fc, 0.0, 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(f455) smooth result") ; *************** *** 1221,1237 **** for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f455) smooth alist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f455) smooth blist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f455) smooth rlist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f455) smooth elist") ; for (i = 0; i < 10 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f455) smooth order"); gsl_integration_workspace_free (w) ; --- 1221,1237 ---- for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f455) smooth alist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f455) smooth blist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f455) smooth rlist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f455) smooth elist") ; for (i = 0; i < 10 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f455) smooth order"); gsl_integration_workspace_free (w) ; *************** *** 1256,1298 **** double a[10] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03, ! 3.906250000000000000E-03, ! 1.953125000000000000E-03 } ; double b[10] = { 1.953125000000000000E-03, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03, ! 3.906250000000000000E-03 } ; double r[10] = { 1.099297665754340292E+00, ! 3.256176475185617591E-01, ! 8.064694554185326325E+00, ! 8.873128656118993263E+01, ! 6.977679035845269482E+02, ! 4.096981198511257389E+03, ! 1.574317583220441520E+04, ! 2.899418134793237914E+04, ! 1.498314766425578091E+04, ! 9.225251570832365360E+02 } ; double e[10] = { 7.101865971621337814E-04, ! 1.912660677170175771E-08, ! 9.167763417119923333E-08, ! 3.769501719163865578E-07, ! 6.973493131275552509E-07, ! 1.205653952340679711E-07, ! 1.380003928453846583E-07, ! 1.934652413547325474E-07, ! 3.408933028357320364E-07, ! 2.132473175465897029E-09 } ; int order[10] = { 1, 5, 4, 9, 8, 7, 6, 3, 2, 10 } ; --- 1256,1298 ---- double a[10] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03, ! 3.906250000000000000E-03, ! 1.953125000000000000E-03 } ; double b[10] = { 1.953125000000000000E-03, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03, ! 3.906250000000000000E-03 } ; double r[10] = { 1.099297665754340292E+00, ! 3.256176475185617591E-01, ! 8.064694554185326325E+00, ! 8.873128656118993263E+01, ! 6.977679035845269482E+02, ! 4.096981198511257389E+03, ! 1.574317583220441520E+04, ! 2.899418134793237914E+04, ! 1.498314766425578091E+04, ! 9.225251570832365360E+02 } ; double e[10] = { 7.101865971621337814E-04, ! 1.912660677170175771E-08, ! 9.167763417119923333E-08, ! 3.769501719163865578E-07, ! 6.973493131275552509E-07, ! 1.205653952340679711E-07, ! 1.380003928453846583E-07, ! 1.934652413547325474E-07, ! 3.408933028357320364E-07, ! 2.132473175465897029E-09 } ; int order[10] = { 1, 5, 4, 9, 8, 7, 6, 3, 2, 10 } ; *************** *** 1303,1308 **** status = gsl_integration_qagiu (&fc, 0.0, 0.0, 1.0e-7, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(f15) smooth result") ; --- 1303,1308 ---- status = gsl_integration_qagiu (&fc, 0.0, 0.0, 1.0e-7, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(f15) smooth result") ; *************** *** 1313,1329 **** for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f15) smooth alist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f15) smooth blist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f15) smooth rlist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f15) smooth elist") ; for (i = 0; i < 10 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f15) smooth order"); gsl_integration_workspace_free (w) ; --- 1313,1329 ---- for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f15) smooth alist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f15) smooth blist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f15) smooth rlist") ; for (i = 0; i < 10 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f15) smooth elist") ; for (i = 0; i < 10 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f15) smooth order"); gsl_integration_workspace_free (w) ; *************** *** 1348,1374 **** double a[6] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02 } ; double b[6] = { 3.125000000000000000E-02, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02 } ; double r[6] = { 7.633587786326674618E-05, ! 9.900990099009899620E-07, ! 1.922522349322310737E-06, ! 3.629434715543053753E-06, ! 6.501422186103209199E-06, ! 1.062064387653501389E-05 } ; double e[6] = { 3.084061858351569051E-09, ! 3.112064814755089674E-17, ! 4.543453652226561245E-17, ! 4.908618166361344548E-17, ! 3.014338672269481784E-17, ! 6.795996738013555461E-18 } ; int order[6] = { 1, 4, 3, 2, 5, 6 } ; --- 1348,1374 ---- double a[6] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02 } ; double b[6] = { 3.125000000000000000E-02, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02 } ; double r[6] = { 7.633587786326674618E-05, ! 9.900990099009899620E-07, ! 1.922522349322310737E-06, ! 3.629434715543053753E-06, ! 6.501422186103209199E-06, ! 1.062064387653501389E-05 } ; double e[6] = { 3.084061858351569051E-09, ! 3.112064814755089674E-17, ! 4.543453652226561245E-17, ! 4.908618166361344548E-17, ! 3.014338672269481784E-17, ! 6.795996738013555461E-18 } ; int order[6] = { 1, 4, 3, 2, 5, 6 } ; *************** *** 1379,1384 **** status = gsl_integration_qagiu (&fc, 99.9, 1.0e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(f16) smooth result") ; --- 1379,1384 ---- status = gsl_integration_qagiu (&fc, 99.9, 1.0e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(f16) smooth result") ; *************** *** 1389,1405 **** for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f16) smooth alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f16) smooth blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f16) smooth rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f16) smooth elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f16) smooth order"); gsl_integration_workspace_free (w) ; --- 1389,1405 ---- for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(f16) smooth alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(f16) smooth blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-15,"qagiu(f16) smooth rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(f16) smooth elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(f16) smooth order"); gsl_integration_workspace_free (w) ; *************** *** 1424,1446 **** double a[5] = { 1.250000000000000000E-01, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 0.000000000000000000E+00, ! 3.750000000000000000E-01 } ; double b[5] = { 2.500000000000000000E-01, ! 1.000000000000000000E+00, ! 3.750000000000000000E-01, ! 1.250000000000000000E-01, ! 5.000000000000000000E-01 } ; double r[5] = { 4.639317228058405717E-04, ! 1.691664195356748834E+00, ! 1.146307471900291086E-01, ! 4.379392477350953574E-20, ! 4.691169201991640669E-01 } ; double e[5] = { 3.169263960393051137E-09, ! 4.265988974874425043E-09, ! 1.231954072964969637E-12, ! 8.360902986775307673E-20, ! 5.208244060463541433E-15 } ; int order[5] = { 2, 1, 3, 5, 4 } ; --- 1424,1446 ---- double a[5] = { 1.250000000000000000E-01, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 0.000000000000000000E+00, ! 3.750000000000000000E-01 } ; double b[5] = { 2.500000000000000000E-01, ! 1.000000000000000000E+00, ! 3.750000000000000000E-01, ! 1.250000000000000000E-01, ! 5.000000000000000000E-01 } ; double r[5] = { 4.639317228058405717E-04, ! 1.691664195356748834E+00, ! 1.146307471900291086E-01, ! 4.379392477350953574E-20, ! 4.691169201991640669E-01 } ; double e[5] = { 3.169263960393051137E-09, ! 4.265988974874425043E-09, ! 1.231954072964969637E-12, ! 8.360902986775307673E-20, ! 5.208244060463541433E-15 } ; int order[5] = { 2, 1, 3, 5, 4 } ; *************** *** 1449,1454 **** status = gsl_integration_qagi (&fc, 1.0e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(myfn1) smooth result") ; --- 1449,1454 ---- status = gsl_integration_qagi (&fc, 1.0e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(myfn1) smooth result") ; *************** *** 1459,1475 **** for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(myfn1) smooth alist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(myfn1) smooth blist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qagiu(myfn1) smooth rlist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(myfn1) smooth elist") ; for (i = 0; i < 5 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(myfn1) smooth order"); gsl_integration_workspace_free (w) ; --- 1459,1475 ---- for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(myfn1) smooth alist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(myfn1) smooth blist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qagiu(myfn1) smooth rlist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(myfn1) smooth elist") ; for (i = 0; i < 5 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(myfn1) smooth order"); gsl_integration_workspace_free (w) ; *************** *** 1494,1516 **** double a[5] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02 } ; double b[5] = { 6.250000000000000000E-02, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01 } ; double r[5] = { 8.315287189746029816E-07, ! 1.718281828459045091E+00, ! 8.646647167633871867E-01, ! 1.328565310599463256E-01, ! 2.477920647947255521E-03 } ; double e[5] = { 1.533437090413525935E-10, ! 4.117868247943567505E-12, ! 7.802455785301941044E-13, ! 5.395586026138397182E-13, ! 3.713312434866150125E-14 } ; int order[5] = { 1, 2, 3, 4, 5 } ; --- 1494,1516 ---- double a[5] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02 } ; double b[5] = { 6.250000000000000000E-02, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01 } ; double r[5] = { 8.315287189746029816E-07, ! 1.718281828459045091E+00, ! 8.646647167633871867E-01, ! 1.328565310599463256E-01, ! 2.477920647947255521E-03 } ; double e[5] = { 1.533437090413525935E-10, ! 4.117868247943567505E-12, ! 7.802455785301941044E-13, ! 5.395586026138397182E-13, ! 3.713312434866150125E-14 } ; int order[5] = { 1, 2, 3, 4, 5 } ; *************** *** 1520,1525 **** status = gsl_integration_qagil (&fc, 1.0, 1.0e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(myfn2) smooth result") ; --- 1520,1525 ---- status = gsl_integration_qagil (&fc, 1.0, 1.0e-7, 0.0, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagiu(myfn2) smooth result") ; *************** *** 1530,1546 **** for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(myfn2) smooth alist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(myfn2) smooth blist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qagiu(myfn2) smooth rlist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(myfn2) smooth elist") ; for (i = 0; i < 5 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(myfn2) smooth order"); gsl_integration_workspace_free (w) ; --- 1530,1546 ---- for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagiu(myfn2) smooth alist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagiu(myfn2) smooth blist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qagiu(myfn2) smooth rlist") ; for (i = 0; i < 5 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagiu(myfn2) smooth elist") ; for (i = 0; i < 5 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagiu(myfn2) smooth order"); gsl_integration_workspace_free (w) ; *************** *** 1565,1649 **** double a[20] = { 9.687500000000000000E-01, ! 1.401269388548935790E+00, ! 1.414213562373095145E+00, ! 1.000000000000000000E+00, ! 0.000000000000000000E+00, ! 2.207106781186547462E+00, ! 1.810660171779821415E+00, ! 1.207106781186547462E+00, ! 5.000000000000000000E-01, ! 1.103553390593273731E+00, ! 1.612436867076458391E+00, ! 1.310660171779821415E+00, ! 7.500000000000000000E-01, ! 1.051776695296636976E+00, ! 1.513325214724776657E+00, ! 1.362436867076458391E+00, ! 8.750000000000000000E-01, ! 1.463769388548935790E+00, ! 1.388325214724776657E+00, ! 9.375000000000000000E-01} ; double b[20] = { 1.000000000000000000E+00, ! 1.414213562373095145E+00, ! 1.463769388548935790E+00, ! 1.051776695296636976E+00, ! 5.000000000000000000E-01, ! 3.000000000000000000E+00, ! 2.207106781186547462E+00, ! 1.310660171779821415E+00, ! 7.500000000000000000E-01, ! 1.207106781186547462E+00, ! 1.810660171779821415E+00, ! 1.362436867076458391E+00, ! 8.750000000000000000E-01, ! 1.103553390593273731E+00, ! 1.612436867076458391E+00, ! 1.388325214724776657E+00, ! 9.375000000000000000E-01, ! 1.513325214724776657E+00, ! 1.401269388548935790E+00, ! 9.687500000000000000E-01} ; double r[20] = { -1.125078814079027711E-01, ! -1.565132123531515207E-01, ! -4.225328513207429193E-01, ! -1.830392049835374568E-01, ! 6.575875041899758092E-03, ! 4.873920540843067783E+01, ! 6.032891565603589079E+00, ! -2.991531901645863023E-01, ! -7.326282608704996063E-03, ! -2.431894410706912923E-01, ! 5.911661670635662835E-01, ! -2.236786562536174916E-01, ! -5.647871991778510847E-02, ! -1.305470403178642658E-01, ! -1.721363984401322045E-01, ! -1.589345454585119055E-01, ! -7.406626263352669715E-02, ! -2.208730668000830344E-01, ! -1.048692749517999567E-01, ! -6.302287584527696551E-02} ; double e[20] = { 2.506431410088378817E-02, ! 2.730454695485963826E-02, ! 1.017446081816190118E-01, ! 3.252808038935910834E-02, ! 7.300687878575027348E-17, ! 5.411138804637469780E-13, ! 6.697855121200013106E-14, ! 3.321267596107916554E-15, ! 1.417509685426979386E-16, ! 2.699945168224041491E-15, ! 6.573952690524728748E-15, ! 2.483331942899818875E-15, ! 6.270397525408045936E-16, ! 1.449363299575615261E-15, ! 1.911097929242846383E-15, ! 1.764527917763735212E-15, ! 8.223007012367522077E-16, ! 2.452183642810224359E-15, ! 1.164282836272345215E-15, ! 6.996944784151910810E-16} ; int order[20] = { 3, 4, 2, 1, 6, 7, 11, 8, 10, 12, 18, ! 15, 16, 14, 19, 17, 20, 13, 9, 5 } ; gsl_function f = make_function(&f454, 0); --- 1565,1649 ---- double a[20] = { 9.687500000000000000E-01, ! 1.401269388548935790E+00, ! 1.414213562373095145E+00, ! 1.000000000000000000E+00, ! 0.000000000000000000E+00, ! 2.207106781186547462E+00, ! 1.810660171779821415E+00, ! 1.207106781186547462E+00, ! 5.000000000000000000E-01, ! 1.103553390593273731E+00, ! 1.612436867076458391E+00, ! 1.310660171779821415E+00, ! 7.500000000000000000E-01, ! 1.051776695296636976E+00, ! 1.513325214724776657E+00, ! 1.362436867076458391E+00, ! 8.750000000000000000E-01, ! 1.463769388548935790E+00, ! 1.388325214724776657E+00, ! 9.375000000000000000E-01} ; double b[20] = { 1.000000000000000000E+00, ! 1.414213562373095145E+00, ! 1.463769388548935790E+00, ! 1.051776695296636976E+00, ! 5.000000000000000000E-01, ! 3.000000000000000000E+00, ! 2.207106781186547462E+00, ! 1.310660171779821415E+00, ! 7.500000000000000000E-01, ! 1.207106781186547462E+00, ! 1.810660171779821415E+00, ! 1.362436867076458391E+00, ! 8.750000000000000000E-01, ! 1.103553390593273731E+00, ! 1.612436867076458391E+00, ! 1.388325214724776657E+00, ! 9.375000000000000000E-01, ! 1.513325214724776657E+00, ! 1.401269388548935790E+00, ! 9.687500000000000000E-01} ; double r[20] = { -1.125078814079027711E-01, ! -1.565132123531515207E-01, ! -4.225328513207429193E-01, ! -1.830392049835374568E-01, ! 6.575875041899758092E-03, ! 4.873920540843067783E+01, ! 6.032891565603589079E+00, ! -2.991531901645863023E-01, ! -7.326282608704996063E-03, ! -2.431894410706912923E-01, ! 5.911661670635662835E-01, ! -2.236786562536174916E-01, ! -5.647871991778510847E-02, ! -1.305470403178642658E-01, ! -1.721363984401322045E-01, ! -1.589345454585119055E-01, ! -7.406626263352669715E-02, ! -2.208730668000830344E-01, ! -1.048692749517999567E-01, ! -6.302287584527696551E-02} ; double e[20] = { 2.506431410088378817E-02, ! 2.730454695485963826E-02, ! 1.017446081816190118E-01, ! 3.252808038935910834E-02, ! 7.300687878575027348E-17, ! 5.411138804637469780E-13, ! 6.697855121200013106E-14, ! 3.321267596107916554E-15, ! 1.417509685426979386E-16, ! 2.699945168224041491E-15, ! 6.573952690524728748E-15, ! 2.483331942899818875E-15, ! 6.270397525408045936E-16, ! 1.449363299575615261E-15, ! 1.911097929242846383E-15, ! 1.764527917763735212E-15, ! 8.223007012367522077E-16, ! 2.452183642810224359E-15, ! 1.164282836272345215E-15, ! 6.996944784151910810E-16} ; int order[20] = { 3, 4, 2, 1, 6, 7, 11, 8, 10, 12, 18, ! 15, 16, 14, 19, 17, 20, 13, 9, 5 } ; gsl_function f = make_function(&f454, 0); *************** *** 1658,1664 **** status = gsl_integration_qagp (&fc, pts, 4, ! 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagp(f454) singular result") ; --- 1658,1664 ---- status = gsl_integration_qagp (&fc, pts, 4, ! 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qagp(f454) singular result") ; *************** *** 1669,1685 **** for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagp(f454) singular alist") ; for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagp(f454) singular blist") ; for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qagp(f454) singular rlist") ; for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagp(f454) singular elist") ; for (i = 0; i < 20 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagp(f454) singular order"); gsl_integration_workspace_free (w) ; --- 1669,1685 ---- for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qagp(f454) singular alist") ; for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qagp(f454) singular blist") ; for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qagp(f454) singular rlist") ; for (i = 0; i < 20 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qagp(f454) singular elist") ; for (i = 0; i < 20 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qagp(f454) singular order"); gsl_integration_workspace_free (w) ; *************** *** 1705,1731 **** double a[6] = { -1.000000000000000000E+00, ! 2.500000000000000000E+00, ! 1.250000000000000000E+00, ! 6.250000000000000000E-01, ! -5.000000000000000000E-01, ! -7.500000000000000000E-01} ; double b[6] = { -7.500000000000000000E-01, ! 5.000000000000000000E+00, ! 2.500000000000000000E+00, ! 1.250000000000000000E+00, ! 6.250000000000000000E-01, ! -5.000000000000000000E-01} ; double r[6] = { -1.234231128040012976E-01, ! 3.579970394639702888E-03, ! 2.249831615049339983E-02, ! 7.214232992127905808E-02, ! 2.079093855884046535E-02, ! -8.553244917962132821E-02} ; double e[6] = { 1.172832717970022565E-06, ! 9.018232896137375412E-13, ! 1.815172652101790755E-12, ! 1.006998195150956048E-13, ! 1.245463873006391609E-08, ! 1.833082948207153514E-15 } ; int order[6] = { 1, 5, 3, 2, 4, 6 } ; --- 1705,1731 ---- double a[6] = { -1.000000000000000000E+00, ! 2.500000000000000000E+00, ! 1.250000000000000000E+00, ! 6.250000000000000000E-01, ! -5.000000000000000000E-01, ! -7.500000000000000000E-01} ; double b[6] = { -7.500000000000000000E-01, ! 5.000000000000000000E+00, ! 2.500000000000000000E+00, ! 1.250000000000000000E+00, ! 6.250000000000000000E-01, ! -5.000000000000000000E-01} ; double r[6] = { -1.234231128040012976E-01, ! 3.579970394639702888E-03, ! 2.249831615049339983E-02, ! 7.214232992127905808E-02, ! 2.079093855884046535E-02, ! -8.553244917962132821E-02} ; double e[6] = { 1.172832717970022565E-06, ! 9.018232896137375412E-13, ! 1.815172652101790755E-12, ! 1.006998195150956048E-13, ! 1.245463873006391609E-08, ! 1.833082948207153514E-15 } ; int order[6] = { 1, 5, 3, 2, 4, 6 } ; *************** *** 1735,1740 **** status = gsl_integration_qawc (&fc, -1.0, 5.0, 0.0, 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qawc(f459) result") ; --- 1735,1740 ---- status = gsl_integration_qawc (&fc, -1.0, 5.0, 0.0, 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qawc(f459) result") ; *************** *** 1745,1766 **** for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qawc(f459) alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qawc(f459) blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qawc(f459) rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-5,"qawc(f459) elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qawc(f459) order"); p.neval = 0; status = gsl_integration_qawc (&fc, 5.0, -1.0, 0.0, 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-14,"qawc(f459) rev result") ; --- 1745,1766 ---- for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qawc(f459) alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qawc(f459) blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qawc(f459) rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-5,"qawc(f459) elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qawc(f459) order"); p.neval = 0; status = gsl_integration_qawc (&fc, 5.0, -1.0, 0.0, 0.0, 1.0e-3, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-14,"qawc(f459) rev result") ; *************** *** 1794,1828 **** double a[8] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03} ; double b[8] = { 7.812500000000000000E-03, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02} ; double r[8] = { -4.126317299834445824E-05, ! -1.076283950172247789E-01, ! -6.240573216173390947E-02, ! -1.456169844189576269E-02, ! -3.408925115926728436E-03, ! -8.914083918175634211E-04, ! -2.574191402137795482E-04, ! -8.034390712936630608E-05} ; double e[8] = { 1.129099387465713953E-08, ! 3.423394967694403596E-13, ! 6.928428071454762659E-16, ! 1.616673288784094320E-16, ! 3.784667152924835070E-17, ! 9.896621209399419425E-18, ! 2.857926564445496100E-18, ! 8.919965558336773736E-19} ; int order[8] = { 1, 2, 3, 4, 5, 6, 7, 8 } ; --- 1794,1828 ---- double a[8] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03} ; double b[8] = { 7.812500000000000000E-03, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02} ; double r[8] = { -4.126317299834445824E-05, ! -1.076283950172247789E-01, ! -6.240573216173390947E-02, ! -1.456169844189576269E-02, ! -3.408925115926728436E-03, ! -8.914083918175634211E-04, ! -2.574191402137795482E-04, ! -8.034390712936630608E-05} ; double e[8] = { 1.129099387465713953E-08, ! 3.423394967694403596E-13, ! 6.928428071454762659E-16, ! 1.616673288784094320E-16, ! 3.784667152924835070E-17, ! 9.896621209399419425E-18, ! 2.857926564445496100E-18, ! 8.919965558336773736E-19} ; int order[8] = { 1, 2, 3, 4, 5, 6, 7, 8 } ; *************** *** 1832,1837 **** status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qaws(f458) ln(x-a) result") ; --- 1832,1837 ---- status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, ! &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qaws(f458) ln(x-a) result") ; *************** *** 1842,1858 **** for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qaws(f458) ln(x-a) alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qaws(f458) ln(x-a) blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qaws(f458) ln(x-a) rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qaws(f458) ln(x-a) elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qaws(f458) ln(x-a) order"); /* Test without logs */ --- 1842,1858 ---- for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qaws(f458) ln(x-a) alist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qaws(f458) ln(x-a) blist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qaws(f458) ln(x-a) rlist") ; for (i = 0; i < 6 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-4,"qaws(f458) ln(x-a) elist") ; for (i = 0; i < 6 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qaws(f458) ln(x-a) order"); /* Test without logs */ *************** *** 1861,1865 **** status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = 9.896686656601706433E-01; --- 1861,1865 ---- status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = 9.896686656601706433E-01; *************** *** 1874,1878 **** status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = -3.636679470586539620E-01; --- 1874,1878 ---- status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = -3.636679470586539620E-01; *************** *** 1887,1891 **** status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = -1.911489253363409802E+00; --- 1887,1891 ---- status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = -1.911489253363409802E+00; *************** *** 1900,1904 **** status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = 3.159922862811048172E-01; --- 1900,1904 ---- status = gsl_integration_qaws (&fc, 0.0, 1.0, t, 0.0, 1.0e-7, w->limit, ! w, &result, &abserr) ; exp_result = 3.159922862811048172E-01; *************** *** 1923,1927 **** gsl_integration_qawo_table * wo = gsl_integration_qawo_table_alloc (10.0 * M_PI, 1.0, ! GSL_INTEG_SINE, 1000) ; /* All results are for GSL_IEEE_MODE=double-precision */ --- 1923,1927 ---- gsl_integration_qawo_table * wo = gsl_integration_qawo_table_alloc (10.0 * M_PI, 1.0, ! GSL_INTEG_SINE, 1000) ; /* All results are for GSL_IEEE_MODE=double-precision */ *************** *** 1934,1972 **** double a[9] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03, ! 3.906250000000000000E-03 } ; double b[9] = { 3.906250000000000000E-03, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03 } ; double r[9] = { -1.447193692377651136E-03, ! 2.190541162282139478E-02, ! -2.587726479625663753E-02, ! 5.483209176363500886E-02, ! -3.081695575172510582E-02, ! -9.178321994387816929E-02, ! -3.886716016498160953E-02, ! -1.242306301902117854E-02, ! -3.659495117871544145E-03} ; double e[9] = { 8.326506625798146465E-07, ! 1.302638552580516100E-13, ! 7.259224351945759794E-15, ! 1.249770395036711102E-14, ! 7.832180081562836579E-16, ! 1.018998440559284116E-15, ! 4.315121611695628020E-16, ! 1.379237060008662177E-16, ! 4.062855738364339357E-17 } ; int order[9] = { 1, 2, 4, 3, 6, 5, 7, 8, 9 } ; --- 1934,1972 ---- double a[9] = { 0.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03, ! 3.906250000000000000E-03 } ; double b[9] = { 3.906250000000000000E-03, ! 1.000000000000000000E+00, ! 5.000000000000000000E-01, ! 2.500000000000000000E-01, ! 1.250000000000000000E-01, ! 6.250000000000000000E-02, ! 3.125000000000000000E-02, ! 1.562500000000000000E-02, ! 7.812500000000000000E-03 } ; double r[9] = { -1.447193692377651136E-03, ! 2.190541162282139478E-02, ! -2.587726479625663753E-02, ! 5.483209176363500886E-02, ! -3.081695575172510582E-02, ! -9.178321994387816929E-02, ! -3.886716016498160953E-02, ! -1.242306301902117854E-02, ! -3.659495117871544145E-03} ; double e[9] = { 8.326506625798146465E-07, ! 1.302638552580516100E-13, ! 7.259224351945759794E-15, ! 1.249770395036711102E-14, ! 7.832180081562836579E-16, ! 1.018998440559284116E-15, ! 4.315121611695628020E-16, ! 1.379237060008662177E-16, ! 4.062855738364339357E-17 } ; int order[9] = { 1, 2, 4, 3, 6, 5, 7, 8, 9 } ; *************** *** 1976,1980 **** status = gsl_integration_qawo (&fc, 0.0, 0.0, 1e-7, w->limit, ! w, wo, &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qawo(f456) result") ; --- 1976,1980 ---- status = gsl_integration_qawo (&fc, 0.0, 0.0, 1e-7, w->limit, ! w, wo, &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qawo(f456) result") ; *************** *** 1985,2001 **** for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qawo(f456) alist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qawo(f456) blist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qawo(f456) rlist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-3,"qawo(f456) elist") ; for (i = 0; i < 9 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qawo(f456) order"); --- 1985,2001 ---- for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->alist[i],a[i],1e-15,"qawo(f456) alist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->blist[i],b[i],1e-15,"qawo(f456) blist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-14,"qawo(f456) rlist") ; for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->elist[i],e[i],1e-3,"qawo(f456) elist") ; for (i = 0; i < 9 ; i++) ! gsl_test_int((int)w->order[i],order[i]-1,"qawo(f456) order"); *************** *** 2006,2010 **** p.neval = 0; status = gsl_integration_qawo (&fc, 1.0, 0.0, 1e-7, w->limit, ! w, wo, &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-14,"qawo(f456) rev result") ; --- 2006,2010 ---- p.neval = 0; status = gsl_integration_qawo (&fc, 1.0, 0.0, 1e-7, w->limit, ! w, wo, &result, &abserr) ; gsl_test_rel(result,-exp_result,1e-14,"qawo(f456) rev result") ; *************** *** 2030,2034 **** gsl_integration_qawo_table * wo = gsl_integration_qawo_table_alloc (M_PI / 2.0, 1.0, ! GSL_INTEG_COSINE, 1000) ; /* All results are for GSL_IEEE_MODE=double-precision */ --- 2030,2034 ---- gsl_integration_qawo_table * wo = gsl_integration_qawo_table_alloc (M_PI / 2.0, 1.0, ! GSL_INTEG_COSINE, 1000) ; /* All results are for GSL_IEEE_MODE=double-precision */ *************** *** 2041,2067 **** double r[12] = { 1.013283128125232802E+00, ! -1.810857954748607349E-02, ! 7.466754034900931897E-03, ! -4.360312526786496237E-03, ! 2.950184068216192904E-03, ! -2.168238443073697373E-03, ! 1.680910783140869081E-03, ! -1.352797860944863345E-03, ! 1.119354921991485901E-03, ! -9.462367583691360827E-04, ! 8.136341270731781887E-04, ! -7.093931338504278145E-04 } ; double e[12] = { 1.224798040766472695E-12, ! 1.396565155187268456E-13, ! 1.053844511655910310E-16, ! 6.505213034913026604E-19, ! 7.155734338404329264E-18, ! 1.105886215935214523E-17, ! 9.757819552369539906E-18, ! 5.854691731421723944E-18, ! 4.553649124439220312E-18, ! 7.643625316022806260E-18, ! 2.439454888092388058E-17, ! 2.130457268934021451E-17 } ; double alpha = 1.0 ; --- 2041,2067 ---- double r[12] = { 1.013283128125232802E+00, ! -1.810857954748607349E-02, ! 7.466754034900931897E-03, ! -4.360312526786496237E-03, ! 2.950184068216192904E-03, ! -2.168238443073697373E-03, ! 1.680910783140869081E-03, ! -1.352797860944863345E-03, ! 1.119354921991485901E-03, ! -9.462367583691360827E-04, ! 8.136341270731781887E-04, ! -7.093931338504278145E-04 } ; double e[12] = { 1.224798040766472695E-12, ! 1.396565155187268456E-13, ! 1.053844511655910310E-16, ! 6.505213034913026604E-19, ! 7.155734338404329264E-18, ! 1.105886215935214523E-17, ! 9.757819552369539906E-18, ! 5.854691731421723944E-18, ! 4.553649124439220312E-18, ! 7.643625316022806260E-18, ! 2.439454888092388058E-17, ! 2.130457268934021451E-17 } ; double alpha = 1.0 ; *************** *** 2070,2074 **** status = gsl_integration_qawf (&fc, 0.0, 1e-7, w->limit, ! w, wc, wo, &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qawf(f457) result") ; --- 2070,2074 ---- status = gsl_integration_qawf (&fc, 0.0, 1e-7, w->limit, ! w, wc, wo, &result, &abserr) ; gsl_test_rel(result,exp_result,1e-14,"qawf(f457) result") ; *************** *** 2079,2083 **** for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-12,"qawf(f457) rlist") ; /* We can only get within two orders of magnitude on the error --- 2079,2083 ---- for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->rlist[i],r[i],1e-12,"qawf(f457) rlist") ; /* We can only get within two orders of magnitude on the error *************** *** 2085,2089 **** for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->elist[i],e[i],50.0,"qawf(f457) elist") ; --- 2085,2089 ---- for (i = 0; i < 9 ; i++) ! gsl_test_rel(w->elist[i],e[i],50.0,"qawf(f457) elist") ; diff -x.info* -rc2P gsl-1.3/integration/util.c gsl-1.4/integration/util.c *** gsl-1.3/integration/util.c Mon Jul 2 14:28:10 2001 --- gsl-1.4/integration/util.c Fri Jul 25 15:18:11 2003 *************** *** 20,29 **** static inline void update (gsl_integration_workspace * workspace, ! double a1, double b1, double area1, double error1, ! double a2, double b2, double area2, double error2); static inline void retrieve (const gsl_integration_workspace * workspace, ! double * a, double * b, double * r, double * e); --- 20,29 ---- static inline void update (gsl_integration_workspace * workspace, ! double a1, double b1, double area1, double error1, ! double a2, double b2, double area2, double error2); static inline void retrieve (const gsl_integration_workspace * workspace, ! double * a, double * b, double * r, double * e); *************** *** 31,36 **** static inline void update (gsl_integration_workspace * workspace, ! double a1, double b1, double area1, double error1, ! double a2, double b2, double area2, double error2) { double * alist = workspace->alist ; --- 31,36 ---- static inline void update (gsl_integration_workspace * workspace, ! double a1, double b1, double area1, double error1, ! double a2, double b2, double area2, double error2) { double * alist = workspace->alist ; *************** *** 49,53 **** if (error2 > error1) { ! alist[i_max] = a2; /* blist[maxerr] is already == b2 */ rlist[i_max] = area2; elist[i_max] = error2; --- 49,53 ---- if (error2 > error1) { ! alist[i_max] = a2; /* blist[maxerr] is already == b2 */ rlist[i_max] = area2; elist[i_max] = error2; *************** *** 62,66 **** else { ! blist[i_max] = b1; /* alist[maxerr] is already == a1 */ rlist[i_max] = area1; elist[i_max] = error1; --- 62,66 ---- else { ! blist[i_max] = b1; /* alist[maxerr] is already == a1 */ rlist[i_max] = area1; elist[i_max] = error1; *************** *** 86,90 **** static inline void retrieve (const gsl_integration_workspace * workspace, ! double * a, double * b, double * r, double * e) { const size_t i = workspace->i; --- 86,90 ---- static inline void retrieve (const gsl_integration_workspace * workspace, ! double * a, double * b, double * r, double * e) { const size_t i = workspace->i; diff -x.info* -rc2P gsl-1.3/integration/workspace.c gsl-1.4/integration/workspace.c *** gsl-1.3/integration/workspace.c Wed Apr 18 21:52:30 2001 --- gsl-1.4/integration/workspace.c Fri Jul 25 15:18:11 2003 *************** *** 31,35 **** { GSL_ERROR_VAL ("workspace length n must be positive integer", ! GSL_EDOM, 0); } --- 31,35 ---- { GSL_ERROR_VAL ("workspace length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 40,44 **** { GSL_ERROR_VAL ("failed to allocate space for workspace struct", ! GSL_ENOMEM, 0); } --- 40,44 ---- { GSL_ERROR_VAL ("failed to allocate space for workspace struct", ! GSL_ENOMEM, 0); } *************** *** 47,54 **** if (w->alist == 0) { ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for alist ranges", ! GSL_ENOMEM, 0); } --- 47,54 ---- if (w->alist == 0) { ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for alist ranges", ! GSL_ENOMEM, 0); } *************** *** 58,65 **** { free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for blist ranges", ! GSL_ENOMEM, 0); } --- 58,65 ---- { free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for blist ranges", ! GSL_ENOMEM, 0); } *************** *** 70,77 **** free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for rlist ranges", ! GSL_ENOMEM, 0); } --- 70,77 ---- free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for rlist ranges", ! GSL_ENOMEM, 0); } *************** *** 84,91 **** free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for elist ranges", ! GSL_ENOMEM, 0); } --- 84,91 ---- free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for elist ranges", ! GSL_ENOMEM, 0); } *************** *** 98,105 **** free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for order ranges", ! GSL_ENOMEM, 0); } --- 98,105 ---- free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for order ranges", ! GSL_ENOMEM, 0); } *************** *** 113,120 **** free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for order ranges", ! GSL_ENOMEM, 0); } --- 113,120 ---- free (w->blist); free (w->alist); ! free (w); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for order ranges", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/interpolation/ChangeLog gsl-1.4/interpolation/ChangeLog *** gsl-1.3/interpolation/ChangeLog Sat Apr 27 19:57:33 2002 --- gsl-1.4/interpolation/ChangeLog Thu Jul 24 16:55:44 2003 *************** *** 1,6 **** Sat Apr 27 20:57:22 2002 Brian Gough * cspline.c (cspline_init_periodic): handle boundary effects ! correctly Sun Dec 2 22:48:23 2001 Brian Gough --- 1,11 ---- + 2003-07-24 Brian Gough + + * gsl_interp.h: removed duplicate declaration of + gsl_interp_accel_find + Sat Apr 27 20:57:22 2002 Brian Gough * cspline.c (cspline_init_periodic): handle boundary effects ! correctly Sun Dec 2 22:48:23 2001 Brian Gough diff -x.info* -rc2P gsl-1.3/interpolation/Makefile.am gsl-1.4/interpolation/Makefile.am *** gsl-1.3/interpolation/Makefile.am Sun Dec 2 22:41:12 2001 --- gsl-1.4/interpolation/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 9,18 **** noinst_HEADERS = bsearch.h - INCLUDES= -I$(top_builddir) TESTS = test ! test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 9,17 ---- noinst_HEADERS = bsearch.h INCLUDES= -I$(top_builddir) TESTS = test ! test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/interpolation/Makefile.in gsl-1.4/interpolation/Makefile.in *** gsl-1.3/interpolation/Makefile.in Wed Dec 18 22:39:57 2002 --- gsl-1.4/interpolation/Makefile.in Thu Aug 14 12:29:37 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslinterpolation.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslinterpolation.la *************** *** 99,196 **** TESTS = test ! test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslinterpolation_la_LDFLAGS = ! libgslinterpolation_la_LIBADD = ! libgslinterpolation_la_OBJECTS = accel.lo akima.lo bsearch.lo \ ! cspline.lo interp.lo linear.lo spline.lo poly.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslinterpolation.la ../poly/libgslpoly.la \ ! ../linalg/libgsllinalg.la ../blas/libgslblas.la \ ! ../vector/libgslvector.la ../block/libgslblock.la ../sys/libgslsys.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslinterpolation_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps interpolation/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,247 ---- TESTS = test ! test_LDADD = libgslinterpolation.la ../poly/libgslpoly.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../cblas/libgslcblas.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c + subdir = interpolation + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslinterpolation_la_LDFLAGS = ! libgslinterpolation_la_LIBADD = ! am_libgslinterpolation_la_OBJECTS = accel.lo akima.lo bsearch.lo \ ! cspline.lo interp.lo linear.lo spline.lo poly.lo ! libgslinterpolation_la_OBJECTS = $(am_libgslinterpolation_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslinterpolation.la ../poly/libgslpoly.la \ ! ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ ! ../blas/libgslblas.la ../matrix/libgslmatrix.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../complex/libgslcomplex.la ../cblas/libgslcblas.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslinterpolation_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu interpolation/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslinterpolation.la: $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_DEPENDENCIES) + $(LINK) $(libgslinterpolation_la_LDFLAGS) $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 201,337 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslinterpolation.la: $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_DEPENDENCIES) ! $(LINK) $(libgslinterpolation_la_LDFLAGS) $(libgslinterpolation_la_OBJECTS) $(libgslinterpolation_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = interpolation distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 252,456 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 340,389 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 459,525 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/interpolation/TODO gsl-1.4/interpolation/TODO *** gsl-1.3/interpolation/TODO Sun Dec 15 12:45:03 2002 --- gsl-1.4/interpolation/TODO Tue Apr 22 18:32:04 2003 *************** *** 6,7 **** --- 6,10 ---- is given for 'polynomial', particularly under what conditions one would be prefered over the other. + + 3. add akima splines without the Wodicka modification, so that the spline + is a smooth curve without corners. diff -x.info* -rc2P gsl-1.3/interpolation/akima.c gsl-1.4/interpolation/akima.c *** gsl-1.3/interpolation/akima.c Mon Nov 19 21:39:34 2001 --- gsl-1.4/interpolation/akima.c Fri Jul 25 15:18:11 2003 *************** *** 99,127 **** const double NE = fabs (m[i + 1] - m[i]) + fabs (m[i - 1] - m[i - 2]); if (NE == 0.0) ! { ! b[i] = m[i]; ! c[i] = 0.0; ! d[i] = 0.0; ! } else ! { ! const double h_i = x_array[i + 1] - x_array[i]; ! const double NE_next = fabs (m[i + 2] - m[i + 1]) + fabs (m[i] - m[i - 1]); ! const double alpha_i = fabs (m[i - 1] - m[i - 2]) / NE; ! double alpha_ip1; ! double tL_ip1; ! if (NE_next == 0.0) ! { ! tL_ip1 = m[i]; ! } ! else ! { ! alpha_ip1 = fabs (m[i] - m[i - 1]) / NE_next; ! tL_ip1 = (1.0 - alpha_ip1) * m[i] + alpha_ip1 * m[i + 1]; ! } ! b[i] = (1.0 - alpha_i) * m[i - 1] + alpha_i * m[i]; ! c[i] = (3.0 * m[i] - 2.0 * b[i] - tL_ip1) / h_i; ! d[i] = (b[i] + tL_ip1 - 2.0 * m[i]) / (h_i * h_i); ! } } } --- 99,127 ---- const double NE = fabs (m[i + 1] - m[i]) + fabs (m[i - 1] - m[i - 2]); if (NE == 0.0) ! { ! b[i] = m[i]; ! c[i] = 0.0; ! d[i] = 0.0; ! } else ! { ! const double h_i = x_array[i + 1] - x_array[i]; ! const double NE_next = fabs (m[i + 2] - m[i + 1]) + fabs (m[i] - m[i - 1]); ! const double alpha_i = fabs (m[i - 1] - m[i - 2]) / NE; ! double alpha_ip1; ! double tL_ip1; ! if (NE_next == 0.0) ! { ! tL_ip1 = m[i]; ! } ! else ! { ! alpha_ip1 = fabs (m[i] - m[i - 1]) / NE_next; ! tL_ip1 = (1.0 - alpha_ip1) * m[i] + alpha_ip1 * m[i + 1]; ! } ! b[i] = (1.0 - alpha_i) * m[i - 1] + alpha_i * m[i]; ! c[i] = (3.0 * m[i] - 2.0 * b[i] - tL_ip1) / h_i; ! d[i] = (b[i] + tL_ip1 - 2.0 * m[i]) / (h_i * h_i); ! } } } diff -x.info* -rc2P gsl-1.3/interpolation/bsearch.h gsl-1.4/interpolation/bsearch.h *** gsl-1.3/interpolation/bsearch.h Wed Oct 3 10:56:37 2001 --- gsl-1.4/interpolation/bsearch.h Fri Jul 25 15:18:21 2003 *************** *** 53,57 **** ! #ifdef HAVE_INLINE extern inline --- 53,57 ---- ! #if HAVE_INLINE extern inline diff -x.info* -rc2P gsl-1.3/interpolation/gsl_interp.h gsl-1.4/interpolation/gsl_interp.h *** gsl-1.3/interpolation/gsl_interp.h Mon Jun 10 13:09:23 2002 --- gsl-1.4/interpolation/gsl_interp.h Fri Jul 25 15:18:21 2003 *************** *** 114,118 **** gsl_interp_eval_deriv_e(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a, double * d); --- 114,118 ---- gsl_interp_eval_deriv_e(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a, double * d); *************** *** 120,129 **** gsl_interp_eval_deriv(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a); int gsl_interp_eval_deriv2_e(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a, double * d2); --- 120,129 ---- gsl_interp_eval_deriv(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a); int gsl_interp_eval_deriv2_e(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a, double * d2); *************** *** 131,135 **** gsl_interp_eval_deriv2(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a); int --- 131,135 ---- gsl_interp_eval_deriv2(const gsl_interp * obj, const double xa[], const double ya[], double x, ! gsl_interp_accel * a); int *************** *** 137,141 **** const double xa[], const double ya[], double a, double b, ! gsl_interp_accel * acc, double * result); --- 137,141 ---- const double xa[], const double ya[], double a, double b, ! gsl_interp_accel * acc, double * result); *************** *** 144,148 **** const double xa[], const double ya[], double a, double b, ! gsl_interp_accel * acc); void --- 144,148 ---- const double xa[], const double ya[], double a, double b, ! gsl_interp_accel * acc); void *************** *** 152,156 **** size_t index_lo, size_t index_hi); ! #ifdef HAVE_INLINE extern inline size_t gsl_interp_bsearch(const double x_array[], double x, --- 152,156 ---- size_t index_lo, size_t index_hi); ! #if HAVE_INLINE extern inline size_t gsl_interp_bsearch(const double x_array[], double x, *************** *** 175,182 **** #endif ! size_t ! gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x); ! ! #ifdef HAVE_INLINE extern inline size_t gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x) --- 175,179 ---- #endif ! #if HAVE_INLINE extern inline size_t gsl_interp_accel_find(gsl_interp_accel * a, const double xa[], size_t len, double x) diff -x.info* -rc2P gsl-1.3/interpolation/gsl_spline.h gsl-1.4/interpolation/gsl_spline.h *** gsl-1.3/interpolation/gsl_spline.h Mon Jun 10 13:04:37 2002 --- gsl-1.4/interpolation/gsl_spline.h Fri Jul 25 15:18:21 2003 *************** *** 45,49 **** gsl_spline * ! gsl_spline_alloc(const gsl_interp_type * T, size_t n); int --- 45,49 ---- gsl_spline * ! gsl_spline_alloc(const gsl_interp_type * T, size_t size); int *************** *** 61,65 **** gsl_spline_eval_deriv_e(const gsl_spline * spline, double x, ! gsl_interp_accel * a, double * y); --- 61,65 ---- gsl_spline_eval_deriv_e(const gsl_spline * spline, double x, ! gsl_interp_accel * a, double * y); *************** *** 67,76 **** gsl_spline_eval_deriv(const gsl_spline * spline, double x, ! gsl_interp_accel * a); int gsl_spline_eval_deriv2_e(const gsl_spline * spline, double x, ! gsl_interp_accel * a, double * y); --- 67,76 ---- gsl_spline_eval_deriv(const gsl_spline * spline, double x, ! gsl_interp_accel * a); int gsl_spline_eval_deriv2_e(const gsl_spline * spline, double x, ! gsl_interp_accel * a, double * y); *************** *** 78,87 **** gsl_spline_eval_deriv2(const gsl_spline * spline, double x, ! gsl_interp_accel * a); int gsl_spline_eval_integ_e(const gsl_spline * spline, double a, double b, ! gsl_interp_accel * acc, double * y); --- 78,87 ---- gsl_spline_eval_deriv2(const gsl_spline * spline, double x, ! gsl_interp_accel * a); int gsl_spline_eval_integ_e(const gsl_spline * spline, double a, double b, ! gsl_interp_accel * acc, double * y); *************** *** 89,93 **** gsl_spline_eval_integ(const gsl_spline * spline, double a, double b, ! gsl_interp_accel * acc); void --- 89,93 ---- gsl_spline_eval_integ(const gsl_spline * spline, double a, double b, ! gsl_interp_accel * acc); void diff -x.info* -rc2P gsl-1.3/interpolation/integ_eval.h gsl-1.4/interpolation/integ_eval.h *** gsl-1.3/interpolation/integ_eval.h Sat Jun 23 13:25:55 2001 --- gsl-1.4/interpolation/integ_eval.h Fri Jul 25 15:18:21 2003 *************** *** 24,28 **** static inline double integ_eval (double ai, double bi, double ci, double di, double xi, double a, ! double b) { const double t0 = b + a; --- 24,28 ---- static inline double integ_eval (double ai, double bi, double ci, double di, double xi, double a, ! double b) { const double t0 = b + a; diff -x.info* -rc2P gsl-1.3/interpolation/interp.c gsl-1.4/interpolation/interp.c *** gsl-1.3/interpolation/interp.c Mon Nov 19 21:39:34 2001 --- gsl-1.4/interpolation/interp.c Fri Jul 25 15:18:11 2003 *************** *** 126,131 **** double gsl_interp_eval (const gsl_interp * interp, ! const double xa[], const double ya[], double x, ! gsl_interp_accel * a) { double y; --- 126,131 ---- double gsl_interp_eval (const gsl_interp * interp, ! const double xa[], const double ya[], double x, ! gsl_interp_accel * a) { double y; *************** *** 160,165 **** double gsl_interp_eval_deriv (const gsl_interp * interp, ! const double xa[], const double ya[], double x, ! gsl_interp_accel * a) { double dydx; --- 160,165 ---- double gsl_interp_eval_deriv (const gsl_interp * interp, ! const double xa[], const double ya[], double x, ! gsl_interp_accel * a) { double dydx; *************** *** 194,199 **** double gsl_interp_eval_deriv2 (const gsl_interp * interp, ! const double xa[], const double ya[], double x, ! gsl_interp_accel * a) { double d2; --- 194,199 ---- double gsl_interp_eval_deriv2 (const gsl_interp * interp, ! const double xa[], const double ya[], double x, ! gsl_interp_accel * a) { double d2; *************** *** 230,236 **** double gsl_interp_eval_integ (const gsl_interp * interp, ! const double xa[], const double ya[], double a, double b, ! gsl_interp_accel * acc) { double result; --- 230,236 ---- double gsl_interp_eval_integ (const gsl_interp * interp, ! const double xa[], const double ya[], double a, double b, ! gsl_interp_accel * acc) { double result; diff -x.info* -rc2P gsl-1.3/interpolation/poly.c gsl-1.4/interpolation/poly.c *** gsl-1.3/interpolation/poly.c Sun Dec 2 22:47:22 2001 --- gsl-1.4/interpolation/poly.c Fri Jul 25 15:18:11 2003 *************** *** 41,45 **** { GSL_ERROR_NULL ("failed to allocate space for polynomial state", ! GSL_ENOMEM); } --- 41,45 ---- { GSL_ERROR_NULL ("failed to allocate space for polynomial state", ! GSL_ENOMEM); } *************** *** 76,80 **** static int polynomial_init (void *vstate, ! const double xa[], const double ya[], size_t size) { polynomial_state_t *state = (polynomial_state_t *) vstate; --- 76,80 ---- static int polynomial_init (void *vstate, ! const double xa[], const double ya[], size_t size) { polynomial_state_t *state = (polynomial_state_t *) vstate; *************** *** 87,92 **** static int polynomial_eval (const void *vstate, ! const double xa[], const double ya[], size_t size, double x, ! gsl_interp_accel * acc, double *y) { polynomial_state_t *state = (polynomial_state_t *) vstate; --- 87,92 ---- static int polynomial_eval (const void *vstate, ! const double xa[], const double ya[], size_t size, double x, ! gsl_interp_accel * acc, double *y) { polynomial_state_t *state = (polynomial_state_t *) vstate; *************** *** 100,105 **** static int polynomial_deriv (const void *vstate, ! const double xa[], const double ya[], size_t size, double x, ! gsl_interp_accel * acc, double *y) { polynomial_state_t *state = (polynomial_state_t *) vstate; --- 100,105 ---- static int polynomial_deriv (const void *vstate, ! const double xa[], const double ya[], size_t size, double x, ! gsl_interp_accel * acc, double *y) { polynomial_state_t *state = (polynomial_state_t *) vstate; *************** *** 114,119 **** static int polynomial_deriv2 (const void *vstate, ! const double xa[], const double ya[], size_t size, ! double x, gsl_interp_accel * acc, double *y) { polynomial_state_t *state = (polynomial_state_t *) vstate; --- 114,119 ---- static int polynomial_deriv2 (const void *vstate, ! const double xa[], const double ya[], size_t size, ! double x, gsl_interp_accel * acc, double *y) { polynomial_state_t *state = (polynomial_state_t *) vstate; *************** *** 128,133 **** static int polynomial_integ (const void *vstate, const double xa[], const double ya[], ! size_t size, gsl_interp_accel * acc, double a, double b, ! double *result) { polynomial_state_t *state = (polynomial_state_t *) vstate; --- 128,133 ---- static int polynomial_integ (const void *vstate, const double xa[], const double ya[], ! size_t size, gsl_interp_accel * acc, double a, double b, ! double *result) { polynomial_state_t *state = (polynomial_state_t *) vstate; diff -x.info* -rc2P gsl-1.3/interpolation/spline.c gsl-1.4/interpolation/spline.c *** gsl-1.3/interpolation/spline.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/interpolation/spline.c Fri Jul 25 15:18:11 2003 *************** *** 105,110 **** double gsl_spline_eval (const gsl_spline * spline, ! double x, ! gsl_interp_accel * a) { return gsl_interp_eval (spline->interp, --- 105,110 ---- double gsl_spline_eval (const gsl_spline * spline, ! double x, ! gsl_interp_accel * a) { return gsl_interp_eval (spline->interp, *************** *** 127,132 **** double gsl_spline_eval_deriv (const gsl_spline * spline, ! double x, ! gsl_interp_accel * a) { return gsl_interp_eval_deriv (spline->interp, --- 127,132 ---- double gsl_spline_eval_deriv (const gsl_spline * spline, ! double x, ! gsl_interp_accel * a) { return gsl_interp_eval_deriv (spline->interp, *************** *** 149,154 **** double gsl_spline_eval_deriv2 (const gsl_spline * spline, ! double x, ! gsl_interp_accel * a) { return gsl_interp_eval_deriv2 (spline->interp, --- 149,154 ---- double gsl_spline_eval_deriv2 (const gsl_spline * spline, ! double x, ! gsl_interp_accel * a) { return gsl_interp_eval_deriv2 (spline->interp, *************** *** 173,177 **** gsl_spline_eval_integ (const gsl_spline * spline, double a, double b, ! gsl_interp_accel * acc) { return gsl_interp_eval_integ (spline->interp, --- 173,177 ---- gsl_spline_eval_integ (const gsl_spline * spline, double a, double b, ! gsl_interp_accel * acc) { return gsl_interp_eval_integ (spline->interp, diff -x.info* -rc2P gsl-1.3/interpolation/test.c gsl-1.4/interpolation/test.c *** gsl-1.3/interpolation/test.c Sun Dec 2 22:42:27 2001 --- gsl-1.4/interpolation/test.c Sat Jul 26 17:29:55 2003 *************** *** 29,33 **** #include #include ! int --- 29,33 ---- #include #include ! #include int *************** *** 133,137 **** diff_integ = integ - test_i_table->y[i]; if (fabs (diff_y) > 1.e-10 || fabs(diff_deriv) > 1.0e-10 || fabs(diff_integ) > 1.0e-10) { ! status++; } } --- 133,137 ---- diff_integ = integ - test_i_table->y[i]; if (fabs (diff_y) > 1.e-10 || fabs(diff_deriv) > 1.0e-10 || fabs(diff_integ) > 1.0e-10) { ! status++; } } *************** *** 238,241 **** --- 238,243 ---- { int status = 0; + + gsl_ieee_env_setup (); argc = 0; /* prevent warnings about unused parameters */ diff -x.info* -rc2P gsl-1.3/linalg/ChangeLog gsl-1.4/linalg/ChangeLog *** gsl-1.3/linalg/ChangeLog Fri Oct 18 16:46:57 2002 --- gsl-1.4/linalg/ChangeLog Thu Jul 24 16:42:25 2003 *************** *** 1,2 **** --- 1,22 ---- + 2003-07-24 Brian Gough + + * tridiag.c (solve_cyc_tridiag_nonsym): fixed declarations of i so + they do not shadow each other + + 2003-05-30 Brian Gough + + * householder.c (gsl_linalg_householder_hv): converted to use blas + routines + + 2003-05-08 Brian Gough + + * test.c: added tests for QR_QRsolve and QRPT_QRsolve + + * qrpt.c (gsl_linalg_QRPT_QRsolve): fixed dgemv to use CblasTrans + when computing Q^T b + + * qr.c (gsl_linalg_QR_QRsolve): fixed dgemv to use CblasTrans when + computing Q^T b + Fri Oct 18 17:46:30 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/linalg/Makefile.am gsl-1.4/linalg/Makefile.am *** gsl-1.3/linalg/Makefile.am Thu Jan 24 18:40:03 2002 --- gsl-1.4/linalg/Makefile.am Sun Jul 27 09:50:25 2003 *************** *** 13,17 **** check_PROGRAMS = test ! test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../sys/libgslsys.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 13,17 ---- check_PROGRAMS = test ! test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/linalg/Makefile.in gsl-1.4/linalg/Makefile.in *** gsl-1.3/linalg/Makefile.in Wed Dec 18 22:38:12 2002 --- gsl-1.4/linalg/Makefile.in Thu Aug 14 12:30:32 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgsllinalg.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgsllinalg.la *************** *** 99,199 **** check_PROGRAMS = test ! test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../sys/libgslsys.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgsllinalg_la_LDFLAGS = ! libgsllinalg_la_LIBADD = ! libgsllinalg_la_OBJECTS = multiply.lo exponential.lo tridiag.lo lu.lo \ ! luc.lo hh.lo qr.lo qrpt.lo svd.lo householder.lo householdercomplex.lo \ ! cholesky.lo symmtd.lo hermtd.lo bidiag.lo balance.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgsllinalg.la ../blas/libgslblas.la \ ! ../cblas/libgslcblas.la ../permutation/libgslpermutation.la \ ! ../matrix/libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../complex/libgslcomplex.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../sys/libgslsys.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgsllinalg_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps linalg/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,248 ---- check_PROGRAMS = test ! test_LDADD = libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c + subdir = linalg + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgsllinalg_la_LDFLAGS = ! libgsllinalg_la_LIBADD = ! am_libgsllinalg_la_OBJECTS = multiply.lo exponential.lo tridiag.lo lu.lo \ ! luc.lo hh.lo qr.lo qrpt.lo svd.lo householder.lo \ ! householdercomplex.lo cholesky.lo symmtd.lo hermtd.lo bidiag.lo \ ! balance.lo ! libgsllinalg_la_OBJECTS = $(am_libgsllinalg_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgsllinalg.la ../blas/libgslblas.la \ ! ../cblas/libgslcblas.la ../permutation/libgslpermutation.la \ ! ../matrix/libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../complex/libgslcomplex.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgsllinalg_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu linalg/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgsllinalg.la: $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_DEPENDENCIES) + $(LINK) $(libgsllinalg_la_LDFLAGS) $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 204,340 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgsllinalg.la: $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_DEPENDENCIES) ! $(LINK) $(libgsllinalg_la_LDFLAGS) $(libgsllinalg_la_OBJECTS) $(libgsllinalg_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = linalg distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 253,457 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 343,392 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 460,526 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/linalg/apply_givens.c gsl-1.4/linalg/apply_givens.c *** gsl-1.3/linalg/apply_givens.c Sun Jun 17 20:48:04 2001 --- gsl-1.4/linalg/apply_givens.c Fri Jul 25 15:18:11 2003 *************** *** 20,24 **** inline static void apply_givens_qr (size_t M, size_t N, gsl_matrix * Q, gsl_matrix * R, ! size_t i, size_t j, double c, double s) { size_t k; --- 20,24 ---- inline static void apply_givens_qr (size_t M, size_t N, gsl_matrix * Q, gsl_matrix * R, ! size_t i, size_t j, double c, double s) { size_t k; diff -x.info* -rc2P gsl-1.3/linalg/bidiag.c gsl-1.4/linalg/bidiag.c *** gsl-1.3/linalg/bidiag.c Mon Aug 12 19:12:49 2002 --- gsl-1.4/linalg/bidiag.c Fri Jul 25 15:18:11 2003 *************** *** 35,51 **** * The full matrix for U can be obtained as the product * ! * U = U_N .. U_2 U_1 * * where * ! * U_i = (I - tau_i * v_i * v_i') * ! * and where v_i is a Householder vector * ! * v_i = [1, A(i+2,i), A(i+3,i), ... , A(M,i)] * * The full matrix for V can be obtained as the product * ! * V = V_N .. V_2 V_1 * * where --- 35,51 ---- * The full matrix for U can be obtained as the product * ! * U = U_1 U_2 .. U_N * * where * ! * U_i = (I - tau_i * u_i * u_i') * ! * and where u_i is a Householder vector * ! * u_i = [0, .. , 0, 1, A(i+1,i), A(i+3,i), .. , A(M,i)] * * The full matrix for V can be obtained as the product * ! * V = V_1 V_2 .. V_(N-2) * * where *************** *** 55,61 **** * and where v_i is a Householder vector * ! * v_i = [1, A(i,i+2), A(i,i+3), ... , A(i,N)] * ! * See Golub & Van Loan, "Matrix Computations" (3rd ed), Algorithm 5.4.2 */ #include --- 55,65 ---- * and where v_i is a Householder vector * ! * v_i = [0, .. , 0, 1, A(i,i+2), A(i,i+3), .. , A(i,N)] ! * ! * See Golub & Van Loan, "Matrix Computations" (3rd ed), Algorithm 5.4.2 * ! * Note: this description uses 1-based indices. The code below uses ! * 0-based indices ! */ #include *************** *** 132,136 **** } } ! return GSL_SUCCESS; } --- 136,140 ---- } } ! return GSL_SUCCESS; } *************** *** 206,210 **** for (i = N - 1; i > 0 && i--;) ! { /* Householder row transformation to accumulate V */ gsl_vector_const_view r = gsl_matrix_const_row (A, i); --- 210,214 ---- for (i = N - 1; i > 0 && i--;) ! { /* Householder row transformation to accumulate V */ gsl_vector_const_view r = gsl_matrix_const_row (A, i); *************** *** 225,229 **** for (j = N; j > 0 && j--;) ! { /* Householder column transformation to accumulate U */ gsl_vector_const_view c = gsl_matrix_const_column (A, j); --- 229,233 ---- for (j = N; j > 0 && j--;) ! { /* Householder column transformation to accumulate U */ gsl_vector_const_view c = gsl_matrix_const_column (A, j); *************** *** 277,281 **** for (i = N - 1; i > 0 && i--;) ! { /* Householder row transformation to accumulate V */ gsl_vector_const_view r = gsl_matrix_const_row (A, i); --- 281,285 ---- for (i = N - 1; i > 0 && i--;) ! { /* Householder row transformation to accumulate V */ gsl_vector_const_view r = gsl_matrix_const_row (A, i); *************** *** 303,307 **** for (j = N; j > 0 && j--;) ! { /* Householder column transformation to accumulate U */ double tj = gsl_vector_get (tau_U, j); --- 307,311 ---- for (j = N; j > 0 && j--;) ! { /* Householder column transformation to accumulate U */ double tj = gsl_vector_get (tau_U, j); diff -x.info* -rc2P gsl-1.3/linalg/gsl_linalg.h gsl-1.4/linalg/gsl_linalg.h *** gsl-1.3/linalg/gsl_linalg.h Mon Jun 10 13:04:37 2002 --- gsl-1.4/linalg/gsl_linalg.h Fri Jul 25 15:18:21 2003 *************** *** 32,37 **** #define __END_DECLS } #else ! #define __BEGIN_DECLS /* empty */ ! #define __END_DECLS /* empty */ #endif --- 32,37 ---- #define __END_DECLS } #else ! #define __BEGIN_DECLS /* empty */ ! #define __END_DECLS /* empty */ #endif *************** *** 55,60 **** */ int gsl_linalg_matmult (const gsl_matrix * A, ! const gsl_matrix * B, ! gsl_matrix * C); --- 55,60 ---- */ int gsl_linalg_matmult (const gsl_matrix * A, ! const gsl_matrix * B, ! gsl_matrix * C); *************** *** 66,73 **** */ int gsl_linalg_matmult_mod (const gsl_matrix * A, ! gsl_linalg_matrix_mod_t modA, ! const gsl_matrix * B, ! gsl_linalg_matrix_mod_t modB, ! gsl_matrix * C); /* Calculate the matrix exponential by the scaling and --- 66,73 ---- */ int gsl_linalg_matmult_mod (const gsl_matrix * A, ! gsl_linalg_matrix_mod_t modA, ! const gsl_matrix * B, ! gsl_linalg_matrix_mod_t modB, ! gsl_matrix * C); /* Calculate the matrix exponential by the scaling and *************** *** 110,113 **** --- 110,117 ---- gsl_matrix_complex * A); + int gsl_linalg_complex_householder_hv (gsl_complex tau, + const gsl_vector_complex * v, + gsl_vector_complex * w); + /* Singular Value Decomposition *************** *** 146,151 **** int gsl_linalg_LU_solve (const gsl_matrix * LU, ! const gsl_permutation * p, ! const gsl_vector * b, gsl_vector * x); --- 150,155 ---- int gsl_linalg_LU_solve (const gsl_matrix * LU, ! const gsl_permutation * p, ! const gsl_vector * b, gsl_vector * x); *************** *** 155,167 **** int gsl_linalg_LU_refine (const gsl_matrix * A, ! const gsl_matrix * LU, ! const gsl_permutation * p, ! const gsl_vector * b, ! gsl_vector * x, ! gsl_vector * residual); int gsl_linalg_LU_invert (const gsl_matrix * LU, ! const gsl_permutation * p, ! gsl_matrix * inverse); double gsl_linalg_LU_det (gsl_matrix * LU, int signum); --- 159,171 ---- int gsl_linalg_LU_refine (const gsl_matrix * A, ! const gsl_matrix * LU, ! const gsl_permutation * p, ! const gsl_vector * b, ! gsl_vector * x, ! gsl_vector * residual); int gsl_linalg_LU_invert (const gsl_matrix * LU, ! const gsl_permutation * p, ! gsl_matrix * inverse); double gsl_linalg_LU_det (gsl_matrix * LU, int signum); *************** *** 206,215 **** int gsl_linalg_QR_decomp (gsl_matrix * A, ! gsl_vector * tau); int gsl_linalg_QR_solve (const gsl_matrix * QR, ! const gsl_vector * tau, ! const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QR_svx (const gsl_matrix * QR, --- 210,219 ---- int gsl_linalg_QR_decomp (gsl_matrix * A, ! gsl_vector * tau); int gsl_linalg_QR_solve (const gsl_matrix * QR, ! const gsl_vector * tau, ! const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QR_svx (const gsl_matrix * QR, *************** *** 225,235 **** int gsl_linalg_QR_QRsolve (gsl_matrix * Q, ! gsl_matrix * R, ! const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QR_Rsolve (const gsl_matrix * QR, const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QR_Rsvx (const gsl_matrix * QR, --- 229,239 ---- int gsl_linalg_QR_QRsolve (gsl_matrix * Q, ! gsl_matrix * R, ! const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QR_Rsolve (const gsl_matrix * QR, const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QR_Rsvx (const gsl_matrix * QR, *************** *** 237,247 **** int gsl_linalg_QR_update (gsl_matrix * Q, ! gsl_matrix * R, ! gsl_vector * w, ! const gsl_vector * v); int gsl_linalg_QR_QTvec (const gsl_matrix * QR, ! const gsl_vector * tau, ! gsl_vector * v); int gsl_linalg_QR_Qvec (const gsl_matrix * QR, --- 241,251 ---- int gsl_linalg_QR_update (gsl_matrix * Q, ! gsl_matrix * R, ! gsl_vector * w, ! const gsl_vector * v); int gsl_linalg_QR_QTvec (const gsl_matrix * QR, ! const gsl_vector * tau, ! gsl_vector * v); int gsl_linalg_QR_Qvec (const gsl_matrix * QR, *************** *** 250,256 **** int gsl_linalg_QR_unpack (const gsl_matrix * QR, ! const gsl_vector * tau, ! gsl_matrix * Q, ! gsl_matrix * R); int gsl_linalg_R_solve (const gsl_matrix * R, --- 254,260 ---- int gsl_linalg_QR_unpack (const gsl_matrix * QR, ! const gsl_vector * tau, ! gsl_matrix * Q, ! gsl_matrix * R); int gsl_linalg_R_solve (const gsl_matrix * R, *************** *** 265,271 **** int gsl_linalg_QRPT_decomp (gsl_matrix * A, ! gsl_vector * tau, ! gsl_permutation * p, ! int *signum, gsl_vector * norm); --- 269,275 ---- int gsl_linalg_QRPT_decomp (gsl_matrix * A, ! gsl_vector * tau, ! gsl_permutation * p, ! int *signum, gsl_vector * norm); *************** *** 278,285 **** int gsl_linalg_QRPT_solve (const gsl_matrix * QR, ! const gsl_vector * tau, ! const gsl_permutation * p, const gsl_vector * b, ! gsl_vector * x); --- 282,289 ---- int gsl_linalg_QRPT_solve (const gsl_matrix * QR, ! const gsl_vector * tau, ! const gsl_permutation * p, const gsl_vector * b, ! gsl_vector * x); *************** *** 290,301 **** int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, ! const gsl_matrix * R, ! const gsl_permutation * p, ! const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, const gsl_permutation * p, ! const gsl_vector * b, gsl_vector * x); --- 294,305 ---- int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, ! const gsl_matrix * R, ! const gsl_permutation * p, ! const gsl_vector * b, ! gsl_vector * x); int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, const gsl_permutation * p, ! const gsl_vector * b, gsl_vector * x); *************** *** 305,312 **** int gsl_linalg_QRPT_update (gsl_matrix * Q, ! gsl_matrix * R, ! const gsl_permutation * p, ! gsl_vector * u, ! const gsl_vector * v); /* Cholesky Decomposition */ --- 309,316 ---- int gsl_linalg_QRPT_update (gsl_matrix * Q, ! gsl_matrix * R, ! const gsl_permutation * p, ! gsl_vector * u, ! const gsl_vector * v); /* Cholesky Decomposition */ *************** *** 370,376 **** */ int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag, ! const gsl_vector * offdiag, ! const gsl_vector * b, ! gsl_vector * x); /* Linear solve for a nonsymmetric tridiagonal system. --- 374,380 ---- */ int gsl_linalg_solve_symm_tridiag (const gsl_vector * diag, ! const gsl_vector * offdiag, ! const gsl_vector * b, ! gsl_vector * x); /* Linear solve for a nonsymmetric tridiagonal system. *************** *** 385,392 **** */ int gsl_linalg_solve_tridiag (const gsl_vector * diag, ! const gsl_vector * abovediag, ! const gsl_vector * belowdiag, ! const gsl_vector * b, ! gsl_vector * x); --- 389,396 ---- */ int gsl_linalg_solve_tridiag (const gsl_vector * diag, ! const gsl_vector * abovediag, ! const gsl_vector * belowdiag, ! const gsl_vector * b, ! gsl_vector * x); *************** *** 403,409 **** */ int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag, ! const gsl_vector * offdiag, ! const gsl_vector * b, ! gsl_vector * x); /* Linear solve for a nonsymmetric cyclic tridiagonal system. --- 407,413 ---- */ int gsl_linalg_solve_symm_cyc_tridiag (const gsl_vector * diag, ! const gsl_vector * offdiag, ! const gsl_vector * b, ! gsl_vector * x); /* Linear solve for a nonsymmetric cyclic tridiagonal system. *************** *** 419,426 **** */ int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag, ! const gsl_vector * abovediag, ! const gsl_vector * belowdiag, ! const gsl_vector * b, ! gsl_vector * x); --- 423,430 ---- */ int gsl_linalg_solve_cyc_tridiag (const gsl_vector * diag, ! const gsl_vector * abovediag, ! const gsl_vector * belowdiag, ! const gsl_vector * b, ! gsl_vector * x); diff -x.info* -rc2P gsl-1.3/linalg/hermtd.c gsl-1.4/linalg/hermtd.c *** gsl-1.3/linalg/hermtd.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/hermtd.c Fri Jul 25 15:18:12 2003 *************** *** 1,3 **** ! /* linalg/hetd.c * * Copyright (C) 2001 Brian Gough --- 1,3 ---- ! /* linalg/hermtd.c * * Copyright (C) 2001 Brian Gough *************** *** 31,37 **** * lower triangular part of the input matrix below the first subdiagonal. * ! * * The full matrix for Q can be obtained as the product * ! * Q = Q_N .. Q_2 Q_1 * * where --- 31,37 ---- * lower triangular part of the input matrix below the first subdiagonal. * ! * The full matrix for Q can be obtained as the product * ! * Q = Q_N ... Q_2 Q_1 * * where *************** *** 41,45 **** * and where v_i is a Householder vector * ! * v_i = [1, A(i+2,i), A(i+3,i), ... , A(N,i)] * * This storage scheme is the same as in LAPACK. See LAPACK's --- 41,45 ---- * and where v_i is a Householder vector * ! * v_i = [0, ..., 0, 1, A(i+2,i), A(i+3,i), ... , A(N,i)] * * This storage scheme is the same as in LAPACK. See LAPACK's *************** *** 163,167 **** for (i = N - 1; i > 0 && i--;) ! { gsl_complex ti = gsl_vector_complex_get (tau, i); --- 163,167 ---- for (i = N - 1; i > 0 && i--;) ! { gsl_complex ti = gsl_vector_complex_get (tau, i); diff -x.info* -rc2P gsl-1.3/linalg/hh.c gsl-1.4/linalg/hh.c *** gsl-1.3/linalg/hh.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/hh.c Fri Jul 25 15:18:12 2003 *************** *** 78,175 **** if (d == 0) ! { ! GSL_ERROR ("could not allocate memory for workspace", GSL_ENOMEM); ! } /* Perform Householder transformation. */ for (i = 0; i < N; i++) ! { ! const REAL aii = gsl_matrix_get (A, i, i); ! REAL alpha; ! REAL f; ! REAL ak; ! REAL max_norm = 0.0; ! REAL r = 0.0; ! ! for (k = i; k < M; k++) ! { ! REAL aki = gsl_matrix_get (A, k, i); ! r += aki * aki; ! } ! ! if (r == 0.0) ! { ! /* Rank of matrix is less than size1. */ free (d); GSL_ERROR ("matrix is rank deficient", GSL_ESING); ! } ! alpha = sqrt (r) * GSL_SIGN (aii); ! ak = 1.0 / (r + alpha * aii); ! gsl_matrix_set (A, i, i, aii + alpha); ! d[i] = -alpha; ! for (k = i + 1; k < N; k++) ! { ! REAL norm = 0.0; ! f = 0.0; ! for (j = i; j < M; j++) ! { ! REAL ajk = gsl_matrix_get (A, j, k); ! REAL aji = gsl_matrix_get (A, j, i); ! norm += ajk * ajk; ! f += ajk * aji; ! } ! max_norm = GSL_MAX (max_norm, norm); ! ! f *= ak; ! ! for (j = i; j < M; j++) ! { ! REAL ajk = gsl_matrix_get (A, j, k); ! REAL aji = gsl_matrix_get (A, j, i); ! gsl_matrix_set (A, j, k, ajk - f * aji); ! } ! } ! ! if (fabs (alpha) < 2.0 * GSL_DBL_EPSILON * sqrt (max_norm)) ! { ! /* Apparent singularity. */ ! free (d); ! GSL_ERROR("apparent singularity detected", GSL_ESING); ! } ! ! /* Perform update of RHS. */ ! ! f = 0.0; ! for (j = i; j < M; j++) ! { ! f += gsl_vector_get (x, j) * gsl_matrix_get (A, j, i); ! } ! f *= ak; ! for (j = i; j < M; j++) ! { ! REAL xj = gsl_vector_get (x, j); REAL aji = gsl_matrix_get (A, j, i); ! gsl_vector_set (x, j, xj - f * aji); ! } ! } /* Perform back-substitution. */ for (i = N; i > 0 && i--;) ! { ! REAL xi = gsl_vector_get (x, i); ! REAL sum = 0.0; ! for (k = i + 1; k < N; k++) ! { ! sum += gsl_matrix_get (A, i, k) * gsl_vector_get (x, k); ! } ! gsl_vector_set (x, i, (xi - sum) / d[i]); ! } free (d); --- 78,175 ---- if (d == 0) ! { ! GSL_ERROR ("could not allocate memory for workspace", GSL_ENOMEM); ! } /* Perform Householder transformation. */ for (i = 0; i < N; i++) ! { ! const REAL aii = gsl_matrix_get (A, i, i); ! REAL alpha; ! REAL f; ! REAL ak; ! REAL max_norm = 0.0; ! REAL r = 0.0; ! ! for (k = i; k < M; k++) ! { ! REAL aki = gsl_matrix_get (A, k, i); ! r += aki * aki; ! } ! ! if (r == 0.0) ! { ! /* Rank of matrix is less than size1. */ free (d); GSL_ERROR ("matrix is rank deficient", GSL_ESING); ! } ! alpha = sqrt (r) * GSL_SIGN (aii); ! ak = 1.0 / (r + alpha * aii); ! gsl_matrix_set (A, i, i, aii + alpha); ! d[i] = -alpha; ! for (k = i + 1; k < N; k++) ! { ! REAL norm = 0.0; ! f = 0.0; ! for (j = i; j < M; j++) ! { ! REAL ajk = gsl_matrix_get (A, j, k); ! REAL aji = gsl_matrix_get (A, j, i); ! norm += ajk * ajk; ! f += ajk * aji; ! } ! max_norm = GSL_MAX (max_norm, norm); ! ! f *= ak; ! ! for (j = i; j < M; j++) ! { ! REAL ajk = gsl_matrix_get (A, j, k); ! REAL aji = gsl_matrix_get (A, j, i); ! gsl_matrix_set (A, j, k, ajk - f * aji); ! } ! } ! ! if (fabs (alpha) < 2.0 * GSL_DBL_EPSILON * sqrt (max_norm)) ! { ! /* Apparent singularity. */ ! free (d); ! GSL_ERROR("apparent singularity detected", GSL_ESING); ! } ! ! /* Perform update of RHS. */ ! ! f = 0.0; ! for (j = i; j < M; j++) ! { ! f += gsl_vector_get (x, j) * gsl_matrix_get (A, j, i); ! } ! f *= ak; ! for (j = i; j < M; j++) ! { ! REAL xj = gsl_vector_get (x, j); REAL aji = gsl_matrix_get (A, j, i); ! gsl_vector_set (x, j, xj - f * aji); ! } ! } /* Perform back-substitution. */ for (i = N; i > 0 && i--;) ! { ! REAL xi = gsl_vector_get (x, i); ! REAL sum = 0.0; ! for (k = i + 1; k < N; k++) ! { ! sum += gsl_matrix_get (A, i, k) * gsl_vector_get (x, k); ! } ! gsl_vector_set (x, i, (xi - sum) / d[i]); ! } free (d); diff -x.info* -rc2P gsl-1.3/linalg/householder.c gsl-1.4/linalg/householder.c *** gsl-1.3/linalg/householder.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/householder.c Fri Jul 25 15:18:12 2003 *************** *** 153,185 **** { /* applies a householder transformation v to vector w */ ! size_t i; ! double d = 0; if (tau == 0) return GSL_SUCCESS ; ! /* d = v'w */ ! d = gsl_vector_get(w,0); ! for (i = 1 ; i < v->size ; i++) ! { ! d += gsl_vector_get(v,i) * gsl_vector_get(w,i); ! } ! /* w = w - tau (v) (v'w) */ ! ! { ! double w0 = gsl_vector_get (w,0); ! gsl_vector_set (w, 0, w0 - tau * d); ! } ! for (i = 1; i < v->size ; i++) { ! double wi = gsl_vector_get (w,i); ! double vi = gsl_vector_get (v,i); ! gsl_vector_set (w, i, wi - tau * vi * d); } ! return GSL_SUCCESS; } --- 153,184 ---- { /* applies a householder transformation v to vector w */ ! const size_t N = v->size; if (tau == 0) return GSL_SUCCESS ; ! { ! /* compute d = v'w */ ! double d0 = gsl_vector_get(w,0); ! double d1, d; ! gsl_vector_const_view v1 = gsl_vector_const_subvector(v, 1, N-1); ! gsl_vector_view w1 = gsl_vector_subvector(w, 1, N-1); ! gsl_blas_ddot (&v1.vector, &w1.vector, &d1); ! ! d = d0 + d1; ! /* compute w = w - tau (v) (v'w) */ ! { ! double w0 = gsl_vector_get (w,0); ! gsl_vector_set (w, 0, w0 - tau * d); } ! ! gsl_blas_daxpy (-tau * d, &v1.vector, &w1.vector); ! } ! return GSL_SUCCESS; } diff -x.info* -rc2P gsl-1.3/linalg/householdercomplex.c gsl-1.4/linalg/householdercomplex.c *** gsl-1.3/linalg/householdercomplex.c Thu Oct 17 15:16:05 2002 --- gsl-1.4/linalg/householdercomplex.c Fri Jul 25 15:18:12 2003 *************** *** 18,21 **** --- 18,39 ---- */ + /* Computes a householder transformation matrix H such that + * + * H' v = -/+ |v| e_1 + * + * where e_1 is the first unit vector. On exit the matrix H can be + * computed from the return values (tau, v) + * + * H = I - tau * w * w' + * + * where w = (1, v(2), ..., v(N)). The nonzero element of the result + * vector -/+|v| e_1 is stored in v(1). + * + * Note that the matrix H' in the householder transformation is the + * hermitian conjugate of H. To compute H'v, pass the conjugate of + * tau as the first argument to gsl_linalg_householder_hm() rather + * than tau itself. See the LAPACK function CLARFG for details of this + * convention. */ + #include #include *************** *** 147,150 **** --- 165,207 ---- } + return GSL_SUCCESS; + } + + int + gsl_linalg_complex_householder_hv (gsl_complex tau, const gsl_vector_complex * v, gsl_vector_complex * w) + { + const size_t N = v->size; + + if (GSL_REAL(tau) == 0.0 && GSL_IMAG(tau) == 0.0) + return GSL_SUCCESS; + + { + /* compute z = v'w */ + + gsl_complex z0 = gsl_vector_complex_get(w,0); + gsl_complex z1, z; + gsl_complex tz, ntz; + + gsl_vector_complex_const_view v1 = gsl_vector_complex_const_subvector(v, 1, N-1); + gsl_vector_complex_view w1 = gsl_vector_complex_subvector(w, 1, N-1); + + gsl_blas_zdotc(&v1.vector, &w1.vector, &z1); + + z = gsl_complex_add (z0, z1); + + tz = gsl_complex_mul(tau, z); + ntz = gsl_complex_negative (tz); + + /* compute w = w - tau * (v'w) * v */ + + { + gsl_complex w0 = gsl_vector_complex_get(w, 0); + gsl_complex w0ntz = gsl_complex_add (w0, ntz); + gsl_vector_complex_set (w, 0, w0ntz); + } + + gsl_blas_zaxpy(ntz, &v1.vector, &w1.vector); + } + return GSL_SUCCESS; } diff -x.info* -rc2P gsl-1.3/linalg/lu.c gsl-1.4/linalg/lu.c *** gsl-1.3/linalg/lu.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/lu.c Fri Jul 25 15:18:12 2003 *************** *** 76,121 **** for (j = 0; j < N - 1; j++) ! { ! /* Find maximum in the j-th column */ ! REAL ajj, max = fabs (gsl_matrix_get (A, j, j)); ! size_t i_pivot = j; ! for (i = j + 1; i < N; i++) ! { ! REAL aij = fabs (gsl_matrix_get (A, i, j)); ! ! if (aij > max) ! { ! max = aij; ! i_pivot = i; ! } ! } ! ! if (i_pivot != j) ! { ! gsl_matrix_swap_rows (A, j, i_pivot); ! gsl_permutation_swap (p, j, i_pivot); ! *signum = -(*signum); ! } ! ! ajj = gsl_matrix_get (A, j, j); ! ! if (ajj != 0.0) ! { ! for (i = j + 1; i < N; i++) ! { ! REAL aij = gsl_matrix_get (A, i, j) / ajj; ! gsl_matrix_set (A, i, j, aij); ! ! for (k = j + 1; k < N; k++) ! { ! REAL aik = gsl_matrix_get (A, i, k); ! REAL ajk = gsl_matrix_get (A, j, k); ! gsl_matrix_set (A, i, k, aik - aij * ajk); ! } ! } ! } ! } return GSL_SUCCESS; --- 76,121 ---- for (j = 0; j < N - 1; j++) ! { ! /* Find maximum in the j-th column */ ! REAL ajj, max = fabs (gsl_matrix_get (A, j, j)); ! size_t i_pivot = j; ! for (i = j + 1; i < N; i++) ! { ! REAL aij = fabs (gsl_matrix_get (A, i, j)); ! ! if (aij > max) ! { ! max = aij; ! i_pivot = i; ! } ! } ! ! if (i_pivot != j) ! { ! gsl_matrix_swap_rows (A, j, i_pivot); ! gsl_permutation_swap (p, j, i_pivot); ! *signum = -(*signum); ! } ! ! ajj = gsl_matrix_get (A, j, j); ! ! if (ajj != 0.0) ! { ! for (i = j + 1; i < N; i++) ! { ! REAL aij = gsl_matrix_get (A, i, j) / ajj; ! gsl_matrix_set (A, i, j, aij); ! ! for (k = j + 1; k < N; k++) ! { ! REAL aik = gsl_matrix_get (A, i, k); ! REAL ajk = gsl_matrix_get (A, j, k); ! gsl_matrix_set (A, i, k, aik - aij * ajk); ! } ! } ! } ! } return GSL_SUCCESS; *************** *** 249,253 **** if (status_i) ! status = status_i; } --- 249,253 ---- if (status_i) ! status = status_i; } *************** *** 299,310 **** if (u < 0) ! { ! s *= -1; ! } else if (u == 0) ! { ! s = 0; ! break; ! } } --- 299,310 ---- if (u < 0) ! { ! s *= -1; ! } else if (u == 0) ! { ! s = 0; ! break; ! } } diff -x.info* -rc2P gsl-1.3/linalg/luc.c gsl-1.4/linalg/luc.c *** gsl-1.3/linalg/luc.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/luc.c Fri Jul 25 15:18:12 2003 *************** *** 75,118 **** for (j = 0; j < N - 1; j++) ! { ! /* Find maximum in the j-th column */ ! gsl_complex ajj = gsl_matrix_complex_get (A, j, j); double max = gsl_complex_abs (ajj); ! size_t i_pivot = j; ! for (i = j + 1; i < N; i++) ! { ! gsl_complex aij = gsl_matrix_complex_get (A, i, j); double ai = gsl_complex_abs (aij); ! if (ai > max) ! { ! max = ai; ! i_pivot = i; ! } ! } ! ! if (i_pivot != j) ! { ! gsl_matrix_complex_swap_rows (A, j, i_pivot); ! gsl_permutation_swap (p, j, i_pivot); ! *signum = -(*signum); ! } ! ! ajj = gsl_matrix_complex_get (A, j, j); ! ! if (!(GSL_REAL(ajj) == 0.0 && GSL_IMAG(ajj) == 0.0)) ! { ! for (i = j + 1; i < N; i++) ! { ! gsl_complex aij_orig = gsl_matrix_complex_get (A, i, j); gsl_complex aij = gsl_complex_div (aij_orig, ajj); ! gsl_matrix_complex_set (A, i, j, aij); ! for (k = j + 1; k < N; k++) ! { ! gsl_complex aik = gsl_matrix_complex_get (A, i, k); ! gsl_complex ajk = gsl_matrix_complex_get (A, j, k); /* aik = aik - aij * ajk */ --- 75,118 ---- for (j = 0; j < N - 1; j++) ! { ! /* Find maximum in the j-th column */ ! gsl_complex ajj = gsl_matrix_complex_get (A, j, j); double max = gsl_complex_abs (ajj); ! size_t i_pivot = j; ! for (i = j + 1; i < N; i++) ! { ! gsl_complex aij = gsl_matrix_complex_get (A, i, j); double ai = gsl_complex_abs (aij); ! if (ai > max) ! { ! max = ai; ! i_pivot = i; ! } ! } ! ! if (i_pivot != j) ! { ! gsl_matrix_complex_swap_rows (A, j, i_pivot); ! gsl_permutation_swap (p, j, i_pivot); ! *signum = -(*signum); ! } ! ! ajj = gsl_matrix_complex_get (A, j, j); ! ! if (!(GSL_REAL(ajj) == 0.0 && GSL_IMAG(ajj) == 0.0)) ! { ! for (i = j + 1; i < N; i++) ! { ! gsl_complex aij_orig = gsl_matrix_complex_get (A, i, j); gsl_complex aij = gsl_complex_div (aij_orig, ajj); ! gsl_matrix_complex_set (A, i, j, aij); ! for (k = j + 1; k < N; k++) ! { ! gsl_complex aik = gsl_matrix_complex_get (A, i, k); ! gsl_complex ajk = gsl_matrix_complex_get (A, j, k); /* aik = aik - aij * ajk */ *************** *** 121,129 **** gsl_complex aik_new = gsl_complex_sub (aik, aijajk); ! gsl_matrix_complex_set (A, i, k, aik_new); ! } ! } ! } ! } return GSL_SUCCESS; --- 121,129 ---- gsl_complex aik_new = gsl_complex_sub (aik, aijajk); ! gsl_matrix_complex_set (A, i, k, aik_new); ! } ! } ! } ! } return GSL_SUCCESS; *************** *** 266,270 **** if (status_i) ! status = status_i; } --- 266,270 ---- if (status_i) ! status = status_i; } *************** *** 320,327 **** if (r == 0) ! { ! phase = gsl_complex_rect(0.0, 0.0); ! break; ! } else { --- 320,327 ---- if (r == 0) ! { ! phase = gsl_complex_rect(0.0, 0.0); ! break; ! } else { diff -x.info* -rc2P gsl-1.3/linalg/multiply.c gsl-1.4/linalg/multiply.c *** gsl-1.3/linalg/multiply.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/multiply.c Fri Jul 25 15:18:12 2003 *************** *** 41,59 **** for (i = 0; i < C->size1; i++) ! { ! for (j = 0; j < C->size2; j++) ! { ! a = gsl_matrix_get (A, i, 0); ! b = gsl_matrix_get (B, 0, j); ! temp = a * b; ! for (k = 1; k < A->size2; k++) ! { ! a = gsl_matrix_get (A, i, k); ! b = gsl_matrix_get (B, k, j); ! temp += a * b; ! } ! gsl_matrix_set (C, i, j, temp); ! } ! } return GSL_SUCCESS; --- 41,59 ---- for (i = 0; i < C->size1; i++) ! { ! for (j = 0; j < C->size2; j++) ! { ! a = gsl_matrix_get (A, i, 0); ! b = gsl_matrix_get (B, 0, j); ! temp = a * b; ! for (k = 1; k < A->size2; k++) ! { ! a = gsl_matrix_get (A, i, k); ! b = gsl_matrix_get (B, k, j); ! temp += a * b; ! } ! gsl_matrix_set (C, i, j, temp); ! } ! } return GSL_SUCCESS; *************** *** 64,69 **** int gsl_linalg_matmult_mod (const gsl_matrix * A, gsl_linalg_matrix_mod_t modA, ! const gsl_matrix * B, gsl_linalg_matrix_mod_t modB, ! gsl_matrix * C) { if (modA == GSL_LINALG_MOD_NONE && modB == GSL_LINALG_MOD_NONE) --- 64,69 ---- int gsl_linalg_matmult_mod (const gsl_matrix * A, gsl_linalg_matrix_mod_t modA, ! const gsl_matrix * B, gsl_linalg_matrix_mod_t modB, ! gsl_matrix * C) { if (modA == GSL_LINALG_MOD_NONE && modB == GSL_LINALG_MOD_NONE) *************** *** 81,137 **** if (modA & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (dim1_A, dim2_A); if (modB & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (dim1_B, dim2_B); if (dim2_A != dim1_B || dim1_A != dim1_C || dim2_B != dim2_C) ! { ! GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN); ! } else ! { ! double a, b; ! double temp; ! size_t i, j, k; ! size_t a1, a2, b1, b2; ! ! for (i = 0; i < dim1_C; i++) ! { ! for (j = 0; j < dim2_C; j++) ! { ! a1 = i; ! a2 = 0; ! b1 = 0; ! b2 = j; ! if (modA & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (a1, a2); ! if (modB & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (b1, b2); ! ! a = gsl_matrix_get (A, a1, a2); ! b = gsl_matrix_get (B, b1, b2); ! temp = a * b; ! ! for (k = 1; k < dim2_A; k++) ! { ! a1 = i; ! a2 = k; ! b1 = k; ! b2 = j; ! if (modA & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (a1, a2); ! if (modB & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (b1, b2); ! a = gsl_matrix_get (A, a1, a2); ! b = gsl_matrix_get (B, b1, b2); ! temp += a * b; ! } ! ! gsl_matrix_set (C, i, j, temp); ! } ! } ! return GSL_SUCCESS; ! } } } --- 81,137 ---- if (modA & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (dim1_A, dim2_A); if (modB & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (dim1_B, dim2_B); if (dim2_A != dim1_B || dim1_A != dim1_C || dim2_B != dim2_C) ! { ! GSL_ERROR ("matrix sizes are not conformant", GSL_EBADLEN); ! } else ! { ! double a, b; ! double temp; ! size_t i, j, k; ! size_t a1, a2, b1, b2; ! ! for (i = 0; i < dim1_C; i++) ! { ! for (j = 0; j < dim2_C; j++) ! { ! a1 = i; ! a2 = 0; ! b1 = 0; ! b2 = j; ! if (modA & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (a1, a2); ! if (modB & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (b1, b2); ! ! a = gsl_matrix_get (A, a1, a2); ! b = gsl_matrix_get (B, b1, b2); ! temp = a * b; ! ! for (k = 1; k < dim2_A; k++) ! { ! a1 = i; ! a2 = k; ! b1 = k; ! b2 = j; ! if (modA & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (a1, a2); ! if (modB & GSL_LINALG_MOD_TRANSPOSE) ! SWAP_SIZE_T (b1, b2); ! a = gsl_matrix_get (A, a1, a2); ! b = gsl_matrix_get (B, b1, b2); ! temp += a * b; ! } ! ! gsl_matrix_set (C, i, j, temp); ! } ! } ! return GSL_SUCCESS; ! } } } diff -x.info* -rc2P gsl-1.3/linalg/qr.c gsl-1.4/linalg/qr.c *** gsl-1.3/linalg/qr.c Mon Nov 19 21:39:33 2001 --- gsl-1.4/linalg/qr.c Fri Jul 25 15:18:12 2003 *************** *** 75,98 **** for (i = 0; i < GSL_MIN (M, N); i++) ! { ! /* Compute the Householder transformation to reduce the j-th ! column of the matrix to a multiple of the j-th unit vector */ ! gsl_vector_view c_full = gsl_matrix_column (A, i); gsl_vector_view c = gsl_vector_subvector (&(c_full.vector), i, M-i); ! double tau_i = gsl_linalg_householder_transform (&(c.vector)); ! gsl_vector_set (tau, i, tau_i); ! /* Apply the transformation to the remaining columns and ! update the norms */ ! if (i + 1 < N) ! { ! gsl_matrix_view m = gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); ! gsl_linalg_householder_hm (tau_i, &(c.vector), &(m.matrix)); ! } ! } return GSL_SUCCESS; --- 75,98 ---- for (i = 0; i < GSL_MIN (M, N); i++) ! { ! /* Compute the Householder transformation to reduce the j-th ! column of the matrix to a multiple of the j-th unit vector */ ! gsl_vector_view c_full = gsl_matrix_column (A, i); gsl_vector_view c = gsl_vector_subvector (&(c_full.vector), i, M-i); ! double tau_i = gsl_linalg_householder_transform (&(c.vector)); ! gsl_vector_set (tau, i, tau_i); ! /* Apply the transformation to the remaining columns and ! update the norms */ ! if (i + 1 < N) ! { ! gsl_matrix_view m = gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); ! gsl_linalg_householder_hm (tau_i, &(c.vector), &(m.matrix)); ! } ! } return GSL_SUCCESS; *************** *** 332,342 **** for (i = 0; i < GSL_MIN (M, N); i++) ! { ! gsl_vector_const_view c = gsl_matrix_const_column (QR, i); gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); ! gsl_vector_view w = gsl_vector_subvector (v, i, M - i); ! double ti = gsl_vector_get (tau, i); ! gsl_linalg_householder_hv (ti, &(h.vector), &(w.vector)); ! } return GSL_SUCCESS; } --- 332,342 ---- for (i = 0; i < GSL_MIN (M, N); i++) ! { ! gsl_vector_const_view c = gsl_matrix_const_column (QR, i); gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); ! gsl_vector_view w = gsl_vector_subvector (v, i, M - i); ! double ti = gsl_vector_get (tau, i); ! gsl_linalg_householder_hv (ti, &(h.vector), &(w.vector)); ! } return GSL_SUCCESS; } *************** *** 365,376 **** for (i = GSL_MIN (M, N); i > 0 && i--;) ! { ! gsl_vector_const_view c = gsl_matrix_const_column (QR, i); gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); ! gsl_vector_view w = gsl_vector_subvector (v, i, M - i); ! double ti = gsl_vector_get (tau, i); ! gsl_linalg_householder_hv (ti, &h.vector, &w.vector); ! } return GSL_SUCCESS; } --- 365,376 ---- for (i = GSL_MIN (M, N); i > 0 && i--;) ! { ! gsl_vector_const_view c = gsl_matrix_const_column (QR, i); gsl_vector_const_view h = gsl_vector_const_subvector (&(c.vector), i, M - i); ! gsl_vector_view w = gsl_vector_subvector (v, i, M - i); ! double ti = gsl_vector_get (tau, i); ! gsl_linalg_householder_hv (ti, &h.vector, &w.vector); ! } return GSL_SUCCESS; } *************** *** 407,411 **** for (i = GSL_MIN (M, N); i > 0 && i--;) ! { gsl_vector_const_view c = gsl_matrix_const_column (QR, i); gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, --- 407,411 ---- for (i = GSL_MIN (M, N); i > 0 && i--;) ! { gsl_vector_const_view c = gsl_matrix_const_column (QR, i); gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, *************** *** 414,429 **** double ti = gsl_vector_get (tau, i); gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); ! } /* Form the right triangular matrix R from a packed QR matrix */ for (i = 0; i < M; i++) ! { ! for (j = 0; j < i && j < N; j++) ! gsl_matrix_set (R, i, j, 0.0); ! ! for (j = i; j < N; j++) ! gsl_matrix_set (R, i, j, gsl_matrix_get (QR, i, j)); ! } return GSL_SUCCESS; --- 414,429 ---- double ti = gsl_vector_get (tau, i); gsl_linalg_householder_hm (ti, &h.vector, &m.matrix); ! } /* Form the right triangular matrix R from a packed QR matrix */ for (i = 0; i < M; i++) ! { ! for (j = 0; j < i && j < N; j++) ! gsl_matrix_set (R, i, j, 0.0); ! ! for (j = i; j < N; j++) ! gsl_matrix_set (R, i, j, gsl_matrix_get (QR, i, j)); ! } return GSL_SUCCESS; *************** *** 446,450 **** int gsl_linalg_QR_update (gsl_matrix * Q, gsl_matrix * R, ! gsl_vector * w, const gsl_vector * v) { const size_t M = R->size1; --- 446,450 ---- int gsl_linalg_QR_update (gsl_matrix * Q, gsl_matrix * R, ! gsl_vector * w, const gsl_vector * v) { const size_t M = R->size1; *************** *** 476,488 **** for (k = M - 1; k > 0; k--) ! { ! double c, s; ! double wk = gsl_vector_get (w, k); ! double wkm1 = gsl_vector_get (w, k - 1); ! ! create_givens (wkm1, wk, &c, &s); ! apply_givens_vec (w, k - 1, k, c, s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! } w0 = gsl_vector_get (w, 0); --- 476,488 ---- for (k = M - 1; k > 0; k--) ! { ! double c, s; ! double wk = gsl_vector_get (w, k); ! double wkm1 = gsl_vector_get (w, k - 1); ! ! create_givens (wkm1, wk, &c, &s); ! apply_givens_vec (w, k - 1, k, c, s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! } w0 = gsl_vector_get (w, 0); *************** *** 491,499 **** for (j = 0; j < N; j++) ! { ! double r0j = gsl_matrix_get (R, 0, j); ! double vj = gsl_vector_get (v, j); ! gsl_matrix_set (R, 0, j, r0j + w0 * vj); ! } /* Apply Givens transformations R' = G_(n-1)^T ... G_1^T H --- 491,499 ---- for (j = 0; j < N; j++) ! { ! double r0j = gsl_matrix_get (R, 0, j); ! double vj = gsl_vector_get (v, j); ! gsl_matrix_set (R, 0, j, r0j + w0 * vj); ! } /* Apply Givens transformations R' = G_(n-1)^T ... G_1^T H *************** *** 501,514 **** for (k = 1; k < GSL_MIN(M,N+1); k++) ! { ! double c, s; ! double diag = gsl_matrix_get (R, k - 1, k - 1); ! double offdiag = gsl_matrix_get (R, k, k - 1); ! create_givens (diag, offdiag, &c, &s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! gsl_matrix_set (R, k, k - 1, 0.0); /* exact zero of G^T */ ! } return GSL_SUCCESS; --- 501,514 ---- for (k = 1; k < GSL_MIN(M,N+1); k++) ! { ! double c, s; ! double diag = gsl_matrix_get (R, k - 1, k - 1); ! double offdiag = gsl_matrix_get (R, k, k - 1); ! create_givens (diag, offdiag, &c, &s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! gsl_matrix_set (R, k, k - 1, 0.0); /* exact zero of G^T */ ! } return GSL_SUCCESS; *************** *** 534,538 **** /* compute sol = Q^T b */ ! gsl_blas_dgemv (CblasNoTrans, 1.0, Q, b, 0.0, x); /* Solve R x = sol, storing x in-place */ --- 534,538 ---- /* compute sol = Q^T b */ ! gsl_blas_dgemv (CblasTrans, 1.0, Q, b, 0.0, x); /* Solve R x = sol, storing x in-place */ diff -x.info* -rc2P gsl-1.3/linalg/qrpt.c gsl-1.4/linalg/qrpt.c *** gsl-1.3/linalg/qrpt.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/linalg/qrpt.c Fri Jul 25 15:18:12 2003 *************** *** 92,155 **** *signum = 1; ! gsl_permutation_init (p); /* set to identity */ /* Compute column norms and store in workspace */ for (i = 0; i < N; i++) ! { ! gsl_vector_view c = gsl_matrix_column (A, i); ! double x = gsl_blas_dnrm2 (&c.vector); ! gsl_vector_set (norm, i, x); ! } for (i = 0; i < GSL_MIN (M, N); i++) ! { ! /* Bring the column of largest norm into the pivot position */ ! double max_norm = gsl_vector_get(norm, i); ! size_t j, kmax = i; ! for (j = i + 1; j < N; j++) ! { ! double x = gsl_vector_get (norm, j); ! ! if (x > max_norm) ! { ! max_norm = x; ! kmax = j; ! } ! } ! ! if (kmax != i) ! { ! gsl_matrix_swap_columns (A, i, kmax); ! gsl_permutation_swap (p, i, kmax); gsl_vector_swap_elements(norm,i,kmax); ! (*signum) = -(*signum); ! } ! /* Compute the Householder transformation to reduce the j-th ! column of the matrix to a multiple of the j-th unit vector */ ! { ! gsl_vector_view c_full = gsl_matrix_column (A, i); gsl_vector_view c = gsl_vector_subvector (&c_full.vector, i, M - i); ! double tau_i = gsl_linalg_householder_transform (&c.vector); ! gsl_vector_set (tau, i, tau_i); ! /* Apply the transformation to the remaining columns */ ! if (i + 1 < N) ! { ! gsl_matrix_view m = gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i+1)); ! gsl_linalg_householder_hm (tau_i, &c.vector, &m.matrix); ! } ! } ! /* Update the norms of the remaining columns too */ if (i + 1 < M) --- 92,155 ---- *signum = 1; ! gsl_permutation_init (p); /* set to identity */ /* Compute column norms and store in workspace */ for (i = 0; i < N; i++) ! { ! gsl_vector_view c = gsl_matrix_column (A, i); ! double x = gsl_blas_dnrm2 (&c.vector); ! gsl_vector_set (norm, i, x); ! } for (i = 0; i < GSL_MIN (M, N); i++) ! { ! /* Bring the column of largest norm into the pivot position */ ! ! double max_norm = gsl_vector_get(norm, i); ! size_t j, kmax = i; ! ! for (j = i + 1; j < N; j++) ! { ! double x = gsl_vector_get (norm, j); ! if (x > max_norm) ! { ! max_norm = x; ! kmax = j; ! } ! } ! if (kmax != i) ! { ! gsl_matrix_swap_columns (A, i, kmax); ! gsl_permutation_swap (p, i, kmax); gsl_vector_swap_elements(norm,i,kmax); ! (*signum) = -(*signum); ! } ! /* Compute the Householder transformation to reduce the j-th ! column of the matrix to a multiple of the j-th unit vector */ ! { ! gsl_vector_view c_full = gsl_matrix_column (A, i); gsl_vector_view c = gsl_vector_subvector (&c_full.vector, i, M - i); ! double tau_i = gsl_linalg_householder_transform (&c.vector); ! gsl_vector_set (tau, i, tau_i); ! /* Apply the transformation to the remaining columns */ ! if (i + 1 < N) ! { ! gsl_matrix_view m = gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i+1)); ! gsl_linalg_householder_hm (tau_i, &c.vector, &m.matrix); ! } ! } ! /* Update the norms of the remaining columns too */ if (i + 1 < M) *************** *** 157,185 **** for (j = i + 1; j < N; j++) { - double y = 0; double x = gsl_vector_get (norm, j); ! if (x > 0.0) ! { ! double temp= gsl_matrix_get (A, i, j) / x; ! if (fabs (temp) >= 1) ! y = 0.0; ! else ! y = y * sqrt (1 - temp * temp); ! ! /* recompute norm to prevent loss of accuracy */ ! ! if (fabs (y / x) < sqrt (20.0) * GSL_SQRT_DBL_EPSILON) ! { ! gsl_vector_view c_full = gsl_matrix_column (A, j); ! gsl_vector_view c = ! gsl_vector_subvector(&c_full.vector, ! i+1, M - (i+1)); ! y = gsl_blas_dnrm2 (&c.vector); ! } ! gsl_vector_set (norm, j, y); ! } } } --- 157,185 ---- for (j = i + 1; j < N; j++) { double x = gsl_vector_get (norm, j); ! if (x > 0.0) ! { ! double y = 0; ! double temp= gsl_matrix_get (A, i, j) / x; ! if (fabs (temp) >= 1) ! y = 0.0; ! else ! y = x * sqrt (1 - temp * temp); ! ! /* recompute norm to prevent loss of accuracy */ ! ! if (fabs (y / x) < sqrt (20.0) * GSL_SQRT_DBL_EPSILON) ! { ! gsl_vector_view c_full = gsl_matrix_column (A, j); ! gsl_vector_view c = ! gsl_vector_subvector(&c_full.vector, ! i+1, M - (i+1)); ! y = gsl_blas_dnrm2 (&c.vector); ! } ! gsl_vector_set (norm, j, y); ! } } } *************** *** 239,245 **** int gsl_linalg_QRPT_solve (const gsl_matrix * QR, ! const gsl_vector * tau, ! const gsl_permutation * p, ! const gsl_vector * b, gsl_vector * x) { --- 239,245 ---- int gsl_linalg_QRPT_solve (const gsl_matrix * QR, ! const gsl_vector * tau, ! const gsl_permutation * p, ! const gsl_vector * b, gsl_vector * x) { *************** *** 307,313 **** int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, const gsl_matrix * R, ! const gsl_permutation * p, ! const gsl_vector * b, ! gsl_vector * x) { if (Q->size1 != Q->size2 || R->size1 != R->size2) --- 307,313 ---- int gsl_linalg_QRPT_QRsolve (const gsl_matrix * Q, const gsl_matrix * R, ! const gsl_permutation * p, ! const gsl_vector * b, ! gsl_vector * x) { if (Q->size1 != Q->size2 || R->size1 != R->size2) *************** *** 316,320 **** } else if (Q->size1 != p->size || Q->size1 != R->size1 ! || Q->size1 != b->size) { return GSL_EBADLEN; --- 316,320 ---- } else if (Q->size1 != p->size || Q->size1 != R->size1 ! || Q->size1 != b->size) { return GSL_EBADLEN; *************** *** 324,328 **** /* compute b' = Q^T b */ ! gsl_blas_dgemv (CblasNoTrans, 1.0, Q, b, 0.0, x); /* Solve R x = b', storing x inplace */ --- 324,328 ---- /* compute b' = Q^T b */ ! gsl_blas_dgemv (CblasTrans, 1.0, Q, b, 0.0, x); /* Solve R x = b', storing x inplace */ *************** *** 340,346 **** int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, ! const gsl_permutation * p, const gsl_vector * b, ! gsl_vector * x) { if (QR->size1 != QR->size2) --- 340,346 ---- int gsl_linalg_QRPT_Rsolve (const gsl_matrix * QR, ! const gsl_permutation * p, const gsl_vector * b, ! gsl_vector * x) { if (QR->size1 != QR->size2) *************** *** 421,426 **** int gsl_linalg_QRPT_update (gsl_matrix * Q, gsl_matrix * R, ! const gsl_permutation * p, ! gsl_vector * w, const gsl_vector * v) { if (Q->size1 != Q->size2 || R->size1 != R->size2) --- 421,426 ---- int gsl_linalg_QRPT_update (gsl_matrix * Q, gsl_matrix * R, ! const gsl_permutation * p, ! gsl_vector * w, const gsl_vector * v) { if (Q->size1 != Q->size2 || R->size1 != R->size2) *************** *** 447,459 **** for (k = N - 1; k > 0; k--) ! { ! double c, s; ! double wk = gsl_vector_get (w, k); ! double wkm1 = gsl_vector_get (w, k - 1); ! ! create_givens (wkm1, wk, &c, &s); ! apply_givens_vec (w, k - 1, k, c, s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! } w0 = gsl_vector_get (w, 0); --- 447,459 ---- for (k = N - 1; k > 0; k--) ! { ! double c, s; ! double wk = gsl_vector_get (w, k); ! double wkm1 = gsl_vector_get (w, k - 1); ! ! create_givens (wkm1, wk, &c, &s); ! apply_givens_vec (w, k - 1, k, c, s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! } w0 = gsl_vector_get (w, 0); *************** *** 462,471 **** for (j = 0; j < N; j++) ! { ! double r0j = gsl_matrix_get (R, 0, j); ! size_t p_j = gsl_permutation_get (p, j); ! double vj = gsl_vector_get (v, p_j); ! gsl_matrix_set (R, 0, j, r0j + w0 * vj); ! } /* Apply Givens transformations R' = G_(n-1)^T ... G_1^T H --- 462,471 ---- for (j = 0; j < N; j++) ! { ! double r0j = gsl_matrix_get (R, 0, j); ! size_t p_j = gsl_permutation_get (p, j); ! double vj = gsl_vector_get (v, p_j); ! gsl_matrix_set (R, 0, j, r0j + w0 * vj); ! } /* Apply Givens transformations R' = G_(n-1)^T ... G_1^T H *************** *** 473,484 **** for (k = 1; k < N; k++) ! { ! double c, s; ! double diag = gsl_matrix_get (R, k - 1, k - 1); ! double offdiag = gsl_matrix_get (R, k, k - 1); ! ! create_givens (diag, offdiag, &c, &s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! } return GSL_SUCCESS; --- 473,484 ---- for (k = 1; k < N; k++) ! { ! double c, s; ! double diag = gsl_matrix_get (R, k - 1, k - 1); ! double offdiag = gsl_matrix_get (R, k, k - 1); ! ! create_givens (diag, offdiag, &c, &s); ! apply_givens_qr (M, N, Q, R, k - 1, k, c, s); ! } return GSL_SUCCESS; diff -x.info* -rc2P gsl-1.3/linalg/svd.c gsl-1.4/linalg/svd.c *** gsl-1.3/linalg/svd.c Sun Jun 16 09:52:27 2002 --- gsl-1.4/linalg/svd.c Fri Jul 25 15:18:12 2003 *************** *** 64,68 **** { GSL_ERROR ("square matrix V must match second dimension of matrix A", ! GSL_EBADLEN); } else if (V->size1 != V->size2) --- 64,68 ---- { GSL_ERROR ("square matrix V must match second dimension of matrix A", ! GSL_EBADLEN); } else if (V->size1 != V->size2) *************** *** 73,82 **** { GSL_ERROR ("length of vector S must match second dimension of matrix A", ! GSL_EBADLEN); } else if (work->size != N) { GSL_ERROR ("length of workspace must match second dimension of matrix A", ! GSL_EBADLEN); } --- 73,82 ---- { GSL_ERROR ("length of vector S must match second dimension of matrix A", ! GSL_EBADLEN); } else if (work->size != N) { GSL_ERROR ("length of workspace must match second dimension of matrix A", ! GSL_EBADLEN); } *************** *** 171,187 **** { S_max = Sj; ! i_max = j; ! } ! } if (i_max != i) ! { ! /* swap eigenvalues */ ! gsl_vector_swap_elements (S, i, i_max); ! /* swap eigenvectors */ ! gsl_matrix_swap_columns (A, i, i_max); ! gsl_matrix_swap_columns (V, i, i_max); ! } } --- 171,187 ---- { S_max = Sj; ! i_max = j; ! } ! } if (i_max != i) ! { ! /* swap eigenvalues */ ! gsl_vector_swap_elements (S, i, i_max); ! /* swap eigenvectors */ ! gsl_matrix_swap_columns (A, i, i_max); ! gsl_matrix_swap_columns (V, i, i_max); ! } } *************** *** 194,199 **** int gsl_linalg_SV_decomp_mod (gsl_matrix * A, ! gsl_matrix * X, ! gsl_matrix * V, gsl_vector * S, gsl_vector * work) { size_t i, j; --- 194,199 ---- int gsl_linalg_SV_decomp_mod (gsl_matrix * A, ! gsl_matrix * X, ! gsl_matrix * V, gsl_vector * S, gsl_vector * work) { size_t i, j; *************** *** 209,213 **** { GSL_ERROR ("square matrix V must match second dimension of matrix A", ! GSL_EBADLEN); } else if (V->size1 != V->size2) --- 209,213 ---- { GSL_ERROR ("square matrix V must match second dimension of matrix A", ! GSL_EBADLEN); } else if (V->size1 != V->size2) *************** *** 218,222 **** { GSL_ERROR ("square matrix X must match second dimension of matrix A", ! GSL_EBADLEN); } else if (X->size1 != X->size2) --- 218,222 ---- { GSL_ERROR ("square matrix X must match second dimension of matrix A", ! GSL_EBADLEN); } else if (X->size1 != X->size2) *************** *** 227,236 **** { GSL_ERROR ("length of vector S must match second dimension of matrix A", ! GSL_EBADLEN); } else if (work->size != N) { GSL_ERROR ("length of workspace must match second dimension of matrix A", ! GSL_EBADLEN); } --- 227,236 ---- { GSL_ERROR ("length of vector S must match second dimension of matrix A", ! GSL_EBADLEN); } else if (work->size != N) { GSL_ERROR ("length of workspace must match second dimension of matrix A", ! GSL_EBADLEN); } *************** *** 246,254 **** if (i + 1 < N) ! { ! gsl_matrix_view m = ! gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); ! gsl_linalg_householder_hm (tau_i, &v.vector, &m.matrix); ! } gsl_vector_set (S, i, tau_i); --- 246,254 ---- if (i + 1 < N) ! { ! gsl_matrix_view m = ! gsl_matrix_submatrix (A, i, i + 1, M - i, N - (i + 1)); ! gsl_linalg_householder_hm (tau_i, &v.vector, &m.matrix); ! } gsl_vector_set (S, i, tau_i); *************** *** 260,277 **** { for (j = 0; j < i; j++) ! { ! gsl_matrix_set (X, i, j, 0.0); ! } { ! double Aii = gsl_matrix_get (A, i, i); ! gsl_matrix_set (X, i, i, Aii); } for (j = i + 1; j < N; j++) ! { ! double Aij = gsl_matrix_get (A, i, j); ! gsl_matrix_set (X, i, j, Aij); ! } } --- 260,277 ---- { for (j = 0; j < i; j++) ! { ! gsl_matrix_set (X, i, j, 0.0); ! } { ! double Aii = gsl_matrix_get (A, i, i); ! gsl_matrix_set (X, i, i, Aii); } for (j = i + 1; j < N; j++) ! { ! double Aij = gsl_matrix_get (A, i, j); ! gsl_matrix_set (X, i, j, Aij); ! } } *************** *** 297,311 **** for (i = 0; i < M; i++) { ! gsl_vector_view L_i = gsl_matrix_row (A, i); ! gsl_vector_set_zero (&sum.vector); ! for (j = 0; j < N; j++) ! { ! double Lij = gsl_vector_get (&L_i.vector, j); ! gsl_vector_view X_j = gsl_matrix_row (X, j); ! gsl_blas_daxpy (Lij, &X_j.vector, &sum.vector); ! } ! gsl_vector_memcpy (&L_i.vector, &sum.vector); } } --- 297,311 ---- for (i = 0; i < M; i++) { ! gsl_vector_view L_i = gsl_matrix_row (A, i); ! gsl_vector_set_zero (&sum.vector); ! for (j = 0; j < N; j++) ! { ! double Lij = gsl_vector_get (&L_i.vector, j); ! gsl_vector_view X_j = gsl_matrix_row (X, j); ! gsl_blas_daxpy (Lij, &X_j.vector, &sum.vector); ! } ! gsl_vector_memcpy (&L_i.vector, &sum.vector); } } *************** *** 325,341 **** int gsl_linalg_SV_solve (const gsl_matrix * U, ! const gsl_matrix * V, ! const gsl_vector * S, ! const gsl_vector * b, gsl_vector * x) { if (U->size1 != b->size) { GSL_ERROR ("first dimension of matrix U must size of vector b", ! GSL_EBADLEN); } else if (U->size2 != S->size) { GSL_ERROR ("length of vector S must match second dimension of matrix U", ! GSL_EBADLEN); } else if (V->size1 != V->size2) --- 325,341 ---- int gsl_linalg_SV_solve (const gsl_matrix * U, ! const gsl_matrix * V, ! const gsl_vector * S, ! const gsl_vector * b, gsl_vector * x) { if (U->size1 != b->size) { GSL_ERROR ("first dimension of matrix U must size of vector b", ! GSL_EBADLEN); } else if (U->size2 != S->size) { GSL_ERROR ("length of vector S must match second dimension of matrix U", ! GSL_EBADLEN); } else if (V->size1 != V->size2) *************** *** 346,350 **** { GSL_ERROR ("length of vector S must match size of matrix V", ! GSL_EBADLEN); } else if (V->size2 != x->size) --- 346,350 ---- { GSL_ERROR ("length of vector S must match size of matrix V", ! GSL_EBADLEN); } else if (V->size2 != x->size) *************** *** 362,372 **** for (i = 0; i < N; i++) ! { ! double wi = gsl_vector_get (w, i); ! double alpha = gsl_vector_get (S, i); ! if (alpha != 0) ! alpha = 1.0 / alpha; ! gsl_vector_set (w, i, alpha * wi); ! } gsl_blas_dgemv (CblasNoTrans, 1.0, V, w, 0.0, x); --- 362,372 ---- for (i = 0; i < N; i++) ! { ! double wi = gsl_vector_get (w, i); ! double alpha = gsl_vector_get (S, i); ! if (alpha != 0) ! alpha = 1.0 / alpha; ! gsl_vector_set (w, i, alpha * wi); ! } gsl_blas_dgemv (CblasNoTrans, 1.0, V, w, 0.0, x); *************** *** 411,415 **** { GSL_ERROR ("square matrix Q must match second dimension of matrix A", ! GSL_EBADLEN); } else if (Q->size1 != Q->size2) --- 411,415 ---- { GSL_ERROR ("square matrix Q must match second dimension of matrix A", ! GSL_EBADLEN); } else if (Q->size1 != Q->size2) *************** *** 420,424 **** { GSL_ERROR ("length of vector S must match second dimension of matrix A", ! GSL_EBADLEN); } else --- 420,424 ---- { GSL_ERROR ("length of vector S must match second dimension of matrix A", ! GSL_EBADLEN); } else *************** *** 444,541 **** while (count > 0 && sweep <= sweepmax) ! { ! /* Initialize rotation counter. */ ! count = N * (N - 1) / 2; ! ! for (j = 0; j < N - 1; j++) ! { ! for (k = j + 1; k < N; k++) ! { ! double a = 0.0; ! double b = 0.0; ! double p = 0.0; ! double q = 0.0; ! double r = 0.0; ! double cosine, sine; ! double v; ! ! gsl_vector_view cj = gsl_matrix_column (A, j); ! gsl_vector_view ck = gsl_matrix_column (A, k); ! ! gsl_blas_ddot (&cj.vector, &ck.vector, &p); ! ! a = gsl_blas_dnrm2 (&cj.vector); ! b = gsl_blas_dnrm2 (&ck.vector); ! ! q = a * a; ! r = b * b; ! ! /* NOTE: this could be handled better by scaling ! * the calculation of the inner products above. ! * But I'm too lazy. This will have to do. [GJ] ! */ ! ! /* FIXME: This routine is a hack. We need to get the ! state of the art in Jacobi SVD's here ! */ ! ! /* This is an adhoc method of testing for a "zero" ! singular value. We consider it to be zero if it ! is sufficiently small compared with the currently ! leading column. Note that b <= a is guaranteed by ! the sweeping algorithm. BJG */ ! ! if (b <= tolerance * a) ! { ! /* probably |b| = 0 */ ! count--; ! continue; ! } ! ! if (fabs (p) <= tolerance * a * b) ! { ! /* columns j,k orthogonal ! * note that p*p/(q*r) is automatically <= 1.0 ! */ ! count--; ! continue; ! } ! ! /* calculate rotation angles */ ! if (q < r) ! { ! cosine = 0.0; ! sine = 1.0; ! } ! else ! { ! q -= r; ! v = hypot (2.0 * p, q); ! cosine = sqrt ((v + q) / (2.0 * v)); ! sine = p / (v * cosine); ! } ! ! /* apply rotation to A */ ! for (i = 0; i < M; i++) ! { ! const double Aik = gsl_matrix_get (A, i, k); ! const double Aij = gsl_matrix_get (A, i, j); ! gsl_matrix_set (A, i, j, Aij * cosine + Aik * sine); ! gsl_matrix_set (A, i, k, -Aij * sine + Aik * cosine); ! } ! ! /* apply rotation to Q */ ! for (i = 0; i < N; i++) ! { ! const double Qij = gsl_matrix_get (Q, i, j); ! const double Qik = gsl_matrix_get (Q, i, k); ! gsl_matrix_set (Q, i, j, Qij * cosine + Qik * sine); ! gsl_matrix_set (Q, i, k, -Qij * sine + Qik * cosine); ! } ! } ! } ! ! /* Sweep completed. */ ! sweep++; ! } /* --- 444,541 ---- while (count > 0 && sweep <= sweepmax) ! { ! /* Initialize rotation counter. */ ! count = N * (N - 1) / 2; ! ! for (j = 0; j < N - 1; j++) ! { ! for (k = j + 1; k < N; k++) ! { ! double a = 0.0; ! double b = 0.0; ! double p = 0.0; ! double q = 0.0; ! double r = 0.0; ! double cosine, sine; ! double v; ! ! gsl_vector_view cj = gsl_matrix_column (A, j); ! gsl_vector_view ck = gsl_matrix_column (A, k); ! ! gsl_blas_ddot (&cj.vector, &ck.vector, &p); ! ! a = gsl_blas_dnrm2 (&cj.vector); ! b = gsl_blas_dnrm2 (&ck.vector); ! ! q = a * a; ! r = b * b; ! ! /* NOTE: this could be handled better by scaling ! * the calculation of the inner products above. ! * But I'm too lazy. This will have to do. [GJ] ! */ ! ! /* FIXME: This routine is a hack. We need to get the ! state of the art in Jacobi SVD's here ! */ ! ! /* This is an adhoc method of testing for a "zero" ! singular value. We consider it to be zero if it ! is sufficiently small compared with the currently ! leading column. Note that b <= a is guaranteed by ! the sweeping algorithm. BJG */ ! ! if (b <= tolerance * a) ! { ! /* probably |b| = 0 */ ! count--; ! continue; ! } ! ! if (fabs (p) <= tolerance * a * b) ! { ! /* columns j,k orthogonal ! * note that p*p/(q*r) is automatically <= 1.0 ! */ ! count--; ! continue; ! } ! ! /* calculate rotation angles */ ! if (q < r) ! { ! cosine = 0.0; ! sine = 1.0; ! } ! else ! { ! q -= r; ! v = hypot (2.0 * p, q); ! cosine = sqrt ((v + q) / (2.0 * v)); ! sine = p / (v * cosine); ! } ! ! /* apply rotation to A */ ! for (i = 0; i < M; i++) ! { ! const double Aik = gsl_matrix_get (A, i, k); ! const double Aij = gsl_matrix_get (A, i, j); ! gsl_matrix_set (A, i, j, Aij * cosine + Aik * sine); ! gsl_matrix_set (A, i, k, -Aij * sine + Aik * cosine); ! } ! ! /* apply rotation to Q */ ! for (i = 0; i < N; i++) ! { ! const double Qij = gsl_matrix_get (Q, i, j); ! const double Qik = gsl_matrix_get (Q, i, k); ! gsl_matrix_set (Q, i, j, Qij * cosine + Qik * sine); ! gsl_matrix_set (Q, i, k, -Qij * sine + Qik * cosine); ! } ! } ! } ! ! /* Sweep completed. */ ! sweep++; ! } /* *************** *** 544,582 **** { ! double prev_norm = -1.0; ! for (j = 0; j < N; j++) ! { ! gsl_vector_view column = gsl_matrix_column (A, j); ! double norm = gsl_blas_dnrm2 (&column.vector); ! ! /* Determine if singular value is zero, according to the ! criteria used in the main loop above (i.e. comparison ! with norm of previous column). */ ! if (norm == 0.0 || prev_norm == 0.0 || (j > 0 && norm <= tolerance * prev_norm)) ! { ! gsl_vector_set (S, j, 0.0); /* singular */ ! gsl_vector_set_zero (&column.vector); /* annihilate column */ ! ! prev_norm = 0.0; ! } ! else ! { ! gsl_vector_set (S, j, norm); /* non-singular */ ! gsl_vector_scale (&column.vector, 1.0 / norm); /* normalize column */ ! ! prev_norm = norm; ! } ! } } if (count > 0) ! { ! /* reached sweep limit */ ! GSL_ERROR ("Jacobi iterations did not reach desired tolerance", ! GSL_ETOL); ! } return GSL_SUCCESS; --- 544,582 ---- { ! double prev_norm = -1.0; ! for (j = 0; j < N; j++) ! { ! gsl_vector_view column = gsl_matrix_column (A, j); ! double norm = gsl_blas_dnrm2 (&column.vector); ! ! /* Determine if singular value is zero, according to the ! criteria used in the main loop above (i.e. comparison ! with norm of previous column). */ ! if (norm == 0.0 || prev_norm == 0.0 || (j > 0 && norm <= tolerance * prev_norm)) ! { ! gsl_vector_set (S, j, 0.0); /* singular */ ! gsl_vector_set_zero (&column.vector); /* annihilate column */ ! ! prev_norm = 0.0; ! } ! else ! { ! gsl_vector_set (S, j, norm); /* non-singular */ ! gsl_vector_scale (&column.vector, 1.0 / norm); /* normalize column */ ! ! prev_norm = norm; ! } ! } } if (count > 0) ! { ! /* reached sweep limit */ ! GSL_ERROR ("Jacobi iterations did not reach desired tolerance", ! GSL_ETOL); ! } return GSL_SUCCESS; diff -x.info* -rc2P gsl-1.3/linalg/svdstep.c gsl-1.4/linalg/svdstep.c *** gsl-1.3/linalg/svdstep.c Sun Jun 16 10:33:31 2002 --- gsl-1.4/linalg/svdstep.c Fri Jul 25 15:18:12 2003 *************** *** 13,19 **** if (fabs (f_i) < GSL_DBL_EPSILON * (fabs (d_i) + fabs (d_ip1))) ! { ! gsl_vector_set (f, i, 0.0); ! } d_i = d_ip1; } --- 13,19 ---- if (fabs (f_i) < GSL_DBL_EPSILON * (fabs (d_i) + fabs (d_ip1))) ! { ! gsl_vector_set (f, i, 0.0); ! } d_i = d_ip1; } *************** *** 109,118 **** for (i = 0; i < M; i++) ! { ! double Uip = gsl_matrix_get (U, i, 0); ! double Uiq = gsl_matrix_get (U, i, 1); ! gsl_matrix_set (U, i, 0, c * Uip - s * Uiq); ! gsl_matrix_set (U, i, 1, s * Uip + c * Uiq); ! } /* Compute V <= V X */ --- 109,118 ---- for (i = 0; i < M; i++) ! { ! double Uip = gsl_matrix_get (U, i, 0); ! double Uiq = gsl_matrix_get (U, i, 1); ! gsl_matrix_set (U, i, 0, c * Uip - s * Uiq); ! gsl_matrix_set (U, i, 1, s * Uip + c * Uiq); ! } /* Compute V <= V X */ *************** *** 228,237 **** for (i = 0; i < M; i++) ! { ! double Uip = gsl_matrix_get (U, i, k0); ! double Uiq = gsl_matrix_get (U, i, k + 1); ! gsl_matrix_set (U, i, k0, c * Uip - s * Uiq); ! gsl_matrix_set (U, i, k + 1, s * Uip + c * Uiq); ! } /* compute B <= G^T B */ --- 228,237 ---- for (i = 0; i < M; i++) ! { ! double Uip = gsl_matrix_get (U, i, k0); ! double Uiq = gsl_matrix_get (U, i, k + 1); ! gsl_matrix_set (U, i, k0, c * Uip - s * Uiq); ! gsl_matrix_set (U, i, k + 1, s * Uip + c * Uiq); ! } /* compute B <= G^T B */ *************** *** 272,281 **** for (i = 0; i < N; i++) ! { ! double Vip = gsl_matrix_get (V, i, k); ! double Viq = gsl_matrix_get (V, i, n - 1); ! gsl_matrix_set (V, i, k, c * Vip - s * Viq); ! gsl_matrix_set (V, i, n - 1, s * Vip + c * Viq); ! } /* compute B <= B G */ --- 272,281 ---- for (i = 0; i < N; i++) ! { ! double Vip = gsl_matrix_get (V, i, k); ! double Viq = gsl_matrix_get (V, i, n - 1); ! gsl_matrix_set (V, i, k, c * Vip - s * Viq); ! gsl_matrix_set (V, i, n - 1, s * Vip + c * Viq); ! } /* compute B <= B G */ *************** *** 380,423 **** for (i = 0; i < N; i++) ! { ! double Vip = gsl_matrix_get (V, i, k); ! double Viq = gsl_matrix_get (V, i, k + 1); ! gsl_matrix_set (V, i, k, c * Vip - s * Viq); ! gsl_matrix_set (V, i, k + 1, s * Vip + c * Viq); ! } /* compute B <= B G */ { ! double bk1 = c * bk - s * z; ! double ap1 = c * ap - s * bp; ! double bp1 = s * ap + c * bp; ! double zp1 = -s * aq; ! ! double aq1 = c * aq; ! ! if (k > 0) ! { ! gsl_vector_set (f, k - 1, bk1); ! } ! ! ak = ap1; ! bk = bp1; ! zk = zp1; ! ! ap = aq1; ! ! if (k < n - 2) ! { ! bp = gsl_vector_get (f, k + 1); ! } ! else ! { ! bp = 0.0; ! } ! y = ak; ! z = zk; } --- 380,423 ---- for (i = 0; i < N; i++) ! { ! double Vip = gsl_matrix_get (V, i, k); ! double Viq = gsl_matrix_get (V, i, k + 1); ! gsl_matrix_set (V, i, k, c * Vip - s * Viq); ! gsl_matrix_set (V, i, k + 1, s * Vip + c * Viq); ! } /* compute B <= B G */ { ! double bk1 = c * bk - s * z; ! double ap1 = c * ap - s * bp; ! double bp1 = s * ap + c * bp; ! double zp1 = -s * aq; ! ! double aq1 = c * aq; ! ! if (k > 0) ! { ! gsl_vector_set (f, k - 1, bk1); ! } ! ! ak = ap1; ! bk = bp1; ! zk = zp1; ! ! ap = aq1; ! ! if (k < n - 2) ! { ! bp = gsl_vector_get (f, k + 1); ! } ! else ! { ! bp = 0.0; ! } ! y = ak; ! z = zk; } *************** *** 427,467 **** for (i = 0; i < M; i++) ! { ! double Uip = gsl_matrix_get (U, i, k); ! double Uiq = gsl_matrix_get (U, i, k + 1); ! gsl_matrix_set (U, i, k, c * Uip - s * Uiq); ! gsl_matrix_set (U, i, k + 1, s * Uip + c * Uiq); ! } /* compute B <= G^T B */ { ! double ak1 = c * ak - s * zk; ! double bk1 = c * bk - s * ap; ! double zk1 = -s * bp; ! ! double ap1 = s * bk + c * ap; ! double bp1 = c * bp; ! ! gsl_vector_set (d, k, ak1); ! ! ak = ak1; ! bk = bk1; ! zk = zk1; ! ! ap = ap1; ! bp = bp1; ! ! if (k < n - 2) ! { ! aq = gsl_vector_get (d, k + 2); ! } ! else ! { ! aq = 0.0; ! } ! y = bk; ! z = zk; } } --- 427,467 ---- for (i = 0; i < M; i++) ! { ! double Uip = gsl_matrix_get (U, i, k); ! double Uiq = gsl_matrix_get (U, i, k + 1); ! gsl_matrix_set (U, i, k, c * Uip - s * Uiq); ! gsl_matrix_set (U, i, k + 1, s * Uip + c * Uiq); ! } /* compute B <= G^T B */ { ! double ak1 = c * ak - s * zk; ! double bk1 = c * bk - s * ap; ! double zk1 = -s * bp; ! ! double ap1 = s * bk + c * ap; ! double bp1 = c * bp; ! ! gsl_vector_set (d, k, ak1); ! ! ak = ak1; ! bk = bk1; ! zk = zk1; ! ! ap = ap1; ! bp = bp1; ! ! if (k < n - 2) ! { ! aq = gsl_vector_get (d, k + 2); ! } ! else ! { ! aq = 0.0; ! } ! y = bk; ! z = zk; } } diff -x.info* -rc2P gsl-1.3/linalg/symmtd.c gsl-1.4/linalg/symmtd.c *** gsl-1.3/linalg/symmtd.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/linalg/symmtd.c Fri Jul 25 15:18:12 2003 *************** *** 31,37 **** * lower triangular part of the input matrix below the first subdiagonal. * ! * * The full matrix for Q can be obtained as the product * ! * Q = Q_N .. Q_2 Q_1 * * where --- 31,37 ---- * lower triangular part of the input matrix below the first subdiagonal. * ! * The full matrix for Q can be obtained as the product * ! * Q = Q_1 Q_2 ... Q_(N-2) * * where *************** *** 41,50 **** * and where v_i is a Householder vector * ! * v_i = [1, A(i+2,i), A(i+3,i), ... , A(N,i)] * * This storage scheme is the same as in LAPACK. See LAPACK's * ssytd2.f for details. * ! * See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 */ #include --- 41,54 ---- * and where v_i is a Householder vector * ! * v_i = [0, ... , 0, 1, A(i+1,i), A(i+2,i), ... , A(N,i)] * * This storage scheme is the same as in LAPACK. See LAPACK's * ssytd2.f for details. * ! * See Golub & Van Loan, "Matrix Computations" (3rd ed), Section 8.3 ! * ! * Note: this description uses 1-based indices. The code below uses ! * 0-based indices ! */ #include *************** *** 155,159 **** for (i = N - 2; i > 0 && i--;) ! { gsl_vector_const_view c = gsl_matrix_const_column (A, i); gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, i + 1, N - (i+1)); --- 159,163 ---- for (i = N - 2; i > 0 && i--;) ! { gsl_vector_const_view c = gsl_matrix_const_column (A, i); gsl_vector_const_view h = gsl_vector_const_subvector (&c.vector, i + 1, N - (i+1)); diff -x.info* -rc2P gsl-1.3/linalg/test.c gsl-1.4/linalg/test.c *** gsl-1.3/linalg/test.c Fri Oct 18 16:52:53 2002 --- gsl-1.4/linalg/test.c Fri Jul 25 15:18:12 2003 *************** *** 45,48 **** --- 45,50 ---- int test_QR_solve_dim(const gsl_matrix * m, const double * actual, double eps); int test_QR_solve(void); + int test_QR_QRsolve_dim(const gsl_matrix * m, const double * actual, double eps); + int test_QR_QRsolve(void); int test_QR_lssolve_dim(const gsl_matrix * m, const double * actual, double eps); int test_QR_lssolve(void); *************** *** 51,54 **** --- 53,58 ---- int test_QRPT_solve_dim(const gsl_matrix * m, const double * actual, double eps); int test_QRPT_solve(void); + int test_QRPT_QRsolve_dim(const gsl_matrix * m, const double * actual, double eps); + int test_QRPT_QRsolve(void); int test_QRPT_decomp_dim(const gsl_matrix * m, double eps); int test_QRPT_decomp(void); *************** *** 636,639 **** --- 640,718 ---- int + test_QR_QRsolve_dim(const gsl_matrix * m, const double * actual, double eps) + { + int s = 0; + size_t i, dim = m->size1; + + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * qr = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_matrix * r = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + + gsl_matrix_memcpy(qr,m); + for(i=0; isize1; + + gsl_permutation * perm = gsl_permutation_alloc(dim); + gsl_vector * rhs = gsl_vector_alloc(dim); + gsl_matrix * qr = gsl_matrix_alloc(dim,dim); + gsl_matrix * q = gsl_matrix_alloc(dim,dim); + gsl_matrix * r = gsl_matrix_alloc(dim,dim); + gsl_vector * d = gsl_vector_alloc(dim); + gsl_vector * x = gsl_vector_alloc(dim); + gsl_vector * norm = gsl_vector_alloc(dim); + + gsl_matrix_memcpy(qr,m); + for(i=0; i 1) --- 67,74 ---- for (i = 1; i < N - 1; i++) ! { ! alpha[i] = diag[d_stride * i] - offdiag[o_stride*(i - 1)] * gamma[i - 1]; ! gamma[i] = offdiag[o_stride * i] / alpha[i]; ! } if (N > 1) *************** *** 80,100 **** z[0] = b[0]; for (i = 1; i < N; i++) ! { ! z[i] = b[b_stride * i] - gamma[i - 1] * z[i - 1]; ! } for (i = 0; i < N; i++) ! { ! c[i] = z[i] / alpha[i]; ! } /* backsubstitution */ x[x_stride * (N - 1)] = c[N - 1]; if (N >= 2) ! { ! for (i = N - 2, j = 0; j <= N - 2; j++, i--) ! { ! x[x_stride * i] = c[i] - gamma[i] * x[x_stride * (i + 1)]; ! } ! } status = GSL_SUCCESS; --- 80,100 ---- z[0] = b[0]; for (i = 1; i < N; i++) ! { ! z[i] = b[b_stride * i] - gamma[i - 1] * z[i - 1]; ! } for (i = 0; i < N; i++) ! { ! c[i] = z[i] / alpha[i]; ! } /* backsubstitution */ x[x_stride * (N - 1)] = c[N - 1]; if (N >= 2) ! { ! for (i = N - 2, j = 0; j <= N - 2; j++, i--) ! { ! x[x_stride * i] = c[i] - gamma[i] * x[x_stride * (i + 1)]; ! } ! } status = GSL_SUCCESS; *************** *** 226,238 **** for (i = 1; i < N - 2; i++) ! { ! alpha[i] = diag[d_stride * i] - offdiag[o_stride * (i-1)] * gamma[i - 1]; ! gamma[i] = offdiag[o_stride * i] / alpha[i]; ! delta[i] = -delta[i - 1] * offdiag[o_stride * (i-1)] / alpha[i]; ! } for (i = 0; i < N - 2; i++) ! { ! sum += alpha[i] * delta[i] * delta[i]; ! } alpha[N - 2] = diag[d_stride * (N - 2)] - offdiag[o_stride * (N - 3)] * gamma[N - 3]; gamma[N - 2] = (offdiag[o_stride * (N - 2)] - offdiag[o_stride * (N - 3)] * delta[N - 3]) / alpha[N - 2]; --- 226,238 ---- for (i = 1; i < N - 2; i++) ! { ! alpha[i] = diag[d_stride * i] - offdiag[o_stride * (i-1)] * gamma[i - 1]; ! gamma[i] = offdiag[o_stride * i] / alpha[i]; ! delta[i] = -delta[i - 1] * offdiag[o_stride * (i-1)] / alpha[i]; ! } for (i = 0; i < N - 2; i++) ! { ! sum += alpha[i] * delta[i] * delta[i]; ! } alpha[N - 2] = diag[d_stride * (N - 2)] - offdiag[o_stride * (N - 3)] * gamma[N - 3]; gamma[N - 2] = (offdiag[o_stride * (N - 2)] - offdiag[o_stride * (N - 3)] * delta[N - 3]) / alpha[N - 2]; *************** *** 242,258 **** z[0] = b[0]; for (i = 1; i < N - 1; i++) ! { ! z[i] = b[b_stride * i] - z[i - 1] * gamma[i - 1]; ! } sum = 0.0; for (i = 0; i < N - 2; i++) ! { ! sum += delta[i] * z[i]; ! } z[N - 1] = b[b_stride * (N - 1)] - sum - gamma[N - 2] * z[N - 2]; for (i = 0; i < N; i++) ! { ! c[i] = z[i] / alpha[i]; ! } /* backsubstitution */ --- 242,258 ---- z[0] = b[0]; for (i = 1; i < N - 1; i++) ! { ! z[i] = b[b_stride * i] - z[i - 1] * gamma[i - 1]; ! } sum = 0.0; for (i = 0; i < N - 2; i++) ! { ! sum += delta[i] * z[i]; ! } z[N - 1] = b[b_stride * (N - 1)] - sum - gamma[N - 2] * z[N - 2]; for (i = 0; i < N; i++) ! { ! c[i] = z[i] / alpha[i]; ! } /* backsubstitution */ *************** *** 260,269 **** x[x_stride * (N - 2)] = c[N - 2] - gamma[N - 2] * x[x_stride * (N - 1)]; if (N >= 3) ! { ! for (i = N - 3, j = 0; j <= N - 3; j++, i--) ! { ! x[x_stride * i] = c[i] - gamma[i] * x[x_stride * (i + 1)] - delta[i] * x[x_stride * (N - 1)]; ! } ! } status = GSL_SUCCESS; --- 260,269 ---- x[x_stride * (N - 2)] = c[N - 2] - gamma[N - 2] * x[x_stride * (N - 1)]; if (N >= 3) ! { ! for (i = N - 3, j = 0; j <= N - 3; j++, i--) ! { ! x[x_stride * i] = c[i] - gamma[i] * x[x_stride * (i + 1)] - delta[i] * x[x_stride * (N - 1)]; ! } ! } status = GSL_SUCCESS; *************** *** 316,321 **** else { - size_t i, j; - /* Bidiagonalization (eliminating belowdiag) & rhs update --- 316,319 ---- *************** *** 335,339 **** alpha[0] = diag[0] - beta; ! for (i = 1; i+1 < N; i++) { const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; --- 333,340 ---- alpha[0] = diag[0] - beta; ! ! { ! size_t i; ! for (i = 1; i+1 < N; i++) { const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; *************** *** 347,353 **** } } { ! const int i = N-1; const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; alpha[i] = diag[d_stride*i] --- 348,355 ---- } } + } { ! const size_t i = N-1; const double t = belowdiag[b_stride*(i - 1)]/alpha[i-1]; alpha[i] = diag[d_stride*i] *************** *** 363,375 **** } - /* backsubstitution */ - w[N-1] = zu[N-1]/alpha[N-1]; - x[N-1] = zb[N-1]/alpha[N-1]; - for (i = N - 2, j = 0; j <= N - 2; j++, i--) - { - w[i] = (zu[i] - abovediag[a_stride*i] * w[i+1])/alpha[i]; - x[i*x_stride] = (zb[i] - abovediag[a_stride*i] * x[x_stride*(i + 1)])/alpha[i]; - } /* Sherman-Morrison */ { --- 365,381 ---- } + /* backsubstitution */ + { + size_t i, j; + w[N-1] = zu[N-1]/alpha[N-1]; + x[N-1] = zb[N-1]/alpha[N-1]; + for (i = N - 2, j = 0; j <= N - 2; j++, i--) + { + w[i] = (zu[i] - abovediag[a_stride*i] * w[i+1])/alpha[i]; + x[i*x_stride] = (zb[i] - abovediag[a_stride*i] * x[x_stride*(i + 1)])/alpha[i]; + } + } + /* Sherman-Morrison */ { *************** *** 381,386 **** goto solve_cyc_tridiag_nonsym_END; } ! for (i = 0; i < N; i++) ! x[i] -= vx/(1 + vw)*w[i]; } --- 387,396 ---- goto solve_cyc_tridiag_nonsym_END; } ! ! { ! size_t i; ! for (i = 0; i < N; i++) ! x[i] -= vx/(1 + vw)*w[i]; ! } } *************** *** 410,414 **** if(diag->size != rhs->size || (offdiag->size != rhs->size && offdiag->size != rhs->size-1) || ! (solution->size != rhs->size) ) { return GSL_EBADLEN; --- 420,424 ---- if(diag->size != rhs->size || (offdiag->size != rhs->size && offdiag->size != rhs->size-1) || ! (solution->size != rhs->size) ) { return GSL_EBADLEN; *************** *** 417,423 **** return solve_tridiag(diag->data, diag->stride, offdiag->data, offdiag->stride, ! rhs->data, rhs->stride, ! solution->data, solution->stride, ! diag->size); } } --- 427,433 ---- return solve_tridiag(diag->data, diag->stride, offdiag->data, offdiag->stride, ! rhs->data, rhs->stride, ! solution->data, solution->stride, ! diag->size); } } *************** *** 464,470 **** return solve_cyc_tridiag(diag->data, diag->stride, offdiag->data, offdiag->stride, ! rhs->data, rhs->stride, ! solution->data, solution->stride, ! diag->size); } } --- 474,480 ---- return solve_cyc_tridiag(diag->data, diag->stride, offdiag->data, offdiag->stride, ! rhs->data, rhs->stride, ! solution->data, solution->stride, ! diag->size); } } diff -x.info* -rc2P gsl-1.3/matrix/ChangeLog gsl-1.4/matrix/ChangeLog *** gsl-1.3/matrix/ChangeLog Sun Nov 24 14:53:21 2002 --- gsl-1.4/matrix/ChangeLog Wed Jan 1 20:23:42 2003 *************** *** 1,2 **** --- 1,9 ---- + 2003-01-01 Brian Gough + + * gsl_matrix_complex_float.h (gsl_matrix_complex_float_get): + removed const from zero + + * matrix_source.c (FUNCTION): removed const from zero + 2002-11-24 Brian Gough diff -x.info* -rc2P gsl-1.3/matrix/Makefile.am gsl-1.4/matrix/Makefile.am *** gsl-1.3/matrix/Makefile.am Sun Nov 24 14:53:21 2002 --- gsl-1.4/matrix/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 9,14 **** TESTS = test test_static ! test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 9,14 ---- TESTS = test test_static ! test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/matrix/Makefile.in gsl-1.4/matrix/Makefile.in *** gsl-1.3/matrix/Makefile.in Wed Dec 18 22:37:22 2002 --- gsl-1.4/matrix/Makefile.in Thu Aug 14 12:30:57 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslmatrix.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslmatrix.la *************** *** 95,100 **** TESTS = test test_static ! test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 151,156 ---- TESTS = test test_static ! test_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_static_LDADD = libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c *************** *** 107,207 **** libgslmatrix_la_SOURCES = init.c matrix.c file.c rowcol.c swap.c copy.c minmax.c prop.c oper.c getset.c view.c submatrix.c view.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslmatrix_la_LDFLAGS = ! libgslmatrix_la_LIBADD = ! libgslmatrix_la_OBJECTS = init.lo matrix.lo file.lo rowcol.lo swap.lo \ ! copy.lo minmax.lo prop.lo oper.lo getset.lo view.lo submatrix.lo ! check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! test_static_OBJECTS = test_static.$(OBJEXT) ! test_static_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_static_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) $(test_static_SOURCES) - OBJECTS = $(libgslmatrix_la_OBJECTS) $(test_OBJECTS) $(test_static_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps matrix/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 163,261 ---- libgslmatrix_la_SOURCES = init.c matrix.c file.c rowcol.c swap.c copy.c minmax.c prop.c oper.c getset.c view.c submatrix.c view.h + subdir = matrix + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslmatrix_la_LDFLAGS = ! libgslmatrix_la_LIBADD = ! am_libgslmatrix_la_OBJECTS = init.lo matrix.lo file.lo rowcol.lo swap.lo \ ! copy.lo minmax.lo prop.lo oper.lo getset.lo view.lo \ ! submatrix.lo ! libgslmatrix_la_OBJECTS = $(am_libgslmatrix_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! am_test_static_OBJECTS = test_static.$(OBJEXT) ! test_static_OBJECTS = $(am_test_static_OBJECTS) ! test_static_DEPENDENCIES = libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_static_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) \ ! $(test_static_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslmatrix_la_SOURCES) $(test_SOURCES) $(test_static_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu matrix/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslmatrix.la: $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_DEPENDENCIES) + $(LINK) $(libgslmatrix_la_LDFLAGS) $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) ! @rm -f test_static$(EXEEXT) ! $(LINK) $(test_static_LDFLAGS) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 212,352 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslmatrix.la: $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_DEPENDENCIES) ! $(LINK) $(libgslmatrix_la_LDFLAGS) $(libgslmatrix_la_OBJECTS) $(libgslmatrix_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! ! test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) ! @rm -f test_static$(EXEEXT) ! $(LINK) $(test_static_LDFLAGS) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = matrix distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 266,470 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 356,405 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 474,540 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/matrix/file_source.c gsl-1.4/matrix/file_source.c *** gsl-1.3/matrix/file_source.c Wed Apr 18 21:52:31 2001 --- gsl-1.4/matrix/file_source.c Fri Jul 25 15:18:12 2003 *************** *** 85,92 **** } ! #if !(defined(USES_LONGDOUBLE) && !defined(HAVE_PRINTF_LONGDOUBLE)) int FUNCTION (gsl_matrix, fprintf) (FILE * stream, const TYPE (gsl_matrix) * m, ! const char *format) { int status = 0; --- 85,92 ---- } ! #if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) int FUNCTION (gsl_matrix, fprintf) (FILE * stream, const TYPE (gsl_matrix) * m, ! const char *format) { int status = 0; diff -x.info* -rc2P gsl-1.3/matrix/getset_source.c gsl-1.4/matrix/getset_source.c *** gsl-1.3/matrix/getset_source.c Fri Jun 1 16:01:41 2001 --- gsl-1.4/matrix/getset_source.c Fri Jul 25 15:18:12 2003 *************** *** 6,10 **** FUNCTION (gsl_matrix, get_row) (TYPE (gsl_vector) * v, const TYPE (gsl_matrix) * m, ! const size_t i) { const size_t M = m->size1; --- 6,10 ---- FUNCTION (gsl_matrix, get_row) (TYPE (gsl_vector) * v, const TYPE (gsl_matrix) * m, ! const size_t i) { const size_t M = m->size1; *************** *** 20,24 **** { GSL_ERROR ("matrix row size and vector length are not equal", ! GSL_EBADLEN); } --- 20,24 ---- { GSL_ERROR ("matrix row size and vector length are not equal", ! GSL_EBADLEN); } *************** *** 47,51 **** FUNCTION (gsl_matrix, get_col) (TYPE (gsl_vector) * v, const TYPE (gsl_matrix) * m, ! const size_t j) { const size_t M = m->size1; --- 47,51 ---- FUNCTION (gsl_matrix, get_col) (TYPE (gsl_vector) * v, const TYPE (gsl_matrix) * m, ! const size_t j) { const size_t M = m->size1; *************** *** 61,65 **** { GSL_ERROR ("matrix column size and vector length are not equal", ! GSL_EBADLEN); } --- 61,65 ---- { GSL_ERROR ("matrix column size and vector length are not equal", ! GSL_EBADLEN); } *************** *** 73,83 **** for (i = 0; i < M; i++) { ! unsigned int k; ! for (k = 0; k < MULTIPLICITY; k++) ! { ! v_data[stride * MULTIPLICITY * i + k] = ! column_data[MULTIPLICITY * i * tda + k]; ! } } } --- 73,83 ---- for (i = 0; i < M; i++) { ! unsigned int k; ! for (k = 0; k < MULTIPLICITY; k++) ! { ! v_data[stride * MULTIPLICITY * i + k] = ! column_data[MULTIPLICITY * i * tda + k]; ! } } } *************** *** 88,93 **** int FUNCTION (gsl_matrix, set_row) (TYPE (gsl_matrix) * m, ! const size_t i, ! const TYPE (gsl_vector) * v) { const size_t M = m->size1; --- 88,93 ---- int FUNCTION (gsl_matrix, set_row) (TYPE (gsl_matrix) * m, ! const size_t i, ! const TYPE (gsl_vector) * v) { const size_t M = m->size1; *************** *** 103,107 **** { GSL_ERROR ("matrix row size and vector length are not equal", ! GSL_EBADLEN); } --- 103,107 ---- { GSL_ERROR ("matrix row size and vector length are not equal", ! GSL_EBADLEN); } *************** *** 129,134 **** int FUNCTION (gsl_matrix, set_col) (TYPE (gsl_matrix) * m, ! const size_t j, ! const TYPE (gsl_vector) * v) { const size_t M = m->size1; --- 129,134 ---- int FUNCTION (gsl_matrix, set_col) (TYPE (gsl_matrix) * m, ! const size_t j, ! const TYPE (gsl_vector) * v) { const size_t M = m->size1; *************** *** 144,148 **** { GSL_ERROR ("matrix column size and vector length are not equal", ! GSL_EBADLEN); } --- 144,148 ---- { GSL_ERROR ("matrix column size and vector length are not equal", ! GSL_EBADLEN); } *************** *** 187,191 **** { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } --- 187,191 ---- { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } *************** *** 216,220 **** { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } --- 216,220 ---- { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_char.h gsl-1.4/matrix/gsl_matrix_char.h *** gsl-1.3/matrix/gsl_matrix_char.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_char.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_char_set_col(gsl_matrix_char * m, const size_t j, const gsl_vector_char * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline char gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_char_set_col(gsl_matrix_char * m, const size_t j, const gsl_vector_char * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline char gsl_matrix_char_get(const gsl_matrix_char * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_char_set(gsl_matrix_char * m, const size_t i, const size_t j, const char x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_char_ptr(gsl_matrix_char * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_char_const_ptr(const gsl_matrix_char * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_complex_double.h gsl-1.4/matrix/gsl_matrix_complex_double.h *** gsl-1.3/matrix/gsl_matrix_complex_double.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_complex_double.h Fri Jul 25 15:18:21 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #include *************** *** 228,242 **** int gsl_matrix_complex_set_col(gsl_matrix_complex * m, const size_t j, const gsl_vector_complex * v); ! GSL_VAR int gsl_check_range ; ! ! #ifdef HAVE_INLINE extern inline gsl_complex gsl_matrix_complex_get(const gsl_matrix_complex * m, ! const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF ! const gsl_complex zero = {{0,0}}; if (i >= m->size1) --- 229,241 ---- int gsl_matrix_complex_set_col(gsl_matrix_complex * m, const size_t j, const gsl_vector_complex * v); ! #if HAVE_INLINE extern inline gsl_complex gsl_matrix_complex_get(const gsl_matrix_complex * m, ! const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK ! gsl_complex zero = {{0,0}}; if (i >= m->size1) *************** *** 255,261 **** void gsl_matrix_complex_set(gsl_matrix_complex * m, ! const size_t i, const size_t j, const gsl_complex x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 254,260 ---- void gsl_matrix_complex_set(gsl_matrix_complex * m, ! const size_t i, const size_t j, const gsl_complex x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 275,279 **** const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 274,278 ---- const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 293,297 **** const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 292,296 ---- const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_complex_float.h gsl-1.4/matrix/gsl_matrix_complex_float.h *** gsl-1.3/matrix/gsl_matrix_complex_float.h Mon Jun 10 13:10:57 2002 --- gsl-1.4/matrix/gsl_matrix_complex_float.h Fri Jul 25 15:18:21 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #include *************** *** 228,242 **** int gsl_matrix_complex_float_set_col(gsl_matrix_complex_float * m, const size_t j, const gsl_vector_complex_float * v); ! GSL_VAR int gsl_check_range ; ! ! #ifdef HAVE_INLINE extern inline gsl_complex_float gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, ! const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF ! const gsl_complex_float zero = {{0,0}}; if (i >= m->size1) --- 229,241 ---- int gsl_matrix_complex_float_set_col(gsl_matrix_complex_float * m, const size_t j, const gsl_vector_complex_float * v); ! #if HAVE_INLINE extern inline gsl_complex_float gsl_matrix_complex_float_get(const gsl_matrix_complex_float * m, ! const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK ! gsl_complex_float zero = {{0,0}}; if (i >= m->size1) *************** *** 255,261 **** void gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, ! const size_t i, const size_t j, const gsl_complex_float x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 254,260 ---- void gsl_matrix_complex_float_set(gsl_matrix_complex_float * m, ! const size_t i, const size_t j, const gsl_complex_float x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 275,279 **** const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 274,278 ---- const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 293,297 **** const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 292,296 ---- const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_complex_long_double.h gsl-1.4/matrix/gsl_matrix_complex_long_double.h *** gsl-1.3/matrix/gsl_matrix_complex_long_double.h Mon Jun 10 13:14:10 2002 --- gsl-1.4/matrix/gsl_matrix_complex_long_double.h Fri Jul 25 15:18:21 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #include *************** *** 228,242 **** int gsl_matrix_complex_long_double_set_col(gsl_matrix_complex_long_double * m, const size_t j, const gsl_vector_complex_long_double * v); ! GSL_VAR int gsl_check_range ; ! ! #ifdef HAVE_INLINE extern inline gsl_complex_long_double gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, ! const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF ! const gsl_complex_long_double zero = {{0,0}}; if (i >= m->size1) --- 229,241 ---- int gsl_matrix_complex_long_double_set_col(gsl_matrix_complex_long_double * m, const size_t j, const gsl_vector_complex_long_double * v); ! #if HAVE_INLINE extern inline gsl_complex_long_double gsl_matrix_complex_long_double_get(const gsl_matrix_complex_long_double * m, ! const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK ! gsl_complex_long_double zero = {{0,0}}; if (i >= m->size1) *************** *** 255,261 **** void gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, ! const size_t i, const size_t j, const gsl_complex_long_double x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 254,260 ---- void gsl_matrix_complex_long_double_set(gsl_matrix_complex_long_double * m, ! const size_t i, const size_t j, const gsl_complex_long_double x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 275,279 **** const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 274,278 ---- const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 293,297 **** const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 292,296 ---- const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_double.h gsl-1.4/matrix/gsl_matrix_double.h *** gsl-1.3/matrix/gsl_matrix_double.h Mon Jun 10 13:14:08 2002 --- gsl-1.4/matrix/gsl_matrix_double.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_set_col(gsl_matrix * m, const size_t j, const gsl_vector * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline double gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_set_col(gsl_matrix * m, const size_t j, const gsl_vector * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline double gsl_matrix_get(const gsl_matrix * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_set(gsl_matrix * m, const size_t i, const size_t j, const double x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_ptr(gsl_matrix * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_const_ptr(const gsl_matrix * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_float.h gsl-1.4/matrix/gsl_matrix_float.h *** gsl-1.3/matrix/gsl_matrix_float.h Mon Jun 10 13:11:03 2002 --- gsl-1.4/matrix/gsl_matrix_float.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_float_set_col(gsl_matrix_float * m, const size_t j, const gsl_vector_float * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline float gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_float_set_col(gsl_matrix_float * m, const size_t j, const gsl_vector_float * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline float gsl_matrix_float_get(const gsl_matrix_float * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_float_set(gsl_matrix_float * m, const size_t i, const size_t j, const float x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_float_ptr(gsl_matrix_float * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_float_const_ptr(const gsl_matrix_float * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_int.h gsl-1.4/matrix/gsl_matrix_int.h *** gsl-1.3/matrix/gsl_matrix_int.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_int.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_int_set_col(gsl_matrix_int * m, const size_t j, const gsl_vector_int * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline int gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_int_set_col(gsl_matrix_int * m, const size_t j, const gsl_vector_int * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline int gsl_matrix_int_get(const gsl_matrix_int * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_int_set(gsl_matrix_int * m, const size_t i, const size_t j, const int x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_int_ptr(gsl_matrix_int * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_int_const_ptr(const gsl_matrix_int * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_long.h gsl-1.4/matrix/gsl_matrix_long.h *** gsl-1.3/matrix/gsl_matrix_long.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_long.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_long_set_col(gsl_matrix_long * m, const size_t j, const gsl_vector_long * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline long gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_long_set_col(gsl_matrix_long * m, const size_t j, const gsl_vector_long * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline long gsl_matrix_long_get(const gsl_matrix_long * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_long_set(gsl_matrix_long * m, const size_t i, const size_t j, const long x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_long_ptr(gsl_matrix_long * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_long_const_ptr(const gsl_matrix_long * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_long_double.h gsl-1.4/matrix/gsl_matrix_long_double.h *** gsl-1.3/matrix/gsl_matrix_long_double.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_long_double.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_long_double_set_col(gsl_matrix_long_double * m, const size_t j, const gsl_vector_long_double * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline long double gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_long_double_set_col(gsl_matrix_long_double * m, const size_t j, const gsl_vector_long_double * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline long double gsl_matrix_long_double_get(const gsl_matrix_long_double * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_long_double_set(gsl_matrix_long_double * m, const size_t i, const size_t j, const long double x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_long_double_ptr(gsl_matrix_long_double * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_long_double_const_ptr(const gsl_matrix_long_double * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_short.h gsl-1.4/matrix/gsl_matrix_short.h *** gsl-1.3/matrix/gsl_matrix_short.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_short.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_short_set_col(gsl_matrix_short * m, const size_t j, const gsl_vector_short * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline short gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_short_set_col(gsl_matrix_short * m, const size_t j, const gsl_vector_short * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline short gsl_matrix_short_get(const gsl_matrix_short * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_short_set(gsl_matrix_short * m, const size_t i, const size_t j, const short x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_short_ptr(gsl_matrix_short * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_short_const_ptr(const gsl_matrix_short * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_uchar.h gsl-1.4/matrix/gsl_matrix_uchar.h *** gsl-1.3/matrix/gsl_matrix_uchar.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_uchar.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_uchar_set_col(gsl_matrix_uchar * m, const size_t j, const gsl_vector_uchar * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline unsigned char gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_uchar_set_col(gsl_matrix_uchar * m, const size_t j, const gsl_vector_uchar * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline unsigned char gsl_matrix_uchar_get(const gsl_matrix_uchar * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_uchar_set(gsl_matrix_uchar * m, const size_t i, const size_t j, const unsigned char x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_uchar_ptr(gsl_matrix_uchar * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_uchar_const_ptr(const gsl_matrix_uchar * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_uint.h gsl-1.4/matrix/gsl_matrix_uint.h *** gsl-1.3/matrix/gsl_matrix_uint.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_uint.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_uint_set_col(gsl_matrix_uint * m, const size_t j, const gsl_vector_uint * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline unsigned int gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_uint_set_col(gsl_matrix_uint * m, const size_t j, const gsl_vector_uint * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline unsigned int gsl_matrix_uint_get(const gsl_matrix_uint * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_uint_set(gsl_matrix_uint * m, const size_t i, const size_t j, const unsigned int x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_uint_ptr(gsl_matrix_uint * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_uint_const_ptr(const gsl_matrix_uint * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_ulong.h gsl-1.4/matrix/gsl_matrix_ulong.h *** gsl-1.3/matrix/gsl_matrix_ulong.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_ulong.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_ulong_set_col(gsl_matrix_ulong * m, const size_t j, const gsl_vector_ulong * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline unsigned long gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_ulong_set_col(gsl_matrix_ulong * m, const size_t j, const gsl_vector_ulong * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline unsigned long gsl_matrix_ulong_get(const gsl_matrix_ulong * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_ulong_set(gsl_matrix_ulong * m, const size_t i, const size_t j, const unsigned long x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_ulong_ptr(gsl_matrix_ulong * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_ulong_const_ptr(const gsl_matrix_ulong * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/gsl_matrix_ushort.h gsl-1.4/matrix/gsl_matrix_ushort.h *** gsl-1.3/matrix/gsl_matrix_ushort.h Mon Jun 10 13:14:09 2002 --- gsl-1.4/matrix/gsl_matrix_ushort.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 238,251 **** int gsl_matrix_ushort_set_col(gsl_matrix_ushort * m, const size_t j, const gsl_vector_ushort * v); - GSL_VAR int gsl_check_range ; - /* inline functions if you are using GCC */ ! #ifdef HAVE_INLINE extern inline unsigned short gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 239,250 ---- int gsl_matrix_ushort_set_col(gsl_matrix_ushort * m, const size_t j, const gsl_vector_ushort * v); /* inline functions if you are using GCC */ ! #if HAVE_INLINE extern inline unsigned short gsl_matrix_ushort_get(const gsl_matrix_ushort * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 264,268 **** gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 263,267 ---- gsl_matrix_ushort_set(gsl_matrix_ushort * m, const size_t i, const size_t j, const unsigned short x) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 281,285 **** gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 280,284 ---- gsl_matrix_ushort_ptr(gsl_matrix_ushort * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { *************** *** 298,302 **** gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= m->size1) { --- 297,301 ---- gsl_matrix_ushort_const_ptr(const gsl_matrix_ushort * m, const size_t i, const size_t j) { ! #if GSL_RANGE_CHECK if (i >= m->size1) { diff -x.info* -rc2P gsl-1.3/matrix/init_source.c gsl-1.4/matrix/init_source.c *** gsl-1.3/matrix/init_source.c Tue May 8 11:12:06 2001 --- gsl-1.4/matrix/init_source.c Fri Jul 25 15:18:12 2003 *************** *** 27,36 **** { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } --- 27,36 ---- { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } *************** *** 40,44 **** { GSL_ERROR_VAL ("failed to allocate space for matrix struct", ! GSL_ENOMEM, 0); } --- 40,44 ---- { GSL_ERROR_VAL ("failed to allocate space for matrix struct", ! GSL_ENOMEM, 0); } *************** *** 50,54 **** { GSL_ERROR_VAL ("failed to allocate space for block", ! GSL_ENOMEM, 0); } --- 50,54 ---- { GSL_ERROR_VAL ("failed to allocate space for block", ! GSL_ENOMEM, 0); } *************** *** 95,114 **** { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } else if (d2 < n2) { GSL_ERROR_VAL ("matrix dimension d2 must be greater than n2", ! GSL_EINVAL, 0); } else if (block->size < offset + n1 * d2) { GSL_ERROR_VAL ("matrix size exceeds available block size", ! GSL_EINVAL, 0); } --- 95,114 ---- { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } else if (d2 < n2) { GSL_ERROR_VAL ("matrix dimension d2 must be greater than n2", ! GSL_EINVAL, 0); } else if (block->size < offset + n1 * d2) { GSL_ERROR_VAL ("matrix size exceeds available block size", ! GSL_EINVAL, 0); } *************** *** 118,122 **** { GSL_ERROR_VAL ("failed to allocate space for matrix struct", ! GSL_ENOMEM, 0); } --- 118,122 ---- { GSL_ERROR_VAL ("failed to allocate space for matrix struct", ! GSL_ENOMEM, 0); } *************** *** 144,163 **** { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } else if (k1 + n1 > mm->size1) { GSL_ERROR_VAL ("submatrix dimension 1 exceeds size of original", ! GSL_EINVAL, 0); } else if (k2 + n2 > mm->size2) { GSL_ERROR_VAL ("submatrix dimension 2 exceeds size of original", ! GSL_EINVAL, 0); } --- 144,163 ---- { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } else if (k1 + n1 > mm->size1) { GSL_ERROR_VAL ("submatrix dimension 1 exceeds size of original", ! GSL_EINVAL, 0); } else if (k2 + n2 > mm->size2) { GSL_ERROR_VAL ("submatrix dimension 2 exceeds size of original", ! GSL_EINVAL, 0); } *************** *** 167,171 **** { GSL_ERROR_VAL ("failed to allocate space for matrix struct", ! GSL_ENOMEM, 0); } --- 167,171 ---- { GSL_ERROR_VAL ("failed to allocate space for matrix struct", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/matrix/matrix_source.c gsl-1.4/matrix/matrix_source.c *** gsl-1.3/matrix/matrix_source.c Thu Sep 6 11:05:56 2001 --- gsl-1.4/matrix/matrix_source.c Fri Jul 25 15:18:12 2003 *************** *** 21,38 **** BASE FUNCTION (gsl_matrix, get) (const TYPE (gsl_matrix) * m, ! const size_t i, const size_t j) { ! const BASE zero = ZERO; if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("first index out of range", GSL_EINVAL, zero); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("second index out of range", GSL_EINVAL, zero); ! } } return *(BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)); --- 21,38 ---- BASE FUNCTION (gsl_matrix, get) (const TYPE (gsl_matrix) * m, ! const size_t i, const size_t j) { ! BASE zero = ZERO; if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("first index out of range", GSL_EINVAL, zero); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("second index out of range", GSL_EINVAL, zero); ! } } return *(BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)); *************** *** 41,57 **** void FUNCTION (gsl_matrix, set) (TYPE (gsl_matrix) * m, ! const size_t i, const size_t j, ! const BASE x) { if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VOID ("first index out of range", GSL_EINVAL); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VOID ("second index out of range", GSL_EINVAL); ! } } *(BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)) = x; --- 41,57 ---- void FUNCTION (gsl_matrix, set) (TYPE (gsl_matrix) * m, ! const size_t i, const size_t j, ! const BASE x) { if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VOID ("first index out of range", GSL_EINVAL); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VOID ("second index out of range", GSL_EINVAL); ! } } *(BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)) = x; *************** *** 65,76 **** if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("first index out of range", GSL_EINVAL); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("second index out of range", GSL_EINVAL); ! } } return (BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)); --- 65,76 ---- if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("first index out of range", GSL_EINVAL); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("second index out of range", GSL_EINVAL); ! } } return (BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)); *************** *** 84,95 **** if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("first index out of range", GSL_EINVAL); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("second index out of range", GSL_EINVAL); ! } } return (const BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)); --- 84,95 ---- if (gsl_check_range) { ! if (i >= m->size1) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("first index out of range", GSL_EINVAL); ! } ! else if (j >= m->size2) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("second index out of range", GSL_EINVAL); ! } } return (const BASE *) (m->data + MULTIPLICITY * (i * m->tda + j)); diff -x.info* -rc2P gsl-1.3/matrix/minmax_source.c gsl-1.4/matrix/minmax_source.c *** gsl-1.3/matrix/minmax_source.c Wed Apr 18 21:52:31 2001 --- gsl-1.4/matrix/minmax_source.c Fri Jul 25 15:18:12 2003 *************** *** 33,41 **** { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x > max) ! max = x; ! } } --- 33,41 ---- { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x > max) ! max = x; ! } } *************** *** 58,66 **** { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) ! min = x; ! } } --- 58,66 ---- { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) ! min = x; ! } } *************** *** 88,102 **** { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) ! { ! min = x; ! } ! if (x > max) ! { ! max = x; ! } ! } } --- 88,102 ---- { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) ! { ! min = x; ! } ! if (x > max) ! { ! max = x; ! } ! } } *************** *** 121,127 **** { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x > max) { max = x; --- 121,127 ---- { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x > max) { max = x; *************** *** 129,133 **** jmax = j; } ! } } --- 129,133 ---- jmax = j; } ! } } *************** *** 152,158 **** { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) { min = x; --- 152,158 ---- { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) { min = x; *************** *** 160,164 **** jmin = j; } ! } } --- 160,164 ---- jmin = j; } ! } } *************** *** 189,207 **** { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) ! { ! min = x; ! imin = i; ! jmin = j; ! } ! if (x > max) ! { ! max = x; ! imax = i; ! jmax = j; ! } ! } } --- 189,207 ---- { for (j = 0; j < N; j++) ! { ! BASE x = m->data[i * tda + j]; ! if (x < min) ! { ! min = x; ! imin = i; ! jmin = j; ! } ! if (x > max) ! { ! max = x; ! imax = i; ! jmax = j; ! } ! } } diff -x.info* -rc2P gsl-1.3/matrix/oper_complex_source.c gsl-1.4/matrix/oper_complex_source.c *** gsl-1.3/matrix/oper_complex_source.c Sun Mar 24 20:47:46 2002 --- gsl-1.4/matrix/oper_complex_source.c Fri Jul 25 15:18:12 2003 *************** *** 20,24 **** int FUNCTION (gsl_matrix, add) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; --- 20,24 ---- int FUNCTION (gsl_matrix, add) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; *************** *** 37,50 **** for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! a->data[aij] += b->data[bij]; ! a->data[aij + 1] += b->data[bij + 1]; ! } ! } return GSL_SUCCESS; --- 37,50 ---- for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! a->data[aij] += b->data[bij]; ! a->data[aij + 1] += b->data[bij + 1]; ! } ! } return GSL_SUCCESS; *************** *** 54,58 **** int FUNCTION (gsl_matrix, sub) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; --- 54,58 ---- int FUNCTION (gsl_matrix, sub) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; *************** *** 71,84 **** for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! a->data[aij] -= b->data[bij]; ! a->data[aij + 1] -= b->data[bij + 1]; ! } ! } return GSL_SUCCESS; --- 71,84 ---- for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! a->data[aij] -= b->data[bij]; ! a->data[aij + 1] -= b->data[bij + 1]; ! } ! } return GSL_SUCCESS; *************** *** 88,92 **** int FUNCTION (gsl_matrix, mul_elements) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; --- 88,92 ---- int FUNCTION (gsl_matrix, mul_elements) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; *************** *** 105,124 **** for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! ATOMIC ar = a->data[aij]; ! ATOMIC ai = a->data[aij + 1]; ! ATOMIC br = b->data[bij]; ! ATOMIC bi = b->data[bij + 1]; ! a->data[aij] = ar * br - ai * bi; ! a->data[aij + 1] = ar * bi + ai * br; ! } ! } return GSL_SUCCESS; --- 105,124 ---- for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! ATOMIC ar = a->data[aij]; ! ATOMIC ai = a->data[aij + 1]; ! ATOMIC br = b->data[bij]; ! ATOMIC bi = b->data[bij + 1]; ! a->data[aij] = ar * br - ai * bi; ! a->data[aij + 1] = ar * bi + ai * br; ! } ! } return GSL_SUCCESS; *************** *** 128,132 **** int FUNCTION (gsl_matrix, div_elements) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; --- 128,132 ---- int FUNCTION (gsl_matrix, div_elements) (TYPE (gsl_matrix) * a, ! const TYPE (gsl_matrix) * b) { const size_t M = a->size1; *************** *** 145,159 **** for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! ATOMIC ar = a->data[aij]; ! ATOMIC ai = a->data[aij + 1]; ! ATOMIC br = b->data[bij]; ! ATOMIC bi = b->data[bij + 1]; ATOMIC s = 1.0 / hypot(br, bi); --- 145,159 ---- for (i = 0; i < M; i++) ! { ! for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda_a + j); const size_t bij = 2 * (i * tda_b + j); ! ATOMIC ar = a->data[aij]; ! ATOMIC ai = a->data[aij + 1]; ! ATOMIC br = b->data[bij]; ! ATOMIC bi = b->data[bij + 1]; ATOMIC s = 1.0 / hypot(br, bi); *************** *** 162,169 **** ATOMIC sbi = s * bi; ! a->data[aij] = (ar * sbr + ai * sbi) * s; ! a->data[aij + 1] = (ai * sbr - ar * sbi) * s; ! } ! } return GSL_SUCCESS; --- 162,169 ---- ATOMIC sbi = s * bi; ! a->data[aij] = (ar * sbr + ai * sbi) * s; ! a->data[aij + 1] = (ai * sbr - ar * sbi) * s; ! } ! } return GSL_SUCCESS; *************** *** 185,189 **** { for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda + j); --- 185,189 ---- { for (j = 0; j < N; j++) ! { const size_t aij = 2 * (i * tda + j); *************** *** 210,217 **** { for (j = 0; j < N; j++) ! { ! a->data[2 * (i * tda + j)] += GSL_REAL (x); ! a->data[2 * (i * tda + j) + 1] += GSL_IMAG (x); ! } } --- 210,217 ---- { for (j = 0; j < N; j++) ! { ! a->data[2 * (i * tda + j)] += GSL_REAL (x); ! a->data[2 * (i * tda + j) + 1] += GSL_IMAG (x); ! } } diff -x.info* -rc2P gsl-1.3/matrix/swap_source.c gsl-1.4/matrix/swap_source.c *** gsl-1.3/matrix/swap_source.c Wed Apr 18 21:52:31 2001 --- gsl-1.4/matrix/swap_source.c Fri Jul 25 15:18:12 2003 *************** *** 20,24 **** int FUNCTION (gsl_matrix, swap_rows) (TYPE (gsl_matrix) * m, ! const size_t i, const size_t j) { const size_t size1 = m->size1; --- 20,24 ---- int FUNCTION (gsl_matrix, swap_rows) (TYPE (gsl_matrix) * m, ! const size_t i, const size_t j) { const size_t size1 = m->size1; diff -x.info* -rc2P gsl-1.3/matrix/test.c gsl-1.4/matrix/test.c *** gsl-1.3/matrix/test.c Sun Mar 24 20:00:45 2002 --- gsl-1.4/matrix/test.c Fri Jul 25 15:18:12 2003 *************** *** 20,25 **** #include ! #ifdef GSL_RANGE_CHECK_OFF ! #undef GSL_RANGE_CHECK_OFF #endif --- 20,26 ---- #include ! #if !GSL_RANGE_CHECK ! #undef GSL_RANGE_CHECK ! #define GSL_RANGE_CHECK 1 #endif *************** *** 126,130 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); int --- 127,131 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); int *************** *** 150,154 **** test_text (); test_float_text (); ! #ifdef HAVE_PRINTF_LONGDOUBLE test_long_double_text (); #endif --- 151,155 ---- test_text (); test_float_text (); ! #if HAVE_PRINTF_LONGDOUBLE test_long_double_text (); #endif *************** *** 163,167 **** test_complex_text (); test_complex_float_text (); ! #ifdef HAVE_PRINTF_LONGDOUBLE test_complex_long_double_text (); #endif --- 164,168 ---- test_complex_text (); test_complex_float_text (); ! #if HAVE_PRINTF_LONGDOUBLE test_complex_long_double_text (); #endif *************** *** 181,186 **** test_complex_float_binary (); test_complex_long_double_binary (); - - gsl_warnings_off = 1; gsl_set_error_handler (&my_error_handler); --- 182,185 ---- diff -x.info* -rc2P gsl-1.3/matrix/test_complex_source.c gsl-1.4/matrix/test_complex_source.c *** gsl-1.3/matrix/test_complex_source.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/matrix/test_complex_source.c Fri Jul 25 15:18:12 2003 *************** *** 41,51 **** { for (j = 0; j < N; j++) ! { ! BASE z = ZERO; ! k++; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 1000); ! FUNCTION (gsl_matrix, set) (m, i, j, z); ! } } --- 41,51 ---- { for (j = 0; j < N; j++) ! { ! BASE z = ZERO; ! k++; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 1000); ! FUNCTION (gsl_matrix, set) (m, i, j, z); ! } } *************** *** 55,64 **** { for (j = 0; j < N; j++) ! { ! k++; ! if (m->data[2 * (i * N + j)] != k || ! m->data[2 * (i * N + j) + 1] != k + 1000) ! status = 1; ! } } --- 55,64 ---- { for (j = 0; j < N; j++) ! { ! k++; ! if (m->data[2 * (i * N + j)] != k || ! m->data[2 * (i * N + j) + 1] != k + 1000) ! status = 1; ! } } *************** *** 70,87 **** { for (j = 0; j < N; j++) ! { ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! k++; ! if (GSL_REAL (z) != k || GSL_IMAG (z) != k + 1000) ! status = 1; ! } } gsl_test (status, NAME (gsl_matrix) "_get reads from array"); ! FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ } ! #if !(defined(USES_LONGDOUBLE) && !defined(HAVE_PRINTF_LONGDOUBLE)) void FUNCTION (test, text) (void) --- 70,87 ---- { for (j = 0; j < N; j++) ! { ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! k++; ! if (GSL_REAL (z) != k || GSL_IMAG (z) != k + 1000) ! status = 1; ! } } gsl_test (status, NAME (gsl_matrix) "_get reads from array"); ! FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ } ! #if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) void FUNCTION (test, text) (void) *************** *** 97,108 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! BASE z; ! k++; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 1000); ! FUNCTION (gsl_matrix, set) (m, i, j, z); ! } } --- 97,108 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! BASE z; ! k++; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 1000); ! FUNCTION (gsl_matrix, set) (m, i, j, z); ! } } *************** *** 121,131 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[2 * (i * N + j)] != k ! || mm->data[2 * (i * N + j) + 1] != k + 1000) ! status = 1; ! } } --- 121,131 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[2 * (i * N + j)] != k ! || mm->data[2 * (i * N + j) + 1] != k + 1000) ! status = 1; ! } } *************** *** 153,164 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! BASE z = ZERO; ! k++; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 1000); ! FUNCTION (gsl_matrix, set) (m, i, j, z); ! } } --- 153,164 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! BASE z = ZERO; ! k++; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 1000); ! FUNCTION (gsl_matrix, set) (m, i, j, z); ! } } *************** *** 177,187 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[2 * (i * N + j)] != k ! || mm->data[2 * (i * N + j) + 1] != k + 1000) ! status = 1; ! } } --- 177,187 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[2 * (i * N + j)] != k ! || mm->data[2 * (i * N + j) + 1] != k + 1000) ! status = 1; ! } } *************** *** 207,226 **** FUNCTION (gsl_matrix, set) (mc, i - 1, j, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index below lower bound"); status = 0; FUNCTION (gsl_matrix, set) (mc, i, j - 1, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index below lower bound"); status = 0; FUNCTION (gsl_matrix, set) (mc, M + 1, 0, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index above upper bound"); status = 0; FUNCTION (gsl_matrix, set) (mc, 0, N + 1, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index above upper bound"); status = 0; --- 207,226 ---- FUNCTION (gsl_matrix, set) (mc, i - 1, j, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index below lower bound"); status = 0; FUNCTION (gsl_matrix, set) (mc, i, j - 1, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index below lower bound"); status = 0; FUNCTION (gsl_matrix, set) (mc, M + 1, 0, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index above upper bound"); status = 0; FUNCTION (gsl_matrix, set) (mc, 0, N + 1, z); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index above upper bound"); status = 0; *************** *** 235,270 **** z1 = FUNCTION (gsl_matrix, get) (mc, i - 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index below lower bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 1st index below l.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 1st index below l.b."); status = 0; z1 = FUNCTION (gsl_matrix, get) (mc, 0, j - 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index below lower bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 2nd index below l.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 2nd index below l.b."); status = 0; z1 = FUNCTION (gsl_matrix, get) (mc, M + 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index above upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 1st index above u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 1st index above u.b."); status = 0; z1 = FUNCTION (gsl_matrix, get) (mc, 0, N + 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index above upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 2nd index above u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 2nd index above u.b."); status = 0; --- 235,270 ---- z1 = FUNCTION (gsl_matrix, get) (mc, i - 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index below lower bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 1st index below l.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 1st index below l.b."); status = 0; z1 = FUNCTION (gsl_matrix, get) (mc, 0, j - 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index below lower bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 2nd index below l.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 2nd index below l.b."); status = 0; z1 = FUNCTION (gsl_matrix, get) (mc, M + 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index above upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 1st index above u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 1st index above u.b."); status = 0; z1 = FUNCTION (gsl_matrix, get) (mc, 0, N + 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index above upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 2nd index above u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 2nd index above u.b."); status = 0; *************** *** 272,278 **** gsl_test (!status, NAME (gsl_matrix) "_get traps 1st index at upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 1st index at u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 1st index at u.b."); status = 0; --- 272,278 ---- gsl_test (!status, NAME (gsl_matrix) "_get traps 1st index at upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 1st index at u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 1st index at u.b."); status = 0; *************** *** 280,286 **** gsl_test (!status, NAME (gsl_matrix) "_get traps 2nd index at upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 2nd index at u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 2nd index at u.b."); FUNCTION (gsl_matrix, free) (mc); --- 280,286 ---- gsl_test (!status, NAME (gsl_matrix) "_get traps 2nd index at upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_matrix) "_get, zero real for 2nd index at u.b."); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_matrix) "_get, zero imag for 2nd index at u.b."); FUNCTION (gsl_matrix, free) (mc); *************** *** 307,321 **** { for (j = 0; j < Q; j++) ! { ! BASE z, z1; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 10); ! GSL_REAL (z1) = (ATOMIC) (k + 5); ! GSL_IMAG (z1) = (ATOMIC) (k + 20); ! ! FUNCTION (gsl_matrix, set) (a, i, j, z); ! FUNCTION (gsl_matrix, set) (b, i, j, z1); ! k++; ! } } --- 307,321 ---- { for (j = 0; j < Q; j++) ! { ! BASE z, z1; ! GSL_REAL (z) = (ATOMIC) k; ! GSL_IMAG (z) = (ATOMIC) (k + 10); ! GSL_REAL (z1) = (ATOMIC) (k + 5); ! GSL_IMAG (z1) = (ATOMIC) (k + 20); ! ! FUNCTION (gsl_matrix, set) (a, i, j, z); ! FUNCTION (gsl_matrix, set) (b, i, j, z1); ! k++; ! } } *************** *** 330,341 **** for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (GSL_REAL (z) != (ATOMIC) (2 * k + 5) || ! GSL_IMAG (z) != (ATOMIC) (2 * k + 30)) ! status = 1; ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_add matrix addition"); --- 330,341 ---- for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (GSL_REAL (z) != (ATOMIC) (2 * k + 5) || ! GSL_IMAG (z) != (ATOMIC) (2 * k + 30)) ! status = 1; ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_add matrix addition"); *************** *** 352,363 **** for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (GSL_REAL (z) != (ATOMIC) (-5) ! || GSL_IMAG (z) != (ATOMIC) (-10)) ! status = 1; ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_sub matrix subtraction"); --- 352,363 ---- for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (GSL_REAL (z) != (ATOMIC) (-5) ! || GSL_IMAG (z) != (ATOMIC) (-10)) ! status = 1; ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_sub matrix subtraction"); *************** *** 374,397 **** for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! ATOMIC real = -(ATOMIC) (25 * k + 200); ! ATOMIC imag = (ATOMIC) (2 * k * k + 35 * k + 50); ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (fabs (GSL_REAL (z) - real) > 100 * BASE_EPSILON || ! fabs (GSL_IMAG (z) - imag) > 100 * BASE_EPSILON) ! { ! status = 1; #ifdef DEBUG ! printf ("%d\t%d\n", i, j); ! printf (OUT_FORMAT "\n", ! GSL_REAL (z) + (ATOMIC) (25 * (ATOMIC) k + 200)); ! printf (OUT_FORMAT "\n", ! GSL_IMAG (z) - (ATOMIC) (2 * k * k + 35 * k + 50)); ! printf ("\n"); #endif ! } ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_mul_elements multiplication"); --- 374,397 ---- for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! ATOMIC real = -(ATOMIC) (25 * k + 200); ! ATOMIC imag = (ATOMIC) (2 * k * k + 35 * k + 50); ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (fabs (GSL_REAL (z) - real) > 100 * BASE_EPSILON || ! fabs (GSL_IMAG (z) - imag) > 100 * BASE_EPSILON) ! { ! status = 1; #ifdef DEBUG ! printf ("%d\t%d\n", i, j); ! printf (OUT_FORMAT "\n", ! GSL_REAL (z) + (ATOMIC) (25 * (ATOMIC) k + 200)); ! printf (OUT_FORMAT "\n", ! GSL_IMAG (z) - (ATOMIC) (2 * k * k + 35 * k + 50)); ! printf ("\n"); #endif ! } ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_mul_elements multiplication"); *************** *** 409,433 **** for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! ATOMIC denom = (2 * k * k + 50 * k + 425); ! ATOMIC real = (ATOMIC) (2 * k * k + 35 * k + 200) / denom; ! ATOMIC imag = ((ATOMIC) (50) - (ATOMIC) (5 * k)) / denom; ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (fabs (GSL_REAL (z) - real) > 100 * BASE_EPSILON || ! fabs (GSL_IMAG (z) - imag) > 100 * BASE_EPSILON) ! { #ifdef DEBUG ! printf (OUT_FORMAT "\t", ! GSL_REAL (z) - (ATOMIC) (2 * k * k + 35 * k + ! 200) / denom); ! printf (OUT_FORMAT "\n", ! GSL_IMAG (z) - ((ATOMIC) (50) - ! (ATOMIC) (5 * k)) / denom); #endif ! status = 1; ! } ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_div_elements division"); --- 409,433 ---- for (i = 0; i < P; i++) { ! for (j = 0; j < Q; j++) ! { ! ATOMIC denom = (2 * k * k + 50 * k + 425); ! ATOMIC real = (ATOMIC) (2 * k * k + 35 * k + 200) / denom; ! ATOMIC imag = ((ATOMIC) (50) - (ATOMIC) (5 * k)) / denom; ! BASE z = FUNCTION (gsl_matrix, get) (m, i, j); ! if (fabs (GSL_REAL (z) - real) > 100 * BASE_EPSILON || ! fabs (GSL_IMAG (z) - imag) > 100 * BASE_EPSILON) ! { #ifdef DEBUG ! printf (OUT_FORMAT "\t", ! GSL_REAL (z) - (ATOMIC) (2 * k * k + 35 * k + ! 200) / denom); ! printf (OUT_FORMAT "\n", ! GSL_IMAG (z) - ((ATOMIC) (50) - ! (ATOMIC) (5 * k)) / denom); #endif ! status = 1; ! } ! k++; ! } } gsl_test (status, NAME (gsl_matrix) "_div_elements division"); diff -x.info* -rc2P gsl-1.3/matrix/test_source.c gsl-1.4/matrix/test_source.c *** gsl-1.3/matrix/test_source.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/matrix/test_source.c Fri Jul 25 15:18:12 2003 *************** *** 41,48 **** { for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } --- 41,48 ---- { for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } *************** *** 52,61 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (m->data[i * N + j] != (BASE) k) ! status = 1; ! }; }; --- 52,61 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (m->data[i * N + j] != (BASE) k) ! status = 1; ! }; }; *************** *** 68,77 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (FUNCTION (gsl_matrix, get) (m, i, j) != (BASE) k) ! status = 1; ! }; }; gsl_test (status, NAME (gsl_matrix) "_get reads from array"); --- 68,77 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (FUNCTION (gsl_matrix, get) (m, i, j) != (BASE) k) ! status = 1; ! }; }; gsl_test (status, NAME (gsl_matrix) "_get reads from array"); *************** *** 79,83 **** ! FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ m = FUNCTION (gsl_matrix, calloc) (M, N); --- 79,83 ---- ! FUNCTION (gsl_matrix, free) (m); /* free whatever is in m */ m = FUNCTION (gsl_matrix, calloc) (M, N); *************** *** 88,95 **** { for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } --- 88,95 ---- { for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } *************** *** 99,110 **** for (i = 0; i < M; i++) { ! FUNCTION (gsl_matrix, get_row) (v, m, i); ! for (j = 0; j < N; j++) ! { ! k++; ! if (v->data[j] != (BASE) k) ! status = 1; ! } } --- 99,110 ---- for (i = 0; i < M; i++) { ! FUNCTION (gsl_matrix, get_row) (v, m, i); ! for (j = 0; j < N; j++) ! { ! k++; ! if (v->data[j] != (BASE) k) ! status = 1; ! } } *************** *** 293,297 **** } ! #if !(defined(USES_LONGDOUBLE) && !defined(HAVE_PRINTF_LONGDOUBLE)) void FUNCTION (test, text) (void) --- 293,297 ---- } ! #if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) void FUNCTION (test, text) (void) *************** *** 307,315 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } --- 307,315 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } *************** *** 327,336 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[i * N + j] != (BASE) k) ! status = 1; ! } } --- 327,336 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[i * N + j] != (BASE) k) ! status = 1; ! } } *************** *** 358,366 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } --- 358,366 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! FUNCTION (gsl_matrix, set) (m, i, j, (BASE) k); ! } } *************** *** 378,387 **** for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[i * N + j] != (BASE) k) ! status = 1; ! } } --- 378,387 ---- for (i = 0; i < M; i++) { ! for (j = 0; j < N; j++) ! { ! k++; ! if (mm->data[i * N + j] != (BASE) k) ! status = 1; ! } } *************** *** 406,430 **** FUNCTION (gsl_matrix, set) (m, M + 1, 0, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index above upper bound"); status = 0; FUNCTION (gsl_matrix, set) (m, 0, N + 1, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index above upper bound"); status = 0; FUNCTION (gsl_matrix, set) (m, M, 0, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index at upper bound"); status = 0; FUNCTION (gsl_matrix, set) (m, 0, N, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index at upper bound"); status = 0; x = FUNCTION (gsl_matrix, get) (m, i - 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index below lower bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 1st index below lower bound"); --- 406,430 ---- FUNCTION (gsl_matrix, set) (m, M + 1, 0, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index above upper bound"); status = 0; FUNCTION (gsl_matrix, set) (m, 0, N + 1, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index above upper bound"); status = 0; FUNCTION (gsl_matrix, set) (m, M, 0, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 1st index at upper bound"); status = 0; FUNCTION (gsl_matrix, set) (m, 0, N, (BASE) 1.2); gsl_test (!status, ! NAME (gsl_matrix) "_set traps 2nd index at upper bound"); status = 0; x = FUNCTION (gsl_matrix, get) (m, i - 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index below lower bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 1st index below lower bound"); *************** *** 433,437 **** x = FUNCTION (gsl_matrix, get) (m, 0, j - 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index below lower bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 2nd index below lower bound"); --- 433,437 ---- x = FUNCTION (gsl_matrix, get) (m, 0, j - 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index below lower bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 2nd index below lower bound"); *************** *** 440,444 **** x = FUNCTION (gsl_matrix, get) (m, M + 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index above upper bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 1st index above upper bound"); --- 440,444 ---- x = FUNCTION (gsl_matrix, get) (m, M + 1, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index above upper bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 1st index above upper bound"); *************** *** 447,451 **** x = FUNCTION (gsl_matrix, get) (m, 0, N + 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index above upper bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 2nd index above upper bound"); --- 447,451 ---- x = FUNCTION (gsl_matrix, get) (m, 0, N + 1); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index above upper bound"); gsl_test (x != 0, NAME (gsl_matrix) "_get returns zero for 2nd index above upper bound"); *************** *** 454,467 **** x = FUNCTION (gsl_matrix, get) (m, M, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index at upper bound"); gsl_test (x != 0, ! NAME (gsl_matrix) "_get returns zero for 1st index at upper bound"); status = 0; x = FUNCTION (gsl_matrix, get) (m, 0, N); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index at upper bound"); gsl_test (x != 0, ! NAME (gsl_matrix) "_get returns zero for 2nd index at upper bound"); FUNCTION (gsl_matrix, free) (m); --- 454,467 ---- x = FUNCTION (gsl_matrix, get) (m, M, 0); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 1st index at upper bound"); gsl_test (x != 0, ! NAME (gsl_matrix) "_get returns zero for 1st index at upper bound"); status = 0; x = FUNCTION (gsl_matrix, get) (m, 0, N); gsl_test (!status, ! NAME (gsl_matrix) "_get traps 2nd index at upper bound"); gsl_test (x != 0, ! NAME (gsl_matrix) "_get returns zero for 2nd index at upper bound"); FUNCTION (gsl_matrix, free) (m); diff -x.info* -rc2P gsl-1.3/matrix/view_source.c gsl-1.4/matrix/view_source.c *** gsl-1.3/matrix/view_source.c Fri Sep 14 18:05:03 2001 --- gsl-1.4/matrix/view_source.c Fri Jul 25 15:18:12 2003 *************** *** 195,214 **** { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } else if (k1 + n1 > mm->size1) { GSL_ERROR_VAL ("submatrix dimension 1 exceeds size of original", ! GSL_EINVAL, 0); } else if (k2 + n2 > mm->size2) { GSL_ERROR_VAL ("submatrix dimension 2 exceeds size of original", ! GSL_EINVAL, 0); } --- 195,214 ---- { GSL_ERROR_VAL ("matrix dimension n1 must be positive integer", ! GSL_EINVAL, 0); } else if (n2 == 0) { GSL_ERROR_VAL ("matrix dimension n2 must be positive integer", ! GSL_EINVAL, 0); } else if (k1 + n1 > mm->size1) { GSL_ERROR_VAL ("submatrix dimension 1 exceeds size of original", ! GSL_EINVAL, 0); } else if (k2 + n2 > mm->size2) { GSL_ERROR_VAL ("submatrix dimension 2 exceeds size of original", ! GSL_EINVAL, 0); } diff -x.info* -rc2P gsl-1.3/min/Makefile.in gsl-1.4/min/Makefile.in *** gsl-1.3/min/Makefile.in Wed Dec 18 22:40:30 2002 --- gsl-1.4/min/Makefile.in Thu Aug 14 12:29:19 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslmin.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslmin.la *************** *** 101,194 **** test_SOURCES = test.c test_funcs.c test.h test_LDADD = libgslmin.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslmin_la_LDFLAGS = ! libgslmin_la_LIBADD = ! libgslmin_la_OBJECTS = fsolver.lo golden.lo brent.lo convergence.lo \ ! bracketing.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_DEPENDENCIES = libgslmin.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ ! ../sys/libgslsys.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslmin_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps min/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 157,242 ---- test_SOURCES = test.c test_funcs.c test.h test_LDADD = libgslmin.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la + subdir = min + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslmin_la_LDFLAGS = ! libgslmin_la_LIBADD = ! am_libgslmin_la_OBJECTS = fsolver.lo golden.lo brent.lo convergence.lo \ ! bracketing.lo ! libgslmin_la_OBJECTS = $(am_libgslmin_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslmin.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ ! ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in SOURCES = $(libgslmin_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu min/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslmin.la: $(libgslmin_la_OBJECTS) $(libgslmin_la_DEPENDENCIES) + $(LINK) $(libgslmin_la_LDFLAGS) $(libgslmin_la_OBJECTS) $(libgslmin_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 199,335 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslmin.la: $(libgslmin_la_OBJECTS) $(libgslmin_la_DEPENDENCIES) ! $(LINK) $(libgslmin_la_LDFLAGS) $(libgslmin_la_OBJECTS) $(libgslmin_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = min distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 247,451 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 338,387 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 454,520 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/min/bracketing.c gsl-1.4/min/bracketing.c *** gsl-1.3/min/bracketing.c Sun Apr 7 13:55:33 2002 --- gsl-1.4/min/bracketing.c Fri Jul 25 15:18:12 2003 *************** *** 30,36 **** int gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum, ! double * x_lower, double * f_lower, double * x_upper, double * f_upper, ! size_t eval_max) { /* The three following variables must be declared volatile to avoid storage --- 30,36 ---- int gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum, ! double * x_lower, double * f_lower, double * x_upper, double * f_upper, ! size_t eval_max) { /* The three following variables must be declared volatile to avoid storage *************** *** 48,52 **** double x_right= *x_upper; double x_center; ! const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ size_t nb_eval = 0; --- 48,52 ---- double x_right= *x_upper; double x_center; ! const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ size_t nb_eval = 0; *************** *** 70,118 **** { if (f_center < f_left ) ! { ! if (f_center < f_right) ! { ! *x_lower = x_left; ! *x_upper = x_right; ! *x_minimum = x_center; ! *f_lower = f_left; ! *f_upper = f_right; ! *f_minimum = f_center; ! /* gsl_ieee_printf_double (&f_left); ! printf(" "); ! gsl_ieee_printf_double (&f_center); ! printf("\n");*/ ! return GSL_SUCCESS; ! } ! else if (f_center > f_right) ! { ! x_left = x_center; ! f_left = f_center; ! x_center = x_right; ! f_center = f_right; ! x_right = (x_center - x_left) / golden + x_left; ! nb_eval++; ! SAFE_FUNC_CALL (f, x_right, &f_right); ! } ! else /* f_center == f_right */ ! { ! x_right = x_center; ! f_right = f_center; ! x_center = (x_right - x_left) * golden + x_left; ! nb_eval++; ! SAFE_FUNC_CALL (f, x_center, &f_center); ! } ! } else /* f_center >= f_left */ ! { ! x_right = x_center; ! f_right = f_center; ! x_center = (x_right - x_left) * golden + x_left; ! nb_eval++; ! SAFE_FUNC_CALL (f, x_center, &f_center); ! } } while (nb_eval < eval_max ! && (x_right - x_left) > GSL_SQRT_DBL_EPSILON * ( (x_right + x_left) * 0.5 ) + GSL_SQRT_DBL_EPSILON); *x_lower = x_left; *x_upper = x_right; --- 70,118 ---- { if (f_center < f_left ) ! { ! if (f_center < f_right) ! { ! *x_lower = x_left; ! *x_upper = x_right; ! *x_minimum = x_center; ! *f_lower = f_left; ! *f_upper = f_right; ! *f_minimum = f_center; ! /* gsl_ieee_printf_double (&f_left); ! printf(" "); ! gsl_ieee_printf_double (&f_center); ! printf("\n");*/ ! return GSL_SUCCESS; ! } ! else if (f_center > f_right) ! { ! x_left = x_center; ! f_left = f_center; ! x_center = x_right; ! f_center = f_right; ! x_right = (x_center - x_left) / golden + x_left; ! nb_eval++; ! SAFE_FUNC_CALL (f, x_right, &f_right); ! } ! else /* f_center == f_right */ ! { ! x_right = x_center; ! f_right = f_center; ! x_center = (x_right - x_left) * golden + x_left; ! nb_eval++; ! SAFE_FUNC_CALL (f, x_center, &f_center); ! } ! } else /* f_center >= f_left */ ! { ! x_right = x_center; ! f_right = f_center; ! x_center = (x_right - x_left) * golden + x_left; ! nb_eval++; ! SAFE_FUNC_CALL (f, x_center, &f_center); ! } } while (nb_eval < eval_max ! && (x_right - x_left) > GSL_SQRT_DBL_EPSILON * ( (x_right + x_left) * 0.5 ) + GSL_SQRT_DBL_EPSILON); *x_lower = x_left; *x_upper = x_right; diff -x.info* -rc2P gsl-1.3/min/brent.c gsl-1.4/min/brent.c *** gsl-1.3/min/brent.c Sun Apr 7 13:56:08 2002 --- gsl-1.4/min/brent.c Fri Jul 25 15:18:12 2003 *************** *** 49,53 **** brent_state_t *state = (brent_state_t *) vstate; ! const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ double v = x_lower + golden * (x_upper - x_lower); --- 49,53 ---- brent_state_t *state = (brent_state_t *) vstate; ! const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ double v = x_lower + golden * (x_upper - x_lower); *************** *** 93,97 **** const double f_z = *f_minimum; ! const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ const double w_lower = (z - x_left); --- 93,97 ---- const double f_z = *f_minimum; ! const double golden = 0.3819660; /* golden = (3 - sqrt(5))/2 */ const double w_lower = (z - x_left); *************** *** 114,124 **** if (q > 0) ! { ! p = -p; ! } else ! { ! q = -q; ! } r = e; --- 114,124 ---- if (q > 0) ! { ! p = -p; ! } else ! { ! q = -q; ! } r = e; *************** *** 134,140 **** if ((u - x_left) < t2 || (x_right - z) < t2) ! { ! d = (z < midpoint) ? tolerance : -tolerance ; ! } } else --- 134,140 ---- if ((u - x_left) < t2 || (x_right - z) < t2) ! { ! d = (z < midpoint) ? tolerance : -tolerance ; ! } } else *************** *** 162,189 **** { if (u < z) ! { ! *x_lower = u; *f_lower = f_u; return GSL_SUCCESS; ! } else ! { ! *x_upper = u; *f_upper = f_u; return GSL_SUCCESS; ! } } else if (f_u < f_z) { if (u < z) ! { ! *x_upper = z; *f_upper = f_z; ! } else ! { ! *x_lower = z; *f_lower = f_z; ! } state->v = w; --- 162,189 ---- { if (u < z) ! { ! *x_lower = u; *f_lower = f_u; return GSL_SUCCESS; ! } else ! { ! *x_upper = u; *f_upper = f_u; return GSL_SUCCESS; ! } } else if (f_u < f_z) { if (u < z) ! { ! *x_upper = z; *f_upper = f_z; ! } else ! { ! *x_lower = z; *f_lower = f_z; ! } state->v = w; *************** *** 217,221 **** static const gsl_min_fminimizer_type brent_type = ! {"brent", /* name */ sizeof (brent_state_t), &brent_init, --- 217,221 ---- static const gsl_min_fminimizer_type brent_type = ! {"brent", /* name */ sizeof (brent_state_t), &brent_init, diff -x.info* -rc2P gsl-1.3/min/fsolver.c gsl-1.4/min/fsolver.c *** gsl-1.3/min/fsolver.c Sun Apr 7 13:55:07 2002 --- gsl-1.4/min/fsolver.c Fri Jul 25 15:18:12 2003 *************** *** 77,81 **** { GSL_ERROR_VAL ("failed to allocate space for minimizer struct", ! GSL_ENOMEM, 0); }; --- 77,81 ---- { GSL_ERROR_VAL ("failed to allocate space for minimizer struct", ! GSL_ENOMEM, 0); }; *************** *** 84,91 **** if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for minimizer state", ! GSL_ENOMEM, 0); }; --- 84,91 ---- if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for minimizer state", ! GSL_ENOMEM, 0); }; diff -x.info* -rc2P gsl-1.3/min/golden.c gsl-1.4/min/golden.c *** gsl-1.3/min/golden.c Sun Apr 7 13:57:41 2002 --- gsl-1.4/min/golden.c Fri Jul 25 15:18:12 2003 *************** *** 113,117 **** static const gsl_min_fminimizer_type goldensection_type = ! {"goldensection", /* name */ sizeof (goldensection_state_t), &goldensection_init, --- 113,117 ---- static const gsl_min_fminimizer_type goldensection_type = ! {"goldensection", /* name */ sizeof (goldensection_state_t), &goldensection_init, diff -x.info* -rc2P gsl-1.3/min/gsl_min.h gsl-1.4/min/gsl_min.h *** gsl-1.3/min/gsl_min.h Mon Jun 10 13:11:17 2002 --- gsl-1.4/min/gsl_min.h Fri Jul 25 15:18:21 2003 *************** *** 95,108 **** typedef int (*gsl_min_bracketing_function)(gsl_function *f, ! double *x_minimum,double * f_minimum, ! double *x_lower, double * f_lower, double *x_upper, double * f_upper, ! size_t eval_max); int gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum, ! double *x_lower, double * f_lower, double *x_upper, double * f_upper, ! size_t eval_max); __END_DECLS --- 95,108 ---- typedef int (*gsl_min_bracketing_function)(gsl_function *f, ! double *x_minimum,double * f_minimum, ! double *x_lower, double * f_lower, double *x_upper, double * f_upper, ! size_t eval_max); int gsl_min_find_bracket(gsl_function *f,double *x_minimum,double * f_minimum, ! double *x_lower, double * f_lower, double *x_upper, double * f_upper, ! size_t eval_max); __END_DECLS diff -x.info* -rc2P gsl-1.3/min/test.c gsl-1.4/min/test.c *** gsl-1.3/min/test.c Sun Apr 7 13:58:27 2002 --- gsl-1.4/min/test.c Fri Jul 25 15:18:12 2003 *************** *** 36,40 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); #define WITHIN_TOL(a, b, epsrel, epsabs) \ --- 36,40 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); #define WITHIN_TOL(a, b, epsrel, epsabs) \ *************** *** 86,90 **** test_f (const gsl_min_fminimizer_type * T, const char * description, gsl_function *f, ! double lower_bound, double middle, double upper_bound, double correct_minimum) { --- 86,90 ---- test_f (const gsl_min_fminimizer_type * T, const char * description, gsl_function *f, ! double lower_bound, double middle, double upper_bound, double correct_minimum) { *************** *** 117,124 **** if (a > b) ! gsl_test (GSL_FAILURE, "interval is invalid (%g,%g)", a, b); if (m < a || m > b) ! gsl_test (GSL_FAILURE, "m lies outside interval %g (%g,%g)", m, a, b); if (status) break ; --- 117,124 ---- if (a > b) ! gsl_test (GSL_FAILURE, "interval is invalid (%g,%g)", a, b); if (m < a || m > b) ! gsl_test (GSL_FAILURE, "m lies outside interval %g (%g,%g)", m, a, b); if (status) break ; *************** *** 129,134 **** gsl_test (status, "%s, %s (%g obs vs %g expected) ", ! gsl_min_fminimizer_name(s), description, ! gsl_min_fminimizer_x_minimum(s), correct_minimum); /* check the validity of the returned result */ --- 129,134 ---- gsl_test (status, "%s, %s (%g obs vs %g expected) ", ! gsl_min_fminimizer_name(s), description, ! gsl_min_fminimizer_x_minimum(s), correct_minimum); /* check the validity of the returned result */ *************** *** 137,141 **** { gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", ! m, correct_minimum); } --- 137,141 ---- { gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", ! m, correct_minimum); } *************** *** 146,151 **** void test_f_e (const gsl_min_fminimizer_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double middle, double upper_bound, double correct_minimum) { --- 146,151 ---- void test_f_e (const gsl_min_fminimizer_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double middle, double upper_bound, double correct_minimum) { *************** *** 181,185 **** gsl_test (!status, "%s, %s", gsl_min_fminimizer_name(s), description, ! gsl_min_fminimizer_x_minimum(s) - correct_minimum); gsl_min_fminimizer_free (s); --- 181,185 ---- gsl_test (!status, "%s, %s", gsl_min_fminimizer_name(s), description, ! gsl_min_fminimizer_x_minimum(s) - correct_minimum); gsl_min_fminimizer_free (s); *************** *** 195,199 **** int test_bracket (const char * description,gsl_function *f,double lower_bound, ! double upper_bound, unsigned int max) { int status; --- 195,199 ---- int test_bracket (const char * description,gsl_function *f,double lower_bound, ! double upper_bound, unsigned int max) { int status; *************** *** 208,212 **** status=gsl_min_find_bracket(f,&x_minimum,&f_minimum,&x_lower,&f_lower,&x_upper,&f_upper,max); gsl_test (status,"%s, interval: [%g,%g], values: (%g,%g), minimum at: %g, value: %g", ! description,x_lower,x_upper,f_lower,f_upper,x_minimum,f_minimum); return status; } --- 208,212 ---- status=gsl_min_find_bracket(f,&x_minimum,&f_minimum,&x_lower,&f_lower,&x_upper,&f_upper,max); gsl_test (status,"%s, interval: [%g,%g], values: (%g,%g), minimum at: %g, value: %g", ! description,x_lower,x_upper,f_lower,f_upper,x_minimum,f_minimum); return status; } diff -x.info* -rc2P gsl-1.3/min/test.h gsl-1.4/min/test.h *** gsl-1.3/min/test.h Thu Sep 27 20:53:08 2001 --- gsl-1.4/min/test.h Fri Jul 25 15:18:21 2003 *************** *** 22,27 **** void test_f_e (const gsl_min_fminimizer_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double minimum, double upper_bound, double correct_minimum); --- 22,27 ---- void test_f_e (const gsl_min_fminimizer_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double minimum, double upper_bound, double correct_minimum); *************** *** 29,38 **** test_f (const gsl_min_fminimizer_type * T, const char * description, gsl_function *f, ! double lower_bound, double middle, double upper_bound, double correct_minimum); int test_bracket (const char * description,gsl_function *f,double lower_bound, ! double upper_bound, unsigned int max); double f_cos (double x, void * p); --- 29,38 ---- test_f (const gsl_min_fminimizer_type * T, const char * description, gsl_function *f, ! double lower_bound, double middle, double upper_bound, double correct_minimum); int test_bracket (const char * description,gsl_function *f,double lower_bound, ! double upper_bound, unsigned int max); double f_cos (double x, void * p); diff -x.info* -rc2P gsl-1.3/missing gsl-1.4/missing *** gsl-1.3/missing Fri Aug 1 01:37:53 1997 --- gsl-1.4/missing Mon Jun 16 08:00:23 2003 *************** *** 1,6 **** #! /bin/sh # Common stub for a few missing GNU programs while installing. ! # Copyright (C) 1996, 1997 Free Software Foundation, Inc. ! # Franc,ois Pinard , 1996. # This program is free software; you can redistribute it and/or modify --- 1,6 ---- #! /bin/sh # Common stub for a few missing GNU programs while installing. ! # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. ! # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify *************** *** 19,22 **** --- 19,27 ---- # 02111-1307, USA. + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a + # configuration script generated by Autoconf, you may include it under + # the same distribution terms that you use for the rest of that program. + if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" *************** *** 24,27 **** --- 29,53 ---- fi + run=: + + # In the cases where this matters, `missing' is being run in the + # srcdir already. + if test -f configure.ac; then + configure_ac=configure.ac + else + configure_ac=configure.in + fi + + case "$1" in + --run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; + esac + + # If it does not exist, or fails to run (possibly an outdated version), + # try to emulate it. case "$1" in *************** *** 36,39 **** --- 62,66 ---- -h, --help display this help and exit -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails Supported PROGRAM values: *************** *** 42,52 **** autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files ! bison touch file \`y.tab.c' makeinfo touch the output file ! yacc touch file \`y.tab.c'" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) ! echo "missing - GNU libit 0.0" ;; --- 69,83 ---- autoheader touch file \`config.h.in' automake touch all \`Makefile.in' files ! bison create \`y.tab.[ch]', if possible, from existing .[ch] ! flex create \`lex.yy.c', if possible, from existing .c ! help2man touch the output file ! lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file ! tar try tar, gnutar, gtar, then tar without non-portable flags ! yacc create \`y.tab.[ch]', if possible, from existing .[ch]" ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) ! echo "missing 0.4 - GNU automake" ;; *************** *** 57,64 **** ;; ! aclocal) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." --- 88,100 ---- ;; ! aclocal*) ! if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ! # We have it, but it failed. ! exit 1 ! fi ! echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." *************** *** 67,73 **** autoconf) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." --- 103,114 ---- autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." *************** *** 76,96 **** autoheader) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`acconfig.h' or \`configure.in'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." ! touch config.h.in ;; ! automake) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." ! find . -type f -name Makefile.am -print \ ! | sed 's/^\(.*\).am$/touch \1.in/' \ ! | sh ;; --- 117,185 ---- autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." ! files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` ! test -z "$files" && files="config.h" ! touch_files= ! for f in $files; do ! case "$f" in ! *:*) touch_files="$touch_files "`echo "$f" | ! sed -e 's/^[^:]*://' -e 's/:.*//'`;; ! *) touch_files="$touch_files $f.in";; ! esac ! done ! touch $touch_files ;; ! automake*) ! if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ! # We have it, but it failed. ! exit 1 ! fi ! echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if ! you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." ! find . -type f -name Makefile.am -print | ! sed 's/\.am$/.in/' | ! while read f; do touch "$f"; done ! ;; ! ! autom4te) ! if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ! # We have it, but it failed. ! exit 1 ! fi ! ! echo 1>&2 "\ ! WARNING: \`$1' is needed, and you do not seem to have it handy on your ! system. You might have modified some files without having the ! proper tools for further handling them. ! You can get \`$1Help2man' as part of \`Autoconf' from any GNU ! archive site." ! ! file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` ! test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` ! if test -f "$file"; then ! touch $file ! else ! test -z "$file" || exec >$file ! echo "#! /bin/sh" ! echo "# Created by GNU Automake missing as a replacement of" ! echo "# $ $@" ! echo "exit 0" ! chmod +x $file ! exit 1 ! fi ;; *************** *** 101,108 **** in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." ! touch y.tab.c ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if --- 190,271 ---- in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." ! rm -f y.tab.c y.tab.h ! if [ $# -ne 1 ]; then ! eval LASTARG="\${$#}" ! case "$LASTARG" in ! *.y) ! SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` ! if [ -f "$SRCFILE" ]; then ! cp "$SRCFILE" y.tab.c ! fi ! SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` ! if [ -f "$SRCFILE" ]; then ! cp "$SRCFILE" y.tab.h ! fi ! ;; ! esac ! fi ! if [ ! -f y.tab.h ]; then ! echo >y.tab.h ! fi ! if [ ! -f y.tab.c ]; then ! echo 'main() { return 0; }' >y.tab.c ! fi ! ;; ! ! lex|flex) ! echo 1>&2 "\ ! WARNING: \`$1' is missing on your system. You should only need it if ! you modified a \`.l' file. You may need the \`Flex' package ! in order for those modifications to take effect. You can get ! \`Flex' from any GNU archive site." ! rm -f lex.yy.c ! if [ $# -ne 1 ]; then ! eval LASTARG="\${$#}" ! case "$LASTARG" in ! *.l) ! SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` ! if [ -f "$SRCFILE" ]; then ! cp "$SRCFILE" lex.yy.c ! fi ! ;; ! esac ! fi ! if [ ! -f lex.yy.c ]; then ! echo 'main() { return 0; }' >lex.yy.c ! fi ! ;; ! ! help2man) ! if test -z "$run" && ($1 --version) > /dev/null 2>&1; then ! # We have it, but it failed. ! exit 1 ! fi ! ! echo 1>&2 "\ ! WARNING: \`$1' is missing on your system. You should only need it if ! you modified a dependency of a manual page. You may need the ! \`Help2man' package in order for those modifications to take ! effect. You can get \`Help2man' from any GNU archive site." ! ! file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` ! if test -z "$file"; then ! file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` ! fi ! if [ -f "$file" ]; then ! touch $file ! else ! test -z "$file" || exec >$file ! echo ".ab help2man is required to generate this page" ! exit 1 ! fi ;; makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + echo 1>&2 "\ WARNING: \`$1' is missing on your system. You should only need it if *************** *** 118,121 **** --- 281,323 ---- fi touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ + WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 ;; diff -x.info* -rc2P gsl-1.3/monte/Makefile.am gsl-1.4/monte/Makefile.am *** gsl-1.3/monte/Makefile.am Fri May 11 17:22:35 2001 --- gsl-1.4/monte/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 12,16 **** test_SOURCES = test.c ! test_LDADD = libgslmonte.la ../rng/libgslrng.la ../sys/libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la noinst_HEADERS = test_main.c --- 12,16 ---- test_SOURCES = test.c ! test_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la noinst_HEADERS = test_main.c diff -x.info* -rc2P gsl-1.3/monte/Makefile.in gsl-1.4/monte/Makefile.in *** gsl-1.3/monte/Makefile.in Wed Dec 18 22:40:44 2002 --- gsl-1.4/monte/Makefile.in Thu Aug 14 12:29:13 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslmonte.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslmonte.la *************** *** 98,193 **** test_SOURCES = test.c ! test_LDADD = libgslmonte.la ../rng/libgslrng.la ../sys/libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la noinst_HEADERS = test_main.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslmonte_la_LDFLAGS = ! libgslmonte_la_LIBADD = ! libgslmonte_la_OBJECTS = miser.lo plain.lo vegas.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslmonte.la ../rng/libgslrng.la \ ! ../sys/libgslsys.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = README ChangeLog Makefile.am Makefile.in TODO ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslmonte_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps monte/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 154,241 ---- test_SOURCES = test.c ! test_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la noinst_HEADERS = test_main.c + subdir = monte + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslmonte_la_LDFLAGS = ! libgslmonte_la_LIBADD = ! am_libgslmonte_la_OBJECTS = miser.lo plain.lo vegas.lo ! libgslmonte_la_OBJECTS = $(am_libgslmonte_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslmonte.la ../rng/libgslrng.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = README $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslmonte_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu monte/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslmonte.la: $(libgslmonte_la_OBJECTS) $(libgslmonte_la_DEPENDENCIES) + $(LINK) $(libgslmonte_la_LDFLAGS) $(libgslmonte_la_OBJECTS) $(libgslmonte_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 198,334 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslmonte.la: $(libgslmonte_la_OBJECTS) $(libgslmonte_la_DEPENDENCIES) ! $(LINK) $(libgslmonte_la_LDFLAGS) $(libgslmonte_la_OBJECTS) $(libgslmonte_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = monte distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 246,450 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 337,390 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean #demo_SOURCES= demo.c #demo_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 453,523 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ! clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-libtool distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-pkgincludeHEADERS \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ ! pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS #demo_SOURCES= demo.c #demo_LDADD = libgslmonte.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/monte/TODO gsl-1.4/monte/TODO *** gsl-1.3/monte/TODO Fri Dec 22 21:39:56 2000 --- gsl-1.4/monte/TODO Mon Jun 30 17:35:13 2003 *************** *** 18,19 **** --- 18,24 ---- way the error would be increased. + * The original VEGAS allowed to user to calculate other weighted + quantities. The appropriate way to implement it in GSL would be to + provide a separate routine which returns sample points and weights so + that the user can caculate any quantity. + diff -x.info* -rc2P gsl-1.3/monte/gsl_monte_miser.h gsl-1.4/monte/gsl_monte_miser.h *** gsl-1.3/monte/gsl_monte_miser.h Mon Jun 10 13:04:37 2002 --- gsl-1.4/monte/gsl_monte_miser.h Fri Jul 25 15:18:21 2003 *************** *** 67,74 **** int gsl_monte_miser_integrate(gsl_monte_function * f, const double xl[], const double xh[], ! size_t dim, size_t calls, gsl_rng *r, gsl_monte_miser_state* state, ! double *result, double *abserr); gsl_monte_miser_state* gsl_monte_miser_alloc(size_t dim); --- 67,74 ---- int gsl_monte_miser_integrate(gsl_monte_function * f, const double xl[], const double xh[], ! size_t dim, size_t calls, gsl_rng *r, gsl_monte_miser_state* state, ! double *result, double *abserr); gsl_monte_miser_state* gsl_monte_miser_alloc(size_t dim); diff -x.info* -rc2P gsl-1.3/monte/gsl_monte_plain.h gsl-1.4/monte/gsl_monte_plain.h *** gsl-1.3/monte/gsl_monte_plain.h Mon Jun 10 13:04:37 2002 --- gsl-1.4/monte/gsl_monte_plain.h Fri Jul 25 15:18:21 2003 *************** *** 48,56 **** int gsl_monte_plain_integrate (const gsl_monte_function * f, ! const double xl[], const double xu[], ! const size_t dim, ! const size_t calls, ! gsl_rng * r, ! gsl_monte_plain_state * state, double *result, double *abserr); --- 48,56 ---- int gsl_monte_plain_integrate (const gsl_monte_function * f, ! const double xl[], const double xu[], ! const size_t dim, ! const size_t calls, ! gsl_rng * r, ! gsl_monte_plain_state * state, double *result, double *abserr); diff -x.info* -rc2P gsl-1.3/monte/miser.c gsl-1.4/monte/miser.c *** gsl-1.3/monte/miser.c Fri Apr 27 17:54:00 2001 --- gsl-1.4/monte/miser.c Fri Jul 25 15:18:12 2003 *************** *** 41,59 **** static int estimate_corrmc (gsl_monte_function * f, ! const double xl[], const double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_miser_state * state, ! double *result, double *abserr, ! const double xmid[], double sigma_l[], double sigma_r[]); int gsl_monte_miser_integrate (gsl_monte_function * f, ! const double xl[], const double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_miser_state * state, ! double *result, double *abserr) { size_t n, estimate_calls, calls_l, calls_r; --- 41,59 ---- static int estimate_corrmc (gsl_monte_function * f, ! const double xl[], const double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_miser_state * state, ! double *result, double *abserr, ! const double xmid[], double sigma_l[], double sigma_r[]); int gsl_monte_miser_integrate (gsl_monte_function * f, ! const double xl[], const double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_miser_state * state, ! double *result, double *abserr) { size_t n, estimate_calls, calls_l, calls_r; *************** *** 82,94 **** { if (xu[i] <= xl[i]) ! { ! GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); ! } if (xu[i] - xl[i] > GSL_DBL_MAX) ! { ! GSL_ERROR ("Range of integration is too large, please rescale", ! GSL_EINVAL); ! } } --- 82,94 ---- { if (xu[i] <= xl[i]) ! { ! GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); ! } if (xu[i] - xl[i] > GSL_DBL_MAX) ! { ! GSL_ERROR ("Range of integration is too large, please rescale", ! GSL_EINVAL); ! } } *************** *** 112,138 **** if (calls < 2) ! { ! GSL_ERROR ("insufficient calls for subvolume", GSL_EFAILED); ! } for (n = 0; n < calls; n++) ! { ! /* Choose a random point in the integration region */ ! for (i = 0; i < dim; i++) ! { ! x[i] = xl[i] + gsl_rng_uniform_pos (r) * (xu[i] - xl[i]); ! } ! ! { ! double fval = GSL_MONTE_FN_EVAL (f, x); ! ! /* recurrence for mean and variance */ ! ! double d = fval - m; ! m += d / (n + 1.0); ! q += d * d * (n / (n + 1.0)); ! } ! } *result = vol * m; --- 112,138 ---- if (calls < 2) ! { ! GSL_ERROR ("insufficient calls for subvolume", GSL_EFAILED); ! } for (n = 0; n < calls; n++) ! { ! /* Choose a random point in the integration region */ ! for (i = 0; i < dim; i++) ! { ! x[i] = xl[i] + gsl_rng_uniform_pos (r) * (xu[i] - xl[i]); ! } ! ! { ! double fval = GSL_MONTE_FN_EVAL (f, x); ! ! /* recurrence for mean and variance */ ! ! double d = fval - m; ! m += d / (n + 1.0); ! q += d * d * (n / (n + 1.0)); ! } ! } *result = vol * m; *************** *** 165,169 **** estimate_corrmc (f, xl, xu, dim, estimate_calls, ! r, state, &res_est, &err_est, xmid, sigma_l, sigma_r); /* We have now used up some calls for the estimation */ --- 165,169 ---- estimate_corrmc (f, xl, xu, dim, estimate_calls, ! r, state, &res_est, &err_est, xmid, sigma_l, sigma_r); /* We have now used up some calls for the estimation */ *************** *** 182,210 **** for (i = 0; i < dim; i++) { ! if (sigma_l[i] >= 0 && sigma_r[i] >= 0) ! { ! /* estimates are okay */ ! double var = pow (sigma_l[i], beta) + pow (sigma_r[i], beta); ! ! if (var <= best_var) ! { ! found_best = 1; ! best_var = var; ! i_bisect = i; ! weight_l = pow (sigma_l[i], beta); ! weight_r = pow (sigma_r[i], beta); ! } ! } ! else ! { ! if (sigma_l[i] < 0) ! { ! GSL_ERROR ("no points in left-half space!", GSL_ESANITY); ! } ! if (sigma_r[i] < 0) ! { ! GSL_ERROR ("no points in right-half space!", GSL_ESANITY); ! } ! } } } --- 182,210 ---- for (i = 0; i < dim; i++) { ! if (sigma_l[i] >= 0 && sigma_r[i] >= 0) ! { ! /* estimates are okay */ ! double var = pow (sigma_l[i], beta) + pow (sigma_r[i], beta); ! ! if (var <= best_var) ! { ! found_best = 1; ! best_var = var; ! i_bisect = i; ! weight_l = pow (sigma_l[i], beta); ! weight_r = pow (sigma_r[i], beta); ! } ! } ! else ! { ! if (sigma_l[i] < 0) ! { ! GSL_ERROR ("no points in left-half space!", GSL_ESANITY); ! } ! if (sigma_r[i] < 0) ! { ! GSL_ERROR ("no points in right-half space!", GSL_ESANITY); ! } ! } } } *************** *** 247,256 **** if (xu_tmp == 0) { ! GSL_ERROR_VAL ("out of memory for left workspace", GSL_ENOMEM, 0); } for (i = 0; i < dim; i++) { ! xu_tmp[i] = xu[i]; } --- 247,256 ---- if (xu_tmp == 0) { ! GSL_ERROR_VAL ("out of memory for left workspace", GSL_ENOMEM, 0); } for (i = 0; i < dim; i++) { ! xu_tmp[i] = xu[i]; } *************** *** 258,268 **** status = gsl_monte_miser_integrate (f, xl, xu_tmp, ! dim, calls_l, r, state, ! &res_l, &err_l); free (xu_tmp); if (status != GSL_SUCCESS) { ! return status; } } --- 258,268 ---- status = gsl_monte_miser_integrate (f, xl, xu_tmp, ! dim, calls_l, r, state, ! &res_l, &err_l); free (xu_tmp); if (status != GSL_SUCCESS) { ! return status; } } *************** *** 277,286 **** if (xl_tmp == 0) { ! GSL_ERROR_VAL ("out of memory for right workspace", GSL_ENOMEM, 0); } for (i = 0; i < dim; i++) { ! xl_tmp[i] = xl[i]; } --- 277,286 ---- if (xl_tmp == 0) { ! GSL_ERROR_VAL ("out of memory for right workspace", GSL_ENOMEM, 0); } for (i = 0; i < dim; i++) { ! xl_tmp[i] = xl[i]; } *************** *** 288,298 **** status = gsl_monte_miser_integrate (f, xl_tmp, xu, ! dim, calls_r, r, state, ! &res_r, &err_r); free (xl_tmp); if (status != GSL_SUCCESS) { ! return status; } } --- 288,298 ---- status = gsl_monte_miser_integrate (f, xl_tmp, xu, ! dim, calls_r, r, state, ! &res_r, &err_r); free (xl_tmp); if (status != GSL_SUCCESS) { ! return status; } } *************** *** 313,317 **** { GSL_ERROR_VAL ("failed to allocate space for miser state struct", ! GSL_ENOMEM, 0); } --- 313,317 ---- { GSL_ERROR_VAL ("failed to allocate space for miser state struct", ! GSL_ENOMEM, 0); } *************** *** 563,572 **** static int estimate_corrmc (gsl_monte_function * f, ! const double xl[], const double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_miser_state * state, ! double *result, double *abserr, ! const double xmid[], double sigma_l[], double sigma_r[]) { size_t i, n; --- 563,572 ---- static int estimate_corrmc (gsl_monte_function * f, ! const double xl[], const double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_miser_state * state, ! double *result, double *abserr, ! const double xmid[], double sigma_l[], double sigma_r[]) { size_t i, n; *************** *** 600,604 **** for (i = 0; i < dim; i++) ! { double z = gsl_rng_uniform_pos (r) ; --- 600,604 ---- for (i = 0; i < dim; i++) ! { double z = gsl_rng_uniform_pos (r) ; *************** *** 618,622 **** } } ! } fval = GSL_MONTE_FN_EVAL (f, x); --- 618,622 ---- } } ! } fval = GSL_MONTE_FN_EVAL (f, x); *************** *** 624,648 **** /* recurrence for mean and variance */ { ! double d = fval - m; ! m += d / (n + 1.0); ! q += d * d * (n / (n + 1.0)); } /* compute the variances on each side of the bisection */ for (i = 0; i < dim; i++) ! { ! if (x[i] <= xmid[i]) ! { ! fsum_l[i] += fval; ! fsum2_l[i] += fval * fval; ! hits_l[i]++; ! } ! else ! { ! fsum_r[i] += fval; ! fsum2_r[i] += fval * fval; ! hits_r[i]++; ! } ! } } --- 624,648 ---- /* recurrence for mean and variance */ { ! double d = fval - m; ! m += d / (n + 1.0); ! q += d * d * (n / (n + 1.0)); } /* compute the variances on each side of the bisection */ for (i = 0; i < dim; i++) ! { ! if (x[i] <= xmid[i]) ! { ! fsum_l[i] += fval; ! fsum2_l[i] += fval * fval; ! hits_l[i]++; ! } ! else ! { ! fsum_r[i] += fval; ! fsum2_r[i] += fval * fval; ! hits_r[i]++; ! } ! } } *************** *** 652,667 **** if (hits_l[i] > 0) ! { ! fsum_l[i] /= hits_l[i]; ! sigma_l[i] = sqrt (fsum2_l[i] - fsum_l[i] * fsum_l[i] / hits_l[i]); ! sigma_l[i] *= fraction_l * vol / hits_l[i]; ! } if (hits_r[i] > 0) ! { ! fsum_r[i] /= hits_r[i]; ! sigma_r[i] = sqrt (fsum2_r[i] - fsum_r[i] * fsum_r[i] / hits_r[i]); ! sigma_r[i] *= (1 - fraction_l) * vol / hits_r[i]; ! } } --- 652,667 ---- if (hits_l[i] > 0) ! { ! fsum_l[i] /= hits_l[i]; ! sigma_l[i] = sqrt (fsum2_l[i] - fsum_l[i] * fsum_l[i] / hits_l[i]); ! sigma_l[i] *= fraction_l * vol / hits_l[i]; ! } if (hits_r[i] > 0) ! { ! fsum_r[i] /= hits_r[i]; ! sigma_r[i] = sqrt (fsum2_r[i] - fsum_r[i] * fsum_r[i] / hits_r[i]); ! sigma_r[i] *= (1 - fraction_l) * vol / hits_r[i]; ! } } diff -x.info* -rc2P gsl-1.3/monte/plain.c gsl-1.4/monte/plain.c *** gsl-1.3/monte/plain.c Wed Oct 3 10:56:36 2001 --- gsl-1.4/monte/plain.c Fri Jul 25 15:18:12 2003 *************** *** 30,39 **** int gsl_monte_plain_integrate (const gsl_monte_function * f, ! const double xl[], const double xu[], ! const size_t dim, ! const size_t calls, ! gsl_rng * r, ! gsl_monte_plain_state * state, ! double *result, double *abserr) { double vol, m = 0, q = 0; --- 30,39 ---- int gsl_monte_plain_integrate (const gsl_monte_function * f, ! const double xl[], const double xu[], ! const size_t dim, ! const size_t calls, ! gsl_rng * r, ! gsl_monte_plain_state * state, ! double *result, double *abserr) { double vol, m = 0, q = 0; *************** *** 49,61 **** { if (xu[i] <= xl[i]) ! { ! GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); ! } if (xu[i] - xl[i] > GSL_DBL_MAX) ! { ! GSL_ERROR ("Range of integration is too large, please rescale", ! GSL_EINVAL); ! } } --- 49,61 ---- { if (xu[i] <= xl[i]) ! { ! GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); ! } if (xu[i] - xl[i] > GSL_DBL_MAX) ! { ! GSL_ERROR ("Range of integration is too large, please rescale", ! GSL_EINVAL); ! } } *************** *** 74,89 **** for (i = 0; i < dim; i++) ! { ! x[i] = xl[i] + gsl_rng_uniform_pos (r) * (xu[i] - xl[i]); ! } { ! double fval = GSL_MONTE_FN_EVAL (f, x); ! /* recurrence for mean and variance */ ! double d = fval - m; ! m += d / (n + 1.0); ! q += d * d * (n / (n + 1.0)); } } --- 74,89 ---- for (i = 0; i < dim; i++) ! { ! x[i] = xl[i] + gsl_rng_uniform_pos (r) * (xu[i] - xl[i]); ! } { ! double fval = GSL_MONTE_FN_EVAL (f, x); ! /* recurrence for mean and variance */ ! double d = fval - m; ! m += d / (n + 1.0); ! q += d * d * (n / (n + 1.0)); } } *************** *** 112,116 **** { GSL_ERROR_VAL ("failed to allocate space for state struct", ! GSL_ENOMEM, 0); } --- 112,116 ---- { GSL_ERROR_VAL ("failed to allocate space for state struct", ! GSL_ENOMEM, 0); } *************** *** 121,125 **** free (s); GSL_ERROR_VAL ("failed to allocate space for working vector", ! GSL_ENOMEM, 0); } --- 121,125 ---- free (s); GSL_ERROR_VAL ("failed to allocate space for working vector", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/monte/test.c gsl-1.4/monte/test.c *** gsl-1.3/monte/test.c Tue Jun 26 11:44:40 2001 --- gsl-1.4/monte/test.c Fri Jul 25 15:18:12 2003 *************** *** 56,60 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); struct problem { --- 56,60 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); struct problem { *************** *** 324,328 **** } return (pow (M_2_SQRTPI / (2. * a), (double) num_dim) * ! exp (-sum / (a * a))); } --- 324,328 ---- } return (pow (M_2_SQRTPI / (2. * a), (double) num_dim) * ! exp (-sum / (a * a))); } diff -x.info* -rc2P gsl-1.3/monte/vegas.c gsl-1.4/monte/vegas.c *** gsl-1.3/monte/vegas.c Thu Aug 30 15:01:13 2001 --- gsl-1.4/monte/vegas.c Fri Jul 25 15:18:12 2003 *************** *** 65,69 **** /* lib-specific headers */ ! #define BINS_MAX 50 /* even integer, will be divided by two */ /* A separable grid with coordinates and values */ --- 65,69 ---- /* lib-specific headers */ ! #define BINS_MAX 50 /* even integer, will be divided by two */ /* A separable grid with coordinates and values */ *************** *** 77,81 **** static void init_grid (gsl_monte_vegas_state * s, double xl[], double xu[], ! size_t dim); static void reset_grid_values (gsl_monte_vegas_state * s); static void init_box_coord (gsl_monte_vegas_state * s, coord box[]); --- 77,81 ---- static void init_grid (gsl_monte_vegas_state * s, double xl[], double xu[], ! size_t dim); static void reset_grid_values (gsl_monte_vegas_state * s); static void init_box_coord (gsl_monte_vegas_state * s, coord box[]); *************** *** 105,113 **** int gsl_monte_vegas_integrate (gsl_monte_function * f, ! double xl[], double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_vegas_state * state, ! double *result, double *abserr) { double cum_int, cum_sig; --- 105,113 ---- int gsl_monte_vegas_integrate (gsl_monte_function * f, ! double xl[], double xu[], ! size_t dim, size_t calls, ! gsl_rng * r, ! gsl_monte_vegas_state * state, ! double *result, double *abserr) { double cum_int, cum_sig; *************** *** 122,134 **** { if (xu[i] <= xl[i]) ! { ! GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); ! } if (xu[i] - xl[i] > GSL_DBL_MAX) ! { ! GSL_ERROR ("Range of integration is too large, please rescale", ! GSL_EINVAL); ! } } --- 122,134 ---- { if (xu[i] <= xl[i]) ! { ! GSL_ERROR ("xu must be greater than xl", GSL_EINVAL); ! } if (xu[i] - xl[i] > GSL_DBL_MAX) ! { ! GSL_ERROR ("Range of integration is too large, please rescale", ! GSL_EINVAL); ! } } *************** *** 138,144 **** if (state->verbose >= 0) ! { ! print_lim (state, xl, xu, dim); ! } } --- 138,144 ---- if (state->verbose >= 0) ! { ! print_lim (state, xl, xu, dim); ! } } *************** *** 158,183 **** if (state->mode != GSL_VEGAS_MODE_IMPORTANCE_ONLY) ! { ! /* shooting for 2 calls/box */ ! boxes = floor (pow (calls / 2.0, 1.0 / dim)); ! state->mode = GSL_VEGAS_MODE_IMPORTANCE; ! if (2 * boxes >= state->bins_max) ! { ! /* if bins/box < 2 */ ! int box_per_bin = GSL_MAX (boxes / state->bins_max, 1); ! ! bins = GSL_MIN(boxes / box_per_bin, state->bins_max); ! boxes = box_per_bin * bins; ! ! state->mode = GSL_VEGAS_MODE_STRATIFIED; ! } ! } { ! double tot_boxes = pow ((double) boxes, (double) dim); ! state->calls_per_box = GSL_MAX (calls / tot_boxes, 2); ! calls = state->calls_per_box * tot_boxes; } --- 158,183 ---- if (state->mode != GSL_VEGAS_MODE_IMPORTANCE_ONLY) ! { ! /* shooting for 2 calls/box */ ! ! boxes = floor (pow (calls / 2.0, 1.0 / dim)); ! state->mode = GSL_VEGAS_MODE_IMPORTANCE; ! ! if (2 * boxes >= state->bins_max) ! { ! /* if bins/box < 2 */ ! int box_per_bin = GSL_MAX (boxes / state->bins_max, 1); ! bins = GSL_MIN(boxes / box_per_bin, state->bins_max); ! boxes = box_per_bin * bins; ! state->mode = GSL_VEGAS_MODE_STRATIFIED; ! } ! } { ! double tot_boxes = pow ((double) boxes, (double) dim); ! state->calls_per_box = GSL_MAX (calls / tot_boxes, 2); ! calls = state->calls_per_box * tot_boxes; } *************** *** 192,209 **** if (bins != state->bins) ! { ! resize_grid (state, bins); ! if (state->verbose > 1) ! { ! print_grid (state, dim); ! } ! } if (state->verbose >= 0) ! { ! print_head (state, ! dim, calls, state->it_num, state->bins, state->boxes); ! } } --- 192,209 ---- if (bins != state->bins) ! { ! resize_grid (state, bins); ! if (state->verbose > 1) ! { ! print_grid (state, dim); ! } ! } if (state->verbose >= 0) ! { ! print_head (state, ! dim, calls, state->it_num, state->bins, state->boxes); ! } } *************** *** 231,245 **** do ! { double m = 0, q = 0; ! double f_sq_sum = 0.0; ! for (k = 0; k < calls_per_box; k++) ! { ! double fval, bin_vol; ! random_point (x, bin, &bin_vol, state->box, xl, xu, state, r); ! fval = jacbin * bin_vol * GSL_MONTE_FN_EVAL (f, x); /* recurrence for mean and variance */ --- 231,245 ---- do ! { double m = 0, q = 0; ! double f_sq_sum = 0.0; ! for (k = 0; k < calls_per_box; k++) ! { ! double fval, bin_vol; ! random_point (x, bin, &bin_vol, state->box, xl, xu, state, r); ! fval = jacbin * bin_vol * GSL_MONTE_FN_EVAL (f, x); /* recurrence for mean and variance */ *************** *** 251,272 **** } ! if (state->mode != GSL_VEGAS_MODE_STRATIFIED) ! { double f_sq = fval * fval; ! accumulate_distribution (state, bin, f_sq); ! } ! } ! intgrl += m * calls_per_box; ! f_sq_sum = q * calls_per_box ; ! sig += f_sq_sum ; ! if (state->mode == GSL_VEGAS_MODE_STRATIFIED) ! { ! accumulate_distribution (state, bin, f_sq_sum); ! } ! } while (change_box_coord (state, state->box)); --- 251,272 ---- } ! if (state->mode != GSL_VEGAS_MODE_STRATIFIED) ! { double f_sq = fval * fval; ! accumulate_distribution (state, bin, f_sq); ! } ! } ! intgrl += m * calls_per_box; ! f_sq_sum = q * calls_per_box ; ! sig += f_sq_sum ; ! if (state->mode == GSL_VEGAS_MODE_STRATIFIED) ! { ! accumulate_distribution (state, bin, f_sq_sum); ! } ! } while (change_box_coord (state, state->box)); *************** *** 317,332 **** if (state->verbose >= 0) ! { ! print_res (state, ! state->it_num, intgrl, sqrt (sig), cum_int, cum_sig, ! state->chisq); ! if (it + 1 == state->iterations && state->verbose > 0) ! { ! print_grid (state, dim); ! } ! } if (state->verbose > 1) ! { print_dist (state, dim); } --- 317,332 ---- if (state->verbose >= 0) ! { ! print_res (state, ! state->it_num, intgrl, sqrt (sig), cum_int, cum_sig, ! state->chisq); ! if (it + 1 == state->iterations && state->verbose > 0) ! { ! print_grid (state, dim); ! } ! } if (state->verbose > 1) ! { print_dist (state, dim); } *************** *** 335,341 **** if (state->verbose > 1) ! { ! print_grid (state, dim); ! } } --- 335,341 ---- if (state->verbose > 1) ! { ! print_grid (state, dim); ! } } *************** *** 363,367 **** { GSL_ERROR_VAL ("failed to allocate space for vegas state struct", ! GSL_ENOMEM, 0); } --- 363,367 ---- { GSL_ERROR_VAL ("failed to allocate space for vegas state struct", ! GSL_ENOMEM, 0); } *************** *** 524,530 **** if (box[j] != 0) ! { ! return 1; ! } j--; --- 524,530 ---- if (box[j] != 0) ! { ! return 1; ! } j--; *************** *** 568,574 **** { for (j = 0; j < dim; j++) ! { ! VALUE (s, i, j) = 0.0; ! } } } --- 568,574 ---- { for (j = 0; j < dim; j++) ! { ! VALUE (s, i, j) = 0.0; ! } } } *************** *** 589,594 **** static void random_point (double x[], coord bin[], double *bin_vol, ! const coord box[], const double xl[], const double xu[], ! gsl_monte_vegas_state * s, gsl_rng * r) { /* Use the random number generator r to return a random position x --- 589,594 ---- static void random_point (double x[], coord bin[], double *bin_vol, ! const coord box[], const double xl[], const double xu[], ! gsl_monte_vegas_state * s, gsl_rng * r) { /* Use the random number generator r to return a random position x *************** *** 620,632 **** if (k == 0) ! { ! bin_width = COORD (s, 1, j); ! y = z * bin_width; ! } else ! { ! bin_width = COORD (s, k + 1, j) - COORD (s, k, j); ! y = COORD (s, k, j) + (z - k) * bin_width; ! } x[j] = xl[j] + y * s->delx[j]; --- 620,632 ---- if (k == 0) ! { ! bin_width = COORD (s, 1, j); ! y = z * bin_width; ! } else ! { ! bin_width = COORD (s, k + 1, j) - COORD (s, k, j); ! y = COORD (s, k, j) + (z - k) * bin_width; ! } x[j] = xl[j] + y * s->delx[j]; *************** *** 657,671 **** for (k = 1; k <= s->bins; k++) ! { ! dw += 1.0; ! xold = xnew; ! xnew = COORD (s, k, j); ! ! for (; dw > pts_per_bin; i++) ! { ! dw -= pts_per_bin; ! NEW_COORD (s, i) = xnew - (xnew - xold) * dw; ! } ! } for (k = 1 ; k < bins; k++) --- 657,671 ---- for (k = 1; k <= s->bins; k++) ! { ! dw += 1.0; ! xold = xnew; ! xnew = COORD (s, k, j); ! ! for (; dw > pts_per_bin; i++) ! { ! dw -= pts_per_bin; ! NEW_COORD (s, i) = xnew - (xnew - xold) * dw; ! } ! } for (k = 1 ; k < bins; k++) *************** *** 701,711 **** for (i = 1; i < bins - 1; i++) ! { ! double rc = oldg + newg; ! oldg = newg; ! newg = VALUE (s, i + 1, j); ! VALUE (s, i, j) = (rc + newg) / 3; ! grid_tot_j += VALUE (s, i, j); ! } VALUE (s, bins - 1, j) = (newg + oldg) / 2; --- 701,711 ---- for (i = 1; i < bins - 1; i++) ! { ! double rc = oldg + newg; ! oldg = newg; ! newg = VALUE (s, i + 1, j); ! VALUE (s, i, j) = (rc + newg) / 3; ! grid_tot_j += VALUE (s, i, j); ! } VALUE (s, bins - 1, j) = (newg + oldg) / 2; *************** *** 715,755 **** for (i = 0; i < bins; i++) ! { ! weight[i] = 0; ! if (VALUE (s, i, j) > 0) ! { ! oldg = grid_tot_j / VALUE (s, i, j); ! /* damped change */ ! weight[i] = pow (((oldg - 1) / oldg / log (oldg)), s->alpha); ! } ! tot_weight += weight[i]; #ifdef DEBUG printf("weight[%d] = %g\n", i, weight[i]); #endif ! } { ! double pts_per_bin = tot_weight / bins; ! double xold; ! double xnew = 0; ! double dw = 0; ! i = 1; ! ! for (k = 0; k < bins; k++) ! { ! dw += weight[k]; ! xold = xnew; ! xnew = COORD (s, k + 1, j); ! ! for (; dw > pts_per_bin; i++) ! { ! dw -= pts_per_bin; ! NEW_COORD (s, i) = xnew - (xnew - xold) * dw / weight[k]; ! } ! } for (k = 1 ; k < bins ; k++) --- 715,755 ---- for (i = 0; i < bins; i++) ! { ! weight[i] = 0; ! if (VALUE (s, i, j) > 0) ! { ! oldg = grid_tot_j / VALUE (s, i, j); ! /* damped change */ ! weight[i] = pow (((oldg - 1) / oldg / log (oldg)), s->alpha); ! } ! tot_weight += weight[i]; #ifdef DEBUG printf("weight[%d] = %g\n", i, weight[i]); #endif ! } { ! double pts_per_bin = tot_weight / bins; ! ! double xold; ! double xnew = 0; ! double dw = 0; ! i = 1; ! for (k = 0; k < bins; k++) ! { ! dw += weight[k]; ! xold = xnew; ! xnew = COORD (s, k + 1, j); ! ! for (; dw > pts_per_bin; i++) ! { ! dw -= pts_per_bin; ! NEW_COORD (s, i) = xnew - (xnew - xold) * dw / weight[k]; ! } ! } for (k = 1 ; k < bins ; k++) *************** *** 758,762 **** } ! COORD (s, bins, j) = 1; } } --- 758,762 ---- } ! COORD (s, bins, j) = 1; } } *************** *** 766,770 **** static void print_lim (gsl_monte_vegas_state * state, ! double xl[], double xu[], unsigned long dim) { unsigned long j; --- 766,770 ---- static void print_lim (gsl_monte_vegas_state * state, ! double xl[], double xu[], unsigned long dim) { unsigned long j; *************** *** 779,797 **** static void print_head (gsl_monte_vegas_state * state, ! unsigned long num_dim, unsigned long calls, ! unsigned int it_num, unsigned int bins, unsigned int boxes) { fprintf (state->ostream, ! "\nnum_dim=%lu, calls=%lu, it_num=%d, max_it_num=%d ", ! num_dim, calls, it_num, state->iterations); fprintf (state->ostream, ! "verb=%d, alph=%.2f,\nmode=%d, bins=%d, boxes=%d\n", ! state->verbose, state->alpha, state->mode, bins, boxes); fprintf (state->ostream, ! "\n single.......iteration "); fprintf (state->ostream, "accumulated......results \n"); fprintf (state->ostream, ! "iteration integral sigma integral "); fprintf (state->ostream, " sigma chi-sq/it\n\n"); fflush (state->ostream); --- 779,797 ---- static void print_head (gsl_monte_vegas_state * state, ! unsigned long num_dim, unsigned long calls, ! unsigned int it_num, unsigned int bins, unsigned int boxes) { fprintf (state->ostream, ! "\nnum_dim=%lu, calls=%lu, it_num=%d, max_it_num=%d ", ! num_dim, calls, it_num, state->iterations); fprintf (state->ostream, ! "verb=%d, alph=%.2f,\nmode=%d, bins=%d, boxes=%d\n", ! state->verbose, state->alpha, state->mode, bins, boxes); fprintf (state->ostream, ! "\n single.......iteration "); fprintf (state->ostream, "accumulated......results \n"); fprintf (state->ostream, ! "iteration integral sigma integral "); fprintf (state->ostream, " sigma chi-sq/it\n\n"); fflush (state->ostream); *************** *** 801,812 **** static void print_res (gsl_monte_vegas_state * state, ! unsigned int itr, double res, double err, double cum_res, double cum_err, ! double chi_sq) { fprintf (state->ostream, ! "%4d %6.4e %10.2e %6.4e %8.2e %10.2e\n", ! itr, res, err, cum_res, cum_err, chi_sq); fflush (state->ostream); } --- 801,812 ---- static void print_res (gsl_monte_vegas_state * state, ! unsigned int itr, double res, double err, double cum_res, double cum_err, ! double chi_sq) { fprintf (state->ostream, ! "%4d %6.4e %10.2e %6.4e %8.2e %10.2e\n", ! itr, res, err, cum_res, cum_err, chi_sq); fflush (state->ostream); } *************** *** 825,834 **** fprintf (state->ostream, " x g\n"); for (i = 0; i < state->bins; i++) ! { ! fprintf (state->ostream, "weight [%11.2e , %11.2e] = ", COORD (state, i, j), COORD(state,i+1,j)); ! fprintf (state->ostream, " %11.2e\n", VALUE (state, i, j)); ! } fprintf (state->ostream, "\n"); } --- 825,834 ---- fprintf (state->ostream, " x g\n"); for (i = 0; i < state->bins; i++) ! { ! fprintf (state->ostream, "weight [%11.2e , %11.2e] = ", COORD (state, i, j), COORD(state,i+1,j)); ! fprintf (state->ostream, " %11.2e\n", VALUE (state, i, j)); ! } fprintf (state->ostream, "\n"); } *************** *** 851,859 **** fprintf (state->ostream, " x \n"); for (i = 0; i <= state->bins; i++) ! { ! fprintf (state->ostream, "%11.2e", COORD (state, i, j)); ! if (i % 5 == 4) ! fprintf (state->ostream, "\n"); ! } fprintf (state->ostream, "\n"); } --- 851,859 ---- fprintf (state->ostream, " x \n"); for (i = 0; i <= state->bins; i++) ! { ! fprintf (state->ostream, "%11.2e", COORD (state, i, j)); ! if (i % 5 == 4) ! fprintf (state->ostream, "\n"); ! } fprintf (state->ostream, "\n"); } diff -x.info* -rc2P gsl-1.3/multifit/ChangeLog gsl-1.4/multifit/ChangeLog *** gsl-1.3/multifit/ChangeLog Tue Nov 12 22:18:37 2002 --- gsl-1.4/multifit/ChangeLog Sat Mar 22 17:30:45 2003 *************** *** 1,2 **** --- 1,15 ---- + 2003-03-21 Brian Gough + + * lmset.c (set): removed reference to q, compute QR decomposition + in place + + * lmiterate.c (iterate): removed reference to q, compute QR + decomposition in-place for R + + * lmutil.c: removed compute_qtf + + * lmder.c (lmder_free): removed reference to q + (lmder_alloc): removed reference to q + Tue Nov 12 22:18:14 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/multifit/Makefile.am gsl-1.4/multifit/Makefile.am *** gsl-1.3/multifit/Makefile.am Fri Oct 26 12:16:38 2001 --- gsl-1.4/multifit/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 14,20 **** test_SOURCES = test.c ! test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la #demo_SOURCES = demo.c ! #demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la --- 14,20 ---- test_SOURCES = test.c ! test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la #demo_SOURCES = demo.c ! #demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la diff -x.info* -rc2P gsl-1.3/multifit/Makefile.in gsl-1.4/multifit/Makefile.in *** gsl-1.3/multifit/Makefile.in Wed Dec 18 22:39:22 2002 --- gsl-1.4/multifit/Makefile.in Thu Aug 14 12:29:56 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslmultifit.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslmultifit.la *************** *** 100,197 **** test_SOURCES = test.c ! test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslmultifit_la_LDFLAGS = ! libgslmultifit_la_LIBADD = ! libgslmultifit_la_OBJECTS = multilinear.lo work.lo lmder.lo fsolver.lo \ ! fdfsolver.lo convergence.lo gradient.lo covar.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslmultifit.la ../linalg/libgsllinalg.la \ ! ../permutation/libgslpermutation.la ../blas/libgslblas.la \ ! ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslmultifit_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps multifit/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 156,246 ---- test_SOURCES = test.c ! test_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la ! subdir = multifit ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslmultifit_la_LDFLAGS = ! libgslmultifit_la_LIBADD = ! am_libgslmultifit_la_OBJECTS = multilinear.lo work.lo lmder.lo \ ! fsolver.lo fdfsolver.lo convergence.lo gradient.lo covar.lo ! libgslmultifit_la_OBJECTS = $(am_libgslmultifit_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslmultifit.la ../linalg/libgsllinalg.la \ ! ../permutation/libgslpermutation.la ../blas/libgslblas.la \ ! ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la \ ! ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslmultifit_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu multifit/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslmultifit.la: $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_DEPENDENCIES) + $(LINK) $(libgslmultifit_la_LDFLAGS) $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 202,338 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslmultifit.la: $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_DEPENDENCIES) ! $(LINK) $(libgslmultifit_la_LDFLAGS) $(libgslmultifit_la_OBJECTS) $(libgslmultifit_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = multifit distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 251,455 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 341,394 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean ! #demo_SOURCES = demo.c ! #demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 458,528 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic + mostlyclean: mostlyclean-am ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am + pdf-am: + + ps: ps-am + + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + + + #demo_SOURCES = demo.c + #demo_LDADD = libgslmultifit.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../randist/libgslrandist.la ../rng/libgslrng.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ../sys/libgslsys.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/multifit/fdfsolver.c gsl-1.4/multifit/fdfsolver.c *** gsl-1.3/multifit/fdfsolver.c Wed Apr 18 21:52:31 2001 --- gsl-1.4/multifit/fdfsolver.c Fri Jul 25 15:18:12 2003 *************** *** 86,93 **** gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multifit solver state", ! GSL_ENOMEM, 0); } --- 86,93 ---- gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multifit solver state", ! GSL_ENOMEM, 0); } *************** *** 103,107 **** gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); --- 103,107 ---- gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); diff -x.info* -rc2P gsl-1.3/multifit/fsolver.c gsl-1.4/multifit/fsolver.c *** gsl-1.3/multifit/fsolver.c Wed Apr 18 21:52:31 2001 --- gsl-1.4/multifit/fsolver.c Fri Jul 25 15:18:12 2003 *************** *** 37,41 **** { GSL_ERROR_VAL ("failed to allocate space for multifit solver struct", ! GSL_ENOMEM, 0); } --- 37,41 ---- { GSL_ERROR_VAL ("failed to allocate space for multifit solver struct", ! GSL_ENOMEM, 0); } *************** *** 74,81 **** gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multifit solver state", ! GSL_ENOMEM, 0); } --- 74,81 ---- gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multifit solver state", ! GSL_ENOMEM, 0); } *************** *** 91,95 **** gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); --- 91,95 ---- gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); diff -x.info* -rc2P gsl-1.3/multifit/lmder.c gsl-1.4/multifit/lmder.c *** gsl-1.3/multifit/lmder.c Tue Nov 12 22:18:39 2002 --- gsl-1.4/multifit/lmder.c Fri Jul 25 15:18:12 2003 *************** *** 41,45 **** double delta; double par; - gsl_matrix *q; gsl_matrix *r; gsl_vector *tau; --- 41,44 ---- *************** *** 77,100 **** { lmder_state_t *state = (lmder_state_t *) vstate; ! gsl_matrix *q, *r; gsl_vector *tau, *diag, *qtf, *newton, *gradient, *x_trial, *f_trial, *df, *sdiag, *rptdx, *w, *work1; gsl_permutation *perm; - q = gsl_matrix_calloc (n, n); - - if (q == 0) - { - GSL_ERROR ("failed to allocate space for q", GSL_ENOMEM); - } - - state->q = q; - r = gsl_matrix_calloc (n, p); if (r == 0) { - gsl_matrix_free (q); - GSL_ERROR ("failed to allocate space for r", GSL_ENOMEM); } --- 76,88 ---- { lmder_state_t *state = (lmder_state_t *) vstate; ! gsl_matrix *r; gsl_vector *tau, *diag, *qtf, *newton, *gradient, *x_trial, *f_trial, *df, *sdiag, *rptdx, *w, *work1; gsl_permutation *perm; r = gsl_matrix_calloc (n, p); if (r == 0) { GSL_ERROR ("failed to allocate space for r", GSL_ENOMEM); } *************** *** 106,110 **** if (tau == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); --- 94,97 ---- *************** *** 118,122 **** if (diag == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 105,108 ---- *************** *** 131,135 **** if (qtf == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 117,120 ---- *************** *** 145,149 **** if (newton == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 130,133 ---- *************** *** 160,164 **** if (gradient == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 144,147 ---- *************** *** 176,180 **** if (x_trial == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 159,162 ---- *************** *** 193,197 **** if (f_trial == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 175,178 ---- *************** *** 211,215 **** if (df == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 192,195 ---- *************** *** 230,234 **** if (sdiag == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 210,213 ---- *************** *** 251,255 **** if (rptdx == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 230,233 ---- *************** *** 272,276 **** if (w == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 250,253 ---- *************** *** 294,298 **** if (work1 == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 271,274 ---- *************** *** 317,321 **** if (perm == 0) { - gsl_matrix_free (q); gsl_matrix_free (r); gsl_vector_free (tau); --- 293,296 ---- *************** *** 387,396 **** gsl_vector_free (state->tau); gsl_matrix_free (state->r); - gsl_matrix_free (state->q); } static const gsl_multifit_fdfsolver_type lmder_type = { ! "lmder", /* name */ sizeof (lmder_state_t), &lmder_alloc, --- 362,370 ---- gsl_vector_free (state->tau); gsl_matrix_free (state->r); } static const gsl_multifit_fdfsolver_type lmder_type = { ! "lmder", /* name */ sizeof (lmder_state_t), &lmder_alloc, *************** *** 402,406 **** static const gsl_multifit_fdfsolver_type lmsder_type = { ! "lmsder", /* name */ sizeof (lmder_state_t), &lmder_alloc, --- 376,380 ---- static const gsl_multifit_fdfsolver_type lmsder_type = { ! "lmsder", /* name */ sizeof (lmder_state_t), &lmder_alloc, diff -x.info* -rc2P gsl-1.3/multifit/lmiterate.c gsl-1.4/multifit/lmiterate.c *** gsl-1.3/multifit/lmiterate.c Thu Feb 28 20:22:53 2002 --- gsl-1.4/multifit/lmiterate.c Fri Jul 25 15:18:12 2003 *************** *** 4,8 **** lmder_state_t *state = (lmder_state_t *) vstate; - gsl_matrix *q = state->q; gsl_matrix *r = state->r; gsl_vector *tau = state->tau; --- 4,7 ---- *************** *** 30,34 **** /* Compute qtf = Q^T f */ ! compute_qtf (q, f, qtf); /* Compute norm of scaled gradient */ --- 29,34 ---- /* Compute qtf = Q^T f */ ! gsl_vector_memcpy (qtf, f); ! gsl_linalg_QR_QTvec (r, tau, qtf); /* Compute norm of scaled gradient */ *************** *** 61,70 **** { if (pnorm < state->delta) ! { #ifdef DEBUG printf("set delta = pnorm = %g\n" , pnorm); #endif ! state->delta = pnorm; ! } } --- 61,70 ---- { if (pnorm < state->delta) ! { #ifdef DEBUG printf("set delta = pnorm = %g\n" , pnorm); #endif ! state->delta = pnorm; ! } } *************** *** 185,189 **** { int signum; ! gsl_linalg_QRPT_decomp2 (J, q, r, tau, perm, &signum, work1); } --- 185,190 ---- { int signum; ! gsl_matrix_memcpy (r, J); ! gsl_linalg_QRPT_decomp (r, tau, perm, &signum, work1); } diff -x.info* -rc2P gsl-1.3/multifit/lmpar.c gsl-1.4/multifit/lmpar.c *** gsl-1.3/multifit/lmpar.c Thu Feb 28 20:15:30 2002 --- gsl-1.4/multifit/lmpar.c Fri Jul 25 15:18:12 2003 *************** *** 36,42 **** if (rii == 0) ! { ! break; ! } } --- 36,42 ---- if (rii == 0) ! { ! break; ! } } *************** *** 47,51 **** static void compute_newton_direction (const gsl_matrix * r, const gsl_permutation * perm, ! const gsl_vector * qtf, gsl_vector * x) { --- 47,51 ---- static void compute_newton_direction (const gsl_matrix * r, const gsl_permutation * perm, ! const gsl_vector * qtf, gsl_vector * x) { *************** *** 99,105 **** static void compute_newton_correction (const gsl_matrix * r, const gsl_vector * sdiag, ! const gsl_permutation * p, gsl_vector * x, double dxnorm, ! const gsl_vector * diag, gsl_vector * w) { size_t n = r->size2; --- 99,105 ---- static void compute_newton_correction (const gsl_matrix * r, const gsl_vector * sdiag, ! const gsl_permutation * p, gsl_vector * x, double dxnorm, ! const gsl_vector * diag, gsl_vector * w) { size_t n = r->size2; *************** *** 126,135 **** for (i = j + 1; i < n; i++) ! { ! double rij = gsl_matrix_get (r, i, j); ! double wi = gsl_vector_get (w, i); ! gsl_vector_set (w, i, wi - rij * tj); ! } } } --- 126,135 ---- for (i = j + 1; i < n; i++) ! { ! double rij = gsl_matrix_get (r, i, j); ! double wi = gsl_vector_get (w, i); ! gsl_vector_set (w, i, wi - rij * tj); ! } } } *************** *** 171,183 **** for (i = 0; i < j; i++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (w, i); ! } { ! double rjj = gsl_matrix_get (r, j, j); ! double wj = gsl_vector_get (w, j); ! gsl_vector_set (w, j, (wj - sum) / rjj); } } --- 171,183 ---- for (i = 0; i < j; i++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (w, i); ! } { ! double rjj = gsl_matrix_get (r, j, j); ! double wj = gsl_vector_get (w, j); ! gsl_vector_set (w, j, (wj - sum) / rjj); } } *************** *** 186,191 **** static void compute_gradient_direction (const gsl_matrix * r, const gsl_permutation * p, ! const gsl_vector * qtf, const gsl_vector * diag, ! gsl_vector * g) { const size_t n = r->size2; --- 186,191 ---- static void compute_gradient_direction (const gsl_matrix * r, const gsl_permutation * p, ! const gsl_vector * qtf, const gsl_vector * diag, ! gsl_vector * g) { const size_t n = r->size2; *************** *** 198,210 **** for (i = 0; i <= j; i++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); ! } { ! size_t pj = gsl_permutation_get (p, j); ! double dpj = gsl_vector_get (diag, pj); ! gsl_vector_set (g, j, sum / dpj); } } --- 198,210 ---- for (i = 0; i <= j; i++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); ! } { ! size_t pj = gsl_permutation_get (p, j); ! double dpj = gsl_vector_get (diag, pj); ! gsl_vector_set (g, j, sum / dpj); } } *************** *** 425,445 **** { if (par > par_lower) ! { ! par_lower = par; #ifdef DEBUG printf("fp > 0: set par_lower = par = %g\n", par); #endif ! } } else if (fp < 0) { if (par < par_upper) ! { #ifdef DEBUG printf("fp < 0: set par_upper = par = %g\n", par); #endif ! par_upper = par; ! } } --- 425,445 ---- { if (par > par_lower) ! { ! par_lower = par; #ifdef DEBUG printf("fp > 0: set par_lower = par = %g\n", par); #endif ! } } else if (fp < 0) { if (par < par_upper) ! { #ifdef DEBUG printf("fp < 0: set par_upper = par = %g\n", par); #endif ! par_upper = par; ! } } diff -x.info* -rc2P gsl-1.3/multifit/lmset.c gsl-1.4/multifit/lmset.c *** gsl-1.3/multifit/lmset.c Wed Jun 20 12:09:46 2001 --- gsl-1.4/multifit/lmset.c Fri Jul 25 15:18:12 2003 *************** *** 4,8 **** lmder_state_t *state = (lmder_state_t *) vstate; - gsl_matrix *q = state->q; gsl_matrix *r = state->r; gsl_vector *tau = state->tau; --- 4,7 ---- *************** *** 39,43 **** /* Factorize J into QR decomposition */ ! gsl_linalg_QRPT_decomp2 (J, q, r, tau, perm, &signum, work1); return GSL_SUCCESS; --- 38,43 ---- /* Factorize J into QR decomposition */ ! gsl_matrix_memcpy (r, J); ! gsl_linalg_QRPT_decomp (r, tau, perm, &signum, work1); return GSL_SUCCESS; diff -x.info* -rc2P gsl-1.3/multifit/lmutil.c gsl-1.4/multifit/lmutil.c *** gsl-1.3/multifit/lmutil.c Mon Oct 8 14:27:25 2001 --- gsl-1.4/multifit/lmutil.c Fri Jul 25 15:18:12 2003 *************** *** 63,72 **** for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; gsl_vector_set (diag, j, sqrt (sum)); --- 63,72 ---- for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; gsl_vector_set (diag, j, sqrt (sum)); *************** *** 83,92 **** double cnorm, diagj, sum = 0; for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; cnorm = sqrt (sum); --- 83,92 ---- double cnorm, diagj, sum = 0; for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; cnorm = sqrt (sum); *************** *** 94,113 **** if (cnorm > diagj) ! gsl_vector_set (diag, j, cnorm); ! } ! } ! ! static void ! compute_qtf (const gsl_matrix * q, const gsl_vector * f, gsl_vector * qtf) ! { ! size_t i, j, N = f->size; ! ! for (j = 0; j < N; j++) ! { ! double sum = 0; ! for (i = 0; i < N; i++) ! sum += gsl_matrix_get (q, i, j) * gsl_vector_get (f, i); ! ! gsl_vector_set (qtf, j, sum); } } --- 94,98 ---- if (cnorm > diagj) ! gsl_vector_set (diag, j, cnorm); } } *************** *** 115,119 **** static void compute_rptdx (const gsl_matrix * r, const gsl_permutation * p, ! const gsl_vector * dx, gsl_vector * rptdx) { size_t i, j, N = dx->size; --- 100,104 ---- static void compute_rptdx (const gsl_matrix * r, const gsl_permutation * p, ! const gsl_vector * dx, gsl_vector * rptdx) { size_t i, j, N = dx->size; *************** *** 124,132 **** for (j = i; j < N; j++) ! { ! size_t pj = gsl_permutation_get (p, j); sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, pj); ! } gsl_vector_set (rptdx, i, sum); --- 109,117 ---- for (j = i; j < N; j++) ! { ! size_t pj = gsl_permutation_get (p, j); sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, pj); ! } gsl_vector_set (rptdx, i, sum); diff -x.info* -rc2P gsl-1.3/multifit/multilinear.c gsl-1.4/multifit/multilinear.c *** gsl-1.3/multifit/multilinear.c Sat Jun 30 22:34:34 2001 --- gsl-1.4/multifit/multilinear.c Fri Jul 25 15:18:12 2003 *************** *** 34,52 **** int gsl_multifit_linear (const gsl_matrix * X, ! const gsl_vector * y, ! gsl_vector * c, ! gsl_matrix * cov, ! double *chisq, gsl_multifit_linear_workspace * work) { if (X->size1 != y->size) { GSL_ERROR ! ("number of observations in y does not match rows of matrix X", ! GSL_EBADLEN); } else if (X->size2 != c->size) { GSL_ERROR ("number of parameters c does not match columns of matrix X", ! GSL_EBADLEN); } else if (cov->size1 != cov->size2) --- 34,52 ---- int gsl_multifit_linear (const gsl_matrix * X, ! const gsl_vector * y, ! gsl_vector * c, ! gsl_matrix * cov, ! double *chisq, gsl_multifit_linear_workspace * work) { if (X->size1 != y->size) { GSL_ERROR ! ("number of observations in y does not match rows of matrix X", ! GSL_EBADLEN); } else if (X->size2 != c->size) { GSL_ERROR ("number of parameters c does not match columns of matrix X", ! GSL_EBADLEN); } else if (cov->size1 != cov->size2) *************** *** 57,68 **** { GSL_ERROR ! ("number of parameters does not match size of covariance matrix", ! GSL_EBADLEN); } else if (X->size1 != work->n || X->size2 != work->p) { GSL_ERROR ! ("size of workspace does not match size of observation matrix", ! GSL_EBADLEN); } else --- 57,68 ---- { GSL_ERROR ! ("number of parameters does not match size of covariance matrix", ! GSL_EBADLEN); } else if (X->size1 != work->n || X->size2 != work->p) { GSL_ERROR ! ("size of workspace does not match size of observation matrix", ! GSL_EBADLEN); } else *************** *** 101,111 **** for (j = 0; j < p; j++) ! { ! gsl_vector_view column = gsl_matrix_column (QSI, j); ! double alpha = gsl_vector_get (S, j); ! if (alpha != 0) ! alpha = 1.0 / alpha; ! gsl_vector_scale (&column.vector, alpha); ! } gsl_vector_set_zero (c); --- 101,111 ---- for (j = 0; j < p; j++) ! { ! gsl_vector_view column = gsl_matrix_column (QSI, j); ! double alpha = gsl_vector_get (S, j); ! if (alpha != 0) ! alpha = 1.0 / alpha; ! gsl_vector_scale (&column.vector, alpha); ! } gsl_vector_set_zero (c); *************** *** 120,158 **** { ! double s2 = 0, r2 = 0; ! for (i = 0; i < n; i++) ! { ! double yi = gsl_vector_get (y, i); ! gsl_vector_const_view row = gsl_matrix_const_row (X, i); ! double y_est, ri; ! gsl_blas_ddot (&row.vector, c, &y_est); ! ri = yi - y_est; ! r2 += ri * ri; ! } ! ! s2 = r2 / (n - p); ! ! *chisq = r2; ! ! /* Form variance-covariance matrix cov = s2 * (Q S^-1) (Q S^-1)^T */ ! ! for (i = 0; i < p; i++) ! { ! gsl_vector_view row_i = gsl_matrix_row (QSI, i); ! double d_i = gsl_vector_get (D, i); ! ! for (j = i; j < p; j++) ! { ! gsl_vector_view row_j = gsl_matrix_row (QSI, j); ! double d_j = gsl_vector_get (D, j); ! double s; ! ! gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); ! ! gsl_matrix_set (cov, i, j, s * s2 / (d_i * d_j)); ! gsl_matrix_set (cov, j, i, s * s2 / (d_i * d_j)); ! } ! } } --- 120,158 ---- { ! double s2 = 0, r2 = 0; ! for (i = 0; i < n; i++) ! { ! double yi = gsl_vector_get (y, i); ! gsl_vector_const_view row = gsl_matrix_const_row (X, i); ! double y_est, ri; ! gsl_blas_ddot (&row.vector, c, &y_est); ! ri = yi - y_est; ! r2 += ri * ri; ! } ! ! s2 = r2 / (n - p); ! ! *chisq = r2; ! ! /* Form variance-covariance matrix cov = s2 * (Q S^-1) (Q S^-1)^T */ ! ! for (i = 0; i < p; i++) ! { ! gsl_vector_view row_i = gsl_matrix_row (QSI, i); ! double d_i = gsl_vector_get (D, i); ! ! for (j = i; j < p; j++) ! { ! gsl_vector_view row_j = gsl_matrix_row (QSI, j); ! double d_j = gsl_vector_get (D, j); ! double s; ! ! gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); ! ! gsl_matrix_set (cov, i, j, s * s2 / (d_i * d_j)); ! gsl_matrix_set (cov, j, i, s * s2 / (d_i * d_j)); ! } ! } } *************** *** 163,187 **** int gsl_multifit_wlinear (const gsl_matrix * X, ! const gsl_vector * w, ! const gsl_vector * y, ! gsl_vector * c, ! gsl_matrix * cov, ! double *chisq, gsl_multifit_linear_workspace * work) { if (X->size1 != y->size) { GSL_ERROR ! ("number of observations in y does not match rows of matrix X", ! GSL_EBADLEN); } else if (X->size2 != c->size) { GSL_ERROR ("number of parameters c does not match columns of matrix X", ! GSL_EBADLEN); } else if (w->size != y->size) { GSL_ERROR ("number of weights does not match number of observations", ! GSL_EBADLEN); } else if (cov->size1 != cov->size2) --- 163,187 ---- int gsl_multifit_wlinear (const gsl_matrix * X, ! const gsl_vector * w, ! const gsl_vector * y, ! gsl_vector * c, ! gsl_matrix * cov, ! double *chisq, gsl_multifit_linear_workspace * work) { if (X->size1 != y->size) { GSL_ERROR ! ("number of observations in y does not match rows of matrix X", ! GSL_EBADLEN); } else if (X->size2 != c->size) { GSL_ERROR ("number of parameters c does not match columns of matrix X", ! GSL_EBADLEN); } else if (w->size != y->size) { GSL_ERROR ("number of weights does not match number of observations", ! GSL_EBADLEN); } else if (cov->size1 != cov->size2) *************** *** 192,203 **** { GSL_ERROR ! ("number of parameters does not match size of covariance matrix", ! GSL_EBADLEN); } else if (X->size1 != work->n || X->size2 != work->p) { GSL_ERROR ! ("size of workspace does not match size of observation matrix", ! GSL_EBADLEN); } else --- 192,203 ---- { GSL_ERROR ! ("number of parameters does not match size of covariance matrix", ! GSL_EBADLEN); } else if (X->size1 != work->n || X->size2 != work->p) { GSL_ERROR ! ("size of workspace does not match size of observation matrix", ! GSL_EBADLEN); } else *************** *** 221,235 **** for (i = 0; i < n; i++) ! { ! double wi = gsl_vector_get (w, i); ! if (wi < 0) ! wi = 0; ! { ! gsl_vector_view row = gsl_matrix_row (A, i); ! gsl_vector_scale (&row.vector, sqrt (wi)); ! } ! } /* Balance the columns of the matrix A */ --- 221,235 ---- for (i = 0; i < n; i++) ! { ! double wi = gsl_vector_get (w, i); ! if (wi < 0) ! wi = 0; ! { ! gsl_vector_view row = gsl_matrix_row (A, i); ! gsl_vector_scale (&row.vector, sqrt (wi)); ! } ! } /* Balance the columns of the matrix A */ *************** *** 244,254 **** for (i = 0; i < n; i++) ! { ! double wi = gsl_vector_get (w, i); ! double yi = gsl_vector_get (y, i); ! if (wi < 0) ! wi = 0; ! gsl_vector_set (t, i, sqrt (wi) * yi); ! } gsl_blas_dgemv (CblasTrans, 1.0, A, t, 0.0, xt); --- 244,254 ---- for (i = 0; i < n; i++) ! { ! double wi = gsl_vector_get (w, i); ! double yi = gsl_vector_get (y, i); ! if (wi < 0) ! wi = 0; ! gsl_vector_set (t, i, sqrt (wi) * yi); ! } gsl_blas_dgemv (CblasTrans, 1.0, A, t, 0.0, xt); *************** *** 259,269 **** for (j = 0; j < p; j++) ! { ! gsl_vector_view column = gsl_matrix_column (QSI, j); ! double alpha = gsl_vector_get (S, j); ! if (alpha != 0) ! alpha = 1.0 / alpha; ! gsl_vector_scale (&column.vector, alpha); ! } gsl_vector_set_zero (c); --- 259,269 ---- for (j = 0; j < p; j++) ! { ! gsl_vector_view column = gsl_matrix_column (QSI, j); ! double alpha = gsl_vector_get (S, j); ! if (alpha != 0) ! alpha = 1.0 / alpha; ! gsl_vector_scale (&column.vector, alpha); ! } gsl_vector_set_zero (c); *************** *** 280,317 **** for (i = 0; i < p; i++) ! { ! gsl_vector_view row_i = gsl_matrix_row (QSI, i); ! double d_i = gsl_vector_get (D, i); ! ! for (j = i; j < p; j++) ! { ! gsl_vector_view row_j = gsl_matrix_row (QSI, j); ! double d_j = gsl_vector_get (D, j); ! double s; ! ! gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); ! ! gsl_matrix_set (cov, i, j, s / (d_i * d_j)); ! gsl_matrix_set (cov, j, i, s / (d_i * d_j)); ! } ! } /* Compute chisq, from residual r = y - X c */ { ! double r2 = 0; ! for (i = 0; i < n; i++) ! { ! double yi = gsl_vector_get (y, i); ! double wi = gsl_vector_get (w, i); ! gsl_vector_const_view row = gsl_matrix_const_row (X, i); ! double y_est, ri; ! gsl_blas_ddot (&row.vector, c, &y_est); ! ri = yi - y_est; ! r2 += wi * ri * ri; ! } ! *chisq = r2; } --- 280,317 ---- for (i = 0; i < p; i++) ! { ! gsl_vector_view row_i = gsl_matrix_row (QSI, i); ! double d_i = gsl_vector_get (D, i); ! ! for (j = i; j < p; j++) ! { ! gsl_vector_view row_j = gsl_matrix_row (QSI, j); ! double d_j = gsl_vector_get (D, j); ! double s; ! ! gsl_blas_ddot (&row_i.vector, &row_j.vector, &s); ! ! gsl_matrix_set (cov, i, j, s / (d_i * d_j)); ! gsl_matrix_set (cov, j, i, s / (d_i * d_j)); ! } ! } /* Compute chisq, from residual r = y - X c */ { ! double r2 = 0; ! for (i = 0; i < n; i++) ! { ! double yi = gsl_vector_get (y, i); ! double wi = gsl_vector_get (w, i); ! gsl_vector_const_view row = gsl_matrix_const_row (X, i); ! double y_est, ri; ! gsl_blas_ddot (&row.vector, c, &y_est); ! ri = yi - y_est; ! r2 += wi * ri * ri; ! } ! *chisq = r2; } diff -x.info* -rc2P gsl-1.3/multifit/qrsolv.c gsl-1.4/multifit/qrsolv.c *** gsl-1.3/multifit/qrsolv.c Sat Apr 28 11:01:37 2001 --- gsl-1.4/multifit/qrsolv.c Fri Jul 25 15:18:12 2003 *************** *** 58,65 **** for (i = j + 1; i < n; i++) ! { ! double rji = gsl_matrix_get (r, j, i); ! gsl_matrix_set (r, i, j, rji); ! } gsl_vector_set (x, j, rjj); --- 58,65 ---- for (i = j + 1; i < n; i++) ! { ! double rji = gsl_matrix_get (r, j, i); ! gsl_matrix_set (r, i, j, rji); ! } gsl_vector_set (x, j, rjj); *************** *** 78,91 **** if (diagpj == 0) ! { ! continue; ! } gsl_vector_set (sdiag, j, diagpj); for (k = j + 1; k < n; k++) ! { ! gsl_vector_set (sdiag, k, 0.0); ! } /* The transformations to eliminate the row of d modify only a --- 78,91 ---- if (diagpj == 0) ! { ! continue; ! } gsl_vector_set (sdiag, j, diagpj); for (k = j + 1; k < n; k++) ! { ! gsl_vector_set (sdiag, k, 0.0); ! } /* The transformations to eliminate the row of d modify only a *************** *** 96,102 **** for (k = j; k < n; k++) ! { ! /* Determine a Givens rotation which eliminates the ! appropriate element in the current row of d */ double sine, cosine; --- 96,102 ---- for (k = j; k < n; k++) ! { ! /* Determine a Givens rotation which eliminates the ! appropriate element in the current row of d */ double sine, cosine; *************** *** 104,144 **** double wak = gsl_vector_get (wa, k); double rkk = gsl_matrix_get (r, k, k); ! double sdiagk = gsl_vector_get (sdiag, k); ! if (sdiagk == 0) ! { ! continue; ! } ! ! if (fabs (rkk) < fabs (sdiagk)) ! { ! double cotangent = rkk / sdiagk; ! sine = 0.5 / sqrt (0.25 + 0.25 * cotangent * cotangent); ! cosine = sine * cotangent; ! } ! else ! { ! double tangent = sdiagk / rkk; ! cosine = 0.5 / sqrt (0.25 + 0.25 * tangent * tangent); ! sine = cosine * tangent; ! } ! ! /* Compute the modified diagonal element of r and the ! modified element of [qtb,0] */ ! ! { ! double new_rkk = cosine * rkk + sine * sdiagk; ! double new_wak = cosine * wak + sine * qtbpj; ! qtbpj = -sine * wak + cosine * qtbpj; ! gsl_matrix_set(r, k, k, new_rkk); ! gsl_vector_set(wa, k, new_wak); } ! /* Accumulate the transformation in the row of s */ ! for (i = k + 1; i < n; i++) ! { double rik = gsl_matrix_get (r, i, k); double sdiagi = gsl_vector_get (sdiag, i); --- 104,144 ---- double wak = gsl_vector_get (wa, k); double rkk = gsl_matrix_get (r, k, k); ! double sdiagk = gsl_vector_get (sdiag, k); ! if (sdiagk == 0) ! { ! continue; ! } ! ! if (fabs (rkk) < fabs (sdiagk)) ! { ! double cotangent = rkk / sdiagk; ! sine = 0.5 / sqrt (0.25 + 0.25 * cotangent * cotangent); ! cosine = sine * cotangent; ! } ! else ! { ! double tangent = sdiagk / rkk; ! cosine = 0.5 / sqrt (0.25 + 0.25 * tangent * tangent); ! sine = cosine * tangent; ! } ! ! /* Compute the modified diagonal element of r and the ! modified element of [qtb,0] */ ! ! { ! double new_rkk = cosine * rkk + sine * sdiagk; ! double new_wak = cosine * wak + sine * qtbpj; ! qtbpj = -sine * wak + cosine * qtbpj; ! gsl_matrix_set(r, k, k, new_rkk); ! gsl_vector_set(wa, k, new_wak); } ! /* Accumulate the transformation in the row of s */ ! for (i = k + 1; i < n; i++) ! { double rik = gsl_matrix_get (r, i, k); double sdiagi = gsl_vector_get (sdiag, i); *************** *** 149,154 **** gsl_matrix_set(r, i, k, new_rik); gsl_vector_set(sdiag, i, new_sdiagi); ! } ! } /* Store the corresponding diagonal element of s and restore the --- 149,154 ---- gsl_matrix_set(r, i, k, new_rik); gsl_vector_set(sdiag, i, new_sdiagi); ! } ! } /* Store the corresponding diagonal element of s and restore the *************** *** 175,182 **** if (sdiagj == 0) ! { ! nsing = j; ! break; ! } } --- 175,182 ---- if (sdiagj == 0) ! { ! nsing = j; ! break; ! } } *************** *** 193,199 **** for (i = j + 1; i < nsing; i++) ! { ! sum += gsl_matrix_get(r, i, j) * gsl_vector_get(wa, i); ! } { --- 193,199 ---- for (i = j + 1; i < nsing; i++) ! { ! sum += gsl_matrix_get(r, i, j) * gsl_vector_get(wa, i); ! } { diff -x.info* -rc2P gsl-1.3/multifit/test_brown.c gsl-1.4/multifit/test_brown.c *** gsl-1.3/multifit/test_brown.c Sun Oct 7 15:51:36 2001 --- gsl-1.4/multifit/test_brown.c Fri Jul 25 15:18:12 2003 *************** *** 104,108 **** int brown_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { brown_f (x, params, f); --- 104,108 ---- int brown_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { brown_f (x, params, f); diff -x.info* -rc2P gsl-1.3/multifit/test_enso.c gsl-1.4/multifit/test_enso.c *** gsl-1.3/multifit/test_enso.c Sun Oct 7 18:37:10 2001 --- gsl-1.4/multifit/test_enso.c Fri Jul 25 15:18:12 2003 *************** *** 266,270 **** int enso_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { enso_f (x, params, f); --- 266,270 ---- int enso_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { enso_f (x, params, f); diff -x.info* -rc2P gsl-1.3/multifit/test_hahn1.c gsl-1.4/multifit/test_hahn1.c *** gsl-1.3/multifit/test_hahn1.c Mon Oct 8 15:25:53 2001 --- gsl-1.4/multifit/test_hahn1.c Fri Jul 25 15:18:12 2003 *************** *** 560,564 **** int hahn1_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { hahn1_f (x, params, f); --- 560,564 ---- int hahn1_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { hahn1_f (x, params, f); diff -x.info* -rc2P gsl-1.3/multifit/test_kirby2.c gsl-1.4/multifit/test_kirby2.c *** gsl-1.3/multifit/test_kirby2.c Sun Oct 7 21:59:55 2001 --- gsl-1.4/multifit/test_kirby2.c Fri Jul 25 15:18:12 2003 *************** *** 384,388 **** int kirby2_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { kirby2_f (x, params, f); --- 384,388 ---- int kirby2_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { kirby2_f (x, params, f); diff -x.info* -rc2P gsl-1.3/multifit/test_nelson.c gsl-1.4/multifit/test_nelson.c *** gsl-1.3/multifit/test_nelson.c Mon Oct 8 20:27:19 2001 --- gsl-1.4/multifit/test_nelson.c Fri Jul 25 15:18:12 2003 *************** *** 204,208 **** int nelson_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { nelson_f (x, params, f); --- 204,208 ---- int nelson_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { nelson_f (x, params, f); diff -x.info* -rc2P gsl-1.3/multifit/work.c gsl-1.4/multifit/work.c *** gsl-1.3/multifit/work.c Tue Jun 19 21:56:48 2001 --- gsl-1.4/multifit/work.c Fri Jul 25 15:18:12 2003 *************** *** 33,41 **** { GSL_ERROR_VAL ("failed to allocate space for multifit_linear struct", ! GSL_ENOMEM, 0); } ! w->n = n; /* number of observations */ ! w->p = p; /* number of parameters */ w->A = gsl_matrix_alloc (n, p); --- 33,41 ---- { GSL_ERROR_VAL ("failed to allocate space for multifit_linear struct", ! GSL_ENOMEM, 0); } ! w->n = n; /* number of observations */ ! w->p = p; /* number of parameters */ w->A = gsl_matrix_alloc (n, p); diff -x.info* -rc2P gsl-1.3/multimin/ChangeLog gsl-1.4/multimin/ChangeLog *** gsl-1.3/multimin/ChangeLog Sun Oct 6 21:46:25 2002 --- gsl-1.4/multimin/ChangeLog Thu Jul 24 15:26:00 2003 *************** *** 1,2 **** --- 1,24 ---- + 2003-07-24 Brian Gough + + * simplex.c (nmsimplex_set): changed index variable i from int to + size_t + + 2003-04-17 Brian Gough + + * simplex.c (nmsimplex_iterate): bug fix to find the second + highest point correctly + + * vector_bfgs.c (vector_bfgs_iterate): no need to update g0norm on + each downhill step, since g0norm is the norm for the initial + gradient. + + * conjugate_pr.c (conjugate_pr_iterate): no need to update g0norm + on each downhill step, since g0norm is the norm for the initial + gradient. + + * conjugate_fr.c (conjugate_fr_iterate): no need to update g0norm + on each downhill step, since g0norm is the norm for the initial + gradient. + Sun Sep 30 20:50:00 2002 Tuomo Keskitalo diff -x.info* -rc2P gsl-1.3/multimin/Makefile.am gsl-1.4/multimin/Makefile.am *** gsl-1.3/multimin/Makefile.am Sun Oct 6 21:46:25 2002 --- gsl-1.4/multimin/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 9,17 **** noinst_HEADERS = directional_minimize.c ! check_PROGRAMS = test ! TESTS = test test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la --- 9,20 ---- noinst_HEADERS = directional_minimize.c ! check_PROGRAMS = test #demo ! TESTS = test test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! ! #demo_SOURCES = demo.c ! #demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/multimin/Makefile.in gsl-1.4/multimin/Makefile.in *** gsl-1.3/multimin/Makefile.in Wed Dec 18 22:40:37 2002 --- gsl-1.4/multimin/Makefile.in Thu Aug 14 12:29:16 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslmultimin.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslmultimin.la *************** *** 95,198 **** noinst_HEADERS = directional_minimize.c ! check_PROGRAMS = test ! TESTS = test test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslmultimin_la_LDFLAGS = ! libgslmultimin_la_LIBADD = ! libgslmultimin_la_OBJECTS = fdfminimizer.lo steepest_descent.lo \ ! conjugate_fr.lo conjugate_pr.lo convergence.lo diff.lo vector_bfgs.lo \ ! fminimizer.lo simplex.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_DEPENDENCIES = libgslmultimin.la ../min/libgslmin.la \ ! ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la \ ! ../matrix/libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslmultimin_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps multimin/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 151,247 ---- noinst_HEADERS = directional_minimize.c ! check_PROGRAMS = test #demo ! TESTS = test test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = multimin ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslmultimin_la_LDFLAGS = ! libgslmultimin_la_LIBADD = ! am_libgslmultimin_la_OBJECTS = fdfminimizer.lo steepest_descent.lo \ ! conjugate_fr.lo conjugate_pr.lo convergence.lo diff.lo \ ! vector_bfgs.lo fminimizer.lo simplex.lo ! libgslmultimin_la_OBJECTS = $(am_libgslmultimin_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslmultimin.la ../min/libgslmin.la \ ! ../blas/libgslblas.la ../cblas/libgslcblas.la \ ! ../linalg/libgsllinalg.la ../permutation/libgslpermutation.la \ ! ../matrix/libgslmatrix.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../complex/libgslcomplex.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslmultimin_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu multimin/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslmultimin.la: $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_DEPENDENCIES) + $(LINK) $(libgslmultimin_la_LDFLAGS) $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 203,339 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslmultimin.la: $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_DEPENDENCIES) ! $(LINK) $(libgslmultimin_la_LDFLAGS) $(libgslmultimin_la_OBJECTS) $(libgslmultimin_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = multimin distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 252,456 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 342,392 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 459,529 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ! clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-libtool distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-pkgincludeHEADERS \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ ! pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS + #demo_SOURCES = demo.c + #demo_LDADD = libgslmultimin.la ../min/libgslmin.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../linalg/libgsllinalg.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/multimin/TODO gsl-1.4/multimin/TODO *** gsl-1.3/multimin/TODO Fri Jul 26 17:46:53 2002 --- gsl-1.4/multimin/TODO Tue Jan 14 22:18:24 2003 *************** *** 1 **** --- 1,3 ---- * Check behavior of conjugate_fr in multimin -- the demo results look odd. + + * Should have made f and df return int instead of void. diff -x.info* -rc2P gsl-1.3/multimin/conjugate_fr.c gsl-1.4/multimin/conjugate_fr.c *** gsl-1.3/multimin/conjugate_fr.c Sun Feb 3 15:01:39 2002 --- gsl-1.4/multimin/conjugate_fr.c Fri Jul 25 15:18:12 2003 *************** *** 99,104 **** static int conjugate_fr_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, gsl_vector * gradient, ! double step_size, double tol) { conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; --- 99,104 ---- static int conjugate_fr_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, gsl_vector * gradient, ! double step_size, double tol) { conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; *************** *** 149,154 **** static int conjugate_fr_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; --- 149,154 ---- static int conjugate_fr_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { conjugate_fr_state_t *state = (conjugate_fr_state_t *) vstate; *************** *** 198,202 **** gsl_vector_memcpy (x, x1); GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); - state->g0norm = gsl_blas_dnrm2 (gradient); return GSL_SUCCESS; } --- 198,201 ---- *************** *** 211,215 **** intermediate_point (fdf, x, p, dir / pnorm, pg, ! stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); if (stepb == 0.0) --- 210,214 ---- intermediate_point (fdf, x, p, dir / pnorm, pg, ! stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); if (stepb == 0.0) *************** *** 219,224 **** minimize (fdf, x, p, dir / pnorm, ! stepa, stepb, stepc, fa, fb, fc, tol, ! x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); gsl_vector_memcpy (x, x2); --- 218,223 ---- minimize (fdf, x, p, dir / pnorm, ! stepa, stepb, stepc, fa, fb, fc, tol, ! x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); gsl_vector_memcpy (x, x2); *************** *** 260,264 **** static const gsl_multimin_fdfminimizer_type conjugate_fr_type = { ! "conjugate_fr", /* name */ sizeof (conjugate_fr_state_t), &conjugate_fr_alloc, --- 259,263 ---- static const gsl_multimin_fdfminimizer_type conjugate_fr_type = { ! "conjugate_fr", /* name */ sizeof (conjugate_fr_state_t), &conjugate_fr_alloc, diff -x.info* -rc2P gsl-1.3/multimin/conjugate_pr.c gsl-1.4/multimin/conjugate_pr.c *** gsl-1.3/multimin/conjugate_pr.c Sun Feb 10 21:56:53 2002 --- gsl-1.4/multimin/conjugate_pr.c Fri Jul 25 15:18:12 2003 *************** *** 99,104 **** static int conjugate_pr_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, gsl_vector * gradient, ! double step_size, double tol) { conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; --- 99,104 ---- static int conjugate_pr_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, gsl_vector * gradient, ! double step_size, double tol) { conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; *************** *** 149,154 **** static int conjugate_pr_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; --- 149,154 ---- static int conjugate_pr_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { conjugate_pr_state_t *state = (conjugate_pr_state_t *) vstate; *************** *** 198,202 **** gsl_vector_memcpy (x, x1); GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); - state->g0norm = gsl_blas_dnrm2 (gradient); return GSL_SUCCESS; } --- 198,201 ---- *************** *** 211,215 **** intermediate_point (fdf, x, p, dir / pnorm, pg, ! stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); if (stepb == 0.0) --- 210,214 ---- intermediate_point (fdf, x, p, dir / pnorm, pg, ! stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); if (stepb == 0.0) *************** *** 219,224 **** minimize (fdf, x, p, dir / pnorm, ! stepa, stepb, stepc, fa, fb, fc, tol, ! x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); gsl_vector_memcpy (x, x2); --- 218,223 ---- minimize (fdf, x, p, dir / pnorm, ! stepa, stepb, stepc, fa, fb, fc, tol, ! x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); gsl_vector_memcpy (x, x2); *************** *** 265,269 **** static const gsl_multimin_fdfminimizer_type conjugate_pr_type = { ! "conjugate_pr", /* name */ sizeof (conjugate_pr_state_t), &conjugate_pr_alloc, --- 264,268 ---- static const gsl_multimin_fdfminimizer_type conjugate_pr_type = { ! "conjugate_pr", /* name */ sizeof (conjugate_pr_state_t), &conjugate_pr_alloc, diff -x.info* -rc2P gsl-1.3/multimin/diff.c gsl-1.4/multimin/diff.c *** gsl-1.3/multimin/diff.c Mon Oct 22 11:52:53 2001 --- gsl-1.4/multimin/diff.c Fri Jul 25 15:18:12 2003 *************** *** 23,27 **** int gsl_multimin_diff (const gsl_multimin_function * f, ! const gsl_vector * x, gsl_vector * g) { size_t i, n = f->n; --- 23,27 ---- int gsl_multimin_diff (const gsl_multimin_function * f, ! const gsl_vector * x, gsl_vector * g) { size_t i, n = f->n; diff -x.info* -rc2P gsl-1.3/multimin/directional_minimize.c gsl-1.4/multimin/directional_minimize.c *** gsl-1.3/multimin/directional_minimize.c Sun Feb 3 15:01:16 2002 --- gsl-1.4/multimin/directional_minimize.c Fri Jul 25 15:18:12 2003 *************** *** 125,146 **** if (e2 != 0.0) { ! du = e1 / e2; } if (du > 0 && du < (stepc - stepb) && fabs(du) < 0.5 * old2) { ! stepm = u + du; } else if (du < 0 && du > (stepa - stepb) && fabs(du) < 0.5 * old2) { ! stepm = u + du; } else if ((stepc - stepb) > (stepb - stepa)) { ! stepm = 0.38 * (stepc - stepb) + stepb; } else { ! stepm = stepb - 0.38 * (stepb - stepa); } } --- 125,146 ---- if (e2 != 0.0) { ! du = e1 / e2; } if (du > 0 && du < (stepc - stepb) && fabs(du) < 0.5 * old2) { ! stepm = u + du; } else if (du < 0 && du > (stepa - stepb) && fabs(du) < 0.5 * old2) { ! stepm = u + du; } else if ((stepc - stepb) > (stepb - stepa)) { ! stepm = 0.38 * (stepc - stepb) + stepb; } else { ! stepm = stepb - 0.38 * (stepb - stepa); } } *************** *** 157,182 **** { if (fm < fv) ! { ! w = v; ! v = stepm; ! fw = fv; ! fv = fm; ! } else if (fm < fw) ! { ! w = stepm; ! fw = fm; ! } if (stepm < stepb) ! { ! stepa = stepm; ! fa = fm; ! } else ! { ! stepc = stepm; ! fc = fm; ! } goto mid_trial; } --- 157,182 ---- { if (fm < fv) ! { ! w = v; ! v = stepm; ! fw = fv; ! fv = fm; ! } else if (fm < fw) ! { ! w = stepm; ! fw = fm; ! } if (stepm < stepb) ! { ! stepa = stepm; ! fa = fm; ! } else ! { ! stepc = stepm; ! fc = fm; ! } goto mid_trial; } *************** *** 219,235 **** if (stepm < stepb) ! { ! stepc = stepb; ! fc = fb; ! stepb = stepm; ! fb = fm; ! } else ! { ! stepa = stepb; ! fa = fb; ! stepb = stepm; ! fb = fm; ! } goto mid_trial; } --- 219,235 ---- if (stepm < stepb) ! { ! stepc = stepb; ! fc = fb; ! stepb = stepm; ! fb = fm; ! } else ! { ! stepa = stepb; ! fa = fb; ! stepb = stepm; ! fb = fm; ! } goto mid_trial; } diff -x.info* -rc2P gsl-1.3/multimin/fdfminimizer.c gsl-1.4/multimin/fdfminimizer.c *** gsl-1.3/multimin/fdfminimizer.c Thu Oct 25 13:28:59 2001 --- gsl-1.4/multimin/fdfminimizer.c Fri Jul 25 15:18:12 2003 *************** *** 24,28 **** gsl_multimin_fdfminimizer * gsl_multimin_fdfminimizer_alloc (const gsl_multimin_fdfminimizer_type * T, ! size_t n) { int status; --- 24,28 ---- gsl_multimin_fdfminimizer * gsl_multimin_fdfminimizer_alloc (const gsl_multimin_fdfminimizer_type * T, ! size_t n) { int status; *************** *** 34,38 **** { GSL_ERROR_VAL ("failed to allocate space for minimizer struct", ! GSL_ENOMEM, 0); } --- 34,38 ---- { GSL_ERROR_VAL ("failed to allocate space for minimizer struct", ! GSL_ENOMEM, 0); } *************** *** 75,79 **** free (s); GSL_ERROR_VAL ("failed to allocate space for minimizer state", ! GSL_ENOMEM, 0); } --- 75,79 ---- free (s); GSL_ERROR_VAL ("failed to allocate space for minimizer state", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/multimin/fminimizer.c gsl-1.4/multimin/fminimizer.c *** gsl-1.3/multimin/fminimizer.c Sat Oct 5 21:35:27 2002 --- gsl-1.4/multimin/fminimizer.c Fri Jul 25 15:18:12 2003 *************** *** 24,28 **** gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc (const gsl_multimin_fminimizer_type * T, ! size_t n) { int status; --- 24,28 ---- gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc (const gsl_multimin_fminimizer_type * T, ! size_t n) { int status; *************** *** 34,38 **** { GSL_ERROR_VAL ("failed to allocate space for minimizer struct", ! GSL_ENOMEM, 0); } --- 34,38 ---- { GSL_ERROR_VAL ("failed to allocate space for minimizer struct", ! GSL_ENOMEM, 0); } *************** *** 54,58 **** free (s); GSL_ERROR_VAL ("failed to allocate space for minimizer state", ! GSL_ENOMEM, 0); } --- 54,58 ---- free (s); GSL_ERROR_VAL ("failed to allocate space for minimizer state", ! GSL_ENOMEM, 0); } *************** *** 73,79 **** int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, ! gsl_multimin_function * f, ! const gsl_vector * x, ! const gsl_vector * step_size) { if (s->x->size != f->n) --- 73,79 ---- int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, ! gsl_multimin_function * f, ! const gsl_vector * x, ! const gsl_vector * step_size) { if (s->x->size != f->n) diff -x.info* -rc2P gsl-1.3/multimin/gsl_multimin.h gsl-1.4/multimin/gsl_multimin.h *** gsl-1.3/multimin/gsl_multimin.h Wed Dec 11 15:44:02 2002 --- gsl-1.4/multimin/gsl_multimin.h Fri Jul 25 15:18:21 2003 *************** *** 85,94 **** int (*set) (void *state, gsl_multimin_function * f, const gsl_vector * x, ! double * size, const gsl_vector * step_size); int (*iterate) (void *state, gsl_multimin_function * f, gsl_vector * x, ! double * size, ! double * fval); void (*free) (void *state); } --- 85,94 ---- int (*set) (void *state, gsl_multimin_function * f, const gsl_vector * x, ! double * size, const gsl_vector * step_size); int (*iterate) (void *state, gsl_multimin_function * f, gsl_vector * x, ! double * size, ! double * fval); void (*free) (void *state); } *************** *** 112,122 **** gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc(const gsl_multimin_fminimizer_type *T, ! size_t n); int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, ! gsl_multimin_function * f, ! const gsl_vector * x, ! const gsl_vector * step_size); void --- 112,122 ---- gsl_multimin_fminimizer * gsl_multimin_fminimizer_alloc(const gsl_multimin_fminimizer_type *T, ! size_t n); int gsl_multimin_fminimizer_set (gsl_multimin_fminimizer * s, ! gsl_multimin_function * f, ! const gsl_vector * x, ! const gsl_vector * step_size); void diff -x.info* -rc2P gsl-1.3/multimin/simplex.c gsl-1.4/multimin/simplex.c *** gsl-1.3/multimin/simplex.c Sat Oct 5 21:35:27 2002 --- gsl-1.4/multimin/simplex.c Fri Jul 25 15:18:13 2003 *************** *** 107,124 **** { if (i != best) ! { ! for (j = 0; j < x1->size2; j++) ! { ! newval = 0.5 * (gsl_matrix_get (x1, i, j) ! + gsl_matrix_get (x1, best, j)); ! gsl_matrix_set (x1, i, j, newval); ! } ! ! /* evaluate function in the new point */ ! ! gsl_matrix_get_row (xc, x1, i); ! newval = GSL_MULTIMIN_FN_EVAL (f, xc); ! gsl_vector_set (y1, i, newval); ! } } --- 107,124 ---- { if (i != best) ! { ! for (j = 0; j < x1->size2; j++) ! { ! newval = 0.5 * (gsl_matrix_get (x1, i, j) ! + gsl_matrix_get (x1, best, j)); ! gsl_matrix_set (x1, i, j, newval); ! } ! ! /* evaluate function in the new point */ ! ! gsl_matrix_get_row (xc, x1, i); ! newval = GSL_MULTIMIN_FN_EVAL (f, xc); ! gsl_vector_set (y1, i, newval); ! } } *************** *** 140,146 **** val = 0.0; for (i = 0; i < x1->size1; i++) ! { ! val += gsl_matrix_get (x1, i, j); ! } val /= x1->size1; gsl_vector_set (mp, j, val); --- 140,146 ---- val = 0.0; for (i = 0; i < x1->size1; i++) ! { ! val += gsl_matrix_get (x1, i, j); ! } val /= x1->size1; gsl_vector_set (mp, j, val); *************** *** 150,155 **** } ! double ! gsl_multimin_nmsimplex_size (nmsimplex_state_t * state) { /* calculates simplex size as average sum of length of vectors --- 150,155 ---- } ! static double ! nmsimplex_size (nmsimplex_state_t * state) { /* calculates simplex size as average sum of length of vectors *************** *** 218,225 **** static int nmsimplex_set (void *vstate, gsl_multimin_function * f, ! const gsl_vector * x, ! double *size, const gsl_vector * step_size) { ! int i, status; double val; --- 218,226 ---- static int nmsimplex_set (void *vstate, gsl_multimin_function * f, ! const gsl_vector * x, ! double *size, const gsl_vector * step_size) { ! int status; ! size_t i; double val; *************** *** 241,247 **** if (status != 0) ! { ! GSL_ERROR ("vector memcopy failed", GSL_EFAILED); ! } val = gsl_vector_get (xtemp, i) + gsl_vector_get (step_size, i); --- 242,248 ---- if (status != 0) ! { ! GSL_ERROR ("vector memcopy failed", GSL_EFAILED); ! } val = gsl_vector_get (xtemp, i) + gsl_vector_get (step_size, i); *************** *** 254,258 **** /* Initialize simplex size */ ! *size = gsl_multimin_nmsimplex_size (state); return GSL_SUCCESS; --- 255,259 ---- /* Initialize simplex size */ ! *size = nmsimplex_size (state); return GSL_SUCCESS; *************** *** 272,276 **** static int nmsimplex_iterate (void *vstate, gsl_multimin_function * f, ! gsl_vector * x, double *size, double *fval) { --- 273,277 ---- static int nmsimplex_iterate (void *vstate, gsl_multimin_function * f, ! gsl_vector * x, double *size, double *fval) { *************** *** 290,294 **** size_t i; size_t hi = 0, s_hi = 0, lo = 0; ! double dhi, dlo; int status; double val, val2; --- 291,295 ---- size_t i; size_t hi = 0, s_hi = 0, lo = 0; ! double dhi, ds_hi, dlo; int status; double val, val2; *************** *** 296,301 **** /* get index of highest, second highest and lowest point */ ! dhi = gsl_vector_get (y1, 0); ! dlo = dhi; for (i = 1; i < n; i++) --- 297,301 ---- /* get index of highest, second highest and lowest point */ ! dhi = ds_hi = dlo = gsl_vector_get (y1, 0); for (i = 1; i < n; i++) *************** *** 303,316 **** val = (gsl_vector_get (y1, i)); if (val < dlo) ! { ! dlo = val; ! lo = i; ! } else if (val > dhi) ! { ! s_hi = hi; ! dhi = val; ! hi = i; ! } } --- 303,322 ---- val = (gsl_vector_get (y1, i)); if (val < dlo) ! { ! dlo = val; ! lo = i; ! } else if (val > dhi) ! { ! ds_hi = dhi; ! s_hi = hi; ! dhi = val; ! hi = i; ! } ! else if (val > ds_hi) ! { ! ds_hi = val; ! s_hi = i; ! } } *************** *** 327,339 **** if (val2 < gsl_vector_get (y1, lo)) ! { ! gsl_matrix_set_row (x1, hi, xc2); ! gsl_vector_set (y1, hi, val2); ! } else ! { ! gsl_matrix_set_row (x1, hi, xc); ! gsl_vector_set (y1, hi, val); ! } } --- 333,345 ---- if (val2 < gsl_vector_get (y1, lo)) ! { ! gsl_matrix_set_row (x1, hi, xc2); ! gsl_vector_set (y1, hi, val2); ! } else ! { ! gsl_matrix_set_row (x1, hi, xc); ! gsl_vector_set (y1, hi, val); ! } } *************** *** 343,354 **** { if (val <= gsl_vector_get (y1, hi)) ! { ! /* if trial point is better than highest point, replace ! highest point */ ! gsl_matrix_set_row (x1, hi, xc); ! gsl_vector_set (y1, hi, val); ! } /* try one dimensional contraction */ --- 349,360 ---- { if (val <= gsl_vector_get (y1, hi)) ! { ! /* if trial point is better than highest point, replace ! highest point */ ! gsl_matrix_set_row (x1, hi, xc); ! gsl_vector_set (y1, hi, val); ! } /* try one dimensional contraction */ *************** *** 357,376 **** if (val2 <= gsl_vector_get (y1, hi)) ! { ! gsl_matrix_set_row (state->x1, hi, xc2); ! gsl_vector_set (y1, hi, val2); ! } else ! { ! /* contract the whole simplex in respect to the best point */ ! status = nmsimplex_contract_by_best (state, lo, xc, f); ! if (status != 0) ! { ! GSL_ERROR ("nmsimplex_contract_by_best failed", GSL_EFAILED); ! } ! } } else --- 363,382 ---- if (val2 <= gsl_vector_get (y1, hi)) ! { ! gsl_matrix_set_row (state->x1, hi, xc2); ! gsl_vector_set (y1, hi, val2); ! } else ! { ! /* contract the whole simplex in respect to the best point */ ! status = nmsimplex_contract_by_best (state, lo, xc, f); ! if (status != 0) ! { ! GSL_ERROR ("nmsimplex_contract_by_best failed", GSL_EFAILED); ! } ! } } else *************** *** 392,396 **** /* Update simplex size */ ! *size = gsl_multimin_nmsimplex_size (state); return GSL_SUCCESS; --- 398,402 ---- /* Update simplex size */ ! *size = nmsimplex_size (state); return GSL_SUCCESS; *************** *** 398,402 **** static const gsl_multimin_fminimizer_type nmsimplex_type = ! { "nmsimplex", /* name */ sizeof (nmsimplex_state_t), &nmsimplex_alloc, --- 404,408 ---- static const gsl_multimin_fminimizer_type nmsimplex_type = ! { "nmsimplex", /* name */ sizeof (nmsimplex_state_t), &nmsimplex_alloc, diff -x.info* -rc2P gsl-1.3/multimin/steepest_descent.c gsl-1.4/multimin/steepest_descent.c *** gsl-1.3/multimin/steepest_descent.c Fri Oct 26 13:15:34 2001 --- gsl-1.4/multimin/steepest_descent.c Fri Jul 25 15:18:13 2003 *************** *** 62,67 **** static int steepest_descent_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, ! gsl_vector * gradient, double step_size, double tol) { steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; --- 62,67 ---- static int steepest_descent_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, ! gsl_vector * gradient, double step_size, double tol) { steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; *************** *** 98,103 **** static int steepest_descent_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; --- 98,103 ---- static int steepest_descent_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { steepest_descent_state_t *state = (steepest_descent_state_t *) vstate; *************** *** 159,163 **** static const gsl_multimin_fdfminimizer_type steepest_descent_type = ! { "steepest_descent", /* name */ sizeof (steepest_descent_state_t), &steepest_descent_alloc, --- 159,163 ---- static const gsl_multimin_fdfminimizer_type steepest_descent_type = ! { "steepest_descent", /* name */ sizeof (steepest_descent_state_t), &steepest_descent_alloc, diff -x.info* -rc2P gsl-1.3/multimin/test.c gsl-1.4/multimin/test.c *** gsl-1.3/multimin/test.c Sun Oct 6 21:46:26 2002 --- gsl-1.4/multimin/test.c Sat Jul 26 21:12:14 2003 *************** *** 31,35 **** int test_fdf(const char * desc, gsl_multimin_function_fdf *f, ! initpt_function initpt, const gsl_multimin_fdfminimizer_type *T); int --- 31,35 ---- int test_fdf(const char * desc, gsl_multimin_function_fdf *f, ! initpt_function initpt, const gsl_multimin_fdfminimizer_type *T); int *************** *** 80,85 **** test_fdf(const char * desc, gsl_multimin_function_fdf *f, ! initpt_function initpt, ! const gsl_multimin_fdfminimizer_type *T) { int status; --- 80,85 ---- test_fdf(const char * desc, gsl_multimin_function_fdf *f, ! initpt_function initpt, ! const gsl_multimin_fdfminimizer_type *T) { int status; *************** *** 125,129 **** gsl_test(status, "%s, on %s: %i iterations, f(x)=%g", ! gsl_multimin_fdfminimizer_name(s),desc, iter, s->f); gsl_multimin_fdfminimizer_free(s); --- 125,129 ---- gsl_test(status, "%s, on %s: %i iterations, f(x)=%g", ! gsl_multimin_fdfminimizer_name(s),desc, iter, s->f); gsl_multimin_fdfminimizer_free(s); *************** *** 138,143 **** /* currently this function tests only nmsimplex */ ! int status, i; ! size_t iter = 0; const gsl_multimin_fminimizer_type *T = gsl_multimin_fminimizer_nmsimplex; --- 138,143 ---- /* currently this function tests only nmsimplex */ ! int status; ! size_t i, iter = 0; const gsl_multimin_fminimizer_type *T = gsl_multimin_fminimizer_nmsimplex; *************** *** 175,179 **** status = gsl_multimin_test_size (gsl_multimin_fminimizer_size (s), ! 1e-3); } while (iter < 5000 && status == GSL_CONTINUE); --- 175,179 ---- status = gsl_multimin_test_size (gsl_multimin_fminimizer_size (s), ! 1e-3); } while (iter < 5000 && status == GSL_CONTINUE); *************** *** 182,186 **** gsl_test(status, "%s, on %s: %i iterations, f(x)=%g", ! gsl_multimin_fminimizer_name(s),desc, iter, s->fval); gsl_multimin_fminimizer_free(s); --- 182,186 ---- gsl_test(status, "%s, on %s: %i iterations, f(x)=%g", ! gsl_multimin_fminimizer_name(s),desc, iter, s->fval); gsl_multimin_fminimizer_free(s); diff -x.info* -rc2P gsl-1.3/multimin/test_funcs.c gsl-1.4/multimin/test_funcs.c *** gsl-1.3/multimin/test_funcs.c Sun Oct 6 21:46:26 2002 --- gsl-1.4/multimin/test_funcs.c Fri Jul 25 15:18:13 2003 *************** *** 60,64 **** void rosenbrock_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { double u = gsl_vector_get(x,0); --- 60,64 ---- void rosenbrock_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { double u = gsl_vector_get(x,0); *************** *** 112,116 **** void roth_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = roth_f (x,params); --- 112,116 ---- void roth_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = roth_f (x,params); *************** *** 193,197 **** void Nrosenbrock_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = rosenbrock_f (x, params); --- 193,197 ---- void Nrosenbrock_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = rosenbrock_f (x, params); *************** *** 215,219 **** void Nroth_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = roth_f (x, params); --- 215,219 ---- void Nroth_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = roth_f (x, params); *************** *** 238,242 **** void Nwood_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = wood_f (x, params); --- 238,242 ---- void Nwood_fdf (const gsl_vector * x, void *params, double * f, ! gsl_vector * df) { *f = wood_f (x, params); diff -x.info* -rc2P gsl-1.3/multimin/vector_bfgs.c gsl-1.4/multimin/vector_bfgs.c *** gsl-1.3/multimin/vector_bfgs.c Sun Feb 10 21:57:31 2002 --- gsl-1.4/multimin/vector_bfgs.c Fri Jul 25 15:18:13 2003 *************** *** 142,147 **** static int vector_bfgs_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, gsl_vector * gradient, ! double step_size, double tol) { vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; --- 142,147 ---- static int vector_bfgs_set (void *vstate, gsl_multimin_function_fdf * fdf, ! const gsl_vector * x, double *f, gsl_vector * gradient, ! double step_size, double tol) { vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; *************** *** 195,200 **** static int vector_bfgs_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; --- 195,200 ---- static int vector_bfgs_iterate (void *vstate, gsl_multimin_function_fdf * fdf, ! gsl_vector * x, double *f, ! gsl_vector * gradient, gsl_vector * dx) { vector_bfgs_state_t *state = (vector_bfgs_state_t *) vstate; *************** *** 245,249 **** gsl_vector_memcpy (x, x1); GSL_MULTIMIN_FN_EVAL_DF (fdf, x1, gradient); - state->g0norm = gsl_blas_dnrm2 (gradient); return GSL_SUCCESS; } --- 245,248 ---- *************** *** 258,262 **** intermediate_point (fdf, x, p, dir / pnorm, pg, ! stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); if (stepb == 0.0) --- 257,261 ---- intermediate_point (fdf, x, p, dir / pnorm, pg, ! stepa, stepc, fa, fc, x1, dx1, gradient, &stepb, &fb); if (stepb == 0.0) *************** *** 266,271 **** minimize (fdf, x, p, dir / pnorm, ! stepa, stepb, stepc, fa, fb, fc, tol, ! x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); gsl_vector_memcpy (x, x2); --- 265,270 ---- minimize (fdf, x, p, dir / pnorm, ! stepa, stepb, stepc, fa, fb, fc, tol, ! x1, dx1, x2, dx, gradient, &(state->step), f, &g1norm); gsl_vector_memcpy (x, x2); *************** *** 332,336 **** static const gsl_multimin_fdfminimizer_type vector_bfgs_type = { ! "vector_bfgs", /* name */ sizeof (vector_bfgs_state_t), &vector_bfgs_alloc, --- 331,335 ---- static const gsl_multimin_fdfminimizer_type vector_bfgs_type = { ! "vector_bfgs", /* name */ sizeof (vector_bfgs_state_t), &vector_bfgs_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/Makefile.am gsl-1.4/multiroots/Makefile.am *** gsl-1.3/multiroots/Makefile.am Wed Jun 6 17:10:10 2001 --- gsl-1.4/multiroots/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 16,19 **** test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 16,19 ---- test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/multiroots/Makefile.in gsl-1.4/multiroots/Makefile.in *** gsl-1.3/multiroots/Makefile.in Wed Dec 18 22:40:25 2002 --- gsl-1.4/multiroots/Makefile.in Thu Aug 14 12:29:23 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,57 **** # PARTICULAR PURPOSE. ! # -*-makefile-*- ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,35 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ ! # -*-makefile-*- srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 60,71 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 38,60 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 73,89 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ noinst_LTLIBRARIES = libgslmultiroots.la --- 62,146 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ noinst_LTLIBRARIES = libgslmultiroots.la *************** *** 102,200 **** test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslmultiroots_la_LDFLAGS = ! libgslmultiroots_la_LIBADD = ! libgslmultiroots_la_OBJECTS = fdjac.lo fsolver.lo fdfsolver.lo \ ! convergence.lo newton.lo gnewton.lo dnewton.lo broyden.lo hybrid.lo \ ! hybridj.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_DEPENDENCIES = libgslmultiroots.la ../linalg/libgsllinalg.la \ ! ../blas/libgslblas.la ../cblas/libgslcblas.la \ ! ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslmultiroots_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps multiroots/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 159,250 ---- test_SOURCES = test.c test_funcs.c test_funcs.h ! test_LDADD = libgslmultiroots.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = multiroots ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslmultiroots_la_LDFLAGS = ! libgslmultiroots_la_LIBADD = ! am_libgslmultiroots_la_OBJECTS = fdjac.lo fsolver.lo fdfsolver.lo \ ! convergence.lo newton.lo gnewton.lo dnewton.lo broyden.lo \ ! hybrid.lo hybridj.lo ! libgslmultiroots_la_OBJECTS = $(am_libgslmultiroots_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslmultiroots.la ../linalg/libgsllinalg.la \ ! ../blas/libgslblas.la ../cblas/libgslcblas.la \ ! ../permutation/libgslpermutation.la ../matrix/libgslmatrix.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../complex/libgslcomplex.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in SOURCES = $(libgslmultiroots_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu multiroots/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslmultiroots.la: $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_DEPENDENCIES) + $(LINK) $(libgslmultiroots_la_LDFLAGS) $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 205,341 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslmultiroots.la: $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_DEPENDENCIES) ! $(LINK) $(libgslmultiroots_la_LDFLAGS) $(libgslmultiroots_la_OBJECTS) $(libgslmultiroots_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = multiroots distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 255,459 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 344,393 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 462,528 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/multiroots/broyden.c gsl-1.4/multiroots/broyden.c *** gsl-1.3/multiroots/broyden.c Tue Nov 12 22:21:59 2002 --- gsl-1.4/multiroots/broyden.c Fri Jul 25 15:18:13 2003 *************** *** 254,260 **** for (j = 0; j < n; j++) ! { ! sum += gsl_matrix_get (H, i, j) * gsl_vector_get (f, j); ! } gsl_vector_set (p, i, sum); } --- 254,260 ---- for (j = 0; j < n; j++) ! { ! sum += gsl_matrix_get (H, i, j) * gsl_vector_get (f, j); ! } gsl_vector_set (p, i, sum); } *************** *** 348,354 **** for (j = 0; j < n; j++) ! { ! sum += gsl_matrix_get (H, i, j) * gsl_vector_get (y, j); ! } gsl_vector_set (v, i, sum); --- 348,354 ---- for (j = 0; j < n; j++) ! { ! sum += gsl_matrix_get (H, i, j) * gsl_vector_get (y, j); ! } gsl_vector_set (v, i, sum); *************** *** 384,390 **** for (j = 0; j < n; j++) ! { ! sum += gsl_matrix_get (H, j, i) * gsl_vector_get (p, j); ! } gsl_vector_set (w, i, sum); --- 384,390 ---- for (j = 0; j < n; j++) ! { ! sum += gsl_matrix_get (H, j, i) * gsl_vector_get (p, j); ! } gsl_vector_set (w, i, sum); *************** *** 398,406 **** for (j = 0; j < n; j++) ! { ! double wj = gsl_vector_get (w, j); ! double Hij = gsl_matrix_get (H, i, j) - vi * wj / lambda; ! gsl_matrix_set (H, i, j, Hij); ! } } --- 398,406 ---- for (j = 0; j < n; j++) ! { ! double wj = gsl_vector_get (w, j); ! double Hij = gsl_matrix_get (H, i, j) - vi * wj / lambda; ! gsl_matrix_set (H, i, j, Hij); ! } } *************** *** 447,451 **** static const gsl_multiroot_fsolver_type broyden_type = ! {"broyden", /* name */ sizeof (broyden_state_t), &broyden_alloc, --- 447,451 ---- static const gsl_multiroot_fsolver_type broyden_type = ! {"broyden", /* name */ sizeof (broyden_state_t), &broyden_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/dnewton.c gsl-1.4/multiroots/dnewton.c *** gsl-1.3/multiroots/dnewton.c Tue Nov 12 22:22:25 2002 --- gsl-1.4/multiroots/dnewton.c Fri Jul 25 15:18:13 2003 *************** *** 177,181 **** static const gsl_multiroot_fsolver_type dnewton_type = ! {"dnewton", /* name */ sizeof (dnewton_state_t), &dnewton_alloc, --- 177,181 ---- static const gsl_multiroot_fsolver_type dnewton_type = ! {"dnewton", /* name */ sizeof (dnewton_state_t), &dnewton_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/dogleg.c gsl-1.4/multiroots/dogleg.c *** gsl-1.3/multiroots/dogleg.c Wed Apr 18 21:52:33 2001 --- gsl-1.4/multiroots/dogleg.c Fri Jul 25 15:18:13 2003 *************** *** 93,102 **** double sum = 0; for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; gsl_vector_set (diag, j, sqrt (sum)); --- 93,102 ---- double sum = 0; for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; gsl_vector_set (diag, j, sqrt (sum)); *************** *** 113,122 **** double cnorm, diagj, sum = 0; for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; cnorm = sqrt (sum); --- 113,122 ---- double cnorm, diagj, sum = 0; for (i = 0; i < n; i++) ! { ! double Jij = gsl_matrix_get (J, i, j); ! sum += Jij * Jij; ! } if (sum == 0) ! sum = 1.0; cnorm = sqrt (sum); *************** *** 124,128 **** if (cnorm > diagj) ! gsl_vector_set (diag, j, cnorm); } } --- 124,128 ---- if (cnorm > diagj) ! gsl_vector_set (diag, j, cnorm); } } *************** *** 182,186 **** double sum = 0; for (i = 0; i < N; i++) ! sum += gsl_matrix_get (q, i, j) * gsl_vector_get (f, i); gsl_vector_set (qtf, j, sum); --- 182,186 ---- double sum = 0; for (i = 0; i < N; i++) ! sum += gsl_matrix_get (q, i, j) * gsl_vector_get (f, i); gsl_vector_set (qtf, j, sum); *************** *** 198,204 **** for (j = i; j < N; j++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, j); ! } gsl_vector_set (rdx, i, sum); --- 198,204 ---- for (j = i; j < N; j++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (dx, j); ! } gsl_vector_set (rdx, i, sum); *************** *** 244,248 **** static void gradient_direction (const gsl_matrix * r, const gsl_vector * qtf, ! const gsl_vector * diag, gsl_vector * g) { const size_t M = r->size1; --- 244,248 ---- static void gradient_direction (const gsl_matrix * r, const gsl_vector * qtf, ! const gsl_vector * diag, gsl_vector * g) { const size_t M = r->size1; *************** *** 257,263 **** for (i = 0; i < N; i++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); ! } dj = gsl_vector_get (diag, j); --- 257,263 ---- for (i = 0; i < N; i++) ! { ! sum += gsl_matrix_get (r, i, j) * gsl_vector_get (qtf, i); ! } dj = gsl_vector_get (diag, j); *************** *** 291,299 **** for (j = i; j < N; j++) ! { ! double gj = gsl_vector_get (gradient, j); ! double rij = gsl_matrix_get (r, i, j); ! sum += rij * gj; ! } gsl_vector_set (Rg, i, sum); --- 291,299 ---- for (j = i; j < N; j++) ! { ! double gj = gsl_vector_get (gradient, j); ! double rij = gsl_matrix_get (r, i, j); ! sum += rij * gj; ! } gsl_vector_set (Rg, i, sum); *************** *** 317,322 **** static int dogleg (const gsl_matrix * r, const gsl_vector * qtf, ! const gsl_vector * diag, double delta, ! gsl_vector * newton, gsl_vector * gradient, gsl_vector * p) { double qnorm, gnorm, sgnorm, bnorm, temp; --- 317,322 ---- static int dogleg (const gsl_matrix * r, const gsl_vector * qtf, ! const gsl_vector * diag, double delta, ! gsl_vector * newton, gsl_vector * gradient, gsl_vector * p) { double qnorm, gnorm, sgnorm, bnorm, temp; *************** *** 360,364 **** minimum_step (gnorm, diag, gradient); ! compute_Rg (r, gradient, p); /* Use p as temporary space to compute Rg */ #ifdef DEBUG --- 360,364 ---- minimum_step (gnorm, diag, gradient); ! compute_Rg (r, gradient, p); /* Use p as temporary space to compute Rg */ #ifdef DEBUG diff -x.info* -rc2P gsl-1.3/multiroots/fdfsolver.c gsl-1.4/multiroots/fdfsolver.c *** gsl-1.3/multiroots/fdfsolver.c Wed May 1 20:37:31 2002 --- gsl-1.4/multiroots/fdfsolver.c Fri Jul 25 15:18:13 2003 *************** *** 37,41 **** { GSL_ERROR_VAL ("failed to allocate space for multiroot solver struct", ! GSL_ENOMEM, 0); } --- 37,41 ---- { GSL_ERROR_VAL ("failed to allocate space for multiroot solver struct", ! GSL_ENOMEM, 0); } *************** *** 86,93 **** gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multiroot solver state", ! GSL_ENOMEM, 0); } --- 86,93 ---- gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multiroot solver state", ! GSL_ENOMEM, 0); } *************** *** 103,107 **** gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); --- 103,107 ---- gsl_vector_free (s->f); gsl_matrix_free (s->J); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); diff -x.info* -rc2P gsl-1.3/multiroots/fdjac.c gsl-1.4/multiroots/fdjac.c *** gsl-1.3/multiroots/fdjac.c Wed Apr 18 21:52:33 2001 --- gsl-1.4/multiroots/fdjac.c Fri Jul 25 15:18:13 2003 *************** *** 44,48 **** if (x1 == 0) { ! GSL_ERROR ("failed to allocate space for x1 workspace", GSL_ENOMEM); } --- 44,48 ---- if (x1 == 0) { ! GSL_ERROR ("failed to allocate space for x1 workspace", GSL_ENOMEM); } *************** *** 51,72 **** if (f1 == 0) { ! gsl_vector_free (x1); ! GSL_ERROR ("failed to allocate space for f1 workspace", GSL_ENOMEM); } ! gsl_vector_memcpy (x1, x); /* copy x into x1 */ for (j = 0; j < n; j++) { ! double xj = gsl_vector_get (x, j); ! double dx = epsrel * fabs (xj); ! if (dx == 0) ! { ! dx = epsrel; ! } ! gsl_vector_set (x1, j, xj + dx); { --- 51,72 ---- if (f1 == 0) { ! gsl_vector_free (x1); ! GSL_ERROR ("failed to allocate space for f1 workspace", GSL_ENOMEM); } ! gsl_vector_memcpy (x1, x); /* copy x into x1 */ for (j = 0; j < n; j++) { ! double xj = gsl_vector_get (x, j); ! double dx = epsrel * fabs (xj); ! if (dx == 0) ! { ! dx = epsrel; ! } ! gsl_vector_set (x1, j, xj + dx); { *************** *** 79,90 **** } ! gsl_vector_set (x1, j, xj); ! for (i = 0; i < m; i++) ! { ! double g1 = gsl_vector_get (f1, i); ! double g0 = gsl_vector_get (f, i); ! gsl_matrix_set (jacobian, i, j, (g1 - g0) / dx); ! } } --- 79,90 ---- } ! gsl_vector_set (x1, j, xj); ! for (i = 0; i < m; i++) ! { ! double g1 = gsl_vector_get (f1, i); ! double g0 = gsl_vector_get (f, i); ! gsl_matrix_set (jacobian, i, j, (g1 - g0) / dx); ! } } diff -x.info* -rc2P gsl-1.3/multiroots/fsolver.c gsl-1.4/multiroots/fsolver.c *** gsl-1.3/multiroots/fsolver.c Wed May 1 20:37:16 2002 --- gsl-1.4/multiroots/fsolver.c Fri Jul 25 15:18:13 2003 *************** *** 37,41 **** { GSL_ERROR_VAL ("failed to allocate space for multiroot solver struct", ! GSL_ENOMEM, 0); } --- 37,41 ---- { GSL_ERROR_VAL ("failed to allocate space for multiroot solver struct", ! GSL_ENOMEM, 0); } *************** *** 74,81 **** gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multiroot solver state", ! GSL_ENOMEM, 0); } --- 74,81 ---- gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for multiroot solver state", ! GSL_ENOMEM, 0); } *************** *** 91,95 **** gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); --- 91,95 ---- gsl_vector_free (s->x); gsl_vector_free (s->f); ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to set solver", status, 0); diff -x.info* -rc2P gsl-1.3/multiroots/gnewton.c gsl-1.4/multiroots/gnewton.c *** gsl-1.3/multiroots/gnewton.c Tue Nov 12 22:22:54 2002 --- gsl-1.4/multiroots/gnewton.c Fri Jul 25 15:18:13 2003 *************** *** 217,221 **** static const gsl_multiroot_fdfsolver_type gnewton_type = ! {"gnewton", /* name */ sizeof (gnewton_state_t), &gnewton_alloc, --- 217,221 ---- static const gsl_multiroot_fdfsolver_type gnewton_type = ! {"gnewton", /* name */ sizeof (gnewton_state_t), &gnewton_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/hybrid.c gsl-1.4/multiroots/hybrid.c *** gsl-1.3/multiroots/hybrid.c Tue Nov 12 22:24:09 2002 --- gsl-1.4/multiroots/hybrid.c Fri Jul 25 15:18:13 2003 *************** *** 62,76 **** static int hybrid_alloc (void *vstate, size_t n); static int hybrid_set (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx); static int hybrids_set (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx); static int set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx, int scale); static int hybrid_iterate (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx); static void hybrid_free (void *vstate); static int iterate (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx, ! int scale); static int --- 62,76 ---- static int hybrid_alloc (void *vstate, size_t n); static int hybrid_set (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx); static int hybrids_set (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx); static int set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx, int scale); static int hybrid_iterate (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx); static void hybrid_free (void *vstate); static int iterate (void *vstate, gsl_multiroot_function * func, ! gsl_vector * x, gsl_vector * f, gsl_vector * dx, ! int scale); static int *************** *** 342,346 **** static int hybrid_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = set (vstate, func, x, f, dx, 0); --- 342,346 ---- static int hybrid_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = set (vstate, func, x, f, dx, 0); *************** *** 350,354 **** static int hybrids_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = set (vstate, func, x, f, dx, 1); --- 350,354 ---- static int hybrids_set (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = set (vstate, func, x, f, dx, 1); *************** *** 420,424 **** static int hybrid_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = iterate (vstate, func, x, f, dx, 0); --- 420,424 ---- static int hybrid_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = iterate (vstate, func, x, f, dx, 0); *************** *** 428,432 **** static int hybrids_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = iterate (vstate, func, x, f, dx, 1); --- 428,432 ---- static int hybrids_iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx) { int status = iterate (vstate, func, x, f, dx, 1); *************** *** 436,440 **** static int iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx, int scale) { hybrid_state_t *state = (hybrid_state_t *) vstate; --- 436,440 ---- static int iterate (void *vstate, gsl_multiroot_function * func, gsl_vector * x, ! gsl_vector * f, gsl_vector * dx, int scale) { hybrid_state_t *state = (hybrid_state_t *) vstate; *************** *** 478,484 **** { if (pnorm < state->delta) ! { ! state->delta = pnorm; ! } } --- 478,484 ---- { if (pnorm < state->delta) ! { ! state->delta = pnorm; ! } } *************** *** 490,494 **** if (status != GSL_SUCCESS) { ! return GSL_EBADFUNC; } } --- 490,494 ---- if (status != GSL_SUCCESS) { ! return GSL_EBADFUNC; } } *************** *** 539,545 **** if (ratio >= p5 || state->ncsuc > 1) ! state->delta = GSL_MAX (state->delta, pnorm / p5); if (fabs (ratio - 1) <= p1) ! state->delta = pnorm / p5; } --- 539,545 ---- if (ratio >= p5 || state->ncsuc > 1) ! state->delta = GSL_MAX (state->delta, pnorm / p5); if (fabs (ratio - 1) <= p1) ! state->delta = pnorm / p5; } *************** *** 570,583 **** if (state->iter == 1) ! { ! if (scale) ! compute_diag (J, diag); ! state->delta = compute_delta (diag, x); ! } else ! { ! if (scale) ! update_diag (J, diag); ! } /* Factorize J into QR decomposition */ --- 570,583 ---- if (state->iter == 1) ! { ! if (scale) ! compute_diag (J, diag); ! state->delta = compute_delta (diag, x); ! } else ! { ! if (scale) ! update_diag (J, diag); ! } /* Factorize J into QR decomposition */ *************** *** 640,644 **** static const gsl_multiroot_fsolver_type hybrid_type = { ! "hybrid", /* name */ sizeof (hybrid_state_t), &hybrid_alloc, --- 640,644 ---- static const gsl_multiroot_fsolver_type hybrid_type = { ! "hybrid", /* name */ sizeof (hybrid_state_t), &hybrid_alloc, *************** *** 649,653 **** static const gsl_multiroot_fsolver_type hybrids_type = { ! "hybrids", /* name */ sizeof (hybrid_state_t), &hybrid_alloc, --- 649,653 ---- static const gsl_multiroot_fsolver_type hybrids_type = { ! "hybrids", /* name */ sizeof (hybrid_state_t), &hybrid_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/hybridj.c gsl-1.4/multiroots/hybridj.c *** gsl-1.3/multiroots/hybridj.c Tue Nov 12 22:25:52 2002 --- gsl-1.4/multiroots/hybridj.c Fri Jul 25 15:18:13 2003 *************** *** 419,425 **** { if (pnorm < state->delta) ! { ! state->delta = pnorm; ! } } --- 419,425 ---- { if (pnorm < state->delta) ! { ! state->delta = pnorm; ! } } *************** *** 480,486 **** if (ratio >= p5 || state->ncsuc > 1) ! state->delta = GSL_MAX (state->delta, pnorm / p5); if (fabs (ratio - 1) <= p1) ! state->delta = pnorm / p5; } --- 480,486 ---- if (ratio >= p5 || state->ncsuc > 1) ! state->delta = GSL_MAX (state->delta, pnorm / p5); if (fabs (ratio - 1) <= p1) ! state->delta = pnorm / p5; } *************** *** 518,526 **** if (state->iter == 1) ! { if (scale) compute_diag (J, diag); ! state->delta = compute_delta (diag, x); ! } else { --- 518,526 ---- if (state->iter == 1) ! { if (scale) compute_diag (J, diag); ! state->delta = compute_delta (diag, x); ! } else { *************** *** 587,591 **** static const gsl_multiroot_fdfsolver_type hybridj_type = { ! "hybridj", /* name */ sizeof (hybridj_state_t), &hybridj_alloc, --- 587,591 ---- static const gsl_multiroot_fdfsolver_type hybridj_type = { ! "hybridj", /* name */ sizeof (hybridj_state_t), &hybridj_alloc, *************** *** 597,601 **** static const gsl_multiroot_fdfsolver_type hybridsj_type = { ! "hybridsj", /* name */ sizeof (hybridj_state_t), &hybridj_alloc, --- 597,601 ---- static const gsl_multiroot_fdfsolver_type hybridsj_type = { ! "hybridsj", /* name */ sizeof (hybridj_state_t), &hybridj_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/newton.c gsl-1.4/multiroots/newton.c *** gsl-1.3/multiroots/newton.c Tue Nov 12 22:26:14 2002 --- gsl-1.4/multiroots/newton.c Fri Jul 25 15:18:13 2003 *************** *** 142,146 **** static const gsl_multiroot_fdfsolver_type newton_type = ! {"newton", /* name */ sizeof (newton_state_t), &newton_alloc, --- 142,146 ---- static const gsl_multiroot_fdfsolver_type newton_type = ! {"newton", /* name */ sizeof (newton_state_t), &newton_alloc, diff -x.info* -rc2P gsl-1.3/multiroots/test_funcs.c gsl-1.4/multiroots/test_funcs.c *** gsl-1.3/multiroots/test_funcs.c Sun May 6 20:41:13 2001 --- gsl-1.4/multiroots/test_funcs.c Fri Jul 25 15:18:13 2003 *************** *** 61,65 **** gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 61,65 ---- gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 81,85 **** gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 81,85 ---- gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 88,92 **** int rosenbrock_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { rosenbrock_f (x, params, f); --- 88,92 ---- int rosenbrock_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { rosenbrock_f (x, params, f); *************** *** 124,128 **** gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 124,128 ---- gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 144,148 **** gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 144,148 ---- gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 151,155 **** int roth_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { roth_f (x, params, f); --- 151,155 ---- int roth_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { roth_f (x, params, f); *************** *** 188,192 **** gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 188,192 ---- gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 207,211 **** gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 207,211 ---- gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 214,218 **** int powellscal_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { powellscal_f (x, params, f); --- 214,218 ---- int powellscal_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { powellscal_f (x, params, f); *************** *** 250,254 **** gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 250,254 ---- gsl_vector_set (f, 1, y1); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 269,273 **** gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 269,273 ---- gsl_matrix_set (df, 1, 1, df11); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 276,280 **** int brownscal_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { brownscal_f (x, params, f); --- 276,280 ---- int brownscal_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { brownscal_f (x, params, f); *************** *** 320,324 **** gsl_vector_set (f, 3, y3); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 320,324 ---- gsl_vector_set (f, 3, y3); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 358,362 **** gsl_matrix_set (df, 3, 3, df33); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 358,362 ---- gsl_matrix_set (df, 3, 3, df33); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 365,369 **** int powellsing_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { powellsing_f (x, params, f); --- 365,369 ---- int powellsing_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { powellsing_f (x, params, f); *************** *** 412,416 **** gsl_vector_set (f, 3, y3); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 412,416 ---- gsl_vector_set (f, 3, y3); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 453,457 **** gsl_matrix_set (df, 3, 3, df33); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 453,457 ---- gsl_matrix_set (df, 3, 3, df33); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 460,464 **** int wood_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { wood_f (x, params, f); --- 460,464 ---- int wood_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { wood_f (x, params, f); *************** *** 518,522 **** gsl_vector_set (f, 2, y2); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 518,522 ---- gsl_vector_set (f, 2, y2); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 549,553 **** gsl_matrix_set (df, 2, 2, df22); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 549,553 ---- gsl_matrix_set (df, 2, 2, df22); ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 556,560 **** int helical_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { helical_f (x, params, f); --- 556,560 ---- int helical_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { helical_f (x, params, f); *************** *** 615,619 **** } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 615,619 ---- } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 649,653 **** } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 649,653 ---- } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 656,660 **** int dbv_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { dbv_f (x, params, f); --- 656,660 ---- int dbv_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { dbv_f (x, params, f); *************** *** 702,706 **** } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 702,706 ---- } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 729,733 **** } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; --- 729,733 ---- } ! params = 0; /* avoid warning about unused parameters */ return GSL_SUCCESS; *************** *** 736,740 **** int trig_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { trig_f (x, params, f); --- 736,740 ---- int trig_fdf (const gsl_vector * x, void *params, ! gsl_vector * f, gsl_matrix * df) { trig_f (x, params, f); diff -x.info* -rc2P gsl-1.3/multiroots/test_funcs.h gsl-1.4/multiroots/test_funcs.h *** gsl-1.3/multiroots/test_funcs.h Wed Apr 18 21:52:54 2001 --- gsl-1.4/multiroots/test_funcs.h Fri Jul 25 15:18:21 2003 *************** *** 25,29 **** int rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f); int rosenbrock_df (const gsl_vector * x, void *params, gsl_matrix * df); ! int rosenbrock_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); extern gsl_multiroot_function_fdf roth; --- 25,29 ---- int rosenbrock_f (const gsl_vector * x, void *params, gsl_vector * f); int rosenbrock_df (const gsl_vector * x, void *params, gsl_matrix * df); ! int rosenbrock_fdf (const gsl_vector * x, void *params, gsl_vector * f, gsl_matrix * df); extern gsl_multiroot_function_fdf roth; diff -x.info* -rc2P gsl-1.3/ntuple/Makefile.am gsl-1.4/ntuple/Makefile.am *** gsl-1.3/ntuple/Makefile.am Fri Jul 19 19:48:46 2002 --- gsl-1.4/ntuple/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 12,22 **** test_SOURCES = test.c ! test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #demo_SOURCES = demo.c ! #demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #demo1_SOURCES = demo1.c ! #demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la CLEANFILES = test.dat --- 12,22 ---- test_SOURCES = test.c ! test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #demo_SOURCES = demo.c ! #demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #demo1_SOURCES = demo1.c ! #demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la CLEANFILES = test.dat diff -x.info* -rc2P gsl-1.3/ntuple/Makefile.in gsl-1.4/ntuple/Makefile.in *** gsl-1.3/ntuple/Makefile.in Wed Dec 18 22:40:53 2002 --- gsl-1.4/ntuple/Makefile.in Thu Aug 14 12:29:10 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslntuple.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslntuple.la *************** *** 98,199 **** test_SOURCES = test.c ! test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #demo_SOURCES = demo.c ! #demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #demo1_SOURCES = demo1.c ! #demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! CLEANFILES = test.dat mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslntuple_la_LDFLAGS = ! libgslntuple_la_LIBADD = ! libgslntuple_la_OBJECTS = ntuple.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslntuple.la ../histogram/libgslhistogram.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslntuple_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps ntuple/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 154,247 ---- test_SOURCES = test.c ! test_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! #demo_SOURCES = demo.c ! #demo_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #demo1_SOURCES = demo1.c ! #demo1_LDADD = libgslntuple.la ../histogram/libgslhistogram.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la CLEANFILES = test.dat + subdir = ntuple + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslntuple_la_LDFLAGS = ! libgslntuple_la_LIBADD = ! am_libgslntuple_la_OBJECTS = ntuple.lo ! libgslntuple_la_OBJECTS = $(am_libgslntuple_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslntuple.la ../histogram/libgslhistogram.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) Makefile.am Makefile.in SOURCES = $(libgslntuple_la_SOURCES) $(test_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu ntuple/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslntuple.la: $(libgslntuple_la_OBJECTS) $(libgslntuple_la_DEPENDENCIES) + $(LINK) $(libgslntuple_la_LDFLAGS) $(libgslntuple_la_OBJECTS) $(libgslntuple_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 204,340 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslntuple.la: $(libgslntuple_la_OBJECTS) $(libgslntuple_la_DEPENDENCIES) ! $(LINK) $(libgslntuple_la_LDFLAGS) $(libgslntuple_la_OBJECTS) $(libgslntuple_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = ntuple distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 252,456 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 344,393 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 460,526 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/ntuple/ntuple.c gsl-1.4/ntuple/ntuple.c *** gsl-1.3/ntuple/ntuple.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/ntuple/ntuple.c Fri Jul 25 15:18:13 2003 *************** *** 33,42 **** gsl_ntuple_create (char *filename, void *ntuple_data, size_t size) { ! gsl_ntuple *ntuple = malloc (sizeof (gsl_ntuple)); if (ntuple == 0) { GSL_ERROR_VAL ("failed to allocate space for ntuple struct", ! GSL_ENOMEM, 0); } --- 33,42 ---- gsl_ntuple_create (char *filename, void *ntuple_data, size_t size) { ! gsl_ntuple *ntuple = (gsl_ntuple *)malloc (sizeof (gsl_ntuple)); if (ntuple == 0) { GSL_ERROR_VAL ("failed to allocate space for ntuple struct", ! GSL_ENOMEM, 0); } *************** *** 63,72 **** gsl_ntuple_open (char *filename, void *ntuple_data, size_t size) { ! gsl_ntuple *ntuple = malloc (sizeof (gsl_ntuple)); if (ntuple == 0) { GSL_ERROR_VAL ("failed to allocate space for ntuple struct", ! GSL_ENOMEM, 0); } --- 63,72 ---- gsl_ntuple_open (char *filename, void *ntuple_data, size_t size) { ! gsl_ntuple *ntuple = (gsl_ntuple *)malloc (sizeof (gsl_ntuple)); if (ntuple == 0) { GSL_ERROR_VAL ("failed to allocate space for ntuple struct", ! GSL_ENOMEM, 0); } *************** *** 97,101 **** nwrite = fwrite (ntuple->ntuple_data, ntuple->size, ! 1, ntuple->file); if (nwrite != 1) --- 97,101 ---- nwrite = fwrite (ntuple->ntuple_data, ntuple->size, ! 1, ntuple->file); if (nwrite != 1) *************** *** 168,178 **** if (nread != 1) { ! GSL_ERROR ("failed to read ntuple for projection", GSL_EFAILED); ! } if (EVAL(select_func, ntuple->ntuple_data)) ! { ! gsl_histogram_increment (h, EVAL(value_func, ntuple->ntuple_data)); ! } } while (1); --- 168,178 ---- if (nread != 1) { ! GSL_ERROR ("failed to read ntuple for projection", GSL_EFAILED); ! } if (EVAL(select_func, ntuple->ntuple_data)) ! { ! gsl_histogram_increment (h, EVAL(value_func, ntuple->ntuple_data)); ! } } while (1); diff -x.info* -rc2P gsl-1.3/ntuple/test.c gsl-1.4/ntuple/test.c *** gsl-1.3/ntuple/test.c Tue Jun 26 11:45:25 2001 --- gsl-1.4/ntuple/test.c Sat Jul 26 17:31:05 2003 *************** *** 3,6 **** --- 3,7 ---- #include #include + #include struct data *************** *** 27,30 **** --- 28,33 ---- double scale = 1.5; + gsl_ieee_env_setup (); + S.function = &sel_func; S.params = &scale; *************** *** 110,113 **** --- 113,118 ---- gsl_ntuple_project (h, ntuple, &V, &S); + + gsl_ntuple_close (ntuple); /* gsl_histogram_fprintf (stdout, h, "%f", "%f"); */ diff -x.info* -rc2P gsl-1.3/ode-initval/Makefile.am gsl-1.4/ode-initval/Makefile.am *** gsl-1.3/ode-initval/Makefile.am Sat Aug 3 18:03:16 2002 --- gsl-1.4/ode-initval/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 13,17 **** TESTS = test ! test_LDADD = libgslodeiv.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../utils/libutils.la test_SOURCES = test.c --- 13,17 ---- TESTS = test ! test_LDADD = libgslodeiv.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/ode-initval/Makefile.in gsl-1.4/ode-initval/Makefile.in *** gsl-1.3/ode-initval/Makefile.in Wed Dec 18 22:40:11 2002 --- gsl-1.4/ode-initval/Makefile.in Thu Aug 14 12:29:29 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslodeiv.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslodeiv.la *************** *** 99,198 **** TESTS = test ! test_LDADD = libgslodeiv.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslodeiv_la_LDFLAGS = ! libgslodeiv_la_LIBADD = ! libgslodeiv_la_OBJECTS = control.lo cstd.lo cscal.lo evolve.lo step.lo \ ! rk2.lo rk2imp.lo rk4.lo rk4imp.lo rkf45.lo rk8pd.lo rkck.lo bsimp.lo \ ! gear1.lo gear2.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslodeiv.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la \ ! ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la \ ! ../vector/libgslvector.la ../block/libgslblock.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslodeiv_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps ode-initval/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,248 ---- TESTS = test ! test_LDADD = libgslodeiv.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../linalg/libgsllinalg.la ../blas/libgslblas.la ../cblas/libgslcblas.la ../matrix/libgslmatrix.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../complex/libgslcomplex.la ../utils/libutils.la test_SOURCES = test.c + subdir = ode-initval + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslodeiv_la_LDFLAGS = ! libgslodeiv_la_LIBADD = ! am_libgslodeiv_la_OBJECTS = control.lo cstd.lo cscal.lo evolve.lo \ ! step.lo rk2.lo rk2imp.lo rk4.lo rk4imp.lo rkf45.lo rk8pd.lo \ ! rkck.lo bsimp.lo gear1.lo gear2.lo ! libgslodeiv_la_OBJECTS = $(am_libgslodeiv_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslodeiv.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../linalg/libgsllinalg.la ../blas/libgslblas.la \ ! ../cblas/libgslcblas.la ../matrix/libgslmatrix.la \ ! ../permutation/libgslpermutation.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../complex/libgslcomplex.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslodeiv_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu ode-initval/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslodeiv.la: $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_DEPENDENCIES) + $(LINK) $(libgslodeiv_la_LDFLAGS) $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 203,339 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslodeiv.la: $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_DEPENDENCIES) ! $(LINK) $(libgslodeiv_la_LDFLAGS) $(libgslodeiv_la_OBJECTS) $(libgslodeiv_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = ode-initval distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 253,457 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 342,391 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 460,526 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/ode-initval/bsimp.c gsl-1.4/ode-initval/bsimp.c *** gsl-1.3/ode-initval/bsimp.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/bsimp.c Fri Jul 25 15:18:13 2003 *************** *** 44,52 **** typedef struct { ! gsl_matrix *d; /* workspace for extrapolation */ ! gsl_matrix *a_mat; /* workspace for linear system matrix */ ! gsl_permutation *p_vec; /* workspace for LU permutation */ ! double x[SEQUENCE_MAX]; /* workspace for extrapolation */ /* state info */ --- 44,52 ---- typedef struct { ! gsl_matrix *d; /* workspace for extrapolation */ ! gsl_matrix *a_mat; /* workspace for linear system matrix */ ! gsl_permutation *p_vec; /* workspace for LU permutation */ ! double x[SEQUENCE_MAX]; /* workspace for extrapolation */ /* state info */ *************** *** 115,123 **** alpha[i][i] = 1.0; for (k = 0; k < i; k++) ! { ! const double tmp1 = a_work[k + 1] - a_work[i + 1]; ! const double tmp2 = (a_work[i + 1] - a_work[0] + 1.0) * (2 * k + 1); ! alpha[k][i] = pow (small_eps, tmp1 / tmp2); ! } } --- 115,123 ---- alpha[i][i] = 1.0; for (k = 0; k < i; k++) ! { ! const double tmp1 = a_work[k + 1] - a_work[i + 1]; ! const double tmp2 = (a_work[i + 1] - a_work[0] + 1.0) * (2 * k + 1); ! alpha[k][i] = pow (small_eps, tmp1 / tmp2); ! } } *************** *** 132,136 **** { if (a_work[k + 2] > a_work[k + 1] * alpha[k][k + 1]) ! break; } --- 132,136 ---- { if (a_work[k + 2] > a_work[k + 1] * alpha[k][k + 1]) ! break; } *************** *** 140,148 **** static void poly_extrap (gsl_matrix * d, ! const double x[], ! const unsigned int i_step, ! const double x_i, ! const double y_i[], ! double y_0[], double y_0_err[], double work[], const size_t dim) { size_t j, k; --- 140,148 ---- static void poly_extrap (gsl_matrix * d, ! const double x[], ! const unsigned int i_step, ! const double x_i, ! const double y_i[], ! double y_0[], double y_0_err[], double work[], const size_t dim) { size_t j, k; *************** *** 154,160 **** { for (j = 0; j < dim; j++) ! { ! gsl_matrix_set (d, 0, j, y_i[j]); ! } } else --- 154,160 ---- { for (j = 0; j < dim; j++) ! { ! gsl_matrix_set (d, 0, j, y_i[j]); ! } } else *************** *** 163,186 **** for (k = 0; k < i_step; k++) ! { ! double delta = 1.0 / (x[i_step - k - 1] - x_i); ! const double f1 = delta * x_i; ! const double f2 = delta * x[i_step - k - 1]; ! ! for (j = 0; j < dim; j++) ! { ! const double q_kj = gsl_matrix_get (d, k, j); ! gsl_matrix_set (d, k, j, y_0_err[j]); ! delta = work[j] - q_kj; ! y_0_err[j] = f1 * delta; ! work[j] = f2 * delta; ! y_0[j] += y_0_err[j]; ! } ! } for (j = 0; j < dim; j++) ! { ! gsl_matrix_set (d, i_step, j, y_0_err[j]); ! } } } --- 163,186 ---- for (k = 0; k < i_step; k++) ! { ! double delta = 1.0 / (x[i_step - k - 1] - x_i); ! const double f1 = delta * x_i; ! const double f2 = delta * x[i_step - k - 1]; ! ! for (j = 0; j < dim; j++) ! { ! const double q_kj = gsl_matrix_get (d, k, j); ! gsl_matrix_set (d, k, j, y_0_err[j]); ! delta = work[j] - q_kj; ! y_0_err[j] = f1 * delta; ! work[j] = f2 * delta; ! y_0[j] += y_0_err[j]; ! } ! } for (j = 0; j < dim; j++) ! { ! gsl_matrix_set (d, i_step, j, y_0_err[j]); ! } } } *************** *** 192,204 **** static int bsimp_step_local (void *vstate, ! size_t dim, ! const double t0, ! const double h_total, ! const unsigned int n_step, ! const double y[], ! const double yp[], ! const double dfdt[], ! const gsl_matrix * dfdy, ! double y_out[], const gsl_odeiv_system * sys) { --- 192,204 ---- static int bsimp_step_local (void *vstate, ! size_t dim, ! const double t0, ! const double h_total, ! const unsigned int n_step, ! const double y[], ! const double yp[], ! const double dfdt[], ! const gsl_matrix * dfdy, ! double y_out[], const gsl_odeiv_system * sys) { *************** *** 238,244 **** { for (j = 0; j < dim; j++) ! { ! gsl_matrix_set (a_mat, i, j, -h * gsl_matrix_get (dfdy, i, j)); ! } gsl_matrix_set (a_mat, i, i, gsl_matrix_get (a_mat, i, i) + 1.0); } --- 238,244 ---- { for (j = 0; j < dim; j++) ! { ! gsl_matrix_set (a_mat, i, j, -h * gsl_matrix_get (dfdy, i, j)); ! } gsl_matrix_set (a_mat, i, i, gsl_matrix_get (a_mat, i, i) + 1.0); } *************** *** 283,289 **** { for (i = 0; i < dim; i++) ! { ! rhs_temp[i] = h * y_out[i] - delta[i]; ! } gsl_linalg_LU_solve (a_mat, p_vec, &rhs_temp_vec.vector, &delta_temp_vec.vector); --- 283,289 ---- { for (i = 0; i < dim; i++) ! { ! rhs_temp[i] = h * y_out[i] - delta[i]; ! } gsl_linalg_LU_solve (a_mat, p_vec, &rhs_temp_vec.vector, &delta_temp_vec.vector); *************** *** 292,300 **** for (i = 0; i < dim; i++) ! { ! delta[i] += 2.0 * delta_temp[i]; ! y_temp[i] += delta[i]; sum += fabs(delta[i]) / w[i]; ! } if (sum > max_sum) --- 292,300 ---- for (i = 0; i < dim; i++) ! { ! delta[i] += 2.0 * delta_temp[i]; ! y_temp[i] += delta[i]; sum += fabs(delta[i]) / w[i]; ! } if (sum > max_sum) *************** *** 401,405 **** if (h + t_local == t_local) { ! return GSL_EUNDRFLW; /* FIXME: error condition */ } --- 401,405 ---- if (h + t_local == t_local) { ! return GSL_EUNDRFLW; /* FIXME: error condition */ } *************** *** 510,516 **** static const gsl_odeiv_step_type bsimp_type = { ! "bsimp", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &bsimp_alloc, &bsimp_apply, --- 510,516 ---- static const gsl_odeiv_step_type bsimp_type = { ! "bsimp", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &bsimp_alloc, &bsimp_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/control.c gsl-1.4/ode-initval/control.c *** gsl-1.3/ode-initval/control.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/control.c Fri Jul 25 15:18:13 2003 *************** *** 43,47 **** if (c->state == 0) { ! free (c); /* exception in constructor, avoid memory leak */ GSL_ERROR_NULL ("failed to allocate space for control state", --- 43,47 ---- if (c->state == 0) { ! free (c); /* exception in constructor, avoid memory leak */ GSL_ERROR_NULL ("failed to allocate space for control state", diff -x.info* -rc2P gsl-1.3/ode-initval/cscal.c gsl-1.4/ode-initval/cscal.c *** gsl-1.3/ode-initval/cscal.c Fri Jul 26 22:08:29 2002 --- gsl-1.4/ode-initval/cscal.c Fri Jul 25 15:18:13 2003 *************** *** 20,23 **** --- 20,24 ---- #include #include + #include #include #include *************** *** 148,152 **** static const gsl_odeiv_control_type sc_control_type = ! {"scaled", /* name */ &sc_control_alloc, &sc_control_init, --- 149,153 ---- static const gsl_odeiv_control_type sc_control_type = ! {"scaled", /* name */ &sc_control_alloc, &sc_control_init, *************** *** 177,181 **** sc_control_state_t * s = (sc_control_state_t *) c->state; ! s->scale_abs = malloc(dim * sizeof(double)); if (s->scale_abs == 0) --- 178,182 ---- sc_control_state_t * s = (sc_control_state_t *) c->state; ! s->scale_abs = (double *)malloc(dim * sizeof(double)); if (s->scale_abs == 0) diff -x.info* -rc2P gsl-1.3/ode-initval/cstd.c gsl-1.4/ode-initval/cstd.c *** gsl-1.3/ode-initval/cstd.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/cstd.c Fri Jul 25 15:18:13 2003 *************** *** 144,148 **** static const gsl_odeiv_control_type std_control_type = ! {"standard", /* name */ &std_control_alloc, &std_control_init, --- 144,148 ---- static const gsl_odeiv_control_type std_control_type = ! {"standard", /* name */ &std_control_alloc, &std_control_init, diff -x.info* -rc2P gsl-1.3/ode-initval/evolve.c gsl-1.4/ode-initval/evolve.c *** gsl-1.3/ode-initval/evolve.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/evolve.c Fri Jul 25 15:18:13 2003 *************** *** 38,42 **** { GSL_ERROR_NULL ("failed to allocate space for evolve struct", ! GSL_ENOMEM); } --- 38,42 ---- { GSL_ERROR_NULL ("failed to allocate space for evolve struct", ! GSL_ENOMEM); } *************** *** 112,119 **** int gsl_odeiv_evolve_apply (gsl_odeiv_evolve * e, ! gsl_odeiv_control * con, ! gsl_odeiv_step * step, ! const gsl_odeiv_system * dydt, ! double *t, double t1, double *h, double y[]) { const double t0 = *t; --- 112,119 ---- int gsl_odeiv_evolve_apply (gsl_odeiv_evolve * e, ! gsl_odeiv_control * con, ! gsl_odeiv_step * step, ! const gsl_odeiv_system * dydt, ! double *t, double t1, double *h, double y[]) { const double t0 = *t; *************** *** 162,173 **** { step_status = ! gsl_odeiv_step_apply (step, t0, h0, y, e->yerr, e->dydt_in, ! e->dydt_out, dydt); } else { step_status = ! gsl_odeiv_step_apply (step, t0, h0, y, e->yerr, NULL, e->dydt_out, ! dydt); } --- 162,173 ---- { step_status = ! gsl_odeiv_step_apply (step, t0, h0, y, e->yerr, e->dydt_in, ! e->dydt_out, dydt); } else { step_status = ! gsl_odeiv_step_apply (step, t0, h0, y, e->yerr, NULL, e->dydt_out, ! dydt); } *************** *** 191,200 **** if (hadjust_status == GSL_ODEIV_HADJ_DEC) ! { ! /* Step was decreased. Undo and go back to try again. */ ! DBL_MEMCPY (y, e->y0, dydt->dimension); e->failed_steps++; ! goto try_step; ! } } --- 191,200 ---- if (hadjust_status == GSL_ODEIV_HADJ_DEC) ! { ! /* Step was decreased. Undo and go back to try again. */ ! DBL_MEMCPY (y, e->y0, dydt->dimension); e->failed_steps++; ! goto try_step; ! } } diff -x.info* -rc2P gsl-1.3/ode-initval/gear1.c gsl-1.4/ode-initval/gear1.c *** gsl-1.3/ode-initval/gear1.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/gear1.c Fri Jul 25 15:18:13 2003 *************** *** 142,148 **** } ! static const gsl_odeiv_step_type gear1_type = { "gear1", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &gear1_alloc, &gear1_apply, --- 142,148 ---- } ! static const gsl_odeiv_step_type gear1_type = { "gear1", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &gear1_alloc, &gear1_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/gear2.c gsl-1.4/ode-initval/gear2.c *** gsl-1.3/ode-initval/gear2.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/gear2.c Fri Jul 25 15:18:13 2003 *************** *** 204,210 **** } ! static const gsl_odeiv_step_type gear2_type = { "gear2", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &gear2_alloc, &gear2_apply, --- 204,210 ---- } ! static const gsl_odeiv_step_type gear2_type = { "gear2", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &gear2_alloc, &gear2_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rk2.c gsl-1.4/ode-initval/rk2.c *** gsl-1.3/ode-initval/rk2.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/rk2.c Fri Jul 25 15:18:13 2003 *************** *** 93,103 **** static int rk2_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { --- 93,103 ---- static int rk2_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { *************** *** 154,158 **** yerr[i] = h * (k2[i] - ksum3); if (dydt_out) ! dydt_out[i] = ksum3; } --- 154,158 ---- yerr[i] = h * (k2[i] - ksum3); if (dydt_out) ! dydt_out[i] = ksum3; } *************** *** 192,198 **** } ! static const gsl_odeiv_step_type rk2_type = { "rk2", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk2_alloc, &rk2_apply, --- 192,198 ---- } ! static const gsl_odeiv_step_type rk2_type = { "rk2", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk2_alloc, &rk2_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rk2imp.c gsl-1.4/ode-initval/rk2imp.c *** gsl-1.3/ode-initval/rk2imp.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/rk2imp.c Fri Jul 25 15:18:13 2003 *************** *** 46,50 **** { GSL_ERROR_NULL ("failed to allocate space for rk2imp_state", ! GSL_ENOMEM); } --- 46,50 ---- { GSL_ERROR_NULL ("failed to allocate space for rk2imp_state", ! GSL_ENOMEM); } *************** *** 72,82 **** static int rk2imp_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rk2imp_state_t *state = (rk2imp_state_t *) vstate; --- 72,82 ---- static int rk2imp_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rk2imp_state_t *state = (rk2imp_state_t *) vstate; *************** *** 105,114 **** { for (i = 0; i < dim; i++) ! { ! ytmp[i] = y[i] + 0.5 * h * knu[i]; ! } { ! int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, knu); ! GSL_STATUS_UPDATE (&status, s); } } --- 105,114 ---- { for (i = 0; i < dim; i++) ! { ! ytmp[i] = y[i] + 0.5 * h * knu[i]; ! } { ! int s = GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h, ytmp, knu); ! GSL_STATUS_UPDATE (&status, s); } } *************** *** 120,124 **** yerr[i] = h * h * knu[i]; if (dydt_out != NULL) ! dydt_out[i] = knu[i]; } --- 120,124 ---- yerr[i] = h * h * knu[i]; if (dydt_out != NULL) ! dydt_out[i] = knu[i]; } *************** *** 155,161 **** } ! static const gsl_odeiv_step_type rk2imp_type = { "rk2imp", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk2imp_alloc, &rk2imp_apply, --- 155,161 ---- } ! static const gsl_odeiv_step_type rk2imp_type = { "rk2imp", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk2imp_alloc, &rk2imp_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rk4.c gsl-1.4/ode-initval/rk4.c *** gsl-1.3/ode-initval/rk4.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/rk4.c Fri Jul 25 15:18:13 2003 *************** *** 81,91 **** static int rk4_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { --- 81,91 ---- static int rk4_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { *************** *** 119,123 **** for (i = 0; i < dim; i++) { ! y[i] = h / 6.0 * k[i]; /* use y[] to store delta_y */ ytmp[i] = y0[i] + 0.5 * h * k[i]; } --- 119,123 ---- for (i = 0; i < dim; i++) { ! y[i] = h / 6.0 * k[i]; /* use y[] to store delta_y */ ytmp[i] = y0[i] + 0.5 * h * k[i]; } *************** *** 159,163 **** y[i] += y0[i]; if (dydt_out != NULL) ! dydt_out[i] = k[i]; } --- 159,163 ---- y[i] += y0[i]; if (dydt_out != NULL) ! dydt_out[i] = k[i]; } *************** *** 195,201 **** } ! static const gsl_odeiv_step_type rk4_type = { "rk4", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk4_alloc, &rk4_apply, --- 195,201 ---- } ! static const gsl_odeiv_step_type rk4_type = { "rk4", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk4_alloc, &rk4_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rk4imp.c gsl-1.4/ode-initval/rk4imp.c *** gsl-1.3/ode-initval/rk4imp.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/rk4imp.c Fri Jul 25 15:18:13 2003 *************** *** 48,52 **** { GSL_ERROR_NULL ("failed to allocate space for rk4imp_state", ! GSL_ENOMEM); } --- 48,52 ---- { GSL_ERROR_NULL ("failed to allocate space for rk4imp_state", ! GSL_ENOMEM); } *************** *** 95,105 **** static int rk4imp_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { --- 95,105 ---- static int rk4imp_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { *************** *** 134,152 **** { for (i = 0; i < dim; i++) ! { ! ytmp1[i] = ! y[i] + h * (0.25 * k1nu[i] + 0.5 * (0.5 - ir3) * k2nu[i]); ! ytmp2[i] = ! y[i] + h * (0.25 * k2nu[i] + 0.5 * (0.5 + ir3) * k1nu[i]); ! } { ! int s = ! GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h * (1.0 - ir3), ytmp1, k1nu); ! GSL_STATUS_UPDATE (&status, s); } { ! int s = ! GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h * (1.0 + ir3), ytmp2, k2nu); ! GSL_STATUS_UPDATE (&status, s); } } --- 134,152 ---- { for (i = 0; i < dim; i++) ! { ! ytmp1[i] = ! y[i] + h * (0.25 * k1nu[i] + 0.5 * (0.5 - ir3) * k2nu[i]); ! ytmp2[i] = ! y[i] + h * (0.25 * k2nu[i] + 0.5 * (0.5 + ir3) * k1nu[i]); ! } { ! int s = ! GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h * (1.0 - ir3), ytmp1, k1nu); ! GSL_STATUS_UPDATE (&status, s); } { ! int s = ! GSL_ODEIV_FN_EVAL (sys, t + 0.5 * h * (1.0 + ir3), ytmp2, k2nu); ! GSL_STATUS_UPDATE (&status, s); } } *************** *** 157,163 **** const double d_i = 0.5 * (k1nu[i] + k2nu[i]); if (dydt_out != NULL) ! dydt_out[i] = d_i; y[i] += h * d_i; ! yerr[i] = h * h * d_i; /* FIXME: is this an overestimate ? */ } --- 157,163 ---- const double d_i = 0.5 * (k1nu[i] + k2nu[i]); if (dydt_out != NULL) ! dydt_out[i] = d_i; y[i] += h * d_i; ! yerr[i] = h * h * d_i; /* FIXME: is this an overestimate ? */ } *************** *** 197,203 **** } ! static const gsl_odeiv_step_type rk4imp_type = { "rk4imp", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk4imp_alloc, &rk4imp_apply, --- 197,203 ---- } ! static const gsl_odeiv_step_type rk4imp_type = { "rk4imp", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk4imp_alloc, &rk4imp_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rk8pd.c gsl-1.4/ode-initval/rk8pd.c *** gsl-1.3/ode-initval/rk8pd.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/rk8pd.c Fri Jul 25 15:18:13 2003 *************** *** 190,202 **** if (state->k[i] == 0) ! { ! for (j = 0; j < i; j++) ! { ! free (state->k[j]); ! } ! free (state->ytmp); ! free (state); ! GSL_ERROR_NULL ("failed to allocate space for k's", GSL_ENOMEM); ! } } --- 190,202 ---- if (state->k[i] == 0) ! { ! for (j = 0; j < i; j++) ! { ! free (state->k[j]); ! } ! free (state->ytmp); ! free (state); ! GSL_ERROR_NULL ("failed to allocate space for k's", GSL_ENOMEM); ! } } *************** *** 207,217 **** static int rk8pd_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rk8pd_state_t *state = (rk8pd_state_t *) vstate; --- 207,217 ---- static int rk8pd_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rk8pd_state_t *state = (rk8pd_state_t *) vstate; *************** *** 290,294 **** ytmp[i] = y[i] + h * (b7[0] * k1[i] + b7[3] * k4[i] + b7[4] * k5[i] + ! b7[5] * k6[i]); /* k7 step */ --- 290,294 ---- ytmp[i] = y[i] + h * (b7[0] * k1[i] + b7[3] * k4[i] + b7[4] * k5[i] + ! b7[5] * k6[i]); /* k7 step */ *************** *** 300,304 **** ytmp[i] = y[i] + h * (b8[0] * k1[i] + b8[3] * k4[i] + b8[4] * k5[i] + ! b8[5] * k6[i] + b8[6] * k7[i]); /* k8 step */ --- 300,304 ---- ytmp[i] = y[i] + h * (b8[0] * k1[i] + b8[3] * k4[i] + b8[4] * k5[i] + ! b8[5] * k6[i] + b8[6] * k7[i]); /* k8 step */ *************** *** 310,314 **** ytmp[i] = y[i] + h * (b9[0] * k1[i] + b9[3] * k4[i] + b9[4] * k5[i] + ! b9[5] * k6[i] + b9[6] * k7[i] + b9[7] * k8[i]); /* k9 step */ --- 310,314 ---- ytmp[i] = y[i] + h * (b9[0] * k1[i] + b9[3] * k4[i] + b9[4] * k5[i] + ! b9[5] * k6[i] + b9[6] * k7[i] + b9[7] * k8[i]); /* k9 step */ *************** *** 320,325 **** ytmp[i] = y[i] + h * (b10[0] * k1[i] + b10[3] * k4[i] + b10[4] * k5[i] + ! b10[5] * k6[i] + b10[6] * k7[i] + b10[7] * k8[i] + ! b10[8] * k9[i]); /* k10 step */ --- 320,325 ---- ytmp[i] = y[i] + h * (b10[0] * k1[i] + b10[3] * k4[i] + b10[4] * k5[i] + ! b10[5] * k6[i] + b10[6] * k7[i] + b10[7] * k8[i] + ! b10[8] * k9[i]); /* k10 step */ *************** *** 331,336 **** ytmp[i] = y[i] + h * (b11[0] * k1[i] + b11[3] * k4[i] + b11[4] * k5[i] + ! b11[5] * k6[i] + b11[6] * k7[i] + b11[7] * k8[i] + ! b11[8] * k9[i] + b11[9] * k10[i]); /* k11 step */ --- 331,336 ---- ytmp[i] = y[i] + h * (b11[0] * k1[i] + b11[3] * k4[i] + b11[4] * k5[i] + ! b11[5] * k6[i] + b11[6] * k7[i] + b11[7] * k8[i] + ! b11[8] * k9[i] + b11[9] * k10[i]); /* k11 step */ *************** *** 342,347 **** ytmp[i] = y[i] + h * (b12[0] * k1[i] + b12[3] * k4[i] + b12[4] * k5[i] + ! b12[5] * k6[i] + b12[6] * k7[i] + b12[7] * k8[i] + ! b12[8] * k9[i] + b12[9] * k10[i] + b12[10] * k11[i]); /* k12 step */ --- 342,347 ---- ytmp[i] = y[i] + h * (b12[0] * k1[i] + b12[3] * k4[i] + b12[4] * k5[i] + ! b12[5] * k6[i] + b12[6] * k7[i] + b12[7] * k8[i] + ! b12[8] * k9[i] + b12[9] * k10[i] + b12[10] * k11[i]); /* k12 step */ *************** *** 353,359 **** ytmp[i] = y[i] + h * (b13[0] * k1[i] + b13[3] * k4[i] + b13[4] * k5[i] + ! b13[5] * k6[i] + b13[6] * k7[i] + b13[7] * k8[i] + ! b13[8] * k9[i] + b13[9] * k10[i] + b13[10] * k11[i] + ! b13[11] * k12[i]); /* k13 step */ --- 353,359 ---- ytmp[i] = y[i] + h * (b13[0] * k1[i] + b13[3] * k4[i] + b13[4] * k5[i] + ! b13[5] * k6[i] + b13[6] * k7[i] + b13[7] * k8[i] + ! b13[8] * k9[i] + b13[9] * k10[i] + b13[10] * k11[i] + ! b13[11] * k12[i]); /* k13 step */ *************** *** 367,380 **** { const double ksum8 = ! Abar[0] * k1[i] + Abar[5] * k6[i] + Abar[6] * k7[i] + ! Abar[7] * k8[i] + Abar[8] * k9[i] + Abar[9] * k10[i] + ! Abar[10] * k11[i] + Abar[11] * k12[i] + Abar[12] * k13[i]; const double ksum7 = ! A[0] * k1[i] + A[5] * k6[i] + A[6] * k7[i] + A[7] * k8[i] + ! A[8] * k9[i] + A[9] * k10[i] + A[10] * k11[i] + A[11] * k12[i]; y[i] += h * ksum8; yerr[i] = h * (ksum7 - ksum8); if (dydt_out != NULL) ! dydt_out[i] = ksum8; } --- 367,380 ---- { const double ksum8 = ! Abar[0] * k1[i] + Abar[5] * k6[i] + Abar[6] * k7[i] + ! Abar[7] * k8[i] + Abar[8] * k9[i] + Abar[9] * k10[i] + ! Abar[10] * k11[i] + Abar[11] * k12[i] + Abar[12] * k13[i]; const double ksum7 = ! A[0] * k1[i] + A[5] * k6[i] + A[6] * k7[i] + A[7] * k8[i] + ! A[8] * k9[i] + A[9] * k10[i] + A[10] * k11[i] + A[11] * k12[i]; y[i] += h * ksum8; yerr[i] = h * (ksum7 - ksum8); if (dydt_out != NULL) ! dydt_out[i] = ksum8; } *************** *** 421,427 **** } ! static const gsl_odeiv_step_type rk8pd_type = { "rk8pd", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk8pd_alloc, &rk8pd_apply, --- 421,427 ---- } ! static const gsl_odeiv_step_type rk8pd_type = { "rk8pd", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rk8pd_alloc, &rk8pd_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rkck.c gsl-1.4/ode-initval/rkck.c *** gsl-1.3/ode-initval/rkck.c Mon Nov 19 21:39:32 2001 --- gsl-1.4/ode-initval/rkck.c Fri Jul 25 15:18:13 2003 *************** *** 177,187 **** static int rkck_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rkck_state_t *state = (rkck_state_t *) vstate; --- 177,187 ---- static int rkck_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rkck_state_t *state = (rkck_state_t *) vstate; *************** *** 236,240 **** ytmp[i] = y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + ! b5[3] * k4[i]); /* k5 step */ --- 236,240 ---- ytmp[i] = y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + ! b5[3] * k4[i]); /* k5 step */ *************** *** 246,250 **** ytmp[i] = y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + ! b6[3] * k4[i] + b6[4] * k5[i]); /* k6 step and final sum */ --- 246,250 ---- ytmp[i] = y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + ! b6[3] * k4[i] + b6[4] * k5[i]); /* k6 step and final sum */ *************** *** 259,263 **** y[i] += h * d_i; if (dydt_out != NULL) ! dydt_out[i] = d_i; } --- 259,263 ---- y[i] += h * d_i; if (dydt_out != NULL) ! dydt_out[i] = d_i; } *************** *** 266,270 **** yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + ec[5] * k5[i] + ! ec[6] * k6[i]); return status; --- 266,270 ---- yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + ec[5] * k5[i] + ! ec[6] * k6[i]); return status; *************** *** 312,318 **** } ! static const gsl_odeiv_step_type rkck_type = { "rkck", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rkck_alloc, &rkck_apply, --- 312,318 ---- } ! static const gsl_odeiv_step_type rkck_type = { "rkck", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rkck_alloc, &rkck_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/rkf45.c gsl-1.4/ode-initval/rkf45.c *** gsl-1.3/ode-initval/rkf45.c Mon Nov 19 21:39:31 2001 --- gsl-1.4/ode-initval/rkf45.c Fri Jul 25 15:18:13 2003 *************** *** 176,186 **** static int rkf45_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rkf45_state_t *state = (rkf45_state_t *) vstate; --- 176,186 ---- static int rkf45_apply (void *vstate, ! size_t dim, ! double t, ! double h, ! double y[], ! double yerr[], ! const double dydt_in[], ! double dydt_out[], const gsl_odeiv_system * sys) { rkf45_state_t *state = (rkf45_state_t *) vstate; *************** *** 235,239 **** ytmp[i] = y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + ! b5[3] * k4[i]); /* k5 step */ --- 235,239 ---- ytmp[i] = y[i] + h * (b5[0] * k1[i] + b5[1] * k2[i] + b5[2] * k3[i] + ! b5[3] * k4[i]); /* k5 step */ *************** *** 245,249 **** ytmp[i] = y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + ! b6[3] * k4[i] + b6[4] * k5[i]); /* k6 step and final sum */ --- 245,249 ---- ytmp[i] = y[i] + h * (b6[0] * k1[i] + b6[1] * k2[i] + b6[2] * k3[i] + ! b6[3] * k4[i] + b6[4] * k5[i]); /* k6 step and final sum */ *************** *** 258,262 **** y[i] += h * d_i; if (dydt_out != NULL) ! dydt_out[i] = d_i; } --- 258,262 ---- y[i] += h * d_i; if (dydt_out != NULL) ! dydt_out[i] = d_i; } *************** *** 265,269 **** yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + ec[5] * k5[i] + ! ec[6] * k6[i]); return status; --- 265,269 ---- yerr[i] = h * (ec[1] * k1[i] + ec[3] * k3[i] + ec[4] * k4[i] + ec[5] * k5[i] + ! ec[6] * k6[i]); return status; *************** *** 311,317 **** } ! static const gsl_odeiv_step_type rkf45_type = { "rkf45", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rkf45_alloc, &rkf45_apply, --- 311,317 ---- } ! static const gsl_odeiv_step_type rkf45_type = { "rkf45", /* name */ ! 1, /* can use dydt_in */ ! 0, /* gives exact dydt_out */ &rkf45_alloc, &rkf45_apply, diff -x.info* -rc2P gsl-1.3/ode-initval/step.c gsl-1.4/ode-initval/step.c *** gsl-1.3/ode-initval/step.c Mon Nov 19 21:39:31 2001 --- gsl-1.4/ode-initval/step.c Fri Jul 25 15:18:13 2003 *************** *** 42,48 **** if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ ! GSL_ERROR_NULL ("failed to allocate space for ode state", GSL_ENOMEM); }; --- 42,48 ---- if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ ! GSL_ERROR_NULL ("failed to allocate space for ode state", GSL_ENOMEM); }; diff -x.info* -rc2P gsl-1.3/ode-initval/test.c gsl-1.4/ode-initval/test.c *** gsl-1.3/ode-initval/test.c Mon Nov 19 21:39:31 2001 --- gsl-1.4/ode-initval/test.c Fri Jul 25 15:18:13 2003 *************** *** 78,82 **** int jac_linear (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; --- 78,82 ---- int jac_linear (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; *************** *** 115,119 **** int jac_sin (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; --- 115,119 ---- int jac_sin (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; *************** *** 152,156 **** int jac_exp (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; --- 152,156 ---- int jac_exp (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; *************** *** 189,193 **** int jac_stiff (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; --- 189,193 ---- int jac_stiff (double t, const double y[], double *dfdy, double dfdt[], ! void *params) { gsl_matrix dfdy_mat; *************** *** 216,220 **** void test_stepper_linear (const gsl_odeiv_step_type * T, double h, ! double base_prec) { int s = 0; --- 216,220 ---- void test_stepper_linear (const gsl_odeiv_step_type * T, double h, ! double base_prec) { int s = 0; *************** *** 237,250 **** delmax = GSL_MAX_DBL (del, delmax); if (del > (count + 1.0) * base_prec) ! { ! printf (" LINEAR(%20.17g) %20.17g %20.17g %8.4g\n", t + h, y[1], ! t + h, del); ! s++; ! } count++; } gsl_test (s, "%s, linear [0,4], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); --- 237,250 ---- delmax = GSL_MAX_DBL (del, delmax); if (del > (count + 1.0) * base_prec) ! { ! printf (" LINEAR(%20.17g) %20.17g %20.17g %8.4g\n", t + h, y[1], ! t + h, del); ! s++; ! } count++; } gsl_test (s, "%s, linear [0,4], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); *************** *** 276,301 **** delmax = GSL_MAX_DBL (del, delmax); { ! if (t < 0.5 * M_PI) ! { ! stat = (del > (count + 1.0) * base_prec); ! } ! else if (t < 0.7 * M_PI) ! { ! stat = (del > 1.0e+04 * base_prec); ! } ! else if (t < 0.9 * M_PI) ! { ! stat = (del > 1.0e+06 * base_prec); ! } ! else ! { ! stat = (del > 1.0e+09 * base_prec); ! } ! if (stat != 0) ! { ! printf (" SIN(%22.18g) %22.18g %22.18g %10.6g\n", t + h, y[1], ! sin_th, del); ! } ! s += stat; } count++; --- 276,301 ---- delmax = GSL_MAX_DBL (del, delmax); { ! if (t < 0.5 * M_PI) ! { ! stat = (del > (count + 1.0) * base_prec); ! } ! else if (t < 0.7 * M_PI) ! { ! stat = (del > 1.0e+04 * base_prec); ! } ! else if (t < 0.9 * M_PI) ! { ! stat = (del > 1.0e+06 * base_prec); ! } ! else ! { ! stat = (del > 1.0e+09 * base_prec); ! } ! if (stat != 0) ! { ! printf (" SIN(%22.18g) %22.18g %22.18g %10.6g\n", t + h, y[1], ! sin_th, del); ! } ! s += stat; } count++; *************** *** 308,312 **** gsl_test (s, "%s, sine [0,pi], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); delmax = 0.0; --- 308,312 ---- gsl_test (s, "%s, sine [0,pi], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); delmax = 0.0; *************** *** 323,331 **** s++; printf (" SIN(%22.18g) %22.18g %22.18g %10.6g\n", t + h, y[1], ! sin (t), del); } gsl_test (s, "%s, sine [pi,100.5*pi], max absolute error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); --- 323,331 ---- s++; printf (" SIN(%22.18g) %22.18g %22.18g %10.6g\n", t + h, y[1], ! sin (t), del); } gsl_test (s, "%s, sine [pi,100.5*pi], max absolute error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); *************** *** 355,368 **** delmax = GSL_MAX_DBL (del, delmax); if (del > (count + 1.0) * 2.0 * base_prec) ! { ! printf (" EXP(%20.17g) %20.17g %20.17g %8.4g\n", t + h, y[1], ! ex, del); ! s++; ! } count++; } gsl_test (s, "%s, exponential [0,20], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); --- 355,368 ---- delmax = GSL_MAX_DBL (del, delmax); if (del > (count + 1.0) * 2.0 * base_prec) ! { ! printf (" EXP(%20.17g) %20.17g %20.17g %8.4g\n", t + h, y[1], ! ex, del); ! s++; ! } count++; } gsl_test (s, "%s, exponential [0,20], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); *************** *** 387,414 **** { gsl_odeiv_step_apply (stepper, t, h, y, yerr, NULL, NULL, ! &rhs_func_stiff); if (t > 0.04) ! { ! double arg = t + h; ! double e1 = exp (-arg); ! double e2 = exp (-1000.0 * arg); ! double u = 2.0 * e1 - e2; ! /* double v = -e1 + e2; */ ! del = fabs ((y[0] - u) / y[0]); ! delmax = GSL_MAX_DBL (del, delmax); ! ! if (del > (count + 1.0) * 100.0 * base_prec) ! { ! printf (" STIFF(%20.17g) %20.17g %20.17g %8.4g\n", arg, ! y[0], u, del); ! s++; ! } ! } count++; } gsl_test (s, "%s, stiff [0,20], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); --- 387,414 ---- { gsl_odeiv_step_apply (stepper, t, h, y, yerr, NULL, NULL, ! &rhs_func_stiff); if (t > 0.04) ! { ! double arg = t + h; ! double e1 = exp (-arg); ! double e2 = exp (-1000.0 * arg); ! double u = 2.0 * e1 - e2; ! /* double v = -e1 + e2; */ ! del = fabs ((y[0] - u) / y[0]); ! delmax = GSL_MAX_DBL (del, delmax); ! ! if (del > (count + 1.0) * 100.0 * base_prec) ! { ! printf (" STIFF(%20.17g) %20.17g %20.17g %8.4g\n", arg, ! y[0], u, del); ! s++; ! } ! } count++; } gsl_test (s, "%s, stiff [0,20], max relative error = %g", ! gsl_odeiv_step_name (stepper), delmax); gsl_odeiv_step_free (stepper); *************** *** 417,424 **** void test_evolve_system_flat (gsl_odeiv_step * step, ! const gsl_odeiv_system * sys, ! double t0, double t1, double hstart, ! double y[], double yfin[], ! double err_target, const char *desc) { int s = 0; --- 417,424 ---- void test_evolve_system_flat (gsl_odeiv_step * step, ! const gsl_odeiv_system * sys, ! double t0, double t1, double hstart, ! double y[], double yfin[], ! double err_target, const char *desc) { int s = 0; *************** *** 444,448 **** gsl_test (s, "%s, %s, evolve, no control, max relative error = %g", ! gsl_odeiv_step_name (step), desc, frac); gsl_odeiv_evolve_free (e); --- 444,448 ---- gsl_test (s, "%s, %s, evolve, no control, max relative error = %g", ! gsl_odeiv_step_name (step), desc, frac); gsl_odeiv_evolve_free (e); *************** *** 452,459 **** void test_evolve_system (const gsl_odeiv_step_type * T, ! const gsl_odeiv_system * sys, ! double t0, double t1, double hstart, ! double y[], double yfin[], ! double err_target, const char *desc) { int s = 0; --- 452,459 ---- void test_evolve_system (const gsl_odeiv_step_type * T, ! const gsl_odeiv_system * sys, ! double t0, double t1, double hstart, ! double y[], double yfin[], ! double err_target, const char *desc) { int s = 0; *************** *** 484,488 **** gsl_test (s, "%s, %s, evolve, standard control, relative error = %g", ! gsl_odeiv_step_name (step), desc, frac); gsl_odeiv_evolve_free (e); --- 484,488 ---- gsl_test (s, "%s, %s, evolve, standard control, relative error = %g", ! gsl_odeiv_step_name (step), desc, frac); gsl_odeiv_evolve_free (e); diff -x.info* -rc2P gsl-1.3/permutation/ChangeLog gsl-1.4/permutation/ChangeLog *** gsl-1.3/permutation/ChangeLog Sat Apr 6 18:09:49 2002 --- gsl-1.4/permutation/ChangeLog Mon Feb 17 16:10:15 2003 *************** *** 1,2 **** --- 1,7 ---- + 2003-02-17 Brian Gough + + * canonical.c (gsl_permutation_canonical_to_linear): fixed bug + confusing input and output (swapped pp and qq) + Sat Apr 6 19:08:40 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/permutation/Makefile.am gsl-1.4/permutation/Makefile.am *** gsl-1.3/permutation/Makefile.am Wed Apr 3 20:46:44 2002 --- gsl-1.4/permutation/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 15,19 **** test_SOURCES = test.c ! test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la #CLEANFILES = test.txt test.dat --- 15,19 ---- test_SOURCES = test.c ! test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la #CLEANFILES = test.txt test.dat diff -x.info* -rc2P gsl-1.3/permutation/Makefile.in gsl-1.4/permutation/Makefile.in *** gsl-1.3/permutation/Makefile.in Wed Dec 18 22:37:29 2002 --- gsl-1.4/permutation/Makefile.in Thu Aug 14 12:30:54 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslpermutation.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslpermutation.la *************** *** 101,194 **** test_SOURCES = test.c ! test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslpermutation_la_LDFLAGS = ! libgslpermutation_la_LIBADD = ! libgslpermutation_la_OBJECTS = init.lo file.lo permutation.lo \ ! permute.lo canonical.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslpermutation.la ../vector/libgslvector.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslpermutation_la_OBJECTS) $(test_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps permutation/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 157,244 ---- test_SOURCES = test.c ! test_LDADD = libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = permutation ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslpermutation_la_LDFLAGS = ! libgslpermutation_la_LIBADD = ! am_libgslpermutation_la_OBJECTS = init.lo file.lo permutation.lo \ ! permute.lo canonical.lo ! libgslpermutation_la_OBJECTS = $(am_libgslpermutation_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslpermutation.la ../vector/libgslvector.la \ ! ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in SOURCES = $(libgslpermutation_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu permutation/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslpermutation.la: $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_DEPENDENCIES) + $(LINK) $(libgslpermutation_la_LDFLAGS) $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 199,335 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslpermutation.la: $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_DEPENDENCIES) ! $(LINK) $(libgslpermutation_la_LDFLAGS) $(libgslpermutation_la_OBJECTS) $(libgslpermutation_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = permutation distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 249,453 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 338,390 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean ! #CLEANFILES = test.txt test.dat # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 456,525 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic + mostlyclean: mostlyclean-am ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am + pdf-am: + + ps: ps-am + + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS + + + #CLEANFILES = test.txt test.dat # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/permutation/canonical.c gsl-1.4/permutation/canonical.c *** gsl-1.3/permutation/canonical.c Sat Apr 6 18:06:20 2002 --- gsl-1.4/permutation/canonical.c Fri Jul 25 15:18:13 2003 *************** *** 29,33 **** int gsl_permutation_linear_to_canonical (gsl_permutation * q, ! const gsl_permutation * p) { const size_t n = p->size; --- 29,33 ---- int gsl_permutation_linear_to_canonical (gsl_permutation * q, ! const gsl_permutation * p) { const size_t n = p->size; *************** *** 50,60 **** while (k > i) ! { ! k = pp[k]; ! s++; ! } if (k < i) ! continue; /* Now have k == i, i.e the least in its cycle, and s == cycle length */ --- 50,60 ---- while (k > i) ! { ! k = pp[k]; ! s++; ! } if (k < i) ! continue; /* Now have k == i, i.e the least in its cycle, and s == cycle length */ *************** *** 68,79 **** while (k > i) ! { ! qq[t + s] = k; ! k = pp[k]; ! s++; ! } if (t == 0) ! break; } --- 68,79 ---- while (k > i) ! { ! qq[t + s] = k; ! k = pp[k]; ! s++; ! } if (t == 0) ! break; } *************** *** 83,93 **** int gsl_permutation_canonical_to_linear (gsl_permutation * p, ! const gsl_permutation * q) { size_t i, k, kk, first; const size_t n = p->size; ! const size_t *const pp = p->data; ! size_t *const qq = q->data; if (q->size != p->size) --- 83,93 ---- int gsl_permutation_canonical_to_linear (gsl_permutation * p, ! const gsl_permutation * q) { size_t i, k, kk, first; const size_t n = p->size; ! size_t *const pp = p->data; ! const size_t *const qq = q->data; if (q->size != p->size) *************** *** 98,125 **** for (i = 0; i < n; i++) { ! qq[i] = i; } ! k = pp[0]; ! first = qq[k]; for (i = 1; i < n; i++) { ! kk = pp[i]; if (kk > first) ! { ! qq[k] = qq[kk]; ! k = kk; ! } else ! { ! qq[k] = first; ! k = kk; ! first = qq[kk]; ! } } ! qq[k] = first; return GSL_SUCCESS; --- 98,125 ---- for (i = 0; i < n; i++) { ! pp[i] = i; } ! k = qq[0]; ! first = pp[k]; for (i = 1; i < n; i++) { ! kk = qq[i]; if (kk > first) ! { ! pp[k] = pp[kk]; ! k = kk; ! } else ! { ! pp[k] = first; ! k = kk; ! first = pp[kk]; ! } } ! pp[k] = first; return GSL_SUCCESS; *************** *** 137,146 **** { for (j = i + 1; j < size; j++) ! { ! if (p->data[i] > p->data[j]) ! { ! count++; ! } ! } } --- 137,146 ---- { for (j = i + 1; j < size; j++) ! { ! if (p->data[i] > p->data[j]) ! { ! count++; ! } ! } } *************** *** 161,170 **** while (k > i) ! { ! k = p->data[k]; ! } if (k < i) ! continue; count++; --- 161,170 ---- while (k > i) ! { ! k = p->data[k]; ! } if (k < i) ! continue; count++; *************** *** 184,191 **** { if (p->data[i] < min) ! { ! min = p->data[i]; ! count++; ! } } --- 184,191 ---- { if (p->data[i] < min) ! { ! min = p->data[i]; ! count++; ! } } diff -x.info* -rc2P gsl-1.3/permutation/gsl_permutation.h gsl-1.4/permutation/gsl_permutation.h *** gsl-1.3/permutation/gsl_permutation.h Mon Jun 10 13:12:33 2002 --- gsl-1.4/permutation/gsl_permutation.h Fri Jul 25 15:18:21 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #undef __BEGIN_DECLS *************** *** 76,83 **** size_t gsl_permutation_canonical_cycles (const gsl_permutation * q); ! ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 77,81 ---- size_t gsl_permutation_canonical_cycles (const gsl_permutation * q); ! #if HAVE_INLINE extern inline *************** *** 85,89 **** gsl_permutation_get (const gsl_permutation * p, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= p->size) { --- 83,87 ---- gsl_permutation_get (const gsl_permutation * p, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= p->size) { diff -x.info* -rc2P gsl-1.3/permutation/init.c gsl-1.4/permutation/init.c *** gsl-1.3/permutation/init.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/permutation/init.c Fri Jul 25 15:18:13 2003 *************** *** 31,35 **** { GSL_ERROR_VAL ("permutation length n must be positive integer", ! GSL_EDOM, 0); } --- 31,35 ---- { GSL_ERROR_VAL ("permutation length n must be positive integer", ! GSL_EDOM, 0); } *************** *** 39,43 **** { GSL_ERROR_VAL ("failed to allocate space for permutation struct", ! GSL_ENOMEM, 0); } --- 39,43 ---- { GSL_ERROR_VAL ("failed to allocate space for permutation struct", ! GSL_ENOMEM, 0); } *************** *** 46,53 **** if (p->data == 0) { ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for permutation data", ! GSL_ENOMEM, 0); } --- 46,53 ---- if (p->data == 0) { ! free (p); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for permutation data", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/permutation/permutation.c gsl-1.4/permutation/permutation.c *** gsl-1.3/permutation/permutation.c Mon Apr 1 16:48:03 2002 --- gsl-1.4/permutation/permutation.c Fri Jul 25 15:18:13 2003 *************** *** 22,27 **** #include - extern int gsl_check_range ; /* defined in vector/vector.c */ - size_t gsl_permutation_size (const gsl_permutation * p) --- 22,25 ---- *************** *** 42,49 **** if (gsl_check_range) { ! if (i >= p->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); ! } } --- 40,47 ---- if (gsl_check_range) { ! if (i >= p->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); ! } } diff -x.info* -rc2P gsl-1.3/permutation/test.c gsl-1.4/permutation/test.c *** gsl-1.3/permutation/test.c Thu Apr 4 21:08:58 2002 --- gsl-1.4/permutation/test.c Sat Jul 26 17:31:27 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include unsigned int p5[120][5] = { *************** *** 125,128 **** --- 126,131 ---- main (void) { + gsl_ieee_env_setup (); + { int i = 0, j, status = 0; *************** *** 233,255 **** gsl_permutation_memcpy (plin, p); ! gsl_permutation_linear_to_canonical (pcan, plin); ! for (j = 0; j < 5; j++) ! { ! status |= (pcan->data[j] != c5[i][j]); ! } ! status |= (gsl_permutation_canonical_cycles (pcan) != cycles[i]); ! status |= (gsl_permutation_linear_cycles (plin) != cycles[i]); ! gsl_permutation_canonical_to_linear (plin, pcan); ! ! for (j = 0; j < 5; j++) ! { ! status |= (plin->data[j] != p5[i][j]); ! } ! i++; } while (gsl_permutation_next(p) == GSL_SUCCESS); --- 236,268 ---- gsl_permutation_memcpy (plin, p); ! for (j = 0; j < 5; j++) ! { ! pcan->data[j] = 0; ! } ! gsl_permutation_linear_to_canonical (pcan, plin); ! for (j = 0; j < 5; j++) ! { ! status |= (pcan->data[j] != c5[i][j]); ! } ! status |= (gsl_permutation_canonical_cycles (pcan) != cycles[i]); ! status |= (gsl_permutation_linear_cycles (plin) != cycles[i]); ! for (j = 0; j < 5; j++) ! { ! plin->data[j] = 0; ! } ! ! gsl_permutation_canonical_to_linear (plin, pcan); ! ! for (j = 0; j < 5; j++) ! { ! status |= (plin->data[j] != p5[i][j]); ! } ! ! i++; } while (gsl_permutation_next(p) == GSL_SUCCESS); *************** *** 271,277 **** do ! { ! status |= gsl_permutation_inversions (p) != inversions[i]; ! i++; } while (gsl_permutation_next(p) == GSL_SUCCESS); --- 284,290 ---- do ! { ! status |= gsl_permutation_inversions (p) != inversions[i]; ! i++; } while (gsl_permutation_next(p) == GSL_SUCCESS); diff -x.info* -rc2P gsl-1.3/poly/Makefile.am gsl-1.4/poly/Makefile.am *** gsl-1.3/poly/Makefile.am Sat Sep 14 19:43:44 2002 --- gsl-1.4/poly/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 14,17 **** test_SOURCES = test.c ! test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 14,17 ---- test_SOURCES = test.c ! test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/poly/Makefile.in gsl-1.4/poly/Makefile.in *** gsl-1.3/poly/Makefile.in Wed Dec 18 22:39:09 2002 --- gsl-1.4/poly/Makefile.in Thu Aug 14 12:30:03 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslpoly.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslpoly.la *************** *** 100,193 **** test_SOURCES = test.c ! test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslpoly_la_LDFLAGS = ! libgslpoly_la_LIBADD = ! libgslpoly_la_OBJECTS = dd.lo eval.lo solve_quadratic.lo solve_cubic.lo \ ! zsolve_quadratic.lo zsolve_cubic.lo zsolve.lo zsolve_init.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslpoly.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslpoly_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps poly/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 156,243 ---- test_SOURCES = test.c ! test_LDADD = libgslpoly.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = poly ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslpoly_la_LDFLAGS = ! libgslpoly_la_LIBADD = ! am_libgslpoly_la_OBJECTS = dd.lo eval.lo solve_quadratic.lo \ ! solve_cubic.lo zsolve_quadratic.lo zsolve_cubic.lo zsolve.lo \ ! zsolve_init.lo ! libgslpoly_la_OBJECTS = $(am_libgslpoly_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslpoly.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslpoly_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu poly/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslpoly.la: $(libgslpoly_la_OBJECTS) $(libgslpoly_la_DEPENDENCIES) + $(LINK) $(libgslpoly_la_LDFLAGS) $(libgslpoly_la_OBJECTS) $(libgslpoly_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 198,334 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslpoly.la: $(libgslpoly_la_OBJECTS) $(libgslpoly_la_DEPENDENCIES) ! $(LINK) $(libgslpoly_la_LDFLAGS) $(libgslpoly_la_OBJECTS) $(libgslpoly_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = poly distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 248,452 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 337,386 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 455,521 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/poly/balance.c gsl-1.4/poly/balance.c *** gsl-1.3/poly/balance.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/poly/balance.c Fri Jul 25 15:18:13 2003 *************** *** 39,127 **** for (i = 0; i < nc; i++) ! { ! /* column norm, excluding the diagonal */ ! if (i != nc - 1) ! { ! col_norm = fabs (MAT (m, i + 1, i, nc)); ! } ! else ! { ! col_norm = 0; ! ! for (j = 0; j < nc - 1; j++) ! { ! col_norm += fabs (MAT (m, j, nc - 1, nc)); ! } ! } ! ! /* row norm, excluding the diagonal */ ! ! if (i == 0) ! { ! row_norm = fabs (MAT (m, 0, nc - 1, nc)); ! } ! else if (i == nc - 1) ! { ! row_norm = fabs (MAT (m, i, i - 1, nc)); ! } ! else ! { ! row_norm = (fabs (MAT (m, i, i - 1, nc)) + fabs (MAT (m, i, nc - 1, nc))); ! } ! if (col_norm == 0 || row_norm == 0) ! { ! continue; ! } ! ! g = row_norm / RADIX; ! f = 1; ! s = col_norm + row_norm; ! ! while (col_norm < g) ! { ! f *= RADIX; ! col_norm *= RADIX2; ! } ! ! g = row_norm * RADIX; ! ! while (col_norm > g) ! { ! f /= RADIX; ! col_norm /= RADIX2; ! } ! ! if ((row_norm + col_norm) < 0.95 * s * f) ! { ! not_converged = 1; ! ! g = 1 / f; ! ! if (i == 0) ! { ! MAT (m, 0, nc - 1, nc) *= g; ! } ! else ! { ! MAT (m, i, i - 1, nc) *= g; ! MAT (m, i, nc - 1, nc) *= g; ! } ! ! if (i == nc - 1) ! { ! for (j = 0; j < nc; j++) ! { ! MAT (m, j, i, nc) *= f; ! } ! } ! else ! { ! MAT (m, i + 1, i, nc) *= f; ! } ! } ! } } } --- 39,127 ---- for (i = 0; i < nc; i++) ! { ! /* column norm, excluding the diagonal */ ! if (i != nc - 1) ! { ! col_norm = fabs (MAT (m, i + 1, i, nc)); ! } ! else ! { ! col_norm = 0; ! ! for (j = 0; j < nc - 1; j++) ! { ! col_norm += fabs (MAT (m, j, nc - 1, nc)); ! } ! } ! ! /* row norm, excluding the diagonal */ ! ! if (i == 0) ! { ! row_norm = fabs (MAT (m, 0, nc - 1, nc)); ! } ! else if (i == nc - 1) ! { ! row_norm = fabs (MAT (m, i, i - 1, nc)); ! } ! else ! { ! row_norm = (fabs (MAT (m, i, i - 1, nc)) + fabs (MAT (m, i, nc - 1, nc))); ! } ! if (col_norm == 0 || row_norm == 0) ! { ! continue; ! } ! ! g = row_norm / RADIX; ! f = 1; ! s = col_norm + row_norm; ! ! while (col_norm < g) ! { ! f *= RADIX; ! col_norm *= RADIX2; ! } ! ! g = row_norm * RADIX; ! ! while (col_norm > g) ! { ! f /= RADIX; ! col_norm /= RADIX2; ! } ! ! if ((row_norm + col_norm) < 0.95 * s * f) ! { ! not_converged = 1; ! ! g = 1 / f; ! ! if (i == 0) ! { ! MAT (m, 0, nc - 1, nc) *= g; ! } ! else ! { ! MAT (m, i, i - 1, nc) *= g; ! MAT (m, i, nc - 1, nc) *= g; ! } ! ! if (i == nc - 1) ! { ! for (j = 0; j < nc; j++) ! { ! MAT (m, j, i, nc) *= f; ! } ! } ! else ! { ! MAT (m, i + 1, i, nc) *= f; ! } ! } ! } } } diff -x.info* -rc2P gsl-1.3/poly/dd.c gsl-1.4/poly/dd.c *** gsl-1.3/poly/dd.c Sun Dec 2 22:01:36 2001 --- gsl-1.4/poly/dd.c Fri Jul 25 15:18:13 2003 *************** *** 42,48 **** { for (j = size - 1; j >= i; j--) ! { ! dd[j] = (dd[j] - dd[j - 1]) / (xa[j] - xa[j - i]); ! } } --- 42,48 ---- { for (j = size - 1; j >= i; j--) ! { ! dd[j] = (dd[j] - dd[j - 1]) / (xa[j] - xa[j - i]); ! } } *************** *** 88,99 **** for (j = i + 1; j < size - 1; j++) ! { ! w[j] = w[j] - w[j + 1] * (xa[size - 2 - i] - xp); ! } for (j = i; j < size; j++) ! { ! c[j - i] += w[j] * dd[size - i - 1]; ! } } --- 88,99 ---- for (j = i + 1; j < size - 1; j++) ! { ! w[j] = w[j] - w[j + 1] * (xa[size - 2 - i] - xp); ! } for (j = i; j < size; j++) ! { ! c[j - i] += w[j] * dd[size - i - 1]; ! } } diff -x.info* -rc2P gsl-1.3/poly/gsl_poly.h gsl-1.4/poly/gsl_poly.h *** gsl-1.3/poly/gsl_poly.h Sat Sep 14 19:43:44 2002 --- gsl-1.4/poly/gsl_poly.h Fri Jul 25 15:18:22 2003 *************** *** 46,50 **** ! #ifdef HAVE_INLINE extern inline double gsl_poly_eval(const double c[], const int len, const double x) --- 46,50 ---- ! #if HAVE_INLINE extern inline double gsl_poly_eval(const double c[], const int len, const double x) *************** *** 66,70 **** gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x); ! #ifdef HAVE_INLINE extern inline double gsl_poly_dd_eval(const double dd[], const double xa[], const size_t size, const double x) --- 66,70 ---- gsl_poly_dd_eval (const double dd[], const double xa[], const size_t size, const double x); ! #if HAVE_INLINE extern inline double gsl_poly_dd_eval(const double dd[], const double xa[], const size_t size, const double x) *************** *** 89,97 **** */ int gsl_poly_solve_quadratic (double a, double b, double c, ! double * x0, double * x1); int gsl_poly_complex_solve_quadratic (double a, double b, double c, ! gsl_complex * z0, gsl_complex * z1); --- 89,97 ---- */ int gsl_poly_solve_quadratic (double a, double b, double c, ! double * x0, double * x1); int gsl_poly_complex_solve_quadratic (double a, double b, double c, ! gsl_complex * z0, gsl_complex * z1); *************** *** 103,112 **** */ int gsl_poly_solve_cubic (double a, double b, double c, ! double * x0, double * x1, double * x2); int gsl_poly_complex_solve_cubic (double a, double b, double c, ! gsl_complex * z0, gsl_complex * z1, ! gsl_complex * z2); --- 103,112 ---- */ int gsl_poly_solve_cubic (double a, double b, double c, ! double * x0, double * x1, double * x2); int gsl_poly_complex_solve_cubic (double a, double b, double c, ! gsl_complex * z0, gsl_complex * z1, ! gsl_complex * z2); diff -x.info* -rc2P gsl-1.3/poly/qr.c gsl-1.4/poly/qr.c *** gsl-1.3/poly/qr.c Wed Oct 31 18:42:08 2001 --- gsl-1.4/poly/qr.c Fri Jul 25 15:18:13 2003 *************** *** 56,60 **** if (a1 <= GSL_DBL_EPSILON * (a2 + a3)) ! break; } --- 56,60 ---- if (a1 <= GSL_DBL_EPSILON * (a2 + a3)) ! break; } *************** *** 80,97 **** x += t; ! if (q > 0) /* two real roots */ ! { ! if (p < 0) ! y = -y; ! y += p; ! GSL_SET_COMPLEX_PACKED (zroot, n-1, x - w / y, 0); GSL_SET_COMPLEX_PACKED (zroot, n-2, x + y, 0); ! } else ! { ! GSL_SET_COMPLEX_PACKED (zroot, n-1, x + p, -y); ! GSL_SET_COMPLEX_PACKED (zroot, n-2, x + p, y); ! } n -= 2; --- 80,97 ---- x += t; ! if (q > 0) /* two real roots */ ! { ! if (p < 0) ! y = -y; ! y += p; ! GSL_SET_COMPLEX_PACKED (zroot, n-1, x - w / y, 0); GSL_SET_COMPLEX_PACKED (zroot, n-2, x + y, 0); ! } else ! { ! GSL_SET_COMPLEX_PACKED (zroot, n-1, x + p, -y); ! GSL_SET_COMPLEX_PACKED (zroot, n-2, x + p, y); ! } n -= 2; *************** *** 116,122 **** for (i = 1; i <= n; i++) ! { ! FMAT (h, i, i, nc) -= x; ! } s = fabs (FMAT (h, n, n - 1, nc)) + fabs (FMAT (h, n - 1, n - 2, nc)); --- 116,122 ---- for (i = 1; i <= n; i++) ! { ! FMAT (h, i, i, nc) -= x; ! } s = fabs (FMAT (h, n, n - 1, nc)) + fabs (FMAT (h, n - 1, n - 2, nc)); *************** *** 144,148 **** if (m == e) ! break; a1 = fabs (FMAT (h, m, m - 1, nc)); --- 144,148 ---- if (m == e) ! break; a1 = fabs (FMAT (h, m, m - 1, nc)); *************** *** 171,202 **** if (k != m) ! { ! p = FMAT (h, k, k - 1, nc); ! q = FMAT (h, k + 1, k - 1, nc); ! r = notlast ? FMAT (h, k + 2, k - 1, nc) : 0.0; ! ! x = fabs (p) + fabs (q) + fabs (r); ! ! if (x == 0) ! continue; /* FIXME????? */ ! ! p /= x; ! q /= x; ! r /= x; ! } s = sqrt (p * p + q * q + r * r); if (p < 0) ! s = -s; if (k != m) ! { ! FMAT (h, k, k - 1, nc) = -s * x; ! } else if (e != m) ! { ! FMAT (h, k, k - 1, nc) *= -1; ! } p += s; --- 171,202 ---- if (k != m) ! { ! p = FMAT (h, k, k - 1, nc); ! q = FMAT (h, k + 1, k - 1, nc); ! r = notlast ? FMAT (h, k + 2, k - 1, nc) : 0.0; ! ! x = fabs (p) + fabs (q) + fabs (r); ! ! if (x == 0) ! continue; /* FIXME????? */ ! ! p /= x; ! q /= x; ! r /= x; ! } s = sqrt (p * p + q * q + r * r); if (p < 0) ! s = -s; if (k != m) ! { ! FMAT (h, k, k - 1, nc) = -s * x; ! } else if (e != m) ! { ! FMAT (h, k, k - 1, nc) *= -1; ! } p += s; *************** *** 210,225 **** for (j = k; j <= n; j++) ! { ! p = FMAT (h, k, j, nc) + q * FMAT (h, k + 1, j, nc); ! if (notlast) ! { ! p += r * FMAT (h, k + 2, j, nc); ! FMAT (h, k + 2, j, nc) -= p * z; ! } ! ! FMAT (h, k + 1, j, nc) -= p * y; ! FMAT (h, k, j, nc) -= p * x; ! } j = (k + 3 < n) ? (k + 3) : n; --- 210,225 ---- for (j = k; j <= n; j++) ! { ! p = FMAT (h, k, j, nc) + q * FMAT (h, k + 1, j, nc); ! if (notlast) ! { ! p += r * FMAT (h, k + 2, j, nc); ! FMAT (h, k + 2, j, nc) -= p * z; ! } ! ! FMAT (h, k + 1, j, nc) -= p * y; ! FMAT (h, k, j, nc) -= p * x; ! } j = (k + 3 < n) ? (k + 3) : n; *************** *** 228,242 **** for (i = e; i <= j; i++) ! { ! p = x * FMAT (h, i, k, nc) + y * FMAT (h, i, k + 1, nc); ! if (notlast) ! { ! p += z * FMAT (h, i, k + 2, nc); ! FMAT (h, i, k + 2, nc) -= p * r; ! } ! FMAT (h, i, k + 1, nc) -= p * q; ! FMAT (h, i, k, nc) -= p; ! } } --- 228,242 ---- for (i = e; i <= j; i++) ! { ! p = x * FMAT (h, i, k, nc) + y * FMAT (h, i, k + 1, nc); ! if (notlast) ! { ! p += z * FMAT (h, i, k + 2, nc); ! FMAT (h, i, k + 2, nc) -= p * r; ! } ! FMAT (h, i, k + 1, nc) -= p * q; ! FMAT (h, i, k, nc) -= p; ! } } diff -x.info* -rc2P gsl-1.3/poly/solve_cubic.c gsl-1.4/poly/solve_cubic.c *** gsl-1.3/poly/solve_cubic.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/poly/solve_cubic.c Fri Jul 25 15:18:13 2003 *************** *** 56,76 **** /* Due to finite precision some double roots may be missed, and ! considered to be a pair of complex roots z = x +/- epsilon i ! close to the real axis. */ double sqrtQ = sqrt (Q); if (R > 0) ! { ! *x0 = -2 * sqrtQ - a / 3; ! *x1 = sqrtQ - a / 3; ! *x2 = sqrtQ - a / 3; ! } else ! { ! *x0 = - sqrtQ - a / 3; ! *x1 = - sqrtQ - a / 3; ! *x2 = 2 * sqrtQ - a / 3; ! } return 3 ; } --- 56,76 ---- /* Due to finite precision some double roots may be missed, and ! considered to be a pair of complex roots z = x +/- epsilon i ! close to the real axis. */ double sqrtQ = sqrt (Q); if (R > 0) ! { ! *x0 = -2 * sqrtQ - a / 3; ! *x1 = sqrtQ - a / 3; ! *x2 = sqrtQ - a / 3; ! } else ! { ! *x0 = - sqrtQ - a / 3; ! *x1 = - sqrtQ - a / 3; ! *x2 = 2 * sqrtQ - a / 3; ! } return 3 ; } *************** *** 88,100 **** if (*x0 > *x1) ! SWAP(*x0, *x1) ; if (*x1 > *x2) ! { ! SWAP(*x1, *x2) ; ! ! if (*x0 > *x1) ! SWAP(*x0, *x1) ; ! } return 3; --- 88,100 ---- if (*x0 > *x1) ! SWAP(*x0, *x1) ; if (*x1 > *x2) ! { ! SWAP(*x1, *x2) ; ! ! if (*x0 > *x1) ! SWAP(*x0, *x1) ; ! } return 3; diff -x.info* -rc2P gsl-1.3/poly/solve_quadratic.c gsl-1.4/poly/solve_quadratic.c *** gsl-1.3/poly/solve_quadratic.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/poly/solve_quadratic.c Fri Jul 25 15:18:13 2003 *************** *** 34,60 **** { if (b == 0) ! { double r = fabs (0.5 * sqrt (disc) / a); ! *x0 = -r; ! *x1 = r; ! } else ! { ! double sgnb = (b > 0 ? 1 : -1); ! double temp = -0.5 * (b + sgnb * sqrt (disc)); ! double r1 = temp / a ; ! double r2 = c / temp ; ! if (r1 < r2) ! { ! *x0 = r1 ; ! *x1 = r2 ; ! } ! else ! { ! *x0 = r2 ; ! *x1 = r1 ; ! } ! } return 2; } --- 34,60 ---- { if (b == 0) ! { double r = fabs (0.5 * sqrt (disc) / a); ! *x0 = -r; ! *x1 = r; ! } else ! { ! double sgnb = (b > 0 ? 1 : -1); ! double temp = -0.5 * (b + sgnb * sqrt (disc)); ! double r1 = temp / a ; ! double r2 = c / temp ; ! if (r1 < r2) ! { ! *x0 = r1 ; ! *x1 = r2 ; ! } ! else ! { ! *x0 = r2 ; ! *x1 = r1 ; ! } ! } return 2; } diff -x.info* -rc2P gsl-1.3/poly/test.c gsl-1.4/poly/test.c *** gsl-1.3/poly/test.c Sat Sep 14 19:43:44 2002 --- gsl-1.4/poly/test.c Fri Jul 25 15:18:13 2003 *************** *** 38,42 **** y = gsl_poly_eval (c, 3, x); gsl_test_rel (y, 1 + 0.5 * x + 0.3 * x * x, eps, ! "gsl_poly_eval({1, 0.5, 0.3}, 0.5)"); } --- 38,42 ---- y = gsl_poly_eval (c, 3, x); gsl_test_rel (y, 1 + 0.5 * x + 0.3 * x * x, eps, ! "gsl_poly_eval({1, 0.5, 0.3}, 0.5)"); } *************** *** 47,51 **** y = gsl_poly_eval (d, 11, x); gsl_test_rel (y, 1.0, eps, ! "gsl_poly_eval({1,-1, 1, -1, 1, -1, 1, -1, 1, -1, 1}, 1.0)"); } --- 47,51 ---- y = gsl_poly_eval (d, 11, x); gsl_test_rel (y, 1.0, eps, ! "gsl_poly_eval({1,-1, 1, -1, 1, -1, 1, -1, 1, -1, 1}, 1.0)"); } *************** *** 98,102 **** gsl_test (n != 2, ! "gsl_poly_solve_quadratic, two roots b = 0, 5 x^2 = 20"); gsl_test_rel (x0, -2.0, 1e-9, "x0, 5 x^2 = 20"); gsl_test_rel (x1, 2.0, 1e-9, "x1, 5 x^2 = 20"); --- 98,102 ---- gsl_test (n != 2, ! "gsl_poly_solve_quadratic, two roots b = 0, 5 x^2 = 20"); gsl_test_rel (x0, -2.0, 1e-9, "x0, 5 x^2 = 20"); gsl_test_rel (x1, 2.0, 1e-9, "x1, 5 x^2 = 20"); *************** *** 131,135 **** gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x-17)(x-17)(x-23)=0"); gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)(x-17)(x-23)=0"); gsl_test_rel (x1, 17.0, 1e-9, "x1, (x-17)(x-17)(x-23)=0"); --- 131,135 ---- gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x-17)(x-17)(x-23)=0"); gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)(x-17)(x-23)=0"); gsl_test_rel (x1, 17.0, 1e-9, "x1, (x-17)(x-17)(x-23)=0"); *************** *** 143,147 **** gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x+23)(x-17)(x-17)=0"); gsl_test_rel (x0, -23.0, 1e-9, "x0, (x+23)(x-17)(x-17)=0"); gsl_test_rel (x1, 17.0, 1e-9, "x1, (x+23)(x-17)(x-17)=0"); --- 143,147 ---- gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x+23)(x-17)(x-17)=0"); gsl_test_rel (x0, -23.0, 1e-9, "x0, (x+23)(x-17)(x-17)=0"); gsl_test_rel (x1, 17.0, 1e-9, "x1, (x+23)(x-17)(x-17)=0"); *************** *** 155,159 **** gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x-17)(x-31)(x-95)=0"); gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)(x-31)(x-95)=0"); gsl_test_rel (x1, 31.0, 1e-9, "x1, (x-17)(x-31)(x-95)=0"); --- 155,159 ---- gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x-17)(x-31)(x-95)=0"); gsl_test_rel (x0, 17.0, 1e-9, "x0, (x-17)(x-31)(x-95)=0"); gsl_test_rel (x1, 31.0, 1e-9, "x1, (x-17)(x-31)(x-95)=0"); *************** *** 167,171 **** gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x+17)(x-31)(x-95)=0"); gsl_test_rel (x0, -17.0, 1e-9, "x0, (x+17)(x-31)(x-95)=0"); gsl_test_rel (x1, 31.0, 1e-9, "x1, (x+17)(x-31)(x-95)=0"); --- 167,171 ---- gsl_test (n != 3, ! "gsl_poly_solve_cubic, three roots, (x+17)(x-31)(x-95)=0"); gsl_test_rel (x0, -17.0, 1e-9, "x0, (x+17)(x-31)(x-95)=0"); gsl_test_rel (x1, 31.0, 1e-9, "x1, (x+17)(x-31)(x-95)=0"); *************** *** 181,185 **** gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, 2 roots (2x - 5)^2 = -1"); gsl_test_rel (GSL_REAL (z0), 2.5, 1e-9, "z0.real, (2x - 5)^2 = -1"); gsl_test_rel (GSL_IMAG (z0), -0.5, 1e-9, "z0.imag, (2x - 5)^2 = -1"); --- 181,185 ---- gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, 2 roots (2x - 5)^2 = -1"); gsl_test_rel (GSL_REAL (z0), 2.5, 1e-9, "z0.real, (2x - 5)^2 = -1"); gsl_test_rel (GSL_IMAG (z0), -0.5, 1e-9, "z0.imag, (2x - 5)^2 = -1"); *************** *** 195,199 **** gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, one root, (2x - 5)^2 = 0"); gsl_test_rel (GSL_REAL (z0), 2.5, 1e-9, "z0.real, (2x - 5)^2 = 0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag (2x - 5)^2 = 0"); --- 195,199 ---- gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, one root, (2x - 5)^2 = 0"); gsl_test_rel (GSL_REAL (z0), 2.5, 1e-9, "z0.real, (2x - 5)^2 = 0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag (2x - 5)^2 = 0"); *************** *** 201,207 **** gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag (2x - 5)^2 = 0"); gsl_test (GSL_REAL (z0) != GSL_REAL (z1), ! "z0.real == z1.real, (2x - 5)^2 = 0"); gsl_test (GSL_IMAG (z0) != GSL_IMAG (z1), ! "z0.imag == z1.imag, (2x - 5)^2 = 0"); } --- 201,207 ---- gsl_test_rel (GSL_IMAG (z1), 0.0, 1e-9, "z1.imag (2x - 5)^2 = 0"); gsl_test (GSL_REAL (z0) != GSL_REAL (z1), ! "z0.real == z1.real, (2x - 5)^2 = 0"); gsl_test (GSL_IMAG (z0) != GSL_IMAG (z1), ! "z0.imag == z1.imag, (2x - 5)^2 = 0"); } *************** *** 212,216 **** gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots, (2x - 5)^2 = 4"); gsl_test_rel (GSL_REAL (z0), 1.5, 1e-9, "z0.real, (2x - 5)^2 = 4"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (2x - 5)^2 = 4"); --- 212,216 ---- gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots, (2x - 5)^2 = 4"); gsl_test_rel (GSL_REAL (z0), 1.5, 1e-9, "z0.real, (2x - 5)^2 = 4"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (2x - 5)^2 = 4"); *************** *** 225,229 **** gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots, x(4x + 7) = 0"); gsl_test_rel (GSL_REAL (z0), -1.75, 1e-9, "z0.real, x(4x + 7) = 0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, x(4x + 7) = 0"); --- 225,229 ---- gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots, x(4x + 7) = 0"); gsl_test_rel (GSL_REAL (z0), -1.75, 1e-9, "z0.real, x(4x + 7) = 0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, x(4x + 7) = 0"); *************** *** 238,242 **** gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots b = 0, 5 x^2 = 20"); gsl_test_rel (GSL_REAL (z0), -2.0, 1e-9, "z0.real, 5 x^2 = 20"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, 5 x^2 = 20"); --- 238,242 ---- gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots b = 0, 5 x^2 = 20"); gsl_test_rel (GSL_REAL (z0), -2.0, 1e-9, "z0.real, 5 x^2 = 20"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, 5 x^2 = 20"); *************** *** 251,255 **** gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots b = 0, 5 x^2 = -20"); gsl_test_rel (GSL_REAL (z0), 0.0, 1e-9, "z0.real, 5 x^2 = -20"); gsl_test_rel (GSL_IMAG (z0), -2.0, 1e-9, "z0.imag, 5 x^2 = -20"); --- 251,255 ---- gsl_test (n != 2, ! "gsl_poly_complex_solve_quadratic, two roots b = 0, 5 x^2 = -20"); gsl_test_rel (GSL_REAL (z0), 0.0, 1e-9, "z0.real, 5 x^2 = -20"); gsl_test_rel (GSL_IMAG (z0), -2.0, 1e-9, "z0.imag, 5 x^2 = -20"); *************** *** 268,272 **** gsl_test_rel (GSL_REAL (z0), -1.5, 1e-9, "z0.real, x^3 = 27"); gsl_test_rel (GSL_IMAG (z0), -1.5 * sqrt (3.0), 1e-9, ! "z0.imag, x^3 = 27"); gsl_test_rel (GSL_REAL (z1), -1.5, 1e-9, "z1.real, x^3 = 27"); gsl_test_rel (GSL_IMAG (z1), 1.5 * sqrt (3.0), 1e-9, "z1.imag, x^3 = 27"); --- 268,272 ---- gsl_test_rel (GSL_REAL (z0), -1.5, 1e-9, "z0.real, x^3 = 27"); gsl_test_rel (GSL_IMAG (z0), -1.5 * sqrt (3.0), 1e-9, ! "z0.imag, x^3 = 27"); gsl_test_rel (GSL_REAL (z1), -1.5, 1e-9, "z1.real, x^3 = 27"); gsl_test_rel (GSL_IMAG (z1), 1.5 * sqrt (3.0), 1e-9, "z1.imag, x^3 = 27"); *************** *** 281,285 **** gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three root, (x+3)(x^2-4x+13) = 0"); gsl_test_rel (GSL_REAL (z0), -3.0, 1e-9, "z0.real, (x+3)(x^2+1) = 0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x+3)(x^2+1) = 0"); --- 281,285 ---- gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three root, (x+3)(x^2-4x+13) = 0"); gsl_test_rel (GSL_REAL (z0), -3.0, 1e-9, "z0.real, (x+3)(x^2+1) = 0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x+3)(x^2+1) = 0"); *************** *** 297,301 **** gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x-17)^3=0"); gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)^3=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)^3=0"); --- 297,301 ---- gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x-17)^3=0"); gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)^3=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)^3=0"); *************** *** 313,317 **** gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x-17)(x-17)(x-23)=0"); gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)(x-17)(x-23)=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)(x-17)(x-23)=0"); --- 313,317 ---- gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x-17)(x-17)(x-23)=0"); gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)(x-17)(x-23)=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)(x-17)(x-23)=0"); *************** *** 329,335 **** gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x+23)(x-17)(x-17)=0"); gsl_test_rel (GSL_REAL (z0), -23.0, 1e-9, ! "z0.real, (x+23)(x-17)(x-17)=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x+23)(x-17)(x-17)=0"); gsl_test_rel (GSL_REAL (z1), 17.0, 1e-9, "z1.real, (x+23)(x-17)(x-17)=0"); --- 329,335 ---- gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x+23)(x-17)(x-17)=0"); gsl_test_rel (GSL_REAL (z0), -23.0, 1e-9, ! "z0.real, (x+23)(x-17)(x-17)=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x+23)(x-17)(x-17)=0"); gsl_test_rel (GSL_REAL (z1), 17.0, 1e-9, "z1.real, (x+23)(x-17)(x-17)=0"); *************** *** 347,351 **** gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x-17)(x-31)(x-95)=0"); gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)(x-31)(x-95)=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)(x-31)(x-95)=0"); --- 347,351 ---- gsl_test (n != 3, ! "gsl_poly_complex_solve_cubic, three roots, (x-17)(x-31)(x-95)=0"); gsl_test_rel (GSL_REAL (z0), 17.0, 1e-9, "z0.real, (x-17)(x-31)(x-95)=0"); gsl_test_rel (GSL_IMAG (z0), 0.0, 1e-9, "z0.imag, (x-17)(x-31)(x-95)=0"); *************** *** 370,374 **** gsl_test (status, ! "gsl_poly_complex_solve, 5th-order Wilkinson polynomial"); gsl_test_rel (z[0], 1.0, 1e-9, "z0.real, 5th-order polynomial"); gsl_test_rel (z[1], 0.0, 1e-9, "z0.imag, 5th-order polynomial"); --- 370,374 ---- gsl_test (status, ! "gsl_poly_complex_solve, 5th-order Wilkinson polynomial"); gsl_test_rel (z[0], 1.0, 1e-9, "z0.real, 5th-order polynomial"); gsl_test_rel (z[1], 0.0, 1e-9, "z0.imag, 5th-order polynomial"); diff -x.info* -rc2P gsl-1.3/poly/zsolve.c gsl-1.4/poly/zsolve.c *** gsl-1.3/poly/zsolve.c Thu Jun 28 10:26:29 2001 --- gsl-1.4/poly/zsolve.c Fri Jul 25 15:18:13 2003 *************** *** 41,46 **** int gsl_poly_complex_solve (const double *a, size_t n, ! gsl_poly_complex_workspace * w, ! gsl_complex_packed_ptr z) { int status; --- 41,46 ---- int gsl_poly_complex_solve (const double *a, size_t n, ! gsl_poly_complex_workspace * w, ! gsl_complex_packed_ptr z) { int status; diff -x.info* -rc2P gsl-1.3/poly/zsolve_cubic.c gsl-1.4/poly/zsolve_cubic.c *** gsl-1.3/poly/zsolve_cubic.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/poly/zsolve_cubic.c Fri Jul 25 15:18:13 2003 *************** *** 67,87 **** if (R > 0) ! { ! GSL_REAL (*z0) = -2 * sqrtQ - a / 3; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = sqrtQ - a / 3; ! GSL_IMAG (*z1) = 0; ! GSL_REAL (*z2) = sqrtQ - a / 3; ! GSL_IMAG (*z2) = 0; ! } else ! { ! GSL_REAL (*z0) = -sqrtQ - a / 3; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = -sqrtQ - a / 3; ! GSL_IMAG (*z1) = 0; ! GSL_REAL (*z2) = 2 * sqrtQ - a / 3; ! GSL_IMAG (*z2) = 0; ! } return 3; } --- 67,87 ---- if (R > 0) ! { ! GSL_REAL (*z0) = -2 * sqrtQ - a / 3; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = sqrtQ - a / 3; ! GSL_IMAG (*z1) = 0; ! GSL_REAL (*z2) = sqrtQ - a / 3; ! GSL_IMAG (*z2) = 0; ! } else ! { ! GSL_REAL (*z0) = -sqrtQ - a / 3; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = -sqrtQ - a / 3; ! GSL_IMAG (*z1) = 0; ! GSL_REAL (*z2) = 2 * sqrtQ - a / 3; ! GSL_IMAG (*z2) = 0; ! } return 3; } *************** *** 99,111 **** if (r0 > r1) ! SWAP (r0, r1); if (r1 > r2) ! { ! SWAP (r1, r2); ! if (r0 > r1) ! SWAP (r0, r1); ! } GSL_REAL (*z0) = r0; --- 99,111 ---- if (r0 > r1) ! SWAP (r0, r1); if (r1 > r2) ! { ! SWAP (r1, r2); ! if (r0 > r1) ! SWAP (r0, r1); ! } GSL_REAL (*z0) = r0; *************** *** 127,151 **** if (A + B < 0) ! { ! GSL_REAL (*z0) = A + B - a / 3; ! GSL_IMAG (*z0) = 0; ! ! GSL_REAL (*z1) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z1) = -(sqrt (3.0) / 2.0) * fabs(A - B); ! ! GSL_REAL (*z2) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z2) = (sqrt (3.0) / 2.0) * fabs(A - B); ! } else ! { ! GSL_REAL (*z0) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z0) = -(sqrt (3.0) / 2.0) * fabs(A - B); ! ! GSL_REAL (*z1) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z1) = (sqrt (3.0) / 2.0) * fabs(A - B); ! ! GSL_REAL (*z2) = A + B - a / 3; ! GSL_IMAG (*z2) = 0; ! } return 3; --- 127,151 ---- if (A + B < 0) ! { ! GSL_REAL (*z0) = A + B - a / 3; ! GSL_IMAG (*z0) = 0; ! ! GSL_REAL (*z1) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z1) = -(sqrt (3.0) / 2.0) * fabs(A - B); ! ! GSL_REAL (*z2) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z2) = (sqrt (3.0) / 2.0) * fabs(A - B); ! } else ! { ! GSL_REAL (*z0) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z0) = -(sqrt (3.0) / 2.0) * fabs(A - B); ! ! GSL_REAL (*z1) = -0.5 * (A + B) - a / 3; ! GSL_IMAG (*z1) = (sqrt (3.0) / 2.0) * fabs(A - B); ! ! GSL_REAL (*z2) = A + B - a / 3; ! GSL_IMAG (*z2) = 0; ! } return 3; diff -x.info* -rc2P gsl-1.3/poly/zsolve_quadratic.c gsl-1.4/poly/zsolve_quadratic.c *** gsl-1.3/poly/zsolve_quadratic.c Wed Apr 18 21:52:34 2001 --- gsl-1.4/poly/zsolve_quadratic.c Fri Jul 25 15:18:13 2003 *************** *** 27,31 **** int gsl_poly_complex_solve_quadratic (double a, double b, double c, ! gsl_complex *z0, gsl_complex *z1) { double disc = b * b - 4 * a * c; --- 27,31 ---- int gsl_poly_complex_solve_quadratic (double a, double b, double c, ! gsl_complex *z0, gsl_complex *z1) { double disc = b * b - 4 * a * c; *************** *** 34,66 **** { if (b == 0) ! { ! double s = fabs (0.5 * sqrt (disc) / a); ! GSL_REAL (*z0) = -s; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = s; ! GSL_IMAG (*z1) = 0; ! } else ! { ! double sgnb = (b > 0 ? 1 : -1); ! double temp = -0.5 * (b + sgnb * sqrt (disc)); ! double r1 = temp / a; ! double r2 = c / temp; ! if (r1 < r2) ! { ! GSL_REAL (*z0) = r1; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = r2; ! GSL_IMAG (*z1) = 0; ! } ! else ! { ! GSL_REAL (*z0) = r2; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = r1; ! GSL_IMAG (*z1) = 0; ! } ! } return 2; } --- 34,66 ---- { if (b == 0) ! { ! double s = fabs (0.5 * sqrt (disc) / a); ! GSL_REAL (*z0) = -s; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = s; ! GSL_IMAG (*z1) = 0; ! } else ! { ! double sgnb = (b > 0 ? 1 : -1); ! double temp = -0.5 * (b + sgnb * sqrt (disc)); ! double r1 = temp / a; ! double r2 = c / temp; ! if (r1 < r2) ! { ! GSL_REAL (*z0) = r1; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = r2; ! GSL_IMAG (*z1) = 0; ! } ! else ! { ! GSL_REAL (*z0) = r2; ! GSL_IMAG (*z0) = 0; ! GSL_REAL (*z1) = r1; ! GSL_IMAG (*z1) = 0; ! } ! } return 2; } diff -x.info* -rc2P gsl-1.3/qrng/Makefile.am gsl-1.4/qrng/Makefile.am *** gsl-1.3/qrng/Makefile.am Sun Aug 26 19:50:34 2001 --- gsl-1.4/qrng/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 11,14 **** test_SOURCES = test.c ! test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 11,14 ---- test_SOURCES = test.c ! test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/qrng/Makefile.in gsl-1.4/qrng/Makefile.in *** gsl-1.3/qrng/Makefile.in Wed Dec 18 22:38:39 2002 --- gsl-1.4/qrng/Makefile.in Thu Aug 14 12:30:17 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslqrng.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslqrng.la *************** *** 97,189 **** test_SOURCES = test.c ! test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslqrng_la_LDFLAGS = ! libgslqrng_la_LIBADD = ! libgslqrng_la_OBJECTS = qrng.lo niederreiter-2.lo sobol.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslqrng.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslqrng_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps qrng/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,238 ---- test_SOURCES = test.c ! test_LDADD = libgslqrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = qrng ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslqrng_la_LDFLAGS = ! libgslqrng_la_LIBADD = ! am_libgslqrng_la_OBJECTS = qrng.lo niederreiter-2.lo sobol.lo ! libgslqrng_la_OBJECTS = $(am_libgslqrng_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslqrng.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO SOURCES = $(libgslqrng_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu qrng/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslqrng.la: $(libgslqrng_la_OBJECTS) $(libgslqrng_la_DEPENDENCIES) + $(LINK) $(libgslqrng_la_LDFLAGS) $(libgslqrng_la_OBJECTS) $(libgslqrng_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 194,330 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslqrng.la: $(libgslqrng_la_OBJECTS) $(libgslqrng_la_DEPENDENCIES) ! $(LINK) $(libgslqrng_la_LDFLAGS) $(libgslqrng_la_OBJECTS) $(libgslqrng_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = qrng distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 243,447 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 333,382 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 450,516 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/qrng/gsl_qrng.h gsl-1.4/qrng/gsl_qrng.h *** gsl-1.3/qrng/gsl_qrng.h Mon Jun 10 13:12:45 2002 --- gsl-1.4/qrng/gsl_qrng.h Fri Jul 25 15:18:22 2003 *************** *** 95,99 **** ! #ifdef HAVE_INLINE extern inline int gsl_qrng_get (const gsl_qrng * r, double x[]); extern inline int gsl_qrng_get (const gsl_qrng * r, double x[]) --- 95,99 ---- ! #if HAVE_INLINE extern inline int gsl_qrng_get (const gsl_qrng * r, double x[]); extern inline int gsl_qrng_get (const gsl_qrng * r, double x[]) diff -x.info* -rc2P gsl-1.3/qrng/qrng.c gsl-1.4/qrng/qrng.c *** gsl-1.3/qrng/qrng.c Mon Apr 22 18:22:00 2002 --- gsl-1.4/qrng/qrng.c Fri Jul 25 15:18:13 2003 *************** *** 17,21 **** { GSL_ERROR_VAL ("allocation failed for qrng struct", ! GSL_ENOMEM, 0); }; --- 17,21 ---- { GSL_ERROR_VAL ("allocation failed for qrng struct", ! GSL_ENOMEM, 0); }; *************** *** 28,32 **** free (r); GSL_ERROR_VAL ("allocation failed for qrng state", ! GSL_ENOMEM, 0); }; --- 28,32 ---- free (r); GSL_ERROR_VAL ("allocation failed for qrng state", ! GSL_ENOMEM, 0); }; *************** *** 68,72 **** { GSL_ERROR_VAL ("failed to allocate space for rng struct", ! GSL_ENOMEM, 0); }; --- 68,72 ---- { GSL_ERROR_VAL ("failed to allocate space for rng struct", ! GSL_ENOMEM, 0); }; *************** *** 79,83 **** free (r); GSL_ERROR_VAL ("failed to allocate space for rng state", ! GSL_ENOMEM, 0); }; --- 79,83 ---- free (r); GSL_ERROR_VAL ("failed to allocate space for rng state", ! GSL_ENOMEM, 0); }; diff -x.info* -rc2P gsl-1.3/qrng/sobol.c gsl-1.4/qrng/sobol.c *** gsl-1.3/qrng/sobol.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/qrng/sobol.c Fri Jul 25 15:18:13 2003 *************** *** 174,178 **** for(k=0; kv_direction[j-k-1][i_dim]); } s_state->v_direction[j][i_dim] = newv; --- 174,178 ---- for(k=0; kv_direction[j-k-1][i_dim]); } s_state->v_direction[j][i_dim] = newv; diff -x.info* -rc2P gsl-1.3/randist/ChangeLog gsl-1.4/randist/ChangeLog *** gsl-1.3/randist/ChangeLog Tue Dec 10 19:56:29 2002 --- gsl-1.4/randist/ChangeLog Fri Jul 25 10:36:08 2003 *************** *** 1,2 **** --- 1,27 ---- + 2003-07-25 Brian Gough + + * dirichlet.c: include gsl_sf_gamma.h instead of gsl_sf.h + + 2003-07-24 Brian Gough + + * binomial_tpe.c (gsl_ran_binomial_tpe): convert to double to + avoid possible signed/unsigned problems in comparison (ix > n) + (Stirling): removed spurious trailing ; + + 2003-05-14 Brian Gough + + * binomial_tpe.c: fast binomial algorithm using TPE method + + * test.c: added the tests for the fast Binomial TPE routine + + 2003-02-09 Brian Gough + + * discrete.c (gsl_ran_discrete_preproc): fixed bug reported by + ahoward + + 2003-01-25 Brian Gough + + * chisq.c: corrected comments + 2002-12-10 Brian Gough diff -x.info* -rc2P gsl-1.3/randist/Makefile.am gsl-1.4/randist/Makefile.am *** gsl-1.3/randist/Makefile.am Wed Dec 11 11:52:30 2002 --- gsl-1.4/randist/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 5,9 **** INCLUDES= -I$(top_builddir) ! libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c TESTS = test --- 5,9 ---- INCLUDES= -I$(top_builddir) ! libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c binomial_tpe.c TESTS = test diff -x.info* -rc2P gsl-1.3/randist/Makefile.in gsl-1.4/randist/Makefile.in *** gsl-1.3/randist/Makefile.in Wed Dec 18 22:38:53 2002 --- gsl-1.4/randist/Makefile.in Thu Aug 14 12:30:09 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslrandist.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslrandist.la *************** *** 91,95 **** INCLUDES = -I$(top_builddir) ! libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c TESTS = test --- 147,151 ---- INCLUDES = -I$(top_builddir) ! libgslrandist_la_SOURCES = bernoulli.c beta.c bigauss.c binomial.c cauchy.c chisq.c dirichlet.c discrete.c erlang.c exponential.c exppow.c fdist.c flat.c gamma.c gauss.c gausstail.c geometric.c gumbel.c hyperg.c laplace.c levy.c logarithmic.c logistic.c lognormal.c multinomial.c nbinomial.c pareto.c pascal.c poisson.c rayleigh.c shuffle.c sphere.c tdist.c weibull.c landau.c binomial_tpe.c TESTS = test *************** *** 99,197 **** test_SOURCES = test.c test_LDADD = libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslrandist_la_LDFLAGS = ! libgslrandist_la_LIBADD = ! libgslrandist_la_OBJECTS = bernoulli.lo beta.lo bigauss.lo binomial.lo \ ! cauchy.lo chisq.lo dirichlet.lo discrete.lo erlang.lo exponential.lo \ ! exppow.lo fdist.lo flat.lo gamma.lo gauss.lo gausstail.lo geometric.lo \ ! gumbel.lo hyperg.lo laplace.lo levy.lo logarithmic.lo logistic.lo \ ! lognormal.lo multinomial.lo nbinomial.lo pareto.lo pascal.lo poisson.lo \ ! rayleigh.lo shuffle.lo sphere.lo tdist.lo weibull.lo landau.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslrandist.la ../rng/libgslrng.la \ ! ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslrandist_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps randist/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,247 ---- test_SOURCES = test.c test_LDADD = libgslrandist.la ../rng/libgslrng.la ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la + subdir = randist + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslrandist_la_LDFLAGS = ! libgslrandist_la_LIBADD = ! am_libgslrandist_la_OBJECTS = bernoulli.lo beta.lo bigauss.lo \ ! binomial.lo cauchy.lo chisq.lo dirichlet.lo discrete.lo \ ! erlang.lo exponential.lo exppow.lo fdist.lo flat.lo gamma.lo \ ! gauss.lo gausstail.lo geometric.lo gumbel.lo hyperg.lo \ ! laplace.lo levy.lo logarithmic.lo logistic.lo lognormal.lo \ ! multinomial.lo nbinomial.lo pareto.lo pascal.lo poisson.lo \ ! rayleigh.lo shuffle.lo sphere.lo tdist.lo weibull.lo landau.lo \ ! binomial_tpe.lo ! libgslrandist_la_OBJECTS = $(am_libgslrandist_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslrandist.la ../rng/libgslrng.la \ ! ../specfunc/libgslspecfunc.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO SOURCES = $(libgslrandist_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu randist/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslrandist.la: $(libgslrandist_la_OBJECTS) $(libgslrandist_la_DEPENDENCIES) + $(LINK) $(libgslrandist_la_LDFLAGS) $(libgslrandist_la_OBJECTS) $(libgslrandist_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 202,338 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslrandist.la: $(libgslrandist_la_OBJECTS) $(libgslrandist_la_DEPENDENCIES) ! $(LINK) $(libgslrandist_la_LDFLAGS) $(libgslrandist_la_OBJECTS) $(libgslrandist_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = randist distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 252,456 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 341,390 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 459,525 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/randist/bigauss.c gsl-1.4/randist/bigauss.c *** gsl-1.3/randist/bigauss.c Thu Apr 19 11:39:14 2001 --- gsl-1.4/randist/bigauss.c Fri Jul 25 15:18:13 2003 *************** *** 33,38 **** void gsl_ran_bivariate_gaussian (const gsl_rng * r, ! double sigma_x, double sigma_y, double rho, ! double *x, double *y) { double u, v, r2, scale; --- 33,38 ---- void gsl_ran_bivariate_gaussian (const gsl_rng * r, ! double sigma_x, double sigma_y, double rho, ! double *x, double *y) { double u, v, r2, scale; *************** *** 58,63 **** double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, ! const double sigma_x, const double sigma_y, ! const double rho) { double u = x / sigma_x ; --- 58,63 ---- double gsl_ran_bivariate_gaussian_pdf (const double x, const double y, ! const double sigma_x, const double sigma_y, ! const double rho) { double u = x / sigma_x ; diff -x.info* -rc2P gsl-1.3/randist/binomial.c gsl-1.4/randist/binomial.c *** gsl-1.3/randist/binomial.c Tue Apr 24 17:24:51 2001 --- gsl-1.4/randist/binomial.c Fri Jul 25 15:18:13 2003 *************** *** 35,39 **** unsigned int i, a, b, k = 0; ! while (n > 10) /* This parameter is tunable */ { double X; --- 35,39 ---- unsigned int i, a, b, k = 0; ! while (n > 10) /* This parameter is tunable */ { double X; *************** *** 44,57 **** if (X >= p) ! { ! n = a - 1; ! p /= X; ! } else ! { ! k += a; ! n = b - 1; ! p = (p - X) / (1 - X); ! } } --- 44,57 ---- if (X >= p) ! { ! n = a - 1; ! p /= X; ! } else ! { ! k += a; ! n = b - 1; ! p = (p - X) / (1 - X); ! } } *************** *** 60,64 **** double u = gsl_rng_uniform (r); if (u < p) ! k++; } --- 60,64 ---- double u = gsl_rng_uniform (r); if (u < p) ! k++; } *************** *** 67,86 **** double ! gsl_ran_binomial_pdf (const unsigned int k, const double p, ! const unsigned int n) { if (k > n) { ! return 0 ; } ! else { - double a = k; - double b = n - k; double P; - double Cnk = gsl_sf_choose (n, k) ; ! P = Cnk * pow (p, a) * pow (1 - p, b); ! return P; } --- 67,85 ---- double ! gsl_ran_binomial_pdf (const unsigned int k, const double p, ! const unsigned int n) { if (k > n) { ! return 0; } ! else { double P; ! double ln_Cnk = gsl_sf_lnchoose (n, k); ! P = ln_Cnk + k * log (p) + (n - k) * log (1 - p); ! P = exp (P); ! return P; } diff -x.info* -rc2P gsl-1.3/randist/binomial_tpe.c gsl-1.4/randist/binomial_tpe.c *** gsl-1.3/randist/binomial_tpe.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/randist/binomial_tpe.c Fri Jul 25 15:18:13 2003 *************** *** 0 **** --- 1,368 ---- + /* randist/binomial_tpe.c + * + * Copyright (C) 1996-2003 James Theiler, Brian Gough + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + #include + #include + + /* The binomial distribution has the form, + + f(x) = n!/(x!(n-x)!) * p^x (1-p)^(n-x) for integer 0 <= x <= n + = 0 otherwise + + This implementation follows the public domain ranlib function + "ignbin", the bulk of which is the BTPE (Binomial Triangle + Parallelogram Exponential) algorithm introduced in + Kachitvichyanukul and Schmeiser[1]. It has been translated to use + modern C coding standards. + + If n is small and/or p is near 0 or near 1 (specifically, if + n*min(p,1-p) < SMALL_MEAN), then a different algorithm, called + BINV, is used which has an average runtime that scales linearly + with n*min(p,1-p). + + But for larger problems, the BTPE algorithm takes the form of two + functions b(x) and t(x) -- "bottom" and "top" -- for which b(x) < + f(x)/f(M) < t(x), with M = floor(n*p+p). b(x) defines a triangular + region, and t(x) includes a parallelogram and two tails. Details + (including a nice drawing) are in the paper. + + [1] Kachitvichyanukul, V. and Schmeiser, B. W. Binomial Random + Variate Generation. Communications of the ACM, 31, 2 (February, + 1988) 216. + + Note, Bruce Schmeiser (personal communication) points out that if + you want very fast binomial deviates, and you are happy with + approximate results, and/or n and n*p are both large, then you can + just use gaussian estimates: mean=n*p, variance=n*p*(1-p). + + This implementation by James Theiler, April 2003, after obtaining + permission -- and some good advice -- from Drs. Kachitvichyanukul + and Schmeiser to use their code as a starting point, and then doing + a little bit of tweaking. + + Additional polishing for GSL coding standards by Brian Gough. */ + + #define SMALL_MEAN 14 /* If n*p < SMALL_MEAN then use BINV + algorithm. The ranlib + implementation used cutoff=30; but + on my computer 14 works better */ + + #define BINV_CUTOFF 110 /* In BINV, do not permit ix too large */ + + #define FAR_FROM_MEAN 20 /* If ix-n*p is larger than this, then + use the "squeeze" algorithm. + Ranlib used 20, and this seems to + be the best choice on my machine as + well */ + + #define LNFACT(x) gsl_sf_lnfact(x) + + inline static double + Stirling (double y1) + { + double y2 = y1 * y1; + double s = + (13860.0 - + (462.0 - (132.0 - (99.0 - 140.0 / y2) / y2) / y2) / y2) / y1 / 166320.0; + return s; + } + + unsigned int + gsl_ran_binomial_tpe (const gsl_rng * rng, double pp, unsigned int n) + { + int ix; /* return value */ + + const double p = (pp > 0.5) ? 1 - pp : pp; /* choose p=min(pp,1-pp) */ + const double q = 1 - p; + const double s = p / q; + const double np = n * p; + + if (n == 0) + return 0; + + /* Inverse cdf logic for small mean (BINV in K+S) */ + + if (np < SMALL_MEAN) + { + double f0 = gsl_pow_int (q, n); /* f(x), starting with x=0 */ + + while (1) + { + /* This while(1) loop will almost certainly only loop once; but + * if u=1 to within a few epsilons of machine precision, then it + * is possible for roundoff to prevent the main loop over ix to + * achieve its proper value. following the ranlib implementation, + * we introduce a check for that situation, and when it occurs, + * we just try again. + */ + + double f = f0; + double u = gsl_rng_uniform (rng); + + for (ix = 0; ix <= BINV_CUTOFF; ++ix) + { + if (u < f) + goto Finish; + u -= f; + /* Use recursion f(x+1) = f(x)*[(n-x)/(x+1)]*[p/(1-p)] */ + f *= s * (n - ix) / (ix + 1); + } + + /* It should be the case that the 'goto Finish' was encountered + * before this point was ever reached. But if we have reached + * this point, then roundoff has prevented u from decreasing + * all the way to zero. This can happen only if the initial u + * was very nearly equal to 1, which is a rare situation. In + * that rare situation, we just try again. + * + * Note, following the ranlib implementation, we loop ix only to + * a hardcoded value of SMALL_MEAN_LARGE_N=110; we could have + * looped to n, and 99.99...% of the time it won't matter. This + * choice, I think is a little more robust against the rare + * roundoff error. If n>LARGE_N, then it is technically + * possible for ix>LARGE_N, but it is astronomically rare, and + * if ix is that large, it is more likely due to roundoff than + * probability, so better to nip it at LARGE_N than to take a + * chance that roundoff will somehow conspire to produce an even + * larger (and more improbable) ix. If n= SMALL_MEAN, we invoke the BTPE algorithm */ + + int k; + + double ffm = np + p; /* ffm = n*p+p */ + int m = (int) ffm; /* m = int floor[n*p+p] */ + double fm = m; /* fm = double m; */ + double xm = fm + 0.5; /* xm = half integer mean (tip of triangle) */ + double npq = np * q; /* npq = n*p*q */ + + /* Compute cumulative area of tri, para, exp tails */ + + /* p1: radius of triangle region; since height=1, also: area of region */ + /* p2: p1 + area of parallelogram region */ + /* p3: p2 + area of left tail */ + /* p4: p3 + area of right tail */ + /* pi/p4: probability of i'th area (i=1,2,3,4) */ + + /* Note: magic numbers 2.195, 4.6, 0.134, 20.5, 15.3 */ + /* These magic numbers are not adjustable...at least not easily! */ + + double p1 = floor (2.195 * sqrt (npq) - 4.6 * q) + 0.5; + + /* xl, xr: left and right edges of triangle */ + double xl = xm - p1; + double xr = xm + p1; + + /* Parameter of exponential tails */ + /* Left tail: t(x) = c*exp(-lambda_l*[xl - (x+0.5)]) */ + /* Right tail: t(x) = c*exp(-lambda_r*[(x+0.5) - xr]) */ + + double c = 0.134 + 20.5 / (15.3 + fm); + double p2 = p1 * (1.0 + c + c); + + double al = (ffm - xl) / (ffm - xl * p); + double lambda_l = al * (1.0 + 0.5 * al); + double ar = (xr - ffm) / (xr * q); + double lambda_r = ar * (1.0 + 0.5 * ar); + double p3 = p2 + c / lambda_l; + double p4 = p3 + c / lambda_r; + + double var, accept; + double u, v; /* random variates */ + + TryAgain: + + /* generate random variates, u specifies which region: Tri, Par, Tail */ + u = gsl_rng_uniform (rng) * p4; + v = gsl_rng_uniform (rng); + + if (u <= p1) + { + /* Triangular region */ + ix = (int) (xm - p1 * v + u); + goto Finish; + } + else if (u <= p2) + { + /* Parallelogram region */ + double x = xl + (u - p1) / c; + v = v * c + 1.0 - fabs (x - xm) / p1; + if (v > 1.0 || v <= 0.0) + goto TryAgain; + ix = (int) x; + } + else if (u <= p3) + { + /* Left tail */ + ix = (int) (xl + log (v) / lambda_l); + if (ix < 0) + goto TryAgain; + v *= ((u - p2) * lambda_l); + } + else + { + /* Right tail */ + ix = (int) (xr - log (v) / lambda_r); + if (ix > (double)n) + goto TryAgain; + v *= ((u - p3) * lambda_r); + } + + /* At this point, the goal is to test whether v <= f(x)/f(m) + * + * v <= f(x)/f(m) = (m!(n-m)! / (x!(n-x)!)) * (p/q)^{x-m} + * + */ + + /* Here is a direct test using logarithms. It is a little + * slower than the various "squeezing" computations below, but + * if things are working, it should give exactly the same answer + * (given the same random number seed). */ + + #ifdef DIRECT + var = log (v); + + accept = + LNFACT (m) + LNFACT (n - m) - LNFACT (ix) - LNFACT (n - ix) + + (ix - m) * log (p / q); + + #else /* SQUEEZE METHOD */ + + /* More efficient determination of whether v < f(x)/f(M) */ + + k = abs (ix - m); + + if (k <= FAR_FROM_MEAN) + { + /* + * If ix near m (ie, |ix-m| ix) + { + int i; + for (i = ix + 1; i <= m; i++) + { + f /= (g / i - s); + } + } + + accept = f; + } + else + { + /* If ix is far from the mean m: k=ABS(ix-m) large */ + + var = log (v); + + if (k < npq / 2 - 1) + { + /* "Squeeze" using upper and lower bounds on + * log(f(x)) The squeeze condition was derived + * under the condition k < npq/2-1 */ + double amaxp = + k / npq * ((k * (k / 3.0 + 0.625) + (1.0 / 6.0)) / npq + 0.5); + double ynorm = -(k * k / (2.0 * npq)); + if (var < ynorm - amaxp) + goto Finish; + if (var > ynorm + amaxp) + goto TryAgain; + } + + /* Now, again: do the test log(v) vs. log f(x)/f(M) */ + + #if USE_EXACT + /* This is equivalent to the above, but is a little (~20%) slower */ + /* There are five log's vs three above, maybe that's it? */ + + accept = LNFACT (m) + LNFACT (n - m) + - LNFACT (ix) - LNFACT (n - ix) + (ix - m) * log (p / q); + + #else /* USE STIRLING */ + /* The "#define Stirling" above corresponds to the first five + * terms in asymptoic formula for + * log Gamma (y) - (y-0.5)log(y) + y - 0.5 log(2*pi); + * See Abramowitz and Stegun, eq 6.1.40 + */ + + /* Note below: two Stirling's are added, and two are + * subtracted. In both K+S, and in the ranlib + * implementation, all four are added. I (jt) believe that + * is a mistake -- this has been confirmed by personal + * correspondence w/ Dr. Kachitvichyanukul. Note, however, + * the corrections are so small, that I couldn't find an + * example where it made a difference that could be + * observed, let alone tested. In fact, define'ing Stirling + * to be zero gave identical results!! In practice, alv is + * O(1), ranging 0 to -10 or so, while the Stirling + * correction is typically O(10^{-5}) ...setting the + * correction to zero gives about a 2% performance boost; + * might as well keep it just to be pendantic. */ + + { + double x1 = ix + 1.0; + double w1 = n - ix + 1.0; + double f1 = fm + 1.0; + double z1 = n + 1.0 - fm; + + accept = xm * log (f1 / x1) + (n - m + 0.5) * log (z1 / w1) + + (ix - m) * log (w1 * p / (x1 * q)) + + Stirling (f1) + Stirling (z1) - Stirling (x1) - Stirling (w1); + } + #endif + #endif + } + + + if (var <= accept) + { + goto Finish; + } + else + { + goto TryAgain; + } + } + + Finish: + + return (pp > 0.5) ? n - ix : ix; + } diff -x.info* -rc2P gsl-1.3/randist/chisq.c gsl-1.4/randist/chisq.c *** gsl-1.3/randist/chisq.c Thu Apr 19 11:55:08 2001 --- gsl-1.4/randist/chisq.c Fri Jul 25 15:18:13 2003 *************** *** 24,30 **** #include ! /* The chisq distributions has the form ! p(x) dx = (1/Gamma(nu/2)) (x/2)^(nu/2 - 1) exp(-x/2) dx for x = 0 ... +infty */ --- 24,30 ---- #include ! /* The chisq distribution has the form ! p(x) dx = (1/(2*Gamma(nu/2))) (x/2)^(nu/2 - 1) exp(-x/2) dx for x = 0 ... +infty */ diff -x.info* -rc2P gsl-1.3/randist/dirichlet.c gsl-1.4/randist/dirichlet.c *** gsl-1.3/randist/dirichlet.c Tue Dec 10 19:56:30 2002 --- gsl-1.4/randist/dirichlet.c Fri Jul 25 15:18:13 2003 *************** *** 21,25 **** #include #include ! #include --- 21,25 ---- #include #include ! #include *************** *** 45,49 **** void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, ! const double alpha[], double theta[]) { size_t i; --- 45,49 ---- void gsl_ran_dirichlet (const gsl_rng * r, const size_t K, ! const double alpha[], double theta[]) { size_t i; *************** *** 76,80 **** double gsl_ran_dirichlet_lnpdf (const size_t K, ! const double alpha[], const double theta[]) { /*We calculate the log of the pdf to minimize the possibility of overflow */ --- 76,80 ---- double gsl_ran_dirichlet_lnpdf (const size_t K, ! const double alpha[], const double theta[]) { /*We calculate the log of the pdf to minimize the possibility of overflow */ diff -x.info* -rc2P gsl-1.3/randist/discrete.c gsl-1.4/randist/discrete.c *** gsl-1.3/randist/discrete.c Thu Apr 19 11:39:14 2001 --- gsl-1.4/randist/discrete.c Fri Jul 25 15:18:13 2003 *************** *** 226,230 **** GSL_ERROR_VAL ("number of events must be a positive integer", ! GSL_EINVAL, 0); } --- 226,230 ---- GSL_ERROR_VAL ("number of events must be a positive integer", ! GSL_EINVAL, 0); } *************** *** 235,240 **** for (k=0; kA)[s]=s; (g->F)[s]=1.0; ! break; } b = pop_stack(Bigs); --- 278,284 ---- s = pop_stack(Smalls); if (size_stack(Bigs) == 0) { (g->A)[s]=s; (g->F)[s]=1.0; ! continue; } b = pop_stack(Bigs); *************** *** 311,314 **** --- 310,317 ---- /* Stacks have been emptied, and A and F have been filled */ + if ( size_stack(Smalls) != 0) { + GSL_ERROR_VAL ("Smalls stack has not been emptied", + GSL_ESANITY, 0 ); + } #if 0 diff -x.info* -rc2P gsl-1.3/randist/exppow.c gsl-1.4/randist/exppow.c *** gsl-1.3/randist/exppow.c Thu Apr 19 11:50:56 2001 --- gsl-1.4/randist/exppow.c Fri Jul 25 15:18:13 2003 *************** *** 56,66 **** if (u > 0.5) ! { ! return z ; ! } else ! { ! return -z ; ! } } else if (b == 1) --- 56,66 ---- if (u > 0.5) ! { ! return z ; ! } else ! { ! return -z ; ! } } else if (b == 1) *************** *** 79,89 **** double s = 1.4489 ; do ! { ! x = gsl_ran_laplace (r, a) ; ! y = gsl_ran_laplace_pdf (x,a) ; ! h = gsl_ran_exppow_pdf (x,a,b) ; ! ratio = h/(s * y) ; ! u = gsl_rng_uniform (r) ; ! } while (u > ratio) ; --- 79,89 ---- double s = 1.4489 ; do ! { ! x = gsl_ran_laplace (r, a) ; ! y = gsl_ran_laplace_pdf (x,a) ; ! h = gsl_ran_exppow_pdf (x,a,b) ; ! ratio = h/(s * y) ; ! u = gsl_rng_uniform (r) ; ! } while (u > ratio) ; *************** *** 103,119 **** /* Scale factor chosen by upper bound on ratio at b = infinity. ! This could be improved by using a rational function ! approximation to the bounding curve. */ double s = 2.4091 ; /* this is sqrt(pi) e / 2 */ do ! { ! x = gsl_ran_gaussian (r, sigma) ; ! y = gsl_ran_gaussian_pdf (x, sigma) ; ! h = gsl_ran_exppow_pdf (x, a, b) ; ! ratio = h/(s * y) ; ! u = gsl_rng_uniform (r) ; ! } while (u > ratio) ; --- 103,119 ---- /* Scale factor chosen by upper bound on ratio at b = infinity. ! This could be improved by using a rational function ! approximation to the bounding curve. */ double s = 2.4091 ; /* this is sqrt(pi) e / 2 */ do ! { ! x = gsl_ran_gaussian (r, sigma) ; ! y = gsl_ran_gaussian_pdf (x, sigma) ; ! h = gsl_ran_exppow_pdf (x, a, b) ; ! ratio = h/(s * y) ; ! u = gsl_rng_uniform (r) ; ! } while (u > ratio) ; diff -x.info* -rc2P gsl-1.3/randist/fdist.c gsl-1.4/randist/fdist.c *** gsl-1.3/randist/fdist.c Thu Apr 19 11:51:31 2001 --- gsl-1.4/randist/fdist.c Fri Jul 25 15:18:13 2003 *************** *** 61,65 **** p = exp (lglg + lg12 - lg1 - lg2) ! * pow (x, nu1 / 2 - 1) * pow (nu2 + nu1 * x, -nu1 / 2 - nu2 / 2); return p; --- 61,65 ---- p = exp (lglg + lg12 - lg1 - lg2) ! * pow (x, nu1 / 2 - 1) * pow (nu2 + nu1 * x, -nu1 / 2 - nu2 / 2); return p; diff -x.info* -rc2P gsl-1.3/randist/gamma.c gsl-1.4/randist/gamma.c *** gsl-1.3/randist/gamma.c Thu Apr 19 11:55:29 2001 --- gsl-1.4/randist/gamma.c Fri Jul 25 15:18:13 2003 *************** *** 67,78 **** for (i = 0; i < a; i++) ! { ! prod *= gsl_rng_uniform_pos (r); ! } /* Note: for 12 iterations we are safe against underflow, since ! the smallest positive random number is O(2^-32). This means ! the smallest possible product is 2^(-12*32) = 10^-116 which ! is within the range of double precision. */ return -log (prod); --- 67,78 ---- for (i = 0; i < a; i++) ! { ! prod *= gsl_rng_uniform_pos (r); ! } /* Note: for 12 iterations we are safe against underflow, since ! the smallest positive random number is O(2^-32). This means ! the smallest possible product is 2^(-12*32) = 10^-116 which ! is within the range of double precision. */ return -log (prod); *************** *** 98,105 **** { do ! { ! y = tan (M_PI * gsl_rng_uniform (r)); ! x = sqa * y + a - 1; ! } while (x <= 0); v = gsl_rng_uniform (r); --- 98,105 ---- { do ! { ! y = tan (M_PI * gsl_rng_uniform (r)); ! x = sqa * y + a - 1; ! } while (x <= 0); v = gsl_rng_uniform (r); *************** *** 124,136 **** if (u < p) ! { ! x = exp ((1 / a) * log (v)); ! q = exp (-x); ! } else ! { ! x = 1 - log (v); ! q = exp ((a - 1) * log (x)); ! } } while (gsl_rng_uniform (r) >= q); --- 124,136 ---- if (u < p) ! { ! x = exp ((1 / a) * log (v)); ! q = exp (-x); ! } else ! { ! x = 1 - log (v); ! q = exp ((a - 1) * log (x)); ! } } while (gsl_rng_uniform (r) >= q); *************** *** 149,155 **** { if (a == 1) ! return 1/b ; else ! return 0 ; } else if (a == 1) --- 149,155 ---- { if (a == 1) ! return 1/b ; else ! return 0 ; } else if (a == 1) diff -x.info* -rc2P gsl-1.3/randist/gauss.c gsl-1.4/randist/gauss.c *** gsl-1.3/randist/gauss.c Tue Jun 4 21:59:07 2002 --- gsl-1.4/randist/gauss.c Fri Jul 25 15:18:13 2003 *************** *** 72,78 **** v = gsl_rng_uniform (r); do ! { ! u = gsl_rng_uniform (r); ! } while (u == 0); /* Const 1.715... = sqrt(8/e) */ --- 72,78 ---- v = gsl_rng_uniform (r); do ! { ! u = gsl_rng_uniform (r); ! } while (u == 0); /* Const 1.715... = sqrt(8/e) */ diff -x.info* -rc2P gsl-1.3/randist/gausstail.c gsl-1.4/randist/gausstail.c *** gsl-1.3/randist/gausstail.c Sat Jun 23 11:31:28 2001 --- gsl-1.4/randist/gausstail.c Fri Jul 25 15:18:13 2003 *************** *** 42,48 **** do ! { ! x = gsl_ran_gaussian (r, 1.0); ! } while (x < s); return x * sigma; --- 42,48 ---- do ! { ! x = gsl_ran_gaussian (r, 1.0); ! } while (x < s); return x * sigma; *************** *** 59,71 **** do ! { ! u = gsl_rng_uniform (r); ! do ! { ! v = gsl_rng_uniform (r); ! } ! while (v == 0.0); ! x = sqrt (s * s - 2 * log (v)); ! } while (x * u > s); return x * sigma; --- 59,71 ---- do ! { ! u = gsl_rng_uniform (r); ! do ! { ! v = gsl_rng_uniform (r); ! } ! while (v == 0.0); ! x = sqrt (s * s - 2 * log (v)); ! } while (x * u > s); return x * sigma; diff -x.info* -rc2P gsl-1.3/randist/gsl_randist.h gsl-1.4/randist/gsl_randist.h *** gsl-1.3/randist/gsl_randist.h Tue Dec 10 19:56:30 2002 --- gsl-1.4/randist/gsl_randist.h Fri Jul 25 15:18:22 2003 *************** *** 41,44 **** --- 41,45 ---- unsigned int gsl_ran_binomial (const gsl_rng * r, double p, unsigned int n); + unsigned int gsl_ran_binomial_tpe (const gsl_rng * r, double pp, unsigned int n); double gsl_ran_binomial_pdf (const unsigned int k, const double p, const unsigned int n); *************** *** 133,137 **** unsigned int gsl_ran_poisson (const gsl_rng * r, double mu); void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[], ! double mu); double gsl_ran_poisson_pdf (const unsigned int k, const double mu); --- 134,138 ---- unsigned int gsl_ran_poisson (const gsl_rng * r, double mu); void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[], ! double mu); double gsl_ran_poisson_pdf (const unsigned int k, const double mu); diff -x.info* -rc2P gsl-1.3/randist/hyperg.c gsl-1.4/randist/hyperg.c *** gsl-1.3/randist/hyperg.c Thu Apr 19 11:53:22 2001 --- gsl-1.4/randist/hyperg.c Fri Jul 25 15:18:13 2003 *************** *** 39,43 **** unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, ! unsigned int t) { const unsigned int n = n1 + n2; --- 39,43 ---- unsigned int gsl_ran_hypergeometric (const gsl_rng * r, unsigned int n1, unsigned int n2, ! unsigned int t) { const unsigned int n = n1 + n2; *************** *** 56,71 **** { for (i = 0 ; i < t ; i++) ! { ! double u = gsl_rng_uniform(r) ; ! ! if (b * u < a) ! { ! k++ ; ! if (k == n1) ! return k ; ! a-- ; ! } ! b-- ; ! } return k; } --- 56,71 ---- { for (i = 0 ; i < t ; i++) ! { ! double u = gsl_rng_uniform(r) ; ! ! if (b * u < a) ! { ! k++ ; ! if (k == n1) ! return k ; ! a-- ; ! } ! b-- ; ! } return k; } *************** *** 73,88 **** { for (i = 0 ; i < n - t ; i++) ! { ! double u = gsl_rng_uniform(r) ; ! ! if (b * u < a) ! { ! k++ ; ! if (k == n1) ! return n1 - k ; ! a-- ; ! } ! b-- ; ! } return n1 - k; } --- 73,88 ---- { for (i = 0 ; i < n - t ; i++) ! { ! double u = gsl_rng_uniform(r) ; ! ! if (b * u < a) ! { ! k++ ; ! if (k == n1) ! return n1 - k ; ! a-- ; ! } ! b-- ; ! } return n1 - k; } *************** *** 93,99 **** double gsl_ran_hypergeometric_pdf (const unsigned int k, ! const unsigned int n1, ! const unsigned int n2, ! unsigned int t) { if (t > n1 + n2) --- 93,99 ---- double gsl_ran_hypergeometric_pdf (const unsigned int k, ! const unsigned int n1, ! const unsigned int n2, ! unsigned int t) { if (t > n1 + n2) diff -x.info* -rc2P gsl-1.3/randist/landau.c gsl-1.4/randist/landau.c *** gsl-1.3/randist/landau.c Wed Jul 18 21:58:31 2001 --- gsl-1.4/randist/landau.c Fri Jul 25 15:18:13 2003 *************** *** 118,122 **** U = exp(V + 1.0); DENLAN = 0.3989422803 * (exp( -1 / U) / sqrt(U)) * ! (1 + (A1[0] + (A1[1] + A1[2] * U) * U) * U); } else if (V < -1) --- 118,122 ---- U = exp(V + 1.0); DENLAN = 0.3989422803 * (exp( -1 / U) / sqrt(U)) * ! (1 + (A1[0] + (A1[1] + A1[2] * U) * U) * U); } else if (V < -1) *************** *** 124,139 **** U = exp( -V - 1); DENLAN = exp( -U) * sqrt(U) * ! (P1[0] + (P1[1] + (P1[2] + (P1[3] + P1[4] * V) * V) * V) * V) / ! (Q1[0] + (Q1[1] + (Q1[2] + (Q1[3] + Q1[4] * V) * V) * V) * V); } else if (V < 1) { DENLAN = (P2[0] + (P2[1] + (P2[2] + (P2[3] + P2[4] * V) * V) * V) * V) / ! (Q2[0] + (Q2[1] + (Q2[2] + (Q2[3] + Q2[4] * V) * V) * V) * V); } else if (V < 5) { DENLAN = (P3[0] + (P3[1] + (P3[2] + (P3[3] + P3[4] * V) * V) * V) * V) / ! (Q3[0] + (Q3[1] + (Q3[2] + (Q3[3] + Q3[4] * V) * V) * V) * V); } else if (V < 12) --- 124,139 ---- U = exp( -V - 1); DENLAN = exp( -U) * sqrt(U) * ! (P1[0] + (P1[1] + (P1[2] + (P1[3] + P1[4] * V) * V) * V) * V) / ! (Q1[0] + (Q1[1] + (Q1[2] + (Q1[3] + Q1[4] * V) * V) * V) * V); } else if (V < 1) { DENLAN = (P2[0] + (P2[1] + (P2[2] + (P2[3] + P2[4] * V) * V) * V) * V) / ! (Q2[0] + (Q2[1] + (Q2[2] + (Q2[3] + Q2[4] * V) * V) * V) * V); } else if (V < 5) { DENLAN = (P3[0] + (P3[1] + (P3[2] + (P3[3] + P3[4] * V) * V) * V) * V) / ! (Q3[0] + (Q3[1] + (Q3[2] + (Q3[3] + Q3[4] * V) * V) * V) * V); } else if (V < 12) *************** *** 141,146 **** U = 1 / V; DENLAN = U * U * ! (P4[0] + (P4[1] + (P4[2] + (P4[3] + P4[4] * U) * U) * U) * U) / ! (Q4[0] + (Q4[1] + (Q4[2] + (Q4[3] + Q4[4] * U) * U) * U) * U); } else if (V < 50) --- 141,146 ---- U = 1 / V; DENLAN = U * U * ! (P4[0] + (P4[1] + (P4[2] + (P4[3] + P4[4] * U) * U) * U) * U) / ! (Q4[0] + (Q4[1] + (Q4[2] + (Q4[3] + Q4[4] * U) * U) * U) * U); } else if (V < 50) *************** *** 148,153 **** U = 1 / V; DENLAN = U * U * ! (P5[0] + (P5[1] + (P5[2] + (P5[3] + P5[4] * U) * U) * U) * U) / ! (Q5[0] + (Q5[1] + (Q5[2] + (Q5[3] + Q5[4] * U) * U) * U) * U); } else if (V < 300) --- 148,153 ---- U = 1 / V; DENLAN = U * U * ! (P5[0] + (P5[1] + (P5[2] + (P5[3] + P5[4] * U) * U) * U) * U) / ! (Q5[0] + (Q5[1] + (Q5[2] + (Q5[3] + Q5[4] * U) * U) * U) * U); } else if (V < 300) *************** *** 155,160 **** U = 1 / V; DENLAN = U * U * ! (P6[0] + (P6[1] + (P6[2] + (P6[3] + P6[4] * U) * U) * U) * U) / ! (Q6[0] + (Q6[1] + (Q6[2] + (Q6[3] + Q6[4] * U) * U) * U) * U); } else --- 155,160 ---- U = 1 / V; DENLAN = U * U * ! (P6[0] + (P6[1] + (P6[2] + (P6[3] + P6[4] * U) * U) * U) * U) / ! (Q6[0] + (Q6[1] + (Q6[2] + (Q6[3] + Q6[4] * U) * U) * U) * U); } else diff -x.info* -rc2P gsl-1.3/randist/levy.c gsl-1.4/randist/levy.c *** gsl-1.3/randist/levy.c Thu Apr 19 11:39:15 2001 --- gsl-1.4/randist/levy.c Fri Jul 25 15:18:13 2003 *************** *** 49,53 **** u = M_PI * (gsl_rng_uniform_pos (r) - 0.5); ! if (alpha == 1) /* cauchy case */ { t = tan (u); --- 49,53 ---- u = M_PI * (gsl_rng_uniform_pos (r) - 0.5); ! if (alpha == 1) /* cauchy case */ { t = tan (u); *************** *** 121,125 **** { X = ((M_PI_2 + beta * V) * tan (V) - ! beta * log (M_PI_2 * W * cos (V) / (M_PI_2 + beta * V))) / M_PI_2; return c * (X + beta * log (c) / M_PI_2); } --- 121,125 ---- { X = ((M_PI_2 + beta * V) * tan (V) - ! beta * log (M_PI_2 * W * cos (V) / (M_PI_2 + beta * V))) / M_PI_2; return c * (X + beta * log (c) / M_PI_2); } *************** *** 131,135 **** X = S * sin (alpha * (V + B)) / pow (cos (V), 1 / alpha) ! * pow (cos (V - alpha * (V + B)) / W, (1 - alpha) / alpha); return c * X; } --- 131,135 ---- X = S * sin (alpha * (V + B)) / pow (cos (V), 1 / alpha) ! * pow (cos (V - alpha * (V + B)) / W, (1 - alpha) / alpha); return c * X; } diff -x.info* -rc2P gsl-1.3/randist/logarithmic.c gsl-1.4/randist/logarithmic.c *** gsl-1.3/randist/logarithmic.c Thu Apr 19 11:39:15 2001 --- gsl-1.4/randist/logarithmic.c Fri Jul 25 15:18:13 2003 *************** *** 47,62 **** if (v <= q*q) ! { ! double x = 1 + log(v)/log(q) ; ! return x ; ! } else if (v <= q) ! { ! return 2; ! } else ! { ! return 1 ; ! } } } --- 47,62 ---- if (v <= q*q) ! { ! double x = 1 + log(v)/log(q) ; ! return x ; ! } else if (v <= q) ! { ! return 2; ! } else ! { ! return 1 ; ! } } } diff -x.info* -rc2P gsl-1.3/randist/multinomial.c gsl-1.4/randist/multinomial.c *** gsl-1.3/randist/multinomial.c Tue Dec 10 19:06:58 2002 --- gsl-1.4/randist/multinomial.c Fri Jul 25 15:18:13 2003 *************** *** 43,47 **** void gsl_ran_multinomial (const gsl_rng * r, const size_t K, ! const unsigned int N, const double p[], unsigned int n[]) { size_t k; --- 43,47 ---- void gsl_ran_multinomial (const gsl_rng * r, const size_t K, ! const unsigned int N, const double p[], unsigned int n[]) { size_t k; *************** *** 81,85 **** double gsl_ran_multinomial_pdf (const size_t K, ! const double p[], const unsigned int n[]) { return exp (gsl_ran_multinomial_lnpdf (K, p, n)); --- 81,85 ---- double gsl_ran_multinomial_pdf (const size_t K, ! const double p[], const unsigned int n[]) { return exp (gsl_ran_multinomial_lnpdf (K, p, n)); *************** *** 89,93 **** double gsl_ran_multinomial_lnpdf (const size_t K, ! const double p[], const unsigned int n[]) { size_t k; --- 89,93 ---- double gsl_ran_multinomial_lnpdf (const size_t K, ! const double p[], const unsigned int n[]) { size_t k; diff -x.info* -rc2P gsl-1.3/randist/poisson.c gsl-1.4/randist/poisson.c *** gsl-1.3/randist/poisson.c Thu Apr 19 11:54:32 2001 --- gsl-1.4/randist/poisson.c Fri Jul 25 15:18:13 2003 *************** *** 44,55 **** if (X >= mu) ! { ! return k + gsl_ran_binomial (r, mu / X, m - 1); ! } else ! { ! k += m; ! mu -= X; ! } } --- 44,55 ---- if (X >= mu) ! { ! return k + gsl_ran_binomial (r, mu / X, m - 1); ! } else ! { ! k += m; ! mu -= X; ! } } *************** *** 71,75 **** void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[], ! double mu) { size_t i; --- 71,75 ---- void gsl_ran_poisson_array (const gsl_rng * r, size_t n, unsigned int array[], ! double mu) { size_t i; diff -x.info* -rc2P gsl-1.3/randist/shuffle.c gsl-1.4/randist/shuffle.c *** gsl-1.3/randist/shuffle.c Mon May 21 11:16:20 2001 --- gsl-1.4/randist/shuffle.c Fri Jul 25 15:18:14 2003 *************** *** 36,46 **** return ; ! do ! { ! char tmp = *a; ! *a++ = *b; ! *b++ = tmp; } ! while (--s > 0); } --- 36,46 ---- return ; ! do ! { ! char tmp = *a; ! *a++ = *b; ! *b++ = tmp; } ! while (--s > 0); } *************** *** 52,60 **** register size_t s = size ; ! do ! { ! *a++ = *b++; } ! while (--s > 0); } --- 52,60 ---- register size_t s = size ; ! do ! { ! *a++ = *b++; } ! while (--s > 0); } *************** *** 81,85 **** int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, ! size_t n, size_t size) { size_t i, j = 0; --- 81,85 ---- int gsl_ran_choose (const gsl_rng * r, void * dest, size_t k, void * src, ! size_t n, size_t size) { size_t i, j = 0; *************** *** 99,106 **** { if ((n - i) * gsl_rng_uniform (r) < k - j) ! { ! copy (dest, j, src, i, size) ; ! j++ ; ! } } --- 99,106 ---- { if ((n - i) * gsl_rng_uniform (r) < k - j) ! { ! copy (dest, j, src, i, size) ; ! j++ ; ! } } *************** *** 110,114 **** void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, ! size_t n, size_t size) { size_t i, j = 0; --- 110,114 ---- void gsl_ran_sample (const gsl_rng * r, void * dest, size_t k, void * src, ! size_t n, size_t size) { size_t i, j = 0; diff -x.info* -rc2P gsl-1.3/randist/sphere.c gsl-1.4/randist/sphere.c *** gsl-1.3/randist/sphere.c Thu Apr 19 11:39:15 2001 --- gsl-1.4/randist/sphere.c Fri Jul 25 15:18:14 2003 *************** *** 58,62 **** * solution, or slower -- as it is on my Sun Sparc 20 at work */ ! double t = 6.2831853071795864 * gsl_rng_uniform (r); /* 2*PI */ *x = cos (t); *y = sin (t); --- 58,62 ---- * solution, or slower -- as it is on my Sun Sparc 20 at work */ ! double t = 6.2831853071795864 * gsl_rng_uniform (r); /* 2*PI */ *x = cos (t); *y = sin (t); *************** *** 84,90 **** while (s > 1.0 || s == 0.0); ! *z = -1 + 2 * s; /* z uniformly distributed from -1 to 1 */ ! a = 2 * sqrt (1 - s); /* factor to adjust x,y so that x^2+y^2 ! * is equal to 1-z^2 */ *x *= a; *y *= a; --- 84,90 ---- while (s > 1.0 || s == 0.0); ! *z = -1 + 2 * s; /* z uniformly distributed from -1 to 1 */ ! a = 2 * sqrt (1 - s); /* factor to adjust x,y so that x^2+y^2 ! * is equal to 1-z^2 */ *x *= a; *y *= a; *************** *** 106,113 **** { for (i = 0; i < n; ++i) ! { ! x[i] = gsl_ran_gaussian (r, 1.0); ! d += x[i] * x[i]; ! } } while (d == 0); --- 106,113 ---- { for (i = 0; i < n; ++i) ! { ! x[i] = gsl_ran_gaussian (r, 1.0); ! d += x[i] * x[i]; ! } } while (d == 0); diff -x.info* -rc2P gsl-1.3/randist/tdist.c gsl-1.4/randist/tdist.c *** gsl-1.3/randist/tdist.c Thu Apr 19 11:55:42 2001 --- gsl-1.4/randist/tdist.c Fri Jul 25 15:18:14 2003 *************** *** 48,62 **** double Y1, Y2, Z, t; do ! { ! Y1 = gsl_ran_ugaussian (r); ! Y2 = gsl_ran_exponential (r, 1 / (nu/2 - 1)); ! Z = Y1 * Y1 / (nu - 2); ! } while (1 - Z < 0 || exp (-Y2 - Z) > (1 - Z)); /* Note that there is a typo in Knuth's formula, the line below ! is taken from the original paper of Marsaglia, Mathematics of ! Computation, 34 (1980), p 234-256 */ t = Y1 / sqrt ((1 - 2 / nu) * (1 - Z)); --- 48,62 ---- double Y1, Y2, Z, t; do ! { ! Y1 = gsl_ran_ugaussian (r); ! Y2 = gsl_ran_exponential (r, 1 / (nu/2 - 1)); ! Z = Y1 * Y1 / (nu - 2); ! } while (1 - Z < 0 || exp (-Y2 - Z) > (1 - Z)); /* Note that there is a typo in Knuth's formula, the line below ! is taken from the original paper of Marsaglia, Mathematics of ! Computation, 34 (1980), p 234-256 */ t = Y1 / sqrt ((1 - 2 / nu) * (1 - Z)); diff -x.info* -rc2P gsl-1.3/randist/test.c gsl-1.4/randist/test.c *** gsl-1.3/randist/test.c Tue Dec 10 19:56:30 2002 --- gsl-1.4/randist/test.c Fri Jul 25 15:18:14 2003 *************** *** 35,42 **** void testMoments (double (*f) (void), const char *name, ! double a, double b, double p); void testPDF (double (*f) (void), double (*pdf) (double), const char *name); void testDiscretePDF (double (*f) (void), double (*pdf) (unsigned int), ! const char *name); void test_shuffle (void); --- 35,42 ---- void testMoments (double (*f) (void), const char *name, ! double a, double b, double p); void testPDF (double (*f) (void), double (*pdf) (double), const char *name); void testDiscretePDF (double (*f) (void), double (*pdf) (unsigned int), ! const char *name); void test_shuffle (void); *************** *** 46,53 **** --- 46,64 ---- double test_bernoulli (void); double test_bernoulli_pdf (unsigned int n); + double test_binomial (void); double test_binomial_pdf (unsigned int n); double test_binomial_large (void); double test_binomial_large_pdf (unsigned int n); + double test_binomial_huge (void); + double test_binomial_huge_pdf (unsigned int n); + + double test_binomial_tpe (void); + double test_binomial_tpe_pdf (unsigned int n); + double test_binomial_large_tpe (void); + double test_binomial_large_tpe_pdf (unsigned int n); + double test_binomial_huge_tpe (void); + double test_binomial_huge_tpe_pdf (unsigned int n); + double test_cauchy (void); double test_cauchy_pdf (double x); *************** *** 61,64 **** --- 72,77 ---- double test_discrete2 (void); double test_discrete2_pdf (unsigned int n); + double test_discrete3 (void); + double test_discrete3_pdf (unsigned int n); double test_erlang (void); double test_erlang_pdf (double x); *************** *** 226,229 **** --- 239,249 ---- testMoments (FUNC (discrete1), 1.5, 3.5, 0.01); + testMoments (FUNC (discrete2), -0.5, 0.5, 1.0/45.0 ); + testMoments (FUNC (discrete2), 8.5, 9.5, 0 ); + + testMoments (FUNC (discrete3), -0.5, 0.5, 0.05 ); + testMoments (FUNC (discrete3), 0.5, 1.5, 0.05 ); + testMoments (FUNC (discrete3), -0.5, 9.5, 0.5 ); + test_dirichlet_moments (); test_multinomial_moments (); *************** *** 294,302 **** --- 314,327 ---- testDiscretePDF (FUNC2 (discrete1)); testDiscretePDF (FUNC2 (discrete2)); + testDiscretePDF (FUNC2 (discrete3)); testDiscretePDF (FUNC2 (poisson)); testDiscretePDF (FUNC2 (poisson_large)); testDiscretePDF (FUNC2 (bernoulli)); testDiscretePDF (FUNC2 (binomial)); + testDiscretePDF (FUNC2 (binomial_tpe)); testDiscretePDF (FUNC2 (binomial_large)); + testDiscretePDF (FUNC2 (binomial_large_tpe)); + testDiscretePDF (FUNC2 (binomial_huge)); + testDiscretePDF (FUNC2 (binomial_huge_tpe)); testDiscretePDF (FUNC2 (geometric)); testDiscretePDF (FUNC2 (geometric1)); *************** *** 326,332 **** { for (j = 0; j < 10; j++) ! { ! count[i][j] = 0; ! } } --- 351,357 ---- { for (j = 0; j < 10; j++) ! { ! count[i][j] = 0; ! } } *************** *** 334,343 **** { for (j = 0; j < 10; j++) ! x[j] = j; gsl_ran_shuffle (r_global, x, 10, sizeof (int)); for (j = 0; j < 10; j++) ! count[x[j]][j]++; } --- 359,368 ---- { for (j = 0; j < 10; j++) ! x[j] = j; gsl_ran_shuffle (r_global, x, 10, sizeof (int)); for (j = 0; j < 10; j++) ! count[x[j]][j]++; } *************** *** 345,360 **** { for (j = 0; j < 10; j++) ! { ! double expected = N / 10.0; ! double d = fabs (count[i][j] - expected); ! double sigma = d / sqrt (expected); ! if (sigma > 5 && d > 1) ! { ! status = 1; ! gsl_test (status, ! "gsl_ran_shuffle %d,%d (%g observed vs %g expected)", ! i, j, count[i][j] / N, 0.1); ! } ! } } --- 370,385 ---- { for (j = 0; j < 10; j++) ! { ! double expected = N / 10.0; ! double d = fabs (count[i][j] - expected); ! double sigma = d / sqrt (expected); ! if (sigma > 5 && d > 1) ! { ! status = 1; ! gsl_test (status, ! "gsl_ran_shuffle %d,%d (%g observed vs %g expected)", ! i, j, count[i][j] / N, 0.1); ! } ! } } *************** *** 379,388 **** { for (j = 0; j < 10; j++) ! x[j] = j; gsl_ran_choose (r_global, y, 3, x, 10, sizeof (int)); for (j = 0; j < 3; j++) ! count[y[j]]++; } --- 404,413 ---- { for (j = 0; j < 10; j++) ! x[j] = j; gsl_ran_choose (r_global, y, 3, x, 10, sizeof (int)); for (j = 0; j < 3; j++) ! count[y[j]]++; } *************** *** 393,402 **** double sigma = d / sqrt (expected); if (sigma > 5 && d > 1) ! { ! status = 1; ! gsl_test (status, ! "gsl_ran_choose %d (%g observed vs %g expected)", ! i, count[i] / N, 0.1); ! } } --- 418,427 ---- double sigma = d / sqrt (expected); if (sigma > 5 && d > 1) ! { ! status = 1; ! gsl_test (status, ! "gsl_ran_choose %d (%g observed vs %g expected)", ! i, count[i] / N, 0.1); ! } } *************** *** 410,414 **** void testMoments (double (*f) (void), const char *name, ! double a, double b, double p) { int i; --- 435,439 ---- void testMoments (double (*f) (void), const char *name, ! double a, double b, double p) { int i; *************** *** 420,424 **** double r = f (); if (r < b && r > a) ! count++; } --- 445,449 ---- double r = f (); if (r < b && r > a) ! count++; } *************** *** 429,433 **** gsl_test (status, "%s [%g,%g] (%g observed vs %g expected)", ! name, a, b, count / N, p); } --- 454,458 ---- gsl_test (status, "%s [%g,%g] (%g observed vs %g expected)", ! name, a, b, count / N, p); } *************** *** 449,456 **** double r = f (); if (r < b && r > a) ! { ! j = (int) ((r - a) / dx); ! count[j]++; ! } } --- 474,481 ---- double r = f (); if (r < b && r > a) ! { ! j = (int) ((r - a) / dx); ! count[j]++; ! } } *************** *** 464,472 **** double sum = 0; ! if (fabs (x) < 1e-10) /* hit the origin exactly */ ! x = 0.0; for (j = 1; j < STEPS; j++) ! sum += pdf (x + j * dx / STEPS); p[i] = 0.5 * (pdf (x) + 2 * sum + pdf (x + dx - 1e-7)) * dx / STEPS; --- 489,497 ---- double sum = 0; ! if (fabs (x) < 1e-10) /* hit the origin exactly */ ! x = 0.0; for (j = 1; j < STEPS; j++) ! sum += pdf (x + j * dx / STEPS); p[i] = 0.5 * (pdf (x) + 2 * sum + pdf (x + dx - 1e-7)) * dx / STEPS; *************** *** 478,503 **** double d = fabs (count[i] - N * p[i]); if (p[i] != 0) ! { ! double s = d / sqrt (N * p[i]); ! status_i = (s > 5) && (d > 1); ! } else ! { ! status_i = (count[i] != 0); ! } status |= status_i; if (status_i) ! gsl_test (status_i, "%s [%g,%g) (%g/%d=%g observed vs %g expected)", ! name, x, x + dx, count[i], N, count[i] / N, p[i]); } if (status == 0) gsl_test (status, "%s, sampling against pdf over range [%g,%g) ", ! name, a, b); } void testDiscretePDF (double (*f) (void), double (*pdf) (unsigned int), ! const char *name) { double count[BINS], p[BINS]; --- 503,528 ---- double d = fabs (count[i] - N * p[i]); if (p[i] != 0) ! { ! double s = d / sqrt (N * p[i]); ! status_i = (s > 5) && (d > 1); ! } else ! { ! status_i = (count[i] != 0); ! } status |= status_i; if (status_i) ! gsl_test (status_i, "%s [%g,%g) (%g/%d=%g observed vs %g expected)", ! name, x, x + dx, count[i], N, count[i] / N, p[i]); } if (status == 0) gsl_test (status, "%s, sampling against pdf over range [%g,%g) ", ! name, a, b); } void testDiscretePDF (double (*f) (void), double (*pdf) (unsigned int), ! const char *name) { double count[BINS], p[BINS]; *************** *** 512,516 **** int r = (int) (f ()); if (r >= 0 && r < BINS) ! count[r]++; } --- 537,541 ---- int r = (int) (f ()); if (r >= 0 && r < BINS) ! count[r]++; } *************** *** 522,542 **** double d = fabs (count[i] - N * p[i]); if (p[i] != 0) ! { ! double s = d / sqrt (N * p[i]); ! status_i = (s > 5) && (d > 1); ! } else ! { ! status_i = (count[i] != 0); ! } status |= status_i; if (status_i) ! gsl_test (status_i, "%s i=%d (%g observed vs %g expected)", ! name, i, count[i] / N, p[i]); } if (status == 0) gsl_test (status, "%s, sampling against pdf over range [%d,%d) ", ! name, 0, BINS); } --- 547,567 ---- double d = fabs (count[i] - N * p[i]); if (p[i] != 0) ! { ! double s = d / sqrt (N * p[i]); ! status_i = (s > 5) && (d > 1); ! } else ! { ! status_i = (count[i] != 0); ! } status |= status_i; if (status_i) ! gsl_test (status_i, "%s i=%d (%g observed vs %g expected)", ! name, i, count[i] / N, p[i]); } if (status == 0) gsl_test (status, "%s, sampling against pdf over range [%d,%d) ", ! name, 0, BINS); } *************** *** 567,571 **** } - double test_binomial (void) --- 592,595 ---- *************** *** 581,584 **** --- 605,621 ---- double + test_binomial_tpe (void) + { + return gsl_ran_binomial_tpe (r_global, 0.3, 5); + } + + double + test_binomial_tpe_pdf (unsigned int n) + { + return gsl_ran_binomial_pdf (n, 0.3, 5); + } + + + double test_binomial_large (void) { *************** *** 593,596 **** --- 630,670 ---- double + test_binomial_large_tpe (void) + { + return gsl_ran_binomial_tpe (r_global, 0.3, 55); + } + + double + test_binomial_large_tpe_pdf (unsigned int n) + { + return gsl_ran_binomial_pdf (n, 0.3, 55); + } + + + double + test_binomial_huge (void) + { + return gsl_ran_binomial (r_global, 0.3, 5500); + } + + double + test_binomial_huge_pdf (unsigned int n) + { + return gsl_ran_binomial_pdf (n, 0.3, 5500); + } + + double + test_binomial_huge_tpe (void) + { + return gsl_ran_binomial_tpe (r_global, 0.3, 5500); + } + + double + test_binomial_huge_tpe_pdf (unsigned int n) + { + return gsl_ran_binomial_pdf (n, 0.3, 5500); + } + + double test_cauchy (void) { *************** *** 748,752 **** if (x <= 0.0 || x >= 1.0) ! return 0.0; /* Out of range */ theta[0] = x; --- 822,826 ---- if (x <= 0.0 || x >= 1.0) ! return 0.0; /* Out of range */ theta[0] = x; *************** *** 784,788 **** gsl_ran_dirichlet (r_global, DIRICHLET_K, alpha, theta); for (k = 0; k < DIRICHLET_K; k++) ! theta_sum[k] += theta[k]; } --- 858,862 ---- gsl_ran_dirichlet (r_global, DIRICHLET_K, alpha, theta); for (k = 0; k < DIRICHLET_K; k++) ! theta_sum[k] += theta[k]; } *************** *** 791,796 **** mean = alpha[k] / alpha_sum; sd = ! sqrt ((alpha[k] * (1. - alpha[k] / alpha_sum)) / ! (alpha_sum * (alpha_sum + 1.))); obs_mean = theta_sum[k] / N; sigma = sqrt ((double) N) * fabs (mean - obs_mean) / sd; --- 865,870 ---- mean = alpha[k] / alpha_sum; sd = ! sqrt ((alpha[k] * (1. - alpha[k] / alpha_sum)) / ! (alpha_sum * (alpha_sum + 1.))); obs_mean = theta_sum[k] / N; sigma = sqrt ((double) N) * fabs (mean - obs_mean) / sd; *************** *** 799,804 **** gsl_test (status, ! "test gsl_ran_dirichlet: mean (%g observed vs %g expected)", ! obs_mean, mean); } } --- 873,878 ---- gsl_test (status, ! "test gsl_ran_dirichlet: mean (%g observed vs %g expected)", ! obs_mean, mean); } } *************** *** 829,833 **** gsl_ran_multinomial (r_global, MULTI_DIM, sum_n, p, x); for (k = 0; k < MULTI_DIM; k++) ! x_sum[k] += x[k]; } --- 903,907 ---- gsl_ran_multinomial (r_global, MULTI_DIM, sum_n, p, x); for (k = 0; k < MULTI_DIM; k++) ! x_sum[k] += x[k]; } *************** *** 843,848 **** gsl_test (status, ! "test gsl_ran_multinomial: mean (%g observed vs %g expected)", ! obs_mean, mean); } } --- 917,922 ---- gsl_test (status, ! "test gsl_ran_multinomial: mean (%g observed vs %g expected)", ! obs_mean, mean); } } *************** *** 851,854 **** --- 925,929 ---- static gsl_ran_discrete_t *g1 = NULL; static gsl_ran_discrete_t *g2 = NULL; + static gsl_ran_discrete_t *g3 = NULL; double *************** *** 884,887 **** --- 959,979 ---- { return gsl_ran_discrete_pdf ((size_t) n, g2); + } + double + test_discrete3 (void) + { + static double P[20]; + if (g3 == NULL) + { int i; + for (i=0; i<20; ++i) P[i]=1.0/20; + g3 = gsl_ran_discrete_preproc (20, P); + } + return gsl_ran_discrete (r_global, g3); + } + + double + test_discrete3_pdf (unsigned int n) + { + return gsl_ran_discrete_pdf ((size_t) n, g3); } diff -x.info* -rc2P gsl-1.3/randist/weibull.c gsl-1.4/randist/weibull.c *** gsl-1.3/randist/weibull.c Thu Apr 19 11:39:15 2001 --- gsl-1.4/randist/weibull.c Fri Jul 25 15:18:14 2003 *************** *** 49,55 **** { if (b == 1) ! return 1/a ; else ! return 0 ; } else if (b == 1) --- 49,55 ---- { if (b == 1) ! return 1/a ; else ! return 0 ; } else if (b == 1) diff -x.info* -rc2P gsl-1.3/rng/ChangeLog gsl-1.4/rng/ChangeLog *** gsl-1.3/rng/ChangeLog Mon Nov 25 19:27:34 2002 --- gsl-1.4/rng/ChangeLog Wed Jul 23 15:10:52 2003 *************** *** 1,2 **** --- 1,39 ---- + 2003-07-23 Brian Gough + + * file.c: added fwrite/fread functions + + 2003-06-12 Brian Gough + + * Makefile.am: removed benchmark programs from default build + + 2003-06-02 Brian Gough + + * waterman14.c: increased RAND_MIN to 1 + + * lecuyer21.c: corrections to RAND_MIN, RAND_MAX, floating point + denominator and seeding modulus + + * fishman20.c (ran_get): use schrage multiplication to avoid + overflow + + * coveyou.c: corrected value of RAND_MIN to 1 and RAND_MAX to 2^32-1 + + * borosh13.c: increased RAND_MIN to 1 + + * knuthran2.c (ran_get): use schrage multiplication to avoid + overflow in intermediate results + + * fishman2x.c (ran_get): use schrage multiplication to avoid + overflow in intermediate results + + * fishman18.c (ran_get): use schrage multiplication to avoid + overflow in intermediate results + + * schrage.c (schrage): utility functions for multiplication of + long integers + + * test.c (main): updated incorrect test values for + gsl_rng_fishman18 gsl_rng_fishman2x gsl_rng_knuthran2 + Mon Nov 25 19:27:10 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/rng/Makefile.am gsl-1.4/rng/Makefile.am *** gsl-1.3/rng/Makefile.am Fri Apr 26 20:15:07 2002 --- gsl-1.4/rng/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 5,20 **** INCLUDES= -I$(top_builddir) ! libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c test_SOURCES = test.c ! test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la TESTS = test ! check_PROGRAMS = test benchmark rng-dump ! ! benchmark_SOURCES = benchmark.c ! benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la ! rng_dump_SOURCES = rng-dump.c ! rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la --- 5,22 ---- INCLUDES= -I$(top_builddir) ! libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c file.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c + CLEANFILES = test.dat + + noinst_HEADERS = schrage.c test_SOURCES = test.c ! test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la TESTS = test ! check_PROGRAMS = test ! # benchmark_SOURCES = benchmark.c ! # benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la ! # rng_dump_SOURCES = rng-dump.c ! # rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/rng/Makefile.in gsl-1.4/rng/Makefile.in *** gsl-1.3/rng/Makefile.in Wed Dec 18 22:38:45 2002 --- gsl-1.4/rng/Makefile.in Thu Aug 14 12:30:13 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslrng.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslrng.la *************** *** 91,209 **** INCLUDES = -I$(top_builddir) ! libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c ! test_SOURCES = test.c ! test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! TESTS = test ! check_PROGRAMS = test benchmark rng-dump ! benchmark_SOURCES = benchmark.c ! benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la ! rng_dump_SOURCES = rng-dump.c ! rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslrng_la_LDFLAGS = ! libgslrng_la_LIBADD = ! libgslrng_la_OBJECTS = borosh13.lo cmrg.lo coveyou.lo default.lo \ ! fishman18.lo fishman20.lo fishman2x.lo gfsr4.lo knuthran2.lo \ ! knuthran.lo lecuyer21.lo minstd.lo mrg.lo mt.lo r250.lo ran0.lo ran1.lo \ ! ran2.lo ran3.lo rand48.lo rand.lo random.lo randu.lo ranf.lo ranlux.lo \ ! ranlxd.lo ranlxs.lo ranmar.lo rng.lo slatec.lo taus.lo taus113.lo \ ! transputer.lo tt.lo types.lo uni32.lo uni.lo vax.lo waterman14.lo \ ! zuf.lo ! check_PROGRAMS = test$(EXEEXT) benchmark$(EXEEXT) rng-dump$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslrng.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! benchmark_OBJECTS = benchmark.$(OBJEXT) ! benchmark_DEPENDENCIES = libgslrng.la ../err/libgslerr.la \ ! ../utils/libutils.la ! benchmark_LDFLAGS = ! rng_dump_OBJECTS = rng-dump.$(OBJEXT) ! rng_dump_DEPENDENCIES = libgslrng.la ../err/libgslerr.la \ ! ../utils/libutils.la ! rng_dump_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar ! GZIP_ENV = --best ! SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) $(benchmark_SOURCES) $(rng_dump_SOURCES) ! OBJECTS = $(libgslrng_la_OBJECTS) $(test_OBJECTS) $(benchmark_OBJECTS) $(rng_dump_OBJECTS) - all: all-redirect .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps rng/Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 147,248 ---- INCLUDES = -I$(top_builddir) ! libgslrng_la_SOURCES = borosh13.c cmrg.c coveyou.c default.c file.c fishman18.c fishman20.c fishman2x.c gfsr4.c knuthran2.c knuthran.c lecuyer21.c minstd.c mrg.c mt.c r250.c ran0.c ran1.c ran2.c ran3.c rand48.c rand.c random.c randu.c ranf.c ranlux.c ranlxd.c ranlxs.c ranmar.c rng.c slatec.c taus.c taus113.c transputer.c tt.c types.c uni32.c uni.c vax.c waterman14.c zuf.c ! CLEANFILES = test.dat ! noinst_HEADERS = schrage.c ! test_SOURCES = test.c ! test_LDADD = libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! TESTS = test ! check_PROGRAMS = test ! subdir = rng ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslrng_la_LDFLAGS = ! libgslrng_la_LIBADD = ! am_libgslrng_la_OBJECTS = borosh13.lo cmrg.lo coveyou.lo default.lo \ ! file.lo fishman18.lo fishman20.lo fishman2x.lo gfsr4.lo \ ! knuthran2.lo knuthran.lo lecuyer21.lo minstd.lo mrg.lo mt.lo \ ! r250.lo ran0.lo ran1.lo ran2.lo ran3.lo rand48.lo rand.lo \ ! random.lo randu.lo ranf.lo ranlux.lo ranlxd.lo ranlxs.lo \ ! ranmar.lo rng.lo slatec.lo taus.lo taus113.lo transputer.lo \ ! tt.lo types.lo uni32.lo uni.lo vax.lo waterman14.lo zuf.lo ! libgslrng_la_OBJECTS = $(am_libgslrng_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslrng.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO ! SOURCES = $(libgslrng_la_SOURCES) $(test_SOURCES) ! all: all-am .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu rng/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslrng.la: $(libgslrng_la_OBJECTS) $(libgslrng_la_DEPENDENCIES) + $(LINK) $(libgslrng_la_LDFLAGS) $(libgslrng_la_OBJECTS) $(libgslrng_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 214,411 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslrng.la: $(libgslrng_la_OBJECTS) $(libgslrng_la_DEPENDENCIES) ! $(LINK) $(libgslrng_la_LDFLAGS) $(libgslrng_la_OBJECTS) $(libgslrng_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! ! benchmark$(EXEEXT): $(benchmark_OBJECTS) $(benchmark_DEPENDENCIES) ! @rm -f benchmark$(EXEEXT) ! $(LINK) $(benchmark_LDFLAGS) $(benchmark_OBJECTS) $(benchmark_LDADD) $(LIBS) ! ! rng-dump$(EXEEXT): $(rng_dump_OBJECTS) $(rng_dump_DEPENDENCIES) ! @rm -f rng-dump$(EXEEXT) ! $(LINK) $(rng_dump_LDFLAGS) $(rng_dump_OBJECTS) $(rng_dump_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = rng distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: clean-generic: distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 253,533 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ ! clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES ctags distclean distclean-compile \ ! distclean-generic distclean-libtool distclean-tags distdir dvi \ ! dvi-am info info-am install install-am install-data \ ! install-data-am install-exec install-exec-am install-info \ ! install-info-am install-man install-pkgincludeHEADERS \ ! install-strip installcheck installcheck-am installdirs \ ! maintainer-clean maintainer-clean-generic mostlyclean \ ! mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ ! pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS + # benchmark_SOURCES = benchmark.c + # benchmark_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la + # rng_dump_SOURCES = rng-dump.c + # rng_dump_LDADD = libgslrng.la ../err/libgslerr.la ../utils/libutils.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/rng/TODO gsl-1.4/rng/TODO *** gsl-1.3/rng/TODO Fri Jul 26 17:46:53 2002 --- gsl-1.4/rng/TODO Wed Jul 16 15:21:51 2003 *************** *** 1,2 **** --- 1,16 ---- + * gfsr: for consistency (Charles A. Wemple). Make this change in 2.0 + + 127a142 + > state->nd = i-1; + 133,134c148,149 + < for (i=0; i<32; ++i) { + < int k=7+i*3; + --- + > for (i=0; i<32; i++) { + > int k=7*i+3; + 141d155 + < state->nd = i; + + * Sort out "const" in prototypes, it looks odd since there are consts for many functions which modify the state. (Applies to both qrng and rng) Only in gsl-1.3/rng: benchmark.c diff -x.info* -rc2P gsl-1.3/rng/borosh13.c gsl-1.4/rng/borosh13.c *** gsl-1.3/rng/borosh13.c Sun Dec 2 15:55:38 2001 --- gsl-1.4/rng/borosh13.c Fri Jul 25 15:18:14 2003 *************** *** 28,32 **** * It is called "Borosh - Niederreiter" * ! * This implementation copyright (C) 2001 Carlo Perassi. */ --- 28,33 ---- * It is called "Borosh - Niederreiter" * ! * This implementation copyright (C) 2001 Carlo Perassi and ! * (C) 2003 Heiko Bauke. */ *************** *** 36,40 **** #define AA 1812433253UL ! #define MM 0xffffffffUL /* 2 ^ 32 - 1 */ static inline unsigned long int ran_get (void *vstate); --- 37,41 ---- #define AA 1812433253UL ! #define MM 0xffffffffUL /* 2 ^ 32 - 1 */ static inline unsigned long int ran_get (void *vstate); *************** *** 72,76 **** if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s & MM; --- 73,77 ---- if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s & MM; *************** *** 80,86 **** static const gsl_rng_type ran_type = { ! "borosh13", /* name */ ! MM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 81,87 ---- static const gsl_rng_type ran_type = { ! "borosh13", /* name */ ! MM, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/cmrg.c gsl-1.4/rng/cmrg.c *** gsl-1.3/rng/cmrg.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/cmrg.c Fri Jul 25 15:18:14 2003 *************** *** 85,90 **** typedef struct { ! long int x1, x2, x3; /* first component */ ! long int y1, y2, y3; /* second component */ } cmrg_state_t; --- 85,90 ---- typedef struct { ! long int x1, x2, x3; /* first component */ ! long int y1, y2, y3; /* second component */ } cmrg_state_t; *************** *** 159,163 **** if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) --- 159,163 ---- if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) *************** *** 187,193 **** static const gsl_rng_type cmrg_type = ! {"cmrg", /* name */ ! 2147483646, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (cmrg_state_t), &cmrg_set, --- 187,193 ---- static const gsl_rng_type cmrg_type = ! {"cmrg", /* name */ ! 2147483646, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (cmrg_state_t), &cmrg_set, diff -x.info* -rc2P gsl-1.3/rng/coveyou.c gsl-1.4/rng/coveyou.c *** gsl-1.3/rng/coveyou.c Sun Dec 2 15:55:43 2001 --- gsl-1.4/rng/coveyou.c Fri Jul 25 15:18:14 2003 *************** *** 26,31 **** * Section 3.2.2 * ! * This implementation copyright (C) 2001 Carlo Perassi. ! * I reorganized the code to use the rng framework of GSL. */ --- 26,32 ---- * Section 3.2.2 * ! * This implementation copyright (C) 2001 Carlo Perassi ! * and (C) 2003 Heiko Bauke. ! * Carlo Perassi reorganized the code to use the rng framework of GSL. */ *************** *** 34,38 **** #include ! #define MM 0xffffffffUL /* 2 ^ 32 */ static inline unsigned long int ran_get (void *vstate); --- 35,39 ---- #include ! #define MM 0xffffffffUL /* 2 ^ 32 */ static inline unsigned long int ran_get (void *vstate); *************** *** 80,86 **** static const gsl_rng_type ran_type = { ! "coveyou", /* name */ ! MM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 81,87 ---- static const gsl_rng_type ran_type = { ! "coveyou", /* name */ ! MM-1, /* RAND_MAX */ ! 2, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/default.c gsl-1.4/rng/default.c *** gsl-1.3/rng/default.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/default.c Fri Jul 25 15:18:14 2003 *************** *** 43,47 **** for (t = t0; *t != 0; t++) ! { if (strcmp (p, (*t)->name) == 0) { --- 43,47 ---- for (t = t0; *t != 0; t++) ! { if (strcmp (p, (*t)->name) == 0) { *************** *** 49,73 **** break; } ! } if (gsl_rng_default == 0) ! { ! int i = 0; ! fprintf (stderr, "GSL_RNG_TYPE=%s not recognized\n", p); ! fprintf (stderr, "Valid generator types are:\n"); ! for (t = t0; *t != 0; t++) ! { ! fprintf (stderr, " %18s", (*t)->name); ! if ((++i) % 4 == 0) ! { ! putchar ('\n'); ! } ! } ! GSL_ERROR_VAL ("unknown generator", GSL_EINVAL, 0); ! } fprintf (stderr, "GSL_RNG_TYPE=%s\n", gsl_rng_default->name); --- 49,73 ---- break; } ! } if (gsl_rng_default == 0) ! { ! int i = 0; ! fprintf (stderr, "GSL_RNG_TYPE=%s not recognized\n", p); ! fprintf (stderr, "Valid generator types are:\n"); ! for (t = t0; *t != 0; t++) ! { ! fprintf (stderr, " %18s", (*t)->name); ! if ((++i) % 4 == 0) ! { ! putchar ('\n'); ! } ! } ! GSL_ERROR_VAL ("unknown generator", GSL_EINVAL, 0); ! } fprintf (stderr, "GSL_RNG_TYPE=%s\n", gsl_rng_default->name); diff -x.info* -rc2P gsl-1.3/rng/file.c gsl-1.4/rng/file.c *** gsl-1.3/rng/file.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/rng/file.c Fri Jul 25 15:18:14 2003 *************** *** 0 **** --- 1,57 ---- + /* rng/file.c + * + * Copyright (C) 2003 Olaf Lenz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + #include + #include + #include + #include + + int + gsl_rng_fread (FILE * stream, gsl_rng * r) + { + size_t n = r->type->size ; + + char * state = r->state; + + size_t items = fread (state, 1, n, stream); + + if (items != n) + { + GSL_ERROR ("fread failed", GSL_EFAILED); + } + + return GSL_SUCCESS; + } + + int + gsl_rng_fwrite (FILE * stream, const gsl_rng * r) + { + size_t n = r->type->size ; + + char * state = r->state; + + size_t items = fwrite (state, 1, n, stream); + + if (items != n) + { + GSL_ERROR ("fwrite failed", GSL_EFAILED); + } + + return GSL_SUCCESS; + } diff -x.info* -rc2P gsl-1.3/rng/fishman18.c gsl-1.4/rng/fishman18.c *** gsl-1.3/rng/fishman18.c Sun Dec 2 15:55:48 2001 --- gsl-1.4/rng/fishman18.c Fri Jul 25 15:18:14 2003 *************** *** 26,32 **** * Page 106-108 * ! * It is called "Fishman - Moore III" * ! * This implementation copyright (C) 2001 Carlo Perassi. */ --- 26,33 ---- * Page 106-108 * ! * It is called "Fishman - Moore III". * ! * This implementation copyright (C) 2001 Carlo Perassi ! * and (C) 2003 Heiko Bauke. */ *************** *** 35,40 **** #include ! #define AA 62089911UL ! #define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ static inline unsigned long int ran_get (void *vstate); --- 36,44 ---- #include ! #include "schrage.c" ! ! #define AA 62089911UL ! #define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ ! #define CEIL_SQRT_MM 46341UL /* ceil(sqrt(2 ^ 31 - 1)) */ static inline unsigned long int ran_get (void *vstate); *************** *** 53,57 **** ran_state_t *state = (ran_state_t *) vstate; ! state->x = (AA * state->x) & MM; return state->x; --- 57,61 ---- ran_state_t *state = (ran_state_t *) vstate; ! state->x = schrage_mult (AA, state->x, MM, CEIL_SQRT_MM); return state->x; *************** *** 63,67 **** ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483648.0; } --- 67,71 ---- ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483647.0; } *************** *** 71,78 **** ran_state_t *state = (ran_state_t *) vstate; ! if (s == 0) ! s = 1; /* default seed is 1 */ ! state->x = s & MM; return; --- 75,82 ---- ran_state_t *state = (ran_state_t *) vstate; ! if ((s % MM) == 0) ! s = 1; /* default seed is 1 */ ! state->x = s % MM; return; *************** *** 80,86 **** static const gsl_rng_type ran_type = { ! "fishman18", /* name */ ! MM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 84,90 ---- static const gsl_rng_type ran_type = { ! "fishman18", /* name */ ! MM - 1, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/fishman20.c gsl-1.4/rng/fishman20.c *** gsl-1.3/rng/fishman20.c Sun Dec 2 15:55:53 2001 --- gsl-1.4/rng/fishman20.c Fri Jul 25 15:18:14 2003 *************** *** 28,32 **** * It is called "Fishman" * ! * This implementation copyright (C) 2001 Carlo Perassi. */ --- 28,33 ---- * It is called "Fishman" * ! * This implementation copyright (C) 2001 Carlo Perassi ! * and (C) 2003 Heiko Bauke. */ *************** *** 35,45 **** #include - #define AA 48271UL - #define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ - static inline unsigned long int ran_get (void *vstate); static double ran_get_double (void *vstate); static void ran_set (void *state, unsigned long int s); typedef struct { --- 36,45 ---- #include static inline unsigned long int ran_get (void *vstate); static double ran_get_double (void *vstate); static void ran_set (void *state, unsigned long int s); + static const long int m = 2147483647, a = 48271, q = 44488, r = 3399; + typedef struct { *************** *** 53,57 **** ran_state_t *state = (ran_state_t *) vstate; ! state->x = (AA * state->x) & MM; return state->x; --- 53,69 ---- ran_state_t *state = (ran_state_t *) vstate; ! const unsigned long int x = state->x; ! ! const long int h = x / q; ! const long int t = a * (x - h * q) - h * r; ! ! if (t < 0) ! { ! state->x = t + m; ! } ! else ! { ! state->x = t; ! } return state->x; *************** *** 63,67 **** ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483648.0; } --- 75,79 ---- ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483647.0; } *************** *** 71,78 **** ran_state_t *state = (ran_state_t *) vstate; ! if (s == 0) ! s = 1; /* default seed is 1 */ ! state->x = s & MM; return; --- 83,90 ---- ran_state_t *state = (ran_state_t *) vstate; ! if ((s%m) == 0) ! s = 1; /* default seed is 1 */ ! state->x = s & m; return; *************** *** 80,86 **** static const gsl_rng_type ran_type = { ! "fishman20", /* name */ ! MM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 92,98 ---- static const gsl_rng_type ran_type = { ! "fishman20", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/fishman2x.c gsl-1.4/rng/fishman2x.c *** gsl-1.3/rng/fishman2x.c Sun Dec 2 15:56:03 2001 --- gsl-1.4/rng/fishman2x.c Fri Jul 25 15:18:14 2003 *************** *** 28,32 **** * It is called "Fishman - L'Ecuyer" * ! * This implementation copyright (C) 2001 Carlo Perassi. */ --- 28,33 ---- * It is called "Fishman - L'Ecuyer" * ! * This implementation copyright (C) 2001 Carlo Perassi ! * and (C) 2003 Heiko Bauke. */ *************** *** 37,45 **** /* Fishman */ #define AAA_F 48271UL ! #define MMM_F 0x7fffffffUL /* 2 ^ 31 - 1 */ /* L'Ecuyer */ #define AAA_L 40692UL ! #define MMM_L 0x7fffff07UL /* 2 ^ 31 - 249 */ #define QQQ_L 52774UL #define RRR_L 3791UL --- 38,48 ---- /* Fishman */ #define AAA_F 48271UL ! #define MMM_F 0x7fffffffUL /* 2 ^ 31 - 1 */ ! #define QQQ_F 44488UL ! #define RRR_F 3399UL /* L'Ecuyer */ #define AAA_L 40692UL ! #define MMM_L 0x7fffff07UL /* 2 ^ 31 - 249 */ #define QQQ_L 52774UL #define RRR_L 3791UL *************** *** 62,75 **** ran_state_t *state = (ran_state_t *) vstate; ! long int y = state->y; ! long int r = RRR_L * (y / QQQ_L); ! y = AAA_L * (y % QQQ_L) - r; if (y < 0) ! y += MMM_L; state->y = y; ! state->x = (AAA_F * state->x) & MMM_F; ! state->z = (state->x - state->y) & MMM_F; return state->z; --- 65,84 ---- ran_state_t *state = (ran_state_t *) vstate; ! long int y, r; ! r = RRR_F * (state->x / QQQ_F); ! y = AAA_F * (state->x % QQQ_F) - r; if (y < 0) ! y += MMM_F; ! state->x = y; + r = RRR_L * (state->y / QQQ_L); + y = AAA_L * (state->y % QQQ_L) - r; + if (y < 0) + y += MMM_L; state->y = y; ! ! state->z = (state->x > state->y) ? (state->x - state->y) : ! MMM_F + state->x - state->y; return state->z; *************** *** 81,85 **** ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483648.0; } --- 90,94 ---- ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483647.0; } *************** *** 89,98 **** ran_state_t *state = (ran_state_t *) vstate; ! if (s == 0) ! s = 1; /* default seed is 1 */ ! state->x = s & MMM_F; ! state->y = s & MMM_L; ! state->z = s & MMM_F; return; --- 98,108 ---- ran_state_t *state = (ran_state_t *) vstate; ! if ((s % MMM_F) == 0 || (s % MMM_L) == 0) ! s = 1; /* default seed is 1 */ ! state->x = s % MMM_F; ! state->y = s % MMM_L; ! state->z = (state->x > state->y) ? (state->x - state->y) : ! MMM_F + state->x - state->y; return; *************** *** 100,106 **** static const gsl_rng_type ran_type = { ! "fishman2x", /* name */ ! MMM_F, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 110,116 ---- static const gsl_rng_type ran_type = { ! "fishman2x", /* name */ ! MMM_F - 1, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/gfsr4.c gsl-1.4/rng/gfsr4.c *** gsl-1.3/rng/gfsr4.c Sun Dec 2 15:39:20 2001 --- gsl-1.4/rng/gfsr4.c Fri Jul 25 15:18:14 2003 *************** *** 26,43 **** offsets are as random as can be measured, using the author's test. - If the offsets are appropriately chosen (such the one ones in - this implementatin), then the sequence is said to be maximal. - I'm not sure what that means, but I would guess that means all - states are part of the same cycle, which would mean that the - period for this generator is astronomical; it is - (2^K)^D ~ 10^93334 - where K=32 is the number of bits in the word, and D is the longest - lag. This would also mean that any one random number could - easily be zero; ie 0 <= ra[] < 2^32. - - Ziff doesn't say so, but it seems to me that the bits are - completely independent here, so one could use this as an efficient - bit generator; each number supplying 32 random bits. - This implementation uses the values suggested the the author's example on p392, but altered to fit the GSL framework. The "state" --- 26,29 ---- *************** *** 117,121 **** if (s == 0) ! s = 4357; /* the default seed is 4357 */ /* We use the congruence s_{n+1} = (69069*s_n) mod 2^32 to --- 103,107 ---- if (s == 0) ! s = 4357; /* the default seed is 4357 */ /* We use the congruence s_{n+1} = (69069*s_n) mod 2^32 to *************** *** 132,141 **** unsigned long bit = msb ; for (j = 0; j < 32; j++) ! { ! s = LCG(s) ; ! if (s & msb) ! t |= bit ; ! bit >>= 1 ; ! } state->ra[i] = t ; } --- 118,127 ---- unsigned long bit = msb ; for (j = 0; j < 32; j++) ! { ! s = LCG(s) ; ! if (s & msb) ! t |= bit ; ! bit >>= 1 ; ! } state->ra[i] = t ; } *************** *** 147,152 **** for (i=0; i<32; ++i) { int k=7+i*3; ! state->ra[k] &= mask; /* Turn off bits left of the diagonal */ ! state->ra[k] |= msb; /* Turn on the diagonal bit */ mask >>= 1; msb >>= 1; --- 133,138 ---- for (i=0; i<32; ++i) { int k=7+i*3; ! state->ra[k] &= mask; /* Turn off bits left of the diagonal */ ! state->ra[k] |= msb; /* Turn on the diagonal bit */ mask >>= 1; msb >>= 1; *************** *** 157,163 **** static const gsl_rng_type gfsr4_type = ! {"gfsr4", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (gfsr4_state_t), &gfsr4_set, --- 143,149 ---- static const gsl_rng_type gfsr4_type = ! {"gfsr4", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (gfsr4_state_t), &gfsr4_set, diff -x.info* -rc2P gsl-1.3/rng/gsl_rng.h gsl-1.4/rng/gsl_rng.h *** gsl-1.3/rng/gsl_rng.h Mon Jun 10 13:12:54 2002 --- gsl-1.4/rng/gsl_rng.h Fri Jul 25 15:18:22 2003 *************** *** 136,139 **** --- 136,143 ---- unsigned long int gsl_rng_min (const gsl_rng * r); const char *gsl_rng_name (const gsl_rng * r); + + int gsl_rng_fread (FILE * stream, gsl_rng * r); + int gsl_rng_fwrite (FILE * stream, const gsl_rng * r); + size_t gsl_rng_size (const gsl_rng * r); void * gsl_rng_state (const gsl_rng * r); *************** *** 149,153 **** ! #ifdef HAVE_INLINE extern inline unsigned long int gsl_rng_get (const gsl_rng * r); --- 153,157 ---- ! #if HAVE_INLINE extern inline unsigned long int gsl_rng_get (const gsl_rng * r); *************** *** 194,198 **** { GSL_ERROR_VAL ("n exceeds maximum value of generator", ! GSL_EINVAL, 0) ; } --- 198,202 ---- { GSL_ERROR_VAL ("n exceeds maximum value of generator", ! GSL_EINVAL, 0) ; } diff -x.info* -rc2P gsl-1.3/rng/knuthran.c gsl-1.4/rng/knuthran.c *** gsl-1.3/rng/knuthran.c Sun Dec 2 15:56:08 2001 --- gsl-1.4/rng/knuthran.c Fri Jul 25 15:18:14 2003 *************** *** 36,51 **** #include ! #define BUFLEN 2009 /* [Brian]: length of the buffer aa[] */ ! #define KK 100 /* the long lag */ ! #define LL 37 /* the short lag */ ! #define MM (1L << 30) /* the modulus */ ! #define TT 70 /* guaranteed separation between streams */ ! ! #define evenize(x) ((x) & (MM - 2)) /* make x even */ ! #define is_odd(x) ((x) & 1) /* the units bit of x */ ! #define mod_diff(x, y) (((x) - (y)) & (MM - 1)) /* (x - y) mod MM */ static inline void ran_array (unsigned long int aa[], unsigned int n, ! unsigned long int ran_x[]); static inline unsigned long int ran_get (void *vstate); static double ran_get_double (void *vstate); --- 36,51 ---- #include ! #define BUFLEN 2009 /* [Brian]: length of the buffer aa[] */ ! #define KK 100 /* the long lag */ ! #define LL 37 /* the short lag */ ! #define MM (1L << 30) /* the modulus */ ! #define TT 70 /* guaranteed separation between streams */ ! ! #define evenize(x) ((x) & (MM - 2)) /* make x even */ ! #define is_odd(x) ((x) & 1) /* the units bit of x */ ! #define mod_diff(x, y) (((x) - (y)) & (MM - 1)) /* (x - y) mod MM */ static inline void ran_array (unsigned long int aa[], unsigned int n, ! unsigned long int ran_x[]); static inline unsigned long int ran_get (void *vstate); static double ran_get_double (void *vstate); *************** *** 55,61 **** { unsigned int i; ! unsigned long int aa[BUFLEN]; /* [Carlo]: I can't pass n to ran_array like ! Knuth does */ ! unsigned long int ran_x[KK]; /* the generator state */ } ran_state_t; --- 55,61 ---- { unsigned int i; ! unsigned long int aa[BUFLEN]; /* [Carlo]: I can't pass n to ran_array like ! Knuth does */ ! unsigned long int ran_x[KK]; /* the generator state */ } ran_state_t; *************** *** 103,107 **** ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 1073741824.0; /* [Carlo]: RAND_MAX + 1 */ } --- 103,107 ---- ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 1073741824.0; /* [Carlo]: RAND_MAX + 1 */ } *************** *** 111,115 **** ran_state_t *state = (ran_state_t *) vstate; ! long x[KK + KK - 1]; /* the preparation buffer */ register int j; --- 111,115 ---- ran_state_t *state = (ran_state_t *) vstate; ! long x[KK + KK - 1]; /* the preparation buffer */ register int j; *************** *** 119,156 **** for (j = 0; j < KK; j++) { ! x[j] = ss; /* bootstrap the buffer */ ss <<= 1; ! if (ss >= MM) /* cyclic shift 29 bits */ ! ss -= MM - 2; } for (; j < KK + KK - 1; j++) x[j] = 0; ! x[1]++; /* make x[1] (and only x[1]) odd */ ss = s & (MM - 1); t = TT - 1; while (t) { ! for (j = KK - 1; j > 0; j--) /* square */ ! x[j + j] = x[j]; for (j = KK + KK - 2; j > KK - LL; j -= 2) ! x[KK + KK - 1 - j] = evenize (x[j]); for (j = KK + KK - 2; j >= KK; j--) ! if (is_odd (x[j])) ! { ! x[j - (KK - LL)] = mod_diff (x[j - (KK - LL)], x[j]); ! x[j - KK] = mod_diff (x[j - KK], x[j]); ! } if (is_odd (ss)) ! { /* multiply by "z" */ ! for (j = KK; j > 0; j--) ! x[j] = x[j - 1]; ! x[0] = x[KK]; /* shift the buffer cyclically */ ! if (is_odd (x[KK])) ! x[LL] = mod_diff (x[LL], x[KK]); ! } if (ss) ! ss >>= 1; else ! t--; } --- 119,156 ---- for (j = 0; j < KK; j++) { ! x[j] = ss; /* bootstrap the buffer */ ss <<= 1; ! if (ss >= MM) /* cyclic shift 29 bits */ ! ss -= MM - 2; } for (; j < KK + KK - 1; j++) x[j] = 0; ! x[1]++; /* make x[1] (and only x[1]) odd */ ss = s & (MM - 1); t = TT - 1; while (t) { ! for (j = KK - 1; j > 0; j--) /* square */ ! x[j + j] = x[j]; for (j = KK + KK - 2; j > KK - LL; j -= 2) ! x[KK + KK - 1 - j] = evenize (x[j]); for (j = KK + KK - 2; j >= KK; j--) ! if (is_odd (x[j])) ! { ! x[j - (KK - LL)] = mod_diff (x[j - (KK - LL)], x[j]); ! x[j - KK] = mod_diff (x[j - KK], x[j]); ! } if (is_odd (ss)) ! { /* multiply by "z" */ ! for (j = KK; j > 0; j--) ! x[j] = x[j - 1]; ! x[0] = x[KK]; /* shift the buffer cyclically */ ! if (is_odd (x[KK])) ! x[LL] = mod_diff (x[LL], x[KK]); ! } if (ss) ! ss >>= 1; else ! t--; } *************** *** 166,172 **** static const gsl_rng_type ran_type = { ! "knuthran", /* name */ ! 0x3fffffffUL, /* RAND_MAX *//* [Carlo]: (2 ^ 30) - 1 */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 166,172 ---- static const gsl_rng_type ran_type = { ! "knuthran", /* name */ ! 0x3fffffffUL, /* RAND_MAX *//* [Carlo]: (2 ^ 30) - 1 */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/knuthran2.c gsl-1.4/rng/knuthran2.c *** gsl-1.3/rng/knuthran2.c Sun Dec 2 15:56:12 2001 --- gsl-1.4/rng/knuthran2.c Fri Jul 25 15:18:14 2003 *************** *** 26,30 **** * Page 108 * ! * This implementation copyright (C) 2001 Carlo Perassi. */ --- 26,31 ---- * Page 108 * ! * This implementation copyright (C) 2001 Carlo Perassi ! * and (C) 2003 Heiko Bauke. */ *************** *** 33,39 **** #include ! #define AA1 271828183UL ! #define AA2 314159269UL ! #define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ static inline unsigned long int ran_get (void *vstate); --- 34,43 ---- #include ! #include "schrage.c" ! ! #define AA1 271828183UL ! #define AA2 1833324378UL /* = -314159269 mod (2 ^ 31 -1) */ ! #define MM 0x7fffffffUL /* 2 ^ 31 - 1 */ ! #define CEIL_SQRT_MM 46341UL /* sqrt(2 ^ 31 - 1) */ static inline unsigned long int ran_get (void *vstate); *************** *** 53,58 **** ran_state_t *state = (ran_state_t *) vstate; ! unsigned long int xtmp = state->x1; ! state->x1 = (AA1 * state->x1 - AA2 * state->x0) & MM; state->x0 = xtmp; --- 57,67 ---- ran_state_t *state = (ran_state_t *) vstate; ! const unsigned long int xtmp = state->x1; ! state->x1 = schrage_mult (AA1, state->x1, MM, CEIL_SQRT_MM) ! + schrage_mult (AA2, state->x0, MM, CEIL_SQRT_MM); ! ! if (state->x1 >= MM) ! state->x1 -= MM; ! state->x0 = xtmp; *************** *** 65,69 **** ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483648.0; } --- 74,78 ---- ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483647.0; } *************** *** 73,81 **** ran_state_t *state = (ran_state_t *) vstate; ! if (s == 0) ! s = 1; /* default seed is 1 */ ! state->x0 = s & MM; ! state->x1 = s & MM; return; --- 82,90 ---- ran_state_t *state = (ran_state_t *) vstate; ! if ((s % MM) == 0) ! s = 1; /* default seed is 1 */ ! state->x0 = s % MM; ! state->x1 = s % MM; return; *************** *** 83,89 **** static const gsl_rng_type ran_type = { ! "knuthran2", /* name */ ! MM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 92,98 ---- static const gsl_rng_type ran_type = { ! "knuthran2", /* name */ ! MM - 1L, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/lecuyer21.c gsl-1.4/rng/lecuyer21.c *** gsl-1.3/rng/lecuyer21.c Sun Dec 2 15:55:58 2001 --- gsl-1.4/rng/lecuyer21.c Fri Jul 25 15:18:14 2003 *************** *** 26,30 **** * Page 108 * ! * This implementation copyright (C) 2001 Brian Gough, Carlo Perassi. */ --- 26,31 ---- * Page 108 * ! * This implementation copyright (C) 2001 Brian Gough, Carlo Perassi ! * and (C) 2003 Heiko Bauke. */ *************** *** 70,74 **** ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483400.0; } --- 71,75 ---- ran_state_t *state = (ran_state_t *) vstate; ! return ran_get (state) / 2147483399.0; } *************** *** 78,85 **** ran_state_t *state = (ran_state_t *) vstate; ! if (s == 0) ! s = 1; /* default seed is 1 */ ! state->x = s & MMM; return; --- 79,86 ---- ran_state_t *state = (ran_state_t *) vstate; ! if ((s%MMM) == 0) ! s = 1; /* default seed is 1 */ ! state->x = s % MMM; return; *************** *** 87,93 **** static const gsl_rng_type ran_type = { ! "lecuyer21", /* name */ ! MMM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 88,94 ---- static const gsl_rng_type ran_type = { ! "lecuyer21", /* name */ ! MMM-1, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/minstd.c gsl-1.4/rng/minstd.c *** gsl-1.3/rng/minstd.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/minstd.c Fri Jul 25 15:18:14 2003 *************** *** 91,95 **** if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s; --- 91,95 ---- if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s; *************** *** 99,105 **** static const gsl_rng_type minstd_type = ! {"minstd", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (minstd_state_t), &minstd_set, --- 99,105 ---- static const gsl_rng_type minstd_type = ! {"minstd", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (minstd_state_t), &minstd_set, diff -x.info* -rc2P gsl-1.3/rng/mrg.c gsl-1.4/rng/mrg.c *** gsl-1.3/rng/mrg.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/mrg.c Fri Jul 25 15:18:14 2003 *************** *** 111,115 **** if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) --- 111,115 ---- if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) *************** *** 139,144 **** static const gsl_rng_type mrg_type = ! {"mrg", /* name */ ! 2147483646, /* RAND_MAX */ 0, /* RAND_MIN */ sizeof (mrg_state_t), --- 139,144 ---- static const gsl_rng_type mrg_type = ! {"mrg", /* name */ ! 2147483646, /* RAND_MAX */ 0, /* RAND_MIN */ sizeof (mrg_state_t), diff -x.info* -rc2P gsl-1.3/rng/mt.c gsl-1.4/rng/mt.c *** gsl-1.3/rng/mt.c Mon Jun 17 19:51:43 2002 --- gsl-1.4/rng/mt.c Fri Jul 25 15:18:14 2003 *************** *** 60,71 **** static void mt_set (void *state, unsigned long int s); ! #define N 624 /* Period parameters */ #define M 397 /* most significant w-r bits */ ! static const unsigned long UPPER_MASK = 0x80000000UL; /* least significant r bits */ ! static const unsigned long LOWER_MASK = 0x7fffffffUL; typedef struct --- 60,71 ---- static void mt_set (void *state, unsigned long int s); ! #define N 624 /* Period parameters */ #define M 397 /* most significant w-r bits */ ! static const unsigned long UPPER_MASK = 0x80000000UL; /* least significant r bits */ ! static const unsigned long LOWER_MASK = 0x7fffffffUL; typedef struct *************** *** 87,107 **** if (state->mti >= N) ! { /* generate N words at one time */ int kk; for (kk = 0; kk < N - M; kk++) ! { ! unsigned long y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); ! mt[kk] = mt[kk + M] ^ (y >> 1) ^ MAGIC(y); ! } for (; kk < N - 1; kk++) ! { ! unsigned long y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); ! mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ MAGIC(y); ! } { ! unsigned long y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); ! mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ MAGIC(y); } --- 87,107 ---- if (state->mti >= N) ! { /* generate N words at one time */ int kk; for (kk = 0; kk < N - M; kk++) ! { ! unsigned long y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); ! mt[kk] = mt[kk + M] ^ (y >> 1) ^ MAGIC(y); ! } for (; kk < N - 1; kk++) ! { ! unsigned long y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK); ! mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ MAGIC(y); ! } { ! unsigned long y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK); ! mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ MAGIC(y); } *************** *** 135,139 **** if (s == 0) ! s = 4357; /* the default seed is 4357 */ state->mt[0]= s & 0xffffffffUL; --- 135,139 ---- if (s == 0) ! s = 4357; /* the default seed is 4357 */ state->mt[0]= s & 0xffffffffUL; *************** *** 160,164 **** if (s == 0) ! s = 4357; /* the default seed is 4357 */ /* This is the October 1999 version of the seeding procedure. It --- 160,164 ---- if (s == 0) ! s = 4357; /* the default seed is 4357 */ /* This is the October 1999 version of the seeding procedure. It *************** *** 193,197 **** if (s == 0) ! s = 4357; /* the default seed is 4357 */ state->mt[0] = s & 0xffffffffUL; --- 193,197 ---- if (s == 0) ! s = 4357; /* the default seed is 4357 */ state->mt[0] = s & 0xffffffffUL; *************** *** 206,212 **** static const gsl_rng_type mt_type = ! {"mt19937", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (mt_state_t), &mt_set, --- 206,212 ---- static const gsl_rng_type mt_type = ! {"mt19937", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (mt_state_t), &mt_set, *************** *** 215,221 **** static const gsl_rng_type mt_1999_type = ! {"mt19937_1999", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (mt_state_t), &mt_1999_set, --- 215,221 ---- static const gsl_rng_type mt_1999_type = ! {"mt19937_1999", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (mt_state_t), &mt_1999_set, *************** *** 224,230 **** static const gsl_rng_type mt_1998_type = ! {"mt19937_1998", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (mt_state_t), &mt_1998_set, --- 224,230 ---- static const gsl_rng_type mt_1998_type = ! {"mt19937_1998", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (mt_state_t), &mt_1998_set, diff -x.info* -rc2P gsl-1.3/rng/r250.c gsl-1.4/rng/r250.c *** gsl-1.3/rng/r250.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/r250.c Fri Jul 25 15:18:14 2003 *************** *** 125,129 **** if (s == 0) ! s = 1; /* default seed is 1 */ state->i = 0; --- 125,129 ---- if (s == 0) ! s = 1; /* default seed is 1 */ state->i = 0; *************** *** 131,135 **** #define LCG(n) ((69069 * n) & 0xffffffffUL) ! for (i = 0; i < 250; i++) /* Fill the buffer */ { s = LCG (s); --- 131,135 ---- #define LCG(n) ((69069 * n) & 0xffffffffUL) ! for (i = 0; i < 250; i++) /* Fill the buffer */ { s = LCG (s); *************** *** 146,154 **** for (i = 0; i < 32; i++) { ! int k = 7 * i + 3; /* Select a word to operate on */ ! state->x[k] &= mask; /* Turn off bits left of the diagonal */ ! state->x[k] |= msb; /* Turn on the diagonal bit */ ! mask >>= 1; ! msb >>= 1; } } --- 146,154 ---- for (i = 0; i < 32; i++) { ! int k = 7 * i + 3; /* Select a word to operate on */ ! state->x[k] &= mask; /* Turn off bits left of the diagonal */ ! state->x[k] |= msb; /* Turn on the diagonal bit */ ! mask >>= 1; ! msb >>= 1; } } *************** *** 158,164 **** static const gsl_rng_type r250_type = ! {"r250", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (r250_state_t), &r250_set, --- 158,164 ---- static const gsl_rng_type r250_type = ! {"r250", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (r250_state_t), &r250_set, diff -x.info* -rc2P gsl-1.3/rng/ran0.c gsl-1.4/rng/ran0.c *** gsl-1.3/rng/ran0.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ran0.c Fri Jul 25 15:18:14 2003 *************** *** 81,85 **** { GSL_ERROR_VOID ("ran0 should not use seed == mask", ! GSL_EINVAL); } --- 81,85 ---- { GSL_ERROR_VOID ("ran0 should not use seed == mask", ! GSL_EINVAL); } *************** *** 90,96 **** static const gsl_rng_type ran0_type = ! {"ran0", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran0_state_t), &ran0_set, --- 90,96 ---- static const gsl_rng_type ran0_type = ! {"ran0", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran0_state_t), &ran0_set, diff -x.info* -rc2P gsl-1.3/rng/ran1.c gsl-1.4/rng/ran1.c *** gsl-1.3/rng/ran1.c Wed May 2 14:34:35 2001 --- gsl-1.4/rng/ran1.c Fri Jul 25 15:18:14 2003 *************** *** 92,96 **** if (s == 0) ! s = 1; /* default seed is 1 */ for (i = 0; i < 8; i++) --- 92,96 ---- if (s == 0) ! s = 1; /* default seed is 1 */ for (i = 0; i < 8; i++) *************** *** 99,103 **** long int t = a * (s - h * q) - h * r; if (t < 0) ! t += m; s = t; } --- 99,103 ---- long int t = a * (s - h * q) - h * r; if (t < 0) ! t += m; s = t; } *************** *** 108,112 **** long int t = a * (s - h * q) - h * r; if (t < 0) ! t += m; s = t; state->shuffle[i] = s; --- 108,112 ---- long int t = a * (s - h * q) - h * r; if (t < 0) ! t += m; s = t; state->shuffle[i] = s; *************** *** 120,126 **** static const gsl_rng_type ran1_type = ! {"ran1", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran1_state_t), &ran1_set, --- 120,126 ---- static const gsl_rng_type ran1_type = ! {"ran1", /* name */ ! 2147483646, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran1_state_t), &ran1_set, diff -x.info* -rc2P gsl-1.3/rng/ran2.c gsl-1.4/rng/ran2.c *** gsl-1.3/rng/ran2.c Wed May 2 14:34:47 2001 --- gsl-1.4/rng/ran2.c Fri Jul 25 15:18:14 2003 *************** *** 106,110 **** if (s == 0) ! s = 1; /* default seed is 1 */ state->y = s; --- 106,110 ---- if (s == 0) ! s = 1; /* default seed is 1 */ state->y = s; *************** *** 115,119 **** long int t = a1 * (s - h * q1) - h * r1; if (t < 0) ! t += m1; s = t; } --- 115,119 ---- long int t = a1 * (s - h * q1) - h * r1; if (t < 0) ! t += m1; s = t; } *************** *** 124,128 **** long int t = a1 * (s - h * q1) - h * r1; if (t < 0) ! t += m1; s = t; state->shuffle[i] = s; --- 124,128 ---- long int t = a1 * (s - h * q1) - h * r1; if (t < 0) ! t += m1; s = t; state->shuffle[i] = s; *************** *** 136,142 **** static const gsl_rng_type ran2_type = ! {"ran2", /* name */ ! 2147483562, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran2_state_t), &ran2_set, --- 136,142 ---- static const gsl_rng_type ran2_type = ! {"ran2", /* name */ ! 2147483562, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran2_state_t), &ran2_set, diff -x.info* -rc2P gsl-1.3/rng/ran3.c gsl-1.4/rng/ran3.c *** gsl-1.3/rng/ran3.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ran3.c Fri Jul 25 15:18:14 2003 *************** *** 81,85 **** if (s == 0) ! s = 1; /* default seed is 1 */ j = (M_SEED - s) % M_BIG; --- 81,85 ---- if (s == 0) ! s = 1; /* default seed is 1 */ j = (M_SEED - s) % M_BIG; *************** *** 99,103 **** k = j - k; if (k < 0) ! k += M_BIG; j = state->buffer[n]; --- 99,103 ---- k = j - k; if (k < 0) ! k += M_BIG; j = state->buffer[n]; *************** *** 107,116 **** { for (i = 1; i < 56; i++) ! { ! long int t = state->buffer[i] - state->buffer[1 + (i + 30) % 55]; ! if (t < 0) ! t += M_BIG; ! state->buffer[i] = t; ! } } --- 107,116 ---- { for (i = 1; i < 56; i++) ! { ! long int t = state->buffer[i] - state->buffer[1 + (i + 30) % 55]; ! if (t < 0) ! t += M_BIG; ! state->buffer[i] = t; ! } } *************** *** 122,128 **** static const gsl_rng_type ran3_type = ! {"ran3", /* name */ ! M_BIG, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran3_state_t), &ran3_set, --- 122,128 ---- static const gsl_rng_type ran3_type = ! {"ran3", /* name */ ! M_BIG, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran3_state_t), &ran3_set, diff -x.info* -rc2P gsl-1.3/rng/rand.c gsl-1.4/rng/rand.c *** gsl-1.3/rng/rand.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/rand.c Fri Jul 25 15:18:14 2003 *************** *** 75,81 **** static const gsl_rng_type rand_type = ! {"rand", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (rand_state_t), &rand_set, --- 75,81 ---- static const gsl_rng_type rand_type = ! {"rand", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (rand_state_t), &rand_set, diff -x.info* -rc2P gsl-1.3/rng/rand48.c gsl-1.4/rng/rand48.c *** gsl-1.3/rng/rand48.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/rand48.c Fri Jul 25 15:18:14 2003 *************** *** 105,110 **** return (ldexp((double) state->x2, -16) ! + ldexp((double) state->x1, -32) ! + ldexp((double) state->x0, -48)) ; } --- 105,110 ---- return (ldexp((double) state->x2, -16) ! + ldexp((double) state->x1, -32) ! + ldexp((double) state->x0, -48)) ; } *************** *** 131,137 **** static const gsl_rng_type rand48_type = ! {"rand48", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (rand48_state_t), &rand48_set, --- 131,137 ---- static const gsl_rng_type rand48_type = ! {"rand48", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (rand48_state_t), &rand48_set, diff -x.info* -rc2P gsl-1.3/rng/random.c gsl-1.4/rng/random.c *** gsl-1.3/rng/random.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/random.c Fri Jul 25 15:18:14 2003 *************** *** 314,324 **** const long int t = 16807 * (s - h * 127773) - h * 2836; if (t < 0) ! { ! s = t + 2147483647 ; ! } else ! { ! s = t ; ! } x[i] = s ; --- 314,324 ---- const long int t = 16807 * (s - h * 127773) - h * 2836; if (t < 0) ! { ! s = t + 2147483647 ; ! } else ! { ! s = t ; ! } x[i] = s ; *************** *** 470,476 **** static const gsl_rng_type random_glibc2_type = ! {"random-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_glibc2_set, --- 470,476 ---- static const gsl_rng_type random_glibc2_type = ! {"random-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_glibc2_set, *************** *** 479,485 **** static const gsl_rng_type random8_glibc2_type = ! {"random8-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random8_state_t), &random8_glibc2_set, --- 479,485 ---- static const gsl_rng_type random8_glibc2_type = ! {"random8-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random8_state_t), &random8_glibc2_set, *************** *** 488,494 **** static const gsl_rng_type random32_glibc2_type = ! {"random32-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random32_state_t), &random32_glibc2_set, --- 488,494 ---- static const gsl_rng_type random32_glibc2_type = ! {"random32-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random32_state_t), &random32_glibc2_set, *************** *** 497,503 **** static const gsl_rng_type random64_glibc2_type = ! {"random64-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random64_state_t), &random64_glibc2_set, --- 497,503 ---- static const gsl_rng_type random64_glibc2_type = ! {"random64-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random64_state_t), &random64_glibc2_set, *************** *** 506,512 **** static const gsl_rng_type random128_glibc2_type = ! {"random128-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_glibc2_set, --- 506,512 ---- static const gsl_rng_type random128_glibc2_type = ! {"random128-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_glibc2_set, *************** *** 515,521 **** static const gsl_rng_type random256_glibc2_type = ! {"random256-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random256_state_t), &random256_glibc2_set, --- 515,521 ---- static const gsl_rng_type random256_glibc2_type = ! {"random256-glibc2", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random256_state_t), &random256_glibc2_set, *************** *** 524,530 **** static const gsl_rng_type random_libc5_type = ! {"random-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_libc5_set, --- 524,530 ---- static const gsl_rng_type random_libc5_type = ! {"random-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_libc5_set, *************** *** 533,539 **** static const gsl_rng_type random8_libc5_type = ! {"random8-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random8_state_t), &random8_libc5_set, --- 533,539 ---- static const gsl_rng_type random8_libc5_type = ! {"random8-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random8_state_t), &random8_libc5_set, *************** *** 542,548 **** static const gsl_rng_type random32_libc5_type = ! {"random32-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random32_state_t), &random32_libc5_set, --- 542,548 ---- static const gsl_rng_type random32_libc5_type = ! {"random32-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random32_state_t), &random32_libc5_set, *************** *** 551,557 **** static const gsl_rng_type random64_libc5_type = ! {"random64-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random64_state_t), &random64_libc5_set, --- 551,557 ---- static const gsl_rng_type random64_libc5_type = ! {"random64-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random64_state_t), &random64_libc5_set, *************** *** 560,566 **** static const gsl_rng_type random128_libc5_type = ! {"random128-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_libc5_set, --- 560,566 ---- static const gsl_rng_type random128_libc5_type = ! {"random128-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_libc5_set, *************** *** 569,575 **** static const gsl_rng_type random256_libc5_type = ! {"random256-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random256_state_t), &random256_libc5_set, --- 569,575 ---- static const gsl_rng_type random256_libc5_type = ! {"random256-libc5", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random256_state_t), &random256_libc5_set, *************** *** 578,584 **** static const gsl_rng_type random_bsd_type = ! {"random-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_bsd_set, --- 578,584 ---- static const gsl_rng_type random_bsd_type = ! {"random-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_bsd_set, *************** *** 587,593 **** static const gsl_rng_type random8_bsd_type = ! {"random8-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random8_state_t), &random8_bsd_set, --- 587,593 ---- static const gsl_rng_type random8_bsd_type = ! {"random8-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random8_state_t), &random8_bsd_set, *************** *** 596,602 **** static const gsl_rng_type random32_bsd_type = ! {"random32-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random32_state_t), &random32_bsd_set, --- 596,602 ---- static const gsl_rng_type random32_bsd_type = ! {"random32-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random32_state_t), &random32_bsd_set, *************** *** 605,611 **** static const gsl_rng_type random64_bsd_type = ! {"random64-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random64_state_t), &random64_bsd_set, --- 605,611 ---- static const gsl_rng_type random64_bsd_type = ! {"random64-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random64_state_t), &random64_bsd_set, *************** *** 614,620 **** static const gsl_rng_type random128_bsd_type = ! {"random128-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_bsd_set, --- 614,620 ---- static const gsl_rng_type random128_bsd_type = ! {"random128-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random128_state_t), &random128_bsd_set, *************** *** 623,629 **** static const gsl_rng_type random256_bsd_type = ! {"random256-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random256_state_t), &random256_bsd_set, --- 623,629 ---- static const gsl_rng_type random256_bsd_type = ! {"random256-bsd", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (random256_state_t), &random256_bsd_set, diff -x.info* -rc2P gsl-1.3/rng/randu.c gsl-1.4/rng/randu.c *** gsl-1.3/rng/randu.c Wed May 29 20:52:08 2002 --- gsl-1.4/rng/randu.c Fri Jul 25 15:18:14 2003 *************** *** 77,81 **** if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s; --- 77,81 ---- if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s; *************** *** 85,91 **** static const gsl_rng_type randu_type = ! {"randu", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (randu_state_t), &randu_set, --- 85,91 ---- static const gsl_rng_type randu_type = ! {"randu", /* name */ ! 0x7fffffffUL, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (randu_state_t), &randu_set, diff -x.info* -rc2P gsl-1.3/rng/ranf.c gsl-1.4/rng/ranf.c *** gsl-1.3/rng/ranf.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ranf.c Fri Jul 25 15:18:14 2003 *************** *** 106,111 **** return (ldexp((double) state->x2, -16) ! + ldexp((double) state->x1, -32) ! + ldexp((double) state->x0, -48)) ; } --- 106,111 ---- return (ldexp((double) state->x2, -16) ! + ldexp((double) state->x1, -32) ! + ldexp((double) state->x0, -48)) ; } *************** *** 150,156 **** static const gsl_rng_type ranf_type = ! {"ranf", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranf_state_t), &ranf_set, --- 150,156 ---- static const gsl_rng_type ranf_type = ! {"ranf", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranf_state_t), &ranf_set, diff -x.info* -rc2P gsl-1.3/rng/ranlux.c gsl-1.4/rng/ranlux.c *** gsl-1.3/rng/ranlux.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ranlux.c Fri Jul 25 15:18:14 2003 *************** *** 59,65 **** static void ranlux389_set (void *state, unsigned long int s); ! static const unsigned long int mask_lo = 0x00ffffffUL; /* 2^24 - 1 */ static const unsigned long int mask_hi = ~0x00ffffffUL; ! static const unsigned long int two24 = 16777216; /* 2^24 */ typedef struct --- 59,65 ---- static void ranlux389_set (void *state, unsigned long int s); ! static const unsigned long int mask_lo = 0x00ffffffUL; /* 2^24 - 1 */ static const unsigned long int mask_hi = ~0x00ffffffUL; ! static const unsigned long int two24 = 16777216; /* 2^24 */ typedef struct *************** *** 134,138 **** state->n = 0; for (i = 0; i < skip; i++) ! increment_state (state); } --- 134,138 ---- state->n = 0; for (i = 0; i < skip; i++) ! increment_state (state); } *************** *** 155,159 **** if (s == 0) ! s = 314159265; /* default seed is 314159265 */ seed = s; --- 155,159 ---- if (s == 0) ! s = 314159265; /* default seed is 314159265 */ seed = s; *************** *** 167,173 **** seed = 40014 * (seed - k * 53668) - k * 12211; if (seed < 0) ! { ! seed += 2147483563; ! } state->u[i] = seed % two24; } --- 167,173 ---- seed = 40014 * (seed - k * 53668) - k * 12211; if (seed < 0) ! { ! seed += 2147483563; ! } state->u[i] = seed % two24; } *************** *** 202,208 **** static const gsl_rng_type ranlux_type = ! {"ranlux", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlux_state_t), &ranlux_set, --- 202,208 ---- static const gsl_rng_type ranlux_type = ! {"ranlux", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlux_state_t), &ranlux_set, *************** *** 211,217 **** static const gsl_rng_type ranlux389_type = ! {"ranlux389", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlux_state_t), &ranlux389_set, --- 211,217 ---- static const gsl_rng_type ranlux389_type = ! {"ranlux389", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlux_state_t), &ranlux389_set, diff -x.info* -rc2P gsl-1.3/rng/ranlxd.c gsl-1.4/rng/ranlxd.c *** gsl-1.3/rng/ranlxd.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ranlxd.c Fri Jul 25 15:18:14 2003 *************** *** 38,42 **** static const int next[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0}; ! static const double one_bit = 1.0 / 281474976710656.0; /* 1/2^48 */ #define RANLUX_STEP(x1,x2,i1,i2,i3) \ --- 38,42 ---- static const int next[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0}; ! static const double one_bit = 1.0 / 281474976710656.0; /* 1/2^48 */ #define RANLUX_STEP(x1,x2,i1,i2,i3) \ *************** *** 78,89 **** y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ir = next[ir]; --- 78,89 ---- y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ir = next[ir]; *************** *** 111,122 **** if (y3 < 0) ! { ! carry = one_bit; ! y3 += 1; ! } else ! { ! carry = 0; ! } xdbl[11] = y3; } --- 111,122 ---- if (y3 < 0) ! { ! carry = one_bit; ! y3 += 1; ! } else ! { ! carry = 0; ! } xdbl[11] = y3; } *************** *** 129,140 **** y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ir = next[ir]; --- 129,140 ---- y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ir = next[ir]; *************** *** 150,154 **** ranlxd_get (void *vstate) { ! return ranlxd_get_double (vstate) * 4294967296.0; /* 2^32 */ } --- 150,154 ---- ranlxd_get (void *vstate) { ! return ranlxd_get_double (vstate) * 4294967296.0; /* 2^32 */ } *************** *** 179,183 **** if (s == 0) ! s = 1; /* default seed is 1 */ seed = s; --- 179,183 ---- if (s == 0) ! s = 1; /* default seed is 1 */ seed = s; *************** *** 199,209 **** for (l = 1; l <= 48; ++l) ! { ! y = (double) ((xbit[ibit] + 1) % 2); ! x += x + y; ! xbit[ibit] = (xbit[ibit] + xbit[jbit]) % 2; ! ibit = (ibit + 1) % 31; ! jbit = (jbit + 1) % 31; ! } state->xdbl[k] = one_bit * x; } --- 199,209 ---- for (l = 1; l <= 48; ++l) ! { ! y = (double) ((xbit[ibit] + 1) % 2); ! x += x + y; ! xbit[ibit] = (xbit[ibit] + xbit[jbit]) % 2; ! ibit = (ibit + 1) % 31; ! jbit = (jbit + 1) % 31; ! } state->xdbl[k] = one_bit * x; } *************** *** 229,235 **** static const gsl_rng_type ranlxd1_type = ! {"ranlxd1", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxd_state_t), &ranlxd1_set, --- 229,235 ---- static const gsl_rng_type ranlxd1_type = ! {"ranlxd1", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxd_state_t), &ranlxd1_set, *************** *** 238,244 **** static const gsl_rng_type ranlxd2_type = ! {"ranlxd2", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxd_state_t), &ranlxd2_set, --- 238,244 ---- static const gsl_rng_type ranlxd2_type = ! {"ranlxd2", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxd_state_t), &ranlxd2_set, diff -x.info* -rc2P gsl-1.3/rng/ranlxs.c gsl-1.4/rng/ranlxs.c *** gsl-1.3/rng/ranlxs.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ranlxs.c Fri Jul 25 15:18:14 2003 *************** *** 41,49 **** 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0}; ! static const double sbase = 16777216.0; /* 2^24 */ ! static const double sone_bit = 1.0 / 16777216.0; /* 1/2^24 */ ! static const double one_bit = 1.0 / 281474976710656.0; /* 1/2^48 */ ! static const double shift = 268435456.0; /* 2^28 */ #define RANLUX_STEP(x1,x2,i1,i2,i3) \ --- 41,49 ---- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0}; ! static const double sbase = 16777216.0; /* 2^24 */ ! static const double sone_bit = 1.0 / 16777216.0; /* 1/2^24 */ ! static const double one_bit = 1.0 / 281474976710656.0; /* 1/2^48 */ ! static const double shift = 268435456.0; /* 2^28 */ #define RANLUX_STEP(x1,x2,i1,i2,i3) \ *************** *** 89,100 **** y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ir = next[ir]; --- 89,100 ---- y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ir = next[ir]; *************** *** 122,133 **** if (y3 < 0) ! { ! carry = one_bit; ! y3 += 1; ! } else ! { ! carry = 0; ! } xdbl[11] = y3; } --- 122,133 ---- if (y3 < 0) ! { ! carry = one_bit; ! y3 += 1; ! } else ! { ! carry = 0; ! } xdbl[11] = y3; } *************** *** 140,151 **** y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ydbl[ir] = y2 + shift; --- 140,151 ---- y2 = y1 - carry; if (y2 < 0) ! { ! carry = one_bit; ! y2 += 1; ! } else ! { ! carry = 0; ! } xdbl[ir] = y2; ydbl[ir] = y2 + shift; *************** *** 167,171 **** y2 = ydbl[k] - shift; if (y2 > x) ! y2 -= sone_bit; y1 = (x - y2) * sbase; --- 167,171 ---- y2 = ydbl[k] - shift; if (y2 > x) ! y2 -= sone_bit; y1 = (x - y2) * sbase; *************** *** 200,204 **** ranlxs_get (void *vstate) { ! return ranlxs_get_double (vstate) * 16777216.0; /* 2^24 */ } --- 200,204 ---- ranlxs_get (void *vstate) { ! return ranlxs_get_double (vstate) * 16777216.0; /* 2^24 */ } *************** *** 214,218 **** if (s == 0) ! s = 1; /* default seed is 1 */ seed = s; --- 214,218 ---- if (s == 0) ! s = 1; /* default seed is 1 */ seed = s; *************** *** 234,244 **** for (m = 1; m <= 48; ++m) ! { ! y = (double) xbit[ibit]; ! x += x + y; ! xbit[ibit] = (xbit[ibit] + xbit[jbit]) % 2; ! ibit = (ibit + 1) % 31; ! jbit = (jbit + 1) % 31; ! } state->xdbl[k] = one_bit * x; } --- 234,244 ---- for (m = 1; m <= 48; ++m) ! { ! y = (double) xbit[ibit]; ! x += x + y; ! xbit[ibit] = (xbit[ibit] + xbit[jbit]) % 2; ! ibit = (ibit + 1) % 31; ! jbit = (jbit + 1) % 31; ! } state->xdbl[k] = one_bit * x; } *************** *** 272,278 **** static const gsl_rng_type ranlxs0_type = ! {"ranlxs0", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxs_state_t), &ranlxs0_set, --- 272,278 ---- static const gsl_rng_type ranlxs0_type = ! {"ranlxs0", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxs_state_t), &ranlxs0_set, *************** *** 281,287 **** static const gsl_rng_type ranlxs1_type = ! {"ranlxs1", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxs_state_t), &ranlxs1_set, --- 281,287 ---- static const gsl_rng_type ranlxs1_type = ! {"ranlxs1", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxs_state_t), &ranlxs1_set, *************** *** 290,296 **** static const gsl_rng_type ranlxs2_type = ! {"ranlxs2", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxs_state_t), &ranlxs2_set, --- 290,296 ---- static const gsl_rng_type ranlxs2_type = ! {"ranlxs2", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranlxs_state_t), &ranlxs2_set, diff -x.info* -rc2P gsl-1.3/rng/ranmar.c gsl-1.4/rng/ranmar.c *** gsl-1.3/rng/ranmar.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/ranmar.c Fri Jul 25 15:18:14 2003 *************** *** 50,54 **** static void ranmar_set (void *state, unsigned long int s); ! static const unsigned long int two24 = 16777216; /* 2^24 */ typedef struct --- 50,54 ---- static void ranmar_set (void *state, unsigned long int s); ! static const unsigned long int two24 = 16777216; /* 2^24 */ typedef struct *************** *** 141,155 **** for (b = 0; b < 24; b++) ! { ! unsigned long int m = (((i * j) % 179) * k) % 179 ; ! i = j ; ! j = k ; ! k = m ; ! l = (53 * l + 1) % 169 ; ! t >>= 1 ; ! ! if ((l * m) % 64 >= 32) ! sum += t ; ! } state->u[a] = sum ; --- 141,155 ---- for (b = 0; b < 24; b++) ! { ! unsigned long int m = (((i * j) % 179) * k) % 179 ; ! i = j ; ! j = k ; ! k = m ; ! l = (53 * l + 1) % 169 ; ! t >>= 1 ; ! ! if ((l * m) % 64 >= 32) ! sum += t ; ! } state->u[a] = sum ; *************** *** 163,169 **** static const gsl_rng_type ranmar_type = ! {"ranmar", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranmar_state_t), &ranmar_set, --- 163,169 ---- static const gsl_rng_type ranmar_type = ! {"ranmar", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ranmar_state_t), &ranmar_set, Only in gsl-1.3/rng: rng-dump.c diff -x.info* -rc2P gsl-1.3/rng/rng.c gsl-1.4/rng/rng.c *** gsl-1.3/rng/rng.c Thu Sep 6 11:17:36 2001 --- gsl-1.4/rng/rng.c Fri Jul 25 15:18:14 2003 *************** *** 34,38 **** { GSL_ERROR_VAL ("failed to allocate space for rng struct", ! GSL_ENOMEM, 0); }; --- 34,38 ---- { GSL_ERROR_VAL ("failed to allocate space for rng struct", ! GSL_ENOMEM, 0); }; *************** *** 41,53 **** if (r->state == 0) { ! free (r); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for rng state", ! GSL_ENOMEM, 0); }; r->type = T; ! gsl_rng_set (r, gsl_rng_default_seed); /* seed the generator */ return r; --- 41,53 ---- if (r->state == 0) { ! free (r); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for rng state", ! GSL_ENOMEM, 0); }; r->type = T; ! gsl_rng_set (r, gsl_rng_default_seed); /* seed the generator */ return r; *************** *** 75,79 **** { GSL_ERROR_VAL ("failed to allocate space for rng struct", ! GSL_ENOMEM, 0); }; --- 75,79 ---- { GSL_ERROR_VAL ("failed to allocate space for rng struct", ! GSL_ENOMEM, 0); }; *************** *** 82,89 **** if (r->state == 0) { ! free (r); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for rng state", ! GSL_ENOMEM, 0); }; --- 82,89 ---- if (r->state == 0) { ! free (r); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for rng state", ! GSL_ENOMEM, 0); }; *************** *** 138,142 **** { GSL_ERROR_VAL ("n exceeds maximum value of generator", ! GSL_EINVAL, 0) ; } --- 138,142 ---- { GSL_ERROR_VAL ("n exceeds maximum value of generator", ! GSL_EINVAL, 0) ; } diff -x.info* -rc2P gsl-1.3/rng/schrage.c gsl-1.4/rng/schrage.c *** gsl-1.3/rng/schrage.c Thu Jan 1 00:00:00 1970 --- gsl-1.4/rng/schrage.c Fri Jul 25 15:18:14 2003 *************** *** 0 **** --- 1,51 ---- + /* rng/schrage.c + * Copyright (C) 2003 Carlo Perassi and Heiko Bauke. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + + static inline unsigned long int + schrage (unsigned long int a, unsigned long int b, unsigned long int m) + { + /* This is a modified version of Schrage's method. It ensures that no + * overflow or underflow occurs even if a=ceil(sqrt(m)). Usual + * Schrage's method works only until a=floor(sqrt(m)). + */ + unsigned long int q, t; + if (a == 0UL) + return 0UL; + q = m / a; + t = 2 * m - (m % a) * (b / q); + if (t >= m) + t -= m; + t += a * (b % q); + return (t >= m) ? (t - m) : t; + } + + static inline unsigned long int + schrage_mult (unsigned long int a, unsigned long int b, + unsigned long int m, + unsigned long int sqrtm) + { + /* To multiply a and b use Schrage's method 3 times. + * represent a in base ceil(sqrt(m)) a = a1*ceil(sqrt(m)) + a0 + * a*b = (a1*ceil(sqrt(m)) + a0)*b = a1*ceil(sqrt(m))*b + a0*b + */ + unsigned long int t0 = schrage (sqrtm, b, m); + unsigned long int t1 = schrage (a / sqrtm, t0, m); + unsigned long int t2 = schrage (a % sqrtm, b, m); + unsigned long int t = t1 + t2; + return (t >= m) ? (t - m) : t; + } diff -x.info* -rc2P gsl-1.3/rng/slatec.c gsl-1.4/rng/slatec.c *** gsl-1.3/rng/slatec.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/slatec.c Fri Jul 25 15:18:14 2003 *************** *** 195,201 **** static const gsl_rng_type slatec_type = ! {"slatec", /* name */ ! 4194303, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (slatec_state_t), &slatec_set, --- 195,201 ---- static const gsl_rng_type slatec_type = ! {"slatec", /* name */ ! 4194303, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (slatec_state_t), &slatec_set, diff -x.info* -rc2P gsl-1.3/rng/taus.c gsl-1.4/rng/taus.c *** gsl-1.3/rng/taus.c Mon Nov 25 19:27:05 2002 --- gsl-1.4/rng/taus.c Fri Jul 25 15:18:14 2003 *************** *** 62,69 **** http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme2.ps ! ... the k_j most significant bits of z_j must be non- ! zero, for each j. (Note: this restriction also applies to the ! computer code given in [4], but was mistakenly not mentioned in ! that paper.) This affects the seeding procedure by imposing the requirement --- 62,69 ---- http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme2.ps ! ... the k_j most significant bits of z_j must be non- ! zero, for each j. (Note: this restriction also applies to the ! computer code given in [4], but was mistakenly not mentioned in ! that paper.) This affects the seeding procedure by imposing the requirement *************** *** 118,122 **** if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) --- 118,122 ---- if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) *************** *** 141,145 **** if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) --- 141,145 ---- if (s == 0) ! s = 1; /* default seed is 1 */ #define LCG(n) ((69069 * n) & 0xffffffffUL) *************** *** 163,169 **** static const gsl_rng_type taus_type = ! {"taus", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (taus_state_t), &taus_set, --- 163,169 ---- static const gsl_rng_type taus_type = ! {"taus", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (taus_state_t), &taus_set, *************** *** 174,180 **** static const gsl_rng_type taus2_type = ! {"taus2", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (taus_state_t), &taus2_set, --- 174,180 ---- static const gsl_rng_type taus2_type = ! {"taus2", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (taus_state_t), &taus2_set, diff -x.info* -rc2P gsl-1.3/rng/taus113.c gsl-1.4/rng/taus113.c *** gsl-1.3/rng/taus113.c Mon May 13 20:34:34 2002 --- gsl-1.4/rng/taus113.c Fri Jul 25 15:18:14 2003 *************** *** 107,111 **** if (!s) ! s = 1UL; /* default seed is 1 */ state->z1 = LCG (s); --- 107,111 ---- if (!s) ! s = 1UL; /* default seed is 1 */ state->z1 = LCG (s); *************** *** 138,144 **** static const gsl_rng_type taus113_type = { ! "taus113", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (taus113_state_t), &taus113_set, --- 138,144 ---- static const gsl_rng_type taus113_type = { ! "taus113", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (taus113_state_t), &taus113_set, diff -x.info* -rc2P gsl-1.3/rng/test.c gsl-1.4/rng/test.c *** gsl-1.3/rng/test.c Mon May 13 20:33:25 2002 --- gsl-1.4/rng/test.c Fri Jul 25 15:18:14 2003 *************** *** 27,35 **** void rng_test (const gsl_rng_type * T, unsigned long int seed, unsigned int n, ! unsigned long int result); void rng_float_test (const gsl_rng_type * T); void generic_rng_test (const gsl_rng_type * T); void rng_state_test (const gsl_rng_type * T); void rng_parallel_state_test (const gsl_rng_type * T); int rng_max_test (gsl_rng * r, unsigned long int *kmax, unsigned long int ran_max) ; int rng_min_test (gsl_rng * r, unsigned long int *kmin, unsigned long int ran_min, unsigned long int ran_max) ; --- 27,36 ---- void rng_test (const gsl_rng_type * T, unsigned long int seed, unsigned int n, ! unsigned long int result); void rng_float_test (const gsl_rng_type * T); void generic_rng_test (const gsl_rng_type * T); void rng_state_test (const gsl_rng_type * T); void rng_parallel_state_test (const gsl_rng_type * T); + void rng_read_write_test (const gsl_rng_type * T); int rng_max_test (gsl_rng * r, unsigned long int *kmax, unsigned long int ran_max) ; int rng_min_test (gsl_rng * r, unsigned long int *kmin, unsigned long int ran_min, unsigned long int ran_max) ; *************** *** 63,78 **** rng_test (gsl_rng_vax, 1, 10000, 3051034865UL); rng_test (gsl_rng_borosh13, 1, 10000, 2513433025UL); ! rng_test (gsl_rng_fishman18, 1, 10000, 1626638977UL); ! rng_test (gsl_rng_fishman2x, 1, 10000, 1158622502UL); ! rng_test (gsl_rng_knuthran2, 1, 10000, 1182784902UL); rng_test (gsl_rng_knuthran, 310952, 1009 * 2009 + 1, 461390032); rng_test (gsl_rng_lecuyer21, 1, 10000, 2006618587UL); rng_test (gsl_rng_waterman14, 1, 10000, 3776680385UL); /* specific tests of known results for 10000 iterations with seed = 6 */ rng_test (gsl_rng_coveyou, 6, 10000, 1416754246UL); ! rng_test (gsl_rng_fishman20, 6, 10000, 1811577350UL); /* FIXME: the ranlux tests below were made by running the fortran code and --- 64,101 ---- rng_test (gsl_rng_vax, 1, 10000, 3051034865UL); + /* Borosh13 test value from PARI: (1812433253^10000)%(2^32) */ rng_test (gsl_rng_borosh13, 1, 10000, 2513433025UL); ! ! /* Fishman18 test value from PARI: (62089911^10000)%(2^31-1) */ ! rng_test (gsl_rng_fishman18, 1, 10000, 330402013UL); ! ! /* Fishman2x test value from PARI: ! ((48271^10000)%(2^31-1) - (40692^10000)%(2^31-249))%(2^31-1) */ ! rng_test (gsl_rng_fishman2x, 1, 10000, 540133597UL); ! ! /* Knuthran2 test value from PARI: ! { xn1=1; xn2=1; for (n=1,10000, ! xn = (271828183*xn1 - 314159269*xn2)%(2^31-1); ! xn2=xn1; xn1=xn; print(xn); ) } */ ! rng_test (gsl_rng_knuthran2, 1, 10000, 1084477620UL); ! ! /* Knuthran test value taken from p188 in Knuth Vol 2. 3rd Ed */ rng_test (gsl_rng_knuthran, 310952, 1009 * 2009 + 1, 461390032); + + /* Lecuyer21 test value from PARI: (40692^10000)%(2^31-249) */ rng_test (gsl_rng_lecuyer21, 1, 10000, 2006618587UL); + + /* Waterman14 test value from PARI: (1566083941^10000)%(2^32) */ rng_test (gsl_rng_waterman14, 1, 10000, 3776680385UL); /* specific tests of known results for 10000 iterations with seed = 6 */ + /* Coveyou test value from PARI: + x=6; for(n=1,10000,x=(x*(x+1))%(2^32);print(x);) */ + rng_test (gsl_rng_coveyou, 6, 10000, 1416754246UL); ! ! /* Fishman20 test value from PARI: (6*48271^10000)%(2^31-1) */ ! rng_test (gsl_rng_fishman20, 6, 10000, 248127575UL); /* FIXME: the ranlux tests below were made by running the fortran code and *************** *** 164,167 **** --- 187,193 ---- rng_parallel_state_test (*r); + for (r = rngs ; *r != 0; r++) + rng_read_write_test (*r); + /* generic statistical tests (these are just to make sure that we don't get any crazy results back from the generator, i.e. they *************** *** 177,181 **** void rng_test (const gsl_rng_type * T, unsigned long int seed, unsigned int n, ! unsigned long int result) { gsl_rng *r = gsl_rng_alloc (T); --- 203,207 ---- void rng_test (const gsl_rng_type * T, unsigned long int seed, unsigned int n, ! unsigned long int result) { gsl_rng *r = gsl_rng_alloc (T); *************** *** 196,200 **** status = (k != result); gsl_test (status, "%s, %u steps (%u observed vs %u expected)", ! gsl_rng_name (r), n, k, result); gsl_rng_free (r); --- 222,226 ---- status = (k != result); gsl_test (status, "%s, %u steps (%u observed vs %u expected)", ! gsl_rng_name (r), n, k, result); gsl_rng_free (r); *************** *** 225,236 **** u = gsl_rng_get (rf); if (c*k != u) ! { ! status = 1 ; ! break ; ! } } gsl_test (status, "%s, ratio of int to double (%g observed vs %g expected)", ! gsl_rng_name (ri), c, k/u); gsl_rng_free (ri); --- 251,262 ---- u = gsl_rng_get (rf); if (c*k != u) ! { ! status = 1 ; ! break ; ! } } gsl_test (status, "%s, ratio of int to double (%g observed vs %g expected)", ! gsl_rng_name (ri), c, k/u); gsl_rng_free (ri); *************** *** 251,258 **** for (i = 0; i < N; ++i) { ! gsl_rng_get (r); /* throw away N iterations */ } ! gsl_rng_memcpy (r_save, r); /* save the intermediate state */ for (i = 0; i < N; ++i) --- 277,284 ---- for (i = 0; i < N; ++i) { ! gsl_rng_get (r); /* throw away N iterations */ } ! gsl_rng_memcpy (r_save, r); /* save the intermediate state */ for (i = 0; i < N; ++i) *************** *** 261,265 **** } ! gsl_rng_memcpy (r, r_save); /* restore the intermediate state */ gsl_rng_free (r_save); --- 287,291 ---- } ! gsl_rng_memcpy (r, r_save); /* restore the intermediate state */ gsl_rng_free (r_save); *************** *** 273,280 **** for (i = 0; i < N; ++i) { ! status |= (test_b[i] != test_a[i]); } gsl_test (status, "%s, random number state consistency", ! gsl_rng_name (r)); } --- 299,306 ---- for (i = 0; i < N; ++i) { ! status |= (test_b[i] != test_a[i]); } gsl_test (status, "%s, random number state consistency", ! gsl_rng_name (r)); } *************** *** 297,313 **** for (i = 0; i < N; ++i) { ! gsl_rng_get (r1); /* throw away N iterations */ } ! gsl_rng_memcpy (r2, r1); /* save the intermediate state */ for (i = 0; i < N; ++i) { /* check that there is no hidden state intermixed between r1 and r2 */ ! test_a[i] = gsl_rng_get (r1); test_b[i] = gsl_rng_get (r2); ! test_c[i] = gsl_rng_uniform_int (r1, 1234); test_d[i] = gsl_rng_uniform_int (r2, 1234); ! test_e[i] = gsl_rng_uniform (r1); test_f[i] = gsl_rng_uniform (r2); } --- 323,339 ---- for (i = 0; i < N; ++i) { ! gsl_rng_get (r1); /* throw away N iterations */ } ! gsl_rng_memcpy (r2, r1); /* save the intermediate state */ for (i = 0; i < N; ++i) { /* check that there is no hidden state intermixed between r1 and r2 */ ! test_a[i] = gsl_rng_get (r1); test_b[i] = gsl_rng_get (r2); ! test_c[i] = gsl_rng_uniform_int (r1, 1234); test_d[i] = gsl_rng_uniform_int (r2, 1234); ! test_e[i] = gsl_rng_uniform (r1); test_f[i] = gsl_rng_uniform (r2); } *************** *** 317,326 **** for (i = 0; i < N; ++i) { ! status |= (test_b[i] != test_a[i]); ! status |= (test_c[i] != test_d[i]); ! status |= (test_e[i] != test_f[i]); } gsl_test (status, "%s, parallel random number state consistency", ! gsl_rng_name (r1)); } --- 343,352 ---- for (i = 0; i < N; ++i) { ! status |= (test_b[i] != test_a[i]); ! status |= (test_c[i] != test_d[i]); ! status |= (test_e[i] != test_f[i]); } gsl_test (status, "%s, parallel random number state consistency", ! gsl_rng_name (r1)); } *************** *** 331,334 **** --- 357,409 ---- void + rng_read_write_test (const gsl_rng_type * T) + { + unsigned long int test_a[N], test_b[N]; + + int i; + + gsl_rng *r = gsl_rng_alloc (T); + + for (i = 0; i < N; ++i) + { + gsl_rng_get (r); /* throw away N iterations */ + } + + { /* save the state to a binary file */ + FILE *f = fopen("test.dat", "wb"); + gsl_rng_fwrite(f, r); + fclose(f); + } + + for (i = 0; i < N; ++i) + { + test_a[i] = gsl_rng_get (r); + } + + { /* read the state from a binary file */ + FILE *f = fopen("test.dat", "rb"); + gsl_rng_fread(f, r); + fclose(f); + } + + for (i = 0; i < N; ++i) + { + test_b[i] = gsl_rng_get (r); + } + + { + int status = 0; + for (i = 0; i < N; ++i) + { + status |= (test_b[i] != test_a[i]); + } + gsl_test (status, "%s, random number generator read and write", + gsl_rng_name (r)); + } + + gsl_rng_free (r); + } + + void generic_rng_test (const gsl_rng_type * T) { *************** *** 343,383 **** gsl_test (status, ! "%s, observed vs theoretical maximum (%lu vs %lu)", ! name, kmax, ran_max); status = rng_min_test (r, &kmin, ran_min, ran_max); gsl_test (status, ! "%s, observed vs theoretical minimum (%lu vs %lu)", ! name, kmin, ran_min); status = rng_sum_test (r, &sigma); gsl_test (status, ! "%s, sum test within acceptable sigma (observed %.2g sigma)", ! name, sigma); status = rng_bin_test (r, &sigma); gsl_test (status, ! "%s, bin test within acceptable chisq (observed %.2g sigma)", ! name, sigma); ! gsl_rng_set (r, 1); /* set seed to 1 */ status = rng_max_test (r, &kmax, ran_max); ! gsl_rng_set (r, 1); /* set seed to 1 */ status |= rng_min_test (r, &kmin, ran_min, ran_max); ! gsl_rng_set (r, 1); /* set seed to 1 */ status |= rng_sum_test (r, &sigma); ! gsl_rng_set (r, 12345); /* set seed to a "typical" value */ status |= rng_max_test (r, &kmax, ran_max); ! gsl_rng_set (r, 12345); /* set seed to a "typical" value */ status |= rng_min_test (r, &kmin, ran_min, ran_max); ! gsl_rng_set (r, 12345); /* set seed to a "typical" value */ status |= rng_sum_test (r, &sigma); --- 418,458 ---- gsl_test (status, ! "%s, observed vs theoretical maximum (%lu vs %lu)", ! name, kmax, ran_max); status = rng_min_test (r, &kmin, ran_min, ran_max); gsl_test (status, ! "%s, observed vs theoretical minimum (%lu vs %lu)", ! name, kmin, ran_min); status = rng_sum_test (r, &sigma); gsl_test (status, ! "%s, sum test within acceptable sigma (observed %.2g sigma)", ! name, sigma); status = rng_bin_test (r, &sigma); gsl_test (status, ! "%s, bin test within acceptable chisq (observed %.2g sigma)", ! name, sigma); ! gsl_rng_set (r, 1); /* set seed to 1 */ status = rng_max_test (r, &kmax, ran_max); ! gsl_rng_set (r, 1); /* set seed to 1 */ status |= rng_min_test (r, &kmin, ran_min, ran_max); ! gsl_rng_set (r, 1); /* set seed to 1 */ status |= rng_sum_test (r, &sigma); ! gsl_rng_set (r, 12345); /* set seed to a "typical" value */ status |= rng_max_test (r, &kmax, ran_max); ! gsl_rng_set (r, 12345); /* set seed to a "typical" value */ status |= rng_min_test (r, &kmin, ran_min, ran_max); ! gsl_rng_set (r, 12345); /* set seed to a "typical" value */ status |= rng_sum_test (r, &sigma); *************** *** 400,404 **** unsigned long int k = gsl_rng_get (r); if (k > max) ! max = k; } --- 475,479 ---- unsigned long int k = gsl_rng_get (r); if (k > max) ! max = k; } *************** *** 415,419 **** int rng_min_test (gsl_rng * r, unsigned long int *kmin, ! unsigned long int ran_min, unsigned long int ran_max) { unsigned long int actual_uncovered; --- 490,494 ---- int rng_min_test (gsl_rng * r, unsigned long int *kmin, ! unsigned long int ran_min, unsigned long int ran_max) { unsigned long int actual_uncovered; *************** *** 427,431 **** unsigned long int k = gsl_rng_get (r); if (k < min) ! min = k; } --- 502,506 ---- unsigned long int k = gsl_rng_get (r); if (k < min) ! min = k; } *************** *** 505,515 **** { if (count[i] != 0) ! { ! status = 1 ; ! gsl_test (status, ! "%s, wrote outside range in bin test " ! "(%d observed vs %d expected)", ! gsl_rng_name(r), i, BINS - 1); ! } } --- 580,590 ---- { if (count[i] != 0) ! { ! status = 1 ; ! gsl_test (status, ! "%s, wrote outside range in bin test " ! "(%d observed vs %d expected)", ! gsl_rng_name(r), i, BINS - 1); ! } } diff -x.info* -rc2P gsl-1.3/rng/transputer.c gsl-1.4/rng/transputer.c *** gsl-1.3/rng/transputer.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/transputer.c Fri Jul 25 15:18:14 2003 *************** *** 31,35 **** The theoretical value of x_{10001} is 1244127297. ! The period of this generator is 2^32. */ static inline unsigned long int transputer_get (void *vstate); --- 31,35 ---- The theoretical value of x_{10001} is 1244127297. ! The period of this generator is 2^30. */ static inline unsigned long int transputer_get (void *vstate); *************** *** 73,79 **** static const gsl_rng_type transputer_type = ! {"transputer", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (transputer_state_t), &transputer_set, --- 73,79 ---- static const gsl_rng_type transputer_type = ! {"transputer", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (transputer_state_t), &transputer_set, diff -x.info* -rc2P gsl-1.3/rng/tt.c gsl-1.4/rng/tt.c *** gsl-1.3/rng/tt.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/tt.c Fri Jul 25 15:18:14 2003 *************** *** 63,80 **** int i; for (i = 0; i < N - M; i++) ! { ! x[i] = x[i + M] ^ (x[i] >> 1) ^ mag01[x[i] % 2]; ! } for (; i < N; i++) ! { ! x[i] = x[i + (M - N)] ^ (x[i] >> 1) ^ mag01[x[i] % 2]; ! }; n = 0; } y = x[n]; ! y ^= (y << 7) & 0x2b5b2500UL; /* s and b, magic vectors */ ! y ^= (y << 15) & 0xdb8b0000UL; /* t and c, magic vectors */ ! y &= 0xffffffffUL; /* you may delete this line if word size = 32 */ /* The following line was added by Makoto Matsumoto in the 1996 --- 63,80 ---- int i; for (i = 0; i < N - M; i++) ! { ! x[i] = x[i + M] ^ (x[i] >> 1) ^ mag01[x[i] % 2]; ! } for (; i < N; i++) ! { ! x[i] = x[i + (M - N)] ^ (x[i] >> 1) ^ mag01[x[i] % 2]; ! }; n = 0; } y = x[n]; ! y ^= (y << 7) & 0x2b5b2500UL; /* s and b, magic vectors */ ! y ^= (y << 15) & 0xdb8b0000UL; /* t and c, magic vectors */ ! y &= 0xffffffffUL; /* you may delete this line if word size = 32 */ /* The following line was added by Makoto Matsumoto in the 1996 *************** *** 82,86 **** to use the code published in 1994. */ ! y ^= (y >> 16); /* added to the 1994 version */ state->n = n + 1; --- 82,86 ---- to use the code published in 1994. */ ! y ^= (y >> 16); /* added to the 1994 version */ state->n = n + 1; *************** *** 113,117 **** ! if (s == 0) /* default seed is given explicitly in the original code */ { *state = init_state; --- 113,117 ---- ! if (s == 0) /* default seed is given explicitly in the original code */ { *state = init_state; *************** *** 126,130 **** for (i = 1; i < N; i++) ! state->x[i] = (69069 * state->x[i - 1]) & 0xffffffffUL; } --- 126,130 ---- for (i = 1; i < N; i++) ! state->x[i] = (69069 * state->x[i - 1]) & 0xffffffffUL; } *************** *** 133,139 **** static const gsl_rng_type tt_type = ! {"tt800", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (tt_state_t), &tt_set, --- 133,139 ---- static const gsl_rng_type tt_type = ! {"tt800", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (tt_state_t), &tt_set, diff -x.info* -rc2P gsl-1.3/rng/uni.c gsl-1.4/rng/uni.c *** gsl-1.3/rng/uni.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/uni.c Fri Jul 25 15:18:14 2003 *************** *** 106,112 **** static void uni_set (void *state, unsigned long int s); ! static const unsigned int MDIG = 16; /* Machine digits in int */ ! static const unsigned int m1 = 32767; /* 2^(MDIG-1) - 1 */ ! static const unsigned int m2 = 256; /* 2^(MDIG/2) */ typedef struct --- 106,112 ---- static void uni_set (void *state, unsigned long int s); ! static const unsigned int MDIG = 16; /* Machine digits in int */ ! static const unsigned int m1 = 32767; /* 2^(MDIG-1) - 1 */ ! static const unsigned int m2 = 256; /* 2^(MDIG/2) */ typedef struct *************** *** 169,174 **** same random number sequence! */ ! s = 2 * s + 1; /* enforce seed be odd */ ! seed = (s < m1 ? s : m1); /* seed should be less than m1 */ k0 = 9069 % m2; --- 169,174 ---- same random number sequence! */ ! s = 2 * s + 1; /* enforce seed be odd */ ! seed = (s < m1 ? s : m1); /* seed should be less than m1 */ k0 = 9069 % m2; *************** *** 191,197 **** static const gsl_rng_type uni_type = ! {"uni", /* name */ ! 32766, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (uni_state_t), &uni_set, --- 191,197 ---- static const gsl_rng_type uni_type = ! {"uni", /* name */ ! 32766, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (uni_state_t), &uni_set, diff -x.info* -rc2P gsl-1.3/rng/uni32.c gsl-1.4/rng/uni32.c *** gsl-1.3/rng/uni32.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/uni32.c Fri Jul 25 15:18:14 2003 *************** *** 106,112 **** static void uni32_set (void *state, unsigned long int s); ! static const unsigned long int MDIG = 32; /* Machine digits in int */ ! static const unsigned long int m1 = 2147483647; /* 2^(MDIG-1) - 1 */ ! static const unsigned long int m2 = 65536; /* 2^(MDIG/2) */ typedef struct --- 106,112 ---- static void uni32_set (void *state, unsigned long int s); ! static const unsigned long int MDIG = 32; /* Machine digits in int */ ! static const unsigned long int m1 = 2147483647; /* 2^(MDIG-1) - 1 */ ! static const unsigned long int m2 = 65536; /* 2^(MDIG/2) */ typedef struct *************** *** 171,175 **** /*s = 2*s+1; *//* enforce seed be odd */ ! seed = (s < m1 ? s : m1); /* seed should be less than m1 */ seed -= (seed % 2 == 0 ? 1 : 0); --- 171,175 ---- /*s = 2*s+1; *//* enforce seed be odd */ ! seed = (s < m1 ? s : m1); /* seed should be less than m1 */ seed -= (seed % 2 == 0 ? 1 : 0); *************** *** 193,199 **** static const gsl_rng_type uni32_type = ! {"uni32", /* name */ ! 2147483646, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (uni32_state_t), &uni32_set, --- 193,199 ---- static const gsl_rng_type uni32_type = ! {"uni32", /* name */ ! 2147483646, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (uni32_state_t), &uni32_set, diff -x.info* -rc2P gsl-1.3/rng/vax.c gsl-1.4/rng/vax.c *** gsl-1.3/rng/vax.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/vax.c Fri Jul 25 15:18:14 2003 *************** *** 73,79 **** static const gsl_rng_type vax_type = ! {"vax", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (vax_state_t), &vax_set, --- 73,79 ---- static const gsl_rng_type vax_type = ! {"vax", /* name */ ! 0xffffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (vax_state_t), &vax_set, diff -x.info* -rc2P gsl-1.3/rng/waterman14.c gsl-1.4/rng/waterman14.c *** gsl-1.3/rng/waterman14.c Sun Dec 2 15:56:16 2001 --- gsl-1.4/rng/waterman14.c Fri Jul 25 15:18:14 2003 *************** *** 26,32 **** * Page 106-108 * ! * It is called "Waterman" * ! * This implementation copyright (C) 2001 Carlo Perassi. */ --- 26,33 ---- * Page 106-108 * ! * It is called "Waterman". * ! * This implementation copyright (C) 2001 Carlo Perassi ! * and (C) 2003 Heiko Bauke. */ *************** *** 36,40 **** #define AA 1566083941UL ! #define MM 0xffffffffUL /* 2 ^ 32 */ static inline unsigned long int ran_get (void *vstate); --- 37,41 ---- #define AA 1566083941UL ! #define MM 0xffffffffUL /* 2 ^ 32 - 1 */ static inline unsigned long int ran_get (void *vstate); *************** *** 72,76 **** if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s & MM; --- 73,77 ---- if (s == 0) ! s = 1; /* default seed is 1 */ state->x = s & MM; *************** *** 80,86 **** static const gsl_rng_type ran_type = { ! "waterman14", /* name */ ! MM, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, --- 81,87 ---- static const gsl_rng_type ran_type = { ! "waterman14", /* name */ ! MM, /* RAND_MAX */ ! 1, /* RAND_MIN */ sizeof (ran_state_t), &ran_set, diff -x.info* -rc2P gsl-1.3/rng/zuf.c gsl-1.4/rng/zuf.c *** gsl-1.3/rng/zuf.c Wed Apr 18 21:52:36 2001 --- gsl-1.4/rng/zuf.c Fri Jul 25 15:18:14 2003 *************** *** 31,35 **** static void zuf_set (void *state, unsigned long int s); ! static const unsigned long int zuf_randmax = 16777216; /* 2^24 */ typedef struct --- 31,35 ---- static void zuf_set (void *state, unsigned long int s); ! static const unsigned long int zuf_randmax = 16777216; /* 2^24 */ typedef struct *************** *** 100,104 **** if (s == 0) ! s = 1802; /* default seed is 1802 */ ij = s; --- 100,104 ---- if (s == 0) ! s = 1802; /* default seed is 1802 */ ij = s; *************** *** 114,129 **** /* 24 bits?? */ for (jj = 1; jj <= 24; ++jj) ! { ! m = i * j % 179 * k % 179; ! i = j; ! j = k; ! k = m; ! l = (l * 53 + 1) % 169; ! if (l * m % 64 >= 32) ! { ! x += y; ! } ! y *= 0.5; ! } state->u[ii] = (unsigned long int) (x * zuf_randmax); } --- 114,129 ---- /* 24 bits?? */ for (jj = 1; jj <= 24; ++jj) ! { ! m = i * j % 179 * k % 179; ! i = j; ! j = k; ! k = m; ! l = (l * 53 + 1) % 169; ! if (l * m % 64 >= 32) ! { ! x += y; ! } ! y *= 0.5; ! } state->u[ii] = (unsigned long int) (x * zuf_randmax); } *************** *** 131,137 **** static const gsl_rng_type zuf_type = ! {"zuf", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (zuf_state_t), &zuf_set, --- 131,137 ---- static const gsl_rng_type zuf_type = ! {"zuf", /* name */ ! 0x00ffffffUL, /* RAND_MAX */ ! 0, /* RAND_MIN */ sizeof (zuf_state_t), &zuf_set, diff -x.info* -rc2P gsl-1.3/roots/Makefile.am gsl-1.4/roots/Makefile.am *** gsl-1.3/roots/Makefile.am Sun Aug 26 19:49:10 2001 --- gsl-1.4/roots/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 16,19 **** test_SOURCES = test.c test_funcs.c test.h ! test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 16,19 ---- test_SOURCES = test.c test_funcs.c test.h ! test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/roots/Makefile.in gsl-1.4/roots/Makefile.in *** gsl-1.3/roots/Makefile.in Wed Dec 18 22:40:17 2002 --- gsl-1.4/roots/Makefile.in Thu Aug 14 12:29:26 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,57 **** # PARTICULAR PURPOSE. ! # -*-makefile-*- ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,35 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ ! # -*-makefile-*- srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 60,71 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 38,60 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 73,89 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ noinst_LTLIBRARIES = libgslroots.la --- 62,146 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ noinst_LTLIBRARIES = libgslroots.la *************** *** 102,196 **** test_SOURCES = test.c test_funcs.c test.h ! test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslroots_la_LDFLAGS = ! libgslroots_la_LIBADD = ! libgslroots_la_OBJECTS = bisection.lo brent.lo falsepos.lo newton.lo \ ! secant.lo steffenson.lo convergence.lo fsolver.lo fdfsolver.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_DEPENDENCIES = libgslroots.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslroots_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps roots/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 159,245 ---- test_SOURCES = test.c test_funcs.c test.h ! test_LDADD = libgslroots.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = roots ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslroots_la_LDFLAGS = ! libgslroots_la_LIBADD = ! am_libgslroots_la_OBJECTS = bisection.lo brent.lo falsepos.lo newton.lo \ ! secant.lo steffenson.lo convergence.lo fsolver.lo fdfsolver.lo ! libgslroots_la_OBJECTS = $(am_libgslroots_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test_funcs.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslroots.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslroots_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu roots/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslroots.la: $(libgslroots_la_OBJECTS) $(libgslroots_la_DEPENDENCIES) + $(LINK) $(libgslroots_la_LDFLAGS) $(libgslroots_la_OBJECTS) $(libgslroots_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 201,337 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslroots.la: $(libgslroots_la_OBJECTS) $(libgslroots_la_DEPENDENCIES) ! $(LINK) $(libgslroots_la_LDFLAGS) $(libgslroots_la_OBJECTS) $(libgslroots_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = roots distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 250,454 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 340,389 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 457,523 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/roots/bisection.c gsl-1.4/roots/bisection.c *** gsl-1.3/roots/bisection.c Sun Jul 15 12:35:11 2001 --- gsl-1.4/roots/bisection.c Fri Jul 25 15:18:14 2003 *************** *** 127,131 **** static const gsl_root_fsolver_type bisection_type = ! {"bisection", /* name */ sizeof (bisection_state_t), &bisection_init, --- 127,131 ---- static const gsl_root_fsolver_type bisection_type = ! {"bisection", /* name */ sizeof (bisection_state_t), &bisection_init, diff -x.info* -rc2P gsl-1.3/roots/brent.c gsl-1.4/roots/brent.c *** gsl-1.3/roots/brent.c Sun Jul 15 12:05:55 2001 --- gsl-1.4/roots/brent.c Fri Jul 25 15:18:14 2003 *************** *** 129,141 **** if (b < c) ! { ! *x_lower = b; ! *x_upper = c; ! } else ! { ! *x_lower = c; ! *x_upper = b; ! } return GSL_SUCCESS; --- 129,141 ---- if (b < c) ! { ! *x_lower = b; ! *x_upper = c; ! } else ! { ! *x_lower = c; ! *x_upper = b; ! } return GSL_SUCCESS; *************** *** 144,189 **** if (fabs (e) < tol || fabs (fa) <= fabs (fb)) { ! d = m; /* use bisection */ e = m; } else { ! double p, q, r; /* use inverse cubic interpolation */ double s = fb / fa; if (ac_equal) ! { ! p = 2 * m * s; ! q = 1 - s; ! } else ! { ! q = fa / fc; ! r = fb / fc; ! p = s * (2 * m * q * (q - r) - (b - a) * (r - 1)); ! q = (q - 1) * (r - 1) * (s - 1); ! } if (p > 0) ! { ! q = -q; ! } else ! { ! p = -p; ! } if (2 * p < GSL_MIN (3 * m * q - fabs (tol * q), fabs (e * q))) ! { ! e = d; ! d = p / q; ! } else ! { ! /* interpolation failed, fall back to bisection */ ! ! d = m; ! e = m; ! } } --- 144,189 ---- if (fabs (e) < tol || fabs (fa) <= fabs (fb)) { ! d = m; /* use bisection */ e = m; } else { ! double p, q, r; /* use inverse cubic interpolation */ double s = fb / fa; if (ac_equal) ! { ! p = 2 * m * s; ! q = 1 - s; ! } else ! { ! q = fa / fc; ! r = fb / fc; ! p = s * (2 * m * q * (q - r) - (b - a) * (r - 1)); ! q = (q - 1) * (r - 1) * (s - 1); ! } if (p > 0) ! { ! q = -q; ! } else ! { ! p = -p; ! } if (2 * p < GSL_MIN (3 * m * q - fabs (tol * q), fabs (e * q))) ! { ! e = d; ! d = p / q; ! } else ! { ! /* interpolation failed, fall back to bisection */ ! ! d = m; ! e = m; ! } } *************** *** 237,241 **** static const gsl_root_fsolver_type brent_type = ! {"brent", /* name */ sizeof (brent_state_t), &brent_init, --- 237,241 ---- static const gsl_root_fsolver_type brent_type = ! {"brent", /* name */ sizeof (brent_state_t), &brent_init, diff -x.info* -rc2P gsl-1.3/roots/falsepos.c gsl-1.4/roots/falsepos.c *** gsl-1.3/roots/falsepos.c Sun Jul 15 12:07:41 2001 --- gsl-1.4/roots/falsepos.c Fri Jul 25 15:18:14 2003 *************** *** 156,160 **** state->f_upper = f_bisect; if (*root > x_bisect) ! *root = 0.5 * (x_left + x_bisect) ; } else --- 156,160 ---- state->f_upper = f_bisect; if (*root > x_bisect) ! *root = 0.5 * (x_left + x_bisect) ; } else *************** *** 163,167 **** state->f_lower = f_bisect; if (*root < x_bisect) ! *root = 0.5 * (x_bisect + x_right) ; } --- 163,167 ---- state->f_lower = f_bisect; if (*root < x_bisect) ! *root = 0.5 * (x_bisect + x_right) ; } *************** *** 171,175 **** static const gsl_root_fsolver_type falsepos_type = ! {"falsepos", /* name */ sizeof (falsepos_state_t), &falsepos_init, --- 171,175 ---- static const gsl_root_fsolver_type falsepos_type = ! {"falsepos", /* name */ sizeof (falsepos_state_t), &falsepos_init, diff -x.info* -rc2P gsl-1.3/roots/fdfsolver.c gsl-1.4/roots/fdfsolver.c *** gsl-1.3/roots/fdfsolver.c Wed Apr 18 21:52:37 2001 --- gsl-1.4/roots/fdfsolver.c Fri Jul 25 15:18:14 2003 *************** *** 33,37 **** { GSL_ERROR_VAL ("failed to allocate space for root solver struct", ! GSL_ENOMEM, 0); }; --- 33,37 ---- { GSL_ERROR_VAL ("failed to allocate space for root solver struct", ! GSL_ENOMEM, 0); }; *************** *** 40,47 **** if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for root solver state", ! GSL_ENOMEM, 0); }; --- 40,47 ---- if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for root solver state", ! GSL_ENOMEM, 0); }; diff -x.info* -rc2P gsl-1.3/roots/fsolver.c gsl-1.4/roots/fsolver.c *** gsl-1.3/roots/fsolver.c Sun Jul 15 12:28:16 2001 --- gsl-1.4/roots/fsolver.c Fri Jul 25 15:18:14 2003 *************** *** 32,36 **** { GSL_ERROR_VAL ("failed to allocate space for root solver struct", ! GSL_ENOMEM, 0); }; --- 32,36 ---- { GSL_ERROR_VAL ("failed to allocate space for root solver struct", ! GSL_ENOMEM, 0); }; *************** *** 39,46 **** if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for root solver state", ! GSL_ENOMEM, 0); }; --- 39,46 ---- if (s->state == 0) { ! free (s); /* exception in constructor, avoid memory leak */ GSL_ERROR_VAL ("failed to allocate space for root solver state", ! GSL_ENOMEM, 0); }; *************** *** 71,75 **** { return (s->type->iterate) (s->state, ! s->function, &(s->root), &(s->x_lower), &(s->x_upper)); } --- 71,75 ---- { return (s->type->iterate) (s->state, ! s->function, &(s->root), &(s->x_lower), &(s->x_upper)); } diff -x.info* -rc2P gsl-1.3/roots/gsl_roots.h gsl-1.4/roots/gsl_roots.h *** gsl-1.3/roots/gsl_roots.h Mon Jun 10 13:13:04 2002 --- gsl-1.4/roots/gsl_roots.h Fri Jul 25 15:18:22 2003 *************** *** 96,100 **** int gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, ! gsl_function_fdf * fdf, double root); int --- 96,100 ---- int gsl_root_fdfsolver_set (gsl_root_fdfsolver * s, ! gsl_function_fdf * fdf, double root); int diff -x.info* -rc2P gsl-1.3/roots/newton.c gsl-1.4/roots/newton.c *** gsl-1.3/roots/newton.c Sun May 6 20:41:16 2001 --- gsl-1.4/roots/newton.c Fri Jul 25 15:18:14 2003 *************** *** 99,103 **** static const gsl_root_fdfsolver_type newton_type = ! {"newton", /* name */ sizeof (newton_state_t), &newton_init, --- 99,103 ---- static const gsl_root_fdfsolver_type newton_type = ! {"newton", /* name */ sizeof (newton_state_t), &newton_init, diff -x.info* -rc2P gsl-1.3/roots/secant.c gsl-1.4/roots/secant.c *** gsl-1.3/roots/secant.c Sun May 6 20:41:16 2001 --- gsl-1.4/roots/secant.c Fri Jul 25 15:18:14 2003 *************** *** 110,114 **** static const gsl_root_fdfsolver_type secant_type = ! {"secant", /* name */ sizeof (secant_state_t), &secant_init, --- 110,114 ---- static const gsl_root_fdfsolver_type secant_type = ! {"secant", /* name */ sizeof (secant_state_t), &secant_init, diff -x.info* -rc2P gsl-1.3/roots/steffenson.c gsl-1.4/roots/steffenson.c *** gsl-1.3/roots/steffenson.c Sun May 6 20:41:16 2001 --- gsl-1.4/roots/steffenson.c Fri Jul 25 15:18:14 2003 *************** *** 137,141 **** static const gsl_root_fdfsolver_type steffenson_type = ! {"steffenson", /* name */ sizeof (steffenson_state_t), &steffenson_init, --- 137,141 ---- static const gsl_root_fdfsolver_type steffenson_type = ! {"steffenson", /* name */ sizeof (steffenson_state_t), &steffenson_init, diff -x.info* -rc2P gsl-1.3/roots/test.c gsl-1.4/roots/test.c *** gsl-1.3/roots/test.c Sun Jul 15 12:17:20 2001 --- gsl-1.4/roots/test.c Fri Jul 25 15:18:14 2003 *************** *** 35,39 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); #define WITHIN_TOL(a, b, epsrel, epsabs) \ --- 35,39 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); #define WITHIN_TOL(a, b, epsrel, epsabs) \ *************** *** 122,126 **** test_fdf (gsl_root_fdfsolver_steffenson, ! "(x - 1)^7 {0.9}", &FDF_func6, 0.9, 1.0); /* now summarize the results */ --- 122,126 ---- test_fdf (gsl_root_fdfsolver_steffenson, ! "(x - 1)^7 {0.9}", &FDF_func6, 0.9, 1.0); /* now summarize the results */ *************** *** 136,140 **** void test_f (const gsl_root_fsolver_type * T, const char * description, gsl_function *f, ! double lower_bound, double upper_bound, double correct_root) { int status; --- 136,140 ---- void test_f (const gsl_root_fsolver_type * T, const char * description, gsl_function *f, ! double lower_bound, double upper_bound, double correct_root) { int status; *************** *** 162,169 **** if (a > b) ! gsl_test (GSL_FAILURE, "interval is invalid (%g,%g)", a, b); if (r < a || r > b) ! gsl_test (GSL_FAILURE, "r lies outside interval %g (%g,%g)", r, a, b); status = gsl_root_test_interval (a,b, EPSABS, EPSREL); --- 162,169 ---- if (a > b) ! gsl_test (GSL_FAILURE, "interval is invalid (%g,%g)", a, b); if (r < a || r > b) ! gsl_test (GSL_FAILURE, "r lies outside interval %g (%g,%g)", r, a, b); status = gsl_root_test_interval (a,b, EPSABS, EPSREL); *************** *** 173,178 **** gsl_test (status, "%s, %s (%g obs vs %g expected) ", ! gsl_root_fsolver_name(s), description, ! gsl_root_fsolver_root(s), correct_root); if (iterations == MAX_ITERATIONS) --- 173,178 ---- gsl_test (status, "%s, %s (%g obs vs %g expected) ", ! gsl_root_fsolver_name(s), description, ! gsl_root_fsolver_root(s), correct_root); if (iterations == MAX_ITERATIONS) *************** *** 186,198 **** { gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", ! r, correct_root); } } void test_f_e (const gsl_root_fsolver_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double upper_bound, double correct_root) { int status; --- 186,200 ---- { gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", ! r, correct_root); } + + gsl_root_fsolver_free(s); } void test_f_e (const gsl_root_fsolver_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double upper_bound, double correct_root) { int status; *************** *** 211,214 **** --- 213,217 ---- if (status == GSL_EINVAL) { + gsl_root_fsolver_free(s); return ; } *************** *** 221,236 **** x_upper = gsl_root_fsolver_x_lower(s); status = gsl_root_test_interval (x_lower, x_upper, ! EPSABS, EPSREL); } while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); gsl_test (!status, "%s, %s", gsl_root_fsolver_name(s), description, ! gsl_root_fsolver_root(s) - correct_root); } void test_fdf (const gsl_root_fdfsolver_type * T, const char * description, ! gsl_function_fdf *fdf, double root, double correct_root) { int status; --- 224,240 ---- x_upper = gsl_root_fsolver_x_lower(s); status = gsl_root_test_interval (x_lower, x_upper, ! EPSABS, EPSREL); } while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); gsl_test (!status, "%s, %s", gsl_root_fsolver_name(s), description, ! gsl_root_fsolver_root(s) - correct_root); + gsl_root_fsolver_free(s); } void test_fdf (const gsl_root_fdfsolver_type * T, const char * description, ! gsl_function_fdf *fdf, double root, double correct_root) { int status; *************** *** 247,257 **** gsl_root_fdfsolver_iterate (s); status = gsl_root_test_delta(gsl_root_fdfsolver_root(s), prev, ! EPSABS, EPSREL); } while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); gsl_test (status, "%s, %s (%g obs vs %g expected) ", ! gsl_root_fdfsolver_name(s), description, ! gsl_root_fdfsolver_root(s), correct_root); if (iterations == MAX_ITERATIONS) --- 251,261 ---- gsl_root_fdfsolver_iterate (s); status = gsl_root_test_delta(gsl_root_fdfsolver_root(s), prev, ! EPSABS, EPSREL); } while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); gsl_test (status, "%s, %s (%g obs vs %g expected) ", ! gsl_root_fdfsolver_name(s), description, ! gsl_root_fdfsolver_root(s), correct_root); if (iterations == MAX_ITERATIONS) *************** *** 263,278 **** if (!WITHIN_TOL (gsl_root_fdfsolver_root(s), correct_root, ! EPSREL, EPSABS)) { gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", ! gsl_root_fdfsolver_root(s), correct_root); } } void test_fdf_e (const gsl_root_fdfsolver_type * T, ! const char * description, gsl_function_fdf *fdf, ! double root, double correct_root) { int status; --- 267,283 ---- if (!WITHIN_TOL (gsl_root_fdfsolver_root(s), correct_root, ! EPSREL, EPSABS)) { gsl_test (GSL_FAILURE, "incorrect precision (%g obs vs %g expected)", ! gsl_root_fdfsolver_root(s), correct_root); } + gsl_root_fdfsolver_free(s); } void test_fdf_e (const gsl_root_fdfsolver_type * T, ! const char * description, gsl_function_fdf *fdf, ! double root, double correct_root) { int status; *************** *** 291,300 **** gsl_root_fdfsolver_iterate (s); status = gsl_root_test_delta(gsl_root_fdfsolver_root(s), prev, ! EPSABS, EPSREL); } while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); gsl_test (!status, "%s, %s", gsl_root_fdfsolver_name(s), ! description, gsl_root_fdfsolver_root(s) - correct_root); } --- 296,306 ---- gsl_root_fdfsolver_iterate (s); status = gsl_root_test_delta(gsl_root_fdfsolver_root(s), prev, ! EPSABS, EPSREL); } while (status == GSL_CONTINUE && iterations < MAX_ITERATIONS); gsl_test (!status, "%s, %s", gsl_root_fdfsolver_name(s), ! description, gsl_root_fdfsolver_root(s) - correct_root); ! gsl_root_fdfsolver_free(s); } diff -x.info* -rc2P gsl-1.3/roots/test.h gsl-1.4/roots/test.h *** gsl-1.3/roots/test.h Wed Oct 3 10:56:34 2001 --- gsl-1.4/roots/test.h Fri Jul 25 15:18:22 2003 *************** *** 34,52 **** void test_f (const gsl_root_fsolver_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double upper_bound, double correct_root); void test_f_e (const gsl_root_fsolver_type * T, const char * description, ! gsl_function *f, ! double lower_bound, double upper_bound, double correct_root); void test_fdf (const gsl_root_fdfsolver_type * T, const char * description, ! gsl_function_fdf *fdf, double root, double correct_root); void test_fdf_e (const gsl_root_fdfsolver_type * T, const char * description, ! gsl_function_fdf *fdf, double root, double correct_root); --- 34,52 ---- void test_f (const gsl_root_fsolver_type * T, ! const char * description, gsl_function *f, ! double lower_bound, double upper_bound, double correct_root); void test_f_e (const gsl_root_fsolver_type * T, const char * description, ! gsl_function *f, ! double lower_bound, double upper_bound, double correct_root); void test_fdf (const gsl_root_fdfsolver_type * T, const char * description, ! gsl_function_fdf *fdf, double root, double correct_root); void test_fdf_e (const gsl_root_fdfsolver_type * T, const char * description, ! gsl_function_fdf *fdf, double root, double correct_root); diff -x.info* -rc2P gsl-1.3/siman/ChangeLog gsl-1.4/siman/ChangeLog *** gsl-1.3/siman/ChangeLog Sat Aug 3 19:33:09 2002 --- gsl-1.4/siman/ChangeLog Mon Mar 31 18:22:36 2003 *************** *** 1,2 **** --- 1,9 ---- + 2003-03-31 Brian Gough + + * siman.c (gsl_siman_solve): avoid reevaluation for best_E + (gsl_siman_solve): loop over param.iters_fixed_T not + params.n_tries + (gsl_siman_solve): initialise energy at start + Sat Aug 3 20:32:38 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/siman/Makefile.am gsl-1.4/siman/Makefile.am *** gsl-1.3/siman/Makefile.am Thu Dec 6 11:14:56 2001 --- gsl-1.4/siman/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 8,12 **** test_SOURCES = test.c ! test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la siman_tsp_SOURCES = siman_tsp.c --- 8,12 ---- test_SOURCES = test.c ! test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la siman_tsp_SOURCES = siman_tsp.c diff -x.info* -rc2P gsl-1.3/siman/Makefile.in gsl-1.4/siman/Makefile.in *** gsl-1.3/siman/Makefile.in Wed Dec 18 22:39:36 2002 --- gsl-1.4/siman/Makefile.in Thu Aug 14 12:29:48 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,87 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ check_PROGRAMS = test siman_tsp --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ check_PROGRAMS = test siman_tsp *************** *** 92,96 **** test_SOURCES = test.c ! test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la siman_tsp_SOURCES = siman_tsp.c --- 149,153 ---- test_SOURCES = test.c ! test_LDADD = libgslsiman.la ../rng/libgslrng.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la siman_tsp_SOURCES = siman_tsp.c *************** *** 106,203 **** check_INCLUDES = -I. -I../rng -I../err mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslsiman_la_LDFLAGS = ! libgslsiman_la_LIBADD = ! libgslsiman_la_OBJECTS = siman.lo ! check_PROGRAMS = test$(EXEEXT) siman_tsp$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! siman_tsp_OBJECTS = siman_tsp.$(OBJEXT) ! siman_tsp_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../utils/libutils.la ! siman_tsp_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO - DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - - TAR = tar - GZIP_ENV = --best - SOURCES = $(libgslsiman_la_SOURCES) $(test_SOURCES) $(siman_tsp_SOURCES) - OBJECTS = $(libgslsiman_la_OBJECTS) $(test_OBJECTS) $(siman_tsp_OBJECTS) - - all: all-redirect .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps siman/Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 163,257 ---- check_INCLUDES = -I. -I../rng -I../err + subdir = siman + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslsiman_la_LDFLAGS = ! libgslsiman_la_LIBADD = ! am_libgslsiman_la_OBJECTS = siman.lo ! libgslsiman_la_OBJECTS = $(am_libgslsiman_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) siman_tsp$(EXEEXT) ! am_siman_tsp_OBJECTS = siman_tsp.$(OBJEXT) ! siman_tsp_OBJECTS = $(am_siman_tsp_OBJECTS) ! siman_tsp_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../utils/libutils.la ! siman_tsp_LDFLAGS = ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslsiman.la ../rng/libgslrng.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslsiman_la_SOURCES) $(siman_tsp_SOURCES) \ ! $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in \ ! TODO ! SOURCES = $(libgslsiman_la_SOURCES) $(siman_tsp_SOURCES) $(test_SOURCES) + all: all-am .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu siman/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslsiman.la: $(libgslsiman_la_OBJECTS) $(libgslsiman_la_DEPENDENCIES) + $(LINK) $(libgslsiman_la_LDFLAGS) $(libgslsiman_la_OBJECTS) $(libgslsiman_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! siman_tsp$(EXEEXT): $(siman_tsp_OBJECTS) $(siman_tsp_DEPENDENCIES) ! @rm -f siman_tsp$(EXEEXT) ! $(LINK) $(siman_tsp_LDFLAGS) $(siman_tsp_OBJECTS) $(siman_tsp_LDADD) $(LIBS) ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 208,348 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslsiman.la: $(libgslsiman_la_OBJECTS) $(libgslsiman_la_DEPENDENCIES) ! $(LINK) $(libgslsiman_la_LDFLAGS) $(libgslsiman_la_OBJECTS) $(libgslsiman_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! ! siman_tsp$(EXEEXT): $(siman_tsp_OBJECTS) $(siman_tsp_DEPENDENCIES) ! @rm -f siman_tsp$(EXEEXT) ! $(LINK) $(siman_tsp_LDFLAGS) $(siman_tsp_OBJECTS) $(siman_tsp_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = siman distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 262,466 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 352,401 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 470,536 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/siman/gsl_siman.h gsl-1.4/siman/gsl_siman.h *** gsl-1.3/siman/gsl_siman.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/siman/gsl_siman.h Fri Jul 25 15:18:22 2003 *************** *** 50,56 **** typedef struct { ! int n_tries; /* how many points to try for each step */ ! int iters_fixed_T; /* how many iterations at each temperature? */ ! double step_size; /* max step size in the random walk */ /* the following parameters are for the Boltzmann distribution */ double k, t_initial, mu_t, t_min; --- 50,56 ---- typedef struct { ! int n_tries; /* how many points to try for each step */ ! int iters_fixed_T; /* how many iterations at each temperature? */ ! double step_size; /* max step size in the random walk */ /* the following parameters are for the Boltzmann distribution */ double k, t_initial, mu_t, t_min; *************** *** 60,80 **** void gsl_siman_solve(const gsl_rng * r, ! void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! gsl_siman_copy_t copyfunc, ! gsl_siman_copy_construct_t copy_constructor, ! gsl_siman_destroy_t destructor, ! size_t element_size, ! gsl_siman_params_t params); void gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! size_t element_size, ! gsl_siman_params_t params); __END_DECLS --- 60,80 ---- void gsl_siman_solve(const gsl_rng * r, ! void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! gsl_siman_copy_t copyfunc, ! gsl_siman_copy_construct_t copy_constructor, ! gsl_siman_destroy_t destructor, ! size_t element_size, ! gsl_siman_params_t params); void gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! size_t element_size, ! gsl_siman_params_t params); __END_DECLS diff -x.info* -rc2P gsl-1.3/siman/siman.c gsl-1.4/siman/siman.c *** gsl-1.3/siman/siman.c Sat Aug 3 19:23:11 2002 --- gsl-1.4/siman/siman.c Fri Jul 25 15:18:14 2003 *************** *** 32,43 **** void gsl_siman_solve (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! gsl_siman_copy_t copyfunc, ! gsl_siman_copy_construct_t copy_constructor, ! gsl_siman_destroy_t destructor, ! size_t element_size, ! gsl_siman_params_t params) { void *x, *new_x, *best_x; --- 32,43 ---- void gsl_siman_solve (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! gsl_siman_copy_t copyfunc, ! gsl_siman_copy_construct_t copy_constructor, ! gsl_siman_destroy_t destructor, ! size_t element_size, ! gsl_siman_params_t params) { void *x, *new_x, *best_x; *************** *** 45,49 **** int i, done; double T; ! int n_evals = 0, n_iter = 0, n_accepts, n_rejects, n_eless; /* this function requires that either the dynamic functions (copy, --- 45,49 ---- int i, done; double T; ! int n_evals = 1, n_iter = 0, n_accepts, n_rejects, n_eless; /* this function requires that either the dynamic functions (copy, *************** *** 51,57 **** size is given */ assert((copyfunc != NULL && copy_constructor != NULL && destructor != NULL) ! || (element_size != 0)); distance = 0 ; /* This parameter is not currently used */ if (copyfunc) { --- 51,58 ---- size is given */ assert((copyfunc != NULL && copy_constructor != NULL && destructor != NULL) ! || (element_size != 0)); distance = 0 ; /* This parameter is not currently used */ + E = Ef(x0_p); if (copyfunc) { *************** *** 67,71 **** } ! best_E = Ef(best_x); T = params.t_initial; --- 68,72 ---- } ! best_E = E; T = params.t_initial; *************** *** 77,90 **** while (!done) { - E = Ef (x); n_accepts = 0; n_rejects = 0; n_eless = 0; ! for (i = 0; i < params.n_tries - 1; ++i) { if (copyfunc) { ! copyfunc(x, new_x); } else { ! memcpy (new_x, x, element_size); } --- 78,90 ---- while (!done) { n_accepts = 0; n_rejects = 0; n_eless = 0; ! for (i = 0; i < params.iters_fixed_T; ++i) { if (copyfunc) { ! copyfunc(x, new_x); } else { ! memcpy (new_x, x, element_size); } *************** *** 101,127 **** } ! ++n_evals; /* keep track of Ef() evaluations */ /* now take the crucial step: see if the new point is accepted ! or not, as determined by the boltzman probability */ if (new_E < E) { ! /* yay! take a step */ ! if (copyfunc) { ! copyfunc(new_x, x); ! } else { ! memcpy (x, new_x, element_size); ! } ! E = new_E; ! ++n_eless; } else if (gsl_rng_uniform(r) < exp (-(new_E - E)/(params.k * T)) ) { ! /* yay! take a step */ ! if (copyfunc) { ! copyfunc(new_x, x); ! } else { ! memcpy(x, new_x, element_size); ! } ! E = new_E; ! ++n_accepts; } else { ! ++n_rejects; } } --- 101,127 ---- } ! ++n_evals; /* keep track of Ef() evaluations */ /* now take the crucial step: see if the new point is accepted ! or not, as determined by the boltzman probability */ if (new_E < E) { ! /* yay! take a step */ ! if (copyfunc) { ! copyfunc(new_x, x); ! } else { ! memcpy (x, new_x, element_size); ! } ! E = new_E; ! ++n_eless; } else if (gsl_rng_uniform(r) < exp (-(new_E - E)/(params.k * T)) ) { ! /* yay! take a step */ ! if (copyfunc) { ! copyfunc(new_x, x); ! } else { ! memcpy(x, new_x, element_size); ! } ! E = new_E; ! ++n_accepts; } else { ! ++n_rejects; } } *************** *** 138,142 **** /* apply the cooling schedule to the temperature */ ! /* FIXME: I should also introduce a cooling schedule for the n_tries */ T /= params.mu_t; ++n_iter; --- 138,142 ---- /* apply the cooling schedule to the temperature */ ! /* FIXME: I should also introduce a cooling schedule for the iters */ T /= params.mu_t; ++n_iter; *************** *** 169,185 **** void gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! size_t element_size, ! gsl_siman_params_t params) { /* the new set of trial points, and their energies and probabilities */ void *x, *new_x; double *energies, *probs, *sum_probs; ! double Ex; /* energy of the chosen point */ ! double T; /* the temperature */ int i, done; ! double u; /* throw the die to choose a new "x" */ int n_iter; --- 169,185 ---- void gsl_siman_solve_many (const gsl_rng * r, void *x0_p, gsl_siman_Efunc_t Ef, ! gsl_siman_step_t take_step, ! gsl_siman_metric_t distance, ! gsl_siman_print_t print_position, ! size_t element_size, ! gsl_siman_params_t params) { /* the new set of trial points, and their energies and probabilities */ void *x, *new_x; double *energies, *probs, *sum_probs; ! double Ex; /* energy of the chosen point */ ! double T; /* the temperature */ int i, done; ! double u; /* throw the die to choose a new "x" */ int n_iter; *************** *** 205,216 **** Ex = Ef (x); for (i = 0; i < params.n_tries - 1; ++i) ! { /* only go to N_TRIES-2 */ ! /* center the new_x[] around x, then pass it to take_step() */ ! sum_probs[i] = 0; ! memcpy ((char *)new_x + i * element_size, x, element_size); ! take_step (r, (char *)new_x + i * element_size, params.step_size); ! energies[i] = Ef ((char *)new_x + i * element_size); ! probs[i] = exp (-(energies[i] - Ex) / (params.k * T)); ! } /* now add in the old value of "x", so it is a contendor */ memcpy ((char *)new_x + (params.n_tries - 1) * element_size, x, element_size); --- 205,216 ---- Ex = Ef (x); for (i = 0; i < params.n_tries - 1; ++i) ! { /* only go to N_TRIES-2 */ ! /* center the new_x[] around x, then pass it to take_step() */ ! sum_probs[i] = 0; ! memcpy ((char *)new_x + i * element_size, x, element_size); ! take_step (r, (char *)new_x + i * element_size, params.step_size); ! energies[i] = Ef ((char *)new_x + i * element_size); ! probs[i] = exp (-(energies[i] - Ex) / (params.k * T)); ! } /* now add in the old value of "x", so it is a contendor */ memcpy ((char *)new_x + (params.n_tries - 1) * element_size, x, element_size); *************** *** 221,248 **** sum_probs[0] = probs[0]; for (i = 1; i < params.n_tries; ++i) ! { ! sum_probs[i] = sum_probs[i - 1] + probs[i]; ! } u = gsl_rng_uniform (r) * sum_probs[params.n_tries - 1]; for (i = 0; i < params.n_tries; ++i) ! { ! if (u < sum_probs[i]) ! { ! memcpy (x, (char *)new_x + i * element_size, element_size); ! break; ! } ! } if (print_position) ! { ! printf ("%5d\t%12g\t", n_iter, T); ! print_position (x); ! printf ("\t%12g\t%12g\n", distance (x, x0_p), Ex); ! } T /= params.mu_t; ++n_iter; if (T < params.t_min) ! { ! done = 1; ! } } --- 221,248 ---- sum_probs[0] = probs[0]; for (i = 1; i < params.n_tries; ++i) ! { ! sum_probs[i] = sum_probs[i - 1] + probs[i]; ! } u = gsl_rng_uniform (r) * sum_probs[params.n_tries - 1]; for (i = 0; i < params.n_tries; ++i) ! { ! if (u < sum_probs[i]) ! { ! memcpy (x, (char *)new_x + i * element_size, element_size); ! break; ! } ! } if (print_position) ! { ! printf ("%5d\t%12g\t", n_iter, T); ! print_position (x); ! printf ("\t%12g\t%12g\n", distance (x, x0_p), Ex); ! } T /= params.mu_t; ++n_iter; if (T < params.t_min) ! { ! done = 1; ! } } diff -x.info* -rc2P gsl-1.3/siman/siman_tsp.c gsl-1.4/siman/siman_tsp.c *** gsl-1.3/siman/siman_tsp.c Thu May 3 22:00:14 2001 --- gsl-1.4/siman/siman_tsp.c Fri Jul 25 15:18:14 2003 *************** *** 29,46 **** /* set up parameters for this simulated annealing run */ ! #define N_TRIES 200 /* how many points do we try before stepping */ ! #define ITERS_FIXED_T 2000 /* how many iterations for each T? */ ! #define STEP_SIZE 1.0 /* max step size in random walk */ ! #define K 1.0 /* Boltzmann constant */ ! #define T_INITIAL 5000.0 /* initial temperature */ ! #define MU_T 1.002 /* damping factor for temperature */ #define T_MIN 5.0e-1 gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, ! K, T_INITIAL, MU_T, T_MIN}; struct s_tsp_city { const char * name; ! double lat, longitude; /* coordinates */ }; typedef struct s_tsp_city Stsp_city; --- 29,46 ---- /* set up parameters for this simulated annealing run */ ! #define N_TRIES 200 /* how many points do we try before stepping */ ! #define ITERS_FIXED_T 2000 /* how many iterations for each T? */ ! #define STEP_SIZE 1.0 /* max step size in random walk */ ! #define K 1.0 /* Boltzmann constant */ ! #define T_INITIAL 5000.0 /* initial temperature */ ! #define MU_T 1.002 /* damping factor for temperature */ #define T_MIN 5.0e-1 gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, ! K, T_INITIAL, MU_T, T_MIN}; struct s_tsp_city { const char * name; ! double lat, longitude; /* coordinates */ }; typedef struct s_tsp_city Stsp_city; *************** *** 59,73 **** Stsp_city cities[] = {{"Santa Fe", 35.68, 105.95}, ! {"Phoenix", 33.54, 112.07}, ! {"Albuquerque", 35.12, 106.62}, ! {"Clovis", 34.41, 103.20}, ! {"Durango", 37.29, 107.87}, ! {"Dallas", 32.79, 96.77}, ! {"Tesuque", 35.77, 105.92}, ! {"Grants", 35.15, 107.84}, ! {"Los Alamos", 35.89, 106.28}, ! {"Las Cruces", 32.34, 106.76}, ! {"Cortez", 37.35, 108.58}, ! {"Gallup", 35.52, 108.74}}; #define N_CITIES (sizeof(cities)/sizeof(Stsp_city)) --- 59,73 ---- Stsp_city cities[] = {{"Santa Fe", 35.68, 105.95}, ! {"Phoenix", 33.54, 112.07}, ! {"Albuquerque", 35.12, 106.62}, ! {"Clovis", 34.41, 103.20}, ! {"Durango", 37.29, 107.87}, ! {"Dallas", 32.79, 96.77}, ! {"Tesuque", 35.77, 105.92}, ! {"Grants", 35.15, 107.84}, ! {"Los Alamos", 35.89, 106.28}, ! {"Las Cruces", 32.34, 106.76}, ! {"Cortez", 37.35, 108.58}, ! {"Gallup", 35.52, 108.74}}; #define N_CITIES (sizeof(cities)/sizeof(Stsp_city)) *************** *** 78,82 **** double city_distance(Stsp_city c1, Stsp_city c2) { ! const double earth_radius = 6375.000; /* 6000KM approximately */ /* sin and cos of lat and long; must convert to radians */ double sla1 = sin(c1.lat*M_PI/180), cla1 = cos(c1.lat*M_PI/180), --- 78,82 ---- double city_distance(Stsp_city c1, Stsp_city c2) { ! const double earth_radius = 6375.000; /* 6000KM approximately */ /* sin and cos of lat and long; must convert to radians */ double sla1 = sin(c1.lat*M_PI/180), cla1 = cos(c1.lat*M_PI/180), *************** *** 189,195 **** for (i = 0; i < N_CITIES+1; ++i) { printf("###initial_city_coord: %g %g \"%s\"\n", ! -cities[x_initial[i % N_CITIES]].longitude, ! cities[x_initial[i % N_CITIES]].lat, ! cities[x_initial[i % N_CITIES]].name); } --- 189,195 ---- for (i = 0; i < N_CITIES+1; ++i) { printf("###initial_city_coord: %g %g \"%s\"\n", ! -cities[x_initial[i % N_CITIES]].longitude, ! cities[x_initial[i % N_CITIES]].lat, ! cities[x_initial[i % N_CITIES]].name); } *************** *** 197,201 **** gsl_siman_solve(r, x_initial, Etsp, Stsp, Mtsp, Ptsp, NULL, NULL, NULL, ! N_CITIES*sizeof(int), params); printf("# final order of cities:\n"); --- 197,201 ---- gsl_siman_solve(r, x_initial, Etsp, Stsp, Mtsp, Ptsp, NULL, NULL, NULL, ! N_CITIES*sizeof(int), params); printf("# final order of cities:\n"); *************** *** 209,215 **** for (i = 0; i < N_CITIES+1; ++i) { printf("###final_city_coord: %g %g %s\n", ! -cities[x_initial[i % N_CITIES]].longitude, ! cities[x_initial[i % N_CITIES]].lat, ! cities[x_initial[i % N_CITIES]].name); } --- 209,215 ---- for (i = 0; i < N_CITIES+1; ++i) { printf("###final_city_coord: %g %g %s\n", ! -cities[x_initial[i % N_CITIES]].longitude, ! cities[x_initial[i % N_CITIES]].lat, ! cities[x_initial[i % N_CITIES]].name); } *************** *** 232,238 **** for (j = 0; j < N_CITIES; ++j) { if (i == j) { ! dist = 0; } else { ! dist = city_distance(cities[i], cities[j]); } distance_matrix[i][j] = dist; --- 232,238 ---- for (j = 0; j < N_CITIES; ++j) { if (i == j) { ! dist = 0; } else { ! dist = city_distance(cities[i], cities[j]); } distance_matrix[i][j] = dist; *************** *** 297,301 **** /* do it! calculate the energy/cost for that route */ double E; ! E = Etsp(route); /* TSP energy function */ /* now save the best 3 energies and routes */ if (E < best_E) { --- 297,301 ---- /* do it! calculate the energy/cost for that route */ double E; ! E = Etsp(route); /* TSP energy function */ /* now save the best 3 energies and routes */ if (E < best_E) { diff -x.info* -rc2P gsl-1.3/siman/test.c gsl-1.4/siman/test.c *** gsl-1.3/siman/test.c Thu Dec 6 13:01:19 2001 --- gsl-1.4/siman/test.c Fri Jul 25 15:18:14 2003 *************** *** 29,42 **** /* set up parameters for this simulated annealing run */ ! #define N_TRIES 200 /* how many points do we try before stepping */ ! #define ITERS_FIXED_T 1000 /* how many iterations for each T? */ ! #define STEP_SIZE 1.0 /* max step size in random walk */ ! #define K 1.0 /* Boltzmann constant */ ! #define T_INITIAL 0.008 /* initial temperature */ ! #define MU_T 1.003 /* damping factor for temperature */ #define T_MIN 2.0e-6 gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, ! K, T_INITIAL, MU_T, T_MIN}; inline double square (double x) ; --- 29,42 ---- /* set up parameters for this simulated annealing run */ ! #define N_TRIES 200 /* how many points do we try before stepping */ ! #define ITERS_FIXED_T 1000 /* how many iterations for each T? */ ! #define STEP_SIZE 1.0 /* max step size in random walk */ ! #define K 1.0 /* Boltzmann constant */ ! #define T_INITIAL 0.008 /* initial temperature */ ! #define MU_T 1.003 /* damping factor for temperature */ #define T_MIN 2.0e-6 gsl_siman_params_t params = {N_TRIES, ITERS_FIXED_T, STEP_SIZE, ! K, T_INITIAL, MU_T, T_MIN}; inline double square (double x) ; *************** *** 94,103 **** x = -10.0 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=-10") ; x = +10.0 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=10") ; --- 94,103 ---- x = -10.0 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=-10") ; x = +10.0 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=10") ; *************** *** 106,122 **** x = +0.6 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.6") ; x = +0.5 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.5") ; x = +0.4 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.4") ; exit (gsl_test_summary ()); --- 106,123 ---- x = +0.6 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.6") ; x = +0.5 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.5") ; x = +0.4 ; gsl_siman_solve(r, &x, E1, S1, M1, NULL, NULL, NULL, NULL, ! sizeof(double), params); gsl_test_rel(x, x_min, 1e-3, "f(x)= exp(-(x-1)^2) sin(8x), x0=0.4") ; + gsl_rng_free(r); exit (gsl_test_summary ()); *************** *** 125,129 **** printf("#one dimensional problem, x0 = %f\n", x0.D1); gsl_siman_Usolve(r, &x0, test_E_1D, test_step_1D, distance_1D, ! print_pos_1D, params); --- 126,130 ---- printf("#one dimensional problem, x0 = %f\n", x0.D1); gsl_siman_Usolve(r, &x0, test_E_1D, test_step_1D, distance_1D, ! print_pos_1D, params); *************** *** 131,137 **** x0.D2[1] = 5.5; printf("#two dimensional problem, (x0,y0) = (%f,%f)\n", ! x0.D2[0], x0.D2[1]); gsl_siman_Usolve(r, &x0, test_E_2D, test_step_2D, distance_2D, ! print_pos_2D, params); x0.D3[0] = 12.2; --- 132,138 ---- x0.D2[1] = 5.5; printf("#two dimensional problem, (x0,y0) = (%f,%f)\n", ! x0.D2[0], x0.D2[1]); gsl_siman_Usolve(r, &x0, test_E_2D, test_step_2D, distance_2D, ! print_pos_2D, params); x0.D3[0] = 12.2; *************** *** 139,145 **** x0.D3[2] = -15.5; printf("#three dimensional problem, (x0,y0,z0) = (%f,%f,%f)\n", ! x0.D3[0], x0.D3[1], x0.D3[2]); gsl_siman_Usolve(r, &x0, test_E_3D, test_step_3D, distance_3D, ! print_pos_3D, params); x0.D2[0] = 12.2; --- 140,146 ---- x0.D3[2] = -15.5; printf("#three dimensional problem, (x0,y0,z0) = (%f,%f,%f)\n", ! x0.D3[0], x0.D3[1], x0.D3[2]); gsl_siman_Usolve(r, &x0, test_E_3D, test_step_3D, distance_3D, ! print_pos_3D, params); x0.D2[0] = 12.2; diff -x.info* -rc2P gsl-1.3/sort/Makefile.am gsl-1.4/sort/Makefile.am *** gsl-1.3/sort/Makefile.am Sun Jan 21 15:51:59 2001 --- gsl-1.4/sort/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 13,16 **** test_SOURCES = test.c ! test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la --- 13,16 ---- test_SOURCES = test.c ! test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la diff -x.info* -rc2P gsl-1.3/sort/Makefile.in gsl-1.4/sort/Makefile.in *** gsl-1.3/sort/Makefile.in Wed Dec 18 22:37:41 2002 --- gsl-1.4/sort/Makefile.in Thu Aug 14 12:30:47 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslsort.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslsort.la *************** *** 99,194 **** test_SOURCES = test.c ! test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslsort_la_LDFLAGS = ! libgslsort_la_LIBADD = ! libgslsort_la_OBJECTS = sort.lo sortind.lo sortvec.lo sortvecind.lo \ ! subset.lo subsetind.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslsort.la ../permutation/libgslpermutation.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslsort_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps sort/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,242 ---- test_SOURCES = test.c ! test_LDADD = libgslsort.la ../permutation/libgslpermutation.la ../vector/libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ! subdir = sort ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslsort_la_LDFLAGS = ! libgslsort_la_LIBADD = ! am_libgslsort_la_OBJECTS = sort.lo sortind.lo sortvec.lo sortvecind.lo \ ! subset.lo subsetind.lo ! libgslsort_la_OBJECTS = $(am_libgslsort_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslsort.la ../permutation/libgslpermutation.la \ ! ../vector/libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslsort_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu sort/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslsort.la: $(libgslsort_la_OBJECTS) $(libgslsort_la_DEPENDENCIES) + $(LINK) $(libgslsort_la_LDFLAGS) $(libgslsort_la_OBJECTS) $(libgslsort_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 199,335 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslsort.la: $(libgslsort_la_OBJECTS) $(libgslsort_la_DEPENDENCIES) ! $(LINK) $(libgslsort_la_LDFLAGS) $(libgslsort_la_OBJECTS) $(libgslsort_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = sort distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 247,451 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 338,387 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 454,520 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/sort/sort.c gsl-1.4/sort/sort.c *** gsl-1.3/sort/sort.c Tue May 1 22:22:32 2001 --- gsl-1.4/sort/sort.c Fri Jul 25 15:18:14 2003 *************** *** 56,71 **** if (j < N && CMP (data, size, j, j + 1) < 0) ! { ! j++; ! } if (CMP (data, size, k, j) < 0) ! { ! swap (data, size, j, k); ! } else ! { ! break; ! } k = j; --- 56,71 ---- if (j < N && CMP (data, size, j, j + 1) < 0) ! { ! j++; ! } if (CMP (data, size, k, j) < 0) ! { ! swap (data, size, j, k); ! } else ! { ! break; ! } k = j; *************** *** 85,89 **** if (count == 0) { ! return; /* No data to sort */ } --- 85,89 ---- if (count == 0) { ! return; /* No data to sort */ } *************** *** 94,98 **** k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { --- 94,98 ---- k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { diff -x.info* -rc2P gsl-1.3/sort/sortind.c gsl-1.4/sort/sortind.c *** gsl-1.3/sort/sortind.c Wed Oct 3 10:56:34 2001 --- gsl-1.4/sort/sortind.c Fri Jul 25 15:18:14 2003 *************** *** 35,46 **** if (j < N && CMP (data, size, p[j], p[j + 1]) < 0) ! { ! j++; ! } if (CMP (data, size, pki, p[j]) >= 0) ! { ! break; ! } p[k] = p[j]; --- 35,46 ---- if (j < N && CMP (data, size, p[j], p[j + 1]) < 0) ! { ! j++; ! } if (CMP (data, size, pki, p[j]) >= 0) ! { ! break; ! } p[k] = p[j]; *************** *** 63,67 **** if (count == 0) { ! return GSL_SUCCESS; /* No data to sort */ } --- 63,67 ---- if (count == 0) { ! return GSL_SUCCESS; /* No data to sort */ } *************** *** 77,81 **** k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { --- 77,81 ---- k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { diff -x.info* -rc2P gsl-1.3/sort/sortvec_source.c gsl-1.4/sort/sortvec_source.c *** gsl-1.3/sort/sortvec_source.c Wed Apr 18 21:52:38 2001 --- gsl-1.4/sort/sortvec_source.c Fri Jul 25 15:18:14 2003 *************** *** 30,41 **** if (j < N && data[j * stride] < data[(j + 1) * stride]) ! { ! j++; ! } if (v >= data[j * stride]) ! { ! break; ! } data[k * stride] = data[j * stride]; --- 30,41 ---- if (j < N && data[j * stride] < data[(j + 1) * stride]) ! { ! j++; ! } if (v >= data[j * stride]) ! { ! break; ! } data[k * stride] = data[j * stride]; *************** *** 55,59 **** if (n == 0) { ! return; /* No data to sort */ } --- 55,59 ---- if (n == 0) { ! return; /* No data to sort */ } *************** *** 64,68 **** k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { --- 64,68 ---- k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { diff -x.info* -rc2P gsl-1.3/sort/sortvecind_source.c gsl-1.4/sort/sortvecind_source.c *** gsl-1.3/sort/sortvecind_source.c Wed Apr 18 21:52:38 2001 --- gsl-1.4/sort/sortvecind_source.c Fri Jul 25 15:18:14 2003 *************** *** 30,41 **** if (j < N && data[p[j] * stride] < data[p[j + 1] * stride]) ! { ! j++; ! } if (data[pki * stride] >= data[p[j] * stride]) ! { ! break; ! } p[k] = p[j]; --- 30,41 ---- if (j < N && data[p[j] * stride] < data[p[j + 1] * stride]) ! { ! j++; ! } if (data[pki * stride] >= data[p[j] * stride]) ! { ! break; ! } p[k] = p[j]; *************** *** 55,59 **** if (n == 0) { ! return; /* No data to sort */ } --- 55,59 ---- if (n == 0) { ! return; /* No data to sort */ } *************** *** 71,75 **** k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { --- 71,75 ---- k = N / 2; ! k++; /* Compensate the first use of 'k--' */ do { diff -x.info* -rc2P gsl-1.3/sort/subset_source.c gsl-1.4/sort/subset_source.c *** gsl-1.3/sort/subset_source.c Tue Jun 12 12:16:11 2001 --- gsl-1.4/sort/subset_source.c Fri Jul 25 15:18:14 2003 *************** *** 18,22 **** int FUNCTION (gsl_sort, smallest) (BASE * dest, const size_t k, ! const BASE * src, const size_t stride, const size_t n) { --- 18,22 ---- int FUNCTION (gsl_sort, smallest) (BASE * dest, const size_t k, ! const BASE * src, const size_t stride, const size_t n) { *************** *** 49,67 **** if (j < k) ! { ! j++; ! } else if (xi >= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi > dest[i1 - 1]) break; ! dest[i1] = dest[i1 - 1]; ! } dest[i1] = xi; --- 49,67 ---- if (j < k) ! { ! j++; ! } else if (xi >= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi > dest[i1 - 1]) break; ! dest[i1] = dest[i1 - 1]; ! } dest[i1] = xi; *************** *** 114,132 **** if (j < k) ! { ! j++; ! } else if (xi <= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi < dest[i1 - 1]) break; ! dest[i1] = dest[i1 - 1]; ! } dest[i1] = xi; --- 114,132 ---- if (j < k) ! { ! j++; ! } else if (xi <= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi < dest[i1 - 1]) break; ! dest[i1] = dest[i1 - 1]; ! } dest[i1] = xi; diff -x.info* -rc2P gsl-1.3/sort/subsetind_source.c gsl-1.4/sort/subsetind_source.c *** gsl-1.3/sort/subsetind_source.c Tue Jun 12 12:16:42 2001 --- gsl-1.4/sort/subsetind_source.c Fri Jul 25 15:18:15 2003 *************** *** 49,67 **** if (j < k) ! { ! j++; ! } else if (xi >= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi > src[p[i1 - 1] * stride]) break; ! p[i1] = p[i1 - 1]; ! } p[i1] = i; --- 49,67 ---- if (j < k) ! { ! j++; ! } else if (xi >= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi > src[p[i1 - 1] * stride]) break; ! p[i1] = p[i1 - 1]; ! } p[i1] = i; *************** *** 114,132 **** if (j < k) ! { ! j++; ! } else if (xi <= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi < src[stride * p[i1 - 1]]) break; ! p[i1] = p[i1 - 1]; ! } p[i1] = i; --- 114,132 ---- if (j < k) ! { ! j++; ! } else if (xi <= xbound) ! { ! continue; ! } for (i1 = j - 1; i1 > 0 ; i1--) ! { if (xi < src[stride * p[i1 - 1]]) break; ! p[i1] = p[i1 - 1]; ! } p[i1] = i; diff -x.info* -rc2P gsl-1.3/sort/test.c gsl-1.4/sort/test.c *** gsl-1.3/sort/test.c Tue Jun 12 18:14:23 2001 --- gsl-1.4/sort/test.c Fri Jul 25 15:18:15 2003 *************** *** 114,130 **** { for (s = 1; s < 4; s++) ! { ! test_sort_vector (i, s); ! test_sort_vector_float (i, s); ! test_sort_vector_long_double (i, s); ! test_sort_vector_ulong (i, s); ! test_sort_vector_long (i, s); ! test_sort_vector_uint (i, s); ! test_sort_vector_int (i, s); ! test_sort_vector_ushort (i, s); ! test_sort_vector_short (i, s); ! test_sort_vector_uchar (i, s); ! test_sort_vector_char (i, s); ! } } --- 114,130 ---- { for (s = 1; s < 4; s++) ! { ! test_sort_vector (i, s); ! test_sort_vector_float (i, s); ! test_sort_vector_long_double (i, s); ! test_sort_vector_ulong (i, s); ! test_sort_vector_long (i, s); ! test_sort_vector_uint (i, s); ! test_sort_vector_int (i, s); ! test_sort_vector_ushort (i, s); ! test_sort_vector_short (i, s); ! test_sort_vector_uchar (i, s); ! test_sort_vector_char (i, s); ! } } diff -x.info* -rc2P gsl-1.3/sort/test_heapsort.c gsl-1.4/sort/test_heapsort.c *** gsl-1.3/sort/test_heapsort.c Thu May 3 22:00:14 2001 --- gsl-1.4/sort/test_heapsort.c Fri Jul 25 15:18:15 2003 *************** *** 129,135 **** { ! double tmp = data[i]; ! data[i] = data[j]; ! data[j] = tmp; } } --- 129,135 ---- { ! double tmp = data[i]; ! data[i] = data[j]; ! data[j] = tmp; } } *************** *** 144,150 **** { if (data[i] != orig[i]) ! { ! return GSL_FAILURE; ! } } --- 144,150 ---- { if (data[i] != orig[i]) ! { ! return GSL_FAILURE; ! } } *************** *** 160,166 **** { if (data[p[i]] != orig[i]) ! { ! return GSL_FAILURE; ! } } --- 160,166 ---- { if (data[p[i]] != orig[i]) ! { ! return GSL_FAILURE; ! } } diff -x.info* -rc2P gsl-1.3/sort/test_source.c gsl-1.4/sort/test_source.c *** gsl-1.3/sort/test_source.c Thu May 3 22:00:14 2001 --- gsl-1.4/sort/test_source.c Fri Jul 25 15:18:15 2003 *************** *** 167,172 **** kk = k; k++; ! if (k < kk) /* prevent overflow */ ! k = kk; FUNCTION (gsl_vector, set) (v, i, k); } --- 167,172 ---- kk = k; k++; ! if (k < kk) /* prevent overflow */ ! k = kk; FUNCTION (gsl_vector, set) (v, i, k); } *************** *** 193,199 **** { if (FUNCTION (gsl_vector, get) (data, i) != FUNCTION (gsl_vector, get) (orig, i)) ! { ! return GSL_FAILURE; ! } } --- 193,199 ---- { if (FUNCTION (gsl_vector, get) (data, i) != FUNCTION (gsl_vector, get) (orig, i)) ! { ! return GSL_FAILURE; ! } } *************** *** 209,215 **** { if (FUNCTION (gsl_vector, get) (data, p->data[i]) != FUNCTION (gsl_vector, get) (orig, i)) ! { ! return GSL_FAILURE; ! } } --- 209,215 ---- { if (FUNCTION (gsl_vector, get) (data, p->data[i]) != FUNCTION (gsl_vector, get) (orig, i)) ! { ! return GSL_FAILURE; ! } } *************** *** 225,231 **** { if (x[i] != FUNCTION (gsl_vector, get) (data, i)) ! { ! return GSL_FAILURE; ! } } --- 225,231 ---- { if (x[i] != FUNCTION (gsl_vector, get) (data, i)) ! { ! return GSL_FAILURE; ! } } *************** *** 243,249 **** { if (x[i] != FUNCTION (gsl_vector, get) (data, data->size - i - 1)) ! { ! return GSL_FAILURE; ! } } --- 243,249 ---- { if (x[i] != FUNCTION (gsl_vector, get) (data, data->size - i - 1)) ! { ! return GSL_FAILURE; ! } } *************** *** 262,268 **** if (FUNCTION(gsl_vector,get)(data,p1[i]) != FUNCTION(gsl_vector,get)(data, p->data[i])) ! { ! return GSL_FAILURE; ! } } --- 262,268 ---- if (FUNCTION(gsl_vector,get)(data,p1[i]) != FUNCTION(gsl_vector,get)(data, p->data[i])) ! { ! return GSL_FAILURE; ! } } *************** *** 280,286 **** if (FUNCTION(gsl_vector,get)(data,p1[i]) != FUNCTION(gsl_vector,get)(data, p->data[p->size - i - 1])) ! { ! return GSL_FAILURE; ! } } --- 280,286 ---- if (FUNCTION(gsl_vector,get)(data,p1[i]) != FUNCTION(gsl_vector,get)(data, p->data[p->size - i - 1])) ! { ! return GSL_FAILURE; ! } } diff -x.info* -rc2P gsl-1.3/specfunc/ChangeLog gsl-1.4/specfunc/ChangeLog *** gsl-1.3/specfunc/ChangeLog Sat Sep 7 14:56:43 2002 --- gsl-1.4/specfunc/ChangeLog Mon Aug 11 09:09:29 2003 *************** *** 1,2 **** --- 1,65 ---- + 2003-08-11 Brian Gough + + * test_sf.c: added preprocessor definitions TEST_FACTOR and + TEST_SIGMA to allow larger tolerances on released versions (to + reduce the number of spurious bug reports). + + 2003-07-24 Brian Gough + + * gamma.c (gsl_sf_choose_e): declare k as unsigned int instead of + int + (gsl_sf_gamma_e): avoid shadowed declaration of sgn + + * bessel_sequence.c (gsl_sf_bessel_sequence_Jnu_e): declare i as + size_t instead of int + + 2003-06-11 Brian Gough + + * coupling.c (gsl_sf_coupling_6j_INCORRECT_e): fixed typo in test + for two_jf < 0 + (gsl_sf_coupling_6j_e): moved the implementation from the + INCORRECT function into the correct function + + 2003-06-05 Brian Gough + + * test_sf.c (test_coupling): added some regression tests for + coupling functions + + 2003-06-02 Brian Gough + + * gamma_inc.c (gamma_inc_D): handle x10 as a special case + + 2003-04-18 Brian Gough + + * gamma.c (gsl_sf_gammainv_e): handle any singularities in + gamma(x) up front and return zero directly + + 2003-04-12 Brian Gough + + * psi.c: changed value of psi(1,1) in table psi_1_table to be + positive ((-)^2 * 1! * zeta(2)), in accordance with Abramowitz & + Stegun 6.4.2. + + 2003-04-08 G. Jungman + + * erfc.c, gsl_sf_erf.h: added gsl_sf_hazard_e() and + gsl_sf_hazard() functions + + 2003-04-07 G. Jungman + + * gamma_inc.c, gsl_sf_gamma.h: added gsl_sf_gamma_inc_e() and + gsl_sf_gamma_inc(), implmentations of the non-normalized incomplete + gamma function + + 2003-03-09 Brian Gough + + * gsl_sf_legendre.h: added missing const to formal parameter on + gsl_sf_legendre_sphPlm_deriv_array + + 2003-01-25 Brian Gough + + * test_gamma.c (test_gamma): added a test for + gamma_inc_P(10,1e-16) (BUG#12) + Sat Sep 7 15:56:15 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/specfunc/Makefile.am gsl-1.4/specfunc/Makefile.am *** gsl-1.3/specfunc/Makefile.am Sun Aug 26 19:46:21 2001 --- gsl-1.4/specfunc/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 13,17 **** check_PROGRAMS = test ! test_LDADD = libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hyperg.c test_legendre.c --- 13,17 ---- check_PROGRAMS = test ! test_LDADD = libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hyperg.c test_legendre.c diff -x.info* -rc2P gsl-1.3/specfunc/Makefile.in gsl-1.4/specfunc/Makefile.in *** gsl-1.3/specfunc/Makefile.in Wed Dec 18 22:38:25 2002 --- gsl-1.4/specfunc/Makefile.in Thu Aug 14 12:30:24 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslspecfunc.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslspecfunc.la *************** *** 99,209 **** check_PROGRAMS = test ! test_LDADD = libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hyperg.c test_legendre.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslspecfunc_la_LDFLAGS = ! libgslspecfunc_la_LIBADD = ! libgslspecfunc_la_OBJECTS = airy.lo airy_der.lo airy_zero.lo atanint.lo \ ! bessel.lo bessel_I0.lo bessel_I1.lo bessel_In.lo bessel_Inu.lo \ ! bessel_J0.lo bessel_J1.lo bessel_Jn.lo bessel_Jnu.lo bessel_K0.lo \ ! bessel_K1.lo bessel_Kn.lo bessel_Knu.lo bessel_Y0.lo bessel_Y1.lo \ ! bessel_Yn.lo bessel_Ynu.lo bessel_amp_phase.lo bessel_i.lo bessel_j.lo \ ! bessel_k.lo bessel_olver.lo bessel_temme.lo bessel_y.lo bessel_zero.lo \ ! bessel_sequence.lo beta.lo beta_inc.lo clausen.lo coulomb.lo \ ! coupling.lo coulomb_bound.lo dawson.lo debye.lo dilog.lo elementary.lo \ ! ellint.lo elljac.lo erfc.lo exp.lo expint.lo expint3.lo fermi_dirac.lo \ ! gegenbauer.lo gamma.lo gamma_inc.lo hyperg_0F1.lo hyperg_2F0.lo \ ! hyperg_1F1.lo hyperg_2F1.lo hyperg_U.lo hyperg.lo laguerre.lo \ ! lambert.lo legendre_H3d.lo legendre_Qn.lo legendre_con.lo \ ! legendre_poly.lo log.lo poch.lo pow_int.lo psi.lo result.lo shint.lo \ ! sinint.lo synchrotron.lo transport.lo trig.lo zeta.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test_sf.$(OBJEXT) test_airy.$(OBJEXT) \ ! test_bessel.$(OBJEXT) test_coulomb.$(OBJEXT) test_dilog.$(OBJEXT) \ ! test_gamma.$(OBJEXT) test_hyperg.$(OBJEXT) test_legendre.$(OBJEXT) ! test_DEPENDENCIES = libgslspecfunc.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslspecfunc_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps specfunc/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 155,260 ---- check_PROGRAMS = test ! test_LDADD = libgslspecfunc.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test_sf.c test_sf.h test_airy.c test_bessel.c test_coulomb.c test_dilog.c test_gamma.c test_hyperg.c test_legendre.c + subdir = specfunc + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslspecfunc_la_LDFLAGS = ! libgslspecfunc_la_LIBADD = ! am_libgslspecfunc_la_OBJECTS = airy.lo airy_der.lo airy_zero.lo \ ! atanint.lo bessel.lo bessel_I0.lo bessel_I1.lo bessel_In.lo \ ! bessel_Inu.lo bessel_J0.lo bessel_J1.lo bessel_Jn.lo \ ! bessel_Jnu.lo bessel_K0.lo bessel_K1.lo bessel_Kn.lo \ ! bessel_Knu.lo bessel_Y0.lo bessel_Y1.lo bessel_Yn.lo \ ! bessel_Ynu.lo bessel_amp_phase.lo bessel_i.lo bessel_j.lo \ ! bessel_k.lo bessel_olver.lo bessel_temme.lo bessel_y.lo \ ! bessel_zero.lo bessel_sequence.lo beta.lo beta_inc.lo \ ! clausen.lo coulomb.lo coupling.lo coulomb_bound.lo dawson.lo \ ! debye.lo dilog.lo elementary.lo ellint.lo elljac.lo erfc.lo \ ! exp.lo expint.lo expint3.lo fermi_dirac.lo gegenbauer.lo \ ! gamma.lo gamma_inc.lo hyperg_0F1.lo hyperg_2F0.lo hyperg_1F1.lo \ ! hyperg_2F1.lo hyperg_U.lo hyperg.lo laguerre.lo lambert.lo \ ! legendre_H3d.lo legendre_Qn.lo legendre_con.lo legendre_poly.lo \ ! log.lo poch.lo pow_int.lo psi.lo result.lo shint.lo sinint.lo \ ! synchrotron.lo transport.lo trig.lo zeta.lo ! libgslspecfunc_la_OBJECTS = $(am_libgslspecfunc_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test_sf.$(OBJEXT) test_airy.$(OBJEXT) \ ! test_bessel.$(OBJEXT) test_coulomb.$(OBJEXT) \ ! test_dilog.$(OBJEXT) test_gamma.$(OBJEXT) test_hyperg.$(OBJEXT) \ ! test_legendre.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslspecfunc.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslspecfunc_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu specfunc/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslspecfunc.la: $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_DEPENDENCIES) + $(LINK) $(libgslspecfunc_la_LDFLAGS) $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 214,350 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslspecfunc.la: $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_DEPENDENCIES) ! $(LINK) $(libgslspecfunc_la_LDFLAGS) $(libgslspecfunc_la_OBJECTS) $(libgslspecfunc_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = specfunc distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 265,469 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 353,402 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 472,538 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/specfunc/TODO gsl-1.4/specfunc/TODO *** gsl-1.3/specfunc/TODO Wed Nov 6 23:01:58 2002 --- gsl-1.4/specfunc/TODO Tue Aug 12 11:06:15 2003 *************** *** 1,2 **** --- 1,18 ---- + * Could probably return immediately for exact zeros in 3j,6j,9j + functions. Easiest to implement for 3j. + + Note from Serge Winitzki : + + The package "matpack" (www.matpack.de) includes many special functions, + also the 3j symbols. They refer to some quite complicated numerical + methods using recursion relations to get the right answers for large + momenta, and to 1975-1976 papers by Schulten and Gordon for the + description of the algorithms. The papers can be downloaded for free at + http://www.ks.uiuc.edu/Publications/Papers/ + + http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU76B + http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU75A + http://www.ks.uiuc.edu/Publications/Papers/abstract.cgi?tbcode=SCHU75 + * add Fresnel Integrals to specfunc. See TOMS 723 + 2 subsequent errata. diff -x.info* -rc2P gsl-1.3/specfunc/airy.c gsl-1.4/specfunc/airy.c *** gsl-1.3/specfunc/airy.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/airy.c Fri Jul 25 15:18:15 2003 *************** *** 433,437 **** significant figures required 14.41 decimal places required 17.06 ! [GJ] Sun Apr 19 18:14:31 EDT 1998 There was something wrong with these coefficients. I was getting --- 433,437 ---- significant figures required 14.41 decimal places required 17.06 ! [GJ] Sun Apr 19 18:14:31 EDT 1998 There was something wrong with these coefficients. I was getting diff -x.info* -rc2P gsl-1.3/specfunc/airy_der.c gsl-1.4/specfunc/airy_der.c *** gsl-1.3/specfunc/airy_der.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/airy_der.c Fri Jul 25 15:18:15 2003 *************** *** 38,45 **** /* series for aif on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 5.22e-18 ! log weighted error 17.28 ! significant figures required 16.01 ! decimal places required 17.73 */ static double aif_data[8] = { --- 38,45 ---- /* series for aif on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 5.22e-18 ! log weighted error 17.28 ! significant figures required 16.01 ! decimal places required 17.73 */ static double aif_data[8] = { *************** *** 62,69 **** /* series for aig on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 3.14e-19 ! log weighted error 18.50 ! significant figures required 17.44 ! decimal places required 18.98 */ static double aig_data[9] = { --- 62,69 ---- /* series for aig on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 3.14e-19 ! log weighted error 18.50 ! significant figures required 17.44 ! decimal places required 18.98 */ static double aig_data[9] = { *************** *** 87,94 **** /* series for aip2 on the interval 0.00000e+00 to 1.25000e-01 ! with weighted error 2.15e-17 ! log weighted error 16.67 ! significant figures required 14.27 ! decimal places required 17.26 */ static double aip2_data[15] = { --- 87,94 ---- /* series for aip2 on the interval 0.00000e+00 to 1.25000e-01 ! with weighted error 2.15e-17 ! log weighted error 16.67 ! significant figures required 14.27 ! decimal places required 17.26 */ static double aip2_data[15] = { *************** *** 118,125 **** /* series for aip1 on the interval 1.25000e-01 to 1.00000e+00 ! with weighted error 2.60e-17 ! log weighted error 16.58 ! significant figures required 14.91 ! decimal places required 17.28 */ static double aip1_data[25] = { --- 118,125 ---- /* series for aip1 on the interval 1.25000e-01 to 1.00000e+00 ! with weighted error 2.60e-17 ! log weighted error 16.58 ! significant figures required 14.91 ! decimal places required 17.28 */ static double aip1_data[25] = { *************** *** 160,167 **** /* series for bif on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 9.05e-18 ! log weighted error 17.04 ! significant figures required 15.83 ! decimal places required 17.49 */ static double bif_data[8] = { --- 160,167 ---- /* series for bif on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 9.05e-18 ! log weighted error 17.04 ! significant figures required 15.83 ! decimal places required 17.49 */ static double bif_data[8] = { *************** *** 184,191 **** /* series for big on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 5.44e-19 ! log weighted error 18.26 ! significant figures required 17.46 ! decimal places required 18.74 */ static double big_data[9] = { --- 184,191 ---- /* series for big on the interval -1.00000e+00 to 1.00000e+00 ! with weighted error 5.44e-19 ! log weighted error 18.26 ! significant figures required 17.46 ! decimal places required 18.74 */ static double big_data[9] = { *************** *** 209,216 **** /* series for bif2 on the interval 1.00000e+00 to 8.00000e+00 ! with weighted error 3.82e-19 ! log weighted error 18.42 ! significant figures required 17.68 ! decimal places required 18.92 */ static double bif2_data[10] = { --- 209,216 ---- /* series for bif2 on the interval 1.00000e+00 to 8.00000e+00 ! with weighted error 3.82e-19 ! log weighted error 18.42 ! significant figures required 17.68 ! decimal places required 18.92 */ static double bif2_data[10] = { *************** *** 235,242 **** /* series for big2 on the interval 1.00000e+00 to 8.00000e+00 ! with weighted error 3.35e-17 ! log weighted error 16.48 ! significant figures required 16.52 ! decimal places required 16.98 */ static double big2_data[10] = { --- 235,242 ---- /* series for big2 on the interval 1.00000e+00 to 8.00000e+00 ! with weighted error 3.35e-17 ! log weighted error 16.48 ! significant figures required 16.52 ! decimal places required 16.98 */ static double big2_data[10] = { *************** *** 261,268 **** /* series for bip2 on the interval 0.00000e+00 to 1.25000e-01 ! with weighted error 2.07e-18 ! log weighted error 17.69 ! significant figures required 16.51 ! decimal places required 18.42 */ static double bip2_data[29] = { --- 261,268 ---- /* series for bip2 on the interval 0.00000e+00 to 1.25000e-01 ! with weighted error 2.07e-18 ! log weighted error 17.69 ! significant figures required 16.51 ! decimal places required 18.42 */ static double bip2_data[29] = { *************** *** 306,313 **** /* series for bip1 on the interval 1.25000e-01 to 3.53553e-01 ! with weighted error 1.86e-17 ! log weighted error 16.73 ! significant figures required 15.67 ! decimal places required 17.42 */ static double bip1_data[24] = { --- 306,313 ---- /* series for bip1 on the interval 1.25000e-01 to 3.53553e-01 ! with weighted error 1.86e-17 ! log weighted error 16.73 ! significant figures required 15.67 ! decimal places required 17.42 */ static double bip1_data[24] = { *************** *** 346,353 **** /* series for an22 on the interval -1.00000e+00 to -1.25000e-01 ! with weighted error 3.30e-17 ! log weighted error 16.48 ! significant figures required 14.95 ! decimal places required 17.24 */ static double an22_data[33] = { --- 346,353 ---- /* series for an22 on the interval -1.00000e+00 to -1.25000e-01 ! with weighted error 3.30e-17 ! log weighted error 16.48 ! significant figures required 14.95 ! decimal places required 17.24 */ static double an22_data[33] = { *************** *** 395,402 **** /* series for an21 on the interval -1.25000e-01 to -1.56250e-02 ! with weighted error 3.43e-17 ! log weighted error 16.47 ! significant figures required 14.48 ! decimal places required 17.16 */ static double an21_data[24] = { --- 395,402 ---- /* series for an21 on the interval -1.25000e-01 to -1.56250e-02 ! with weighted error 3.43e-17 ! log weighted error 16.47 ! significant figures required 14.48 ! decimal places required 17.16 */ static double an21_data[24] = { *************** *** 435,442 **** /* series for an20 on the interval -1.56250e-02 to 0.00000e+00 ! with weighted error 4.41e-17 ! log weighted error 16.36 ! significant figures required 14.16 ! decimal places required 16.96 */ static double an20_data[16] = { --- 435,442 ---- /* series for an20 on the interval -1.56250e-02 to 0.00000e+00 ! with weighted error 4.41e-17 ! log weighted error 16.36 ! significant figures required 14.16 ! decimal places required 16.96 */ static double an20_data[16] = { *************** *** 467,474 **** /* series for aph2 on the interval -1.00000e+00 to -1.25000e-01 ! with weighted error 2.94e-17 ! log weighted error 16.53 ! significant figures required 15.58 ! decimal places required 17.28 */ static double aph2_data[32] = { --- 467,474 ---- /* series for aph2 on the interval -1.00000e+00 to -1.25000e-01 ! with weighted error 2.94e-17 ! log weighted error 16.53 ! significant figures required 15.58 ! decimal places required 17.28 */ static double aph2_data[32] = { *************** *** 515,522 **** /* series for aph1 on the interval -1.25000e-01 to -1.56250e-02 ! with weighted error 6.38e-17 ! log weighted error 16.20 ! significant figures required 14.91 ! decimal places required 16.87 */ static double aph1_data[22] = { --- 515,522 ---- /* series for aph1 on the interval -1.25000e-01 to -1.56250e-02 ! with weighted error 6.38e-17 ! log weighted error 16.20 ! significant figures required 14.91 ! decimal places required 16.87 */ static double aph1_data[22] = { *************** *** 553,560 **** /* series for aph0 on the interval -1.56250e-02 to 0.00000e+00 ! with weighted error 2.29e-17 ! log weighted error 16.64 ! significant figures required 15.27 ! decimal places required 17.23 */ static double aph0_data[15] = { --- 553,560 ---- /* series for aph0 on the interval -1.56250e-02 to 0.00000e+00 ! with weighted error 2.29e-17 ! log weighted error 16.64 ! significant figures required 15.27 ! decimal places required 17.23 */ static double aph0_data[15] = { *************** *** 728,732 **** const int stat_e = gsl_sf_exp_mult_err_e(arg, 1.5*fabs(arg*GSL_DBL_EPSILON), result_aps.val, result_aps.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_a); } --- 728,732 ---- const int stat_e = gsl_sf_exp_mult_err_e(arg, 1.5*fabs(arg*GSL_DBL_EPSILON), result_aps.val, result_aps.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_a); } *************** *** 856,860 **** int stat_e = gsl_sf_exp_mult_err_e(arg, 1.5*fabs(arg*GSL_DBL_EPSILON), result_bps.val, result_bps.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_b); } --- 856,860 ---- int stat_e = gsl_sf_exp_mult_err_e(arg, 1.5*fabs(arg*GSL_DBL_EPSILON), result_bps.val, result_bps.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_b); } diff -x.info* -rc2P gsl-1.3/specfunc/bessel.c gsl-1.4/specfunc/bessel.c *** gsl-1.3/specfunc/bessel.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/bessel.c Fri Jul 25 15:18:15 2003 *************** *** 1,5 **** /* specfunc/bessel.c * ! * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman * * This program is free software; you can redistribute it and/or modify --- 1,5 ---- /* specfunc/bessel.c * ! * Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003 Gerard Jungman * * This program is free software; you can redistribute it and/or modify *************** *** 187,194 **** /* x >> nu*nu+1 ! * error ~ O( ((nu*nu+1)/x)^3 ) * * empirical error analysis: ! * choose GSL_ROOT3_MACH_EPS * x > (nu*nu + 1) * * This is not especially useful. When the argument gets --- 187,194 ---- /* x >> nu*nu+1 ! * error ~ O( ((nu*nu+1)/x)^4 ) * * empirical error analysis: ! * choose GSL_ROOT4_MACH_EPS * x > (nu*nu + 1) * * This is not especially useful. When the argument gets *************** *** 196,199 **** --- 196,206 ---- * start loosing digits. However, this seems inevitable * for this particular method. + * + * Wed Jun 25 14:39:38 MDT 2003 [GJ] + * This function was inconsistent since the Q term did not + * go to relative order eps^2. That's why the error estimate + * originally given was screwy (it didn't make sense that the + * "empirical" error was coming out O(eps^3)). + * With Q to proper order, the error is O(eps^4). */ int *************** *** 203,209 **** double mum1 = mu-1.0; double mum9 = mu-9.0; double chi = x - (0.5*nu + 0.25)*M_PI; double P = 1.0 - mum1*mum9/(128.0*x*x); ! double Q = mum1/(8.0*x); double pre = sqrt(2.0/(M_PI*x)); double c = cos(chi); --- 210,217 ---- double mum1 = mu-1.0; double mum9 = mu-9.0; + double mum25 = mu-25.0; double chi = x - (0.5*nu + 0.25)*M_PI; double P = 1.0 - mum1*mum9/(128.0*x*x); ! double Q = mum1/(8.0*x) * (1.0 - mum9*mum25/(384.0*x*x)); double pre = sqrt(2.0/(M_PI*x)); double c = cos(chi); *************** *** 211,216 **** double r = mu/x; result->val = pre * (c*P - s*Q); ! result->err = pre * GSL_DBL_EPSILON * (fabs(c*P) + fabs(s*Q)); ! result->err += pre * fabs(0.1*r*r*r); return GSL_SUCCESS; } --- 219,224 ---- double r = mu/x; result->val = pre * (c*P - s*Q); ! result->err = pre * GSL_DBL_EPSILON * (1.0 + fabs(x)) * (fabs(c*P) + fabs(s*Q)); ! result->err += pre * fabs(0.1*r*r*r*r); return GSL_SUCCESS; } *************** *** 828,832 **** double xo2 = 0.5 * x; double gamfactor = pow(nu,nu) * exp(-nu) * sqrt(nu * 2. * M_PI) ! * (1. + 1./(12.*nu) + 1./(288.*nu*nu)); double prefactor = pow(xo2, nu) / gamfactor; double C[5]; --- 836,840 ---- double xo2 = 0.5 * x; double gamfactor = pow(nu,nu) * exp(-nu) * sqrt(nu * 2. * M_PI) ! * (1. + 1./(12.*nu) + 1./(288.*nu*nu)); double prefactor = pow(xo2, nu) / gamfactor; double C[5]; *************** *** 840,844 **** result = 0.; for(k=0; k<5; k++) ! result += C[k] * pow(xo2, 2.*k); result *= prefactor; --- 848,852 ---- result = 0.; for(k=0; k<5; k++) ! result += C[k] * pow(xo2, 2.*k); result *= prefactor; diff -x.info* -rc2P gsl-1.3/specfunc/bessel.h gsl-1.4/specfunc/bessel.h *** gsl-1.3/specfunc/bessel.h Mon Nov 19 21:39:26 2001 --- gsl-1.4/specfunc/bessel.h Fri Jul 25 15:18:22 2003 *************** *** 33,37 **** const int sign, const int kmax, ! const double threshold, gsl_sf_result * result ); --- 33,37 ---- const int sign, const int kmax, ! const double threshold, gsl_sf_result * result ); *************** *** 78,82 **** gsl_sf_bessel_K_scaled_steed_temme_CF2(const double nu, const double x, double * K_nu, double * K_nup1, ! double * Kp_nu); --- 78,82 ---- gsl_sf_bessel_K_scaled_steed_temme_CF2(const double nu, const double x, double * K_nu, double * K_nup1, ! double * Kp_nu); diff -x.info* -rc2P gsl-1.3/specfunc/bessel_I0.c gsl-1.4/specfunc/bessel_I0.c *** gsl-1.3/specfunc/bessel_I0.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/bessel_I0.c Fri Jul 25 15:18:15 2003 *************** *** 37,58 **** /* chebyshev expansions ! series for bi0 on the interval 0. to 9.00000d+00 ! with weighted error 2.46e-18 ! log weighted error 17.61 ! significant figures required 17.90 ! decimal places required 18.15 series for ai0 on the interval 1.25000d-01 to 3.33333d-01 ! with weighted error 7.87e-17 ! log weighted error 16.10 ! significant figures required 14.69 ! decimal places required 16.76 ! series for ai02 on the interval 0. to 1.25000d-01 ! with weighted error 3.79e-17 ! log weighted error 16.42 ! significant figures required 14.86 ! decimal places required 17.09 */ --- 37,58 ---- /* chebyshev expansions ! series for bi0 on the interval 0. to 9.00000d+00 ! with weighted error 2.46e-18 ! log weighted error 17.61 ! significant figures required 17.90 ! decimal places required 18.15 series for ai0 on the interval 1.25000d-01 to 3.33333d-01 ! with weighted error 7.87e-17 ! log weighted error 16.10 ! significant figures required 14.69 ! decimal places required 16.76 ! series for ai02 on the interval 0. to 1.25000d-01 ! with weighted error 3.79e-17 ! log weighted error 16.42 ! significant figures required 14.86 ! decimal places required 17.09 */ diff -x.info* -rc2P gsl-1.3/specfunc/bessel_I1.c gsl-1.4/specfunc/bessel_I1.c *** gsl-1.3/specfunc/bessel_I1.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/bessel_I1.c Fri Jul 25 15:18:15 2003 *************** *** 39,59 **** /* chebyshev expansions ! series for bi1 on the interval 0. to 9.00000d+00 ! with weighted error 2.40e-17 ! log weighted error 16.62 ! significant figures required 16.23 ! decimal places required 17.14 series for ai1 on the interval 1.25000d-01 to 3.33333d-01 ! with weighted error 6.98e-17 ! log weighted error 16.16 ! significant figures required 14.53 ! decimal places required 16.82 ! series for ai12 on the interval 0. to 1.25000d-01 ! with weighted error 3.55e-17 ! log weighted error 16.45 ! significant figures required 14.69 ! decimal places required 17.12 */ --- 39,59 ---- /* chebyshev expansions ! series for bi1 on the interval 0. to 9.00000d+00 ! with weighted error 2.40e-17 ! log weighted error 16.62 ! significant figures required 16.23 ! decimal places required 17.14 series for ai1 on the interval 1.25000d-01 to 3.33333d-01 ! with weighted error 6.98e-17 ! log weighted error 16.16 ! significant figures required 14.53 ! decimal places required 16.82 ! series for ai12 on the interval 0. to 1.25000d-01 ! with weighted error 3.55e-17 ! log weighted error 16.45 ! significant figures required 14.69 ! decimal places required 17.12 */ diff -x.info* -rc2P gsl-1.3/specfunc/bessel_In.c gsl-1.4/specfunc/bessel_In.c *** gsl-1.3/specfunc/bessel_In.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/bessel_In.c Fri Jul 25 15:18:15 2003 *************** *** 68,72 **** int stat_CF1 = gsl_sf_bessel_I_CF1_ser((double)n, ax, &rat); double Ikp1 = rat * GSL_SQRT_DBL_MIN; ! double Ik = GSL_SQRT_DBL_MIN; double Ikm1; int k; --- 68,72 ---- int stat_CF1 = gsl_sf_bessel_I_CF1_ser((double)n, ax, &rat); double Ikp1 = rat * GSL_SQRT_DBL_MIN; ! double Ik = GSL_SQRT_DBL_MIN; double Ikm1; int k; diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Inu.c gsl-1.4/specfunc/bessel_Inu.c *** gsl-1.3/specfunc/bessel_Inu.c Mon Nov 19 21:39:30 2001 --- gsl-1.4/specfunc/bessel_Inu.c Fri Jul 25 15:18:15 2003 *************** *** 102,106 **** int stat_e = gsl_sf_exp_mult_err_e(x, fabs(x*GSL_DBL_EPSILON), b.val, b.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_I); } --- 102,106 ---- int stat_e = gsl_sf_exp_mult_err_e(x, fabs(x*GSL_DBL_EPSILON), b.val, b.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_I); } diff -x.info* -rc2P gsl-1.3/specfunc/bessel_J0.c gsl-1.4/specfunc/bessel_J0.c *** gsl-1.3/specfunc/bessel_J0.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_J0.c Fri Jul 25 15:18:15 2003 *************** *** 38,46 **** /* chebyshev expansions for Bessel functions ! series for bj0 on the interval 0. to 1.60000d+01 ! with weighted error 7.47e-18 ! log weighted error 17.13 ! significant figures required 16.98 ! decimal places required 17.68 */ --- 38,46 ---- /* chebyshev expansions for Bessel functions ! series for bj0 on the interval 0. to 1.60000d+01 ! with weighted error 7.47e-18 ! log weighted error 17.13 ! significant figures required 16.98 ! decimal places required 17.68 */ diff -x.info* -rc2P gsl-1.3/specfunc/bessel_J1.c gsl-1.4/specfunc/bessel_J1.c *** gsl-1.3/specfunc/bessel_J1.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_J1.c Fri Jul 25 15:18:15 2003 *************** *** 41,49 **** /* chebyshev expansions ! series for bj1 on the interval 0. to 1.60000d+01 ! with weighted error 4.48e-17 ! log weighted error 16.35 ! significant figures required 15.77 ! decimal places required 16.89 */ --- 41,49 ---- /* chebyshev expansions ! series for bj1 on the interval 0. to 1.60000d+01 ! with weighted error 4.48e-17 ! log weighted error 16.35 ! significant figures required 15.77 ! decimal places required 16.89 */ diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Jn.c gsl-1.4/specfunc/bessel_Jn.c *** gsl-1.3/specfunc/bessel_Jn.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Jn.c Fri Jul 25 15:18:15 2003 *************** *** 80,84 **** return status; } ! else if(GSL_ROOT3_DBL_EPSILON * x > (n*n+1.0)) { int status = gsl_sf_bessel_Jnu_asympx_e((double)n, x, result); result->val *= sign; --- 80,84 ---- return status; } ! else if(GSL_ROOT4_DBL_EPSILON * x > (n*n+1.0)) { int status = gsl_sf_bessel_Jnu_asympx_e((double)n, x, result); result->val *= sign; *************** *** 90,93 **** --- 90,102 ---- return status; } + else if(x > 1000.0) + { + /* We need this to avoid feeding large x to CF1; note that + * due to the above check, we know that n <= 50. + */ + int status = gsl_sf_bessel_Jnu_asympx_e((double)n, x, result); + result->val *= sign; + return status; + } else { double ans; *************** *** 105,124 **** for(k=n; k>0; k--) { ! Jkm1 = 2.0*k/x * Jk - Jkp1; ! Jkp1 = Jk; ! Jk = Jkm1; } if(fabs(Jkp1) > fabs(Jk)) { gsl_sf_result b1; ! stat_b = gsl_sf_bessel_J1_e(x, &b1); ! ans = b1.val/Jkp1 * GSL_SQRT_DBL_MIN; ! err = b1.err/Jkp1 * GSL_SQRT_DBL_MIN; } else { gsl_sf_result b0; ! stat_b = gsl_sf_bessel_J0_e(x, &b0); ! ans = b0.val/Jk * GSL_SQRT_DBL_MIN; ! err = b0.err/Jk * GSL_SQRT_DBL_MIN; } --- 114,133 ---- for(k=n; k>0; k--) { ! Jkm1 = 2.0*k/x * Jk - Jkp1; ! Jkp1 = Jk; ! Jk = Jkm1; } if(fabs(Jkp1) > fabs(Jk)) { gsl_sf_result b1; ! stat_b = gsl_sf_bessel_J1_e(x, &b1); ! ans = b1.val/Jkp1 * GSL_SQRT_DBL_MIN; ! err = b1.err/Jkp1 * GSL_SQRT_DBL_MIN; } else { gsl_sf_result b0; ! stat_b = gsl_sf_bessel_J0_e(x, &b0); ! ans = b0.val/Jk * GSL_SQRT_DBL_MIN; ! err = b0.err/Jk * GSL_SQRT_DBL_MIN; } diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Jnu.c gsl-1.4/specfunc/bessel_Jnu.c *** gsl-1.3/specfunc/bessel_Jnu.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Jnu.c Fri Jul 25 15:18:15 2003 *************** *** 99,102 **** --- 99,110 ---- return gsl_sf_bessel_Jnu_asymp_Olver_e(nu, x, result); } + else if(x > 1000.0) + { + /* We need this to avoid feeding large x to CF1; note that + * due to the above check, we know that n <= 50. See similar + * block in bessel_Jn.c. + */ + return gsl_sf_bessel_Jnu_asympx_e(nu, x, result); + } else { /* -1/2 <= mu <= 1/2 */ *************** *** 123,128 **** for(n=1; nerr = fabs(result->val) * (GSL_DBL_EPSILON*fabs(x) + K1_scaled.err/K1_scaled.val); return GSL_ERROR_SELECT_2(stat_e, stat_K1); --- 200,204 ---- int stat_e = gsl_sf_exp_mult_err_e(-x, 0.0, K1_scaled.val, K1_scaled.err, ! result); result->err = fabs(result->val) * (GSL_DBL_EPSILON*fabs(x) + K1_scaled.err/K1_scaled.val); return GSL_ERROR_SELECT_2(stat_e, stat_K1); diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Kn.c gsl-1.4/specfunc/bessel_Kn.c *** gsl-1.3/specfunc/bessel_Kn.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Kn.c Fri Jul 25 15:18:15 2003 *************** *** 198,209 **** else { /* Overflow. Set the rest of the elements to ! * zero and bug out. ! * FIXME: Note: this relies on the convention ! * that the test x < DBL_MIN fails for x not ! * a number. This may be only an IEEE convention, ! * so the portability is unclear. ! */ int j; ! for(j=n; j<=nmax+1; j++) result_array[j-1-nmin] = 0.0; GSL_ERROR ("overflow", GSL_EOVRFLW); } --- 198,209 ---- else { /* Overflow. Set the rest of the elements to ! * zero and bug out. ! * FIXME: Note: this relies on the convention ! * that the test x < DBL_MIN fails for x not ! * a number. This may be only an IEEE convention, ! * so the portability is unclear. ! */ int j; ! for(j=n; j<=nmax+1; j++) result_array[j-1-nmin] = 0.0; GSL_ERROR ("overflow", GSL_EOVRFLW); } diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Y0.c gsl-1.4/specfunc/bessel_Y0.c *** gsl-1.3/specfunc/bessel_Y0.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Y0.c Fri Jul 25 15:18:15 2003 *************** *** 38,46 **** /* chebyshev expansions ! series for by0 on the interval 0. to 1.60000d+01 ! with weighted error 1.20e-17 ! log weighted error 16.92 ! significant figures required 16.15 ! decimal places required 17.48 */ --- 38,46 ---- /* chebyshev expansions ! series for by0 on the interval 0. to 1.60000d+01 ! with weighted error 1.20e-17 ! log weighted error 16.92 ! significant figures required 16.15 ! decimal places required 17.48 */ diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Y1.c gsl-1.4/specfunc/bessel_Y1.c *** gsl-1.3/specfunc/bessel_Y1.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Y1.c Fri Jul 25 15:18:15 2003 *************** *** 38,46 **** /* chebyshev expansions ! series for by1 on the interval 0. to 1.60000d+01 ! with weighted error 1.87e-18 ! log weighted error 17.73 ! significant figures required 17.83 ! decimal places required 18.30 */ --- 38,46 ---- /* chebyshev expansions ! series for by1 on the interval 0. to 1.60000d+01 ! with weighted error 1.87e-18 ! log weighted error 17.73 ! significant figures required 17.83 ! decimal places required 18.30 */ diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Yn.c gsl-1.4/specfunc/bessel_Yn.c *** gsl-1.3/specfunc/bessel_Yn.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Yn.c Fri Jul 25 15:18:15 2003 *************** *** 152,158 **** for(j=1; jval = sign * by; --- 152,158 ---- for(j=1; jval = sign * by; *************** *** 192,196 **** result_array[n-nmin-1] = Ynm1; Ynp1 = -Ynm1 + 2.0*n/x * Yn; ! Ynm1 = Yn; Yn = Ynp1; } --- 192,196 ---- result_array[n-nmin-1] = Ynm1; Ynp1 = -Ynm1 + 2.0*n/x * Yn; ! Ynm1 = Yn; Yn = Ynp1; } diff -x.info* -rc2P gsl-1.3/specfunc/bessel_Ynu.c gsl-1.4/specfunc/bessel_Ynu.c *** gsl-1.3/specfunc/bessel_Ynu.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_Ynu.c Fri Jul 25 15:18:15 2003 *************** *** 41,45 **** bessel_Y_recur(const double nu_min, const double x, const int kmax, const double Y_start, const double Yp_start, ! double * Y_end, double * Yp_end) { double x_inv = 1.0/x; --- 41,45 ---- bessel_Y_recur(const double nu_min, const double x, const int kmax, const double Y_start, const double Yp_start, ! double * Y_end, double * Yp_end) { double x_inv = 1.0/x; diff -x.info* -rc2P gsl-1.3/specfunc/bessel_amp_phase.c gsl-1.4/specfunc/bessel_amp_phase.c *** gsl-1.3/specfunc/bessel_amp_phase.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_amp_phase.c Fri Jul 25 15:18:15 2003 *************** *** 33,37 **** they sit outside those functions. */ ! static double bm0_data[21] = { 0.09284961637381644, --- 33,37 ---- they sit outside those functions. */ ! static double bm0_data[21] = { 0.09284961637381644, diff -x.info* -rc2P gsl-1.3/specfunc/bessel_i.c gsl-1.4/specfunc/bessel_i.c *** gsl-1.3/specfunc/bessel_i.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_i.c Fri Jul 25 15:18:15 2003 *************** *** 211,215 **** int stat_CF1 = bessel_il_CF1(l, ax, GSL_DBL_EPSILON, &rat); double iellp1 = rat * GSL_SQRT_DBL_MIN; ! double iell = GSL_SQRT_DBL_MIN; double iellm1; int ell; --- 211,215 ---- int stat_CF1 = bessel_il_CF1(l, ax, GSL_DBL_EPSILON, &rat); double iellp1 = rat * GSL_SQRT_DBL_MIN; ! double iell = GSL_SQRT_DBL_MIN; double iellm1; int ell; diff -x.info* -rc2P gsl-1.3/specfunc/bessel_j.c gsl-1.4/specfunc/bessel_j.c *** gsl-1.3/specfunc/bessel_j.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_j.c Fri Jul 25 15:18:15 2003 *************** *** 1,5 **** /* specfunc/bessel_j.c * ! * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman * * This program is free software; you can redistribute it and/or modify --- 1,5 ---- /* specfunc/bessel_j.c * ! * Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003 Gerard Jungman * * This program is free software; you can redistribute it and/or modify *************** *** 181,185 **** return status; } ! else if(GSL_ROOT3_DBL_EPSILON * x > (l*l + l + 1.0)) { gsl_sf_result b; int status = gsl_sf_bessel_Jnu_asympx_e(l + 0.5, x, &b); --- 181,185 ---- return status; } ! else if(GSL_ROOT4_DBL_EPSILON * x > (l*l + l + 1.0)) { gsl_sf_result b; int status = gsl_sf_bessel_Jnu_asympx_e(l + 0.5, x, &b); *************** *** 197,200 **** --- 197,212 ---- return status; } + else if(x > 1000.0) + { + /* We need this to avoid feeding large x to CF1; note that + * due to the above check, we know that n <= 50. + */ + gsl_sf_result b; + int status = gsl_sf_bessel_Jnu_asympx_e(l + 0.5, x, &b); + double pre = sqrt((0.5*M_PI)/x); + result->val = pre * b.val; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val) + pre * b.err; + return status; + } else { double sgn; *************** *** 321,325 **** if(D < 0.0) F = -F; if(B > end) { ! GSL_ERROR ("error", GSL_EMAXITER); } } --- 333,337 ---- if(D < 0.0) F = -F; if(B > end) { ! GSL_ERROR ("error", GSL_EMAXITER); } } *************** *** 336,344 **** jl_x[lmax] = F; for(LP = 1; LP<=lmax; LP++) { ! jl_x[L-1] = PL * jl_x[L] + XP2; ! FP = PL*jl_x[L-1] - jl_x[L]; ! XP2 = FP; ! PL -= x_inv; ! --L; } F = jl_x[0]; --- 348,356 ---- jl_x[lmax] = F; for(LP = 1; LP<=lmax; LP++) { ! jl_x[L-1] = PL * jl_x[L] + XP2; ! FP = PL*jl_x[L-1] - jl_x[L]; ! XP2 = FP; ! PL -= x_inv; ! --L; } F = jl_x[0]; *************** *** 351,355 **** int L; for(L=1; L<=lmax; L++) { ! jl_x[L] *= W; } } --- 363,367 ---- int L; for(L=1; L<=lmax; L++) { ! jl_x[L] *= W; } } diff -x.info* -rc2P gsl-1.3/specfunc/bessel_sequence.c gsl-1.4/specfunc/bessel_sequence.c *** gsl-1.3/specfunc/bessel_sequence.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_sequence.c Fri Jul 25 15:18:15 2003 *************** *** 78,82 **** double Jp, J; double x; ! int i = 0; /* Calculate the first point. */ --- 78,82 ---- double Jp, J; double x; ! size_t i = 0; /* Calculate the first point. */ *************** *** 107,111 **** if(v[i] <= x) { /* Strict ordering failure. */ ! GSL_ERROR ("error", GSL_EFAILED); } x = v[i]; --- 107,111 ---- if(v[i] <= x) { /* Strict ordering failure. */ ! GSL_ERROR ("error", GSL_EFAILED); } x = v[i]; *************** *** 135,139 **** if(v[i] <= x) { /* Strict ordering failure. */ ! GSL_ERROR ("error", GSL_EFAILED); } --- 135,139 ---- if(v[i] <= x) { /* Strict ordering failure. */ ! GSL_ERROR ("error", GSL_EFAILED); } diff -x.info* -rc2P gsl-1.3/specfunc/bessel_zero.c gsl-1.4/specfunc/bessel_zero.c *** gsl-1.3/specfunc/bessel_zero.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/bessel_zero.c Fri Jul 25 15:18:15 2003 *************** *** 1072,1082 **** static const double a[] = { -0.362804405737084, 0.120341279038597, ! 0.439454547101171e-01, ! 0.159340088474713e-02 }; static const double b[] = { 1.0, -0.325641790801361, ! -0.117453445968927, ! -0.424906902601794e-02 }; --- 1072,1082 ---- static const double a[] = { -0.362804405737084, 0.120341279038597, ! 0.439454547101171e-01, ! 0.159340088474713e-02 }; static const double b[] = { 1.0, -0.325641790801361, ! -0.117453445968927, ! -0.424906902601794e-02 }; diff -x.info* -rc2P gsl-1.3/specfunc/beta_inc.c gsl-1.4/specfunc/beta_inc.c *** gsl-1.3/specfunc/beta_inc.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/beta_inc.c Fri Jul 25 15:18:15 2003 *************** *** 147,151 **** stat = GSL_ERROR_SELECT_2(stat_exp, stat_cf); if(stat == GSL_SUCCESS) { ! CHECK_UNDERFLOW(result); } return stat; --- 147,151 ---- stat = GSL_ERROR_SELECT_2(stat_exp, stat_cf); if(stat == GSL_SUCCESS) { ! CHECK_UNDERFLOW(result); } return stat; *************** *** 163,167 **** stat = GSL_ERROR_SELECT_2(stat_exp, stat_cf); if(stat == GSL_SUCCESS) { ! CHECK_UNDERFLOW(result); } return stat; --- 163,167 ---- stat = GSL_ERROR_SELECT_2(stat_exp, stat_cf); if(stat == GSL_SUCCESS) { ! CHECK_UNDERFLOW(result); } return stat; diff -x.info* -rc2P gsl-1.3/specfunc/coulomb.c gsl-1.4/specfunc/coulomb.c *** gsl-1.3/specfunc/coulomb.c Mon Nov 19 21:39:29 2001 --- gsl-1.4/specfunc/coulomb.c Fri Jul 25 15:18:15 2003 *************** *** 521,525 **** double eta, double x, double F_lam_max, double Fp_lam_max, ! double * F_lam_min, double * Fp_lam_min ) { --- 521,525 ---- double eta, double x, double F_lam_max, double Fp_lam_max, ! double * F_lam_min, double * Fp_lam_min ) { *************** *** 560,564 **** const double eta, const double x, const double G_lam_min, const double Gp_lam_min, ! double * G_lam_max, double * Gp_lam_max ) { --- 560,564 ---- const double eta, const double x, const double G_lam_min, const double Gp_lam_min, ! double * G_lam_max, double * Gp_lam_max ) { *************** *** 596,601 **** double eta, double x, double * fcl_sign, ! double * result, ! int * count ) { --- 596,601 ---- double eta, double x, double * fcl_sign, ! double * result, ! int * count ) { *************** *** 654,658 **** double eta, double x, double * fcl_sign, ! double * result ) { --- 654,658 ---- double eta, double x, double * fcl_sign, ! double * result ) { *************** *** 822,826 **** coulomb_jwkb(const double lam, const double eta, const double x, gsl_sf_result * fjwkb, gsl_sf_result * gjwkb, ! double * exponent) { const double llp1 = lam*(lam+1.0) + 6.0/35.0; --- 822,826 ---- coulomb_jwkb(const double lam, const double eta, const double x, gsl_sf_result * fjwkb, gsl_sf_result * gjwkb, ! double * exponent) { const double llp1 = lam*(lam+1.0) + 6.0/35.0; *************** *** 883,887 **** coulomb_AS_xlt2eta(const double lam, const double eta, const double x, gsl_sf_result * f_AS, gsl_sf_result * g_AS, ! double * exponent) { /* no time to do this now... */ --- 883,887 ---- coulomb_AS_xlt2eta(const double lam, const double eta, const double x, gsl_sf_result * f_AS, gsl_sf_result * g_AS, ! double * exponent) { /* no time to do this now... */ *************** *** 896,903 **** gsl_sf_coulomb_wave_FG_e(const double eta, const double x, const double lam_F, ! const int k_lam_G, /* lam_G = lam_F - k_lam_G */ gsl_sf_result * F, gsl_sf_result * Fp, ! gsl_sf_result * G, gsl_sf_result * Gp, ! double * exp_F, double * exp_G) { const double lam_G = lam_F - k_lam_G; --- 896,903 ---- gsl_sf_coulomb_wave_FG_e(const double eta, const double x, const double lam_F, ! const int k_lam_G, /* lam_G = lam_F - k_lam_G */ gsl_sf_result * F, gsl_sf_result * Fp, ! gsl_sf_result * G, gsl_sf_result * Gp, ! double * exp_F, double * exp_G) { const double lam_G = lam_F - k_lam_G; *************** *** 970,975 **** stat_Fr = coulomb_F_recur(lam_min, span, eta, x, F_lam_F, Fp_lam_F, ! &F_lam_min_unnorm, &Fp_lam_min_unnorm ! ); } else { --- 970,975 ---- stat_Fr = coulomb_F_recur(lam_min, span, eta, x, F_lam_F, Fp_lam_F, ! &F_lam_min_unnorm, &Fp_lam_min_unnorm ! ); } else { *************** *** 1022,1027 **** stat_Gr = coulomb_G_recur(lam_min, GSL_MAX(N-k_lam_G,0), eta, x, G_lam_min.val, Gp_lam_min.val, ! &G_lam_G, &Gp_lam_G ! ); F->val = F_lam_F; --- 1022,1027 ---- stat_Gr = coulomb_G_recur(lam_min, GSL_MAX(N-k_lam_G,0), eta, x, G_lam_min.val, Gp_lam_min.val, ! &G_lam_G, &Gp_lam_G ! ); F->val = F_lam_F; *************** *** 1158,1163 **** stat_Fr = coulomb_F_recur(lam_min, F_recur_count, eta, x, F_lam_F, Fp_lam_F, ! &F_lam_min_unnorm, &Fp_lam_min_unnorm ! ); Fp_over_F_lam_min = Fp_lam_min_unnorm / F_lam_min_unnorm; --- 1158,1163 ---- stat_Fr = coulomb_F_recur(lam_min, F_recur_count, eta, x, F_lam_F, Fp_lam_F, ! &F_lam_min_unnorm, &Fp_lam_min_unnorm ! ); Fp_over_F_lam_min = Fp_lam_min_unnorm / F_lam_min_unnorm; *************** *** 1180,1185 **** stat_Gr = coulomb_G_recur(lam_min, G_recur_count, eta, x, G_lam_min, Gp_lam_min, ! &G_lam_G, &Gp_lam_G ! ); err_amplify = CF1_count + CF2_count + F_recur_count + G_recur_count + 1; --- 1180,1185 ---- stat_Gr = coulomb_G_recur(lam_min, G_recur_count, eta, x, G_lam_min, Gp_lam_min, ! &G_lam_G, &Gp_lam_G ! ); err_amplify = CF1_count + CF2_count + F_recur_count + G_recur_count + 1; *************** *** 1209,1213 **** double eta, double x, double * fc_array, ! double * F_exp) { if(x == 0.0) { --- 1209,1213 ---- double eta, double x, double * fc_array, ! double * F_exp) { if(x == 0.0) { *************** *** 1261,1265 **** double eta, double x, double * fc_array, double * gc_array, ! double * F_exp, double * G_exp) { const double x_inv = 1.0/x; --- 1261,1265 ---- double eta, double x, double * fc_array, double * gc_array, ! double * F_exp, double * G_exp) { const double x_inv = 1.0/x; *************** *** 1316,1322 **** gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax, double eta, double x, ! double * fc_array, double * fcp_array, ! double * gc_array, double * gcp_array, ! double * F_exp, double * G_exp) { --- 1316,1322 ---- gsl_sf_coulomb_wave_FGp_array(double lam_min, int kmax, double eta, double x, ! double * fc_array, double * fcp_array, ! double * gc_array, double * gcp_array, ! double * F_exp, double * G_exp) { *************** *** 1378,1383 **** gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax, double eta, double x, ! double * fc_array, ! double * F_exp) { int k; --- 1378,1383 ---- gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax, double eta, double x, ! double * fc_array, ! double * F_exp) { int k; diff -x.info* -rc2P gsl-1.3/specfunc/coupling.c gsl-1.4/specfunc/coupling.c *** gsl-1.3/specfunc/coupling.c Tue Dec 10 19:56:31 2002 --- gsl-1.4/specfunc/coupling.c Fri Jul 25 15:18:15 2003 *************** *** 98,102 **** || GSL_IS_ODD(two_jc + two_mc) || (two_ma + two_mb + two_mc) != 0 ! ); } --- 98,102 ---- || GSL_IS_ODD(two_jc + two_mc) || (two_ma + two_mb + two_mc) != 0 ! ); } *************** *** 104,111 **** /*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ int ! gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc, ! int two_ma, int two_mb, int two_mc, ! gsl_sf_result * result) { /* CHECK_POINTER(result) */ --- 104,112 ---- /*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ + int ! gsl_sf_coupling_3j_e (int two_ja, int two_jb, int two_jc, ! int two_ma, int two_mb, int two_mc, ! gsl_sf_result * result) { /* CHECK_POINTER(result) */ *************** *** 114,119 **** DOMAIN_ERROR(result); } ! else if( triangle_selection_fails(two_ja, two_jb, two_jc) ! || m_selection_fails(two_ja, two_jb, two_jc, two_ma, two_mb, two_mc) ) { result->val = 0.0; --- 115,120 ---- DOMAIN_ERROR(result); } ! else if ( triangle_selection_fails(two_ja, two_jb, two_jc) ! || m_selection_fails(two_ja, two_jb, two_jc, two_ma, two_mb, two_mc) ) { result->val = 0.0; *************** *** 122,194 **** } else { ! gsl_sf_result n1_a, n1_b, n3_a, n3_b; ! gsl_sf_result d1_a, d1_b, d2_a, d2_b, d3_a, d3_b; ! gsl_sf_result n1, n2, n3; ! gsl_sf_result d1, d2, d3; ! double norm; ! double sign = (GSL_IS_ODD((two_ja - two_jb - two_mc)/2) ? -1.0 : 1.0); ! int tk, tkmin, tkmax; ! double sum_pos = 0.0; ! double sum_neg = 0.0; ! double phase; ! int status = 0; ! status += gsl_sf_fact_e((two_jc + two_ja - two_jb)/2, &n1_a); ! status += gsl_sf_fact_e((two_jc - two_ja + two_jb)/2, &n1_b); ! status += gsl_sf_fact_e((two_ja + two_jb - two_jc)/2, &n2); ! status += gsl_sf_fact_e((two_jc - two_mc)/2, &n3_a); ! status += gsl_sf_fact_e((two_jc + two_mc)/2, &n3_b); ! status += gsl_sf_fact_e((two_ja + two_jb + two_jc)/2 + 1, &d1); ! status += gsl_sf_fact_e((two_ja - two_ma)/2, &d2_a); ! status += gsl_sf_fact_e((two_ja + two_ma)/2, &d2_b); ! status += gsl_sf_fact_e((two_jb - two_mb)/2, &d3_a); ! status += gsl_sf_fact_e((two_jb + two_mb)/2, &d3_b); ! ! if(status != 0) { ! OVERFLOW_ERROR(result); } - - n1.val = n1_a.val * n1_b.val; - n3.val = n3_a.val * n3_b.val; - d2.val = d2_a.val * d2_b.val; - d3.val = d3_a.val * d3_b.val; - - norm = sign * sqrt(n1.val*n2.val*n3.val)/sqrt(d1.val*d2.val*d3.val); - - tkmin = GSL_MAX(0, two_jb - two_ja - two_mc); - tkmax = GSL_MIN(two_jc - two_ja + two_jb, two_jc - two_mc); ! phase = GSL_IS_ODD((tkmin + two_jb + two_mb)/2) ? -1.0 : 1.0; ! ! for(tk=tkmin; tk<=tkmax; tk += 2) { ! double term; ! ! status = 0; ! status += gsl_sf_fact_e((two_jb + two_jc + two_ma - tk)/2, &n1); ! status += gsl_sf_fact_e((two_ja - two_ma + tk)/2, &n2); ! status += gsl_sf_fact_e(tk/2, &d1_a); ! status += gsl_sf_fact_e((two_jc - two_ja + two_jb - tk)/2, &d1_b); ! status += gsl_sf_fact_e((two_jc - two_mc - tk)/2, &d2); ! status += gsl_sf_fact_e((two_ja - two_jb + two_mc + tk)/2, &d3); ! ! if(status != 0) { ! OVERFLOW_ERROR(result); ! } ! ! d1.val = d1_a.val * d1_b.val; ! term = phase * n1.val * n2.val / (d1.val * d2.val * d3.val); ! phase = -phase; ! ! if(norm*term >= 0.0) { ! sum_pos += norm*term; ! } ! else { ! sum_neg -= norm*term; } } ! result->val = sum_pos - sum_neg; result->err = 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); ! result->err += 2.0 * GSL_DBL_EPSILON * (tkmax - tkmin) * fabs(result->val); return GSL_SUCCESS; --- 123,180 ---- } else { ! int jca = (-two_ja + two_jb + two_jc) / 2, ! jcb = ( two_ja - two_jb + two_jc) / 2, ! jcc = ( two_ja + two_jb - two_jc) / 2, ! jmma = ( two_ja - two_ma) / 2, ! jmmb = ( two_jb - two_mb) / 2, ! jmmc = ( two_jc - two_mc) / 2, ! jpma = ( two_ja + two_ma) / 2, ! jpmb = ( two_jb + two_mb) / 2, ! jpmc = ( two_jc + two_mc) / 2, ! jsum = ( two_ja + two_jb + two_jc) / 2, ! kmin = locMax3 (0, jpmb - jmmc, jmma - jpmc), ! kmax = locMin3 (jcc, jmma, jpmb), ! k, sign = GSL_IS_ODD (kmin - jpma + jmmb) ? -1 : 1, ! status = 0; ! double sum_pos = 0.0, sum_neg = 0.0, norm, term; ! gsl_sf_result bc1, bc2, bc3, bcn1, bcn2, bcd1, bcd2, bcd3, bcd4; ! ! status += gsl_sf_choose_e (two_ja, jcc , &bcn1); ! status += gsl_sf_choose_e (two_jb, jcc , &bcn2); ! status += gsl_sf_choose_e (jsum+1, jcc , &bcd1); ! status += gsl_sf_choose_e (two_ja, jmma, &bcd2); ! status += gsl_sf_choose_e (two_jb, jmmb, &bcd3); ! status += gsl_sf_choose_e (two_jc, jpmc, &bcd4); ! ! if (status != 0) { ! OVERFLOW_ERROR (result); } ! norm = sqrt (bcn1.val * bcn2.val) ! / sqrt (bcd1.val * bcd2.val * bcd3.val * bcd4.val * ((double) two_jc + 1.0)); ! for (k = kmin; k <= kmax; k++) { ! status += gsl_sf_choose_e (jcc, k, &bc1); ! status += gsl_sf_choose_e (jcb, jmma - k, &bc2); ! status += gsl_sf_choose_e (jca, jpmb - k, &bc3); ! ! if (status != 0) { ! OVERFLOW_ERROR (result); ! } ! ! term = bc1.val * bc2.val * bc3.val; ! ! if (sign < 0) { ! sum_neg += norm * term; ! } else { ! sum_pos += norm * term; } + + sign = -sign; } ! result->val = sum_pos - sum_neg; result->err = 2.0 * GSL_DBL_EPSILON * (sum_pos + sum_neg); ! result->err += 2.0 * GSL_DBL_EPSILON * (kmax - kmin) * fabs(result->val); return GSL_SUCCESS; *************** *** 196,200 **** } - int gsl_sf_coupling_6j_INCORRECT_e(int two_ja, int two_jb, int two_jc, --- 182,185 ---- *************** *** 202,216 **** gsl_sf_result * result) { /* CHECK_POINTER(result) */ if( two_ja < 0 || two_jb < 0 || two_jc < 0 ! || two_jd < 0 || two_je < 0 || two_je < 0 ) { DOMAIN_ERROR(result); } ! else if( triangle_selection_fails(two_ja, two_jb, two_je) ! || triangle_selection_fails(two_ja, two_jc, two_jf) || triangle_selection_fails(two_jb, two_jd, two_jf) ! || triangle_selection_fails(two_jc, two_jd, two_je) ) { result->val = 0.0; --- 187,210 ---- gsl_sf_result * result) { + return gsl_sf_coupling_6j_e(two_ja, two_jb, two_je, two_jd, two_jc, two_jf, result); + } + + + int + gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc, + int two_jd, int two_je, int two_jf, + gsl_sf_result * result) + { /* CHECK_POINTER(result) */ if( two_ja < 0 || two_jb < 0 || two_jc < 0 ! || two_jd < 0 || two_je < 0 || two_jf < 0 ) { DOMAIN_ERROR(result); } ! else if( triangle_selection_fails(two_ja, two_jb, two_jc) ! || triangle_selection_fails(two_ja, two_je, two_jf) || triangle_selection_fails(two_jb, two_jd, two_jf) ! || triangle_selection_fails(two_je, two_jd, two_jc) ) { result->val = 0.0; *************** *** 228,235 **** double sumsq_err = 0.0; int status = 0; ! status += delta(two_ja, two_jb, two_je, &d1); ! status += delta(two_ja, two_jc, two_jf, &d2); status += delta(two_jb, two_jd, two_jf, &d3); ! status += delta(two_jc, two_jd, two_je, &d4); if(status != GSL_SUCCESS) { OVERFLOW_ERROR(result); --- 222,229 ---- double sumsq_err = 0.0; int status = 0; ! status += delta(two_ja, two_jb, two_jc, &d1); ! status += delta(two_ja, two_je, two_jf, &d2); status += delta(two_jb, two_jd, two_jf, &d3); ! status += delta(two_je, two_jd, two_jc, &d4); if(status != GSL_SUCCESS) { OVERFLOW_ERROR(result); *************** *** 238,251 **** tkmin = locMax3(0, ! two_ja + two_jd - two_je - two_jf, ! two_jb + two_jc - two_je - two_jf); ! tkmax = locMin5(two_ja + two_jb + two_jc + two_jd + 2, ! two_ja + two_jb - two_je, ! two_jc + two_jd - two_je, ! two_ja + two_jc - two_jf, ! two_jb + two_jd - two_jf); ! phase = GSL_IS_ODD((two_ja + two_jb + two_jc + two_jd + tkmin)/2) ? -1.0 : 1.0; --- 232,245 ---- tkmin = locMax3(0, ! two_ja + two_jd - two_jc - two_jf, ! two_jb + two_je - two_jc - two_jf); ! tkmax = locMin5(two_ja + two_jb + two_je + two_jd + 2, ! two_ja + two_jb - two_jc, ! two_je + two_jd - two_jc, ! two_ja + two_je - two_jf, ! two_jb + two_jd - two_jf); ! phase = GSL_IS_ODD((two_ja + two_jb + two_je + two_jd + tkmin)/2) ? -1.0 : 1.0; *************** *** 258,268 **** status = 0; ! status += gsl_sf_fact_e((two_ja + two_jb + two_jc + two_jd - tk)/2 + 1, &n1); status += gsl_sf_fact_e(tk/2, &d1_a); ! status += gsl_sf_fact_e((two_je + two_jf - two_ja - two_jd + tk)/2, &d1_b); ! status += gsl_sf_fact_e((two_je + two_jf - two_jb - two_jc + tk)/2, &d2); ! status += gsl_sf_fact_e((two_ja + two_jb - two_je - tk)/2, &d3); ! status += gsl_sf_fact_e((two_jc + two_jd - two_je - tk)/2, &d4); ! status += gsl_sf_fact_e((two_ja + two_jc - two_jf - tk)/2, &d5); status += gsl_sf_fact_e((two_jb + two_jd - two_jf - tk)/2, &d6); --- 252,262 ---- status = 0; ! status += gsl_sf_fact_e((two_ja + two_jb + two_je + two_jd - tk)/2 + 1, &n1); status += gsl_sf_fact_e(tk/2, &d1_a); ! status += gsl_sf_fact_e((two_jc + two_jf - two_ja - two_jd + tk)/2, &d1_b); ! status += gsl_sf_fact_e((two_jc + two_jf - two_jb - two_je + tk)/2, &d2); ! status += gsl_sf_fact_e((two_ja + two_jb - two_jc - tk)/2, &d3); ! status += gsl_sf_fact_e((two_je + two_jd - two_jc - tk)/2, &d4); ! status += gsl_sf_fact_e((two_ja + two_je - two_jf - tk)/2, &d5); status += gsl_sf_fact_e((two_jb + two_jd - two_jf - tk)/2, &d6); *************** *** 311,328 **** int - gsl_sf_coupling_6j_e(int two_ja, int two_jb, int two_jc, - int two_jd, int two_je, int two_jf, - gsl_sf_result * result) - { - return gsl_sf_coupling_6j_INCORRECT_e(two_ja, two_jb, two_je, two_jd, two_jc, two_jf, result); - } - - - int gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, gsl_sf_result * result) { ! int status = gsl_sf_coupling_6j_INCORRECT_e(two_ja, two_jb, two_jc, two_jd, two_je, two_jf, result); int phase_sum = (two_ja + two_jb + two_jc + two_jd)/2; result->val *= ( GSL_IS_ODD(phase_sum) ? -1.0 : 1.0 ); --- 305,313 ---- int gsl_sf_coupling_RacahW_e(int two_ja, int two_jb, int two_jc, int two_jd, int two_je, int two_jf, gsl_sf_result * result) { ! int status = gsl_sf_coupling_6j_e(two_ja, two_jb, two_je, two_jd, two_jc, two_jf, result); int phase_sum = (two_ja + two_jb + two_jc + two_jd)/2; result->val *= ( GSL_IS_ODD(phase_sum) ? -1.0 : 1.0 ); diff -x.info* -rc2P gsl-1.3/specfunc/dawson.c gsl-1.4/specfunc/dawson.c *** gsl-1.3/specfunc/dawson.c Mon Nov 19 21:39:28 2001 --- gsl-1.4/specfunc/dawson.c Fri Jul 25 15:18:15 2003 *************** *** 34,54 **** /* Chebyshev expansions ! Series for DAW on the interval 0. to 1.00000E+00 ! with weighted error 8.95E-32 ! log weighted error 31.05 ! significant figures required 30.41 ! decimal places required 31.71 ! Series for DAW2 on the interval 0. to 1.60000E+01 ! with weighted error 1.61E-32 ! log weighted error 31.79 ! significant figures required 31.40 ! decimal places required 32.62 ! Series for DAWA on the interval 0. to 6.25000E-02 ! with weighted error 1.97E-32 ! log weighted error 31.71 ! significant figures required 29.79 ! decimal places required 32.64 */ static double daw_data[21] = { --- 34,54 ---- /* Chebyshev expansions ! Series for DAW on the interval 0. to 1.00000E+00 ! with weighted error 8.95E-32 ! log weighted error 31.05 ! significant figures required 30.41 ! decimal places required 31.71 ! Series for DAW2 on the interval 0. to 1.60000E+01 ! with weighted error 1.61E-32 ! log weighted error 31.79 ! significant figures required 31.40 ! decimal places required 32.62 ! Series for DAWA on the interval 0. to 6.25000E-02 ! with weighted error 1.97E-32 ! log weighted error 31.71 ! significant figures required 29.79 ! decimal places required 32.64 */ static double daw_data[21] = { diff -x.info* -rc2P gsl-1.3/specfunc/dilog.c gsl-1.4/specfunc/dilog.c *** gsl-1.3/specfunc/dilog.c Mon Nov 19 21:39:28 2001 --- gsl-1.4/specfunc/dilog.c Fri Jul 25 15:18:15 2003 *************** *** 310,315 **** if(r_tmp.val < 0.98) { stat_dilog = dilogc_series_1(r_tmp.val, cos_theta_tmp, sin_theta_tmp, ! &result_re_tmp, &result_im_tmp ! ); } else { --- 310,315 ---- if(r_tmp.val < 0.98) { stat_dilog = dilogc_series_1(r_tmp.val, cos_theta_tmp, sin_theta_tmp, ! &result_re_tmp, &result_im_tmp ! ); } else { *************** *** 317,321 **** stat_dilog = dilogc_series_2(r_tmp.val, theta_tmp, cos_theta_tmp, sin_theta_tmp, &result_re_tmp, &result_im_tmp ! ); } --- 317,321 ---- stat_dilog = dilogc_series_2(r_tmp.val, theta_tmp, cos_theta_tmp, sin_theta_tmp, &result_re_tmp, &result_im_tmp ! ); } *************** *** 452,456 **** stat_dilog = dilogc_unitdisk(r_tmp, theta_tmp, &result_re_tmp, &result_im_tmp ! ); /* Unwind the inversion if necessary. We calculate --- 452,456 ---- stat_dilog = dilogc_unitdisk(r_tmp, theta_tmp, &result_re_tmp, &result_im_tmp ! ); /* Unwind the inversion if necessary. We calculate diff -x.info* -rc2P gsl-1.3/specfunc/ellint.c gsl-1.4/specfunc/ellint.c *** gsl-1.3/specfunc/ellint.c Sat Jul 13 21:15:28 2002 --- gsl-1.4/specfunc/ellint.c Fri Jul 25 15:18:15 2003 *************** *** 272,276 **** if(rcstatus != GSL_SUCCESS) { result->val = 0.0; ! result->err = 0.0; return rcstatus; } --- 272,276 ---- if(rcstatus != GSL_SUCCESS) { result->val = 0.0; ! result->err = 0.0; return rcstatus; } diff -x.info* -rc2P gsl-1.3/specfunc/elljac.c gsl-1.4/specfunc/elljac.c *** gsl-1.3/specfunc/elljac.c Mon Nov 19 21:39:28 2001 --- gsl-1.4/specfunc/elljac.c Fri Jul 25 15:18:15 2003 *************** *** 72,77 **** if(n >= N - 2) { status = GSL_EMAXITER; ! c[N-1] = 0.0; ! break; } ++n; --- 72,77 ---- if(n >= N - 2) { status = GSL_EMAXITER; ! c[N-1] = 0.0; ! break; } ++n; diff -x.info* -rc2P gsl-1.3/specfunc/erfc.c gsl-1.4/specfunc/erfc.c *** gsl-1.3/specfunc/erfc.c Mon Nov 19 21:39:28 2001 --- gsl-1.4/specfunc/erfc.c Fri Jul 25 15:18:15 2003 *************** *** 1,5 **** /* specfunc/erfc.c * ! * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman * * This program is free software; you can redistribute it and/or modify --- 1,5 ---- /* specfunc/erfc.c * ! * Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Gerard Jungman * * This program is free software; you can redistribute it and/or modify *************** *** 30,33 **** --- 30,34 ---- #include #include + #include #include *************** *** 402,405 **** --- 403,433 ---- + int gsl_sf_hazard_e(double x, gsl_sf_result * result) + { + if(x < 25.0) + { + gsl_sf_result result_ln_erfc; + const int stat_l = gsl_sf_log_erfc_e(x/M_SQRT2, &result_ln_erfc); + const double lnc = -0.22579135264472743236; /* ln(sqrt(2/pi)) */ + const double arg = lnc - 0.5*x*x - result_ln_erfc.val; + const int stat_e = gsl_sf_exp_e(arg, result); + result->err += 3.0 * (1.0 + fabs(x)) * GSL_DBL_EPSILON * fabs(result->val); + result->err += fabs(result_ln_erfc.err * result->val); + return GSL_ERROR_SELECT_2(stat_l, stat_e); + } + else + { + const double ix2 = 1.0/(x*x); + const double corrB = 1.0 - 9.0*ix2 * (1.0 - 11.0*ix2); + const double corrM = 1.0 - 5.0*ix2 * (1.0 - 7.0*ix2 * corrB); + const double corrT = 1.0 - ix2 * (1.0 - 3.0*ix2*corrM); + result->val = x / corrT; + result->err = 2.0 * GSL_DBL_EPSILON * fabs(result->val); + return GSL_SUCCESS; + } + } + + + /*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ *************** *** 430,431 **** --- 458,465 ---- EVAL_RESULT(gsl_sf_erf_Q_e(x, &result)); } + + double gsl_sf_hazard(double x) + { + EVAL_RESULT(gsl_sf_hazard_e(x, &result)); + } + diff -x.info* -rc2P gsl-1.3/specfunc/exp.c gsl-1.4/specfunc/exp.c *** gsl-1.3/specfunc/exp.c Mon Nov 19 21:39:28 2001 --- gsl-1.4/specfunc/exp.c Fri Jul 25 15:18:15 2003 *************** *** 476,503 **** if(lnpre_val < GSL_LOG_DBL_MAX - 5.0) { int stat_eG; ! gsl_sf_result bigG_ratio; ! gsl_sf_result pre; ! int stat_ex = gsl_sf_exp_err_e(lnpre_val, lnpre_err, &pre); double ln_bigG_ratio_pre = -x + (N-1)*ln_x - lg_N; ! double bigGsum = 1.0; ! double term = 1.0; ! int k; ! for(k=1; kval = pre.val * (1.0 - bigG_ratio.val); ! result->err = pre.val * (2.0*GSL_DBL_EPSILON + bigG_ratio.err); ! result->err += pre.err * fabs(1.0 - bigG_ratio.val); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); ! return stat_ex; ! } ! else { ! result->val = 0.0; ! result->err = 0.0; ! return stat_eG; ! } } else { --- 476,503 ---- if(lnpre_val < GSL_LOG_DBL_MAX - 5.0) { int stat_eG; ! gsl_sf_result bigG_ratio; ! gsl_sf_result pre; ! int stat_ex = gsl_sf_exp_err_e(lnpre_val, lnpre_err, &pre); double ln_bigG_ratio_pre = -x + (N-1)*ln_x - lg_N; ! double bigGsum = 1.0; ! double term = 1.0; ! int k; ! for(k=1; kval = pre.val * (1.0 - bigG_ratio.val); ! result->err = pre.val * (2.0*GSL_DBL_EPSILON + bigG_ratio.err); ! result->err += pre.err * fabs(1.0 - bigG_ratio.val); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); ! return stat_ex; ! } ! else { ! result->val = 0.0; ! result->err = 0.0; ! return stat_eG; ! } } else { *************** *** 518,522 **** for(k=1; kval = -N/x * sum; --- 518,522 ---- for(k=1; kval = -N/x * sum; diff -x.info* -rc2P gsl-1.3/specfunc/expint.c gsl-1.4/specfunc/expint.c *** gsl-1.3/specfunc/expint.c Wed Nov 6 23:01:58 2002 --- gsl-1.4/specfunc/expint.c Fri Jul 25 15:18:15 2003 *************** *** 36,78 **** Series for AE11 on the interval -1.00000D-01 to 0. ! with weighted error 1.76E-17 ! log weighted error 16.75 ! significant figures required 15.70 ! decimal places required 17.55 Series for AE12 on the interval -2.50000D-01 to -1.00000D-01 ! with weighted error 5.83E-17 ! log weighted error 16.23 ! significant figures required 15.76 ! decimal places required 16.93 Series for E11 on the interval -4.00000D+00 to -1.00000D+00 ! with weighted error 1.08E-18 ! log weighted error 17.97 ! significant figures required 19.02 ! decimal places required 18.61 Series for E12 on the interval -1.00000D+00 to 1.00000D+00 ! with weighted error 3.15E-18 ! log weighted error 17.50 ! approx significant figures required 15.8 ! decimal places required 18.10 Series for AE13 on the interval 2.50000D-01 to 1.00000D+00 ! with weighted error 2.34E-17 ! log weighted error 16.63 ! significant figures required 16.14 ! decimal places required 17.33 ! Series for AE14 on the interval 0. to 2.50000D-01 ! with weighted error 5.41E-17 ! log weighted error 16.27 ! significant figures required 15.38 ! decimal places required 16.97 */ --- 36,78 ---- Series for AE11 on the interval -1.00000D-01 to 0. ! with weighted error 1.76E-17 ! log weighted error 16.75 ! significant figures required 15.70 ! decimal places required 17.55 Series for AE12 on the interval -2.50000D-01 to -1.00000D-01 ! with weighted error 5.83E-17 ! log weighted error 16.23 ! significant figures required 15.76 ! decimal places required 16.93 Series for E11 on the interval -4.00000D+00 to -1.00000D+00 ! with weighted error 1.08E-18 ! log weighted error 17.97 ! significant figures required 19.02 ! decimal places required 18.61 Series for E12 on the interval -1.00000D+00 to 1.00000D+00 ! with weighted error 3.15E-18 ! log weighted error 17.50 ! approx significant figures required 15.8 ! decimal places required 18.10 Series for AE13 on the interval 2.50000D-01 to 1.00000D+00 ! with weighted error 2.34E-17 ! log weighted error 16.63 ! significant figures required 16.14 ! decimal places required 17.33 ! Series for AE14 on the interval 0. to 2.50000D-01 ! with weighted error 5.41E-17 ! log weighted error 16.27 ! significant figures required 15.38 ! decimal places required 16.97 */ diff -x.info* -rc2P gsl-1.3/specfunc/fermi_dirac.c gsl-1.4/specfunc/fermi_dirac.c *** gsl-1.3/specfunc/fermi_dirac.c Mon Nov 19 21:39:28 2001 --- gsl-1.4/specfunc/fermi_dirac.c Fri Jul 25 15:18:15 2003 *************** *** 1202,1207 **** stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, pre*(sum_even_val + sum_odd_val), ! pre*(sum_even_err + sum_odd_err), ! result); result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); --- 1202,1207 ---- stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, pre*(sum_even_val + sum_odd_val), ! pre*(sum_even_err + sum_odd_err), ! result); result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); diff -x.info* -rc2P gsl-1.3/specfunc/gamma.c gsl-1.4/specfunc/gamma.c *** gsl-1.3/specfunc/gamma.c Wed Dec 5 19:57:40 2001 --- gsl-1.4/specfunc/gamma.c Fri Jul 25 15:18:15 2003 *************** *** 260,264 **** { 4, 8.000000000000000000000000000, 8L }, { 5, 15.00000000000000000000000000, 15L }, ! { 6, 48.00000000000000000000000000, 48L }, { 7, 105.0000000000000000000000000, 105L }, { 8, 384.0000000000000000000000000, 384L }, --- 260,264 ---- { 4, 8.000000000000000000000000000, 8L }, { 5, 15.00000000000000000000000000, 15L }, ! { 6, 48.00000000000000000000000000, 48L }, { 7, 105.0000000000000000000000000, 105L }, { 8, 384.0000000000000000000000000, 384L }, *************** *** 1222,1231 **** result_lg->val = 0.0; result_lg->err = 0.0; ! *sgn = 0.0; ! GSL_ERROR ("error", GSL_EROUND); } else { int N = -(int)(x - 0.5); ! double eps = x + N; return lngamma_sgn_sing(N, eps, result_lg, sgn); } --- 1222,1231 ---- result_lg->val = 0.0; result_lg->err = 0.0; ! *sgn = 0.0; ! GSL_ERROR ("error", GSL_EROUND); } else { int N = -(int)(x - 0.5); ! double eps = x + N; return lngamma_sgn_sing(N, eps, result_lg, sgn); } *************** *** 1256,1261 **** int rint_x = (int)floor(x+0.5); double f_x = x - rint_x; ! double sgn = ( GSL_IS_EVEN(rint_x) ? 1.0 : -1.0 ); ! double sin_term = sgn * sin(M_PI * f_x) / M_PI; if(sin_term == 0.0) { --- 1256,1261 ---- int rint_x = (int)floor(x+0.5); double f_x = x - rint_x; ! double sgn_gamma = ( GSL_IS_EVEN(rint_x) ? 1.0 : -1.0 ); ! double sin_term = sgn_gamma * sin(M_PI * f_x) / M_PI; if(sin_term == 0.0) { *************** *** 1267,1272 **** if(fabs(sin_term) * g.val * GSL_DBL_MIN < 1.0) { result->val = 1.0/(sin_term * g.val); ! result->err = fabs(g.err/g.val) * fabs(result->val); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); return GSL_SUCCESS; } --- 1267,1272 ---- if(fabs(sin_term) * g.val * GSL_DBL_MIN < 1.0) { result->val = 1.0/(sin_term * g.val); ! result->err = fabs(g.err/g.val) * fabs(result->val); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); return GSL_SUCCESS; } *************** *** 1349,1353 **** /* CHECK_POINTER(result) */ ! if(x < 0.5) { gsl_sf_result lng; double sgn; --- 1349,1357 ---- /* CHECK_POINTER(result) */ ! if (x <= 0.0 && x == floor(x)) { /* negative integer */ ! result->val = 0.0; ! result->err = 0.0; ! return GSL_SUCCESS; ! } else if(x < 0.5) { gsl_sf_result lng; double sgn; *************** *** 1586,1602 **** return GSL_SUCCESS; } ! else { ! double prod = 1.0; ! int k; ! for(k=n; k>=m+1; k--) { ! double tk = (double)k / (double)(k-m); ! if(tk > GSL_DBL_MAX/prod) { ! OVERFLOW_ERROR(result); } - prod *= tk; - } - result->val = prod; - result->err = 2.0 * GSL_DBL_EPSILON * prod * fabs(n-m); - return GSL_SUCCESS; } } --- 1590,1623 ---- return GSL_SUCCESS; } ! else if (n <= FACT_TABLE_MAX) { ! result->val = (fact_table[n].f / fact_table[m].f) / fact_table[n-m].f; ! result->err = 6.0 * GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; ! } else { ! if(m*2 < n) m = n-m; ! ! if (n - m < 64) /* compute product for a manageable number of terms */ ! { ! double prod = 1.0; ! unsigned int k; ! ! for(k=n; k>=m+1; k--) { ! double tk = (double)k / (double)(k-m); ! if(tk > GSL_DBL_MAX/prod) { ! OVERFLOW_ERROR(result); ! } ! prod *= tk; ! } ! result->val = prod; ! result->err = 2.0 * GSL_DBL_EPSILON * prod * fabs(n-m); ! return GSL_SUCCESS; ! } ! else ! { ! gsl_sf_result lc; ! const int stat_lc = gsl_sf_lnchoose_e (n, m, &lc); ! const int stat_e = gsl_sf_exp_err_e(lc.val, lc.err, result); ! return GSL_ERROR_SELECT_2(stat_lc, stat_e); } } } diff -x.info* -rc2P gsl-1.3/specfunc/gamma_inc.c gsl-1.4/specfunc/gamma_inc.c *** gsl-1.3/specfunc/gamma_inc.c Mon Jan 28 19:02:25 2002 --- gsl-1.4/specfunc/gamma_inc.c Fri Jul 25 15:18:15 2003 *************** *** 27,30 **** --- 27,31 ---- #include #include + #include #include "error.h" *************** *** 47,55 **** } else { - double mu = (x-a)/a; - double term1; gsl_sf_result gstar; gsl_sf_result ln_term; ! gsl_sf_log_1plusx_mx_e(mu, &ln_term); /* log(1+mu) - mu */ gsl_sf_gammastar_e(a, &gstar); term1 = exp(a*ln_term.val)/sqrt(2.0*M_PI*a); --- 48,62 ---- } else { gsl_sf_result gstar; gsl_sf_result ln_term; ! double term1; ! if (x < a) { ! double u = x/a; ! ln_term.val = log(u) - u + 1.0; ! ln_term.err = ln_term.val * GSL_DBL_EPSILON; ! } else { ! double mu = (x-a)/a; ! gsl_sf_log_1plusx_mx_e(mu, &ln_term); /* log(1+mu) - mu */ ! }; gsl_sf_gammastar_e(a, &gstar); term1 = exp(a*ln_term.val)/sqrt(2.0*M_PI*a); *************** *** 59,62 **** --- 66,70 ---- return GSL_SUCCESS; } + } *************** *** 84,88 **** result->val = D.val * sum; result->err = D.err * fabs(sum); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); if(n == nmax) --- 92,96 ---- result->val = D.val * sum; result->err = D.err * fabs(sum); ! result->err += (1.0 + n) * GSL_DBL_EPSILON * fabs(result->val); if(n == nmax) *************** *** 121,125 **** if(n == nmax) ! GSL_ERROR ("error", GSL_EMAXITER); else return stat_D; --- 129,133 ---- if(n == nmax) ! GSL_ERROR ("error in large x asymptotic", GSL_EMAXITER); else return stat_D; *************** *** 170,214 **** ! /* Continued fraction for Q. ! * ! * Q(a,x) = D(a,x) a/x F(a,x) ! * 1 (1-a)/x 1/x (2-a)/x 2/x (3-a)/x ! * F(a,x) = ---- ------- ----- -------- ----- -------- ... ! * 1 + 1 + 1 + 1 + 1 + 1 + ! * ! * Hans E. Plesser, 2002-01-22 (hans dot plesser at itf dot nlh dot no): ! * ! * Since the Gautschi equivalent series method for CF evaluation may lead ! * to singularities, I have replaced it with the modified Lentz algorithm ! * given in ! * ! * I J Thompson and A R Barnett ! * Coulomb and Bessel Functions of Complex Arguments and Order ! * J Computational Physics 64:490-509 (1986) ! * ! * In consequence, gamma_inc_Q_CF_protected() is now obsolete and has been ! * removed. * ! * Identification of terms between the above equation for F(a, x) and ! * the first equation in the appendix of Thompson&Barnett is as follows: * ! * b_0 = 0, b_n = 1 for all n > 0 * ! * a_1 = 1 ! * a_n = (n/2-a)/x for n even ! * a_n = (n-1)/(2x) for n odd * */ ! ! static ! int ! gamma_inc_Q_CF(const double a, const double x, gsl_sf_result * result) { const int nmax = 5000; const double small = gsl_pow_3 (GSL_DBL_EPSILON); - gsl_sf_result D; - const int stat_D = gamma_inc_D(a, x, &D); - double hn = 1.0; /* convergent */ double Cn = 1.0 / small; --- 178,200 ---- ! /* Continued fraction which occurs in evaluation ! * of Q(a,x) or Gamma(a,x). * ! * 1 (1-a)/x 1/x (2-a)/x 2/x (3-a)/x ! * F(a,x) = ---- ------- ----- -------- ----- -------- ... ! * 1 + 1 + 1 + 1 + 1 + 1 + * ! * Hans E. Plesser, 2002-01-22 (hans dot plesser at itf dot nlh dot no). * ! * Split out from gamma_inc_Q_CF() by GJ [Tue Apr 1 13:16:41 MST 2003]. ! * See gamma_inc_Q_CF() below. * */ ! static int ! gamma_inc_F_CF(const double a, const double x, gsl_sf_result * result) { const int nmax = 5000; const double small = gsl_pow_3 (GSL_DBL_EPSILON); double hn = 1.0; /* convergent */ double Cn = 1.0 / small; *************** *** 218,222 **** /* n == 1 has a_1, b_1, b_0 independent of a,x, so that has been done by hand */ ! for ( n = 2 ; n < nmax ; n++ ) { double an; double delta; --- 204,209 ---- /* n == 1 has a_1, b_1, b_0 independent of a,x, so that has been done by hand */ ! for ( n = 2 ; n < nmax ; n++ ) ! { double an; double delta; *************** *** 236,252 **** delta = Cn * Dn; hn *= delta; ! if(fabs(delta-1) < GSL_DBL_EPSILON) break; } ! result->val = D.val * (a/x) * hn; ! result->err = D.err * fabs((a/x) * hn); result->err += GSL_DBL_EPSILON * (2.0 + 0.5*n) * fabs(result->val); if(n == nmax) ! GSL_ERROR ("error", GSL_EMAXITER); else ! return stat_D; } /* Useful for small a and x. Handles the subtraction analytically. */ --- 223,283 ---- delta = Cn * Dn; hn *= delta; ! if(fabs(delta-1.0) < GSL_DBL_EPSILON) break; } ! result->val = hn; ! result->err = 2.0*GSL_DBL_EPSILON * fabs(hn); result->err += GSL_DBL_EPSILON * (2.0 + 0.5*n) * fabs(result->val); if(n == nmax) ! GSL_ERROR ("error in CF for F(a,x)", GSL_EMAXITER); else ! return GSL_SUCCESS; } + + /* Continued fraction for Q. + * + * Q(a,x) = D(a,x) a/x F(a,x) + * + * Hans E. Plesser, 2002-01-22 (hans dot plesser at itf dot nlh dot no): + * + * Since the Gautschi equivalent series method for CF evaluation may lead + * to singularities, I have replaced it with the modified Lentz algorithm + * given in + * + * I J Thompson and A R Barnett + * Coulomb and Bessel Functions of Complex Arguments and Order + * J Computational Physics 64:490-509 (1986) + * + * In consequence, gamma_inc_Q_CF_protected() is now obsolete and has been + * removed. + * + * Identification of terms between the above equation for F(a, x) and + * the first equation in the appendix of Thompson&Barnett is as follows: + * + * b_0 = 0, b_n = 1 for all n > 0 + * + * a_1 = 1 + * a_n = (n/2-a)/x for n even + * a_n = (n-1)/(2x) for n odd + * + */ + static + int + gamma_inc_Q_CF(const double a, const double x, gsl_sf_result * result) + { + gsl_sf_result D; + gsl_sf_result F; + const int stat_D = gamma_inc_D(a, x, &D); + const int stat_F = gamma_inc_F_CF(a, x, &F); + + result->val = D.val * (a/x) * F.val; + result->err = D.err * fabs((a/x) * F.val) + fabs(D.val * a/x * F.err); + + return GSL_ERROR_SELECT_2(stat_F, stat_D); + } + + /* Useful for small a and x. Handles the subtraction analytically. */ *************** *** 272,283 **** * (-1.758243446661483480 + lnx) * (-0.764428657272716373 + lnx) ! * ( 0.723980571623507657 + lnx) ! * ( 4.107554191916823640 + lnx); const double c5 = -0.0083333333333333333 * (-2.06563396085715900 + lnx) ! * (-1.28459889470864700 + lnx) ! * (-0.27583535756454143 + lnx) ! * ( 1.33677371336239618 + lnx) ! * ( 5.17537282427561550 + lnx); const double c6 = -0.0013888888888888889 * (-2.30814336454783200 + lnx) --- 303,314 ---- * (-1.758243446661483480 + lnx) * (-0.764428657272716373 + lnx) ! * ( 0.723980571623507657 + lnx) ! * ( 4.107554191916823640 + lnx); const double c5 = -0.0083333333333333333 * (-2.06563396085715900 + lnx) ! * (-1.28459889470864700 + lnx) ! * (-0.27583535756454143 + lnx) ! * ( 1.33677371336239618 + lnx) ! * ( 5.17537282427561550 + lnx); const double c6 = -0.0013888888888888889 * (-2.30814336454783200 + lnx) *************** *** 357,360 **** --- 388,444 ---- + /* series for small a and x, but not defined for a == 0 */ + static int + gamma_inc_series(double a, double x, gsl_sf_result * result) + { + gsl_sf_result Q; + gsl_sf_result G; + const int stat_Q = gamma_inc_Q_series(a, x, &Q); + const int stat_G = gsl_sf_gamma_e(a, &G); + result->val = Q.val * G.val; + result->err = fabs(Q.val * G.err) + fabs(Q.err * G.val); + result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_Q, stat_G); + } + + + static int + gamma_inc_a_gt_0(double a, double x, gsl_sf_result * result) + { + /* x > 0 and a > 0; use result for Q */ + gsl_sf_result Q; + gsl_sf_result G; + const int stat_Q = gsl_sf_gamma_inc_Q_e(a, x, &Q); + const int stat_G = gsl_sf_gamma_e(a, &G); + + result->val = G.val * Q.val; + result->err = fabs(G.val * Q.err) + fabs(G.err * Q.val); + result->err += 2.0*GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_G, stat_Q); + } + + + static int + gamma_inc_CF(double a, double x, gsl_sf_result * result) + { + gsl_sf_result F; + gsl_sf_result pre; + const int stat_F = gamma_inc_F_CF(a, x, &F); + const int stat_E = gsl_sf_exp_e((a-1.0)*log(x) - x, &pre); + + result->val = F.val * pre.val; + result->err = fabs(F.err * pre.val) + fabs(F.val * pre.err); + result->err += (2.0 + fabs(a)) * GSL_DBL_EPSILON * fabs(result->val); + + return GSL_ERROR_SELECT_2(stat_F, stat_E); + } + + + /* evaluate Gamma(0,x), x > 0 */ + #define GAMMA_INC_A_0(x, result) gsl_sf_expint_E1_e(x, result) + + /*-*-*-*-*-*-*-*-*-*-*-* Functions with Error Codes *-*-*-*-*-*-*-*-*-*-*-*/ *************** *** 362,366 **** gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result) { ! if(a <= 0.0 || x < 0.0) { DOMAIN_ERROR(result); } --- 446,450 ---- gsl_sf_gamma_inc_Q_e(const double a, const double x, gsl_sf_result * result) { ! if(a < 0.0 || x < 0.0) { DOMAIN_ERROR(result); } *************** *** 370,373 **** --- 454,463 ---- return GSL_SUCCESS; } + else if(a == 0.0) + { + result->val = 0.0; + result->err = 0.0; + return GSL_SUCCESS; + } else if(x <= 0.5*a) { /* If the series is quick, do that. It is *************** *** 499,502 **** --- 589,651 ---- + int + gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result) + { + if(x < 0.0) { + DOMAIN_ERROR(result); + } + else if(x == 0.0) { + return gsl_sf_gamma_e(a, result); + } + else if(a == 0.0) + { + return GAMMA_INC_A_0(x, result); + } + else if(a > 0.0) + { + return gamma_inc_a_gt_0(a, x, result); + } + else if(x > 0.25) + { + /* continued fraction seems to fail for x too small; otherwise + it is ok, independent of the value of |x/a|, because of the + non-oscillation in the expansion, i.e. the CF is + un-conditionally convergent for a < 0 and x > 0 + */ + return gamma_inc_CF(a, x, result); + } + else if(fabs(a) < 0.5) + { + return gamma_inc_series(a, x, result); + } + else + { + /* a = fa + da; da >= 0 */ + const double fa = floor(a); + const double da = a - fa; + + gsl_sf_result g_da; + const int stat_g_da = ( da > 0.0 ? gamma_inc_a_gt_0(da, x, &g_da) + : GAMMA_INC_A_0(x, &g_da)); + + double alpha = da; + double gax = g_da.val; + + /* Gamma(alpha-1,x) = 1/(alpha-1) (Gamma(a,x) - x^(alpha-1) e^-x) */ + do + { + const double shift = exp(-x + (alpha-1.0)*log(x)); + gax = (gax - shift) / (alpha - 1.0); + alpha -= 1.0; + } while(alpha > a); + + result->val = gax; + result->err = 2.0*(1.0 + fabs(a))*GSL_DBL_EPSILON*fabs(gax); + return stat_g_da; + } + + } + + /*-*-*-*-*-*-*-*-*-* Functions w/ Natural Prototypes *-*-*-*-*-*-*-*-*-*-*/ *************** *** 511,513 **** --- 660,667 ---- { EVAL_RESULT(gsl_sf_gamma_inc_Q_e(a, x, &result)); + } + + double gsl_sf_gamma_inc(const double a, const double x) + { + EVAL_RESULT(gsl_sf_gamma_inc_e(a, x, &result)); } diff -x.info* -rc2P gsl-1.3/specfunc/gegenbauer.c gsl-1.4/specfunc/gegenbauer.c *** gsl-1.3/specfunc/gegenbauer.c Mon Nov 19 21:39:27 2001 --- gsl-1.4/specfunc/gegenbauer.c Fri Jul 25 15:18:15 2003 *************** *** 127,132 **** for(k=4; k<=n; k++) { gk = (2.0*(k+lambda-1.0)*x*gkm1 - (k+2.0*lambda-2.0)*gkm2) / k; ! gkm2 = gkm1; ! gkm1 = gk; } result->val = gk; --- 127,132 ---- for(k=4; k<=n; k++) { gk = (2.0*(k+lambda-1.0)*x*gkm1 - (k+2.0*lambda-2.0)*gkm2) / k; ! gkm2 = gkm1; ! gkm1 = gk; } result->val = gk; *************** *** 162,166 **** for(k=2; k<=nmax; k++) { double term1 = 2.0*(k+lambda-1.0) * x * result_array[k-1]; ! double term2 = (k+2.0*lambda-2.0) * result_array[k-2]; result_array[k] = (term1 - term2) / k; } --- 162,166 ---- for(k=2; k<=nmax; k++) { double term1 = 2.0*(k+lambda-1.0) * x * result_array[k-1]; ! double term2 = (k+2.0*lambda-2.0) * result_array[k-2]; result_array[k] = (term1 - term2) / k; } diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_coulomb.h gsl-1.4/specfunc/gsl_sf_coulomb.h *** gsl-1.3/specfunc/gsl_sf_coulomb.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_sf_coulomb.h Fri Jul 25 15:18:22 2003 *************** *** 75,82 **** gsl_sf_coulomb_wave_FG_e(const double eta, const double x, const double lam_F, ! const int k_lam_G, gsl_sf_result * F, gsl_sf_result * Fp, ! gsl_sf_result * G, gsl_sf_result * Gp, ! double * exp_F, double * exp_G); --- 75,82 ---- gsl_sf_coulomb_wave_FG_e(const double eta, const double x, const double lam_F, ! const int k_lam_G, gsl_sf_result * F, gsl_sf_result * Fp, ! gsl_sf_result * G, gsl_sf_result * Gp, ! double * exp_F, double * exp_G); *************** *** 93,98 **** double eta, double x, double * fc_array, double * gc_array, ! double * F_exponent, ! double * G_exponent ); --- 93,98 ---- double eta, double x, double * fc_array, double * gc_array, ! double * F_exponent, ! double * G_exponent ); *************** *** 101,107 **** double eta, double x, double * fc_array, double * fcp_array, ! double * gc_array, double * gcp_array, ! double * F_exponent, ! double * G_exponent ); --- 101,107 ---- double eta, double x, double * fc_array, double * fcp_array, ! double * gc_array, double * gcp_array, ! double * F_exponent, ! double * G_exponent ); *************** *** 112,118 **** int gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax, double eta, double x, ! double * fc_array, ! double * F_exponent ! ); --- 112,118 ---- int gsl_sf_coulomb_wave_sphF_array(double lam_min, int kmax, double eta, double x, ! double * fc_array, ! double * F_exponent ! ); diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_coupling.h gsl-1.4/specfunc/gsl_sf_coupling.h *** gsl-1.3/specfunc/gsl_sf_coupling.h Tue Dec 10 19:56:31 2002 --- gsl-1.4/specfunc/gsl_sf_coupling.h Fri Jul 25 15:18:22 2003 *************** *** 45,50 **** int gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc, ! gsl_sf_result * result ! ); double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc --- 45,50 ---- int gsl_sf_coupling_3j_e(int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc, ! gsl_sf_result * result ! ); double gsl_sf_coupling_3j(int two_ja, int two_jb, int two_jc, int two_ma, int two_mb, int two_mc *************** *** 64,68 **** int two_jd, int two_je, int two_jf ); - /* Racah W coefficients: --- 64,67 ---- diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_erf.h gsl-1.4/specfunc/gsl_sf_erf.h *** gsl-1.3/specfunc/gsl_sf_erf.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_sf_erf.h Fri Jul 25 15:18:22 2003 *************** *** 76,79 **** --- 76,90 ---- + /* Hazard function, also known as the inverse Mill's ratio. + * + * H(x) := Z(x)/Q(x) + * = Sqrt[2/Pi] Exp[-x^2 / 2] / Erfc[x/Sqrt[2]] + * + * exceptions: GSL_EUNDRFLW + */ + int gsl_sf_hazard_e(double x, gsl_sf_result * result); + double gsl_sf_hazard(double x); + + __END_DECLS diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_exp.h gsl-1.4/specfunc/gsl_sf_exp.h *** gsl-1.3/specfunc/gsl_sf_exp.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_sf_exp.h Fri Jul 25 15:18:22 2003 *************** *** 131,135 **** ! #ifdef HAVE_INLINE #include #include --- 131,135 ---- ! #if HAVE_INLINE #include #include diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_gamma.h gsl-1.4/specfunc/gsl_sf_gamma.h *** gsl-1.3/specfunc/gsl_sf_gamma.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_sf_gamma.h Fri Jul 25 15:18:22 2003 *************** *** 211,215 **** * Q(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,x,Infinity} ] * ! * a > 0, x >= 0 * * exceptions: GSL_EDOM --- 211,217 ---- * Q(a,x) = 1/Gamma(a) Integral[ t^(a-1) e^(-t), {t,x,Infinity} ] * ! * a >= 0, x >= 0 ! * Q(a,0) := 1 ! * Q(0,x) := 0, x != 0 * * exceptions: GSL_EDOM *************** *** 229,232 **** --- 231,247 ---- int gsl_sf_gamma_inc_P_e(const double a, const double x, gsl_sf_result * result); double gsl_sf_gamma_inc_P(const double a, const double x); + + + /* Non-normalized Incomplete Gamma Function + * + * Gamma(a,x) := Integral[ t^(a-1) e^(-t), {t,x,Infinity} ] + * + * x >= 0.0 + * Gamma(a, 0) := Gamma(a) + * + * exceptions: GSL_EDOM + */ + int gsl_sf_gamma_inc_e(const double a, const double x, gsl_sf_result * result); + double gsl_sf_gamma_inc(const double a, const double x); diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_legendre.h gsl-1.4/specfunc/gsl_sf_legendre.h *** gsl-1.3/specfunc/gsl_sf_legendre.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_sf_legendre.h Fri Jul 25 15:18:22 2003 *************** *** 182,186 **** */ int gsl_sf_legendre_sphPlm_deriv_array( ! const int lmax, int m, const double x, double * result_array, double * result_deriv_array --- 182,186 ---- */ int gsl_sf_legendre_sphPlm_deriv_array( ! const int lmax, const int m, const double x, double * result_array, double * result_deriv_array *************** *** 312,316 **** ! #ifdef HAVE_INLINE extern inline int --- 312,316 ---- ! #if HAVE_INLINE extern inline int diff -x.info* -rc2P gsl-1.3/specfunc/gsl_sf_log.h gsl-1.4/specfunc/gsl_sf_log.h *** gsl-1.3/specfunc/gsl_sf_log.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_sf_log.h Fri Jul 25 15:18:22 2003 *************** *** 79,83 **** ! #ifdef HAVE_INLINE extern inline int --- 79,83 ---- ! #if HAVE_INLINE extern inline int diff -x.info* -rc2P gsl-1.3/specfunc/gsl_specfunc.h gsl-1.4/specfunc/gsl_specfunc.h *** gsl-1.3/specfunc/gsl_specfunc.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/specfunc/gsl_specfunc.h Fri Jul 25 15:18:22 2003 *************** *** 1,5 **** /* Author: G. Jungman */ ! /* Convenience header */ #ifndef __GSL_SPECFUNC_H__ --- 1,5 ---- /* Author: G. Jungman */ ! /* Convenience header */ #ifndef __GSL_SPECFUNC_H__ diff -x.info* -rc2P gsl-1.3/specfunc/hyperg.c gsl-1.4/specfunc/hyperg.c *** gsl-1.3/specfunc/hyperg.c Mon Nov 19 21:39:27 2001 --- gsl-1.4/specfunc/hyperg.c Fri Jul 25 15:18:15 2003 *************** *** 122,127 **** gsl_sf_hyperg_U_large_b_e(const double a, const double b, const double x, gsl_sf_result * result, ! double * ln_multiplier ! ) { double N = floor(b); /* b = N + eps */ --- 122,127 ---- gsl_sf_hyperg_U_large_b_e(const double a, const double b, const double x, gsl_sf_result * result, ! double * ln_multiplier ! ) { double N = floor(b); /* b = N + eps */ diff -x.info* -rc2P gsl-1.3/specfunc/hyperg_0F1.c gsl-1.4/specfunc/hyperg_0F1.c *** gsl-1.3/specfunc/hyperg_0F1.c Mon Nov 19 21:39:27 2001 --- gsl-1.4/specfunc/hyperg_0F1.c Fri Jul 25 15:18:15 2003 *************** *** 133,137 **** return gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, sgn*Jcm1.val, Jcm1.err, ! result); } } --- 133,137 ---- return gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, sgn*Jcm1.val, Jcm1.err, ! result); } } *************** *** 163,167 **** return gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, sgn*Icm1.val, Icm1.err, ! result); } } --- 163,167 ---- return gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, sgn*Icm1.val, Icm1.err, ! result); } } diff -x.info* -rc2P gsl-1.3/specfunc/hyperg_1F1.c gsl-1.4/specfunc/hyperg_1F1.c *** gsl-1.3/specfunc/hyperg_1F1.c Tue Dec 18 21:56:39 2001 --- gsl-1.4/specfunc/hyperg_1F1.c Fri Jul 25 15:18:15 2003 *************** *** 709,714 **** Mbm1 = ((x+bp-1.0)*Mb - x*(bp-a)/bp*Mbp1)/(bp-1.0); bp -= 1.0; ! Mbp1 = Mb; ! Mb = Mbm1; } result->val = Mb; --- 709,714 ---- Mbm1 = ((x+bp-1.0)*Mb - x*(bp-a)/bp*Mbp1)/(bp-1.0); bp -= 1.0; ! Mbp1 = Mb; ! Mb = Mbm1; } result->val = Mb; *************** *** 818,823 **** double lnpre_err = lg.err + GSL_DBL_EPSILON * (fabs(ln_term) + fabs(x)); int stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, ! I.val, I.err, ! result); return GSL_ERROR_SELECT_3(stat_e, stat_g, stat_I); } --- 818,823 ---- double lnpre_err = lg.err + GSL_DBL_EPSILON * (fabs(ln_term) + fabs(x)); int stat_e = gsl_sf_exp_mult_err_e(lnpre_val, lnpre_err, ! I.val, I.err, ! result); return GSL_ERROR_SELECT_3(stat_e, stat_g, stat_I); } *************** *** 891,896 **** int stat_K = gsl_sf_exprel_n_e(a, -x, &K); /* 1F1(1,1+a,-x) */ int stat_e = gsl_sf_exp_mult_err_e(x, 2.0 * GSL_DBL_EPSILON * fabs(x), ! K.val, K.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } --- 891,896 ---- int stat_K = gsl_sf_exprel_n_e(a, -x, &K); /* 1F1(1,1+a,-x) */ int stat_e = gsl_sf_exp_mult_err_e(x, 2.0 * GSL_DBL_EPSILON * fabs(x), ! K.val, K.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } *************** *** 919,923 **** else if( ( b < 10 && a < 10 && ax < 5.0 ) || ( b > a*ax ) ! || ( b > a && ax < 5.0 ) ) { return gsl_sf_hyperg_1F1_series_e(a, b, x, result); --- 919,923 ---- else if( ( b < 10 && a < 10 && ax < 5.0 ) || ( b > a*ax ) ! || ( b > a && ax < 5.0 ) ) { return gsl_sf_hyperg_1F1_series_e(a, b, x, result); *************** *** 931,938 **** int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); double ra = 1.0 + x/a * rap; ! double Ma = GSL_SQRT_DBL_MIN; double Map1 = ra * Ma; double Mnp1 = Map1; ! double Mn = Ma; double Mnm1; int n; --- 931,938 ---- int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); double ra = 1.0 + x/a * rap; ! double Ma = GSL_SQRT_DBL_MIN; double Map1 = ra * Ma; double Mnp1 = Map1; ! double Mn = Ma; double Mnm1; int n; *************** *** 962,966 **** double Map1 = ra * Ma; double Mnm1 = Ma; ! double Mn = Map1; double Mnp1; int n; --- 962,966 ---- double Map1 = ra * Ma; double Mnm1 = Ma; ! double Mn = Map1; double Mnp1; int n; *************** *** 987,993 **** double ex = exp(x); int n; ! double Mnm1 = ex; /* 1F1(b,b,x) */ ! double Mn = ex * (1.0 + x/b); /* 1F1(b+1,b,x) */ ! double Mnp1; for(n=b+1; nval = Mn; ! result->err = (x + 1.0) * GSL_DBL_EPSILON * fabs(Mn); ! result->err *= fabs(a-b)+1.0; return GSL_SUCCESS; } --- 996,1001 ---- } result->val = Mn; ! result->err = (x + 1.0) * GSL_DBL_EPSILON * fabs(Mn); ! result->err *= fabs(a-b)+1.0; return GSL_SUCCESS; } *************** *** 1015,1019 **** gsl_sf_result r_Mn; double Mnm1 = 1.0; /* 1F1(0,b,x) */ ! double Mn; /* 1F1(1,b,x) */ double Mnp1; int n; --- 1015,1019 ---- gsl_sf_result r_Mn; double Mnm1 = 1.0; /* 1F1(0,b,x) */ ! double Mn; /* 1F1(1,b,x) */ double Mnp1; int n; *************** *** 1022,1027 **** for(n=1; nval = Mn; --- 1022,1027 ---- for(n=1; nval = Mn; *************** *** 1072,1086 **** { double ex = exp(x); ! double Ma0np1 = ex; ! double Ma0n = ex * (1.0 + x/(a0-1.0)); ! double Ma0nm1; ! for(n=a0-1; n>b; n--) { ! Ma0nm1 = (-n*(1-n-x)*Ma0n - x*(n-a0)*Ma0np1)/(n*(n-1.0)); ! Ma0np1 = Ma0n; ! Ma0n = Ma0nm1; ! } ! Ma0bp1 = Ma0np1; ! Ma0b = Ma0n; ! Ma0p1b = (b*(a0+x)*Ma0b + x*(a0-b)*Ma0bp1)/(a0*b); } --- 1072,1086 ---- { double ex = exp(x); ! double Ma0np1 = ex; ! double Ma0n = ex * (1.0 + x/(a0-1.0)); ! double Ma0nm1; ! for(n=a0-1; n>b; n--) { ! Ma0nm1 = (-n*(1-n-x)*Ma0n - x*(n-a0)*Ma0np1)/(n*(n-1.0)); ! Ma0np1 = Ma0n; ! Ma0n = Ma0nm1; ! } ! Ma0bp1 = Ma0np1; ! Ma0b = Ma0n; ! Ma0p1b = (b*(a0+x)*Ma0b + x*(a0-b)*Ma0bp1)/(a0*b); } *************** *** 1156,1160 **** * * 1F1(-n,b,x) = n!/(b)_n Laguerre[n,b-1,x] ! * = n B(b,n) Laguerre[n,b-1,x] * * assumes b is not a negative integer --- 1156,1160 ---- * * 1F1(-n,b,x) = n!/(b)_n Laguerre[n,b-1,x] ! * = n B(b,n) Laguerre[n,b-1,x] * * assumes b is not a negative integer *************** *** 1238,1243 **** const int stat_U = gsl_sf_hyperg_U_e(-n, b, x, &U); const int stat_e = gsl_sf_exp_mult_err_e(-lnpoch.val, lnpoch.err, ! sgn * sgpoch * U.val, U.err, ! result); return GSL_ERROR_SELECT_3(stat_e, stat_U, stat_p); } --- 1238,1243 ---- const int stat_U = gsl_sf_hyperg_U_e(-n, b, x, &U); const int stat_e = gsl_sf_exp_mult_err_e(-lnpoch.val, lnpoch.err, ! sgn * sgpoch * U.val, U.err, ! result); return GSL_ERROR_SELECT_3(stat_e, stat_U, stat_p); } *************** *** 1268,1273 **** int stat_K = hyperg_1F1_a_negint_poly(b-a, b, -x, &K); int stat_e = gsl_sf_exp_mult_err_e(x, 2.0 * GSL_DBL_EPSILON * fabs(x), ! K.val, K.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } --- 1268,1273 ---- int stat_K = hyperg_1F1_a_negint_poly(b-a, b, -x, &K); int stat_e = gsl_sf_exp_mult_err_e(x, 2.0 * GSL_DBL_EPSILON * fabs(x), ! K.val, K.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } *************** *** 1404,1411 **** double ra = 1.0 + x/a * rap; ! double Ma = GSL_SQRT_DBL_MIN; double Map1 = ra * Ma; double Mnp1 = Map1; ! double Mn = Ma; double Mnm1; gsl_sf_result Mn_true; --- 1404,1411 ---- double ra = 1.0 + x/a * rap; ! double Ma = GSL_SQRT_DBL_MIN; double Map1 = ra * Ma; double Mnp1 = Map1; ! double Mn = Ma; double Mnm1; gsl_sf_result Mn_true; *************** *** 1437,1443 **** int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); double ra = 1.0 + x/a * rap; ! double Ma = GSL_SQRT_DBL_MIN; double Mnm1 = Ma; ! double Mn = ra * Mnm1; double Mnp1; double n; --- 1437,1443 ---- int stat_CF1 = hyperg_1F1_CF1_p_ser(a, b, x, &rap); double ra = 1.0 + x/a * rap; ! double Ma = GSL_SQRT_DBL_MIN; double Mnm1 = Ma; ! double Mn = ra * Mnm1; double Mnp1; double n; *************** *** 1558,1566 **** /* FIXME: this is a nasty little hack; there is some (transient?) instability in this recurrence for some ! values. I can tell when it happens, which is when ! this pair_ratio is large. But I do not know how to ! measure the error in terms of it. I guessed quadratic ! below, but it is probably worse than that. ! */ pair_ratio = start_pair/minim_pair; result->val = Man; --- 1558,1566 ---- /* FIXME: this is a nasty little hack; there is some (transient?) instability in this recurrence for some ! values. I can tell when it happens, which is when ! this pair_ratio is large. But I do not know how to ! measure the error in terms of it. I guessed quadratic ! below, but it is probably worse than that. ! */ pair_ratio = start_pair/minim_pair; result->val = Man; *************** *** 1589,1611 **** double err_rat; { ! gsl_sf_result r_Ma0np1; ! gsl_sf_result r_Ma0n; int stat_0 = hyperg_1F1_beps_bgt0(-epsb, a0+epsb, x, &r_Ma0np1); int stat_1 = hyperg_1F1_beps_bgt0(1.0-epsb, a0+epsb-1.0, x, &r_Ma0n); ! double Ma0np1 = r_Ma0np1.val; ! double Ma0n = r_Ma0n.val; ! double Ma0nm1; ! err_rat = fabs(r_Ma0np1.err/r_Ma0np1.val) + fabs(r_Ma0n.err/r_Ma0n.val); ! for(n=a0+epsb-1.0; n>b+0.1; n -= 1.0) { ! Ma0nm1 = (-n*(1-n-x)*Ma0n - x*(n-a0)*Ma0np1)/(n*(n-1.0)); Ma0np1 = Ma0n; Ma0n = Ma0nm1; } ! Ma0bp1 = Ma0np1; Ma0b = Ma0n; ! Ma0p1b = (b*(a0+x)*Ma0b+x*(a0-b)*Ma0bp1)/(a0*b); /* right-down hook */ ! stat_a0 = GSL_ERROR_SELECT_2(stat_0, stat_1); } --- 1589,1611 ---- double err_rat; { ! gsl_sf_result r_Ma0np1; ! gsl_sf_result r_Ma0n; int stat_0 = hyperg_1F1_beps_bgt0(-epsb, a0+epsb, x, &r_Ma0np1); int stat_1 = hyperg_1F1_beps_bgt0(1.0-epsb, a0+epsb-1.0, x, &r_Ma0n); ! double Ma0np1 = r_Ma0np1.val; ! double Ma0n = r_Ma0n.val; ! double Ma0nm1; ! err_rat = fabs(r_Ma0np1.err/r_Ma0np1.val) + fabs(r_Ma0n.err/r_Ma0n.val); ! for(n=a0+epsb-1.0; n>b+0.1; n -= 1.0) { ! Ma0nm1 = (-n*(1-n-x)*Ma0n - x*(n-a0)*Ma0np1)/(n*(n-1.0)); Ma0np1 = Ma0n; Ma0n = Ma0nm1; } ! Ma0bp1 = Ma0np1; Ma0b = Ma0n; ! Ma0p1b = (b*(a0+x)*Ma0b+x*(a0-b)*Ma0bp1)/(a0*b); /* right-down hook */ ! stat_a0 = GSL_ERROR_SELECT_2(stat_0, stat_1); } *************** *** 1838,1843 **** gsl_sf_result hx; int stat_hx = gsl_sf_exp_mult_err_e(lnab, GSL_DBL_EPSILON * fabs(lnab), ! sa * sb * exm1.val, exm1.err, ! &hx); result->val = (hx.val == GSL_DBL_MAX ? hx.val : 1.0 + hx.val); /* FIXME: excessive paranoia ? what is DBL_MAX+1 ?*/ result->err = hx.err; --- 1838,1843 ---- gsl_sf_result hx; int stat_hx = gsl_sf_exp_mult_err_e(lnab, GSL_DBL_EPSILON * fabs(lnab), ! sa * sb * exm1.val, exm1.err, ! &hx); result->val = (hx.val == GSL_DBL_MAX ? hx.val : 1.0 + hx.val); /* FIXME: excessive paranoia ? what is DBL_MAX+1 ?*/ result->err = hx.err; *************** *** 1852,1856 **** int stat_m = gsl_sf_multiply_err_e(m_arg, 2.0 * GSL_DBL_EPSILON * m_arg, 0.5*F_renorm.val, 0.5*F_renorm.err, ! result); return GSL_ERROR_SELECT_2(stat_m, stat_F); } --- 1852,1856 ---- int stat_m = gsl_sf_multiply_err_e(m_arg, 2.0 * GSL_DBL_EPSILON * m_arg, 0.5*F_renorm.val, 0.5*F_renorm.err, ! result); return GSL_ERROR_SELECT_2(stat_m, stat_F); } *************** *** 1884,1889 **** int stat_K = hyperg_1F1_a_negint_lag((int)rintbma, b, -x, &Kummer_1F1); int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), ! Kummer_1F1.val, Kummer_1F1.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } --- 1884,1889 ---- int stat_K = hyperg_1F1_a_negint_lag((int)rintbma, b, -x, &Kummer_1F1); int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), ! Kummer_1F1.val, Kummer_1F1.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } *************** *** 1897,1902 **** int stat_K = hyperg_1F1_ab_pos(b-a, b, -x, &Kummer_1F1); int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), ! Kummer_1F1.val, Kummer_1F1.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } --- 1897,1902 ---- int stat_K = hyperg_1F1_ab_pos(b-a, b, -x, &Kummer_1F1); int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), ! Kummer_1F1.val, Kummer_1F1.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } *************** *** 1918,1924 **** if(a < 0.0) { /* Kummer transformed version of safe polynomial. ! * The condition a < 0 is equivalent to b < b-a, ! * which is the condition required for the series ! * to be positive definite here. */ stat_K = hyperg_1F1_a_negint_poly((int)rintbma, b, -x, &K); --- 1918,1924 ---- if(a < 0.0) { /* Kummer transformed version of safe polynomial. ! * The condition a < 0 is equivalent to b < b-a, ! * which is the condition required for the series ! * to be positive definite here. */ stat_K = hyperg_1F1_a_negint_poly((int)rintbma, b, -x, &K); *************** *** 1926,1930 **** else { /* Generic eval for negative integer a. */ ! stat_K = hyperg_1F1_a_negint_lag((int)rintbma, b, -x, &K); } stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), --- 1926,1930 ---- else { /* Generic eval for negative integer a. */ ! stat_K = hyperg_1F1_a_negint_lag((int)rintbma, b, -x, &K); } stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), *************** *** 1939,1944 **** int stat_K = hyperg_1F1_ab_neg(b-a, b, -x, &K); int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), ! K.val, K.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } --- 1939,1944 ---- int stat_K = hyperg_1F1_ab_neg(b-a, b, -x, &K); int stat_e = gsl_sf_exp_mult_err_e(x, GSL_DBL_EPSILON * fabs(x), ! K.val, K.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_K); } *************** *** 1972,1980 **** if(lnr < GSL_LOG_DBL_MAX) { *result = ex * Kummer_1F1; ! return GSL_SUCCESS; } else { *result = GSL_POSINF; ! GSL_ERROR ("overflow", GSL_EOVRFLW); } } --- 1972,1980 ---- if(lnr < GSL_LOG_DBL_MAX) { *result = ex * Kummer_1F1; ! return GSL_SUCCESS; } else { *result = GSL_POSINF; ! GSL_ERROR ("overflow", GSL_EOVRFLW); } } diff -x.info* -rc2P gsl-1.3/specfunc/hyperg_2F1.c gsl-1.4/specfunc/hyperg_2F1.c *** gsl-1.3/specfunc/hyperg_2F1.c Sun Feb 10 21:22:29 2002 --- gsl-1.4/specfunc/hyperg_2F1.c Fri Jul 25 15:18:15 2003 *************** *** 39,44 **** hyperg_2F1_series(const double a, const double b, const double c, const double x, ! gsl_sf_result * result ! ) { double sum_pos = 1.0; --- 39,44 ---- hyperg_2F1_series(const double a, const double b, const double c, const double x, ! gsl_sf_result * result ! ) { double sum_pos = 1.0; *************** *** 99,103 **** hyperg_2F1_conj_series(const double aR, const double aI, const double c, double x, ! gsl_sf_result * result) { if(c == 0.0) { --- 99,103 ---- hyperg_2F1_conj_series(const double aR, const double aI, const double c, double x, ! gsl_sf_result * result) { if(c == 0.0) { *************** *** 404,428 **** if(stat_ad1 == GSL_SUCCESS && stat_bd1 == GSL_SUCCESS && stat_ad == GSL_SUCCESS) { /* Gamma functions in the denominator are ok. ! * Proceed with evaluation. ! */ ! int i; double sum1 = 1.0; double term = 1.0; double ln_pre1_val = lng_ad.val + lng_c.val + d2*ln_omx - lng_ad1.val - lng_bd1.val; ! double ln_pre1_err = lng_ad.err + lng_c.err + lng_ad1.err + lng_bd1.err + GSL_DBL_EPSILON * fabs(ln_pre1_val); ! int stat_e; /* Do F1 sum. */ for(i=1; ival = 0.0; ! result->err = 0.0; ! GSL_ERROR ("error", GSL_EOVRFLW); } } --- 481,494 ---- if(sum2_val == 0.0) { F2.val = 0.0; ! F2.err = 0.0; } else { stat_e = gsl_sf_exp_mult_err_e(ln_pre2_val, ln_pre2_err, ! sum2_val, sum2_err, ! &F2); if(stat_e == GSL_EOVRFLW) { result->val = 0.0; ! result->err = 0.0; ! GSL_ERROR ("error", GSL_EOVRFLW); } } *************** *** 546,550 **** if(ln_pre1_val < GSL_LOG_DBL_MAX && ln_pre2_val < GSL_LOG_DBL_MAX) { gsl_sf_exp_err_e(ln_pre1_val, ln_pre1_err, &pre1); ! gsl_sf_exp_err_e(ln_pre2_val, ln_pre2_err, &pre2); pre1.val *= sgn1; pre2.val *= sgn2; --- 546,550 ---- if(ln_pre1_val < GSL_LOG_DBL_MAX && ln_pre2_val < GSL_LOG_DBL_MAX) { gsl_sf_exp_err_e(ln_pre1_val, ln_pre1_err, &pre1); ! gsl_sf_exp_err_e(ln_pre2_val, ln_pre2_err, &pre2); pre1.val *= sgn1; pre2.val *= sgn2; *************** *** 561,565 **** pre1.val *= sgn1; pre2.val = 0.0; ! pre2.err = 0.0; } else { --- 561,565 ---- pre1.val *= sgn1; pre2.val = 0.0; ! pre2.err = 0.0; } else { *************** *** 769,774 **** gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, ! gsl_sf_result * result ! ) { const double rinta = floor(a + 0.5); --- 769,774 ---- gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, ! gsl_sf_result * result ! ) { const double rinta = floor(a + 0.5); *************** *** 804,813 **** int stat_F = gsl_sf_hyperg_2F1_e(a-c+1, b-c+1, -c+2, x, &F); double ln_pre_val = g1.val + g2.val - g3.val - g4.val - g5.val; ! double ln_pre_err = g1.err + g2.err + g3.err + g4.err + g5.err; ! double sg = s1 * s2 * s3 * s4 * s5; ! int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, ! sg * F.val, F.err, ! result); ! return GSL_ERROR_SELECT_2(stat_e, stat_F); } } --- 804,813 ---- int stat_F = gsl_sf_hyperg_2F1_e(a-c+1, b-c+1, -c+2, x, &F); double ln_pre_val = g1.val + g2.val - g3.val - g4.val - g5.val; ! double ln_pre_err = g1.err + g2.err + g3.err + g4.err + g5.err; ! double sg = s1 * s2 * s3 * s4 * s5; ! int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, ! sg * F.val, F.err, ! result); ! return GSL_ERROR_SELECT_2(stat_e, stat_F); } } *************** *** 822,826 **** int stat_e = gsl_sf_exp_mult_err_e(-lng.val, lng.err, sgn*F.val, F.err, ! result); return GSL_ERROR_SELECT_3(stat_e, stat_F, stat_g); } --- 822,826 ---- int stat_e = gsl_sf_exp_mult_err_e(-lng.val, lng.err, sgn*F.val, F.err, ! result); return GSL_ERROR_SELECT_3(stat_e, stat_F, stat_g); } *************** *** 831,836 **** gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, ! gsl_sf_result * result ! ) { const double rintc = floor(c + 0.5); --- 831,836 ---- gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, ! gsl_sf_result * result ! ) { const double rintc = floor(c + 0.5); *************** *** 863,871 **** int stat_F = gsl_sf_hyperg_2F1_conj_e(aR-c+1, aI, -c+2, x, &F); double ln_pre_val = 2.0*(g1.val - g2.val) - g3.val; ! double ln_pre_err = 2.0 * (g1.err + g2.err) + g3.err; ! int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, F.val, F.err, result); ! return GSL_ERROR_SELECT_2(stat_e, stat_F); } } --- 863,871 ---- int stat_F = gsl_sf_hyperg_2F1_conj_e(aR-c+1, aI, -c+2, x, &F); double ln_pre_val = 2.0*(g1.val - g2.val) - g3.val; ! double ln_pre_err = 2.0 * (g1.err + g2.err) + g3.err; ! int stat_e = gsl_sf_exp_mult_err_e(ln_pre_val, ln_pre_err, F.val, F.err, result); ! return GSL_ERROR_SELECT_2(stat_e, stat_F); } } diff -x.info* -rc2P gsl-1.3/specfunc/hyperg_U.c gsl-1.4/specfunc/hyperg_U.c *** gsl-1.3/specfunc/hyperg_U.c Mon Nov 19 21:39:27 2001 --- gsl-1.4/specfunc/hyperg_U.c Fri Jul 25 15:18:15 2003 *************** *** 308,314 **** const double mult = (a-b+i)*x/((1.0-b+i)*i); t_val *= mult; ! t_err += t_err * fabs(mult) + fabs(t_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; sum_val += t_val; ! sum_err += t_err; } --- 308,314 ---- const double mult = (a-b+i)*x/((1.0-b+i)*i); t_val *= mult; ! t_err += t_err * fabs(mult) + fabs(t_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; sum_val += t_val; ! sum_err += t_err; } *************** *** 318,339 **** if(stat_gbm1 == GSL_SUCCESS) { gsl_sf_result powx1N; ! int stat_p = gsl_sf_pow_int_e(x, 1-N, &powx1N); double pe_val = powx1N.val * xeps; ! double pe_err = powx1N.err * fabs(xeps) + 2.0 * GSL_DBL_EPSILON * fabs(pe_val); double coeff_val = gbm1.val * gamr.val * pe_val; ! double coeff_err = gbm1.err * fabs(gamr.val * pe_val) + gamr.err * fabs(gbm1.val * pe_val) + fabs(gbm1.val * gamr.val) * pe_err + 2.0 * GSL_DBL_EPSILON * fabs(coeff_val); ! result->val = sum_val * coeff_val; ! result->err = fabs(sum_val) * coeff_err + sum_err * fabs(coeff_val); ! result->err += 2.0 * GSL_DBL_EPSILON * (M+2.0) * fabs(result->val); ! result->err *= 2.0; /* FIXME: fudge factor... why is the error estimate too small? */ ! return stat_p; } else { result->val = 0.0; ! result->err = 0.0; return stat_gbm1; } --- 318,339 ---- if(stat_gbm1 == GSL_SUCCESS) { gsl_sf_result powx1N; ! int stat_p = gsl_sf_pow_int_e(x, 1-N, &powx1N); double pe_val = powx1N.val * xeps; ! double pe_err = powx1N.err * fabs(xeps) + 2.0 * GSL_DBL_EPSILON * fabs(pe_val); double coeff_val = gbm1.val * gamr.val * pe_val; ! double coeff_err = gbm1.err * fabs(gamr.val * pe_val) + gamr.err * fabs(gbm1.val * pe_val) + fabs(gbm1.val * gamr.val) * pe_err + 2.0 * GSL_DBL_EPSILON * fabs(coeff_val); ! result->val = sum_val * coeff_val; ! result->err = fabs(sum_val) * coeff_err + sum_err * fabs(coeff_val); ! result->err += 2.0 * GSL_DBL_EPSILON * (M+2.0) * fabs(result->val); ! result->err *= 2.0; /* FIXME: fudge factor... why is the error estimate too small? */ ! return stat_p; } else { result->val = 0.0; ! result->err = 0.0; return stat_gbm1; } *************** *** 417,422 **** double b0_err = fabs(factor_val * pochaxibeps.val * gamrni.val) * gamrxi1beps.err + fabs(factor_val * pochaxibeps.val * gamrxi1beps.val) * gamrni.err ! + fabs(factor_val * gamrni.val * gamrxi1beps.val) * pochaxibeps.err ! + fabs(pochaxibeps.val * gamrni.val * gamrxi1beps.val) * factor_err + 2.0 * GSL_DBL_EPSILON * fabs(b0_val); --- 417,422 ---- double b0_err = fabs(factor_val * pochaxibeps.val * gamrni.val) * gamrxi1beps.err + fabs(factor_val * pochaxibeps.val * gamrxi1beps.val) * gamrni.err ! + fabs(factor_val * gamrni.val * gamrxi1beps.val) * pochaxibeps.err ! + fabs(pochaxibeps.val * gamrni.val * gamrxi1beps.val) * factor_err + 2.0 * GSL_DBL_EPSILON * fabs(b0_val); *************** *** 443,449 **** double c0_err = fabs(factor_val * pochai.val * gamrni.val * gamri1.val) * c0_t2_err + fabs(factor_val * pochai.val * gamrni.val * c0_t2_val) * gamri1.err ! + fabs(factor_val * pochai.val * gamri1.val * c0_t2_val) * gamrni.err ! + fabs(factor_val * gamrni.val * gamri1.val * c0_t2_val) * pochai.err ! + fabs(pochai.val * gamrni.val * gamri1.val * c0_t2_val) * factor_err + 2.0 * GSL_DBL_EPSILON * fabs(c0_val); /* --- 443,449 ---- double c0_err = fabs(factor_val * pochai.val * gamrni.val * gamri1.val) * c0_t2_err + fabs(factor_val * pochai.val * gamrni.val * c0_t2_val) * gamri1.err ! + fabs(factor_val * pochai.val * gamri1.val * c0_t2_val) * gamrni.err ! + fabs(factor_val * gamrni.val * gamri1.val * c0_t2_val) * pochai.err ! + fabs(pochai.val * gamrni.val * gamri1.val * c0_t2_val) * factor_err + 2.0 * GSL_DBL_EPSILON * fabs(c0_val); /* *************** *** 470,490 **** const double xi = istrt + i; const double xi1 = istrt + i - 1; ! const double tmp = (a-1.0)*(xn+2.0*xi-1.0) + xi*(xi-beps); ! const double b0_multiplier = (a+xi1-beps)*x/((xn+xi1)*(xi-beps)); ! const double c0_multiplier_1 = (a+xi1)*x/((b+xi1)*xi); ! const double c0_multiplier_2 = tmp / (xi*(b+xi1)*(a+xi1-beps)); b0_val *= b0_multiplier; ! b0_err += fabs(b0_multiplier) * b0_err + fabs(b0_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; c0_val = c0_multiplier_1 * c0_val - c0_multiplier_2 * b0_val; ! c0_err = fabs(c0_multiplier_1) * c0_err ! + fabs(c0_multiplier_2) * b0_err ! + fabs(c0_val) * 8.0 * 2.0 * GSL_DBL_EPSILON ! + fabs(b0_val * c0_multiplier_2) * 16.0 * 2.0 * GSL_DBL_EPSILON; t_val = c0_val + xeps1_val*b0_val; ! t_err = c0_err + fabs(xeps1_val)*b0_err; ! t_err += fabs(b0_val*lnx) * dexprl.err; ! t_err += fabs(b0_val)*xeps1_err; ! dchu_val += t_val; ! dchu_err += t_err; if(fabs(t_val) < EPS*fabs(dchu_val)) break; } --- 470,490 ---- const double xi = istrt + i; const double xi1 = istrt + i - 1; ! const double tmp = (a-1.0)*(xn+2.0*xi-1.0) + xi*(xi-beps); ! const double b0_multiplier = (a+xi1-beps)*x/((xn+xi1)*(xi-beps)); ! const double c0_multiplier_1 = (a+xi1)*x/((b+xi1)*xi); ! const double c0_multiplier_2 = tmp / (xi*(b+xi1)*(a+xi1-beps)); b0_val *= b0_multiplier; ! b0_err += fabs(b0_multiplier) * b0_err + fabs(b0_val) * 8.0 * 2.0 * GSL_DBL_EPSILON; c0_val = c0_multiplier_1 * c0_val - c0_multiplier_2 * b0_val; ! c0_err = fabs(c0_multiplier_1) * c0_err ! + fabs(c0_multiplier_2) * b0_err ! + fabs(c0_val) * 8.0 * 2.0 * GSL_DBL_EPSILON ! + fabs(b0_val * c0_multiplier_2) * 16.0 * 2.0 * GSL_DBL_EPSILON; t_val = c0_val + xeps1_val*b0_val; ! t_err = c0_err + fabs(xeps1_val)*b0_err; ! t_err += fabs(b0_val*lnx) * dexprl.err; ! t_err += fabs(b0_val)*xeps1_err; ! dchu_val += t_val; ! dchu_err += t_err; if(fabs(t_val) < EPS*fabs(dchu_val)) break; } *************** *** 518,523 **** double a0_err = fabs(factor_val * pochai.val * dgamrbxi.val / beps) * gamri1.err + fabs(factor_val * pochai.val * gamri1.val / beps) * dgamrbxi.err ! + fabs(factor_val * dgamrbxi.val * gamri1.val / beps) * pochai.err ! + fabs(pochai.val * dgamrbxi.val * gamri1.val / beps) * factor_err + 2.0 * GSL_DBL_EPSILON * fabs(a0_val); stat_all = GSL_ERROR_SELECT_2(stat_all, stat_dgamrbxi); --- 518,523 ---- double a0_err = fabs(factor_val * pochai.val * dgamrbxi.val / beps) * gamri1.err + fabs(factor_val * pochai.val * gamri1.val / beps) * dgamrbxi.err ! + fabs(factor_val * dgamrbxi.val * gamri1.val / beps) * pochai.err ! + fabs(pochai.val * dgamrbxi.val * gamri1.val / beps) * factor_err + 2.0 * GSL_DBL_EPSILON * fabs(a0_val); stat_all = GSL_ERROR_SELECT_2(stat_all, stat_dgamrbxi); *************** *** 532,545 **** double xi = istrt + i; double xi1 = istrt + i - 1; ! double a0_multiplier = (a+xi1)*x/((b+xi1)*xi); ! double b0_multiplier = (a+xi1-beps)*x/((aintb+xi1)*(xi-beps)); a0_val *= a0_multiplier; ! a0_err += fabs(a0_multiplier) * a0_err; b0_val *= b0_multiplier; ! b0_err += fabs(b0_multiplier) * b0_err; t_val = a0_val - b0_val; ! t_err = a0_err + b0_err; dchu_val += t_val; ! dchu_err += t_err; if(fabs(t_val) < EPS*fabs(dchu_val)) break; } --- 532,545 ---- double xi = istrt + i; double xi1 = istrt + i - 1; ! double a0_multiplier = (a+xi1)*x/((b+xi1)*xi); ! double b0_multiplier = (a+xi1-beps)*x/((aintb+xi1)*(xi-beps)); a0_val *= a0_multiplier; ! a0_err += fabs(a0_multiplier) * a0_err; b0_val *= b0_multiplier; ! b0_err += fabs(b0_multiplier) * b0_err; t_val = a0_val - b0_val; ! t_err = a0_err + b0_err; dchu_val += t_val; ! dchu_err += t_err; if(fabs(t_val) < EPS*fabs(dchu_val)) break; } *************** *** 605,610 **** hyperg_U_small_a_bgt0(const double a, const double b, const double x, gsl_sf_result * result, ! double * ln_multiplier ! ) { if(a == 0.0) { --- 605,610 ---- hyperg_U_small_a_bgt0(const double a, const double b, const double x, gsl_sf_result * result, ! double * ln_multiplier ! ) { if(a == 0.0) { *************** *** 806,814 **** if(b < a + 1) { a_target = b-1; ! lnU_target = -a_target*log(x); } else { a_target = 0; ! lnU_target = 0.0; } --- 806,814 ---- if(b < a + 1) { a_target = b-1; ! lnU_target = -a_target*log(x); } else { a_target = 0; ! lnU_target = 0.0; } *************** *** 827,831 **** result->val = 0.0; result->err = 0.0; ! result->e10 = 0; GSL_ERROR ("error", GSL_EZERODIV); } --- 827,831 ---- result->val = 0.0; result->err = 0.0; ! result->e10 = 0; GSL_ERROR ("error", GSL_EZERODIV); } *************** *** 836,841 **** double oUa_err = 2.0 * (fabs(a_target-a) + CF1_count + 1.0) * GSL_DBL_EPSILON * fabs(1.0/Ua); int stat_e = gsl_sf_exp_mult_err_e10_e(lnpre_val, lnpre_err, ! 1.0/Ua, oUa_err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_CF1); } --- 836,841 ---- double oUa_err = 2.0 * (fabs(a_target-a) + CF1_count + 1.0) * GSL_DBL_EPSILON * fabs(1.0/Ua); int stat_e = gsl_sf_exp_mult_err_e10_e(lnpre_val, lnpre_err, ! 1.0/Ua, oUa_err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_CF1); } *************** *** 865,869 **** */ double ru; ! int CF1_count; int stat_CF1 = hyperg_U_CF1(a, b, 0, x, &ru, &CF1_count); double Ua = 1.0; --- 865,869 ---- */ double ru; ! int CF1_count; int stat_CF1 = hyperg_U_CF1(a, b, 0, x, &ru, &CF1_count); double Ua = 1.0; *************** *** 875,882 **** Uap1 = Ua; Ua = Uam1; ! RESCALE_2(Ua,Uap1,scale_factor,scale_count_bck); } Ua1_bck_val = Ua; ! Ua1_bck_err = 2.0 * GSL_DBL_EPSILON * (fabs(a1-a)+CF1_count+1.0) * fabs(Ua); stat_bck = stat_CF1; } --- 875,882 ---- Uap1 = Ua; Ua = Uam1; ! RESCALE_2(Ua,Uap1,scale_factor,scale_count_bck); } Ua1_bck_val = Ua; ! Ua1_bck_err = 2.0 * GSL_DBL_EPSILON * (fabs(a1-a)+CF1_count+1.0) * fabs(Ua); stat_bck = stat_CF1; } *************** *** 884,922 **** if(b == 2*a1 && a1 > 1) { /* This can happen when x is small, which is ! * precisely when we need to be careful with ! * this evaluation. ! */ ! hyperg_lnU_beq2a((double)a1, x, &lm_for); ! Ua1_for_val = 1.0; ! Ua1_for_err = 0.0; stat_for = GSL_SUCCESS; } else if(b == 2*a1 - 1 && a1 > 1) { /* Similar to the above. Happens when x is small. ! * Use ! * U(a,2a-1) = (x U(a,2a) - U(a-1,2(a-1))) / (2a - 2) ! */ ! gsl_sf_result lnU00, lnU12; ! gsl_sf_result U00, U12; ! hyperg_lnU_beq2a(a1-1.0, x, &lnU00); ! hyperg_lnU_beq2a(a1, x, &lnU12); ! if(lnU00.val > lnU12.val) { ! lm_for.val = lnU00.val; ! lm_for.err = lnU00.err; ! U00.val = 1.0; ! U00.err = 0.0; ! gsl_sf_exp_err_e(lnU12.val - lm_for.val, lnU12.err + lm_for.err, &U12); ! } ! else { ! lm_for.val = lnU12.val; ! lm_for.err = lnU12.err; ! U12.val = 1.0; ! U12.err = 0.0; ! gsl_sf_exp_err_e(lnU00.val - lm_for.val, lnU00.err + lm_for.err, &U00); ! } ! Ua1_for_val = (x * U12.val - U00.val) / (2.0*a1 - 2.0); ! Ua1_for_err = (fabs(x)*U12.err + U00.err) / fabs(2.0*a1 - 2.0); ! Ua1_for_err += 2.0 * GSL_DBL_EPSILON * fabs(Ua1_for_val); ! stat_for = GSL_SUCCESS; } else { --- 884,922 ---- if(b == 2*a1 && a1 > 1) { /* This can happen when x is small, which is ! * precisely when we need to be careful with ! * this evaluation. ! */ ! hyperg_lnU_beq2a((double)a1, x, &lm_for); ! Ua1_for_val = 1.0; ! Ua1_for_err = 0.0; stat_for = GSL_SUCCESS; } else if(b == 2*a1 - 1 && a1 > 1) { /* Similar to the above. Happens when x is small. ! * Use ! * U(a,2a-1) = (x U(a,2a) - U(a-1,2(a-1))) / (2a - 2) ! */ ! gsl_sf_result lnU00, lnU12; ! gsl_sf_result U00, U12; ! hyperg_lnU_beq2a(a1-1.0, x, &lnU00); ! hyperg_lnU_beq2a(a1, x, &lnU12); ! if(lnU00.val > lnU12.val) { ! lm_for.val = lnU00.val; ! lm_for.err = lnU00.err; ! U00.val = 1.0; ! U00.err = 0.0; ! gsl_sf_exp_err_e(lnU12.val - lm_for.val, lnU12.err + lm_for.err, &U12); ! } ! else { ! lm_for.val = lnU12.val; ! lm_for.err = lnU12.err; ! U12.val = 1.0; ! U12.err = 0.0; ! gsl_sf_exp_err_e(lnU00.val - lm_for.val, lnU00.err + lm_for.err, &U00); ! } ! Ua1_for_val = (x * U12.val - U00.val) / (2.0*a1 - 2.0); ! Ua1_for_err = (fabs(x)*U12.err + U00.err) / fabs(2.0*a1 - 2.0); ! Ua1_for_err += 2.0 * GSL_DBL_EPSILON * fabs(Ua1_for_val); ! stat_for = GSL_SUCCESS; } else { *************** *** 924,938 **** * absolute normalization. */ ! gsl_sf_result r_Ua; double Uam1 = 1.0; /* U(a0-1,b,x) = U(0,b,x) */ double Ua; double Uap1; int ap; ! double lm_for_local; stat_for = hyperg_U_small_a_bgt0(a0, b, x, &r_Ua, &lm_for_local); /* U(1,b,x) */ ! Ua = r_Ua.val; Uam1 *= exp(-lm_for_local); ! lm_for.val = lm_for_local; ! lm_for.err = 0.0; for(ap=a0; apval = 0.0; ! result->err = 0.0; ! result->e10 = 0; GSL_ERROR ("error", GSL_EZERODIV); } --- 951,956 ---- if(Ua1_bck_val == 0.0) { result->val = 0.0; ! result->err = 0.0; ! result->e10 = 0; GSL_ERROR ("error", GSL_EZERODIV); } *************** *** 961,974 **** else { double lns = (scale_count_for - scale_count_bck)*log(scale_factor); ! double ln_for_val = log(fabs(Ua1_for_val)); ! double ln_for_err = GSL_DBL_EPSILON + fabs(Ua1_for_err/Ua1_for_val); ! double ln_bck_val = log(fabs(Ua1_bck_val)); ! double ln_bck_err = GSL_DBL_EPSILON + fabs(Ua1_bck_err/Ua1_bck_val); double lnr_val = lm_for.val + ln_for_val - ln_bck_val + lns; ! double lnr_err = lm_for.err + ln_for_err + ln_bck_err ! + 2.0 * GSL_DBL_EPSILON * (fabs(lm_for.val) + fabs(ln_for_val) + fabs(ln_bck_val) + fabs(lns)); ! double sgn = GSL_SIGN(Ua1_for_val) * GSL_SIGN(Ua1_bck_val); int stat_e = gsl_sf_exp_err_e10_e(lnr_val, lnr_err, result); ! result->val *= sgn; return GSL_ERROR_SELECT_3(stat_e, stat_bck, stat_for); } --- 961,974 ---- else { double lns = (scale_count_for - scale_count_bck)*log(scale_factor); ! double ln_for_val = log(fabs(Ua1_for_val)); ! double ln_for_err = GSL_DBL_EPSILON + fabs(Ua1_for_err/Ua1_for_val); ! double ln_bck_val = log(fabs(Ua1_bck_val)); ! double ln_bck_err = GSL_DBL_EPSILON + fabs(Ua1_bck_err/Ua1_bck_val); double lnr_val = lm_for.val + ln_for_val - ln_bck_val + lns; ! double lnr_err = lm_for.err + ln_for_err + ln_bck_err ! + 2.0 * GSL_DBL_EPSILON * (fabs(lm_for.val) + fabs(ln_for_val) + fabs(ln_bck_val) + fabs(lns)); ! double sgn = GSL_SIGN(Ua1_for_val) * GSL_SIGN(Ua1_bck_val); int stat_e = gsl_sf_exp_err_e10_e(lnr_val, lnr_err, result); ! result->val *= sgn; return GSL_ERROR_SELECT_3(stat_e, stat_bck, stat_for); } *************** *** 1090,1101 **** gsl_sf_result y; ! double Ubm1 = Ua; /* U(a,b0) */ ! double Ub = (a*(b0-a-1.0)*Uap1 + (a+x)*Ua)/x; /* U(a,b0+1) */ double Ubp1; double bp; for(bp=b0+1.0; bpval = 0.25/M_SQRT2 * sqrt(1.0-x) * (1.0 + 5.0/16.0 * (1.0-x)); ! result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; } else { --- 883,888 ---- double err_amp = GSL_MAX_DBL(1.0, 1.0/(GSL_DBL_EPSILON + fabs(1.0-x))); result->val = 0.25/M_SQRT2 * sqrt(1.0-x) * (1.0 + 5.0/16.0 * (1.0-x)); ! result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; } else { *************** *** 891,900 **** const double c2 = 1.0 - s*s; const double sth = sin(th); ! const double pre = 2.0/(M_PI*sth); stat_K = gsl_sf_ellint_Kcomp_e(s, GSL_MODE_DEFAULT, &K); stat_E = gsl_sf_ellint_Ecomp_e(s, GSL_MODE_DEFAULT, &E); result->val = pre * (E.val - c2 * K.val); ! result->err = pre * (E.err + fabs(c2) * K.err); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); return stat_K; } --- 891,900 ---- const double c2 = 1.0 - s*s; const double sth = sin(th); ! const double pre = 2.0/(M_PI*sth); stat_K = gsl_sf_ellint_Kcomp_e(s, GSL_MODE_DEFAULT, &K); stat_E = gsl_sf_ellint_Ecomp_e(s, GSL_MODE_DEFAULT, &E); result->val = pre * (E.val - c2 * K.val); ! result->err = pre * (E.err + fabs(c2) * K.err); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); return stat_K; } *************** *** 904,909 **** double err_amp = GSL_MAX_DBL(1.0, 1.0/(GSL_DBL_EPSILON + fabs(1.0-x))); result->val = -0.25/M_SQRT2 * sqrt(x-1.0) * (1.0 - 5.0/16.0 * (x-1.0)); ! result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; } else { --- 904,909 ---- double err_amp = GSL_MAX_DBL(1.0, 1.0/(GSL_DBL_EPSILON + fabs(1.0-x))); result->val = -0.25/M_SQRT2 * sqrt(x-1.0) * (1.0 - 5.0/16.0 * (x-1.0)); ! result->err = err_amp * 3.0 * GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; } else { *************** *** 912,921 **** const double t = tanh(0.5*xi); const double sxi = sinh(xi); ! const double pre = 2.0/(M_PI*sxi) * c; stat_K = gsl_sf_ellint_Kcomp_e(t, GSL_MODE_DEFAULT, &K); stat_E = gsl_sf_ellint_Ecomp_e(t, GSL_MODE_DEFAULT, &E); result->val = pre * (E.val - K.val); ! result->err = pre * (E.err + K.err); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); return stat_K; } --- 912,921 ---- const double t = tanh(0.5*xi); const double sxi = sinh(xi); ! const double pre = 2.0/(M_PI*sxi) * c; stat_K = gsl_sf_ellint_Kcomp_e(t, GSL_MODE_DEFAULT, &K); stat_E = gsl_sf_ellint_Ecomp_e(t, GSL_MODE_DEFAULT, &E); result->val = pre * (E.val - K.val); ! result->err = pre * (E.err + K.err); ! result->err += 2.0 * GSL_DBL_EPSILON * fabs(result->val); return stat_K; } *************** *** 924,928 **** else if( (x <= 0.0 && lambda < 1000.0) || (x < 0.1 && lambda < 17.0) ! || (x < 0.2 && lambda < 5.0 ) ) { return conicalP_xlt1_hyperg_A(1.0, lambda, x, result); --- 924,928 ---- else if( (x <= 0.0 && lambda < 1000.0) || (x < 0.1 && lambda < 17.0) ! || (x < 0.2 && lambda < 5.0 ) ) { return conicalP_xlt1_hyperg_A(1.0, lambda, x, result); *************** *** 948,953 **** ); int stat_e = gsl_sf_exp_mult_err_e(lm, 2.0 * GSL_DBL_EPSILON * fabs(lm), ! P.val, P.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_P); } --- 948,953 ---- ); int stat_e = gsl_sf_exp_mult_err_e(lm, 2.0 * GSL_DBL_EPSILON * fabs(lm), ! P.val, P.err, ! result); return GSL_ERROR_SELECT_2(stat_e, stat_P); } *************** *** 967,976 **** double besserr = fabs(V0) * I0.err + fabs(V1) * I1.err + 2.0 * GSL_DBL_EPSILON * fabs(V0 * I0.val) ! + 2.0 * GSL_DBL_EPSILON * fabs(V1 * I1.val); double arg1 = th * lambda; double sqts = sqrt(th/sth); int stat_e = gsl_sf_exp_mult_err_e(arg1, 2.0 * GSL_DBL_EPSILON * fabs(arg1), sqts * bessterm, sqts * besserr, ! result); result->err *= 1.0/sqrt_1mx; return GSL_ERROR_SELECT_3(stat_e, stat_V, stat_I); --- 967,976 ---- double besserr = fabs(V0) * I0.err + fabs(V1) * I1.err + 2.0 * GSL_DBL_EPSILON * fabs(V0 * I0.val) ! + 2.0 * GSL_DBL_EPSILON * fabs(V1 * I1.val); double arg1 = th * lambda; double sqts = sqrt(th/sth); int stat_e = gsl_sf_exp_mult_err_e(arg1, 2.0 * GSL_DBL_EPSILON * fabs(arg1), sqts * bessterm, sqts * besserr, ! result); result->err *= 1.0/sqrt_1mx; return GSL_ERROR_SELECT_3(stat_e, stat_V, stat_I); *************** *** 990,994 **** const double besserr = fabs(V0) * J0.err + fabs(V1) * J1.err + 512.0 * 2.0 * GSL_DBL_EPSILON * fabs(V0 * J0.val) ! + 512.0 * 2.0 * GSL_DBL_EPSILON * fabs(V1 * J1.val) + GSL_DBL_EPSILON * fabs(xi_lam * V0 * J1.val) + GSL_DBL_EPSILON * fabs(xi_lam * V1 * J0.val); --- 990,994 ---- const double besserr = fabs(V0) * J0.err + fabs(V1) * J1.err + 512.0 * 2.0 * GSL_DBL_EPSILON * fabs(V0 * J0.val) ! + 512.0 * 2.0 * GSL_DBL_EPSILON * fabs(V1 * J1.val) + GSL_DBL_EPSILON * fabs(xi_lam * V0 * J1.val) + GSL_DBL_EPSILON * fabs(xi_lam * V1 * J0.val); diff -x.info* -rc2P gsl-1.3/specfunc/legendre_poly.c gsl-1.4/specfunc/legendre_poly.c *** gsl-1.3/specfunc/legendre_poly.c Sat Nov 9 09:48:59 2002 --- gsl-1.4/specfunc/legendre_poly.c Fri Jul 25 15:18:15 2003 *************** *** 211,215 **** double p_ellm2 = 1.0; /* P_0(x) */ ! double p_ellm1 = x; /* P_1(x) */ double p_ell = p_ellm1; int ell; --- 211,215 ---- double p_ellm2 = 1.0; /* P_0(x) */ ! double p_ellm1 = x; /* P_1(x) */ double p_ell = p_ellm1; int ell; *************** *** 456,459 **** --- 456,460 ---- } } + return GSL_SUCCESS; } else *************** *** 463,466 **** --- 464,468 ---- { for(ell = m; ell <= lmax; ell++) result_deriv_array[ell-m] = 0.0; + return GSL_SUCCESS; } else *************** *** 694,697 **** --- 696,700 ---- { for(ell = m; ell <= lmax; ell++) result_deriv_array[ell-m] = 0.0; + return GSL_SUCCESS; } else diff -x.info* -rc2P gsl-1.3/specfunc/poch.c gsl-1.4/specfunc/poch.c *** gsl-1.3/specfunc/poch.c Mon Nov 19 21:39:26 2001 --- gsl-1.4/specfunc/poch.c Fri Jul 25 15:18:15 2003 *************** *** 95,99 **** else { const double bp = ( (a < -0.5) ? 1.0-a-x : a ); ! const int incr = ( (bp < 10.0) ? 11.0-bp : 0 ); const double b = bp + incr; double dpoch1; --- 95,99 ---- else { const double bp = ( (a < -0.5) ? 1.0-a-x : a ); ! const int incr = ( (bp < 10.0) ? 11.0-bp : 0 ); const double b = bp + incr; double dpoch1; *************** *** 123,129 **** /* NTERMS IS TOO BIG, MAYBE D1MACH(3) IS BAD */ /* nterms = 20; */ ! result->val = 0.0; ! result->err = 0.0; ! GSL_ERROR ("error", GSL_ESANITY); } --- 123,129 ---- /* NTERMS IS TOO BIG, MAYBE D1MACH(3) IS BAD */ /* nterms = 20; */ ! result->val = 0.0; ! result->err = 0.0; ! GSL_ERROR ("error", GSL_ESANITY); } diff -x.info* -rc2P gsl-1.3/specfunc/psi.c gsl-1.4/specfunc/psi.c *** gsl-1.3/specfunc/psi.c Tue May 28 20:06:49 2002 --- gsl-1.4/specfunc/psi.c Fri Jul 25 15:18:15 2003 *************** *** 86,100 **** /* Chebyshev fits from SLATEC code for psi(x) ! Series for PSI on the interval 0. to 1.00000D+00 ! with weighted error 2.03E-17 ! log weighted error 16.69 ! significant figures required 16.39 ! decimal places required 17.37 ! ! Series for APSI on the interval 0. to 2.50000D-01 ! with weighted error 5.54E-17 ! log weighted error 16.26 ! significant figures required 14.42 ! decimal places required 16.86 */ --- 86,100 ---- /* Chebyshev fits from SLATEC code for psi(x) ! Series for PSI on the interval 0. to 1.00000D+00 ! with weighted error 2.03E-17 ! log weighted error 16.69 ! significant figures required 16.39 ! decimal places required 17.37 ! ! Series for APSI on the interval 0. to 2.50000D-01 ! with weighted error 5.54E-17 ! log weighted error 16.26 ! significant figures required 14.42 ! decimal places required 16.86 */ *************** *** 266,270 **** static double psi_1_table[PSI_1_TABLE_NMAX+1] = { 0.0, /* Infinity */ /* psi(1,0) */ ! -M_PI*M_PI/6.0, /* psi(1,1) */ 0.644934066848226436472415, /* ... */ 0.394934066848226436472415, --- 266,270 ---- static double psi_1_table[PSI_1_TABLE_NMAX+1] = { 0.0, /* Infinity */ /* psi(1,0) */ ! M_PI*M_PI/6.0, /* psi(1,1) */ 0.644934066848226436472415, /* ... */ 0.394934066848226436472415, *************** *** 420,427 **** else { result->val = log(y) - 0.5/x + result_c.val - M_PI * c/s; ! result->err = M_PI*fabs(x)*GSL_DBL_EPSILON/(s*s); ! result->err += result_c.err; result->err += GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; } } --- 420,427 ---- else { result->val = log(y) - 0.5/x + result_c.val - M_PI * c/s; ! result->err = M_PI*fabs(x)*GSL_DBL_EPSILON/(s*s); ! result->err += result_c.err; result->err += GSL_DBL_EPSILON * fabs(result->val); ! return GSL_SUCCESS; } } *************** *** 501,505 **** const double sum = yi2 * (1.0/12.0 + yi2 * (1.0/120.0 + ! yi2 * (1.0/252.0 + yi2 * (1.0/240.0 + yi2 * (1.0/132.0 + 691.0/32760.0 * yi2))))); --- 501,505 ---- const double sum = yi2 * (1.0/12.0 + yi2 * (1.0/120.0 + ! yi2 * (1.0/252.0 + yi2 * (1.0/240.0 + yi2 * (1.0/132.0 + 691.0/32760.0 * yi2))))); *************** *** 601,605 **** int stat_e = gsl_sf_exp_mult_err_e(ln_nf.val, ln_nf.err, hzeta.val, hzeta.err, ! result); if(GSL_IS_EVEN(n)) result->val = -result->val; return GSL_ERROR_SELECT_3(stat_e, stat_nf, stat_hz); --- 601,605 ---- int stat_e = gsl_sf_exp_mult_err_e(ln_nf.val, ln_nf.err, hzeta.val, hzeta.err, ! result); if(GSL_IS_EVEN(n)) result->val = -result->val; return GSL_ERROR_SELECT_3(stat_e, stat_nf, stat_hz); diff -x.info* -rc2P gsl-1.3/specfunc/recurse.h gsl-1.4/specfunc/recurse.h *** gsl-1.3/specfunc/recurse.h Wed Oct 3 10:56:27 2001 --- gsl-1.4/specfunc/recurse.h Fri Jul 25 15:18:22 2003 *************** *** 36,42 **** const double parameters[], \ const double f_n_min, \ ! const double f_n_min_p1, \ double * f, \ ! double * f_n_max \ ) \ { \ --- 36,42 ---- const double parameters[], \ const double f_n_min, \ ! const double f_n_min_p1, \ double * f, \ ! double * f_n_max \ ) \ { \ *************** *** 76,85 **** #define GEN_RECURSE_BACKWARD_MINIMAL_SIMPLE(func) \ int CONCAT(recurse_backward_minimal_simple, func) ( \ ! const int n_start, \ const int n_max, const int n_min, \ const double parameters[], \ const double f_n_min, \ double * f, \ ! double * f_n_max \ ) \ { \ --- 76,85 ---- #define GEN_RECURSE_BACKWARD_MINIMAL_SIMPLE(func) \ int CONCAT(recurse_backward_minimal_simple, func) ( \ ! const int n_start, \ const int n_max, const int n_min, \ const double parameters[], \ const double f_n_min, \ double * f, \ ! double * f_n_max \ ) \ { \ diff -x.info* -rc2P gsl-1.3/specfunc/shint.c gsl-1.4/specfunc/shint.c *** gsl-1.3/specfunc/shint.c Mon Nov 19 21:39:26 2001 --- gsl-1.4/specfunc/shint.c Fri Jul 25 15:18:15 2003 *************** *** 35,42 **** series for shi on the interval 0.00000e+00 to 1.40625e-01 ! with weighted error 4.67e-20 ! log weighted error 19.33 ! significant figures required 17.07 ! decimal places required 19.75 */ static double shi_data[7] = { --- 35,42 ---- series for shi on the interval 0.00000e+00 to 1.40625e-01 ! with weighted error 4.67e-20 ! log weighted error 19.33 ! significant figures required 17.07 ! decimal places required 19.75 */ static double shi_data[7] = { diff -x.info* -rc2P gsl-1.3/specfunc/sinint.c gsl-1.4/specfunc/sinint.c *** gsl-1.3/specfunc/sinint.c Mon Nov 19 21:39:26 2001 --- gsl-1.4/specfunc/sinint.c Fri Jul 25 15:18:15 2003 *************** *** 37,44 **** /* series for f1 on the interval 2.00000e-02 to 6.25000e-02 ! with weighted error 2.82e-17 ! log weighted error 16.55 ! significant figures required 15.36 ! decimal places required 17.20 */ static double f1_data[20] = { --- 37,44 ---- /* series for f1 on the interval 2.00000e-02 to 6.25000e-02 ! with weighted error 2.82e-17 ! log weighted error 16.55 ! significant figures required 15.36 ! decimal places required 17.20 */ static double f1_data[20] = { *************** *** 74,81 **** series for f2 on the interval 0.00000e+00 to 2.00000e-02 ! with weighted error 4.32e-17 ! log weighted error 16.36 ! significant figures required 14.75 ! decimal places required 17.10 */ static double f2_data[29] = { --- 74,81 ---- series for f2 on the interval 0.00000e+00 to 2.00000e-02 ! with weighted error 4.32e-17 ! log weighted error 16.36 ! significant figures required 14.75 ! decimal places required 17.10 */ static double f2_data[29] = { *************** *** 120,127 **** series for g1 on the interval 2.00000e-02 to 6.25000e-02 ! with weighted error 5.48e-17 ! log weighted error 16.26 ! significant figures required 15.47 ! decimal places required 16.92 */ static double g1_data[21] = { --- 120,127 ---- series for g1 on the interval 2.00000e-02 to 6.25000e-02 ! with weighted error 5.48e-17 ! log weighted error 16.26 ! significant figures required 15.47 ! decimal places required 16.92 */ static double g1_data[21] = { *************** *** 158,165 **** series for g2 on the interval 0.00000e+00 to 2.00000e-02 ! with weighted error 5.01e-17 ! log weighted error 16.30 ! significant figures required 15.12 ! decimal places required 17.07 */ static double g2_data[34] = { --- 158,165 ---- series for g2 on the interval 0.00000e+00 to 2.00000e-02 ! with weighted error 5.01e-17 ! log weighted error 16.30 ! significant figures required 15.12 ! decimal places required 17.07 */ static double g2_data[34] = { *************** *** 257,264 **** series for si on the interval 0.00000e+00 to 1.60000e+01 ! with weighted error 1.22e-17 ! log weighted error 16.91 ! significant figures required 16.37 ! decimal places required 17.45 */ --- 257,264 ---- series for si on the interval 0.00000e+00 to 1.60000e+01 ! with weighted error 1.22e-17 ! log weighted error 16.91 ! significant figures required 16.37 ! decimal places required 17.45 */ *************** *** 287,294 **** /* series for ci on the interval 0.00000e+00 to 1.60000e+01 ! with weighted error 1.94e-18 ! log weighted error 17.71 ! significant figures required 17.74 ! decimal places required 18.27 */ static double ci_data[13] = { --- 287,294 ---- /* series for ci on the interval 0.00000e+00 to 1.60000e+01 ! with weighted error 1.94e-18 ! log weighted error 17.71 ! significant figures required 17.74 ! decimal places required 18.27 */ static double ci_data[13] = { diff -x.info* -rc2P gsl-1.3/specfunc/test_airy.c gsl-1.4/specfunc/test_airy.c *** gsl-1.3/specfunc/test_airy.c Wed Jan 16 17:03:17 2002 --- gsl-1.4/specfunc/test_airy.c Fri Jul 25 15:18:15 2003 *************** *** 52,56 **** TEST_SF(s, gsl_sf_airy_Ai_e, (5.39999999999998, m, &r), 4.272986169411866e-05, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (-5.0, m, &r), 0.3507610090241142, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (0.6999999999999907, m, &r), 0.2795125667681217, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (1.649999999999991, m, &r), 0.2395493001442741, TEST_TOL0, GSL_SUCCESS); --- 52,56 ---- TEST_SF(s, gsl_sf_airy_Ai_e, (5.39999999999998, m, &r), 4.272986169411866e-05, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (-5.0, m, &r), 0.3507610090241142, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (0.6999999999999907, m, &r), 0.2795125667681217, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_scaled_e, (1.649999999999991, m, &r), 0.2395493001442741, TEST_TOL0, GSL_SUCCESS); *************** *** 67,71 **** TEST_SF(s, gsl_sf_airy_Bi_e, (5.39999999999998, m, &r), 1604.476078241272, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (-5.0, m, &r), -0.1383691349016005, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (0.6999999999999907, m, &r), 0.6587080754582302, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (1.649999999999991, m, &r), 0.5346449995597539, TEST_TOL0, GSL_SUCCESS); --- 67,71 ---- TEST_SF(s, gsl_sf_airy_Bi_e, (5.39999999999998, m, &r), 1604.476078241272, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (-5.0, m, &r), -0.1383691349016005, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (0.6999999999999907, m, &r), 0.6587080754582302, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_scaled_e, (1.649999999999991, m, &r), 0.5346449995597539, TEST_TOL0, GSL_SUCCESS); *************** *** 77,81 **** /** derivatives */ ! TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (-5.0, m, &r), 0.3271928185544435, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (-0.5500000000000094, m, &r), -0.1914604987143629, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (0.4999999999999906, m, &r), -0.2249105326646850, TEST_TOL0, GSL_SUCCESS); --- 77,81 ---- /** derivatives */ ! TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (-5.0, m, &r), 0.3271928185544435, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (-0.5500000000000094, m, &r), -0.1914604987143629, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (0.4999999999999906, m, &r), -0.2249105326646850, TEST_TOL0, GSL_SUCCESS); *************** *** 84,88 **** TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (5.199999999999981, m, &r), -0.0001589434526459543, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (-5.0, m, &r), 0.3271928185544435, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (0.5499999999999906, m, &r), -0.2874057279170166, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (1.499999999999991, m, &r), -0.3314199796863637, TEST_TOL0, GSL_SUCCESS); --- 84,88 ---- TEST_SF(s, gsl_sf_airy_Ai_deriv_e, (5.199999999999981, m, &r), -0.0001589434526459543, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (-5.0, m, &r), 0.3271928185544435, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (0.5499999999999906, m, &r), -0.2874057279170166, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (1.499999999999991, m, &r), -0.3314199796863637, TEST_TOL0, GSL_SUCCESS); *************** *** 91,95 **** TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (6.299999999999977, m, &r), -0.4508799189585947, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (-5.0, m, &r), 0.778411773001899, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (-0.5500000000000094, m, &r), 0.5155785358765014, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (0.4999999999999906, m, &r), 0.5445725641405883, TEST_TOL0, GSL_SUCCESS); --- 91,95 ---- TEST_SF(s, gsl_sf_airy_Ai_deriv_scaled_e, (6.299999999999977, m, &r), -0.4508799189585947, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (-5.0, m, &r), 0.778411773001899, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (-0.5500000000000094, m, &r), 0.5155785358765014, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (0.4999999999999906, m, &r), 0.5445725641405883, TEST_TOL0, GSL_SUCCESS); *************** *** 98,102 **** TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (5.199999999999981, m, &r), 2279.748293583233, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (-5.0, m, &r), 0.778411773001899, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (0.5499999999999906, m, &r), 0.4322811281817566, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (1.499999999999991, m, &r), 0.5542307563918037, TEST_TOL0, GSL_SUCCESS); --- 98,102 ---- TEST_SF(s, gsl_sf_airy_Bi_deriv_e, (5.199999999999981, m, &r), 2279.748293583233, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (-5.0, m, &r), 0.778411773001899, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (0.5499999999999906, m, &r), 0.4322811281817566, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (1.499999999999991, m, &r), 0.5542307563918037, TEST_TOL0, GSL_SUCCESS); *************** *** 105,109 **** TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (6.299999999999977, m, &r), 0.8852064139737571, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_zero_Ai_e, (2, &r), -4.087949444130970617, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_zero_Ai_e, (50, &r), -38.02100867725525443, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_zero_Ai_e, (100, &r), -60.45555727411669871, TEST_TOL0, GSL_SUCCESS); --- 105,109 ---- TEST_SF(s, gsl_sf_airy_Bi_deriv_scaled_e, (6.299999999999977, m, &r), 0.8852064139737571, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_airy_zero_Ai_e, (2, &r), -4.087949444130970617, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_zero_Ai_e, (50, &r), -38.02100867725525443, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_airy_zero_Ai_e, (100, &r), -60.45555727411669871, TEST_TOL0, GSL_SUCCESS); diff -x.info* -rc2P gsl-1.3/specfunc/test_bessel.c gsl-1.4/specfunc/test_bessel.c *** gsl-1.3/specfunc/test_bessel.c Sun Jul 7 20:39:32 2002 --- gsl-1.4/specfunc/test_bessel.c Fri Jul 25 15:18:15 2003 *************** *** 51,54 **** --- 51,59 ---- TEST_SF(s, gsl_sf_bessel_Jn_e, (10, 20.0, &r), 0.18648255802394508321, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_bessel_Jn_e, (100, 100.0, &r), 0.09636667329586155967, TEST_TOL0, GSL_SUCCESS); + + /* exercise the BUG#3 problem */ + TEST_SF(s, gsl_sf_bessel_Jn_e, (2, 900.0, &r), -0.019974345269680646400, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jn_e, (2, 15000.0, &r), -0.0020455820181216382666, TEST_TOL4, GSL_SUCCESS); + #ifdef TEST_LARGE TEST_SF(s, gsl_sf_bessel_Jn_e, (0, 1.0e+10, &r), 2.1755917502468917269e-06, TEST_SQRT_TOL0, GSL_SUCCESS); *************** *** 73,76 **** --- 78,83 ---- TEST_SF(s, gsl_sf_bessel_Yn_e, (1000, 4294967296.0, &r), 3.656551321485397501e-06, 2.0e-05, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Yn_e, (2, 15000.0, &r), -0.006185217273358617849, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (1e-10, &r), 0.99999999990000000001, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_bessel_I0_scaled_e, (0.1, &r), 0.90710092578230109640, TEST_TOL0, GSL_SUCCESS); *************** *** 155,158 **** --- 162,169 ---- TEST_SF(s, gsl_sf_bessel_jl_e, (2000, 1048576.0, &r), 7.449384239168568534e-07, TEST_SQRT_TOL0, GSL_SUCCESS); + /* related to BUG#3 problem */ + TEST_SF(s, gsl_sf_bessel_jl_e, (2, 900.0, &r), -0.0011089115568832940086, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_jl_e, (2, 15000.0, &r), -0.00005955592033075750554, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_y0_e, (0.001, &r), -999.99950000004166670, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_bessel_y0_e, ( 1.0, &r), -0.5403023058681397174, TEST_TOL0, GSL_SUCCESS); *************** *** 233,236 **** --- 244,251 ---- TEST_SF(s, gsl_sf_bessel_Jnu_e, (10.0, 100.0, &r), -0.05473217693547201474, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_bessel_Jnu_e, (10.2, 100.0, &r), -0.03548919161046526864, TEST_TOL2, GSL_SUCCESS); + + /* related to BUG#3 problem */ + TEST_SF(s, gsl_sf_bessel_Jnu_e, (2.0, 900.0, &r), -0.019974345269680646400, TEST_TOL4, GSL_SUCCESS); + TEST_SF(s, gsl_sf_bessel_Jnu_e, (2.0, 15000.0, &r), -0.0020455820181216382666, TEST_TOL4, GSL_SUCCESS); TEST_SF(s, gsl_sf_bessel_Ynu_e, (0.0001, 1.0, &r), 0.08813676933044478439, TEST_TOL2, GSL_SUCCESS); diff -x.info* -rc2P gsl-1.3/specfunc/test_dilog.c gsl-1.4/specfunc/test_dilog.c *** gsl-1.3/specfunc/test_dilog.c Wed Oct 3 10:56:26 2001 --- gsl-1.4/specfunc/test_dilog.c Fri Jul 25 15:18:15 2003 *************** *** 61,90 **** -0.20562022409960237363, TEST_TOL1, 0.91597344814458309320, TEST_TOL1, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99999, M_PI/2.0, &r1, &r2), -0.20561329262779687646, TEST_TOL0, 0.91595774018131512060, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.991, M_PI/2.0, &r1, &r2), -0.20250384721077806127, TEST_TOL0, 0.90888544355846447810, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.98, M_PI/2.0, &r1, &r2), -0.19871638377785918403, TEST_TOL2, 0.90020045882981847610, TEST_TOL2, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.95, M_PI/2.0, &r1, &r2), -0.18848636456893572091, TEST_TOL1, 0.87633754133420277830, TEST_TOL1, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.8, M_PI/2.0, &r1, &r2), -0.13980800855429037810, TEST_TOL0, 0.75310609092419884460, TEST_TOL0, ! GSL_SUCCESS); --- 61,90 ---- -0.20562022409960237363, TEST_TOL1, 0.91597344814458309320, TEST_TOL1, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99999, M_PI/2.0, &r1, &r2), -0.20561329262779687646, TEST_TOL0, 0.91595774018131512060, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.991, M_PI/2.0, &r1, &r2), -0.20250384721077806127, TEST_TOL0, 0.90888544355846447810, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.98, M_PI/2.0, &r1, &r2), -0.19871638377785918403, TEST_TOL2, 0.90020045882981847610, TEST_TOL2, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.95, M_PI/2.0, &r1, &r2), -0.18848636456893572091, TEST_TOL1, 0.87633754133420277830, TEST_TOL1, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.8, M_PI/2.0, &r1, &r2), -0.13980800855429037810, TEST_TOL0, 0.75310609092419884460, TEST_TOL0, ! GSL_SUCCESS); *************** *** 92,126 **** -0.05897507442156586346, TEST_TOL0, 0.48722235829452235710, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.01, M_PI/2.0, &r1, &r2), -0.000024999375027776215378, TEST_TOL3, 0.009999888892888684820, TEST_TOL3, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (10.0, M_PI/2.0, &r1, &r2), -3.0596887943287347304, TEST_TOL0, 3.7167814930680685900, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (100.0, M_PI/2.0, &r1, &r2), -11.015004738293824854, TEST_TOL0, 7.2437843013083534970, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/8.0, &r1, &r2), 1.0571539648820244720, TEST_TOL0, 0.7469145254610851318, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/64.0, &r1, &r2), 1.5381800285902999666, TEST_TOL0, 0.1825271634987756651, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.9, 3.0*M_PI/4.0, &r1, &r2), -0.6062840301356530985, TEST_TOL1, 0.4836632833122775721, TEST_TOL1, ! GSL_SUCCESS); return s; --- 92,126 ---- -0.05897507442156586346, TEST_TOL0, 0.48722235829452235710, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.01, M_PI/2.0, &r1, &r2), -0.000024999375027776215378, TEST_TOL3, 0.009999888892888684820, TEST_TOL3, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (10.0, M_PI/2.0, &r1, &r2), -3.0596887943287347304, TEST_TOL0, 3.7167814930680685900, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (100.0, M_PI/2.0, &r1, &r2), -11.015004738293824854, TEST_TOL0, 7.2437843013083534970, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/8.0, &r1, &r2), 1.0571539648820244720, TEST_TOL0, 0.7469145254610851318, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.99, M_PI/64.0, &r1, &r2), 1.5381800285902999666, TEST_TOL0, 0.1825271634987756651, TEST_TOL0, ! GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_dilog_e, (0.9, 3.0*M_PI/4.0, &r1, &r2), -0.6062840301356530985, TEST_TOL1, 0.4836632833122775721, TEST_TOL1, ! GSL_SUCCESS); return s; diff -x.info* -rc2P gsl-1.3/specfunc/test_gamma.c gsl-1.4/specfunc/test_gamma.c *** gsl-1.3/specfunc/test_gamma.c Sat Jan 26 20:03:27 2002 --- gsl-1.4/specfunc/test_gamma.c Sun Jul 27 08:46:39 2003 *************** *** 77,82 **** --- 77,94 ---- TEST_SF(s, gsl_sf_gammastar_e, (1.0e+20, &r), 1.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (1.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (2.0, &r), 1.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (3.0, &r), 0.5, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (4.0, &r), 1.0/6.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (10.0, &r), 1.0/362880.0, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_e, (100.0, &r), 1.0715102881254669232e-156, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gammainv_e, (0.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-1.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-2.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-3.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-4.0, &r), 0.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gammainv_e, (-10.5, &r), -1.0/2.640121820547716316e-07, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gammainv_e, (-11.25, &r), 1.0/6.027393816261931672e-08, TEST_TOL1, GSL_SUCCESS); *************** *** 85,99 **** TEST_SF_2(s, gsl_sf_lngamma_complex_e, (5.0, 2.0, &r1, &r2), 2.7487017561338026749, TEST_TOL0, ! 3.0738434100497007915, TEST_TOL0, GSL_SUCCESS); ! TEST_SF_2(s, gsl_sf_lngamma_complex_e, (100.0, 100.0, &r1, &r2), 315.07804459949331323, TEST_TOL1, ! 2.0821801804113110099, TEST_TOL3, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_lngamma_complex_e, (100.0, -1000.0, &r1, &r2), -882.3920483010362817000, TEST_TOL1, ! -2.1169293725678813270, TEST_TOL3, GSL_SUCCESS); --- 97,111 ---- TEST_SF_2(s, gsl_sf_lngamma_complex_e, (5.0, 2.0, &r1, &r2), 2.7487017561338026749, TEST_TOL0, ! 3.0738434100497007915, TEST_TOL0, GSL_SUCCESS); ! TEST_SF_2(s, gsl_sf_lngamma_complex_e, (100.0, 100.0, &r1, &r2), 315.07804459949331323, TEST_TOL1, ! 2.0821801804113110099, TEST_TOL3, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_lngamma_complex_e, (100.0, -1000.0, &r1, &r2), -882.3920483010362817000, TEST_TOL1, ! -2.1169293725678813270, TEST_TOL3, GSL_SUCCESS); *************** *** 138,143 **** TEST_SF(s, gsl_sf_choose_e, (7,3, &r), 35.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_choose_e, (5,2, &r), 10.0 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_choose_e, (500,200, &r), 5.054949849935532221e+144 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnpoch_e, (5, 1.0/65536.0, &r), 0.000022981557571259389129, TEST_TOL0, GSL_SUCCESS); --- 150,162 ---- TEST_SF(s, gsl_sf_choose_e, (7,3, &r), 35.0 , TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_choose_e, (7,4, &r), 35.0 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_choose_e, (5,2, &r), 10.0 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_choose_e, (5,3, &r), 10.0 , TEST_TOL0, GSL_SUCCESS); ! ! TEST_SF(s, gsl_sf_choose_e, (500,495, &r), 255244687600.0, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_choose_e, (500,5, &r), 255244687600.0, TEST_TOL0, GSL_SUCCESS); ! ! TEST_SF(s, gsl_sf_choose_e, (500,200, &r), 5.054949849935532221e+144 , TEST_TOL5, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_choose_e, (500,300, &r), 5.054949849935532221e+144 , TEST_TOL5, GSL_SUCCESS); TEST_SF(s, gsl_sf_lnpoch_e, (5, 1.0/65536.0, &r), 0.000022981557571259389129, TEST_TOL0, GSL_SUCCESS); *************** *** 175,179 **** /* and the next test is gamma_inc_P(37,35-20*eps) */ TEST_SF(s, gsl_sf_gamma_inc_P_e, (37.0, 3.499999999999999289e+01, &r), 0.3898035054195570860969333039, TEST_TOL2, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 0.001, &r), 0.006312353291139709793, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 1.0, &r), 0.00021960835758555639171, TEST_TOL1, GSL_SUCCESS); --- 194,201 ---- /* and the next test is gamma_inc_P(37,35-20*eps) */ TEST_SF(s, gsl_sf_gamma_inc_P_e, (37.0, 3.499999999999999289e+01, &r), 0.3898035054195570860969333039, TEST_TOL2, GSL_SUCCESS); ! ! /* Regression test Martin Jansche BUG#12 */ ! TEST_SF(s, gsl_sf_gamma_inc_P_e, (10, 1e-16, &r), 2.755731922398588814734648067e-167, TEST_TOL2, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 0.001, &r), 0.006312353291139709793, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_Q_e, (0.001, 1.0, &r), 0.00021960835758555639171, TEST_TOL1, GSL_SUCCESS); *************** *** 188,191 **** --- 210,214 ---- TEST_SF(s, gsl_sf_gamma_inc_Q_e, (1000.0, 2000.0, &r), 6.847349459614753180e-136, TEST_TOL2, GSL_SUCCESS); + /* designed to trap the a-x=1 problem */ TEST_SF(s, gsl_sf_gamma_inc_Q_e, (100, 99.0, &r), 0.5266956696005394, TEST_TOL2, GSL_SUCCESS); *************** *** 193,196 **** --- 216,262 ---- TEST_SF(s, gsl_sf_gamma_inc_P_e, (100, 99.0, &r), 0.4733043303994607, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_gamma_inc_P_e, (200, 199.0, &r), 0.4811585880878718, TEST_TOL2, GSL_SUCCESS); + + + /* non-normalized "Q" function */ + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0/1048576.0, 1.0/1048576.0, &r), 13.285819596290624271, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 1.0/1048576.0, &r), 13.381275128625328858, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 1.0/1048576.0, &r), 1.0485617142715768655e+06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.00001,0.001, &r), 6.3317681434563592142, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.0001,0.001, &r), 6.3338276439767189385, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 0.001, &r), 6.3544709102510843793, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 0.001, &r), 59.763880515942196981, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 0.001, &r), 992.66896046923884234, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-3.5, 0.001, &r), 9.0224404490639003706e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.5, 0.001, &r), 3.0083661558184815656e+30, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 0.1, &r), 1.8249109609418620068, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 0.1, &r), 3.4017693366916154163, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.0, 0.1, &r), 8.9490757483586989181e+08, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.5, 0.1, &r), 2.6967403834226421766e+09, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 1.0, &r), 0.21928612679072766340, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 1.0, &r), 0.17814771178156069019, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 1.0, &r), 0.14849550677592204792, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-2.5, 1.0, &r), 0.096556648631275160264, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 10.0, &r), 3.8302404656316087616e-07, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.001, 10.0, &r), 4.1470562324807320961e-06, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-0.5, 10.0, &r), 1.2609042613241570681e-06, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-1.0, 10.0, &r), 3.8302404656316087616e-07, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-10.5, 10.0, &r), 6.8404927328441566785e-17, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-100.0, 10.0, &r), 4.1238327669858313997e-107, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (-200.0, 10.0, &r), 2.1614091830529343423e-207, TEST_TOL2, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.0, 0.001, &r), 6.3315393641361493320, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.001, 0.001, &r), 6.3087159394864007261, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 1.0, 0.001, &r), 0.99900049983337499167, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 10.0, 0.001, &r), 362880.0, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.0, 1.0, &r), 0.21938393439552027368, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.001, 1.0, &r), 0.21948181320730279613, TEST_TOL1, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 1.0, 1.0, &r), 0.36787944117144232160, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 10.0, 1.0, &r), 362879.95956592242045, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (100.0, 1.0, &r), 9.3326215443944152682e+155, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.0, 100.0, &r), 3.6835977616820321802e-46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 0.001, 100.0, &r), 3.7006367674063550631e-46, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 1.0, 100.0, &r), 3.7200759760208359630e-44, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, ( 10.0, 100.0, &r), 4.0836606309106112723e-26, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_gamma_inc_e, (100.0, 100.0, &r), 4.5421981208626694294e+155, TEST_TOL1, GSL_SUCCESS); diff -x.info* -rc2P gsl-1.3/specfunc/test_hyperg.c gsl-1.4/specfunc/test_hyperg.c *** gsl-1.3/specfunc/test_hyperg.c Sun Jul 7 21:00:30 2002 --- gsl-1.4/specfunc/test_hyperg.c Wed Jul 30 09:30:03 2003 *************** *** 197,201 **** TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -10.1, 1000.0, &r), 2.0942691895502242831e+23, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -100.1, 10.0, &r), 2.6012036337980078062, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1000, -1000.1, 10.0, &r), 22004.341698908631636, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1000, -1000.1, 200.0, &r), 7.066514294896245043e+86, TEST_TOL3, GSL_SUCCESS); TEST_SF(s, gsl_sf_hyperg_1F1_e, (-8.1, -10.1, -10.0, &r), 0.00018469685276347199258, TEST_TOL0, GSL_SUCCESS); --- 197,201 ---- TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -10.1, 1000.0, &r), 2.0942691895502242831e+23, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_hyperg_1F1_e, (-10, -100.1, 10.0, &r), 2.6012036337980078062, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1000, -1000.1, 10.0, &r), 22004.341698908631636, TEST_TOL3, GSL_SUCCESS); TEST_SF(s, gsl_sf_hyperg_1F1_e, (-1000, -1000.1, 200.0, &r), 7.066514294896245043e+86, TEST_TOL3, GSL_SUCCESS); TEST_SF(s, gsl_sf_hyperg_1F1_e, (-8.1, -10.1, -10.0, &r), 0.00018469685276347199258, TEST_TOL0, GSL_SUCCESS); diff -x.info* -rc2P gsl-1.3/specfunc/test_legendre.c gsl-1.4/specfunc/test_legendre.c *** gsl-1.3/specfunc/test_legendre.c Tue Nov 12 22:33:02 2002 --- gsl-1.4/specfunc/test_legendre.c Sun Jul 27 17:21:06 2003 *************** *** 165,171 **** sa = 0; gsl_sf_legendre_Plm_array(100, 5, 0.999, L); ! TEST_SF_VAL(sa, L[0], +0.0, -0.00016883550990916552255, TEST_TOL1); ! TEST_SF_VAL(sa, L[10], +0.0, -30.651334850159821525, TEST_TOL1 ); ! TEST_SF_VAL(sa, L[95], +0.0, -1.9831610803806212189e+09, TEST_TOL1); gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, 0.999)"); s += sa; --- 165,171 ---- sa = 0; gsl_sf_legendre_Plm_array(100, 5, 0.999, L); ! TEST_SF_VAL(sa, L[0], +0.0, -0.00016883550990916552255, TEST_TOL2); ! TEST_SF_VAL(sa, L[10], +0.0, -30.651334850159821525, TEST_TOL2 ); ! TEST_SF_VAL(sa, L[95], +0.0, -1.9831610803806212189e+09, TEST_TOL2); gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, 0.999)"); s += sa; *************** *** 173,179 **** sa = 0; gsl_sf_legendre_Plm_array(100, 5, -0.999, L); ! TEST_SF_VAL(sa, L[0], +0.0, -0.00016883550990916552255, TEST_TOL1); ! TEST_SF_VAL(sa, L[10], +0.0, -30.651334850159821525, TEST_TOL1 ); ! TEST_SF_VAL(sa, L[95], +0.0, 1.9831610803806212189e+09, TEST_TOL1); gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, -0.999)"); s += sa; --- 173,179 ---- sa = 0; gsl_sf_legendre_Plm_array(100, 5, -0.999, L); ! TEST_SF_VAL(sa, L[0], +0.0, -0.00016883550990916552255, TEST_TOL2); ! TEST_SF_VAL(sa, L[10], +0.0, -30.651334850159821525, TEST_TOL2 ); ! TEST_SF_VAL(sa, L[95], +0.0, 1.9831610803806212189e+09, TEST_TOL2); gsl_test(sa, "gsl_sf_legendre_Plm_array(100, 5, -0.999)"); s += sa; *************** *** 246,252 **** sa = 0; gsl_sf_legendre_sphPlm_array(100, 2, 1.0 - 1.0/1125899906842624.0, L); ! TEST_SF_VAL(sa, L[0], +0.0, 6.8616082064776657177e-16, TEST_TOL1); ! TEST_SF_VAL(sa, L[10], +0.0, 4.8543150313086787324e-14, TEST_TOL1); ! TEST_SF_VAL(sa, L[95], +0.0, 8.3138984963650838973e-12, TEST_TOL1); gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 2, 1.0 - 2^(-50))"); s += sa; --- 246,252 ---- sa = 0; gsl_sf_legendre_sphPlm_array(100, 2, 1.0 - 1.0/1125899906842624.0, L); ! TEST_SF_VAL(sa, L[0], +0.0, 6.8616082064776657177e-16, TEST_TOL2); ! TEST_SF_VAL(sa, L[10], +0.0, 4.8543150313086787324e-14, TEST_TOL2); ! TEST_SF_VAL(sa, L[95], +0.0, 8.3138984963650838973e-12, TEST_TOL2); gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 2, 1.0 - 2^(-50))"); s += sa; *************** *** 254,259 **** sa = 0; gsl_sf_legendre_sphPlm_array(100, 2, -1.0 + 1.0/1125899906842624.0, L); ! TEST_SF_VAL(sa, L[0], +0.0, 6.8616082064776657177e-16, TEST_TOL1); ! TEST_SF_VAL(sa, L[95], +0.0, -8.3138984963650838973e-12, TEST_TOL1); gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 2, -1.0 + 2^(-50))"); s += sa; --- 254,259 ---- sa = 0; gsl_sf_legendre_sphPlm_array(100, 2, -1.0 + 1.0/1125899906842624.0, L); ! TEST_SF_VAL(sa, L[0], +0.0, 6.8616082064776657177e-16, TEST_TOL2); ! TEST_SF_VAL(sa, L[95], +0.0, -8.3138984963650838973e-12, TEST_TOL2); gsl_test(sa, "gsl_sf_legendre_sphPlm_array(100, 2, -1.0 + 2^(-50))"); s += sa; *************** *** 311,315 **** TEST_SF_VAL(sa, DL[1], +0.0, 6.2643887625426827113e-22, TEST_TOL1); TEST_SF_VAL(sa, DL[2], +0.0, 1.6482697200734667281e-21, TEST_TOL1); ! TEST_SF_VAL(sa, DL[95], +0.0, 3.9890549466071349506e-15, TEST_TOL1); gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, 1.0 - 2^(-50))"); s += sa; --- 311,315 ---- TEST_SF_VAL(sa, DL[1], +0.0, 6.2643887625426827113e-22, TEST_TOL1); TEST_SF_VAL(sa, DL[2], +0.0, 1.6482697200734667281e-21, TEST_TOL1); ! TEST_SF_VAL(sa, DL[95], +0.0, 3.9890549466071349506e-15, TEST_TOL2); gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, 1.0 - 2^(-50))"); s += sa; *************** *** 319,323 **** TEST_SF_VAL(sa, DL[1], +0.0, 6.2643887625426827113e-22, TEST_TOL1); TEST_SF_VAL(sa, DL[2], +0.0, -1.6482697200734667281e-21, TEST_TOL1); ! TEST_SF_VAL(sa, DL[95], +0.0, 3.9890549466071349506e-15, TEST_TOL1); gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, -1.0 + 2^(-50))"); s += sa; --- 319,323 ---- TEST_SF_VAL(sa, DL[1], +0.0, 6.2643887625426827113e-22, TEST_TOL1); TEST_SF_VAL(sa, DL[2], +0.0, -1.6482697200734667281e-21, TEST_TOL1); ! TEST_SF_VAL(sa, DL[95], +0.0, 3.9890549466071349506e-15, TEST_TOL3); gsl_test(sa, "gsl_sf_legendre_sphPlm_deriv_array(100, 5, -1.0 + 2^(-50))"); s += sa; diff -x.info* -rc2P gsl-1.3/specfunc/test_sf.c gsl-1.4/specfunc/test_sf.c *** gsl-1.3/specfunc/test_sf.c Tue Dec 10 19:56:31 2002 --- gsl-1.4/specfunc/test_sf.c Mon Aug 11 09:02:17 2003 *************** *** 53,61 **** { int s = 0; ! double f = test_sf_frac_diff(val, r.val); ! if(fabs(val - r.val) > 2.0*r.err) s |= TEST_SF_INCONS; ! if(r.err < 0.0) s |= TEST_SF_ERRNEG; ! if(f > tol) s |= TEST_SF_TOLBAD; if(s != 0) { --- 53,74 ---- { int s = 0; ! double f = 0; ! if (gsl_isnan(r.val) || gsl_isnan(val)) ! { ! s = (gsl_isnan(r.val) != gsl_isnan(val)) ? TEST_SF_INCONS : s; ! } ! else if (gsl_isinf(r.val) || gsl_isinf(val)) ! { ! s = (gsl_isinf(r.val) != gsl_isinf(val)) ? TEST_SF_INCONS : s; ! } ! else ! { ! f = test_sf_frac_diff(val, r.val); ! ! if(fabs(val - r.val) > 2.0 * TEST_SIGMA * r.err) s |= TEST_SF_INCONS; ! if(r.err < 0.0) s |= TEST_SF_ERRNEG; ! if(f > TEST_FACTOR * tol) s |= TEST_SF_TOLBAD; ! } if(s != 0) { *************** *** 88,92 **** double f = test_sf_frac_diff(val, rval); ! if(f > tol) s |= TEST_SF_TOLBAD; if(s != 0) { --- 101,105 ---- double f = test_sf_frac_diff(val, rval); ! if(f > TEST_FACTOR * tol) s |= TEST_SF_TOLBAD; if(s != 0) { *************** *** 117,123 **** double f = test_sf_frac_diff(val, r.val); ! if(f > GSL_MAX_DBL(TEST_SNGL,tol)) s |= TEST_SF_INCONS; if(r.err < 0.0) s |= TEST_SF_ERRNEG; ! if(f > tol) s |= TEST_SF_TOLBAD; if(s != 0) { --- 130,136 ---- double f = test_sf_frac_diff(val, r.val); ! if(f > GSL_MAX_DBL(TEST_SNGL, TEST_FACTOR * tol)) s |= TEST_SF_INCONS; if(r.err < 0.0) s |= TEST_SF_ERRNEG; ! if(f > TEST_FACTOR * tol) s |= TEST_SF_TOLBAD; if(s != 0) { *************** *** 294,297 **** --- 307,312 ---- int s = 0; + /* Test 3j */ + TEST_SF(s, gsl_sf_coupling_3j_e, (0, 1, 1, 0, 1, -1, &r), sqrt(1.0/2.0), TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 1, -1, 0, &r), sqrt(1.0/6.0), TEST_TOL0, GSL_SUCCESS); *************** *** 301,304 **** --- 316,339 ---- TEST_SF(s, gsl_sf_coupling_3j_e, (4, 4, 8, 4, -4, 0, &r), 1.0/(3.0*sqrt(70.0)), TEST_TOL2, GSL_SUCCESS); + /* Test 3j error checking */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (-1, 1, 2, 1, -1, 0, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, -1, 2, 1, -1, 0, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, -2, 1, -1, 0, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + + /* Test |m_i|<=j_i */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 2, -1, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 1, -2, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 2, 1, -1, 3, &r), 0, 0, GSL_SUCCESS); + + /* Test triangle condition j1 + j2 >= j, j >= j2 - j1, j>= j1 - j2 */ + + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 1, 3, 1, -1, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (1, 4, 2, 1, -1, 0, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_3j_e, (4, 1, 2, 1, -1, 0, &r), 0, 0, GSL_SUCCESS); + + /* Test 6j */ + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 2, 2, &r), 1.0/6.0, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_coupling_6j_e, (4, 4, 2, 4, 4, 4, &r), -1.0/10.0, TEST_TOL0, GSL_SUCCESS); *************** *** 309,315 **** --- 344,391 ---- TEST_SF(s, gsl_sf_coupling_6j_e, (6, 6, 6, 4, 4, 2, &r), -sqrt(3.0/5.0)/7.0, TEST_TOL0, GSL_SUCCESS); + /* Test 6j error checking */ + + TEST_SF(s, gsl_sf_coupling_6j_e, (-2, 2, 4, 2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, -2, 4, 2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, -4, 2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, -2, 2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, -2, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 2, -2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + + /* Test 6j triangle conditions */ + + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 2, 7, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 2, 7, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 4, 7, 2, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 2, 7, 2, 2, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (2, 7, 4, 2, 2, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_6j_e, (7, 2, 4, 2, 2, 2, &r), 0, 0, GSL_SUCCESS); + + /* Test 9j */ + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 1, 2, &r), -sqrt(1.0/6.0)/10.0, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_coupling_9j_e, (8, 4, 10, 7, 3, 8, 1, 1, 2, &r), sqrt(7.0/3.0)/60.0, TEST_TOL2, GSL_SUCCESS); + /* Test 9j error checking */ + + TEST_SF(s, gsl_sf_coupling_9j_e, (-4, 2, 4, 3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, -2, 4, 3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, -4, 3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, -3, 3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, -3, 2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, -2, 1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, -1, 1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, -1, 2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 1, -2, &r), GSL_NAN, GSL_NAN, GSL_EDOM); + + TEST_SF(s, gsl_sf_coupling_9j_e, (10, 2, 4, 3, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 10, 4, 3, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 10, 3, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 10, 3, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 10, 2, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 10, 1, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 10, 1, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 10, 2, &r), 0, 0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_coupling_9j_e, (4, 2, 4, 3, 3, 2, 1, 1, 10, &r), 0, 0, GSL_SUCCESS); return s; } *************** *** 447,450 **** --- 523,542 ---- TEST_SF(s, gsl_sf_erf_Q_e, (10.0, &r), 7.619853024160526066e-24, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (-20.0, &r), 5.5209483621597631896e-88, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (-10.0, &r), 7.6945986267064193463e-23, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (-1.0, &r), 0.28759997093917836123, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, ( 0.0, &r), 0.79788456080286535588, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, ( 1.0, &r), 1.5251352761609812091, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (10.0, &r), 10.098093233962511963, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (20.0, &r), 20.049753068527850542, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (30.0, &r), 30.033259667433677037, TEST_TOL2, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (50.0, &r), 50.019984031905639809, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (80.0, &r), 80.012496096798234468, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (150.0, &r), 150.00666607420571802, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (300.0, &r), 300.00333325926337415, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (900.0, &r), 900.00111110836764382, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (1001.0, &r), 1001.0009989990049990, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_hazard_e, (2000.0, &r), 2000.0004999997500003, TEST_TOL0, GSL_SUCCESS); + return s; } *************** *** 647,652 **** TEST_SF(s, gsl_sf_expint_E1_scaled_e, (10000.0, &r), 0.000099990001999400239880, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-10000.0, &r), -0.00010002000600240120072, TEST_TOL2, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-1000.0, &r), -0.0010020060241207250807, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-10.0, &r), -0.13147020473410778034, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-1.0, &r), 0.30282511676493393123, TEST_TOL1, GSL_SUCCESS); --- 739,744 ---- TEST_SF(s, gsl_sf_expint_E1_scaled_e, (10000.0, &r), 0.000099990001999400239880, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-10000.0, &r), -0.00010002000600240120072, TEST_TOL3, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-1000.0, &r), -0.0010020060241207250807, TEST_TOL3, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-10.0, &r), -0.13147020473410778034, TEST_TOL1, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (-1.0, &r), 0.30282511676493393123, TEST_TOL1, GSL_SUCCESS); *************** *** 655,660 **** TEST_SF(s, gsl_sf_expint_E2_scaled_e, (0.1, &r), 0.79853574552915483209, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1.0, &r), 0.40365263767680592566, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (10.0, &r), 0.084366660602119181239, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (50.0, &r), 0.019244503494256481735, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (300.0, &r), 0.0033113304187878806691, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1000.0, &r), 0.00099800597611928500004, TEST_TOL0, GSL_SUCCESS); --- 747,752 ---- TEST_SF(s, gsl_sf_expint_E2_scaled_e, (0.1, &r), 0.79853574552915483209, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1.0, &r), 0.40365263767680592566, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (10.0, &r), 0.084366660602119181239, TEST_TOL1, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_expint_E2_scaled_e, (50.0, &r), 0.019244503494256481735, TEST_TOL2, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (300.0, &r), 0.0033113304187878806691, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_expint_E2_scaled_e, (1000.0, &r), 0.00099800597611928500004, TEST_TOL0, GSL_SUCCESS); *************** *** 908,915 **** TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 100.0, 0.5, &r), 161600.000, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (1, 1.0, 1.0, &r), 2.000 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 1.0, 1.0, &r), 11.000 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 1.0, 0.1, &r), -0.4542309376 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 5.0, 1.0, &r), 9.23780e+4 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 100.0, 0.5, &r), 1.5729338392690000e+13, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gegenpoly_n_e, (1000, 100.0, 1.0, &r), 3.3353666135627322e+232, TEST_TOL1, GSL_SUCCESS); --- 1000,1007 ---- TEST_SF(s, gsl_sf_gegenpoly_3_e, ( 100.0, 0.5, &r), 161600.000, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (1, 1.0, 1.0, &r), 2.000 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 1.0, 1.0, &r), 11.000 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 1.0, 0.1, &r), -0.4542309376 , TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 5.0, 1.0, &r), 9.23780e+4 , TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gegenpoly_n_e, (10, 100.0, 0.5, &r), 1.5729338392690000e+13, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_gegenpoly_n_e, (1000, 100.0, 1.0, &r), 3.3353666135627322e+232, TEST_TOL1, GSL_SUCCESS); *************** *** 1128,1152 **** TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, 1.0, &r1, &r2), 0.3465735902799726547, TEST_TOL0, ! 0.7853981633974483096, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, -1.0, &r1, &r2), 0.3465735902799726547, TEST_TOL0, ! -0.7853981633974483096, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, 100.0, &r1, &r2), 4.605220183488258022, TEST_TOL0, ! 1.560796660108231381, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (-1000.0, -1.0, &r1, &r2), 6.907755778981887052, TEST_TOL0, ! -3.1405926539231263718, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (-1.0, 0.0, &r1, &r2), 0.0, TEST_TOL0, ! 3.1415926535897932385, TEST_TOL0, GSL_SUCCESS); --- 1220,1244 ---- TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, 1.0, &r1, &r2), 0.3465735902799726547, TEST_TOL0, ! 0.7853981633974483096, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, -1.0, &r1, &r2), 0.3465735902799726547, TEST_TOL0, ! -0.7853981633974483096, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (1.0, 100.0, &r1, &r2), 4.605220183488258022, TEST_TOL0, ! 1.560796660108231381, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (-1000.0, -1.0, &r1, &r2), 6.907755778981887052, TEST_TOL0, ! -3.1405926539231263718, TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_complex_log_e, (-1.0, 0.0, &r1, &r2), 0.0, TEST_TOL0, ! 3.1415926535897932385, TEST_TOL0, GSL_SUCCESS); *************** *** 1210,1214 **** gsl_sf_result r; int s = 0; ! TEST_SF(s, gsl_sf_psi_int_e, (5, &r), 1.5061176684318004727, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_psi_int_e, (100, &r), 4.600161852738087400, TEST_TOL0, GSL_SUCCESS); --- 1302,1313 ---- gsl_sf_result r; int s = 0; ! ! /* Test values taken 1-4 from gp-pari */ ! ! TEST_SF(s, gsl_sf_psi_int_e, (1, &r), -0.57721566490153286060, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_psi_int_e, (2, &r), 0.42278433509846713939, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_psi_int_e, (3, &r), 0.92278433509846713939, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_psi_int_e, (4, &r), 1.2561176684318004727, TEST_TOL0, GSL_SUCCESS); ! TEST_SF(s, gsl_sf_psi_int_e, (5, &r), 1.5061176684318004727, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_psi_int_e, (100, &r), 4.600161852738087400, TEST_TOL0, GSL_SUCCESS); *************** *** 1234,1237 **** --- 1333,1344 ---- TEST_SF(s, gsl_sf_psi_1piy_e, (-2000.0, &r), 7.600902480375416216, TEST_TOL0, GSL_SUCCESS); + /* Additional test values 1-4 computed using gp-pari and + Abramowitz & Stegun 6.4.6 */ + + TEST_SF(s, gsl_sf_psi_1_int_e, (1, &r), 1.6449340668482264364, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (2, &r), 0.64493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (3, &r), 0.39493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (4, &r), 0.28382295573711532536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_1_int_e, (5, &r), 0.22132295573711532536, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_psi_1_int_e, (100, &r), 0.010050166663333571395, TEST_TOL0, GSL_SUCCESS); *************** *** 1239,1242 **** --- 1346,1359 ---- TEST_SF(s, gsl_sf_psi_1_int_e, (500, &r), 0.0020020013333322666697, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 1, &r), 1.6449340668482264364, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 2, &r), 0.64493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 3, &r), 0.39493406684822643647, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 4, &r), 0.28382295573711532536, TEST_TOL0, GSL_SUCCESS); + + TEST_SF(s, gsl_sf_psi_n_e, (1, 5, &r), 0.22132295573711532536, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 100, &r), 0.010050166663333571395, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 110, &r), 0.009132356622022545705, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (1, 500, &r), 0.0020020013333322666697, TEST_TOL0, GSL_SUCCESS); + TEST_SF(s, gsl_sf_psi_n_e, (3, 5.0, &r), 0.021427828192755075022, TEST_TOL0, GSL_SUCCESS); TEST_SF(s, gsl_sf_psi_n_e, (3, 500.0, &r), 1.6048063999872000683e-08, TEST_TOL0, GSL_SUCCESS); *************** *** 1396,1405 **** TEST_SF_2(s, gsl_sf_polar_to_rect, (10.0, M_PI/6.0, &r1, &r2), (10.0 * sqrt(3) / 2.0), TEST_TOL0, ! (10.0 * 0.5), TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_polar_to_rect, (10.0, -2.0/3.0*M_PI, &r1, &r2), (10.0 * (-0.5)), TEST_TOL1, ! (10.0 * (-sqrt(3.0)/2.0)), TEST_TOL1, GSL_SUCCESS); --- 1513,1522 ---- TEST_SF_2(s, gsl_sf_polar_to_rect, (10.0, M_PI/6.0, &r1, &r2), (10.0 * sqrt(3) / 2.0), TEST_TOL0, ! (10.0 * 0.5), TEST_TOL0, GSL_SUCCESS); TEST_SF_2(s, gsl_sf_polar_to_rect, (10.0, -2.0/3.0*M_PI, &r1, &r2), (10.0 * (-0.5)), TEST_TOL1, ! (10.0 * (-sqrt(3.0)/2.0)), TEST_TOL1, GSL_SUCCESS); diff -x.info* -rc2P gsl-1.3/specfunc/test_sf.h gsl-1.4/specfunc/test_sf.h *** gsl-1.3/specfunc/test_sf.h Wed Sep 11 20:03:33 2002 --- gsl-1.4/specfunc/test_sf.h Mon Aug 11 09:02:51 2003 *************** *** 38,54 **** versions. Turn this value down to 1.0 for development purposes */ #ifndef TEST_FACTOR ! #define TEST_FACTOR 10.0 #endif ! #define TEST_TOL0 (TEST_FACTOR*2.0*GSL_DBL_EPSILON) ! #define TEST_TOL1 (TEST_FACTOR*16.0*GSL_DBL_EPSILON) ! #define TEST_TOL2 (TEST_FACTOR*256.0*GSL_DBL_EPSILON) ! #define TEST_TOL3 (TEST_FACTOR*2048.0*GSL_DBL_EPSILON) ! #define TEST_TOL4 (TEST_FACTOR*16384.0*GSL_DBL_EPSILON) ! #define TEST_TOL5 (TEST_FACTOR*131072.0*GSL_DBL_EPSILON) ! #define TEST_TOL6 (TEST_FACTOR*1048576.0*GSL_DBL_EPSILON) ! #define TEST_SQRT_TOL0 (TEST_FACTOR*2.0*GSL_SQRT_DBL_EPSILON) ! #define TEST_SNGL (TEST_FACTOR*1.0e-06) #define TEST_SF_INCONS 1 --- 38,67 ---- versions. Turn this value down to 1.0 for development purposes */ + #ifndef TEST_FACTOR ! #if RELEASED ! #define TEST_FACTOR 100.0 ! #else ! #define TEST_FACTOR 1.0 ! #endif ! #endif ! ! #ifndef TEST_SIGMA ! #if RELEASED ! #define TEST_SIGMA 1.5 ! #else ! #define TEST_SIGMA 1.0 ! #endif #endif ! #define TEST_TOL0 (2.0*GSL_DBL_EPSILON) ! #define TEST_TOL1 (16.0*GSL_DBL_EPSILON) ! #define TEST_TOL2 (256.0*GSL_DBL_EPSILON) ! #define TEST_TOL3 (2048.0*GSL_DBL_EPSILON) ! #define TEST_TOL4 (16384.0*GSL_DBL_EPSILON) ! #define TEST_TOL5 (131072.0*GSL_DBL_EPSILON) ! #define TEST_TOL6 (1048576.0*GSL_DBL_EPSILON) ! #define TEST_SQRT_TOL0 (2.0*GSL_SQRT_DBL_EPSILON) ! #define TEST_SNGL (1.0e-06) #define TEST_SF_INCONS 1 diff -x.info* -rc2P gsl-1.3/specfunc/trig.c gsl-1.4/specfunc/trig.c *** gsl-1.3/specfunc/trig.c Mon Nov 19 21:39:26 2001 --- gsl-1.4/specfunc/trig.c Fri Jul 25 15:18:16 2003 *************** *** 188,198 **** if(GSL_IS_ODD(octant)) { octant += 1; ! octant &= 07; ! y += 1.0; } if(octant > 3) { octant -= 4; ! sgn_result = -sgn_result; } --- 188,198 ---- if(GSL_IS_ODD(octant)) { octant += 1; ! octant &= 07; ! y += 1.0; } if(octant > 3) { octant -= 4; ! sgn_result = -sgn_result; } *************** *** 201,212 **** if(octant == 0) { gsl_sf_result sin_cs_result; ! const double t = 8.0*fabs(z)/M_PI - 1.0; ! stat_cs = cheb_eval_e(&sin_cs, t, &sin_cs_result); result->val = z * (1.0 + z*z * sin_cs_result.val); } else { /* octant == 2 */ gsl_sf_result cos_cs_result; ! const double t = 8.0*fabs(z)/M_PI - 1.0; ! stat_cs = cheb_eval_e(&cos_cs, t, &cos_cs_result); result->val = 1.0 - 0.5*z*z * (1.0 - z*z * cos_cs_result.val); } --- 201,212 ---- if(octant == 0) { gsl_sf_result sin_cs_result; ! const double t = 8.0*fabs(z)/M_PI - 1.0; ! stat_cs = cheb_eval_e(&sin_cs, t, &sin_cs_result); result->val = z * (1.0 + z*z * sin_cs_result.val); } else { /* octant == 2 */ gsl_sf_result cos_cs_result; ! const double t = 8.0*fabs(z)/M_PI - 1.0; ! stat_cs = cheb_eval_e(&cos_cs, t, &cos_cs_result); result->val = 1.0 - 0.5*z*z * (1.0 - z*z * cos_cs_result.val); } *************** *** 260,270 **** if(GSL_IS_ODD(octant)) { octant += 1; ! octant &= 07; ! y += 1.0; } if(octant > 3) { octant -= 4; ! sgn_result = -sgn_result; } --- 260,270 ---- if(GSL_IS_ODD(octant)) { octant += 1; ! octant &= 07; ! y += 1.0; } if(octant > 3) { octant -= 4; ! sgn_result = -sgn_result; } diff -x.info* -rc2P gsl-1.3/specfunc/zeta.c gsl-1.4/specfunc/zeta.c *** gsl-1.3/specfunc/zeta.c Mon Nov 19 21:39:26 2001 --- gsl-1.4/specfunc/zeta.c Fri Jul 25 15:18:16 2003 *************** *** 457,461 **** 0.25000000000000000000000000000, /* eta(-1) */ -0.12500000000000000000000000000, /* eta(-3) */ ! 0.25000000000000000000000000000, /* ... */ -1.06250000000000000000000000000, 7.75000000000000000000000000000, --- 457,461 ---- 0.25000000000000000000000000000, /* eta(-1) */ -0.12500000000000000000000000000, /* eta(-3) */ ! 0.25000000000000000000000000000, /* ... */ -1.06250000000000000000000000000, 7.75000000000000000000000000000, *************** *** 618,623 **** 5.561367186955830005e+111, 5.333106466365131227e+119, ! 5.114214477385391780e+127, ! 4.904306689854036836e+135 }; const int n = floor((-s)/10.0); --- 618,623 ---- 5.561367186955830005e+111, 5.333106466365131227e+119, ! 5.114214477385391780e+127, ! 4.904306689854036836e+135 }; const int n = floor((-s)/10.0); Only in gsl-1.3: stamp-h.in diff -x.info* -rc2P gsl-1.3/statistics/Makefile.am gsl-1.4/statistics/Makefile.am *** gsl-1.3/statistics/Makefile.am Wed Jun 6 17:10:09 2001 --- gsl-1.4/statistics/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 11,23 **** noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c median_source.c quantiles_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c ! check_PROGRAMS = test test_nist ! TESTS = test test_nist ! test_SOURCES = test.c ! test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! ! ! test_nist_SOURCES = test_nist.c ! test_nist_LDADD = libgslstatistics.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 11,19 ---- noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c median_source.c quantiles_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c ! check_PROGRAMS = test ! TESTS = test ! test_SOURCES = test.c test_nist.c ! test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/statistics/Makefile.in gsl-1.4/statistics/Makefile.in *** gsl-1.3/statistics/Makefile.in Wed Dec 18 22:39:28 2002 --- gsl-1.4/statistics/Makefile.in Thu Aug 14 12:29:52 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,87 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ noinst_LTLIBRARIES = libgslstatistics.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ + ac_ct_AR = @ac_ct_AR@ + ac_ct_CC = @ac_ct_CC@ + ac_ct_RANLIB = @ac_ct_RANLIB@ + ac_ct_STRIP = @ac_ct_STRIP@ + am__leading_dot = @am__leading_dot@ + bindir = @bindir@ + build = @build@ + build_alias = @build_alias@ + build_cpu = @build_cpu@ + build_os = @build_os@ + build_vendor = @build_vendor@ + datadir = @datadir@ + exec_prefix = @exec_prefix@ + host = @host@ + host_alias = @host_alias@ + host_cpu = @host_cpu@ + host_os = @host_os@ + host_vendor = @host_vendor@ + includedir = @includedir@ + infodir = @infodir@ + install_sh = @install_sh@ + libdir = @libdir@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ + sbindir = @sbindir@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ noinst_LTLIBRARIES = libgslstatistics.la *************** *** 95,203 **** noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c median_source.c quantiles_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c ! check_PROGRAMS = test test_nist ! TESTS = test test_nist ! ! test_SOURCES = test.c ! test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_nist_SOURCES = test_nist.c ! test_nist_LDADD = libgslstatistics.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslstatistics_la_LDFLAGS = ! libgslstatistics_la_LIBADD = ! libgslstatistics_la_OBJECTS = mean.lo variance.lo absdev.lo skew.lo \ ! kurtosis.lo lag1.lo p_variance.lo minmax.lo ttest.lo median.lo \ ! covariance.lo quantiles.lo wmean.lo wvariance.lo wabsdev.lo wskew.lo \ ! wkurtosis.lo ! check_PROGRAMS = test$(EXEEXT) test_nist$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslstatistics.la ../sort/libgslsort.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! test_nist_OBJECTS = test_nist.$(OBJEXT) ! test_nist_DEPENDENCIES = libgslstatistics.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ! test_nist_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - TAR = tar - GZIP_ENV = --best - SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) $(test_nist_SOURCES) - OBJECTS = $(libgslstatistics_la_OBJECTS) $(test_OBJECTS) $(test_nist_OBJECTS) - - all: all-redirect .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps statistics/Makefile ! ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 152,244 ---- noinst_HEADERS = mean_source.c variance_source.c covariance_source.c absdev_source.c skew_source.c kurtosis_source.c lag1_source.c p_variance_source.c minmax_source.c ttest_source.c median_source.c quantiles_source.c wmean_source.c wvariance_source.c wabsdev_source.c wskew_source.c wkurtosis_source.c test_float_source.c test_int_source.c ! check_PROGRAMS = test ! TESTS = test ! test_SOURCES = test.c test_nist.c ! test_LDADD = libgslstatistics.la ../sort/libgslsort.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! subdir = statistics ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslstatistics_la_LDFLAGS = ! libgslstatistics_la_LIBADD = ! am_libgslstatistics_la_OBJECTS = mean.lo variance.lo absdev.lo skew.lo \ ! kurtosis.lo lag1.lo p_variance.lo minmax.lo ttest.lo median.lo \ ! covariance.lo quantiles.lo wmean.lo wvariance.lo wabsdev.lo \ ! wskew.lo wkurtosis.lo ! libgslstatistics_la_OBJECTS = $(am_libgslstatistics_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) test_nist.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslstatistics.la ../sort/libgslsort.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO ! SOURCES = $(libgslstatistics_la_SOURCES) $(test_SOURCES) ! all: all-am .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu statistics/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslstatistics.la: $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_DEPENDENCIES) + $(LINK) $(libgslstatistics_la_LDFLAGS) $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 208,348 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslstatistics.la: $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_DEPENDENCIES) ! $(LINK) $(libgslstatistics_la_LDFLAGS) $(libgslstatistics_la_OBJECTS) $(libgslstatistics_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! ! test_nist$(EXEEXT): $(test_nist_OBJECTS) $(test_nist_DEPENDENCIES) ! @rm -f test_nist$(EXEEXT) ! $(LINK) $(test_nist_LDFLAGS) $(test_nist_OBJECTS) $(test_nist_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = statistics distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 249,453 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 351,400 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 456,522 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/statistics/median_source.c gsl-1.4/statistics/median_source.c *** gsl-1.3/statistics/median_source.c Wed Apr 18 21:52:45 2001 --- gsl-1.4/statistics/median_source.c Fri Jul 25 15:18:16 2003 *************** *** 22,26 **** FUNCTION(gsl_stats,median_from_sorted_data) (const BASE sorted_data[], const size_t stride, ! const size_t n) { double median ; --- 22,26 ---- FUNCTION(gsl_stats,median_from_sorted_data) (const BASE sorted_data[], const size_t stride, ! const size_t n) { double median ; diff -x.info* -rc2P gsl-1.3/statistics/minmax_source.c gsl-1.4/statistics/minmax_source.c *** gsl-1.3/statistics/minmax_source.c Wed Apr 18 21:52:45 2001 --- gsl-1.4/statistics/minmax_source.c Fri Jul 25 15:18:16 2003 *************** *** 30,34 **** { if (data[i * stride] > max) ! max = data[i * stride]; } --- 30,34 ---- { if (data[i * stride] > max) ! max = data[i * stride]; } *************** *** 47,51 **** { if (data[i * stride] < min) ! min = data[i * stride]; } --- 47,51 ---- { if (data[i * stride] < min) ! min = data[i * stride]; } *************** *** 66,72 **** { if (data[i * stride] < min) ! min = data[i * stride]; if (data[i * stride] > max) ! max = data[i * stride]; } --- 66,72 ---- { if (data[i * stride] < min) ! min = data[i * stride]; if (data[i * stride] > max) ! max = data[i * stride]; } *************** *** 87,94 **** { if (data[i * stride] > max) ! { ! max = data[i * stride]; ! max_index = i ; ! } } --- 87,94 ---- { if (data[i * stride] > max) ! { ! max = data[i * stride]; ! max_index = i ; ! } } *************** *** 108,115 **** { if (data[i * stride] < min) ! { ! min = data[i * stride]; ! min_index = i ; ! } } --- 108,115 ---- { if (data[i * stride] < min) ! { ! min = data[i * stride]; ! min_index = i ; ! } } diff -x.info* -rc2P gsl-1.3/statistics/test.c gsl-1.4/statistics/test.c *** gsl-1.3/statistics/test.c Tue Jun 12 18:14:24 2001 --- gsl-1.4/statistics/test.c Fri Jul 25 15:18:16 2003 *************** *** 29,32 **** --- 29,34 ---- #include + int test_nist (void); + /* Test program for mean.c. JimDavies 7.96 */ *************** *** 122,125 **** --- 124,129 ---- test_char_func (s1,s2); } + + test_nist(); exit (gsl_test_summary ()); diff -x.info* -rc2P gsl-1.3/statistics/test_float_source.c gsl-1.4/statistics/test_float_source.c *** gsl-1.3/statistics/test_float_source.c Thu May 3 22:00:14 2001 --- gsl-1.4/statistics/test_float_source.c Fri Jul 25 15:18:16 2003 *************** *** 181,185 **** BASE expected = (BASE)0.1331; gsl_test (FUNCTION(gsl_stats,max) (groupa, stridea, na) != expected, ! NAME(gsl_stats) "_max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", FUNCTION(gsl_stats,max) (groupa, stridea, na), expected); } --- 181,185 ---- BASE expected = (BASE)0.1331; gsl_test (FUNCTION(gsl_stats,max) (groupa, stridea, na) != expected, ! NAME(gsl_stats) "_max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", FUNCTION(gsl_stats,max) (groupa, stridea, na), expected); } *************** *** 189,194 **** BASE expected = (BASE)0.0242; gsl_test (min != expected, ! NAME(gsl_stats) "_min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! min, expected); } --- 189,194 ---- BASE expected = (BASE)0.0242; gsl_test (min != expected, ! NAME(gsl_stats) "_min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! min, expected); } *************** *** 201,209 **** gsl_test (max != expected_max, ! NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! max, expected_max); gsl_test (min != expected_min, ! NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! min, expected_min); } --- 201,209 ---- gsl_test (max != expected_max, ! NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! max, expected_max); gsl_test (min != expected_min, ! NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! min, expected_min); } *************** *** 212,217 **** int expected = 4; gsl_test (max_index != expected, ! NAME(gsl_stats) "_max_index (%d observed vs %d expected)", ! max_index, expected); } --- 212,217 ---- int expected = 4; gsl_test (max_index != expected, ! NAME(gsl_stats) "_max_index (%d observed vs %d expected)", ! max_index, expected); } *************** *** 220,225 **** int expected = 3; gsl_test (min_index != expected, ! NAME(gsl_stats) "_min_index (%d observed vs %d expected)", ! min_index, expected); } --- 220,225 ---- int expected = 3; gsl_test (min_index != expected, ! NAME(gsl_stats) "_min_index (%d observed vs %d expected)", ! min_index, expected); } *************** *** 232,240 **** gsl_test (max_index != expected_max_index, ! NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", ! max_index, expected_max_index); gsl_test (min_index != expected_min_index, ! NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", ! min_index, expected_min_index); } --- 232,240 ---- gsl_test (max_index != expected_max_index, ! NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", ! max_index, expected_max_index); gsl_test (min_index != expected_min_index, ! NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", ! min_index, expected_min_index); } *************** *** 251,255 **** double expected = 0.07505; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data (even)"); } --- 251,255 ---- double expected = 0.07505; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data (even)"); } *************** *** 258,262 **** double expected = 0.0728; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data"); } --- 258,262 ---- double expected = 0.0728; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data"); } *************** *** 266,270 **** double expected = 0.0242; gsl_test_rel (zeroth,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (0)"); } --- 266,270 ---- double expected = 0.0242; gsl_test_rel (zeroth,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (0)"); } *************** *** 273,277 **** double expected = 0.1331; gsl_test_rel (top,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (100)"); } --- 273,277 ---- double expected = 0.1331; gsl_test_rel (top,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (100)"); } *************** *** 280,284 **** double expected = 0.07505; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50even)"); } --- 280,284 ---- double expected = 0.07505; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50even)"); } *************** *** 287,291 **** double expected = 0.0728; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50odd)"); } --- 287,291 ---- double expected = 0.0728; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50odd)"); } diff -x.info* -rc2P gsl-1.3/statistics/test_int_source.c gsl-1.4/statistics/test_int_source.c *** gsl-1.3/statistics/test_int_source.c Wed Apr 18 21:52:45 2001 --- gsl-1.4/statistics/test_int_source.c Fri Jul 25 15:18:16 2003 *************** *** 139,143 **** int expected = 22; gsl_test (max != expected, ! NAME(gsl_stats) "_max (%d observed vs %d expected)", max, expected); } --- 139,143 ---- int expected = 22; gsl_test (max != expected, ! NAME(gsl_stats) "_max (%d observed vs %d expected)", max, expected); } *************** *** 146,150 **** int expected = 8; gsl_test (min != expected, ! NAME(gsl_stats) "_min (%d observed vs %d expected)", min, expected); } --- 146,150 ---- int expected = 8; gsl_test (min != expected, ! NAME(gsl_stats) "_min (%d observed vs %d expected)", min, expected); } *************** *** 157,165 **** gsl_test (max != expected_max, ! NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! max, expected_max); gsl_test (min != expected_min, ! NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! min, expected_min); } --- 157,165 ---- gsl_test (max != expected_max, ! NAME(gsl_stats) "_minmax max (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! max, expected_max); gsl_test (min != expected_min, ! NAME(gsl_stats) "_minmax min (" OUT_FORMAT " observed vs " OUT_FORMAT " expected)", ! min, expected_min); } *************** *** 168,173 **** int expected = 9 ; gsl_test (max_index != expected, ! NAME(gsl_stats) "_max_index (%d observed vs %d expected)", ! max_index, expected); } --- 168,173 ---- int expected = 9 ; gsl_test (max_index != expected, ! NAME(gsl_stats) "_max_index (%d observed vs %d expected)", ! max_index, expected); } *************** *** 176,181 **** int expected = 12 ; gsl_test (min_index != expected, ! NAME(gsl_stats) "_min_index (%d observed vs %d expected)", ! min_index, expected); } --- 176,181 ---- int expected = 12 ; gsl_test (min_index != expected, ! NAME(gsl_stats) "_min_index (%d observed vs %d expected)", ! min_index, expected); } *************** *** 188,196 **** gsl_test (max_index != expected_max_index, ! NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", ! max_index, expected_max_index); gsl_test (min_index != expected_min_index, ! NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", ! min_index, expected_min_index); } --- 188,196 ---- gsl_test (max_index != expected_max_index, ! NAME(gsl_stats) "_minmax_index max (%u observed vs %u expected)", ! max_index, expected_max_index); gsl_test (min_index != expected_min_index, ! NAME(gsl_stats) "_minmax_index min (%u observed vs %u expected)", ! min_index, expected_min_index); } *************** *** 208,212 **** double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data (even)"); } --- 208,212 ---- double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data (even)"); } *************** *** 215,219 **** double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data (odd)"); } --- 215,219 ---- double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_median_from_sorted_data (odd)"); } *************** *** 223,227 **** double expected = 8; gsl_test_rel (zeroth,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (0)"); } --- 223,227 ---- double expected = 8; gsl_test_rel (zeroth,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (0)"); } *************** *** 230,234 **** double expected = 22; gsl_test_rel (top,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (100)"); } --- 230,234 ---- double expected = 22; gsl_test_rel (top,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (100)"); } *************** *** 237,241 **** double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50, even)"); } --- 237,241 ---- double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50, even)"); } *************** *** 244,248 **** double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50, odd)"); } --- 244,248 ---- double expected = 18; gsl_test_rel (median,expected, rel, ! NAME(gsl_stats) "_quantile_from_sorted_data (50, odd)"); } diff -x.info* -rc2P gsl-1.3/statistics/test_nist.c gsl-1.4/statistics/test_nist.c *** gsl-1.3/statistics/test_nist.c Tue Jun 12 18:14:24 2001 --- gsl-1.4/statistics/test_nist.c Fri Jul 25 15:18:16 2003 *************** *** 31,35 **** int ! main (void) { size_t i ; --- 31,35 ---- int ! test_nist (void) { size_t i ; *************** *** 493,498 **** } ! ! exit (gsl_test_summary ()); } --- 493,497 ---- } ! return 0; } diff -x.info* -rc2P gsl-1.3/sum/Makefile.am gsl-1.4/sum/Makefile.am *** gsl-1.3/sum/Makefile.am Wed Jun 6 17:10:09 2001 --- gsl-1.4/sum/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 11,15 **** check_PROGRAMS = test ! test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 11,15 ---- check_PROGRAMS = test ! test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/sum/Makefile.in gsl-1.4/sum/Makefile.in *** gsl-1.3/sum/Makefile.in Wed Dec 18 22:39:42 2002 --- gsl-1.4/sum/Makefile.in Thu Aug 14 12:29:44 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslsum.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslsum.la *************** *** 97,193 **** check_PROGRAMS = test ! test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslsum_la_LDFLAGS = ! libgslsum_la_LIBADD = ! libgslsum_la_OBJECTS = levin_u.lo levin_utrunc.lo work_u.lo \ ! work_utrunc.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslsum.la ../ieee-utils/libgslieeeutils.la \ ! ../sys/libgslsys.la ../err/libgslerr.la ../test/libgsltest.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslsum_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps sum/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 153,240 ---- check_PROGRAMS = test ! test_LDADD = libgslsum.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c + subdir = sum + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslsum_la_LDFLAGS = ! libgslsum_la_LIBADD = ! am_libgslsum_la_OBJECTS = levin_u.lo levin_utrunc.lo work_u.lo \ ! work_utrunc.lo ! libgslsum_la_OBJECTS = $(am_libgslsum_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslsum.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgslsum_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu sum/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslsum.la: $(libgslsum_la_OBJECTS) $(libgslsum_la_DEPENDENCIES) + $(LINK) $(libgslsum_la_LDFLAGS) $(libgslsum_la_OBJECTS) $(libgslsum_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 198,334 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslsum.la: $(libgslsum_la_OBJECTS) $(libgslsum_la_DEPENDENCIES) ! $(LINK) $(libgslsum_la_LDFLAGS) $(libgslsum_la_OBJECTS) $(libgslsum_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = sum distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 245,449 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 337,386 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 452,518 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/sum/gsl_sum.h gsl-1.4/sum/gsl_sum.h *** gsl-1.3/sum/gsl_sum.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/sum/gsl_sum.h Fri Jul 25 15:18:23 2003 *************** *** 32,37 **** # define __END_DECLS } #else ! # define __BEGIN_DECLS /* empty */ ! # define __END_DECLS /* empty */ #endif --- 32,37 ---- # define __END_DECLS } #else ! # define __BEGIN_DECLS /* empty */ ! # define __END_DECLS /* empty */ #endif *************** *** 52,57 **** { size_t size; ! size_t i; /* position in array */ ! size_t terms_used; /* number of calls */ double sum_plain; double *q_num; --- 52,57 ---- { size_t size; ! size_t i; /* position in array */ ! size_t terms_used; /* number of calls */ double sum_plain; double *q_num; *************** *** 95,103 **** int gsl_sum_levin_u_minmax (const double *array, ! const size_t n, ! const size_t min_terms, ! const size_t max_terms, ! gsl_sum_levin_u_workspace * w, ! double *sum_accel, double *abserr); /* Basic Levin-u step w/o reference to the array of terms. --- 95,103 ---- int gsl_sum_levin_u_minmax (const double *array, ! const size_t n, ! const size_t min_terms, ! const size_t max_terms, ! gsl_sum_levin_u_workspace * w, ! double *sum_accel, double *abserr); /* Basic Levin-u step w/o reference to the array of terms. *************** *** 115,121 **** int gsl_sum_levin_u_step (const double term, ! const size_t n, ! const size_t nmax, ! gsl_sum_levin_u_workspace * w, double *sum_accel); --- 115,121 ---- int gsl_sum_levin_u_step (const double term, ! const size_t n, ! const size_t nmax, ! gsl_sum_levin_u_workspace * w, double *sum_accel); *************** *** 129,134 **** { size_t size; ! size_t i; /* position in array */ ! size_t terms_used; /* number of calls */ double sum_plain; double *q_num; --- 129,134 ---- { size_t size; ! size_t i; /* position in array */ ! size_t terms_used; /* number of calls */ double sum_plain; double *q_num; *************** *** 147,159 **** int gsl_sum_levin_utrunc_minmax (const double *array, ! const size_t n, ! const size_t min_terms, ! const size_t max_terms, ! gsl_sum_levin_utrunc_workspace * w, ! double *sum_accel, double *abserr_trunc); int gsl_sum_levin_utrunc_step (const double term, ! const size_t n, ! gsl_sum_levin_utrunc_workspace * w, double *sum_accel); --- 147,159 ---- int gsl_sum_levin_utrunc_minmax (const double *array, ! const size_t n, ! const size_t min_terms, ! const size_t max_terms, ! gsl_sum_levin_utrunc_workspace * w, ! double *sum_accel, double *abserr_trunc); int gsl_sum_levin_utrunc_step (const double term, ! const size_t n, ! gsl_sum_levin_utrunc_workspace * w, double *sum_accel); diff -x.info* -rc2P gsl-1.3/sum/levin_u.c gsl-1.4/sum/levin_u.c *** gsl-1.3/sum/levin_u.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/sum/levin_u.c Fri Jul 25 15:18:16 2003 *************** *** 30,41 **** { return gsl_sum_levin_u_minmax (array, array_size, ! 0, array_size - 1, w, sum_accel, abserr); } int gsl_sum_levin_u_minmax (const double *array, const size_t array_size, ! const size_t min_terms, const size_t max_terms, ! gsl_sum_levin_u_workspace * w, ! double *sum_accel, double *abserr) { if (array_size == 0) --- 30,41 ---- { return gsl_sum_levin_u_minmax (array, array_size, ! 0, array_size - 1, w, sum_accel, abserr); } int gsl_sum_levin_u_minmax (const double *array, const size_t array_size, ! const size_t min_terms, const size_t max_terms, ! gsl_sum_levin_u_workspace * w, ! double *sum_accel, double *abserr) { if (array_size == 0) *************** *** 77,85 **** for (n = 0; n < min_terms; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_u_step (t, n, nmax, w, &result_n); ! } least_trunc_result = result_n; --- 77,85 ---- for (n = 0; n < min_terms; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_u_step (t, n, nmax, w, &result_n); ! } least_trunc_result = result_n; *************** *** 87,94 **** variance = 0; for (i = 0; i < n; i++) ! { ! double dn = w->dsum[i] * GSL_MACH_EPS * array[i]; ! variance += dn * dn; ! } noise_n = sqrt (variance); --- 87,94 ---- variance = 0; for (i = 0; i < n; i++) ! { ! double dn = w->dsum[i] * GSL_MACH_EPS * array[i]; ! variance += dn * dn; ! } noise_n = sqrt (variance); *************** *** 97,175 **** for (; n <= nmax; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_u_step (t, n, nmax, w, &result_n); ! /* Compute the truncation error directly */ ! actual_trunc_nm1 = actual_trunc_n; ! actual_trunc_n = fabs (result_n - result_nm1); ! /* Average results to make a more reliable estimate of the ! real truncation error */ ! trunc_nm1 = trunc_n; ! trunc_n = 0.5 * (actual_trunc_n + actual_trunc_nm1); ! noise_nm1 = noise_n; ! variance = 0; ! for (i = 0; i <= n; i++) ! { ! double dn = w->dsum[i] * GSL_MACH_EPS * array[i]; ! variance += dn * dn; ! } ! noise_n = sqrt (variance); ! /* Determine if we are in the convergence region. */ ! better = (trunc_n < trunc_nm1 || trunc_n < SMALL * fabs (result_n)); ! converging = converging || (better && before); ! before = better; ! if (converging) ! { ! if (trunc_n < least_trunc) ! { ! /* Found a low truncation point in the convergence ! region. Save it. */ ! least_trunc_result = result_n; ! least_trunc = trunc_n; ! least_trunc_noise = noise_n; ! } ! if (noise_n > trunc_n / 3.0) ! break; ! if (trunc_n < 10.0 * GSL_MACH_EPS * fabs (result_n)) ! break; ! } ! } if (converging) ! { ! /* Stopped in the convergence region. Return result and ! error estimate. */ ! ! *sum_accel = least_trunc_result; ! *abserr = GSL_MAX_DBL (least_trunc, least_trunc_noise); ! w->terms_used = n; ! return GSL_SUCCESS; ! } else ! { ! /* Never reached the convergence region. Use the last ! calculated values. */ ! ! *sum_accel = result_n; ! *abserr = GSL_MAX_DBL (trunc_n, noise_n); ! w->terms_used = n; ! return GSL_SUCCESS; ! } } } --- 97,175 ---- for (; n <= nmax; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_u_step (t, n, nmax, w, &result_n); ! /* Compute the truncation error directly */ ! actual_trunc_nm1 = actual_trunc_n; ! actual_trunc_n = fabs (result_n - result_nm1); ! /* Average results to make a more reliable estimate of the ! real truncation error */ ! trunc_nm1 = trunc_n; ! trunc_n = 0.5 * (actual_trunc_n + actual_trunc_nm1); ! noise_nm1 = noise_n; ! variance = 0; ! for (i = 0; i <= n; i++) ! { ! double dn = w->dsum[i] * GSL_MACH_EPS * array[i]; ! variance += dn * dn; ! } ! noise_n = sqrt (variance); ! /* Determine if we are in the convergence region. */ ! better = (trunc_n < trunc_nm1 || trunc_n < SMALL * fabs (result_n)); ! converging = converging || (better && before); ! before = better; ! if (converging) ! { ! if (trunc_n < least_trunc) ! { ! /* Found a low truncation point in the convergence ! region. Save it. */ ! least_trunc_result = result_n; ! least_trunc = trunc_n; ! least_trunc_noise = noise_n; ! } ! if (noise_n > trunc_n / 3.0) ! break; ! if (trunc_n < 10.0 * GSL_MACH_EPS * fabs (result_n)) ! break; ! } ! } if (converging) ! { ! /* Stopped in the convergence region. Return result and ! error estimate. */ ! ! *sum_accel = least_trunc_result; ! *abserr = GSL_MAX_DBL (least_trunc, least_trunc_noise); ! w->terms_used = n; ! return GSL_SUCCESS; ! } else ! { ! /* Never reached the convergence region. Use the last ! calculated values. */ ! ! *sum_accel = result_n; ! *abserr = GSL_MAX_DBL (trunc_n, noise_n); ! w->terms_used = n; ! return GSL_SUCCESS; ! } } } *************** *** 178,182 **** int gsl_sum_levin_u_step (const double term, const size_t n, const size_t nmax, ! gsl_sum_levin_u_workspace * w, double *sum_accel) { --- 178,182 ---- int gsl_sum_levin_u_step (const double term, const size_t n, const size_t nmax, ! gsl_sum_levin_u_workspace * w, double *sum_accel) { *************** *** 212,242 **** for (i = 0; i < n; i++) ! { ! w->dq_den[I (i, n)] = 0; ! w->dq_num[I (i, n)] = w->q_den[n]; ! } w->dq_den[I (n, n)] = -w->q_den[n] / term; w->dq_num[I (n, n)] = ! w->q_den[n] + w->sum_plain * (w->dq_den[I (n, n)]); for (j = n - 1; j >= 0; j--) ! { ! double c = factor * (j + 1) / (n + 1); ! factor *= ratio; ! w->q_den[j] = w->q_den[j + 1] - c * w->q_den[j]; ! w->q_num[j] = w->q_num[j + 1] - c * w->q_num[j]; ! ! for (i = 0; i < n; i++) ! { ! w->dq_den[I (i, j)] = ! w->dq_den[I (i, j + 1)] - c * w->dq_den[I (i, j)]; ! w->dq_num[I (i, j)] = ! w->dq_num[I (i, j + 1)] - c * w->dq_num[I (i, j)]; ! } ! ! w->dq_den[I (n, j)] = w->dq_den[I (n, j + 1)]; ! w->dq_num[I (n, j)] = w->dq_num[I (n, j + 1)]; ! } result = w->q_num[0] / w->q_den[0]; --- 212,242 ---- for (i = 0; i < n; i++) ! { ! w->dq_den[I (i, n)] = 0; ! w->dq_num[I (i, n)] = w->q_den[n]; ! } w->dq_den[I (n, n)] = -w->q_den[n] / term; w->dq_num[I (n, n)] = ! w->q_den[n] + w->sum_plain * (w->dq_den[I (n, n)]); for (j = n - 1; j >= 0; j--) ! { ! double c = factor * (j + 1) / (n + 1); ! factor *= ratio; ! w->q_den[j] = w->q_den[j + 1] - c * w->q_den[j]; ! w->q_num[j] = w->q_num[j + 1] - c * w->q_num[j]; ! ! for (i = 0; i < n; i++) ! { ! w->dq_den[I (i, j)] = ! w->dq_den[I (i, j + 1)] - c * w->dq_den[I (i, j)]; ! w->dq_num[I (i, j)] = ! w->dq_num[I (i, j + 1)] - c * w->dq_num[I (i, j)]; ! } ! ! w->dq_den[I (n, j)] = w->dq_den[I (n, j + 1)]; ! w->dq_num[I (n, j)] = w->dq_num[I (n, j + 1)]; ! } result = w->q_num[0] / w->q_den[0]; *************** *** 245,253 **** for (i = 0; i <= n; i++) ! { ! w->dsum[i] = ! (w->dq_num[I (i, 0)] - ! result * w->dq_den[I (i, 0)]) / w->q_den[0]; ! } return GSL_SUCCESS; --- 245,253 ---- for (i = 0; i <= n; i++) ! { ! w->dsum[i] = ! (w->dq_num[I (i, 0)] - ! result * w->dq_den[I (i, 0)]) / w->q_den[0]; ! } return GSL_SUCCESS; diff -x.info* -rc2P gsl-1.3/sum/levin_utrunc.c gsl-1.4/sum/levin_utrunc.c *** gsl-1.3/sum/levin_utrunc.c Wed Oct 3 10:56:26 2001 --- gsl-1.4/sum/levin_utrunc.c Fri Jul 25 15:18:16 2003 *************** *** 33,38 **** { return gsl_sum_levin_utrunc_minmax (array, array_size, ! 0, array_size - 1, ! w, sum_accel, abserr_trunc); } --- 33,38 ---- { return gsl_sum_levin_utrunc_minmax (array, array_size, ! 0, array_size - 1, ! w, sum_accel, abserr_trunc); } *************** *** 40,48 **** int gsl_sum_levin_utrunc_minmax (const double *array, ! const size_t array_size, ! const size_t min_terms, ! const size_t max_terms, ! gsl_sum_levin_utrunc_workspace * w, ! double *sum_accel, double *abserr_trunc) { if (array_size == 0) --- 40,48 ---- int gsl_sum_levin_utrunc_minmax (const double *array, ! const size_t array_size, ! const size_t min_terms, ! const size_t max_terms, ! gsl_sum_levin_utrunc_workspace * w, ! double *sum_accel, double *abserr_trunc) { if (array_size == 0) *************** *** 80,89 **** for (n = 0; n < min_terms; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_utrunc_step (t, n, w, &result_n); ! } /* Assume the result after the minimum calculation is the best. */ --- 80,89 ---- for (n = 0; n < min_terms; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_utrunc_step (t, n, w, &result_n); ! } /* Assume the result after the minimum calculation is the best. */ *************** *** 95,157 **** for (; n <= nmax; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_utrunc_step (t, n, w, &result_n); ! /* Compute the truncation error directly */ ! actual_trunc_nm1 = actual_trunc_n; ! actual_trunc_n = fabs (result_n - result_nm1); ! /* Average results to make a more reliable estimate of the ! real truncation error */ ! trunc_nm1 = trunc_n; ! trunc_n = 0.5 * (actual_trunc_n + actual_trunc_nm1); ! /* Determine if we are in the convergence region. */ ! better = (trunc_n < trunc_nm1 || trunc_n < SMALL * fabs (result_n)); ! converging = converging || (better && before); ! before = better; ! if (converging) ! { ! if (trunc_n < least_trunc) ! { ! /* Found a low truncation point in the convergence ! region. Save it. */ ! least_trunc = trunc_n; ! result_least_trunc = result_n; ! } ! if (fabs (trunc_n / result_n) < 10.0 * GSL_MACH_EPS) ! break; ! } ! } if (converging) ! { ! /* Stopped in the convergence region. Return result and ! error estimate. */ ! ! *sum_accel = result_least_trunc; ! *abserr_trunc = least_trunc; ! w->terms_used = n; ! return GSL_SUCCESS; ! } else ! { ! /* Never reached the convergence region. Use the last ! calculated values. */ ! ! *sum_accel = result_n; ! *abserr_trunc = trunc_n; ! w->terms_used = n; ! return GSL_SUCCESS; ! } } } --- 95,157 ---- for (; n <= nmax; n++) ! { ! const double t = array[n]; ! result_nm1 = result_n; ! gsl_sum_levin_utrunc_step (t, n, w, &result_n); ! /* Compute the truncation error directly */ ! actual_trunc_nm1 = actual_trunc_n; ! actual_trunc_n = fabs (result_n - result_nm1); ! /* Average results to make a more reliable estimate of the ! real truncation error */ ! trunc_nm1 = trunc_n; ! trunc_n = 0.5 * (actual_trunc_n + actual_trunc_nm1); ! /* Determine if we are in the convergence region. */ ! better = (trunc_n < trunc_nm1 || trunc_n < SMALL * fabs (result_n)); ! converging = converging || (better && before); ! before = better; ! if (converging) ! { ! if (trunc_n < least_trunc) ! { ! /* Found a low truncation point in the convergence ! region. Save it. */ ! least_trunc = trunc_n; ! result_least_trunc = result_n; ! } ! if (fabs (trunc_n / result_n) < 10.0 * GSL_MACH_EPS) ! break; ! } ! } if (converging) ! { ! /* Stopped in the convergence region. Return result and ! error estimate. */ ! ! *sum_accel = result_least_trunc; ! *abserr_trunc = least_trunc; ! w->terms_used = n; ! return GSL_SUCCESS; ! } else ! { ! /* Never reached the convergence region. Use the last ! calculated values. */ ! ! *sum_accel = result_n; ! *abserr_trunc = trunc_n; ! w->terms_used = n; ! return GSL_SUCCESS; ! } } } *************** *** 159,164 **** int gsl_sum_levin_utrunc_step (const double term, ! const size_t n, ! gsl_sum_levin_utrunc_workspace * w, double *sum_accel) { if (term == 0.0) --- 159,164 ---- int gsl_sum_levin_utrunc_step (const double term, ! const size_t n, ! gsl_sum_levin_utrunc_workspace * w, double *sum_accel) { if (term == 0.0) *************** *** 190,199 **** for (j = n - 1; j >= 0; j--) ! { ! double c = factor * (j + 1) / (n + 1); ! factor *= ratio; ! w->q_den[j] = w->q_den[j + 1] - c * w->q_den[j]; ! w->q_num[j] = w->q_num[j + 1] - c * w->q_num[j]; ! } *sum_accel = w->q_num[0] / w->q_den[0]; --- 190,199 ---- for (j = n - 1; j >= 0; j--) ! { ! double c = factor * (j + 1) / (n + 1); ! factor *= ratio; ! w->q_den[j] = w->q_den[j + 1] - c * w->q_den[j]; ! w->q_num[j] = w->q_num[j + 1] - c * w->q_num[j]; ! } *sum_accel = w->q_num[0] / w->q_den[0]; diff -x.info* -rc2P gsl-1.3/sum/test.c gsl-1.4/sum/test.c *** gsl-1.3/sum/test.c Wed Oct 3 10:56:26 2001 --- gsl-1.4/sum/test.c Fri Jul 25 15:18:16 2003 *************** *** 49,54 **** for (n = 0; n < N; n++) { ! double np1 = n + 1.0; ! t[n] = 1.0 / (np1 * np1); } --- 49,54 ---- for (n = 0; n < N; n++) { ! double np1 = n + 1.0; ! t[n] = 1.0 / (np1 * np1); } *************** *** 69,73 **** for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x / n); } --- 69,73 ---- for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x / n); } *************** *** 88,92 **** for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x / n); } --- 88,92 ---- for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x / n); } *************** *** 106,110 **** for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x * n) / (n + 1.0); } --- 106,110 ---- for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x * n) / (n + 1.0); } *************** *** 124,128 **** for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x * n) / (n + 1.0); } --- 124,128 ---- for (n = 1; n < N; n++) { ! t[n] = t[n - 1] * (x * n) / (n + 1.0); } *************** *** 143,147 **** for (n = 1; n < N; n++) { ! t[n] = -t[n - 1] * (4.0 * (n + 1.0) - 1.0) / (M_PI * M_PI); } --- 143,147 ---- for (n = 1; n < N; n++) { ! t[n] = -t[n - 1] * (4.0 * (n + 1.0) - 1.0) / (M_PI * M_PI); } *************** *** 164,168 **** for (n = 1; n < N; n++) { ! t[n] = 1/(n+1.0) + log(n/(n+1.0)); } --- 164,168 ---- for (n = 1; n < N; n++) { ! t[n] = 1/(n+1.0) + log(n/(n+1.0)); } *************** *** 188,192 **** for (n = 0; n < N; n++) { ! t[n] = (n%2 ? -1 : 1) * 1.0 /sqrt(n + 1.0); } --- 188,192 ---- for (n = 0; n < N; n++) { ! t[n] = (n%2 ? -1 : 1) * 1.0 /sqrt(n + 1.0); } diff -x.info* -rc2P gsl-1.3/sys/ChangeLog gsl-1.4/sys/ChangeLog *** gsl-1.3/sys/ChangeLog Wed Dec 11 17:29:39 2002 --- gsl-1.4/sys/ChangeLog Thu Jul 24 16:03:33 2003 *************** *** 1,2 **** --- 1,15 ---- + 2003-07-24 Brian Gough + + * invhyp.c: removed duplicate declarations + + * ldfrexp.c: removed duplicate declarations + + * expm1.c: removed duplicate declaration of gsl_expm1 + + 2003-01-02 Brian Gough + + * infnan.c (gsl_isnan): fall back to isnan,isinf,finite/isfinite + if available and IEEE comparisons do not work + Wed Dec 11 17:29:24 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/sys/Makefile.am gsl-1.4/sys/Makefile.am *** gsl-1.3/sys/Makefile.am Mon Aug 26 09:11:21 2002 --- gsl-1.4/sys/Makefile.am Sun Jul 27 09:51:03 2003 *************** *** 10,12 **** TESTS = test test_SOURCES = test.c ! test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la --- 10,12 ---- TESTS = test test_SOURCES = test.c ! test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/sys/Makefile.in gsl-1.4/sys/Makefile.in *** gsl-1.3/sys/Makefile.in Wed Dec 18 22:36:35 2002 --- gsl-1.4/sys/Makefile.in Thu Aug 14 12:31:23 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslsys.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslsys.la *************** *** 96,189 **** TESTS = test test_SOURCES = test.c ! test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslsys_la_LDFLAGS = ! libgslsys_la_LIBADD = ! libgslsys_la_OBJECTS = minmax.lo prec.lo hypot.lo log1p.lo expm1.lo \ ! coerce.lo invhyp.lo pow_int.lo infnan.lo fdiv.lo fcmp.lo ldfrexp.lo ! check_PROGRAMS = test$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslsys.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) - OBJECTS = $(libgslsys_la_OBJECTS) $(test_OBJECTS) ! all: all-redirect ! .SUFFIXES: ! .SUFFIXES: .S .c .lo .o .obj .s ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) ! cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps sys/Makefile ! Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) \ ! && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! ! ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 152,238 ---- TESTS = test test_SOURCES = test.c ! test_LDADD = libgslsys.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la libgslsys.la ../utils/libutils.la ! subdir = sys ! ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslsys_la_LDFLAGS = ! libgslsys_la_LIBADD = ! am_libgslsys_la_OBJECTS = minmax.lo prec.lo hypot.lo log1p.lo expm1.lo \ ! coerce.lo invhyp.lo pow_int.lo infnan.lo fdiv.lo fcmp.lo \ ! ldfrexp.lo ! libgslsys_la_OBJECTS = $(am_libgslsys_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslsys.la ../ieee-utils/libgslieeeutils.la \ ! ../err/libgslerr.la ../test/libgsltest.la libgslsys.la \ ! ../utils/libutils.la ! test_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgslsys_la_SOURCES) $(test_SOURCES) ! all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu sys/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslsys.la: $(libgslsys_la_OBJECTS) $(libgslsys_la_DEPENDENCIES) + $(LINK) $(libgslsys_la_LDFLAGS) $(libgslsys_la_OBJECTS) $(libgslsys_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 194,330 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslsys.la: $(libgslsys_la_OBJECTS) $(libgslsys_la_DEPENDENCIES) ! $(LINK) $(libgslsys_la_LDFLAGS) $(libgslsys_la_OBJECTS) $(libgslsys_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = sys distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 243,447 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 333,382 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 450,516 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/sys/expm1.c gsl-1.4/sys/expm1.c *** gsl-1.3/sys/expm1.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/sys/expm1.c Fri Jul 25 15:18:16 2003 *************** *** 22,27 **** #include - double gsl_expm1 (const double x); - double gsl_expm1 (const double x) { --- 22,25 ---- diff -x.info* -rc2P gsl-1.3/sys/infnan.c gsl-1.4/sys/infnan.c *** gsl-1.3/sys/infnan.c Wed Jan 16 15:44:38 2002 --- gsl-1.4/sys/infnan.c Fri Jul 25 15:18:16 2003 *************** *** 72,76 **** return _finite(x); } ! #elif defined(HAVE_IEEE_COMPARISONS) int gsl_isnan (const double x) --- 72,76 ---- return _finite(x); } ! #elif HAVE_IEEE_COMPARISONS int gsl_isnan (const double x) *************** *** 101,104 **** --- 101,136 ---- return status; } + #else + + #if HAVE_DECL_ISNAN + int + gsl_isnan (const double x) + { + return isnan(x); + } + #endif + + #if HAVE_DECL_ISINF + int + gsl_isinf (const double x) + { + return isinf(x); + } + #endif + + #if HAVE_DECL_FINITE + int + gsl_finite (const double x) + { + return finite(x); + } + #elif HAVE_DECL_ISFINITE + int + gsl_finite (const double x) + { + return isfinite(x); + } + #endif + #endif diff -x.info* -rc2P gsl-1.3/sys/invhyp.c gsl-1.4/sys/invhyp.c *** gsl-1.3/sys/invhyp.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/sys/invhyp.c Fri Jul 25 15:18:16 2003 *************** *** 23,28 **** #include - double gsl_acosh (const double x); - double gsl_acosh (const double x) --- 23,26 ---- *************** *** 51,56 **** } - double gsl_asinh (const double x); - double gsl_asinh (const double x) --- 49,52 ---- *************** *** 77,82 **** } } - - double gsl_atanh (const double x); double --- 73,76 ---- diff -x.info* -rc2P gsl-1.3/sys/ldfrexp.c gsl-1.4/sys/ldfrexp.c *** gsl-1.3/sys/ldfrexp.c Tue Dec 10 22:27:36 2002 --- gsl-1.4/sys/ldfrexp.c Fri Jul 25 15:18:16 2003 *************** *** 22,28 **** #include - double gsl_ldexp (const double x, const int e); - double gsl_frexp (const double x, int *e); - double gsl_ldexp (const double x, const int e) --- 22,25 ---- diff -x.info* -rc2P gsl-1.3/sys/test.c gsl-1.4/sys/test.c *** gsl-1.3/sys/test.c Mon Aug 26 09:05:21 2002 --- gsl-1.4/sys/test.c Fri Jul 25 15:18:16 2003 *************** *** 321,325 **** ! #ifdef HAVE_IEEE_COMPARISONS /* Test for isinf, isnan, finite */ --- 321,325 ---- ! #if HAVE_IEEE_COMPARISONS /* Test for isinf, isnan, finite */ diff -x.info* -rc2P gsl-1.3/test/Makefile.am gsl-1.4/test/Makefile.am *** gsl-1.3/test/Makefile.am Fri May 5 10:18:09 2000 --- gsl-1.4/test/Makefile.am Sun Jul 27 09:49:48 2003 *************** *** 8,10 **** #TESTS = test #test_SOURCES = test_errnos.c ! #test_LDADD = libgsltest.la ../utils/libutils.la --- 8,10 ---- #TESTS = test #test_SOURCES = test_errnos.c ! #test_LDADD = libgsltest.la ../sys/libgslsys.la ../utils/libutils.la diff -x.info* -rc2P gsl-1.3/test/Makefile.in gsl-1.4/test/Makefile.in *** gsl-1.3/test/Makefile.in Wed Dec 18 22:36:40 2002 --- gsl-1.4/test/Makefile.in Thu Aug 14 12:31:20 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgsltest.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgsltest.la *************** *** 90,176 **** libgsltest_la_SOURCES = results.c mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgsltest_la_LDFLAGS = ! libgsltest_la_LIBADD = ! libgsltest_la_OBJECTS = results.lo ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgsltest_la_SOURCES) - OBJECTS = $(libgsltest_la_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps test/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 146,212 ---- libgsltest_la_SOURCES = results.c + subdir = test + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgsltest_la_LDFLAGS = ! libgsltest_la_LIBADD = ! am_libgsltest_la_OBJECTS = results.lo ! libgsltest_la_OBJECTS = $(am_libgsltest_la_OBJECTS) ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgsltest_la_SOURCES) ! HEADERS = $(pkginclude_HEADERS) ! DIST_COMMON = $(pkginclude_HEADERS) ChangeLog Makefile.am Makefile.in SOURCES = $(libgsltest_la_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu test/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ ! dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ! test "$$dir" = "$$p" && dir=.; \ ! echo "rm -f \"$${dir}/so_locations\""; \ ! rm -f "$${dir}/so_locations"; \ ! done ! libgsltest.la: $(libgsltest_la_OBJECTS) $(libgsltest_la_DEPENDENCIES) ! $(LINK) $(libgsltest_la_LDFLAGS) $(libgsltest_la_OBJECTS) $(libgsltest_la_LIBADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 181,277 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgsltest.la: $(libgsltest_la_OBJECTS) $(libgsltest_la_DEPENDENCIES) ! $(LINK) $(libgsltest_la_LDFLAGS) $(libgsltest_la_OBJECTS) $(libgsltest_la_LIBADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! ! subdir = test distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 217,346 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 280,325 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-tags \ ! mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-tags clean-generic mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-tags distclean-generic \ ! clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-tags maintainer-clean-generic \ ! distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ ! check-am installcheck-am installcheck install-exec-am install-exec \ ! install-data-am install-data install-am install uninstall-am uninstall \ ! all-redirect all-am all installdirs mostlyclean-generic \ ! distclean-generic clean-generic maintainer-clean-generic clean \ ! mostlyclean distclean maintainer-clean --- 349,415 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ ! mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS ! ! .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ! clean-libtool clean-noinstLTLIBRARIES ctags distclean \ ! distclean-compile distclean-generic distclean-libtool \ ! distclean-tags distdir dvi dvi-am info info-am install \ ! install-am install-data install-data-am install-exec \ ! install-exec-am install-info install-info-am install-man \ ! install-pkgincludeHEADERS install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-compile \ ! mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ! tags uninstall uninstall-am uninstall-info-am \ ! uninstall-pkgincludeHEADERS *************** *** 327,332 **** #TESTS = test #test_SOURCES = test_errnos.c ! #test_LDADD = libgsltest.la ../utils/libutils.la ! # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. --- 417,421 ---- #TESTS = test #test_SOURCES = test_errnos.c ! #test_LDADD = libgsltest.la ../sys/libgslsys.la ../utils/libutils.la # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff -x.info* -rc2P gsl-1.3/test/gsl_test.h gsl-1.4/test/gsl_test.h *** gsl-1.3/test/gsl_test.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/test/gsl_test.h Fri Jul 25 15:18:23 2003 *************** *** 38,46 **** void gsl_test_rel (double result, double expected, double relative_error, ! const char *test_description, ...) ; void gsl_test_abs (double result, double expected, double absolute_error, ! const char *test_description, ...) ; void --- 38,46 ---- void gsl_test_rel (double result, double expected, double relative_error, ! const char *test_description, ...) ; void gsl_test_abs (double result, double expected, double absolute_error, ! const char *test_description, ...) ; void *************** *** 53,57 **** void gsl_test_str (const char * result, const char * expected, ! const char *test_description, ...) ; void --- 53,57 ---- void gsl_test_str (const char * result, const char * expected, ! const char *test_description, ...) ; void diff -x.info* -rc2P gsl-1.3/test/results.c gsl-1.4/test/results.c *** gsl-1.3/test/results.c Thu Sep 12 21:07:29 2002 --- gsl-1.4/test/results.c Sat Jul 26 21:20:01 2003 *************** *** 23,28 **** #include #include ! #ifdef HAVE_VPRINTF #ifdef STDC_HEADERS #include --- 23,29 ---- #include #include + #include ! #if HAVE_VPRINTF #ifdef STDC_HEADERS #include *************** *** 50,54 **** passed++; if (verbose) ! printf ("PASS: "); } else --- 51,55 ---- passed++; if (verbose) ! printf ("PASS: "); } else *************** *** 56,60 **** failed++; if (verbose) ! printf ("FAIL: "); } --- 57,61 ---- failed++; if (verbose) ! printf ("FAIL: "); } *************** *** 62,66 **** { ! #ifdef HAVE_VPRINTF va_list ap; --- 63,67 ---- { ! #if HAVE_VPRINTF va_list ap; *************** *** 82,92 **** void gsl_test_rel (double result, double expected, double relative_error, ! const char *test_description,...) { int status ; ! if (result != result) { ! status = (expected == expected); /* Check for NaN vs number */ } else if (expected != 0 ) --- 83,99 ---- void gsl_test_rel (double result, double expected, double relative_error, ! const char *test_description,...) { int status ; ! /* Check for NaN vs inf vs number */ ! ! if (gsl_isnan(result) || gsl_isnan(expected)) ! { ! status = gsl_isnan(result) != gsl_isnan(expected); ! } ! else if (gsl_isinf(result) || gsl_isinf(expected)) { ! status = gsl_isinf(result) != gsl_isinf(expected); } else if (expected != 0 ) *************** *** 105,109 **** passed++; if (verbose) ! printf ("PASS: "); } else --- 112,116 ---- passed++; if (verbose) ! printf ("PASS: "); } else *************** *** 111,115 **** failed++; if (verbose) ! printf ("FAIL: "); } --- 118,122 ---- failed++; if (verbose) ! printf ("FAIL: "); } *************** *** 118,122 **** { ! #ifdef HAVE_VPRINTF va_list ap; --- 125,129 ---- { ! #if HAVE_VPRINTF va_list ap; *************** *** 130,147 **** #endif if (status == 0) ! { ! if (strlen(test_description) < 45) ! { ! printf(" (%g observed vs %g expected)", result, expected) ; ! } ! else ! { ! printf(" (%g obs vs %g exp)", result, expected) ; ! } ! } else ! { ! printf(" (%.18g observed vs %.18g expected)", result, expected) ; ! } printf ("\n") ; --- 137,154 ---- #endif if (status == 0) ! { ! if (strlen(test_description) < 45) ! { ! printf(" (%g observed vs %g expected)", result, expected) ; ! } ! else ! { ! printf(" (%g obs vs %g exp)", result, expected) ; ! } ! } else ! { ! printf(" (%.18g observed vs %.18g expected)", result, expected) ; ! } printf ("\n") ; *************** *** 152,162 **** void gsl_test_abs (double result, double expected, double absolute_error, ! const char *test_description,...) { int status ; ! if (result != result) { ! status = (expected == expected); /* Check for NaN vs number */ } else --- 159,175 ---- void gsl_test_abs (double result, double expected, double absolute_error, ! const char *test_description,...) { int status ; ! /* Check for NaN vs inf vs number */ ! ! if (gsl_isnan(result) || gsl_isnan(expected)) ! { ! status = gsl_isnan(result) != gsl_isnan(expected); ! } ! else if (gsl_isinf(result) || gsl_isinf(expected)) { ! status = gsl_isinf(result) != gsl_isinf(expected); } else *************** *** 171,175 **** passed++; if (verbose) ! printf ("PASS: "); } else --- 184,188 ---- passed++; if (verbose) ! printf ("PASS: "); } else *************** *** 177,181 **** failed++; if (verbose) ! printf ("FAIL: "); } --- 190,194 ---- failed++; if (verbose) ! printf ("FAIL: "); } *************** *** 184,188 **** { ! #ifdef HAVE_VPRINTF va_list ap; --- 197,201 ---- { ! #if HAVE_VPRINTF va_list ap; *************** *** 196,213 **** #endif if (status == 0) ! { ! if (strlen(test_description) < 45) ! { ! printf(" (%g observed vs %g expected)", result, expected) ; ! } ! else ! { ! printf(" (%g obs vs %g exp)", result, expected) ; ! } ! } else ! { ! printf(" (%.18g observed vs %.18g expected)", result, expected) ; ! } printf ("\n") ; --- 209,226 ---- #endif if (status == 0) ! { ! if (strlen(test_description) < 45) ! { ! printf(" (%g observed vs %g expected)", result, expected) ; ! } ! else ! { ! printf(" (%g obs vs %g exp)", result, expected) ; ! } ! } else ! { ! printf(" (%.18g observed vs %.18g expected)", result, expected) ; ! } printf ("\n") ; *************** *** 243,247 **** passed++; if (verbose) ! printf ("PASS: "); } else --- 256,260 ---- passed++; if (verbose) ! printf ("PASS: "); } else *************** *** 249,253 **** failed++; if (verbose) ! printf ("FAIL: "); } --- 262,266 ---- failed++; if (verbose) ! printf ("FAIL: "); } *************** *** 256,260 **** { ! #ifdef HAVE_VPRINTF va_list ap; --- 269,273 ---- { ! #if HAVE_VPRINTF va_list ap; *************** *** 268,285 **** #endif if (status == 0) ! { ! if (strlen(test_description) < 45) ! { ! printf(" (%g observed vs %g expected)", result, expected) ; ! } ! else ! { ! printf(" (%g obs vs %g exp)", result, expected) ; ! } ! } else ! { ! printf(" (%.18g observed vs %.18g expected)", result, expected) ; ! } printf ("\n") ; --- 281,298 ---- #endif if (status == 0) ! { ! if (strlen(test_description) < 45) ! { ! printf(" (%g observed vs %g expected)", result, expected) ; ! } ! else ! { ! printf(" (%g obs vs %g exp)", result, expected) ; ! } ! } else ! { ! printf(" (%.18g observed vs %.18g expected)", result, expected) ; ! } printf ("\n") ; *************** *** 299,303 **** passed++; if (verbose) ! printf ("PASS: "); } else --- 312,316 ---- passed++; if (verbose) ! printf ("PASS: "); } else *************** *** 305,309 **** failed++; if (verbose) ! printf ("FAIL: "); } --- 318,322 ---- failed++; if (verbose) ! printf ("FAIL: "); } *************** *** 311,315 **** { ! #ifdef HAVE_VPRINTF va_list ap; --- 324,328 ---- { ! #if HAVE_VPRINTF va_list ap; *************** *** 323,333 **** #endif if (status == 0) ! { ! printf(" (%d observed vs %d expected)", result, expected) ; ! } else ! { ! printf(" (%d observed vs %d expected)", result, expected) ; ! } printf ("\n"); --- 336,346 ---- #endif if (status == 0) ! { ! printf(" (%d observed vs %d expected)", result, expected) ; ! } else ! { ! printf(" (%d observed vs %d expected)", result, expected) ; ! } printf ("\n"); *************** *** 338,342 **** void gsl_test_str (const char * result, const char * expected, ! const char *test_description,...) { int status = strcmp(result,expected) ; --- 351,355 ---- void gsl_test_str (const char * result, const char * expected, ! const char *test_description,...) { int status = strcmp(result,expected) ; *************** *** 348,352 **** passed++; if (verbose) ! printf ("PASS: "); } else --- 361,365 ---- passed++; if (verbose) ! printf ("PASS: "); } else *************** *** 354,358 **** failed++; if (verbose) ! printf ("FAIL: "); } --- 367,371 ---- failed++; if (verbose) ! printf ("FAIL: "); } *************** *** 360,364 **** { ! #ifdef HAVE_VPRINTF va_list ap; --- 373,377 ---- { ! #if HAVE_VPRINTF va_list ap; *************** *** 372,378 **** #endif if (status) ! { ! printf(" (%s observed vs %s expected)", result, expected) ; ! } printf ("\n"); --- 385,391 ---- #endif if (status) ! { ! printf(" (%s observed vs %s expected)", result, expected) ; ! } printf ("\n"); *************** *** 394,398 **** { ! if (verbose && 0) /* FIXME: turned it off, this annoys me */ printf ("%d tests, passed %d, failed %d.\n", tests, passed, failed); --- 407,411 ---- { ! if (verbose && 0) /* FIXME: turned it off, this annoys me */ printf ("%d tests, passed %d, failed %d.\n", tests, passed, failed); *************** *** 400,407 **** { ! if (verbose && 0) /* FIXME: turned it off, this annoys me */ ! { ! printf ("%d TEST%s FAILED.\n", failed, failed == 1 ? "" : "S"); ! } return EXIT_FAILURE; } --- 413,420 ---- { ! if (verbose && 0) /* FIXME: turned it off, this annoys me */ ! { ! printf ("%d TEST%s FAILED.\n", failed, failed == 1 ? "" : "S"); ! } return EXIT_FAILURE; } *************** *** 410,415 **** { if (verbose) ! printf ("TEST RESULTS DO NOT ADD UP %d != %d + %d\n", ! tests, passed, failed); return EXIT_FAILURE; } --- 423,428 ---- { if (verbose) ! printf ("TEST RESULTS DO NOT ADD UP %d != %d + %d\n", ! tests, passed, failed); return EXIT_FAILURE; } *************** *** 417,422 **** if (passed == tests) { ! if (verbose && 0) /* FIXME: turned it off, this annoys me */ ! printf ("All tests passed successfully\n"); return EXIT_SUCCESS; } --- 430,435 ---- if (passed == tests) { ! if (verbose && 0) /* FIXME: turned it off, this annoys me */ ! printf ("All tests passed successfully\n"); return EXIT_SUCCESS; } diff -x.info* -rc2P gsl-1.3/utils/Makefile.in gsl-1.4/utils/Makefile.in *** gsl-1.3/utils/Makefile.in Wed Dec 18 22:36:30 2002 --- gsl-1.4/utils/Makefile.in Thu Aug 14 12:31:26 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libutils.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libutils.la *************** *** 92,177 **** EXTRA_DIST = README mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libutils_la_LDFLAGS = ! libutils_la_DEPENDENCIES = @LIBOBJS@ ! libutils_la_OBJECTS = placeholder.lo ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! DIST_COMMON = README Makefile.am Makefile.in memcpy.c memmove.c \ ! strdup.c strtol.c strtoul.c ! ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libutils_la_SOURCES) - OBJECTS = $(libutils_la_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps utils/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 148,213 ---- EXTRA_DIST = README + subdir = utils + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libutils_la_LDFLAGS = ! libutils_la_DEPENDENCIES = @LIBOBJS@ ! am_libutils_la_OBJECTS = placeholder.lo ! libutils_la_OBJECTS = $(am_libutils_la_OBJECTS) ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libutils_la_SOURCES) ! DIST_COMMON = README Makefile.am Makefile.in memcpy.c memmove.c \ ! strdup.c strtol.c strtoul.c SOURCES = $(libutils_la_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu utils/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ ! dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ! test "$$dir" = "$$p" && dir=.; \ ! echo "rm -f \"$${dir}/so_locations\""; \ ! rm -f "$${dir}/so_locations"; \ ! done ! libutils.la: $(libutils_la_OBJECTS) $(libutils_la_DEPENDENCIES) ! $(LINK) $(libutils_la_LDFLAGS) $(libutils_la_OBJECTS) $(libutils_la_LIBADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 182,262 **** distclean-libtool: ! maintainer-clean-libtool: ! libutils.la: $(libutils_la_OBJECTS) $(libutils_la_DEPENDENCIES) ! $(LINK) $(libutils_la_LDFLAGS) $(libutils_la_OBJECTS) $(libutils_la_LIBADD) $(LIBS) tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! maintainer-clean-tags: ! ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! ! subdir = utils distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - mostlyclean-generic: --- 218,328 ---- distclean-libtool: + -rm -f libtool + uninstall-info-am: ! ETAGS = etags ! ETAGSFLAGS = ! CTAGS = ctags ! CTAGSFLAGS = tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am check: check-am ! all-am: Makefile $(LTLIBRARIES) ! installdirs: ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 265,310 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-tags \ ! mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-tags clean-generic mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-tags distclean-generic \ ! clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-tags maintainer-clean-generic \ ! distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool tags mostlyclean-tags \ ! distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 331,395 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ ! mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am ! ! ps-am: ! ! uninstall-am: uninstall-info-am + .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/utils/memcpy.c gsl-1.4/utils/memcpy.c *** gsl-1.3/utils/memcpy.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/utils/memcpy.c Fri Jul 25 15:18:16 2003 *************** *** 3,7 **** Return DESTADDR. */ ! #ifdef HAVE_CONFIG_H #include #endif --- 3,7 ---- Return DESTADDR. */ ! #if HAVE_CONFIG_H #include #endif diff -x.info* -rc2P gsl-1.3/utils/memmove.c gsl-1.4/utils/memmove.c *** gsl-1.3/utils/memmove.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/utils/memmove.c Fri Jul 25 15:18:16 2003 *************** *** 4,8 **** By David MacKenzie . */ ! #ifdef HAVE_CONFIG_H #include #endif --- 4,8 ---- By David MacKenzie . */ ! #if HAVE_CONFIG_H #include #endif diff -x.info* -rc2P gsl-1.3/utils/strdup.c gsl-1.4/utils/strdup.c *** gsl-1.3/utils/strdup.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/utils/strdup.c Fri Jul 25 15:18:16 2003 *************** *** 16,20 **** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ ! #ifdef HAVE_CONFIG_H #include #endif --- 16,20 ---- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ ! #if HAVE_CONFIG_H #include #endif diff -x.info* -rc2P gsl-1.3/utils/strtol.c gsl-1.4/utils/strtol.c *** gsl-1.3/utils/strtol.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/utils/strtol.c Fri Jul 25 15:18:16 2003 *************** *** 24,29 **** #include ! #ifndef UNSIGNED ! #define UNSIGNED 0 #endif --- 24,29 ---- #include ! #ifndef UNSIGNED ! #define UNSIGNED 0 #endif *************** *** 34,40 **** If ENDPTR is not NULL, a pointer to the character after the last one converted is stored in *ENDPTR. */ ! #if UNSIGNED unsigned long int ! #define strtol strtoul #else long int --- 34,40 ---- If ENDPTR is not NULL, a pointer to the character after the last one converted is stored in *ENDPTR. */ ! #if UNSIGNED unsigned long int ! #define strtol strtoul #else long int *************** *** 86,96 **** if (*s == '0') { ! if (toupper (s[1]) == 'X') ! { ! s += 2; ! base = 16; ! } ! else ! base = 8; } else --- 86,96 ---- if (*s == '0') { ! if (toupper (s[1]) == 'X') ! { ! s += 2; ! base = 16; ! } ! else ! base = 8; } else *************** *** 108,126 **** { if (isdigit (c)) ! c -= '0'; else if (isalpha (c)) ! c = toupper (c) - 'A' + 10; else ! break; if (c >= base) ! break; /* Check for overflow. */ if (i > cutoff || (i == cutoff && c > cutlim)) ! overflow = 1; else ! { ! i *= (unsigned long int) base; ! i += c; ! } } --- 108,126 ---- { if (isdigit (c)) ! c -= '0'; else if (isalpha (c)) ! c = toupper (c) - 'A' + 10; else ! break; if (c >= base) ! break; /* Check for overflow. */ if (i > cutoff || (i == cutoff && c > cutlim)) ! overflow = 1; else ! { ! i *= (unsigned long int) base; ! i += c; ! } } *************** *** 134,142 **** *endptr = (char *) s; ! #if !UNSIGNED /* Check for a value that is within the range of `unsigned long int', but outside the range of `long int'. */ if (i > (negative ? ! -(unsigned long int) LONG_MIN : (unsigned long int) LONG_MAX)) overflow = 1; #endif --- 134,142 ---- *endptr = (char *) s; ! #if !UNSIGNED /* Check for a value that is within the range of `unsigned long int', but outside the range of `long int'. */ if (i > (negative ? ! -(unsigned long int) LONG_MIN : (unsigned long int) LONG_MAX)) overflow = 1; #endif *************** *** 145,149 **** { errno = ERANGE; ! #if UNSIGNED return ULONG_MAX; #else --- 145,149 ---- { errno = ERANGE; ! #if UNSIGNED return ULONG_MAX; #else diff -x.info* -rc2P gsl-1.3/utils/strtoul.c gsl-1.4/utils/strtoul.c *** gsl-1.3/utils/strtoul.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/utils/strtoul.c Fri Jul 25 15:18:16 2003 *************** *** 17,21 **** Cambridge, MA 02139, USA. */ ! #define UNSIGNED 1 #include --- 17,21 ---- Cambridge, MA 02139, USA. */ ! #define UNSIGNED 1 #include diff -x.info* -rc2P gsl-1.3/utils/system.h gsl-1.4/utils/system.h *** gsl-1.3/utils/system.h Wed Oct 3 11:03:56 2001 --- gsl-1.4/utils/system.h Fri Jul 25 15:18:23 2003 *************** *** 1,4 **** /* system.h: System-dependent declarations. Include this first. ! $Id: system.h,v 1.1 1997/08/16 06:01:30 bjg Exp $ Copyright (C) 1997 Free Software Foundation, Inc. --- 1,4 ---- /* system.h: System-dependent declarations. Include this first. ! $Id: system.h,v 1.2 2003/06/17 21:06:10 bjg Exp $ Copyright (C) 1997 Free Software Foundation, Inc. *************** *** 27,31 **** /* should be included before any preprocessor test of _POSIX_VERSION. */ ! #ifdef HAVE_UNISTD_H #include #endif /* HAVE_UNISTD_H */ --- 27,31 ---- /* should be included before any preprocessor test of _POSIX_VERSION. */ ! #if HAVE_UNISTD_H #include #endif /* HAVE_UNISTD_H */ *************** *** 35,39 **** #include ! #ifdef HAVE_LOCALE_H #include #endif --- 35,39 ---- #include ! #if HAVE_LOCALE_H #include #endif *************** *** 42,46 **** /* Don't use bcopy! Use memmove if source and destination may overlap, memcpy otherwise. */ ! #ifdef HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include --- 42,46 ---- /* Don't use bcopy! Use memmove if source and destination may overlap, memcpy otherwise. */ ! #if HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include *************** *** 74,78 **** #include ! #ifdef HAVE_SYS_FILE_H #include #endif /* HAVE_SYS_FILE_H */ --- 74,78 ---- #include ! #if HAVE_SYS_FILE_H #include #endif /* HAVE_SYS_FILE_H */ *************** *** 81,88 **** /* Since is POSIX, prefer that to . This also avoids some useless warnings on (at least) Linux. */ ! #ifdef HAVE_FCNTL_H #include #else /* not HAVE_FCNTL_H */ ! #ifdef HAVE_SYS_FCNTL_H #include #endif /* not HAVE_SYS_FCNTL_H */ --- 81,88 ---- /* Since is POSIX, prefer that to . This also avoids some useless warnings on (at least) Linux. */ ! #if HAVE_FCNTL_H #include #else /* not HAVE_FCNTL_H */ ! #if HAVE_SYS_FCNTL_H #include #endif /* not HAVE_SYS_FCNTL_H */ *************** *** 90,94 **** #endif /* not O_RDONLY */ ! #ifdef HAVE_PWD_H #include #endif --- 90,94 ---- #endif /* not O_RDONLY */ ! #if HAVE_PWD_H #include #endif diff -x.info* -rc2P gsl-1.3/vector/ChangeLog gsl-1.4/vector/ChangeLog *** gsl-1.3/vector/ChangeLog Sun Jan 27 22:30:08 2002 --- gsl-1.4/vector/ChangeLog Wed Jan 1 20:22:44 2003 *************** *** 1,2 **** --- 1,9 ---- + 2003-01-01 Brian Gough + + * gsl_vector_complex_float.h (gsl_vector_complex_float_get): + removed const from zero + + * vector_source.c (FUNCTION): removed const from zero + Sun Jan 27 22:29:54 2002 Brian Gough diff -x.info* -rc2P gsl-1.3/vector/Makefile.am gsl-1.4/vector/Makefile.am *** gsl-1.3/vector/Makefile.am Mon Jul 2 10:27:47 2001 --- gsl-1.4/vector/Makefile.am Sun Jul 27 09:54:19 2003 *************** *** 9,14 **** TESTS = test test_static ! test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 9,14 ---- TESTS = test test_static ! test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c diff -x.info* -rc2P gsl-1.3/vector/Makefile.in gsl-1.4/vector/Makefile.in *** gsl-1.3/vector/Makefile.in Wed Dec 18 22:37:14 2002 --- gsl-1.4/vector/Makefile.in Thu Aug 14 12:31:01 2003 *************** *** 1,5 **** ! # Makefile.in generated automatically by automake 1.4-p5 from Makefile.am ! # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, --- 1,7 ---- ! # Makefile.in generated by automake 1.7.5 from Makefile.am. ! # @configure_input@ ! # Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 ! # Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, *************** *** 11,55 **** # PARTICULAR PURPOSE. ! ! SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - - bindir = @bindir@ - sbindir = @sbindir@ - libexecdir = @libexecdir@ - datadir = @datadir@ - sysconfdir = @sysconfdir@ - sharedstatedir = @sharedstatedir@ - localstatedir = @localstatedir@ - libdir = @libdir@ - infodir = @infodir@ - mandir = @mandir@ - includedir = @includedir@ - oldincludedir = /usr/include - - DESTDIR = - pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ - top_builddir = .. ! ACLOCAL = @ACLOCAL@ ! AUTOCONF = @AUTOCONF@ ! AUTOMAKE = @AUTOMAKE@ ! AUTOHEADER = @AUTOHEADER@ ! INSTALL = @INSTALL@ ! INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) ! INSTALL_DATA = @INSTALL_DATA@ ! INSTALL_SCRIPT = @INSTALL_SCRIPT@ ! transform = @program_transform_name@ ! NORMAL_INSTALL = : PRE_INSTALL = : --- 13,33 ---- # PARTICULAR PURPOSE. ! @SET_MAKE@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. ! am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ ! install_sh_DATA = $(install_sh) -c -m 644 ! install_sh_PROGRAM = $(install_sh) -c ! install_sh_SCRIPT = $(install_sh) -c ! INSTALL_HEADER = $(INSTALL_DATA) ! transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : *************** *** 58,69 **** PRE_UNINSTALL = : POST_UNINSTALL = : - host_alias = @host_alias@ host_triplet = @host@ AR = @AR@ ! AS = @AS@ CC = @CC@ CPP = @CPP@ ! DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ --- 36,58 ---- PRE_UNINSTALL = : POST_UNINSTALL = : host_triplet = @host@ + ACLOCAL = @ACLOCAL@ + AMTAR = @AMTAR@ AR = @AR@ ! AUTOCONF = @AUTOCONF@ ! AUTOHEADER = @AUTOHEADER@ ! AUTOMAKE = @AUTOMAKE@ ! AWK = @AWK@ CC = @CC@ + CFLAGS = @CFLAGS@ CPP = @CPP@ ! CPPFLAGS = @CPPFLAGS@ ! CYGPATH_W = @CYGPATH_W@ ! DEFS = @DEFS@ ECHO = @ECHO@ + ECHO_C = @ECHO_C@ + ECHO_N = @ECHO_N@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ EXEEXT = @EXEEXT@ GSL_CFLAGS = @GSL_CFLAGS@ *************** *** 71,88 **** GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ - OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ ! noinst_LTLIBRARIES = libgslvector.la --- 60,144 ---- GSL_LT_CBLAS_VERSION = @GSL_LT_CBLAS_VERSION@ GSL_LT_VERSION = @GSL_LT_VERSION@ + HAVE_AIX_IEEE_INTERFACE = @HAVE_AIX_IEEE_INTERFACE@ + HAVE_DARWIN_IEEE_INTERFACE = @HAVE_DARWIN_IEEE_INTERFACE@ + HAVE_EXTENDED_PRECISION_REGISTERS = @HAVE_EXTENDED_PRECISION_REGISTERS@ + HAVE_FREEBSD_IEEE_INTERFACE = @HAVE_FREEBSD_IEEE_INTERFACE@ + HAVE_GNUM68K_IEEE_INTERFACE = @HAVE_GNUM68K_IEEE_INTERFACE@ + HAVE_GNUPPC_IEEE_INTERFACE = @HAVE_GNUPPC_IEEE_INTERFACE@ + HAVE_GNUSPARC_IEEE_INTERFACE = @HAVE_GNUSPARC_IEEE_INTERFACE@ + HAVE_GNUX86_IEEE_INTERFACE = @HAVE_GNUX86_IEEE_INTERFACE@ + HAVE_HPUX11_IEEE_INTERFACE = @HAVE_HPUX11_IEEE_INTERFACE@ + HAVE_HPUX_IEEE_INTERFACE = @HAVE_HPUX_IEEE_INTERFACE@ HAVE_IEEE_COMPARISONS = @HAVE_IEEE_COMPARISONS@ HAVE_IEEE_DENORMALS = @HAVE_IEEE_DENORMALS@ HAVE_INLINE = @HAVE_INLINE@ + HAVE_IRIX_IEEE_INTERFACE = @HAVE_IRIX_IEEE_INTERFACE@ + HAVE_NETBSD_IEEE_INTERFACE = @HAVE_NETBSD_IEEE_INTERFACE@ + HAVE_OPENBSD_IEEE_INTERFACE = @HAVE_OPENBSD_IEEE_INTERFACE@ + HAVE_OS2EMX_IEEE_INTERFACE = @HAVE_OS2EMX_IEEE_INTERFACE@ + HAVE_PRINTF_LONGDOUBLE = @HAVE_PRINTF_LONGDOUBLE@ + HAVE_SOLARIS_IEEE_INTERFACE = @HAVE_SOLARIS_IEEE_INTERFACE@ + HAVE_SUNOS4_IEEE_INTERFACE = @HAVE_SUNOS4_IEEE_INTERFACE@ + HAVE_TRU64_IEEE_INTERFACE = @HAVE_TRU64_IEEE_INTERFACE@ + INSTALL_DATA = @INSTALL_DATA@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ + LDFLAGS = @LDFLAGS@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ + LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ + MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ + MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ + PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ + PACKAGE_NAME = @PACKAGE_NAME@ + PACKAGE_STRING = @PACKAGE_STRING@ + PACKAGE_TARNAME = @PACKAGE_TARNAME@ + PACKAGE_VERSION = @PACKAGE_VERSION@ + PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ + RELEASED = @RELEASED@ + SET_MAKE = @SET_MAKE@ + SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ ! ac_ct_AR = @ac_ct_AR@ ! ac_ct_CC = @ac_ct_CC@ ! ac_ct_RANLIB = @ac_ct_RANLIB@ ! ac_ct_STRIP = @ac_ct_STRIP@ ! am__leading_dot = @am__leading_dot@ ! bindir = @bindir@ ! build = @build@ ! build_alias = @build_alias@ ! build_cpu = @build_cpu@ ! build_os = @build_os@ ! build_vendor = @build_vendor@ ! datadir = @datadir@ ! exec_prefix = @exec_prefix@ ! host = @host@ ! host_alias = @host_alias@ ! host_cpu = @host_cpu@ ! host_os = @host_os@ ! host_vendor = @host_vendor@ ! includedir = @includedir@ ! infodir = @infodir@ ! install_sh = @install_sh@ ! libdir = @libdir@ ! libexecdir = @libexecdir@ ! localstatedir = @localstatedir@ ! mandir = @mandir@ ! oldincludedir = @oldincludedir@ ! prefix = @prefix@ ! program_transform_name = @program_transform_name@ ! sbindir = @sbindir@ ! sharedstatedir = @sharedstatedir@ ! sysconfdir = @sysconfdir@ ! target_alias = @target_alias@ noinst_LTLIBRARIES = libgslvector.la *************** *** 95,100 **** TESTS = test test_static ! test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la ! test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../utils/libutils.la test_SOURCES = test.c --- 151,156 ---- TESTS = test test_static ! test_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_static_LDADD = libgslvector.la ../block/libgslblock.la ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la test_SOURCES = test.c *************** *** 106,204 **** libgslvector_la_SOURCES = init.c file.c vector.c copy.c swap.c prop.c minmax.c oper.c reim.c subvector.c view.c view.h mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = ../config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! ! DEFS = @DEFS@ -I. -I$(srcdir) -I.. ! CPPFLAGS = @CPPFLAGS@ ! LDFLAGS = @LDFLAGS@ ! LIBS = @LIBS@ ! libgslvector_la_LDFLAGS = ! libgslvector_la_LIBADD = ! libgslvector_la_OBJECTS = init.lo file.lo vector.lo copy.lo swap.lo \ ! prop.lo minmax.lo oper.lo reim.lo subvector.lo view.lo ! check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) ! test_OBJECTS = test.$(OBJEXT) ! test_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ! test_LDFLAGS = ! test_static_OBJECTS = test_static.$(OBJEXT) ! test_static_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../utils/libutils.la ! test_static_LDFLAGS = ! CFLAGS = @CFLAGS@ ! COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! ! DIST_COMMON = ChangeLog Makefile.am Makefile.in TODO ! ! DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) ! ! TAR = tar ! GZIP_ENV = --best SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) $(test_static_SOURCES) - OBJECTS = $(libgslvector_la_OBJECTS) $(test_OBJECTS) $(test_static_OBJECTS) - - all: all-redirect - .SUFFIXES: - .SUFFIXES: .S .c .lo .o .obj .s - $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps vector/Makefile - - Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status ! mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! distclean-noinstLTLIBRARIES: ! ! maintainer-clean-noinstLTLIBRARIES: ! ! .c.o: ! $(COMPILE) -c $< ! ! # FIXME: We should only use cygpath when building on Windows, ! # and only if it is available. ! .c.obj: ! $(COMPILE) -c `cygpath -w $<` ! ! .s.o: ! $(COMPILE) -c $< ! ! .S.o: ! $(COMPILE) -c $< mostlyclean-compile: ! -rm -f *.o core *.core ! -rm -f *.$(OBJEXT) ! ! clean-compile: distclean-compile: -rm -f *.tab.c ! maintainer-clean-compile: ! ! .c.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .s.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< ! .S.lo: ! $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: --- 162,257 ---- libgslvector_la_SOURCES = init.c file.c vector.c copy.c swap.c prop.c minmax.c oper.c reim.c subvector.c view.c view.h + subdir = vector + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ! CONFIG_HEADER = $(top_builddir)/config.h ! CONFIG_CLEAN_FILES = ! LTLIBRARIES = $(noinst_LTLIBRARIES) ! ! libgslvector_la_LDFLAGS = ! libgslvector_la_LIBADD = ! am_libgslvector_la_OBJECTS = init.lo file.lo vector.lo copy.lo swap.lo \ ! prop.lo minmax.lo oper.lo reim.lo subvector.lo view.lo ! libgslvector_la_OBJECTS = $(am_libgslvector_la_OBJECTS) ! check_PROGRAMS = test$(EXEEXT) test_static$(EXEEXT) ! am_test_OBJECTS = test.$(OBJEXT) ! test_OBJECTS = $(am_test_OBJECTS) ! test_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_LDFLAGS = ! am_test_static_OBJECTS = test_static.$(OBJEXT) ! test_static_OBJECTS = $(am_test_static_OBJECTS) ! test_static_DEPENDENCIES = libgslvector.la ../block/libgslblock.la \ ! ../ieee-utils/libgslieeeutils.la ../err/libgslerr.la \ ! ../test/libgsltest.la ../sys/libgslsys.la ../utils/libutils.la ! test_static_LDFLAGS = ! ! DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) ! depcomp = ! am__depfiles_maybe = ! COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ! $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ! LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ ! $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) ! LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ ! $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) \ ! $(test_static_SOURCES) ! HEADERS = $(noinst_HEADERS) $(pkginclude_HEADERS) ! DIST_COMMON = $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog \ ! Makefile.am Makefile.in TODO SOURCES = $(libgslvector_la_SOURCES) $(test_SOURCES) $(test_static_SOURCES) + all: all-am ! .SUFFIXES: ! .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ! cd $(top_srcdir) && \ ! $(AUTOMAKE) --gnu vector/Makefile ! Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status ! cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" = "$$p" && dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done + libgslvector.la: $(libgslvector_la_OBJECTS) $(libgslvector_la_DEPENDENCIES) + $(LINK) $(libgslvector_la_LDFLAGS) $(libgslvector_la_OBJECTS) $(libgslvector_la_LIBADD) $(LIBS) ! clean-checkPROGRAMS: ! @list='$(check_PROGRAMS)'; for p in $$list; do \ ! f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ ! echo " rm -f $$p $$f"; \ ! rm -f $$p $$f ; \ ! done ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) ! @rm -f test_static$(EXEEXT) ! $(LINK) $(test_static_LDFLAGS) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) mostlyclean-compile: ! -rm -f *.$(OBJEXT) core *.core distclean-compile: -rm -f *.tab.c ! .c.o: ! $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< ! .c.obj: ! $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ! .c.lo: ! $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< mostlyclean-libtool: *************** *** 209,349 **** distclean-libtool: ! ! maintainer-clean-libtool: ! ! libgslvector.la: $(libgslvector_la_OBJECTS) $(libgslvector_la_DEPENDENCIES) ! $(LINK) $(libgslvector_la_LDFLAGS) $(libgslvector_la_OBJECTS) $(libgslvector_la_LIBADD) $(LIBS) ! ! mostlyclean-checkPROGRAMS: ! ! clean-checkPROGRAMS: ! -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) ! ! distclean-checkPROGRAMS: ! ! maintainer-clean-checkPROGRAMS: ! ! test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) ! @rm -f test$(EXEEXT) ! $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) ! ! test_static$(EXEEXT): $(test_static_OBJECTS) $(test_static_DEPENDENCIES) ! @rm -f test_static$(EXEEXT) ! $(LINK) $(test_static_LDFLAGS) $(test_static_OBJECTS) $(test_static_LDADD) $(LIBS) ! install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ ! echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p"; \ ! $(INSTALL_DATA) $$d$$p $(DESTDIR)$(pkgincludedir)/$$p; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$p; \ done tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! here=`pwd` && cd $(srcdir) \ ! && mkid -f$$here/ID $$unique $(LISP) ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS)'; \ ! unique=`for i in $$list; do echo $$i; done | \ ! awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ ! || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) ! ! mostlyclean-tags: ! ! clean-tags: distclean-tags: ! -rm -f TAGS ID ! ! maintainer-clean-tags: ! distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) ! subdir = vector distdir: $(DISTFILES) ! @for file in $(DISTFILES); do \ ! d=$(srcdir); \ if test -d $$d/$$file; then \ ! cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ ! || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ ! || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done - - check-TESTS: $(TESTS) - @failed=0; all=0; \ - srcdir=$(srcdir); export srcdir; \ - for tst in $(TESTS); do \ - if test -f $$tst; then dir=.; \ - else dir="$(srcdir)"; fi; \ - if $(TESTS_ENVIRONMENT) $$dir/$$tst; then \ - all=`expr $$all + 1`; \ - echo "PASS: $$tst"; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - fi; \ - done; \ - if test "$$failed" -eq 0; then \ - banner="All $$all tests passed"; \ - else \ - banner="$$failed of $$all tests failed"; \ - fi; \ - dashes=`echo "$$banner" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0 - info-am: - info: info-am - dvi-am: - dvi: dvi-am check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! installcheck-am: ! installcheck: installcheck-am ! install-exec-am: ! install-exec: install-exec-am ! install-data-am: install-pkgincludeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - install: install-am - uninstall-am: uninstall-pkgincludeHEADERS - uninstall: uninstall-am - all-am: Makefile $(LTLIBRARIES) $(HEADERS) - all-redirect: all-am - install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install - installdirs: - $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) - mostlyclean-generic: --- 262,466 ---- distclean-libtool: ! -rm -f libtool ! uninstall-info-am: ! pkgincludeHEADERS_INSTALL = $(INSTALL_HEADER) install-pkgincludeHEADERS: $(pkginclude_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f"; \ ! $(pkgincludeHEADERS_INSTALL) $$d$$p $(DESTDIR)$(pkgincludedir)/$$f; \ done uninstall-pkgincludeHEADERS: @$(NORMAL_UNINSTALL) ! @list='$(pkginclude_HEADERS)'; for p in $$list; do \ ! f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgincludedir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgincludedir)/$$f; \ done + ETAGS = etags + ETAGSFLAGS = + + CTAGS = ctags + CTAGSFLAGS = + tags: TAGS ! ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! mkid -fID $$unique ! TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ ! test -z "$(ETAGS_ARGS)$$tags$$unique" \ ! || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ! $$tags $$unique ! ! ctags: CTAGS ! CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ ! $(TAGS_FILES) $(LISP) ! tags=; \ ! here=`pwd`; \ ! list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ! unique=`for i in $$list; do \ ! if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ! done | \ ! $(AWK) ' { files[$$0] = 1; } \ ! END { for (i in files) print i; }'`; \ ! test -z "$(CTAGS_ARGS)$$tags$$unique" \ ! || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ! $$tags $$unique ! ! GTAGS: ! here=`$(am__cd) $(top_builddir) && pwd` \ ! && cd $(top_srcdir) \ ! && gtags -i $(GTAGS_ARGS) $$here distclean-tags: ! -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ! check-TESTS: $(TESTS) ! @failed=0; all=0; xfail=0; xpass=0; skip=0; \ ! srcdir=$(srcdir); export srcdir; \ ! list='$(TESTS)'; \ ! if test -n "$$list"; then \ ! for tst in $$list; do \ ! if test -f ./$$tst; then dir=./; \ ! elif test -f $$tst; then dir=; \ ! else dir="$(srcdir)/"; fi; \ ! if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xpass=`expr $$xpass + 1`; \ ! failed=`expr $$failed + 1`; \ ! echo "XPASS: $$tst"; \ ! ;; \ ! *) \ ! echo "PASS: $$tst"; \ ! ;; \ ! esac; \ ! elif test $$? -ne 77; then \ ! all=`expr $$all + 1`; \ ! case " $(XFAIL_TESTS) " in \ ! *" $$tst "*) \ ! xfail=`expr $$xfail + 1`; \ ! echo "XFAIL: $$tst"; \ ! ;; \ ! *) \ ! failed=`expr $$failed + 1`; \ ! echo "FAIL: $$tst"; \ ! ;; \ ! esac; \ ! else \ ! skip=`expr $$skip + 1`; \ ! echo "SKIP: $$tst"; \ ! fi; \ ! done; \ ! if test "$$failed" -eq 0; then \ ! if test "$$xfail" -eq 0; then \ ! banner="All $$all tests passed"; \ ! else \ ! banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ ! fi; \ ! else \ ! if test "$$xpass" -eq 0; then \ ! banner="$$failed of $$all tests failed"; \ ! else \ ! banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ ! fi; \ ! fi; \ ! dashes="$$banner"; \ ! skipped=""; \ ! if test "$$skip" -ne 0; then \ ! skipped="($$skip tests were not run)"; \ ! test `echo "$$skipped" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$skipped"; \ ! fi; \ ! report=""; \ ! if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ ! report="Please report to $(PACKAGE_BUGREPORT)"; \ ! test `echo "$$report" | wc -c` -gt `echo "$$banner" | wc -c` && \ ! dashes="$$report"; \ ! fi; \ ! dashes=`echo "$$dashes" | sed s/./=/g`; \ ! echo "$$dashes"; \ ! echo "$$banner"; \ ! test -n "$$skipped" && echo "$$skipped"; \ ! test -n "$$report" && echo "$$report"; \ ! echo "$$dashes"; \ ! test "$$failed" -eq 0; \ ! else :; fi ! DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ! top_distdir = .. ! distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) distdir: $(DISTFILES) ! @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ ! topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ ! list='$(DISTFILES)'; for file in $$list; do \ ! case $$file in \ ! $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ ! $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ ! esac; \ ! if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ! dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ ! if test "$$dir" != "$$file" && test "$$dir" != "."; then \ ! dir="/$$dir"; \ ! $(mkinstalldirs) "$(distdir)$$dir"; \ ! else \ ! dir=''; \ ! fi; \ if test -d $$d/$$file; then \ ! if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ! cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ! fi; \ ! cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ ! || cp -p $$d/$$file $(distdir)/$$file \ ! || exit 1; \ fi; \ done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am ! all-am: Makefile $(LTLIBRARIES) $(HEADERS) ! installdirs: ! $(mkinstalldirs) $(DESTDIR)$(pkgincludedir) ! install: install-am ! install-exec: install-exec-am install-data: install-data-am + uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: *************** *** 353,402 **** distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: ! mostlyclean-am: mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ ! mostlyclean-libtool mostlyclean-checkPROGRAMS \ ! mostlyclean-tags mostlyclean-generic ! mostlyclean: mostlyclean-am ! clean-am: clean-noinstLTLIBRARIES clean-compile clean-libtool \ ! clean-checkPROGRAMS clean-tags clean-generic \ ! mostlyclean-am ! clean: clean-am ! distclean-am: distclean-noinstLTLIBRARIES distclean-compile \ ! distclean-libtool distclean-checkPROGRAMS \ ! distclean-tags distclean-generic clean-am ! -rm -f libtool ! distclean: distclean-am ! maintainer-clean-am: maintainer-clean-noinstLTLIBRARIES \ ! maintainer-clean-compile maintainer-clean-libtool \ ! maintainer-clean-checkPROGRAMS maintainer-clean-tags \ ! maintainer-clean-generic distclean-am ! @echo "This command is intended for maintainers to use;" ! @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am ! .PHONY: mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ ! clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ ! mostlyclean-compile distclean-compile clean-compile \ ! maintainer-clean-compile mostlyclean-libtool distclean-libtool \ ! clean-libtool maintainer-clean-libtool mostlyclean-checkPROGRAMS \ ! distclean-checkPROGRAMS clean-checkPROGRAMS \ ! maintainer-clean-checkPROGRAMS uninstall-pkgincludeHEADERS \ ! install-pkgincludeHEADERS tags mostlyclean-tags distclean-tags \ ! clean-tags maintainer-clean-tags distdir check-TESTS info-am info \ ! dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ ! install-exec install-data-am install-data install-am install \ ! uninstall-am uninstall all-redirect all-am all installdirs \ ! mostlyclean-generic distclean-generic clean-generic \ ! maintainer-clean-generic clean mostlyclean distclean maintainer-clean # Tell versions [3.59,3.63) of GNU make to not export all variables. --- 470,536 ---- distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) maintainer-clean-generic: ! @echo "This command is intended for maintainers to use" ! @echo "it deletes files that may require special tools to rebuild." ! clean: clean-am ! clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ ! clean-noinstLTLIBRARIES mostlyclean-am ! distclean: distclean-am ! distclean-am: clean-am distclean-compile distclean-generic \ ! distclean-libtool distclean-tags ! dvi: dvi-am ! dvi-am: ! info: info-am ! ! info-am: ! ! install-data-am: install-pkgincludeHEADERS ! ! install-exec-am: ! ! install-info: install-info-am ! ! install-man: ! ! installcheck-am: maintainer-clean: maintainer-clean-am ! maintainer-clean-am: distclean-am maintainer-clean-generic ! ! mostlyclean: mostlyclean-am ! ! mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool ! ! pdf: pdf-am ! ! pdf-am: ! ! ps: ps-am + ps-am: + + uninstall-am: uninstall-info-am uninstall-pkgincludeHEADERS + + .PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ + clean-checkPROGRAMS clean-generic clean-libtool \ + clean-noinstLTLIBRARIES ctags distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-pkgincludeHEADERS \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \ + pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am \ + uninstall-pkgincludeHEADERS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -x.info* -rc2P gsl-1.3/vector/file_source.c gsl-1.4/vector/file_source.c *** gsl-1.3/vector/file_source.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/vector/file_source.c Fri Jul 25 15:18:16 2003 *************** *** 38,45 **** } ! #if !(defined(USES_LONGDOUBLE) && !defined(HAVE_PRINTF_LONGDOUBLE)) int FUNCTION (gsl_vector, fprintf) (FILE * stream, const TYPE (gsl_vector) * v, ! const char *format) { int status = FUNCTION (gsl_block, raw_fprintf) (stream, --- 38,45 ---- } ! #if !(USES_LONGDOUBLE && !HAVE_PRINTF_LONGDOUBLE) int FUNCTION (gsl_vector, fprintf) (FILE * stream, const TYPE (gsl_vector) * v, ! const char *format) { int status = FUNCTION (gsl_block, raw_fprintf) (stream, diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_char.h gsl-1.4/vector/gsl_vector_char.h *** gsl-1.3/vector/gsl_vector_char.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_char.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_char_fscanf (FILE * stream, gsl_vector_char * v); int gsl_vector_char_fprintf (FILE * stream, const gsl_vector_char * v, ! const char *format); int gsl_vector_char_memcpy (gsl_vector_char * dest, const gsl_vector_char * src); --- 137,141 ---- int gsl_vector_char_fscanf (FILE * stream, gsl_vector_char * v); int gsl_vector_char_fprintf (FILE * stream, const gsl_vector_char * v, ! const char *format); int gsl_vector_char_memcpy (gsl_vector_char * dest, const gsl_vector_char * src); *************** *** 162,168 **** int gsl_vector_char_isnull (const gsl_vector_char * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_char_isnull (const gsl_vector_char * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_char_get (const gsl_vector_char * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_char_get (const gsl_vector_char * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_char_set (gsl_vector_char * v, const size_t i, char x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_char_ptr (gsl_vector_char * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_char_ptr (gsl_vector_char * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_char_const_ptr (const gsl_vector_char * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_complex.h gsl-1.4/vector/gsl_vector_complex.h *** gsl-1.3/vector/gsl_vector_complex.h Mon Jun 10 13:04:38 2002 --- gsl-1.4/vector/gsl_vector_complex.h Fri Jul 25 15:18:23 2003 *************** *** 5,12 **** #define GSL_VECTOR_IMAG(z, i) ((z)->data[2*(i)*(z)->stride + 1]) ! #ifdef GSL_RANGE_CHECK_OFF ! #define GSL_VECTOR_COMPLEX(zv, i) (GSL_COMPLEX_AT((zv),(i))) ! #else #define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i)))) #endif --- 5,12 ---- #define GSL_VECTOR_IMAG(z, i) ((z)->data[2*(i)*(z)->stride + 1]) ! #if GSL_RANGE_CHECK #define GSL_VECTOR_COMPLEX(zv, i) (((i) >= (zv)->size ? (gsl_error ("index out of range", __FILE__, __LINE__, GSL_EINVAL), 0):0 , *GSL_COMPLEX_AT((zv),(i)))) + #else + #define GSL_VECTOR_COMPLEX(zv, i) (GSL_COMPLEX_AT((zv),(i))) #endif diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_complex_double.h gsl-1.4/vector/gsl_vector_complex_double.h *** gsl-1.3/vector/gsl_vector_complex_double.h Mon Jun 10 13:13:44 2002 --- gsl-1.4/vector/gsl_vector_complex_double.h Fri Jul 25 15:18:23 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #include #include *************** *** 160,171 **** int gsl_vector_complex_fread (FILE * stream, ! gsl_vector_complex * v); int gsl_vector_complex_fwrite (FILE * stream, ! const gsl_vector_complex * v); int gsl_vector_complex_fscanf (FILE * stream, ! gsl_vector_complex * v); int gsl_vector_complex_fprintf (FILE * stream, ! const gsl_vector_complex * v, ! const char *format); int gsl_vector_complex_memcpy (gsl_vector_complex * dest, const gsl_vector_complex * src); --- 161,172 ---- int gsl_vector_complex_fread (FILE * stream, ! gsl_vector_complex * v); int gsl_vector_complex_fwrite (FILE * stream, ! const gsl_vector_complex * v); int gsl_vector_complex_fscanf (FILE * stream, ! gsl_vector_complex * v); int gsl_vector_complex_fprintf (FILE * stream, ! const gsl_vector_complex * v, ! const char *format); int gsl_vector_complex_memcpy (gsl_vector_complex * dest, const gsl_vector_complex * src); *************** *** 178,194 **** int gsl_vector_complex_isnull (const gsl_vector_complex * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline gsl_complex gsl_vector_complex_get (const gsl_vector_complex * v, ! const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { ! const gsl_complex zero = {{0, 0}}; GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); } --- 179,193 ---- int gsl_vector_complex_isnull (const gsl_vector_complex * v); ! #if HAVE_INLINE extern inline gsl_complex gsl_vector_complex_get (const gsl_vector_complex * v, ! const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { ! gsl_complex zero = {{0, 0}}; GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); } *************** *** 200,206 **** void gsl_vector_complex_set (gsl_vector_complex * v, ! const size_t i, gsl_complex z) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 199,205 ---- void gsl_vector_complex_set (gsl_vector_complex * v, ! const size_t i, gsl_complex z) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 214,220 **** gsl_complex * gsl_vector_complex_ptr (gsl_vector_complex * v, ! const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 213,219 ---- gsl_complex * gsl_vector_complex_ptr (gsl_vector_complex * v, ! const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 230,234 **** const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 229,233 ---- const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_complex_float.h gsl-1.4/vector/gsl_vector_complex_float.h *** gsl-1.3/vector/gsl_vector_complex_float.h Mon Jun 10 13:13:24 2002 --- gsl-1.4/vector/gsl_vector_complex_float.h Fri Jul 25 15:18:23 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #include #include *************** *** 160,171 **** int gsl_vector_complex_float_fread (FILE * stream, ! gsl_vector_complex_float * v); int gsl_vector_complex_float_fwrite (FILE * stream, ! const gsl_vector_complex_float * v); int gsl_vector_complex_float_fscanf (FILE * stream, ! gsl_vector_complex_float * v); int gsl_vector_complex_float_fprintf (FILE * stream, ! const gsl_vector_complex_float * v, ! const char *format); int gsl_vector_complex_float_memcpy (gsl_vector_complex_float * dest, const gsl_vector_complex_float * src); --- 161,172 ---- int gsl_vector_complex_float_fread (FILE * stream, ! gsl_vector_complex_float * v); int gsl_vector_complex_float_fwrite (FILE * stream, ! const gsl_vector_complex_float * v); int gsl_vector_complex_float_fscanf (FILE * stream, ! gsl_vector_complex_float * v); int gsl_vector_complex_float_fprintf (FILE * stream, ! const gsl_vector_complex_float * v, ! const char *format); int gsl_vector_complex_float_memcpy (gsl_vector_complex_float * dest, const gsl_vector_complex_float * src); *************** *** 178,194 **** int gsl_vector_complex_float_isnull (const gsl_vector_complex_float * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline gsl_complex_float gsl_vector_complex_float_get (const gsl_vector_complex_float * v, ! const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { ! const gsl_complex_float zero = {{0, 0}}; GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); } --- 179,193 ---- int gsl_vector_complex_float_isnull (const gsl_vector_complex_float * v); ! #if HAVE_INLINE extern inline gsl_complex_float gsl_vector_complex_float_get (const gsl_vector_complex_float * v, ! const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { ! gsl_complex_float zero = {{0, 0}}; GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); } *************** *** 200,206 **** void gsl_vector_complex_float_set (gsl_vector_complex_float * v, ! const size_t i, gsl_complex_float z) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 199,205 ---- void gsl_vector_complex_float_set (gsl_vector_complex_float * v, ! const size_t i, gsl_complex_float z) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 214,220 **** gsl_complex_float * gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, ! const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 213,219 ---- gsl_complex_float * gsl_vector_complex_float_ptr (gsl_vector_complex_float * v, ! const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 230,234 **** const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 229,233 ---- const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_complex_long_double.h gsl-1.4/vector/gsl_vector_complex_long_double.h *** gsl-1.3/vector/gsl_vector_complex_long_double.h Mon Jun 10 13:13:44 2002 --- gsl-1.4/vector/gsl_vector_complex_long_double.h Fri Jul 25 15:18:23 2003 *************** *** 25,28 **** --- 25,29 ---- #include #include + #include #include #include *************** *** 160,171 **** int gsl_vector_complex_long_double_fread (FILE * stream, ! gsl_vector_complex_long_double * v); int gsl_vector_complex_long_double_fwrite (FILE * stream, ! const gsl_vector_complex_long_double * v); int gsl_vector_complex_long_double_fscanf (FILE * stream, ! gsl_vector_complex_long_double * v); int gsl_vector_complex_long_double_fprintf (FILE * stream, ! const gsl_vector_complex_long_double * v, ! const char *format); int gsl_vector_complex_long_double_memcpy (gsl_vector_complex_long_double * dest, const gsl_vector_complex_long_double * src); --- 161,172 ---- int gsl_vector_complex_long_double_fread (FILE * stream, ! gsl_vector_complex_long_double * v); int gsl_vector_complex_long_double_fwrite (FILE * stream, ! const gsl_vector_complex_long_double * v); int gsl_vector_complex_long_double_fscanf (FILE * stream, ! gsl_vector_complex_long_double * v); int gsl_vector_complex_long_double_fprintf (FILE * stream, ! const gsl_vector_complex_long_double * v, ! const char *format); int gsl_vector_complex_long_double_memcpy (gsl_vector_complex_long_double * dest, const gsl_vector_complex_long_double * src); *************** *** 178,194 **** int gsl_vector_complex_long_double_isnull (const gsl_vector_complex_long_double * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline gsl_complex_long_double gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, ! const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { ! const gsl_complex_long_double zero = {{0, 0}}; GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); } --- 179,193 ---- int gsl_vector_complex_long_double_isnull (const gsl_vector_complex_long_double * v); ! #if HAVE_INLINE extern inline gsl_complex_long_double gsl_vector_complex_long_double_get (const gsl_vector_complex_long_double * v, ! const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { ! gsl_complex_long_double zero = {{0, 0}}; GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); } *************** *** 200,206 **** void gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, ! const size_t i, gsl_complex_long_double z) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 199,205 ---- void gsl_vector_complex_long_double_set (gsl_vector_complex_long_double * v, ! const size_t i, gsl_complex_long_double z) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 214,220 **** gsl_complex_long_double * gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, ! const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 213,219 ---- gsl_complex_long_double * gsl_vector_complex_long_double_ptr (gsl_vector_complex_long_double * v, ! const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 230,234 **** const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 229,233 ---- const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_double.h gsl-1.4/vector/gsl_vector_double.h *** gsl-1.3/vector/gsl_vector_double.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_double.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_fscanf (FILE * stream, gsl_vector * v); int gsl_vector_fprintf (FILE * stream, const gsl_vector * v, ! const char *format); int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src); --- 137,141 ---- int gsl_vector_fscanf (FILE * stream, gsl_vector * v); int gsl_vector_fprintf (FILE * stream, const gsl_vector * v, ! const char *format); int gsl_vector_memcpy (gsl_vector * dest, const gsl_vector * src); *************** *** 162,168 **** int gsl_vector_isnull (const gsl_vector * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_isnull (const gsl_vector * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_get (const gsl_vector * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_get (const gsl_vector * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_set (gsl_vector * v, const size_t i, double x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_set (gsl_vector * v, const size_t i, double x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_ptr (gsl_vector * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_ptr (gsl_vector * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_const_ptr (const gsl_vector * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_const_ptr (const gsl_vector * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_float.h gsl-1.4/vector/gsl_vector_float.h *** gsl-1.3/vector/gsl_vector_float.h Mon Jun 10 13:13:14 2002 --- gsl-1.4/vector/gsl_vector_float.h Sat Aug 2 16:16:09 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_float_fscanf (FILE * stream, gsl_vector_float * v); int gsl_vector_float_fprintf (FILE * stream, const gsl_vector_float * v, ! const char *format); int gsl_vector_float_memcpy (gsl_vector_float * dest, const gsl_vector_float * src); --- 137,141 ---- int gsl_vector_float_fscanf (FILE * stream, gsl_vector_float * v); int gsl_vector_float_fprintf (FILE * stream, const gsl_vector_float * v, ! const char *format); int gsl_vector_float_memcpy (gsl_vector_float * dest, const gsl_vector_float * src); *************** *** 162,168 **** int gsl_vector_float_isnull (const gsl_vector_float * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_float_isnull (const gsl_vector_float * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_float_get (const gsl_vector_float * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_float_get (const gsl_vector_float * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_float_set (gsl_vector_float * v, const size_t i, float x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_float_ptr (gsl_vector_float * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_float_ptr (gsl_vector_float * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_float_const_ptr (const gsl_vector_float * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_int.h gsl-1.4/vector/gsl_vector_int.h *** gsl-1.3/vector/gsl_vector_int.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_int.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_int_fscanf (FILE * stream, gsl_vector_int * v); int gsl_vector_int_fprintf (FILE * stream, const gsl_vector_int * v, ! const char *format); int gsl_vector_int_memcpy (gsl_vector_int * dest, const gsl_vector_int * src); --- 137,141 ---- int gsl_vector_int_fscanf (FILE * stream, gsl_vector_int * v); int gsl_vector_int_fprintf (FILE * stream, const gsl_vector_int * v, ! const char *format); int gsl_vector_int_memcpy (gsl_vector_int * dest, const gsl_vector_int * src); *************** *** 162,168 **** int gsl_vector_int_isnull (const gsl_vector_int * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_int_isnull (const gsl_vector_int * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_int_get (const gsl_vector_int * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_int_get (const gsl_vector_int * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_int_set (gsl_vector_int * v, const size_t i, int x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_int_ptr (gsl_vector_int * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_int_ptr (gsl_vector_int * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_int_const_ptr (const gsl_vector_int * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_long.h gsl-1.4/vector/gsl_vector_long.h *** gsl-1.3/vector/gsl_vector_long.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_long.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_long_fscanf (FILE * stream, gsl_vector_long * v); int gsl_vector_long_fprintf (FILE * stream, const gsl_vector_long * v, ! const char *format); int gsl_vector_long_memcpy (gsl_vector_long * dest, const gsl_vector_long * src); --- 137,141 ---- int gsl_vector_long_fscanf (FILE * stream, gsl_vector_long * v); int gsl_vector_long_fprintf (FILE * stream, const gsl_vector_long * v, ! const char *format); int gsl_vector_long_memcpy (gsl_vector_long * dest, const gsl_vector_long * src); *************** *** 162,168 **** int gsl_vector_long_isnull (const gsl_vector_long * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_long_isnull (const gsl_vector_long * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_long_get (const gsl_vector_long * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_long_get (const gsl_vector_long * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_long_set (gsl_vector_long * v, const size_t i, long x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_long_ptr (gsl_vector_long * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_long_ptr (gsl_vector_long * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_long_const_ptr (const gsl_vector_long * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_long_double.h gsl-1.4/vector/gsl_vector_long_double.h *** gsl-1.3/vector/gsl_vector_long_double.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_long_double.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_long_double_fscanf (FILE * stream, gsl_vector_long_double * v); int gsl_vector_long_double_fprintf (FILE * stream, const gsl_vector_long_double * v, ! const char *format); int gsl_vector_long_double_memcpy (gsl_vector_long_double * dest, const gsl_vector_long_double * src); --- 137,141 ---- int gsl_vector_long_double_fscanf (FILE * stream, gsl_vector_long_double * v); int gsl_vector_long_double_fprintf (FILE * stream, const gsl_vector_long_double * v, ! const char *format); int gsl_vector_long_double_memcpy (gsl_vector_long_double * dest, const gsl_vector_long_double * src); *************** *** 162,168 **** int gsl_vector_long_double_isnull (const gsl_vector_long_double * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_long_double_isnull (const gsl_vector_long_double * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_long_double_get (const gsl_vector_long_double * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_long_double_set (gsl_vector_long_double * v, const size_t i, long double x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_long_double_ptr (gsl_vector_long_double * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_long_double_const_ptr (const gsl_vector_long_double * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_short.h gsl-1.4/vector/gsl_vector_short.h *** gsl-1.3/vector/gsl_vector_short.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_short.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_short_fscanf (FILE * stream, gsl_vector_short * v); int gsl_vector_short_fprintf (FILE * stream, const gsl_vector_short * v, ! const char *format); int gsl_vector_short_memcpy (gsl_vector_short * dest, const gsl_vector_short * src); --- 137,141 ---- int gsl_vector_short_fscanf (FILE * stream, gsl_vector_short * v); int gsl_vector_short_fprintf (FILE * stream, const gsl_vector_short * v, ! const char *format); int gsl_vector_short_memcpy (gsl_vector_short * dest, const gsl_vector_short * src); *************** *** 162,168 **** int gsl_vector_short_isnull (const gsl_vector_short * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_short_isnull (const gsl_vector_short * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_short_get (const gsl_vector_short * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_short_get (const gsl_vector_short * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_short_set (gsl_vector_short * v, const size_t i, short x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_short_ptr (gsl_vector_short * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_short_ptr (gsl_vector_short * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_short_const_ptr (const gsl_vector_short * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_uchar.h gsl-1.4/vector/gsl_vector_uchar.h *** gsl-1.3/vector/gsl_vector_uchar.h Mon Jun 10 13:13:44 2002 --- gsl-1.4/vector/gsl_vector_uchar.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_uchar_fscanf (FILE * stream, gsl_vector_uchar * v); int gsl_vector_uchar_fprintf (FILE * stream, const gsl_vector_uchar * v, ! const char *format); int gsl_vector_uchar_memcpy (gsl_vector_uchar * dest, const gsl_vector_uchar * src); --- 137,141 ---- int gsl_vector_uchar_fscanf (FILE * stream, gsl_vector_uchar * v); int gsl_vector_uchar_fprintf (FILE * stream, const gsl_vector_uchar * v, ! const char *format); int gsl_vector_uchar_memcpy (gsl_vector_uchar * dest, const gsl_vector_uchar * src); *************** *** 162,168 **** int gsl_vector_uchar_isnull (const gsl_vector_uchar * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_uchar_isnull (const gsl_vector_uchar * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_uchar_get (const gsl_vector_uchar * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_uchar_set (gsl_vector_uchar * v, const size_t i, unsigned char x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_uchar_ptr (gsl_vector_uchar * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_uchar_const_ptr (const gsl_vector_uchar * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_uint.h gsl-1.4/vector/gsl_vector_uint.h *** gsl-1.3/vector/gsl_vector_uint.h Mon Jun 10 13:13:43 2002 --- gsl-1.4/vector/gsl_vector_uint.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_uint_fscanf (FILE * stream, gsl_vector_uint * v); int gsl_vector_uint_fprintf (FILE * stream, const gsl_vector_uint * v, ! const char *format); int gsl_vector_uint_memcpy (gsl_vector_uint * dest, const gsl_vector_uint * src); --- 137,141 ---- int gsl_vector_uint_fscanf (FILE * stream, gsl_vector_uint * v); int gsl_vector_uint_fprintf (FILE * stream, const gsl_vector_uint * v, ! const char *format); int gsl_vector_uint_memcpy (gsl_vector_uint * dest, const gsl_vector_uint * src); *************** *** 162,168 **** int gsl_vector_uint_isnull (const gsl_vector_uint * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_uint_isnull (const gsl_vector_uint * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_uint_get (const gsl_vector_uint * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_uint_set (gsl_vector_uint * v, const size_t i, unsigned int x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_uint_ptr (gsl_vector_uint * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_uint_const_ptr (const gsl_vector_uint * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_ulong.h gsl-1.4/vector/gsl_vector_ulong.h *** gsl-1.3/vector/gsl_vector_ulong.h Mon Jun 10 13:13:44 2002 --- gsl-1.4/vector/gsl_vector_ulong.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_ulong_fscanf (FILE * stream, gsl_vector_ulong * v); int gsl_vector_ulong_fprintf (FILE * stream, const gsl_vector_ulong * v, ! const char *format); int gsl_vector_ulong_memcpy (gsl_vector_ulong * dest, const gsl_vector_ulong * src); --- 137,141 ---- int gsl_vector_ulong_fscanf (FILE * stream, gsl_vector_ulong * v); int gsl_vector_ulong_fprintf (FILE * stream, const gsl_vector_ulong * v, ! const char *format); int gsl_vector_ulong_memcpy (gsl_vector_ulong * dest, const gsl_vector_ulong * src); *************** *** 162,168 **** int gsl_vector_ulong_isnull (const gsl_vector_ulong * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_ulong_isnull (const gsl_vector_ulong * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_ulong_get (const gsl_vector_ulong * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_ulong_set (gsl_vector_ulong * v, const size_t i, unsigned long x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_ulong_ptr (gsl_vector_ulong * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_ulong_const_ptr (const gsl_vector_ulong * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/gsl_vector_ushort.h gsl-1.4/vector/gsl_vector_ushort.h *** gsl-1.3/vector/gsl_vector_ushort.h Mon Jun 10 13:13:44 2002 --- gsl-1.4/vector/gsl_vector_ushort.h Fri Jul 25 15:18:23 2003 *************** *** 24,27 **** --- 24,28 ---- #include #include + #include #include *************** *** 136,140 **** int gsl_vector_ushort_fscanf (FILE * stream, gsl_vector_ushort * v); int gsl_vector_ushort_fprintf (FILE * stream, const gsl_vector_ushort * v, ! const char *format); int gsl_vector_ushort_memcpy (gsl_vector_ushort * dest, const gsl_vector_ushort * src); --- 137,141 ---- int gsl_vector_ushort_fscanf (FILE * stream, gsl_vector_ushort * v); int gsl_vector_ushort_fprintf (FILE * stream, const gsl_vector_ushort * v, ! const char *format); int gsl_vector_ushort_memcpy (gsl_vector_ushort * dest, const gsl_vector_ushort * src); *************** *** 162,168 **** int gsl_vector_ushort_isnull (const gsl_vector_ushort * v); ! GSL_VAR int gsl_check_range; ! ! #ifdef HAVE_INLINE extern inline --- 163,167 ---- int gsl_vector_ushort_isnull (const gsl_vector_ushort * v); ! #if HAVE_INLINE extern inline *************** *** 170,174 **** gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 169,173 ---- gsl_vector_ushort_get (const gsl_vector_ushort * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 183,187 **** gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 182,186 ---- gsl_vector_ushort_set (gsl_vector_ushort * v, const size_t i, unsigned short x) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 196,200 **** gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 195,199 ---- gsl_vector_ushort_ptr (gsl_vector_ushort * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { *************** *** 209,213 **** gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i) { ! #ifndef GSL_RANGE_CHECK_OFF if (i >= v->size) { --- 208,212 ---- gsl_vector_ushort_const_ptr (const gsl_vector_ushort * v, const size_t i) { ! #if GSL_RANGE_CHECK if (i >= v->size) { diff -x.info* -rc2P gsl-1.3/vector/init_source.c gsl-1.4/vector/init_source.c *** gsl-1.3/vector/init_source.c Wed Apr 18 21:52:46 2001 --- gsl-1.4/vector/init_source.c Fri Jul 25 15:18:16 2003 *************** *** 27,31 **** { GSL_ERROR_VAL ("vector length n must be positive integer", ! GSL_EINVAL, 0); } --- 27,31 ---- { GSL_ERROR_VAL ("vector length n must be positive integer", ! GSL_EINVAL, 0); } *************** *** 35,39 **** { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } --- 35,39 ---- { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } *************** *** 45,49 **** GSL_ERROR_VAL ("failed to allocate space for block", ! GSL_ENOMEM, 0); } --- 45,49 ---- GSL_ERROR_VAL ("failed to allocate space for block", ! GSL_ENOMEM, 0); } *************** *** 88,92 **** { GSL_ERROR_VAL ("vector length n must be positive integer", ! GSL_EINVAL, 0); } --- 88,92 ---- { GSL_ERROR_VAL ("vector length n must be positive integer", ! GSL_EINVAL, 0); } *************** *** 106,110 **** { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } --- 106,110 ---- { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } *************** *** 129,133 **** { GSL_ERROR_VAL ("vector length n must be positive integer", ! GSL_EINVAL, 0); } --- 129,133 ---- { GSL_ERROR_VAL ("vector length n must be positive integer", ! GSL_EINVAL, 0); } *************** *** 147,151 **** { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } --- 147,151 ---- { GSL_ERROR_VAL ("failed to allocate space for vector struct", ! GSL_ENOMEM, 0); } diff -x.info* -rc2P gsl-1.3/vector/test.c gsl-1.4/vector/test.c *** gsl-1.3/vector/test.c Sun Jan 27 20:48:19 2002 --- gsl-1.4/vector/test.c Fri Jul 25 15:18:16 2003 *************** *** 20,25 **** #include ! #ifdef GSL_RANGE_CHECK_OFF ! #undef GSL_RANGE_CHECK_OFF #endif --- 20,26 ---- #include ! #if !GSL_RANGE_CHECK ! #undef GSL_RANGE_CHECK ! #define GSL_RANGE_CHECK 1 #endif *************** *** 43,47 **** #include "templates_on.h" #include "test_complex_source.c" ! #ifdef HAVE_PRINTF_LONGDOUBLE #include "test_complex_io.c" #endif --- 44,48 ---- #include "templates_on.h" #include "test_complex_source.c" ! #if HAVE_PRINTF_LONGDOUBLE #include "test_complex_io.c" #endif *************** *** 67,71 **** #include "templates_on.h" #include "test_source.c" ! #ifdef HAVE_PRINTF_LONGDOUBLE #include "test_io.c" #endif --- 68,72 ---- #include "templates_on.h" #include "test_source.c" ! #if HAVE_PRINTF_LONGDOUBLE #include "test_io.c" #endif *************** *** 144,148 **** void my_error_handler (const char *reason, const char *file, ! int line, int err); int --- 145,149 ---- void my_error_handler (const char *reason, const char *file, ! int line, int err); int *************** *** 168,172 **** test_text (); test_float_text (); ! #ifdef HAVE_PRINTF_LONGDOUBLE test_long_double_text (); #endif --- 169,173 ---- test_text (); test_float_text (); ! #if HAVE_PRINTF_LONGDOUBLE test_long_double_text (); #endif *************** *** 181,185 **** test_complex_text (); test_complex_float_text (); ! #ifdef HAVE_PRINTF_LONGDOUBLE test_complex_long_double_text (); #endif --- 182,186 ---- test_complex_text (); test_complex_float_text (); ! #if HAVE_PRINTF_LONGDOUBLE test_complex_long_double_text (); #endif *************** *** 199,204 **** test_complex_float_binary (); test_complex_long_double_binary (); - - gsl_warnings_off = 1; gsl_set_error_handler (&my_error_handler); --- 200,203 ---- diff -x.info* -rc2P gsl-1.3/vector/test_complex_io.c gsl-1.4/vector/test_complex_io.c *** gsl-1.3/vector/test_complex_io.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/vector/test_complex_io.c Fri Jul 25 15:18:16 2003 *************** *** 34,41 **** for (i = 0; i < N; i++) { ! BASE x; ! GSL_REAL (x) = (ATOMIC)i; ! GSL_IMAG (x) = (ATOMIC)(i + 1); ! FUNCTION (gsl_vector, set) (v, i, x); }; --- 34,41 ---- for (i = 0; i < N; i++) { ! BASE x; ! GSL_REAL (x) = (ATOMIC)i; ! GSL_IMAG (x) = (ATOMIC)(i + 1); ! FUNCTION (gsl_vector, set) (v, i, x); }; *************** *** 53,58 **** for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) i || w->data[2 * i + 1] != (ATOMIC) (i + 1)) ! status = 1; }; fclose (f); --- 53,58 ---- for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) i || w->data[2 * i + 1] != (ATOMIC) (i + 1)) ! status = 1; }; fclose (f); diff -x.info* -rc2P gsl-1.3/vector/test_complex_source.c gsl-1.4/vector/test_complex_source.c *** gsl-1.3/vector/test_complex_source.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/vector/test_complex_source.c Fri Jul 25 15:18:16 2003 *************** *** 46,50 **** { if (v->data[2 * i] != (ATOMIC) i || v->data[2 * i + 1] != (ATOMIC) (i + 1234)) ! status = 1; }; --- 46,50 ---- { if (v->data[2 * i] != (ATOMIC) i || v->data[2 * i + 1] != (ATOMIC) (i + 1234)) ! status = 1; }; *************** *** 60,64 **** y = FUNCTION (gsl_vector, get) (v, i); if (!GSL_COMPLEX_EQ (x, y)) ! status = 1; }; gsl_test (status, NAME (gsl_vector) "_get reads from array"); --- 60,64 ---- y = FUNCTION (gsl_vector, get) (v, i); if (!GSL_COMPLEX_EQ (x, y)) ! status = 1; }; gsl_test (status, NAME (gsl_vector) "_get reads from array"); *************** *** 77,81 **** y = FUNCTION (gsl_vector, get) (v, i); if (!GSL_COMPLEX_EQ (x, y)) ! status = 1; }; gsl_test (status, NAME (gsl_vector) "_get reads from array with stride"); --- 77,81 ---- y = FUNCTION (gsl_vector, get) (v, i); if (!GSL_COMPLEX_EQ (x, y)) ! status = 1; }; gsl_test (status, NAME (gsl_vector) "_get reads from array with stride"); *************** *** 94,98 **** { if (v->data[2 * 2 * i] != (ATOMIC) i || v->data[2 * 2 * i + 1] != (ATOMIC) (i + 1234)) ! status = 1; }; --- 94,98 ---- { if (v->data[2 * 2 * i] != (ATOMIC) i || v->data[2 * 2 * i + 1] != (ATOMIC) (i + 1234)) ! status = 1; }; *************** *** 155,159 **** gsl_test (status, NAME(gsl_vector) "_reverse" DESC " reverses elements") ; ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ } --- 155,159 ---- gsl_test (status, NAME(gsl_vector) "_reverse" DESC " reverses elements") ; ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ } *************** *** 171,178 **** for (i = 0; i < N; i++) { ! BASE x = ZERO; ! GSL_REAL (x) = (ATOMIC)(N - i); ! GSL_IMAG (x) = (ATOMIC)(N - i + 1); ! FUNCTION (gsl_vector, set) (v, i, x); }; --- 171,178 ---- for (i = 0; i < N; i++) { ! BASE x = ZERO; ! GSL_REAL (x) = (ATOMIC)(N - i); ! GSL_IMAG (x) = (ATOMIC)(N - i + 1); ! FUNCTION (gsl_vector, set) (v, i, x); }; *************** *** 190,195 **** for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) (N - i) || w->data[2 * i + 1] != (ATOMIC) (N - i + 1)) ! status = 1; }; fclose (f); --- 190,195 ---- for (i = 0; i < N; i++) { ! if (w->data[2 * i] != (ATOMIC) (N - i) || w->data[2 * i + 1] != (ATOMIC) (N - i + 1)) ! status = 1; }; fclose (f); *************** *** 217,226 **** FUNCTION (gsl_vector, set) (vc, j - 1, z); gsl_test (!status, ! NAME (gsl_vector) "_set traps index below lower bound"); status = 0; FUNCTION (gsl_vector, set) (vc, N + 1, z); gsl_test (!status, ! NAME (gsl_vector) "_set traps index above upper bound"); status = 0; --- 217,226 ---- FUNCTION (gsl_vector, set) (vc, j - 1, z); gsl_test (!status, ! NAME (gsl_vector) "_set traps index below lower bound"); status = 0; FUNCTION (gsl_vector, set) (vc, N + 1, z); gsl_test (!status, ! NAME (gsl_vector) "_set traps index above upper bound"); status = 0; *************** *** 231,249 **** z1 = FUNCTION (gsl_vector, get) (vc, j - 1); gsl_test (!status, ! NAME (gsl_vector) "_get traps index below lower bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_vector) "_get returns zero real below lower bound"); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_vector) "_get returns zero imag below lower bound"); status = 0; z1 = FUNCTION (gsl_vector, get) (vc, N + 1); gsl_test (!status, ! NAME (gsl_vector) "_get traps index above upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_vector) "_get returns zero real above upper bound"); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_vector) "_get returns zero imag above upper bound"); status = 0; --- 231,249 ---- z1 = FUNCTION (gsl_vector, get) (vc, j - 1); gsl_test (!status, ! NAME (gsl_vector) "_get traps index below lower bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_vector) "_get returns zero real below lower bound"); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_vector) "_get returns zero imag below lower bound"); status = 0; z1 = FUNCTION (gsl_vector, get) (vc, N + 1); gsl_test (!status, ! NAME (gsl_vector) "_get traps index above upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_vector) "_get returns zero real above upper bound"); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_vector) "_get returns zero imag above upper bound"); status = 0; *************** *** 251,257 **** gsl_test (!status, NAME (gsl_vector) "_get traps index at upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_vector) "_get returns zero real at upper bound"); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_vector) "_get returns zero imag at upper bound"); FUNCTION (gsl_vector, free) (vc); --- 251,257 ---- gsl_test (!status, NAME (gsl_vector) "_get traps index at upper bound"); gsl_test (GSL_REAL (z1) != 0, ! NAME (gsl_vector) "_get returns zero real at upper bound"); gsl_test (GSL_IMAG (z1) != 0, ! NAME (gsl_vector) "_get returns zero imag at upper bound"); FUNCTION (gsl_vector, free) (vc); diff -x.info* -rc2P gsl-1.3/vector/test_io.c gsl-1.4/vector/test_io.c *** gsl-1.3/vector/test_io.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/vector/test_io.c Fri Jul 25 15:18:16 2003 *************** *** 33,37 **** for (i = 0; i < N; i++) { ! FUNCTION (gsl_vector, set) (v, i, (ATOMIC) i); }; --- 33,37 ---- for (i = 0; i < N; i++) { ! FUNCTION (gsl_vector, set) (v, i, (ATOMIC) i); }; *************** *** 49,54 **** for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) i) ! status = 1; }; --- 49,54 ---- for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) i) ! status = 1; }; diff -x.info* -rc2P gsl-1.3/vector/test_source.c gsl-1.4/vector/test_source.c *** gsl-1.3/vector/test_source.c Sun Dec 15 19:17:09 2002 --- gsl-1.4/vector/test_source.c Fri Jul 25 15:18:16 2003 *************** *** 45,53 **** { if (v->data[i] != (ATOMIC) i) ! status = 1; }; gsl_test (status, ! NAME (gsl_vector) "_set" DESC " writes into array"); --- 45,53 ---- { if (v->data[i] != (ATOMIC) i) ! status = 1; }; gsl_test (status, ! NAME (gsl_vector) "_set" DESC " writes into array"); *************** *** 56,63 **** { if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) i) ! status = 1; }; gsl_test (status, ! NAME (gsl_vector) "_get" DESC " reads from array"); --- 56,63 ---- { if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) i) ! status = 1; }; gsl_test (status, ! NAME (gsl_vector) "_get" DESC " reads from array"); *************** *** 70,74 **** { if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) (2 * i)) ! status = 1; }; gsl_test (status, NAME (gsl_vector) "_get" DESC " reads with stride"); --- 70,74 ---- { if (FUNCTION (gsl_vector, get) (v, i) != (ATOMIC) (2 * i)) ! status = 1; }; gsl_test (status, NAME (gsl_vector) "_get" DESC " reads with stride"); *************** *** 84,88 **** { if (v->data[2 * i] != (ATOMIC) (i + 1000)) ! status = 1; }; --- 84,88 ---- { if (v->data[2 * i] != (ATOMIC) (i + 1000)) ! status = 1; }; *************** *** 279,283 **** ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ } --- 279,283 ---- ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ } *************** *** 296,300 **** for (i = 0; i < N; i++) { ! FUNCTION (gsl_vector, set) (v, i, (ATOMIC) (N - i)); }; --- 296,300 ---- for (i = 0; i < N; i++) { ! FUNCTION (gsl_vector, set) (v, i, (ATOMIC) (N - i)); }; *************** *** 312,317 **** for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) (N - i)) ! status = 1; }; --- 312,317 ---- for (i = 0; i < N; i++) { ! if (w->data[i] != (ATOMIC) (N - i)) ! status = 1; }; *************** *** 321,326 **** } ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ ! FUNCTION (gsl_vector, free) (w); /* free whatever is in w */ } --- 321,326 ---- } ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ ! FUNCTION (gsl_vector, free) (w); /* free whatever is in w */ } *************** *** 349,353 **** gsl_test (!status, NAME (gsl_vector) "_get traps index below lower bound"); gsl_test (x != 0, ! NAME (gsl_vector) "_get returns zero for index below lower bound"); status = 0; --- 349,353 ---- gsl_test (!status, NAME (gsl_vector) "_get traps index below lower bound"); gsl_test (x != 0, ! NAME (gsl_vector) "_get returns zero for index below lower bound"); status = 0; *************** *** 355,359 **** gsl_test (!status, NAME (gsl_vector) "_get traps index above upper bound"); gsl_test (x != 0, ! NAME (gsl_vector) "_get returns zero for index above upper bound"); status = 0; --- 355,359 ---- gsl_test (!status, NAME (gsl_vector) "_get traps index above upper bound"); gsl_test (x != 0, ! NAME (gsl_vector) "_get returns zero for index above upper bound"); status = 0; *************** *** 361,367 **** gsl_test (!status, NAME (gsl_vector) "_get traps index at upper bound"); gsl_test (x != 0, ! NAME (gsl_vector) "_get returns zero for index at upper bound"); ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ } --- 361,367 ---- gsl_test (!status, NAME (gsl_vector) "_get traps index at upper bound"); gsl_test (x != 0, ! NAME (gsl_vector) "_get returns zero for index at upper bound"); ! FUNCTION (gsl_vector, free) (v); /* free whatever is in v */ } diff -x.info* -rc2P gsl-1.3/vector/vector_source.c gsl-1.4/vector/vector_source.c *** gsl-1.3/vector/vector_source.c Thu Sep 6 11:15:52 2001 --- gsl-1.4/vector/vector_source.c Fri Jul 25 15:18:16 2003 *************** *** 24,32 **** if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! const BASE zero = ZERO; ! GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); ! } } --- 24,32 ---- if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! BASE zero = ZERO; ! GSL_ERROR_VAL ("index out of range", GSL_EINVAL, zero); ! } } *************** *** 41,48 **** if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VOID ("index out of range", GSL_EINVAL); ! } } --- 41,48 ---- if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_VOID ("index out of range", GSL_EINVAL); ! } } *************** *** 57,64 **** if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("index out of range", GSL_EINVAL); ! } } --- 57,64 ---- if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("index out of range", GSL_EINVAL); ! } } *************** *** 71,78 **** if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("index out of range", GSL_EINVAL); ! } } --- 71,78 ---- if (gsl_check_range) { ! if (i >= v->size) /* size_t is unsigned, can't be negative */ ! { ! GSL_ERROR_NULL ("index out of range", GSL_EINVAL); ! } }