|
Packit |
67cb25 |
/* specfunc/gsl_sf_legendre.h
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 Gerard Jungman
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is free software; you can redistribute it and/or modify
|
|
Packit |
67cb25 |
* it under the terms of the GNU General Public License as published by
|
|
Packit |
67cb25 |
* the Free Software Foundation; either version 3 of the License, or (at
|
|
Packit |
67cb25 |
* your option) any later version.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* This program is distributed in the hope that it will be useful, but
|
|
Packit |
67cb25 |
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
67cb25 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
67cb25 |
* General Public License for more details.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* You should have received a copy of the GNU General Public License
|
|
Packit |
67cb25 |
* along with this program; if not, write to the Free Software
|
|
Packit |
67cb25 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Author: G. Jungman */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#ifndef __GSL_SF_LEGENDRE_H__
|
|
Packit |
67cb25 |
#define __GSL_SF_LEGENDRE_H__
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#include <gsl/gsl_sf_result.h>
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#undef __BEGIN_DECLS
|
|
Packit |
67cb25 |
#undef __END_DECLS
|
|
Packit |
67cb25 |
#ifdef __cplusplus
|
|
Packit |
67cb25 |
# define __BEGIN_DECLS extern "C" {
|
|
Packit |
67cb25 |
# define __END_DECLS }
|
|
Packit |
67cb25 |
#else
|
|
Packit |
67cb25 |
# define __BEGIN_DECLS /* empty */
|
|
Packit |
67cb25 |
# define __END_DECLS /* empty */
|
|
Packit |
67cb25 |
#endif
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
__BEGIN_DECLS
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l(x) l >= 0; |x| <= 1
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Pl_e(const int l, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_Pl(const int l, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l(x) for l=0,...,lmax; |x| <= 1
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Pl_array(
|
|
Packit |
67cb25 |
const int lmax, const double x,
|
|
Packit |
67cb25 |
double * result_array
|
|
Packit |
67cb25 |
);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l(x) and P_l'(x) for l=0,...,lmax; |x| <= 1
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Pl_deriv_array(
|
|
Packit |
67cb25 |
const int lmax, const double x,
|
|
Packit |
67cb25 |
double * result_array,
|
|
Packit |
67cb25 |
double * result_deriv_array
|
|
Packit |
67cb25 |
);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l(x), l=1,2,3
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: none
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_P1_e(double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_P2_e(double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_P3_e(double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_P1(const double x);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_P2(const double x);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_P3(const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Q_0(x), x > -1, x != 1
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Q0_e(const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_Q0(const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Q_1(x), x > -1, x != 1
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Q1_e(const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_Q1(const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Q_l(x), x > -1, x != 1, l >= 0
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Ql_e(const int l, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_Ql(const int l, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l^m(x) m >= 0; l >= m; |x| <= 1.0
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Note that this function grows combinatorially with l.
|
|
Packit |
67cb25 |
* Therefore we can easily generate an overflow for l larger
|
|
Packit |
67cb25 |
* than about 150.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* There is no trouble for small m, but when m and l are both large,
|
|
Packit |
67cb25 |
* then there will be trouble. Rather than allow overflows, these
|
|
Packit |
67cb25 |
* functions refuse to calculate when they can sense that l and m are
|
|
Packit |
67cb25 |
* too big.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* If you really want to calculate a spherical harmonic, then DO NOT
|
|
Packit |
67cb25 |
* use this. Instead use legendre_sphPlm() below, which uses a similar
|
|
Packit |
67cb25 |
* recursion, but with the normalized functions.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM, GSL_EOVRFLW
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Plm_e(const int l, const int m, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_Plm(const int l, const int m, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l^m(x) m >= 0; l >= m; |x| <= 1.0
|
|
Packit |
67cb25 |
* l=|m|,...,lmax
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM, GSL_EOVRFLW
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Plm_array(
|
|
Packit |
67cb25 |
const int lmax, const int m, const double x,
|
|
Packit |
67cb25 |
double * result_array
|
|
Packit |
67cb25 |
);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l^m(x) and d(P_l^m(x))/dx; m >= 0; lmax >= m; |x| <= 1.0
|
|
Packit |
67cb25 |
* l=|m|,...,lmax
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM, GSL_EOVRFLW
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_Plm_deriv_array(
|
|
Packit |
67cb25 |
const int lmax, const int m, const double x,
|
|
Packit |
67cb25 |
double * result_array,
|
|
Packit |
67cb25 |
double * result_deriv_array
|
|
Packit |
67cb25 |
);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* P_l^m(x), normalized properly for use in spherical harmonics
|
|
Packit |
67cb25 |
* m >= 0; l >= m; |x| <= 1.0
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* There is no overflow problem, as there is for the
|
|
Packit |
67cb25 |
* standard normalization of P_l^m(x).
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Specifically, it returns:
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* sqrt((2l+1)/(4pi)) sqrt((l-m)!/(l+m)!) P_l^m(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_sphPlm_e(const int l, int m, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_sphPlm(const int l, const int m, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* sphPlm(l,m,x) values
|
|
Packit |
67cb25 |
* m >= 0; l >= m; |x| <= 1.0
|
|
Packit |
67cb25 |
* l=|m|,...,lmax
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_sphPlm_array(
|
|
Packit |
67cb25 |
const int lmax, int m, const double x,
|
|
Packit |
67cb25 |
double * result_array
|
|
Packit |
67cb25 |
);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* sphPlm(l,m,x) and d(sphPlm(l,m,x))/dx values
|
|
Packit |
67cb25 |
* m >= 0; l >= m; |x| <= 1.0
|
|
Packit |
67cb25 |
* l=|m|,...,lmax
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_sphPlm_deriv_array(
|
|
Packit |
67cb25 |
const int lmax, const int m, const double x,
|
|
Packit |
67cb25 |
double * result_array,
|
|
Packit |
67cb25 |
double * result_deriv_array
|
|
Packit |
67cb25 |
);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* size of result_array[] needed for the array versions of Plm
|
|
Packit |
67cb25 |
* (lmax - m + 1)
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_array_size(const int lmax, const int m);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Irregular Spherical Conical Function
|
|
Packit |
67cb25 |
* P^{1/2}_{-1/2 + I lambda}(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* x > -1.0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_conicalP_half_e(const double lambda, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_conicalP_half(const double lambda, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Regular Spherical Conical Function
|
|
Packit |
67cb25 |
* P^{-1/2}_{-1/2 + I lambda}(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* x > -1.0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_conicalP_mhalf_e(const double lambda, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_conicalP_mhalf(const double lambda, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Conical Function
|
|
Packit |
67cb25 |
* P^{0}_{-1/2 + I lambda}(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* x > -1.0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_conicalP_0_e(const double lambda, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_conicalP_0(const double lambda, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Conical Function
|
|
Packit |
67cb25 |
* P^{1}_{-1/2 + I lambda}(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* x > -1.0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_conicalP_1_e(const double lambda, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_conicalP_1(const double lambda, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Regular Spherical Conical Function
|
|
Packit |
67cb25 |
* P^{-1/2-l}_{-1/2 + I lambda}(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* x > -1.0, l >= -1
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_conicalP_sph_reg_e(const int l, const double lambda, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_conicalP_sph_reg(const int l, const double lambda, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Regular Cylindrical Conical Function
|
|
Packit |
67cb25 |
* P^{-m}_{-1/2 + I lambda}(x)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* x > -1.0, m >= -1
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_conicalP_cyl_reg_e(const int m, const double lambda, const double x, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_conicalP_cyl_reg(const int m, const double lambda, const double x);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* The following spherical functions are specializations
|
|
Packit |
67cb25 |
* of Legendre functions which give the regular eigenfunctions
|
|
Packit |
67cb25 |
* of the Laplacian on a 3-dimensional hyperbolic space.
|
|
Packit |
67cb25 |
* Of particular interest is the flat limit, which is
|
|
Packit |
67cb25 |
* Flat-Lim := {lambda->Inf, eta->0, lambda*eta fixed}.
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Zeroth radial eigenfunction of the Laplacian on the
|
|
Packit |
67cb25 |
* 3-dimensional hyperbolic space.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* legendre_H3d_0(lambda,eta) := sin(lambda*eta)/(lambda*sinh(eta))
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Normalization:
|
|
Packit |
67cb25 |
* Flat-Lim legendre_H3d_0(lambda,eta) = j_0(lambda*eta)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* eta >= 0.0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_H3d_0_e(const double lambda, const double eta, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_H3d_0(const double lambda, const double eta);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* First radial eigenfunction of the Laplacian on the
|
|
Packit |
67cb25 |
* 3-dimensional hyperbolic space.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* legendre_H3d_1(lambda,eta) :=
|
|
Packit |
67cb25 |
* 1/sqrt(lambda^2 + 1) sin(lam eta)/(lam sinh(eta))
|
|
Packit |
67cb25 |
* (coth(eta) - lambda cot(lambda*eta))
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Normalization:
|
|
Packit |
67cb25 |
* Flat-Lim legendre_H3d_1(lambda,eta) = j_1(lambda*eta)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* eta >= 0.0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_H3d_1_e(const double lambda, const double eta, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_H3d_1(const double lambda, const double eta);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* l'th radial eigenfunction of the Laplacian on the
|
|
Packit |
67cb25 |
* 3-dimensional hyperbolic space.
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* Normalization:
|
|
Packit |
67cb25 |
* Flat-Lim legendre_H3d_l(l,lambda,eta) = j_l(lambda*eta)
|
|
Packit |
67cb25 |
*
|
|
Packit |
67cb25 |
* eta >= 0.0, l >= 0
|
|
Packit |
67cb25 |
* exceptions: GSL_EDOM
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_H3d_e(const int l, const double lambda, const double eta, gsl_sf_result * result);
|
|
Packit |
67cb25 |
double gsl_sf_legendre_H3d(const int l, const double lambda, const double eta);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* Array of H3d(ell), 0 <= ell <= lmax
|
|
Packit |
67cb25 |
*/
|
|
Packit |
67cb25 |
int gsl_sf_legendre_H3d_array(const int lmax, const double lambda, const double eta, double * result_array);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
/* associated legendre P_{lm} routines */
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
typedef enum
|
|
Packit |
67cb25 |
{
|
|
Packit |
67cb25 |
GSL_SF_LEGENDRE_SCHMIDT,
|
|
Packit |
67cb25 |
GSL_SF_LEGENDRE_SPHARM,
|
|
Packit |
67cb25 |
GSL_SF_LEGENDRE_FULL,
|
|
Packit |
67cb25 |
GSL_SF_LEGENDRE_NONE
|
|
Packit |
67cb25 |
} gsl_sf_legendre_t;
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
int gsl_sf_legendre_array(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
double result_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_array_e(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
const double csphase,
|
|
Packit |
67cb25 |
double result_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv_array(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv_array_e(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
const double csphase,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv_alt_array(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv_alt_array_e(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
const double csphase,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv2_array(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[],
|
|
Packit |
67cb25 |
double result_deriv2_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv2_array_e(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
const double csphase,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[],
|
|
Packit |
67cb25 |
double result_deriv2_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv2_alt_array(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[],
|
|
Packit |
67cb25 |
double result_deriv2_array[]);
|
|
Packit |
67cb25 |
int gsl_sf_legendre_deriv2_alt_array_e(const gsl_sf_legendre_t norm,
|
|
Packit |
67cb25 |
const size_t lmax, const double x,
|
|
Packit |
67cb25 |
const double csphase,
|
|
Packit |
67cb25 |
double result_array[],
|
|
Packit |
67cb25 |
double result_deriv_array[],
|
|
Packit |
67cb25 |
double result_deriv2_array[]);
|
|
Packit |
67cb25 |
size_t gsl_sf_legendre_array_n(const size_t lmax);
|
|
Packit |
67cb25 |
size_t gsl_sf_legendre_array_index(const size_t l, const size_t m);
|
|
Packit |
67cb25 |
size_t gsl_sf_legendre_nlm(const size_t lmax);
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
__END_DECLS
|
|
Packit |
67cb25 |
|
|
Packit |
67cb25 |
#endif /* __GSL_SF_LEGENDRE_H__ */
|