# Riemann Zeta, Dirichlet Eta, Dirichlet Lambda, and Catalan Beta Functions

## Table of Riemann Zeta, Dirichlet Eta, Dirichlet Lambda, and Catalan Beta Functions

• Riemann Zeta Functions - ζ(s) where ζ(s) = Σk=1 ( 1 / k s ) for real s > 1 and
ζ*(s) = ζ(s) - 1.
• Dirichlet Eta Function - η(s) where η(s) = Σk=1 ( (-1) k - 1 / k s ) for real s ≥ 1 and
η*(s) = η(s) - 1.
• Dirichlet Lambda Function - λ(s) where λ(s) = Σk=0 ( 1 / ( 2k + 1 ) s ) for real s > 1 and
λ*(s) = λ(s) - 1.
• Catalan Beta Function - β(s) where β(s) = Σk=0 ( (-1) k / ( 2k + 1 ) s ) for real s ≥ 1 and
β*(s) = β(s) - 1.

### Riemann Zeta Function

The Riemann zeta function, ζ(s), is a meromorphic complex valued function of a complex variable, s with a simple pole at s = 1. The function is constructed by defining ζ(s) for real
s > 1 by
ζ(s) = Σk = 1 ( 1 / k s )
and then analytically continuing to the rest of the complex plane save at s = 1. For real s < 0, ζ(s) can be calculated using Riemann's reflection formula
ζ(s) = [2 Γ(1-s) cos( (1-s)π/2 ) / (2 π) 1-s ] ζ(1-s).
If s is a negative integer, then
ζ(s) = B1-s / (1 - s).
where B1-s is the (1-s)th Bernoulli number.
The function ζ*(s) is defined to be
ζ*(s) = ζ(s) - 1.

While the Riemann zeta function, ζ(s), is a complex valued function of a complex variable, the versions programmed below all require that the argument be real in which case the value is also real. There are three classes of programs, one in which the argument is a non-negative integer, another in which the argument is an integer, and the last in which the argument is real. Similarly the versions programmed below for ζ*(s) also require that the argument be real. There are two classes of programs for ζ*(s), one in which the argument is a non-negative integer and the other in which the argument is real.

#### Function List - Non-negative integer argument

• double Riemann_Zeta_Function_pos_int_arg(int s)

This function returns ζ(s) = Σk=1 ( 1 / k s ) for integer s > 1, if s = 0, then ζ(0) = -1/2 is returned and if s = 1, then DBL_MAX is returned. Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then ζ(s) approaches -∞ while as s approaches 1 from the right, then ζ(s) approaches +∞.

• long double xRiemann_Zeta_Function_pos_int_arg(int s)

This function returns ζ(s) = Σk=1 ( 1 / k s ) for integer s > 1, if s = 0, then ζ(0) = -1/2 is returned and if s = 1, then LDBL_MAX is returned. Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then ζ(s) approaches -∞ while as s approaches 1 from the right, then ζ(s) approaches +∞.

• double Riemann_Zeta_Star_Function_pos_int_arg(int s)

This function returns ζ*(s) = Σk=2 ( 1 / k s ) for integer s > 1, if s = 0, then ζ*(0) = -3/2 is returned and if s = 1, then DBL_MAX is returned. Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then ζ*(s) approaches -∞ while as s approaches 1 from the right, then ζ*(s) approaches +∞.

• long double xRiemann_Zeta_Star_Function_pos_int_arg(int s)

This function returns ζ*(s) = Σk=2 ( 1 / k s ) for integer s > 1, if s = 0, then ζ*(0) = -3/2 is returned and if s = 1, then LDBL_MAX is returned. Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then ζ*(s) approaches -∞ while as s approaches 1 from the right, then ζ*(s) approaches +∞.

#### Source Code

C source code is available for these routines:
• The file, riemann_zeta_function_pos_int_arg.c, contains the functions Riemann_Zeta_Function_pos_int_arg( ), xRiemann_Zeta_Function_pos_int_arg( ), Riemann_Zeta_Star_Function_pos_int_arg( ), and xRiemann_Zeta_Star_Function_pos_int_arg.

Dependencies: No external dependencies.

#### Function List - Integer argument

• double Riemann_Zeta_Function_int_arg(int s)

This function returns ζ(s) for integer s, if s = 1, then DBL_MAX is returned. Note that
s = 1 is a simple pole, for real s as s approaches 1 from the left, then ζ(s) approaches -∞ while as s approaches 1 from the right, then ζ(s) approaches +∞. For negative integer arguments the magnitude of ζ(s) can become quite large, if ζ(s) < -DBL_MAX then -DBL_MAX is returned and if ζ(s) > DBL_MAX then DBL_MAX is returned.

• long double xRiemann_Zeta_Function_int_arg(int s)

This function returns ζ(s) for integer s, if s = 1, then LDBL_MAX is returned. Note that
s = 1 is a simple pole, for real s as s approaches 1 from the left, then ζ(s) approaches -∞ while as s approaches 1 from the right, then ζ(s) approaches +∞. For negative integer arguments the magnitude of ζ(s) can become quite large, if ζ(s) < -LDBL_MAX then -LDBL_MAX is returned and if ζ(s) > LDBL_MAX then LDBL_MAX is returned.

#### Source Code

C source code is available for these routines:
• The file, riemann_zeta_function_int_arg.c, contains the functions Riemann_Zeta_Function_int_arg( ) and xRiemann_Zeta_Function_int_arg( ).

Dependencies: In addition to the file riemann_zeta_function_int_arg.c, the functions Riemann_Zeta_Function_int_arg( ) and xRiemann_Zeta_Function_int_arg( ) require the following files:

#### Function List - Real argument

• double Riemann_Zeta_Function(double s)

This function returns ζ(s) for real s, if s = 1, then DBL_MAX is returned. Note that s = 1 is a simple pole, as s approaches 1 from the left, then ζ(s) approaches -∞ while as s approaches 1 from the right, then ζ(s) approaches +∞. For negative real arguments the magnitude of ζ(s) can become quite large, if ζ(s) < -DBL_MAX then -DBL_MAX is returned and if ζ(s) > DBL_MAX then DBL_MAX is returned.

• long double xRiemann_Zeta_Function(long double s)

This function returns ζ(s) for real s, if s = 1, then LDBL_MAX is returned. Note that
s = 1 is a simple pole, as s approaches 1 from the left, then ζ(s) approaches -∞ while as s approaches 1 from the right, then ζ(s) approaches +∞.

• double Riemann_Zeta_Star_Function(double s)

This function returns ζ*(s) for real s, if s = 1, then DBL_MAX is returned. Note that
s = 1 is a simple pole, as s approaches 1 from the left, then ζ*(s) approaches -∞ while as s approaches 1 from the right, then ζ*(s) approaches +∞. For negative real arguments the magnitude of ζ*(s) can become quite large, if ζ*(s) < -DBL_MAX then -DBL_MAX is returned and if ζ*(s) > DBL_MAX then DBL_MAX is returned.

• long double xRiemann_Zeta_Star_Function(long double s)

This function returns ζ*(s) for real s, if s = 1, then LDBL_MAX is returned. Note that
s = 1 is a simple pole, as s approaches 1 from the left, then ζ*(s) approaches -∞ while as s approaches 1 from the right, then ζ*(s) approaches +∞.

#### Source Code

C source code is available for these routines:
• The file, riemann_zeta_function.c, contains the functions Riemann_Zeta_Function( ), xRiemann_Zeta_Function( ), Riemann_Zeta_Star_Function( ), and xRiemann_Zeta_Star_Function( ).

Dependencies: In addition to the file riemann_zeta_function.c, the functions Riemann_Zeta_Function( ), xRiemann_Zeta_Function( ), Riemann_Zeta_Star_Function( ), and xRiemann_Zeta_Star_Function( ) require the following files:

### Dirichlet Eta Function

The Dirichlet eta function, η(s), is an entire complex valued function of a complex variable. The function is constructed by defining η(s) for real s > 1 by
η(s) = Σk = 1 ( (-1)k-1 / k s )
and then analytically continuing to the rest of the complex plane. The Dirichlet eta function is related to the Riemann zeta function by
η(s) = (1 - 21-s) ζ(s)
for s ≠ 1 and at s = 1, take the limit as s → 1. For real s, η(s) is real.
While the Dirichlet eta function, η(s), is a complex valued function of a complex variable, the versions programmed below all require that the argument be real in which case the value is also real. There are three classes of programs, one in which the argument is a non-negative integer, another in which the argument is an integer, and the last in which the argument is real. Similarly the versions programmed below for η*(s) = η(s) - 1 also require that the argument be real. There are two classes of programs for η*(s), one in which the argument is a non-negative integer and the other in which the argument is real.

#### Function List - Non-negative integer argument

• double Dirichlet_Eta_Function_pos_int_arg(int s)

This function returns η(s) = Σk = 1 ( (-1)k-1 / k s ) for integer s > 1.
If s = 0, then η(0) = 1/2 is returned and if s = 1, then ln(2) is returned.

• long double xDirichlet_Eta_Function_pos_int_arg(int s)

This function returns η(s) = Σk = 1 ( (-1)k-1 / k s ) for integer s > 1.
If s = 0, then η(0) = 1/2 is returned and if s = 1, then ln(2) is returned.

• double Dirichlet_Eta_Star_Function_pos_int_arg(int s)

This function returns η*(s) = Σk = 2 ( (-1)k-1 / k s ) for integer s > 1.
If s = 0, then η*(0) = -1/2 is returned and if s = 1, then ln(2/e) is returned.

• long double xDirichlet_Eta_Star_Function_pos_int_arg(int s)

This function returns η*(s) = Σk = 2 ( (-1)k-1 / k s ) for integer s > 1.
If s = 0, then η*(0) = -1/2 is returned and if s = 1, then ln(2/e) is returned.

#### Source Code

C source code is available for these routines:
• The file, dirichlet_eta_function_pos_int_arg.c, contains the functions Dirichlet_Eta_Function_pos_int_arg( ), xDirichlet_Eta_Function_pos_int_arg( ), Dirichlet_Eta_Star_Function_pos_int_arg( ), and xDirichlet_Eta_Star_Function_pos_int_arg.

Dependencies: No external dependencies.

#### Function List - Integer argument

• double Dirichlet_Eta_Function_int_arg(int s)

This function returns η(s) for integer s. For negative integer arguments the magnitude of η(s) can become quite large, if η(s) < -DBL_MAX then -DBL_MAX is returned and if η(s) > DBL_MAX then DBL_MAX is returned.

• long double xDirichlet_Eta_Function_int_arg(int s)

This function returns η(s) for integer s. For negative integer arguments the magnitude of η(s) can become quite large, if η(s) < -LDBL_MAX then -LDBL_MAX is returned and if η(s) > LDBL_MAX then LDBL_MAX is returned.

#### Source Code

C source code is available for these routines:
• The file, dirichlet_eta_function_int_arg.c, contains the functions Dirichlet_Eta_Function_int_arg( ) and xDirichlet_Eta_Function_int_arg( ).

Dependencies: In addition to the file dirichlet_eta_function_int_arg.c, the functions Dirichlet_Eta_Function_int_arg( ) and xDirichlet_Eta_Function_int_arg( ) require the following files:

#### Function List - Real argument

• double Dirichlet_Eta_Function(double s)

This function returns η(s) for real s. For negative real arguments the magnitude of η(s) can become quite large.
If η(s) < -DBL_MAX then -DBL_MAX is returned and if η(s) > DBL_MAX then DBL_MAX is returned.

• long double xDirichlet_Eta_Function(long double s)

This function returns η(s) for real s.

• double Dirichlet_Eta_Star_Function(double s)

This function returns η*(s) for real s. For negative real arguments the magnitude of η*(s) can become quite large.
If η*(s) < -DBL_MAX then -DBL_MAX is returned and if η(s) > DBL_MAX then DBL_MAX is returned.

• long double xDirichlet_Eta_Star_Function(long double s)

This function returns η*(s) for real s.

#### Source Code

C source code is available for these routines:
• The file, dirichlet_eta_function.c, contains the functions Dirichlet_Eta_Function( ), xDirichlet_Eta_Function( ), Dirichlet_Eta_Star_Function( ), and xDirichlet_Eta_Star_Function( ).

Dependencies: In addition to the file dirichlet_eta_function.c, the functions Dirichlet_Eta_Function( ), xDirichlet_Eta_Function( ), Dirichlet_Eta_Star_Function( ), and xDirichlet_Eta_Star_Function( ) require the following file:

### Dirichlet Lambda Function

The Dirichlet lambda function, λ(s), is a meromorphic complex valued function of a complex variable, s with a simple pole at s = 1. The function is constructed by defining λ(s) for real
s > 1 by
λ(s) = Σk = 0 ( 1 / (2k+1) s )
and then analytically continuing to the rest of the complex plane save at s = 1. The Dirichlet lambda function can be expressed in terms of the Riemann zeta function by
λ(s) = (1 - 2-s) ζ(s)
For real s, λ(s) is real.
While the Dirichlet lambda function, λ(s), is a complex valued function of a complex variable, the versions programmed below all require that the argument be real in which case the value is also real. There are three classes of programs, one in which the argument is a non-negative integer, another in which the argument is an integer, and the last in which the argument is real. Similarly the versions programmed below for λ*(s) = λ(s) - 1 also require that the argument be real. There are two classes of programs for λ*(s), one in which the argument is a non-negative integer and the other in which the argument is real.

#### Function List - Non-negative integer argument

• double Dirichlet_Lambda_Function_pos_int_arg(int s)

This function returns λ(s) for integer s > 1.
If s = 0, then λ(0) = 0 is returned and if s = 1, then DBL_MAX is returned.
Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then λ(s) approaches -∞ while as s approaches 1 from the right, then λ(s) approaches +∞.

• long double xDirichlet_Lambda_Function_pos_int_arg(int s)

This function returns λ(s) for integer s > 1.
If s = 0, then λ(0) = 0 is returned and if s = 1, then LDBL_MAX is returned.
Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then λ(s) approaches -∞ while as s approaches 1 from the right, then λ(s) approaches +∞.

• double Dirichlet_Lambda_Star_Function_pos_int_arg(int s)

This function returns λ*(s) = Σk=1 ( 1 / (2k+1) s ) for integer s > 1.
If s = 0, then λ*(0) = -1 is returned and if s = 1, then DBL_MAX is returned.
Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then λ*(s) approaches -∞ while as s approaches 1 from the right, then λ*(s) approaches +∞.

• long double xDirichlet_Lambda_Star_Function_pos_int_arg(int s)

This function returns λ*(s) = Σk=1 ( 1 / (2k+1) s ) for integer s > 1.
If s = 0, then λ*(0) = -1 is returned and if s = 1, then LDBL_MAX is returned.
Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then λ*(s) approaches -∞ while as s approaches 1 from the right, then λ*(s) approaches +∞.

#### Source Code

C source code is available for these routines:
• The file, dirichlet_lambda_function_pos_int_arg.c, contains the functions Dirichlet_Lambda_Function_pos_int_arg( ), xDirichlet_Lambda_Function_pos_int_arg( ), Dirichlet_Lambda_Star_Function_pos_int_arg( ), and xDirichlet_Lambda_Star_Function_pos_int_arg( ).

Dependencies: In addition to the file dirichlet_lambda_function_pos_int_arg.c, the functions Dirichlet_Lambda_Function_pos_int_arg( ), xDirichlet_Lambda_Function_pos_int_arg( ), Dirichlet_Lambda_Star_Function_pos_int_arg( ), and xDirichlet_Lambda_Star_Function_pos_int_arg( ) require the following files:

#### Function List - Integer argument

• double Dirichlet_Lambda_Function_int_arg(int s)

This function returns λ(s) for integer s, if s = 1, then DBL_MAX is returned.
Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then λ(s) approaches -∞ while as s approaches 1 from the right, then λ(s) approaches +∞.

• long double xDirichlet_Lambda_Function_int_arg(int s)

This function returns λ(s) for integer s, if s = 1, then LDBL_MAX is returned.
Note that s = 1 is a simple pole, for real s as s approaches 1 from the left, then λ(s) approaches -∞ while as s approaches 1 from the right, then λ(s) approaches +∞.

#### Source Code

C source code is available for these routines:
• The file, dirichlet_lambda_function_int_arg.c, contains the functions Dirichlet_Lambda_Function_int_arg( ) and xDirichlet_Lambda_Function_int_arg( ).

Dependencies: In addition to the file dirichlet_lambda_function_int_arg.c, the functions Dirichlet_Lambda_Function_int_arg( ) and xDirichlet_Lambda_Function_int_arg( ) require the following files:

#### Function List - Real argument

• double Dirichlet_Lambda_Function(double s)

This function returns λ(s) for real s, if s = 1, then DBL_MAX is returned.
Note that s = 1 is a simple pole, as s approaches 1 from the left, then λ(s) approaches -∞ while as s approaches 1 from the right, then λ(s) approaches +∞. For negative real arguments the magnitude of λ(s) can become quite large, if λ(s) < -DBL_MAX then -DBL_MAX is returned and if λ(s) > DBL_MAX then DBL_MAX is returned.

• long double xDirichlet_Lambda_Function(long double s)

This function returns λ(s) for real s, if s = 1, then LDBL_MAX is returned.
Note that s = 1 is a simple pole, as s approaches 1 from the left, then λ(s) approaches -∞ while as s approaches 1 from the right, then λ(s) approaches +∞.

• double Dirichlet_Lambda_Star_Function(double s)

This function returns λ*(s) for real s, if s = 1, then DBL_MAX is returned.
Note that s = 1 is a simple pole, as s approaches 1 from the left, then λ*(s) approaches -∞ while as s approaches 1 from the right, then λ*(s) approaches +∞. For negative real arguments the magnitude of λ*(s) can become quite large, if
λ*(s) < -DBL_MAX then -DBL_MAX is returned and if λ*(s) > DBL_MAX then DBL_MAX is returned.

• long double xDirichlet_Lambda_Star_Function(long double s)

This function returns λ*(s) for real s, if s = 1, then LDBL_MAX is returned.
Note that s = 1 is a simple pole, as s approaches 1 from the left, then λ*(s) approaches -∞ while as s approaches 1 from the right, then λ*(s) approaches +∞.

#### Source Code

C source code is available for these routines:
• The file, dirichlet_lambda_function.c, contains the functions Dirichlet_Lambda_Function( ), xDirichlet_Lambda_Function( ), Dirichlet_Lambda_Star_Function( ), and xDirichlet_Lambda_Star_Function( ).

Dependencies: In addition to the file dirichlet_lambda_function.c, the functions Dirichlet_Lambda_Function( ), xDirichlet_Lambda_Function( ), Dirichlet_Lambda_Star_Function( ), and xDirichlet_Lambda_Star_Function( ) require the following files:

### Catalan Beta Function

The Catalan beta function, β(s), is an entire complex valued function of a complex variable. The function is constructed by defining β(s) for real s > 1 by
β(s) = Σk = 0 ( (-1)k / (2k+1) s )
and then analytically continuing to the rest of the complex plane.
For real s < 0, β(s) can be calculated using the reflection formula
β(s) = [ (π / 2)(s-1) Γ(1-s) cos( sπ/2 ) ] β(1-s).
If s is a negative integer, then
β(s) = E-s / 2.
where E-s is the (-s)th Euler number.
While the Catalan beta function, β(s), is a complex valued function of a complex variable, the versions programmed below all require that the argument be real in which case the value is also real. There are three classes of programs, one in which the argument is a non-negative integer, another in which the argument is an integer, and the last in which the argument is real. Similarly the versions programmed below for β*(s) = β(s) - 1 also require that the argument be real. There are two classes of programs for β*(s), one in which the argument is a non-negative integer and the other in which the argument is real.

#### Function List - Non-negative integer argument

• double Catalan_Beta_Function_pos_int_arg(int s)

This function returns β(s) = Σk = 0 ( (-1)k / (2k+1) s ) for integer s > 1.
If s = 0, then β(0) = 1/2 is returned and if s = 1, then π / 4 is returned.

• long double xCatalan_Beta_Function_pos_int_arg(int s)

This function returns β(s) = Σk = 0 ( (-1)k / (2k+1) s ) for integer s > 1.
If s = 0, then β(0) = 1/2 is returned and if s = 1, then π / 4 is returned.

• double Catalan_Beta_Star_Function_pos_int_arg(int s)

This function returns β*(s) = Σk = 1 ( (-1)k / (2k+1) s ) for integer s > 1.
If s = 0, then β*(0) = -1/2 is returned and if s = 1, then π / 4 - 1 is returned.

• long double xCatalan_Beta_Star_Function_pos_int_arg(int s)

This function returns β*(s) = Σk = 1 ( (-1)k / (2k+1) s ) for integer s > 1.
If s = 0, then β*(0) = -1/2 is returned and if s = 1, then π / 4 - 1 is returned.

#### Source Code

C source code is available for these routines:
• The file, catalan_beta_function_pos_int_arg.c, contains the functions Catalan_Beta_Function_pos_int_arg( ), xCatalan_Beta_Function_pos_int_arg( ), Catalan_Beta_Star_Function_pos_int_arg( ), and xCatalan_Beta_Star_Function_pos_int_arg.

Dependencies: No external dependencies.

#### Function List - Integer argument

• double Catalan_Beta_Function_int_arg(int s)

This function returns β(s) for integer s. For negative integer arguments the magnitude of β(s) can become quite large, if β(s) < -DBL_MAX then -DBL_MAX is returned and if β(s) > DBL_MAX then DBL_MAX is returned.

• long double xCatalan_Beta_Function_int_arg(int s)

This function returns β(s) for integer s. For negative integer arguments the magnitude of β(s) can become quite large, if β(s) < -DBL_MAX then -DBL_MAX is returned and if β(s) > DBL_MAX then DBL_MAX is returned.

#### Source Code

C source code is available for these routines:
• The file, catalan_beta_function_int_arg.c, contains the functions Catalan_Beta_Function_int_arg( ) and xCatalan_Beta_Function_int_arg( ).

Dependencies: In addition to the file catalan_beta_function_int_arg.c, the functions Catalan_Beta_Function_int_arg( ) and xCatalan_Beta_Function_int_arg( ) require the following files:

#### Function List - Real argument

• double Catalan_Beta_Function(double s)

This function returns β(s) for real s. For negative integer arguments the magnitude of β(s) can become quite large, if β(s) < -DBL_MAX then -DBL_MAX is returned and if β(s) > DBL_MAX then DBL_MAX is returned.

• long double xCatalan_Beta_Function(long double s)

This function returns β(s) for real s.

• double Catalan_Beta_Star_Function(double s)

This function returns β*(s) for real s. For negative integer arguments the magnitude of β*(s) can become quite large, if β*(s) < -DBL_MAX then -DBL_MAX is returned and if β*(s) > DBL_MAX then DBL_MAX is returned.

• long double xCatalan_Beta_Star_Function(long double s)

This function returns β*(s) for real s.

#### Source Code

C source code is available for these routines:
• The file, catalan_beta_function.c, contains the functions Catalan_Beta_Function( ), xCatalan_Beta_Function( ), Catalan_Beta_Star_Function( ), and xCatalan_Beta_Star_Function( ).

Dependencies: In addition to the file catalan_beta_function.c, the functions Catalan_Beta_Function( ), xCatalan_Beta_Function( ), Catalan_Beta_Star_Function( ), and xCatalan_Beta_Star_Function( ) require the following file: