SAF
Loading...
Searching...
No Matches
saf_utility_bessel.c File Reference

A collection of routines for computing spherical and cylindrical Bessel and Hankel functions, including their derivatives. More...

#include "saf_utilities.h"

Go to the source code of this file.

Functions

static double ENVJ (int N, double X)
 Helper function, used when computing spherical bessel function values.
 
static int MSTA1 (double X, int MP)
 Helper function, used when computing spherical bessel function values.
 
static int MSTA2 (double X, int N, int MP)
 Helper function, used when computing spherical bessel function values.
 
static void SPHI (int N, double X, int *NM, double *SI, double *DI)
 Helper function for bessel_in.
 
static void SPHK (int N, double X, int *NM, double *SK, double *DK)
 Helper function for bessel_kn.
 
static void SPHJ (int N, double X, int *NM, double *SJ, double *DJ)
 Helper function for bessel_in.
 
static void SPHY (int N, double X, int *NM, double *SY, double *DY)
 Helper function for bessel_yn.
 
static double Jn (int n, double z)
 Wrapper for the cylindrical Bessel function of the first kind.
 
static double Yn (int n, double z)
 Wrapper for the cylindrical Bessel function of the second kind.
 
void bessel_Jn (int N, double *z, int nZ, double *J_n, double *dJ_n)
 Computes the values of the (cylindrical) Bessel function of the first kind (Jn) and it's derivative (dJn)
 
void bessel_Jn_ALL (int N, double *z, int nZ, double *J_n, double *dJ_n)
 Computes the (cylindrical) Bessel function of the first kind (Jn) and their derivatives (dJn) for ALL orders from 0 to N.
 
void bessel_Yn (int N, double *z, int nZ, double *Y_n, double *dY_n)
 Computes the values of the (cylindrical) Bessel function of the second kind (Yn) and it's derivative (dYn)
 
void bessel_Yn_ALL (int N, double *z, int nZ, double *Y_n, double *dY_n)
 Computes the (cylindrical) Bessel function of the second kind (Yn) and their derivatives (dYn) for ALL orders from 0 to N.
 
void hankel_Hn1 (int N, double *z, int nZ, double_complex *H_n1, double_complex *dH_n1)
 Computes the values of the (cylindrical) Hankel function of the first kind (Hn1) and it's derivative (dHn1)
 
void hankel_Hn1_ALL (int N, double *z, int nZ, double_complex *H_n1, double_complex *dH_n1)
 Computes the (cylindrical) Hankel function of the first kind (Hn1) and their derivatives (dHn1) for ALL orders from 0 to N.
 
void hankel_Hn2 (int N, double *z, int nZ, double_complex *H_n2, double_complex *dH_n2)
 Computes the values of the (cylindrical) Hankel function of the second kind (Hn2) and it's derivative (dHn2)
 
void hankel_Hn2_ALL (int N, double *z, int nZ, double_complex *H_n2, double_complex *dH_n2)
 Computes the (cylindrical) Hankel function of the second kind (Hn2) and their derivatives (dHn2) for ALL orders from 0 to N.
 
int bessel_jn (int N, double *z, int nZ, double *j_n, double *dj_n)
 Computes the values of the spherical Bessel function of the first kind (jn) and it's derivative (djn)
 
void bessel_jn_ALL (int N, double *z, int nZ, int *maxN, double *j_n, double *dj_n)
 Computes the spherical Bessel function of the first kind (jn) and their derivatives (djn) for ALL orders from 0 to N.
 
int bessel_in (int N, double *z, int nZ, double *i_n, double *di_n)
 Computes the values of the modified spherical Bessel function of the first kind (in) and it's derivative (din)
 
void bessel_in_ALL (int N, double *z, int nZ, int *maxN, double *i_n, double *di_n)
 Computes the modified spherical Bessel function of the first kind (in) and their derivatives (din) for ALL orders from 0 to N.
 
int bessel_yn (int N, double *z, int nZ, double *y_n, double *dy_n)
 Computes the values of the spherical Bessel function of the second kind (yn) and it's derivative (dyn)
 
void bessel_yn_ALL (int N, double *z, int nZ, int *maxN, double *y_n, double *dy_n)
 Computes the spherical Bessel function of the second kind (yn) and their derivatives (dyn) for ALL orders from 0 to N.
 
int bessel_kn (int N, double *z, int nZ, double *k_n, double *dk_n)
 Computes the values of the modified spherical Bessel function of the second kind (kn) and it's derivative (dkn)
 
void bessel_kn_ALL (int N, double *z, int nZ, int *maxN, double *k_n, double *dk_n)
 Computes the modified spherical Bessel function of the second kind (kn) and their derivatives (dkn) for ALL orders from 0 to N.
 
int hankel_hn1 (int N, double *z, int nZ, double_complex *h_n1, double_complex *dh_n1)
 Computes the values of the spherical Hankel function of the first kind (hn1) and it's derivative (dhn1)
 
void hankel_hn1_ALL (int N, double *z, int nZ, int *maxN, double_complex *h_n1, double_complex *dh_n1)
 Computes the spherical Hankel function of the first kind (hn1) and their derivatives (dhn1) for ALL orders from 0 to N.
 
int hankel_hn2 (int N, double *z, int nZ, double_complex *h_n2, double_complex *dh_n2)
 Computes the values of the spherical Hankel function of the second kind (hn2) and it's derivative (dhn2)
 
void hankel_hn2_ALL (int N, double *z, int nZ, int *maxN, double_complex *h_n2, double_complex *dh_n2)
 Computes the spherical Hankel function of the second kind (hn2) and their derivatives (dhn2) for ALL orders from 0 to N.
 

Detailed Description

A collection of routines for computing spherical and cylindrical Bessel and Hankel functions, including their derivatives.

Author
Leo McCormack
Date
26.05.2020
License
ISC

Definition in file saf_utility_bessel.c.

Function Documentation

◆ ENVJ()

static double ENVJ ( int N,
double X )
static

Helper function, used when computing spherical bessel function values.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Definition at line 40 of file saf_utility_bessel.c.

◆ Jn()

static double Jn ( int n,
double z )
static

Wrapper for the cylindrical Bessel function of the first kind.

Definition at line 354 of file saf_utility_bessel.c.

◆ MSTA1()

static int MSTA1 ( double X,
int MP )
static

Helper function, used when computing spherical bessel function values.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Definition at line 55 of file saf_utility_bessel.c.

◆ MSTA2()

static int MSTA2 ( double X,
int N,
int MP )
static

Helper function, used when computing spherical bessel function values.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Definition at line 89 of file saf_utility_bessel.c.

◆ SPHI()

static void SPHI ( int N,
double X,
int * NM,
double * SI,
double * DI )
static

Helper function for bessel_in.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Note
This function has been modified to avoid numerical instability, at the cost of slightly higher numerical inprecision (but only when such cases arise)

Definition at line 138 of file saf_utility_bessel.c.

◆ SPHJ()

static void SPHJ ( int N,
double X,
int * NM,
double * SJ,
double * DJ )
static

Helper function for bessel_in.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Note
This function has been modified to avoid numerical instability, at the cost of slightly higher numerical inprecision (but only when such cases arise)

Definition at line 249 of file saf_utility_bessel.c.

◆ SPHK()

static void SPHK ( int N,
double X,
int * NM,
double * SK,
double * DK )
static

Helper function for bessel_kn.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Definition at line 201 of file saf_utility_bessel.c.

◆ SPHY()

static void SPHY ( int N,
double X,
int * NM,
double * SY,
double * DY )
static

Helper function for bessel_yn.

Original Fortran code: "Fortran Routines for Computation of Special Functions": jin.ece.uiuc.edu/routines/routines.html. C implementation by J-P Moreau, Paris (www.jpmoreau.fr)

Definition at line 314 of file saf_utility_bessel.c.

◆ Yn()

static double Yn ( int n,
double z )
static

Wrapper for the cylindrical Bessel function of the second kind.

Definition at line 366 of file saf_utility_bessel.c.