From: <rr...@us...> - 2008-04-29 15:20:57
|
Revision: 4999 http://octave.svn.sourceforge.net/octave/?rev=4999&view=rev Author: rrogers Date: 2008-04-29 08:20:56 -0700 (Tue, 29 Apr 2008) Log Message: ----------- Added hyperg_1F1, hyperg_U (KummerM,KummerU) only double inputs Added Paths: ----------- trunk/octave-forge/main/gsl/src/#buildgsl_sf.sh.old# trunk/octave-forge/main/gsl/src/DDD_to_D.cc.template trunk/octave-forge/main/gsl/src/Makeconf trunk/octave-forge/main/gsl/src/RCS/ trunk/octave-forge/main/gsl/src/RCS/buildgsl_sf.sh,v trunk/octave-forge/main/gsl/src/autom4te.cache/ trunk/octave-forge/main/gsl/src/autom4te.cache/output.0 trunk/octave-forge/main/gsl/src/autom4te.cache/requests trunk/octave-forge/main/gsl/src/autom4te.cache/traces.0 trunk/octave-forge/main/gsl/src/buildgsl_sf.sh.old trunk/octave-forge/main/gsl/src/config.log trunk/octave-forge/main/gsl/src/config.status trunk/octave-forge/main/gsl/src/configure trunk/octave-forge/main/gsl/src/test/ trunk/octave-forge/main/gsl/src/test/check.m trunk/octave-forge/main/gsl/src/test/test_hyperg.c trunk/octave-forge/main/gsl/src/test/test_hyperg_cor.c Added: trunk/octave-forge/main/gsl/src/#buildgsl_sf.sh.old# =================================================================== --- trunk/octave-forge/main/gsl/src/#buildgsl_sf.sh.old# (rev 0) +++ trunk/octave-forge/main/gsl/src/#buildgsl_sf.sh.old# 2008-04-29 15:20:56 UTC (rev 4999) @@ -0,0 +1,1076 @@ +## Copyright (C) 2004 Teemu Ikonen <tpi...@pc...> +## +## 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, see <http://www.gnu.org/licenses/>. + +# list of missing functions surrounded by spaces +missing=" $* " +cat <<EOF >gsl_sf.cc +// *** DO NOT EDIT *** this file is generated by buildgsl_sf.sh + +EOF +cat precode.cc.template >> gsl_sf.cc + +# double to double + +export octave_name=clausen +export funcname=gsl_sf_clausen +cat << \EOF > docstring.txt +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)). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=dawson +export funcname=gsl_sf_dawson +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_1 +export funcname=gsl_sf_debye_1 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_2 +export funcname=gsl_sf_debye_2 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_3 +export funcname=gsl_sf_debye_3 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_4 +export funcname=gsl_sf_debye_4 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=erf_gsl +export funcname=gsl_sf_erf +cat << \EOF > docstring.txt +These routines compute the error function +erf(x) = (2/\sqrt(\pi)) \int_0^x dt \exp(-t^2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=erfc_gsl +export funcname=gsl_sf_erfc +cat << \EOF > docstring.txt +These routines compute the complementary error function +erfc(x) = 1 - erf(x) = (2/\sqrt(\pi)) \int_x^\infty \exp(-t^2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=log_erfc +export funcname=gsl_sf_log_erfc +cat << \EOF > docstring.txt +These routines compute the logarithm of the complementary error +function \log(\erfc(x)). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=erf_Z +export funcname=gsl_sf_erf_Z +cat << \EOF > docstring.txt +These routines compute the Gaussian probability function +Z(x) = (1/(2\pi)) \exp(-x^2/2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=erf_Q +export funcname=gsl_sf_erf_Q +cat << \EOF > docstring.txt +These routines compute the upper tail of the Gaussian probability +function Q(x) = (1/(2\pi)) \int_x^\infty dt \exp(-t^2/2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +if test -n "${missing##* hazard *}"; then +export octave_name=hazard +export funcname=gsl_sf_hazard +cat << \EOF > docstring.txt +The hazard function for the normal distrbution, also known as the +inverse Mill's ratio, is defined as +h(x) = Z(x)/Q(x) = \sqrt@{2/\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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc +fi + + +export octave_name=expm1 +export funcname=gsl_sf_expm1 +cat << \EOF > docstring.txt +These routines compute the quantity \exp(x)-1 using an algorithm that +is accurate for small x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=exprel +export funcname=gsl_sf_exprel +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=exprel_2 +export funcname=gsl_sf_exprel_2 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_E1 +export funcname=gsl_sf_expint_E1 +cat << \EOF > docstring.txt +These routines compute the exponential integral E_1(x), + +E_1(x) := Re \int_1^\infty dt \exp(-xt)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_E2 +export funcname=gsl_sf_expint_E2 +cat << \EOF > docstring.txt +These routines compute the second-order exponential integral E_2(x), + +E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_Ei +export funcname=gsl_sf_expint_Ei +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Shi +export funcname=gsl_sf_Shi +cat << \EOF > docstring.txt +These routines compute the integral Shi(x) = \int_0^x dt \sinh(t)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Chi +export funcname=gsl_sf_Chi +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_3 +export funcname=gsl_sf_expint_3 +cat << \EOF > docstring.txt +These routines compute the exponential integral +Ei_3(x) = \int_0^x dt \exp(-t^3) for x >= 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Si +export funcname=gsl_sf_Si +cat << \EOF > docstring.txt +These routines compute the Sine integral Si(x) = \int_0^x dt \sin(t)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Ci +export funcname=gsl_sf_Ci +cat << \EOF > docstring.txt +These routines compute the Cosine integral +Ci(x) = -\int_x^\infty dt \cos(t)/t for x > 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=atanint +export funcname=gsl_sf_atanint +cat << \EOF > docstring.txt +These routines compute the Arctangent integral +AtanInt(x) = \int_0^x dt \arctan(t)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_mhalf +export funcname=gsl_sf_fermi_dirac_mhalf +cat << \EOF > docstring.txt +These routines compute the complete Fermi-Dirac integral F_@{-1/2@}(x). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_half +export funcname=gsl_sf_fermi_dirac_half +cat << \EOF > docstring.txt +These routines compute the complete Fermi-Dirac integral F_@{1/2@}(x). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_3half +export funcname=gsl_sf_fermi_dirac_3half +cat << \EOF > docstring.txt +These routines compute the complete Fermi-Dirac integral F_@{3/2@}(x). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gamma_gsl +export funcname=gsl_sf_gamma +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lngamma_gsl +export funcname=gsl_sf_lngamma +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gammastar +export funcname=gsl_sf_gammastar +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gammainv_gsl +export funcname=gsl_sf_gammainv +cat << \EOF > docstring.txt +These routines compute the reciprocal of the gamma function, 1/\Gamma(x) using the real Lanczos method. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lambert_W0 +export funcname=gsl_sf_lambert_W0 +cat << \EOF > docstring.txt +These compute the principal branch of the Lambert W function, W_0(x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lambert_Wm1 +export funcname=gsl_sf_lambert_Wm1 +cat << \EOF > docstring.txt +These compute the secondary real-valued branch of the Lambert +W function, W_@{-1@}(x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=log_1plusx +export funcname=gsl_sf_log_1plusx +cat << \EOF > docstring.txt +These routines compute \log(1 + x) for x > -1 using an algorithm that +is accurate for small x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=log_1plusx_mx +export funcname=gsl_sf_log_1plusx_mx +cat << \EOF > docstring.txt +These routines compute \log(1 + x) - x for x > -1 using an algorithm +that is accurate for small x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=psi +export funcname=gsl_sf_psi +cat << \EOF > docstring.txt +These routines compute the digamma function \psi(x) for general x, +x \ne 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=psi_1piy +export funcname=gsl_sf_psi_1piy +cat << \EOF > docstring.txt +These routines compute the real part of the digamma function on +the line 1+i y, Re[\psi(1 + i y)]. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=synchrotron_1 +export funcname=gsl_sf_synchrotron_1 +cat << \EOF > docstring.txt +These routines compute the first synchrotron function +x \int_x^\infty dt K_@{5/3@}(t) for x >= 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=synchrotron_2 +export funcname=gsl_sf_synchrotron_2 +cat << \EOF > docstring.txt +These routines compute the second synchrotron function +x K_@{2/3@}(x) for x >= 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_2 +export funcname=gsl_sf_transport_2 +cat << \EOF > docstring.txt +These routines compute the transport function J(2,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_3 +export funcname=gsl_sf_transport_3 +cat << \EOF > docstring.txt +These routines compute the transport function J(3,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_4 +export funcname=gsl_sf_transport_4 +cat << \EOF > docstring.txt +These routines compute the transport function J(4,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_5 +export funcname=gsl_sf_transport_5 +cat << \EOF > docstring.txt +These routines compute the transport function J(5,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=sinc_gsl +export funcname=gsl_sf_sinc +cat << \EOF > docstring.txt +These routines compute \sinc(x) = \sin(\pi x) / (\pi x) for any value of x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lnsinh +export funcname=gsl_sf_lnsinh +cat << \EOF > docstring.txt +These routines compute \log(\sinh(x)) for x > 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lncosh +export funcname=gsl_sf_lncosh +cat << \EOF > docstring.txt +These routines compute \log(\cosh(x)) for any x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=zeta +export funcname=gsl_sf_zeta +cat << \EOF > docstring.txt +These routines compute the Riemann zeta function \zeta(s) for +arbitrary s, s \ne 1. + +The Riemann zeta function is defined by the infinite sum +\zeta(s) = \sum_@{k=1@}^\infty k^@{-s@}. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=eta +export funcname=gsl_sf_eta +cat << \EOF > docstring.txt +These routines compute the eta function \eta(s) for arbitrary s. + +The eta function is defined by \eta(s) = (1-2^@{1-s@}) \zeta(s). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + + +# (int, double) to double + +export octave_name=bessel_Jn +export funcname=gsl_sf_bessel_Jn +cat << \EOF > docstring.txt +These routines compute the regular cylindrical Bessel function of +order n, J_n(x). +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Yn +export funcname=gsl_sf_bessel_Yn +cat << \EOF > docstring.txt +These routines compute the irregular cylindrical Bessel function of +order n, Y_n(x), for x>0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_In +export funcname=gsl_sf_bessel_In +cat << \EOF > docstring.txt +These routines compute the regular modified cylindrical Bessel +function of order n, I_n(x). +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_In_scaled +export funcname=gsl_sf_bessel_In_scaled +cat << \EOF > docstring.txt +These routines compute the scaled regular modified cylindrical Bessel +function of order n, \exp(-|x|) I_n(x) +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Kn +export funcname=gsl_sf_bessel_Kn +cat << \EOF > docstring.txt +These routines compute the irregular modified cylindrical Bessel +function of order n, K_n(x), for x > 0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Kn_scaled +export funcname=gsl_sf_bessel_Kn_scaled +cat << \EOF > docstring.txt + +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_jl +export funcname=gsl_sf_bessel_jl +cat << \EOF > docstring.txt +These routines compute the regular spherical Bessel function of +order l, j_l(x), for l >= 0 and x >= 0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_yl +export funcname=gsl_sf_bessel_yl +cat << \EOF > docstring.txt +These routines compute the irregular spherical Bessel function of +order l, y_l(x), for l >= 0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_il_scaled +export funcname=gsl_sf_bessel_il_scaled +cat << \EOF > docstring.txt +These routines compute the scaled regular modified spherical Bessel +function of order l, \exp(-|x|) i_l(x) +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_kl_scaled +export funcname=gsl_sf_bessel_kl_scaled +cat << \EOF > docstring.txt +These routines compute the scaled irregular modified spherical Bessel +function of order l, \exp(x) k_l(x), for x>0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=exprel_n +export funcname=gsl_sf_exprel_n +cat << \EOF > docstring.txt +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) +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_int +export funcname=gsl_sf_fermi_dirac_int +cat << \EOF > docstring.txt +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)). +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=taylorcoeff +export funcname=gsl_sf_taylorcoeff +cat << \EOF > docstring.txt +These routines compute the Taylor coefficient x^n / n! +for x >= 0, n >= 0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=legendre_Pl +export funcname=gsl_sf_legendre_Pl +cat << \EOF > docstring.txt +These functions evaluate the Legendre polynomial P_l(x) for a specific +value of l, x subject to l >= 0, |x| <= 1 +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=legendre_Ql +export funcname=gsl_sf_legendre_Ql +cat << \EOF > docstring.txt +These routines compute the Legendre function Q_l(x) for x > -1, x != 1 +and l >= 0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=psi_n +export funcname=gsl_sf_psi_n +cat << \EOF > docstring.txt +These routines compute the polygamma function \psi^@{(m)@}(x) +for m >= 0, x > 0. +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + + +# (double, double) to double + +export octave_name=bessel_Jnu +export funcname=gsl_sf_bessel_Jnu +cat << \EOF > docstring.txt +These routines compute the regular cylindrical Bessel function of +fractional order nu, J_\nu(x). +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Ynu +export funcname=gsl_sf_bessel_Ynu +cat << \EOF > docstring.txt +These routines compute the irregular cylindrical Bessel function of +fractional order nu, Y_\nu(x). +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Inu +export funcname=gsl_sf_bessel_Inu +cat << \EOF > docstring.txt +These routines compute the regular modified Bessel function of +fractional order nu, I_\nu(x) for x>0, \nu>0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Inu_scaled +export funcname=gsl_sf_bessel_Inu_scaled +cat << \EOF > docstring.txt +These routines compute the scaled regular modified Bessel function of +fractional order nu, \exp(-|x|)I_\nu(x) for x>0, \nu>0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Knu +export funcname=gsl_sf_bessel_Knu +cat << \EOF > docstring.txt +These routines compute the irregular modified Bessel function of +fractional order nu, K_\nu(x) for x>0, \nu>0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_lnKnu +export funcname=gsl_sf_bessel_lnKnu +cat << \EOF > docstring.txt +These routines compute the logarithm of the irregular modified Bessel +function of fractional order nu, \ln(K_\nu(x)) for x>0, \nu>0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Knu_scaled +export funcname=gsl_sf_bessel_Knu_scaled +cat << \EOF > docstring.txt +These routines compute the scaled irregular modified Bessel function +of fractional order nu, \exp(+|x|) K_\nu(x) for x>0, \nu>0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=exp_mult +export funcname=gsl_sf_exp_mult +cat << \EOF > docstring.txt +These routines exponentiate x and multiply by the factor y to return +the product y \exp(x). +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_inc_0 +export funcname=gsl_sf_fermi_dirac_inc_0 +cat << \EOF > docstring.txt +These routines compute the incomplete Fermi-Dirac integral with an +index of zero, F_0(x,b) = \ln(1 + e^@{b-x@}) - (b-x). +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=poch +export funcname=gsl_sf_poch +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lnpoch +export funcname=gsl_sf_lnpoch +cat << \EOF > docstring.txt +These routines compute the logarithm of the Pochhammer symbol, +\log((a)_x) = \log(\Gamma(a + x)/\Gamma(a)) for a > 0, a+x > 0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=pochrel +export funcname=gsl_sf_pochrel +cat << \EOF > docstring.txt +These routines compute the relative Pochhammer symbol ((a,x) - 1)/x +where (a,x) = (a)_x := \Gamma(a + x)/\Gamma(a). +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gamma_inc_Q +export funcname=gsl_sf_gamma_inc_Q +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gamma_inc_P +export funcname=gsl_sf_gamma_inc_P +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +if test -n "${missing##* gamma_inc *@}"; then +export octave_name=gamma_inc +export funcname=gsl_sf_gamma_inc +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc +fi + + +export octave_name=beta_gsl +export funcname=gsl_sf_beta +cat << \EOF > docstring.txt +These routines compute the Beta Function, +B(a,b) = \Gamma(a)\Gamma(b)/\Gamma(a+b) for a > 0, b > 0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lnbeta +export funcname=gsl_sf_lnbeta +cat << \EOF > docstring.txt +These routines compute the logarithm of the Beta Function, +\log(B(a,b)) for a > 0, b > 0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=hyperg_0F1 +export funcname=gsl_sf_hyperg_0F1 +cat << \EOF > docstring.txt +These routines compute the hypergeometric function 0F1(c,x). +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=conicalP_half +export funcname=gsl_sf_conicalP_half +cat << \EOF > docstring.txt +These routines compute the irregular Spherical Conical Function +P^@{1/2@}_@{-1/2 + i \lambda@}(x) for x > -1. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=conicalP_mhalf +export funcname=gsl_sf_conicalP_mhalf +cat << \EOF > docstring.txt +These routines compute the regular Spherical Conical Function +P^@{-1/2@}_@{-1/2 + i \lambda@}(x) for x > -1. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=conicalP_0 +export funcname=gsl_sf_conicalP_0 +cat << \EOF > docstring.txt +These routines compute the conical function P^0_@{-1/2 + i \lambda@}(x) +for x > -1. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=conicalP_1 +export funcname=gsl_sf_conicalP_1 +cat << \EOF > docstring.txt +These routines compute the conical function P^1_@{-1/2 + i \lambda@}(x) +for x > -1. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=hzeta +export funcname=gsl_sf_hzeta +cat << \EOF > docstring.txt +These routines compute the Hurwitz zeta function \zeta(s,q) +for s > 1, q > 0. +EOF +./replace_template.sh double_double_to_double.cc.template >> gsl_sf.cc + + + +# (double, mode) to double + +export octave_name=airy_Ai +export funcname=gsl_sf_airy_Ai +cat << \EOF > docstring.txt +These routines compute the Airy function Ai(x) with an accuracy +specified by mode. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Bi +export funcname=gsl_sf_airy_Bi +cat << \EOF > docstring.txt +These routines compute the Airy function Bi(x) with an accuracy +specified by mode. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Ai_scaled +export funcname=gsl_sf_airy_Ai_scaled +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Bi_scaled +export funcname=gsl_sf_airy_Bi_scaled +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Ai_deriv +export funcname=gsl_sf_airy_Ai_deriv +cat << \EOF > docstring.txt +These routines compute the Airy function derivative Ai'(x) with an +accuracy specified by mode. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Bi_deriv +export funcname=gsl_sf_airy_Bi_deriv +cat << \EOF > docstring.txt +These routines compute the Airy function derivative Bi'(x) with an +accuracy specified by mode. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Ai_deriv_scaled +export funcname=gsl_sf_airy_Ai_deriv_scaled +cat << \EOF > docstring.txt +These routines compute the derivative of the scaled Airy function +S_A(x) Ai(x). +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_Bi_deriv_scaled +export funcname=gsl_sf_airy_Bi_deriv_scaled +cat << \EOF > docstring.txt +These routines compute the derivative of the scaled Airy function +S_B(x) Bi(x). +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=ellint_Kcomp +export funcname=gsl_sf_ellint_Kcomp +cat << \EOF > docstring.txt +These routines compute the complete elliptic integral K(k) to the +accuracy specified by the mode variable mode. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + +export octave_name=ellint_Ecomp +export funcname=gsl_sf_ellint_Ecomp +cat << \EOF > docstring.txt +These routines compute the complete elliptic integral E(k) to the +accuracy specified by the mode variable mode. +EOF +./replace_template.sh double_mode_to_double.cc.template >> gsl_sf.cc + + + +# int to double + +export octave_name=airy_zero_Ai +export funcname=gsl_sf_airy_zero_Ai +cat << \EOF > docstring.txt +These routines compute the location of the s-th zero of the Airy +function Ai(x). +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_zero_Bi +export funcname=gsl_sf_airy_zero_Bi +cat << \EOF > docstring.txt +These routines compute the location of the s-th zero of the Airy +function Bi(x). +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_zero_Ai_deriv +export funcname=gsl_sf_airy_zero_Ai_deriv +cat << \EOF > docstring.txt +These routines compute the location of the s-th zero of the Airy +function derivative Ai'(x). +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=airy_zero_Bi_deriv +export funcname=gsl_sf_airy_zero_Bi_deriv +cat << \EOF > docstring.txt +These routines compute the location of the s-th zero of the Airy +function derivative Bi'(x). +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_zero_J0 +export funcname=gsl_sf_bessel_zero_J0 +cat << \EOF > docstring.txt +These routines compute the location of the s-th positive zero of the +Bessel function J_0(x). +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_zero_J1 +export funcname=gsl_sf_bessel_zero_J1 +cat << \EOF > docstring.txt +These routines compute the location of the s-th positive zero of the +Bessel function J_1(x). +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=psi_1_int +export funcname=gsl_sf_psi_1_int +cat << \EOF > docstring.txt +These routines compute the Trigamma function \psi'(n) for positive +integer n. +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=zeta_int +export funcname=gsl_sf_zeta_int +cat << \EOF > docstring.txt +These routines compute the Riemann zeta function \zeta(n) for +integer n, n \ne 1. +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +export octave_name=eta_int +export funcname=gsl_sf_eta_int +cat << \EOF > docstring.txt +These routines compute the eta function \eta(n) for integer n. +EOF +./replace_template.sh int_to_double.cc.template >> gsl_sf.cc + + +# (int, int, double) to double + +export octave_name=legendre_Plm +export funcname=gsl_sf_legendre_Plm +cat << \EOF > docstring.txt +These routines compute the associated Legendre polynomial P_l^m(x) +for m >= 0, l >= m, |x| <= 1. +EOF +./replace_template.sh int_int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=legendre_sphPlm +export funcname=gsl_sf_legendre_sphPlm +cat << \EOF > docstring.txt +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). +EOF +./replace_template.sh int_int_double_to_double.cc.template >> gsl_sf.cc Added: trunk/octave-forge/main/gsl/src/DDD_to_D.cc.template =================================================================== --- trunk/octave-forge/main/gsl/src/DDD_to_D.cc.template (rev 0) +++ trunk/octave-forge/main/gsl/src/DDD_to_D.cc.template 2008-04-29 15:20:56 UTC (rev 4999) @@ -0,0 +1,166 @@ +DEFUN_DLD(GSL_OCTAVE_NAME, args, nargout, " -*- texinfo -*-\n\ +@deftypefn {Loadable Function} {@var{out} =} GSL_OCTAVE_NAME (@var{x0}, @var{x1}, @var{x2})\n\ +@deftypefnx {Loadable Function} {[@var{out}, @var{err}] =} GSL_OCTAVE_NAME (@dots{})\n\ +\n\ +@var{err} contains an estimate of the absolute error in the value @var{out}.a.\n\ +\n\ +This function is from the GNU Scientific Library,\n\ +see @url{http://www.gnu.org/software/gsl/} for documentation.\n\ +@end deftypefn\n\ +") +// +// +// Generated R. Rogers 4/21/2008 +// Version 1 Expanded to three argument input and added maintainence hints +// +{ + int i; + dim_vector dv; + + gsl_set_error_handler (octave_gsl_errorhandler); +// Check number of arguments here + if((args.length() != 3 )|| (nargout > 2)) { + print_usage (); + return octave_value(); + } +// Check argument types here + if(!args(0).is_real_type() || !args(1).is_real_type()|| !args(2).is_real_type()) { + error("The arguments must be real."); + print_usage (); + return octave_value(); + } + + // Nice combinatorial explosion here +// Generate internal variables + NDArray x0 = args(0).array_value(); + NDArray x1 = args(1).array_value(); + NDArray x2 = args(2).array_value(); + // +// Case one; all inputs the same length A A A + if((x0.length() == x1.length() )&& (x0.length()==x2.length())) { + dv = x0.dims(); + NDArray out(dv); + int len = x0.length(); + // One output argument + if(nargout < 2) { + for(i = 0; i < len; i++) { + out.xelem(i) = GSL_FUNC_NAME (x0.xelem(i), x1.xelem(i),x2.xelem(i)); + } + return octave_value(out); + // Two arguments + } else { + NDArray err(dv); + gsl_sf_result result; + octave_value_list retval; + for(i = 0; i < len; i++) { + GSL_FUNC_NAME_e (x0.xelem(i), x1.xelem(i), x2.xelem(i), &result); + out.xelem(i) = result.val; + err.xelem(i) = result.err; + } + retval(1) = octave_value(err); + retval(0) = octave_value(out); + return retval; + } +// +// Now we start on having only one array and two scalars, A S S + } else if(( x0.length() != 1)&& (x1.length() == 1) && (x2.length()==1)) { + dv = x0.dims(); + NDArray out(dv); + int len = x0.length(); + // int x1_int = static_cast<int>(x1.xelem(0)); + // int x2_int = static_cast<int>(x2.xelem(0)); + double x1_real = x1.xelem(0); + double x2_real = x2.xelem(0); + // One output argument + if(nargout < 2) { + for(i = 0; i < len; i++) { + out.xelem(i) = GSL_FUNC_NAME (x0.xelem(i),x1_real,x2_real); + } + return octave_value(out); + // Two output argument + } else { + NDArray err(dv); + gsl_sf_result result; + octave_value_list retval; + for(i = 0; i < len; i++) { + GSL_FUNC_NAME_e (x0.xelem(i),x1_real,x2_real, &result); + out.xelem(i) = result.val; + err.xelem(i) = result.err; + } + retval(1) = octave_value(err); + retval(0) = octave_value(out); + return retval; + } +// S A S input form + } else if((x0.length() == 1)&& ( x1.length() != 1) && (x2.length()==1)) { + dv = x1.dims(); + NDArray out(dv); + int len = x1.length(); + // int x0_int = static_cast<int>(x0.xelem(0)); + // int x2_int = static_cast<int>(x2.xelem(0)); + double x0_real = x0.xelem(0); + double x2_real = x2.xelem(0); + // One output argument + if(nargout < 2) { + for(i = 0; i < len; i++) { + out.xelem(i) = GSL_FUNC_NAME (x0_real,x1.xelem(i),x2_real); + } + return octave_value(out); + // Two output argument + } else { + NDArray err(dv); + gsl_sf_result result; + octave_value_list retval; + for(i = 0; i < len; i++) { + GSL_FUNC_NAME_e (x0_real,x1.xelem(i),x2_real, &result); + out.xelem(i) = result.val; + err.xelem(i) = result.err; + } + retval(1) = octave_value(err); + retval(0) = octave_value(out); + return retval; + } +// S S A input form + } else if((x0.length() == 1)&& ( x1.length() == 1) && ( x2.length()!=1)) { + dv = x2.dims(); + NDArray out(dv); + int len = x2.length(); + // int x0_int = static_cast<int>(x0.xelem(0)); + // int x1_int = static_cast<int>(x1.xelem(0)); + double x0_real = x0.xelem(0); + double x1_real = x1.xelem(0); + // One output argument + if(nargout < 2) { + for(i = 0; i < len; i++) { + out.xelem(i) = GSL_FUNC_NAME (x0_real,x1_real,x2.xelem(i)); + } + return octave_value(out); + // Two output argument + } else { + NDArray err(dv); + gsl_sf_result result; + octave_value_list retval; + for(i = 0; i < len; i++) { + GSL_FUNC_NAME_e (x0_real,x1_real,x2.xelem(i), &result); + out.xelem(i) = result.val; + err.xelem(i) = result.err; + } + retval(1) = octave_value(err); + retval(0) = octave_value(out); + return retval; + } + } else { + error("First, second, and third argument must either have the same size, or two of them must be scalar."); + print_usage (); + } + + return octave_value(); + +} + + +/* +;;; Local Variables: *** +;;; mode: C++ *** +;;; End: *** +*/ Property changes on: trunk/octave-forge/main/gsl/src/DDD_to_D.cc.template ___________________________________________________________________ Name: svn:executable + * Added: trunk/octave-forge/main/gsl/src/Makeconf =================================================================== --- trunk/octave-forge/main/gsl/src/Makeconf (rev 0) +++ trunk/octave-forge/main/gsl/src/Makeconf 2008-04-29 15:20:56 UTC (rev 4999) @@ -0,0 +1,70 @@ + +## Makeconf is automatically generated from Makeconf.base and Makeconf.add +## in the various subdirectories. To regenerate, use ./autogen.sh to +## create a new ./Makeconf.in, then use ./configure to generate a new +## Makeconf. + +OCTAVE_FORGE = 1 + +SHELL = /bin/sh + +canonical_host_type = [?1034hi386-redhat-linux-gnu +prefix = /usr/local +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin +mandir = ${datarootdir}/man +libdir = ${exec_prefix}/lib +datadir = ${datarootdir} +infodir = ${datarootdir}/info +includedir = ${prefix}/include +datarootdir = ${prefix}/share +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALLOCT=octinst.sh + +DESTDIR = + +RANLIB = ranlib +STRIP = strip +LN_S = ln -s + +AWK = @AWK@ + +# Most octave programs will be compiled with $(MKOCTFILE). Those which +# cannot use mkoctfile directly can request the flags that mkoctfile +# would use as follows: +# FLAG = $(shell $(MKOCTFILE) -p FLAG) +# The following flags are for compiling programs that are independent +# of Octave. How confusing. +CC = gcc +CFLAGS = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables +CPPFLAGS = +CPICFLAG = -fPIC +CXX = g++ +CXXFLAGS = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables +CXXPICFLAG = -fPIC +F77 = gfortran +FFLAGS = -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -mieee-fp +FPICFLAG = -fPIC + +OCTAVE = octave +OCTAVE_VERSION = [?1034h3.0.0 +MKOCTFILE = mkoctfile -DHAVE_OCTAVE_$(ver) -v +SHLEXT = [?1034hso + +ver = 30 +MPATH = /usr/share/octave/3.0.0/site/m/octave-forge +OPATH = /usr/libexec/octave/3.0.0/site/oct/i386-redhat-linux-gnu/octave-forge +XPATH = /usr/libexec/octave/3.0.0/site/exec/i386-redhat-linux-gnu +ALTMPATH = /usr/share/octave/3.0.0/site/octave-forge-alternatives/m +ALTOPATH = /usr/libexec/octave/3.0.0/site/octave-forge-alternatives/oct/i386-redhat-linux-gnu + +HAVE_GSL=yes +GSL_MISSING= + +%.o: %.c ; $(MKOCTFILE) -c $< +%.o: %.f ; $(MKOCTFILE) -c $< +%.o: %.cc ; $(MKOCTFILE) -c $< +%.oct: %.cc ; $(MKOCTFILE) $< Added: trunk/octave-forge/main/gsl/src/RCS/buildgsl_sf.sh,v =================================================================== --- trunk/octave-forge/main/gsl/src/RCS/buildgsl_sf.sh,v (rev 0) +++ trunk/octave-forge/main/gsl/src/RCS/buildgsl_sf.sh,v 2008-04-29 15:20:56 UTC (rev 4999) @@ -0,0 +1,1100 @@ +head 1.1; +access; +symbols; +locks + rrogers:1.1; strict; +comment @# @; + + +1.1 +date 2008.04.28.19.21.41; author rrogers; state Exp; +branches; +next ; + + +desc +@@ + + +1.1 +log +@Initial revision +@ +text +@## Copyright (C) 2004 Teemu Ikonen <tpikonen@@pcu.helsinki.fi> +## +## 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, see <http://www.gnu.org/licenses/>. + +# list of missing functions surrounded by spaces +missing=" $* " +cat <<EOF >gsl_sf.cc +// *** DO NOT EDIT *** this file is generated by buildgsl_sf.sh + +EOF +cat precode.cc.template >> gsl_sf.cc + +# double to double + +export octave_name=clausen +export funcname=gsl_sf_clausen +cat << \EOF > docstring.txt +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)). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=dawson +export funcname=gsl_sf_dawson +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_1 +export funcname=gsl_sf_debye_1 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_2 +export funcname=gsl_sf_debye_2 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_3 +export funcname=gsl_sf_debye_3 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=debye_4 +export funcname=gsl_sf_debye_4 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=erf_gsl +export funcname=gsl_sf_erf +cat << \EOF > docstring.txt +These routines compute the error function +erf(x) = (2/\sqrt(\pi)) \int_0^x dt \exp(-t^2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=erfc_gsl +export funcname=gsl_sf_erfc +cat << \EOF > docstring.txt +These routines compute the complementary error function +erfc(x) = 1 - erf(x) = (2/\sqrt(\pi)) \int_x^\infty \exp(-t^2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=log_erfc +export funcname=gsl_sf_log_erfc +cat << \EOF > docstring.txt +These routines compute the logarithm of the complementary error +function \log(\erfc(x)). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=erf_Z +export funcname=gsl_sf_erf_Z +cat << \EOF > docstring.txt +These routines compute the Gaussian probability function +Z(x) = (1/(2\pi)) \exp(-x^2/2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + +export octave_name=erf_Q +export funcname=gsl_sf_erf_Q +cat << \EOF > docstring.txt +These routines compute the upper tail of the Gaussian probability +function Q(x) = (1/(2\pi)) \int_x^\infty dt \exp(-t^2/2). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +if test -n "${missing##* hazard *}"; then +export octave_name=hazard +export funcname=gsl_sf_hazard +cat << \EOF > docstring.txt +The hazard function for the normal distrbution, also known as the +inverse Mill's ratio, is defined as +h(x) = Z(x)/Q(x) = \sqrt@@{2/\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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc +fi + + +export octave_name=expm1 +export funcname=gsl_sf_expm1 +cat << \EOF > docstring.txt +These routines compute the quantity \exp(x)-1 using an algorithm that +is accurate for small x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=exprel +export funcname=gsl_sf_exprel +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=exprel_2 +export funcname=gsl_sf_exprel_2 +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_E1 +export funcname=gsl_sf_expint_E1 +cat << \EOF > docstring.txt +These routines compute the exponential integral E_1(x), + +E_1(x) := Re \int_1^\infty dt \exp(-xt)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_E2 +export funcname=gsl_sf_expint_E2 +cat << \EOF > docstring.txt +These routines compute the second-order exponential integral E_2(x), + +E_2(x) := \Re \int_1^\infty dt \exp(-xt)/t^2. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_Ei +export funcname=gsl_sf_expint_Ei +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Shi +export funcname=gsl_sf_Shi +cat << \EOF > docstring.txt +These routines compute the integral Shi(x) = \int_0^x dt \sinh(t)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Chi +export funcname=gsl_sf_Chi +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=expint_3 +export funcname=gsl_sf_expint_3 +cat << \EOF > docstring.txt +These routines compute the exponential integral +Ei_3(x) = \int_0^x dt \exp(-t^3) for x >= 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Si +export funcname=gsl_sf_Si +cat << \EOF > docstring.txt +These routines compute the Sine integral Si(x) = \int_0^x dt \sin(t)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=Ci +export funcname=gsl_sf_Ci +cat << \EOF > docstring.txt +These routines compute the Cosine integral +Ci(x) = -\int_x^\infty dt \cos(t)/t for x > 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=atanint +export funcname=gsl_sf_atanint +cat << \EOF > docstring.txt +These routines compute the Arctangent integral +AtanInt(x) = \int_0^x dt \arctan(t)/t. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_mhalf +export funcname=gsl_sf_fermi_dirac_mhalf +cat << \EOF > docstring.txt +These routines compute the complete Fermi-Dirac integral F_@@{-1/2@@}(x). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_half +export funcname=gsl_sf_fermi_dirac_half +cat << \EOF > docstring.txt +These routines compute the complete Fermi-Dirac integral F_@@{1/2@@}(x). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=fermi_dirac_3half +export funcname=gsl_sf_fermi_dirac_3half +cat << \EOF > docstring.txt +These routines compute the complete Fermi-Dirac integral F_@@{3/2@@}(x). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gamma_gsl +export funcname=gsl_sf_gamma +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lngamma_gsl +export funcname=gsl_sf_lngamma +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gammastar +export funcname=gsl_sf_gammastar +cat << \EOF > docstring.txt +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=gammainv_gsl +export funcname=gsl_sf_gammainv +cat << \EOF > docstring.txt +These routines compute the reciprocal of the gamma function, 1/\Gamma(x) using the real Lanczos method. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lambert_W0 +export funcname=gsl_sf_lambert_W0 +cat << \EOF > docstring.txt +These compute the principal branch of the Lambert W function, W_0(x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lambert_Wm1 +export funcname=gsl_sf_lambert_Wm1 +cat << \EOF > docstring.txt +These compute the secondary real-valued branch of the Lambert +W function, W_@@{-1@@}(x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=log_1plusx +export funcname=gsl_sf_log_1plusx +cat << \EOF > docstring.txt +These routines compute \log(1 + x) for x > -1 using an algorithm that +is accurate for small x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=log_1plusx_mx +export funcname=gsl_sf_log_1plusx_mx +cat << \EOF > docstring.txt +These routines compute \log(1 + x) - x for x > -1 using an algorithm +that is accurate for small x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=psi +export funcname=gsl_sf_psi +cat << \EOF > docstring.txt +These routines compute the digamma function \psi(x) for general x, +x \ne 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=psi_1piy +export funcname=gsl_sf_psi_1piy +cat << \EOF > docstring.txt +These routines compute the real part of the digamma function on +the line 1+i y, Re[\psi(1 + i y)]. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=synchrotron_1 +export funcname=gsl_sf_synchrotron_1 +cat << \EOF > docstring.txt +These routines compute the first synchrotron function +x \int_x^\infty dt K_@@{5/3@@}(t) for x >= 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=synchrotron_2 +export funcname=gsl_sf_synchrotron_2 +cat << \EOF > docstring.txt +These routines compute the second synchrotron function +x K_@@{2/3@@}(x) for x >= 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_2 +export funcname=gsl_sf_transport_2 +cat << \EOF > docstring.txt +These routines compute the transport function J(2,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_3 +export funcname=gsl_sf_transport_3 +cat << \EOF > docstring.txt +These routines compute the transport function J(3,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_4 +export funcname=gsl_sf_transport_4 +cat << \EOF > docstring.txt +These routines compute the transport function J(4,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=transport_5 +export funcname=gsl_sf_transport_5 +cat << \EOF > docstring.txt +These routines compute the transport function J(5,x). + +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. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=sinc_gsl +export funcname=gsl_sf_sinc +cat << \EOF > docstring.txt +These routines compute \sinc(x) = \sin(\pi x) / (\pi x) for any value of x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lnsinh +export funcname=gsl_sf_lnsinh +cat << \EOF > docstring.txt +These routines compute \log(\sinh(x)) for x > 0. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=lncosh +export funcname=gsl_sf_lncosh +cat << \EOF > docstring.txt +These routines compute \log(\cosh(x)) for any x. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=zeta +export funcname=gsl_sf_zeta +cat << \EOF > docstring.txt +These routines compute the Riemann zeta function \zeta(s) for +arbitrary s, s \ne 1. + +The Riemann zeta function is defined by the infinite sum +\zeta(s) = \sum_@@{k=1@@}^\infty k^@@{-s@@}. +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=eta +export funcname=gsl_sf_eta +cat << \EOF > docstring.txt +These routines compute the eta function \eta(s) for arbitrary s. + +The eta function is defined by \eta(s) = (1-2^@@{1-s@@}) \zeta(s). +EOF +./replace_template.sh double_to_double.cc.template >> gsl_sf.cc + + + +# (int, double) to double + +export octave_name=bessel_Jn +export funcname=gsl_sf_bessel_Jn +cat << \EOF > docstring.txt +These routines compute the regular cylindrical Bessel function of +order n, J_n(x). +EOF +./replace_template.sh int_double_to_double.cc.template >> gsl_sf.cc + + +export octave_name=bessel_Yn +export funcname=gsl_sf_bessel_Yn +cat << \EOF > docstring.txt +These routines compute the irregular cylindrical Bessel function of +order n, Y_n(x), for x>0. +EOF +./replace_template.sh int_d... [truncated message content] |