# Confluent Bernoulli Numbers

Let us assume we know the Bernoulli numbers $B_{2n}$ for $n \ge 1$ and want to define them for an arbitrary index $\alpha$ (say $\alpha$ is a value in a region of the complex plane which include $\alpha$ with $\Re(\alpha) \gt 0$). Note that we do not pretend to know (or even are interested in) $B_{0}$ or $B_{1}$.

For this so-called archaic setup the $B_{2n}$ for $n \ge 1$ just are the Bernoulli numbers and $B_{0}$ and $B_{1}$ only were added later by convention to make some formulas more convenient to use. Bernoulli himself did not spell out $B_{0}$ and $B_{1}$ in his Ars Conjectandi, Whittaker and Watson's A Course of Modern Analysis uses this enumeration and Jean-Pierre Serre, the first Abel Prize winner, in his book A Course in Arithmetic.

One way to attack our problem goes back to Leonhard Euler's formula

$\zeta(2m) = (-1)^{m+1} 2^{2m-1} \pi^{2m} \frac{B_{2m}}{(2m)!}.$

This route was chosen by S. Ramanujan who introduced

$B_{\alpha}^{*} = \frac{2 \Gamma(\alpha+1) \zeta(\alpha)} {(2\pi)^\alpha}.$

Here $B_{2m}^{*} = (-1)^{m-1} B_{2m}$ for $\alpha = 2m$. However this proposal is not satisfying as Ramanujan ignores the factor $(-1)^{m+1}$ in Euler's formula and thereby deprives it of its oscillating character.

A better way to proceed was described in my blog post from August 2011 The Euler-Bernoulli diamond and the lost Bernoulli numbers. I'm going to use the definitions given there without repeating them here. In particular the reader should look up the tangent Bernoulli function, the secant Bernoulli function and the generalized Bernoulli function which will show up in the plots below.

Last week I stumbled across a simple formula which might also serve as a definition and reflects the oscillating character of the Bernoulli numbers in a natural way. I haven't seen the formula elsewhere although I leafed through some literature.

$$B_{\alpha} = \frac{\alpha !}{\pi ({4}^{\alpha}-{2}^{\alpha} ) } \int _{0}^{2\,\pi }\!{\frac {{{\rm e}^{it \left( 1-\alpha \right)}}} {1+{{\rm e}^{-2\,{{\rm e}^{it}}}}}}\, {\rm d} t$$

The formula interpolates all $B_n$ for $n \ge 2$ and obviously generalizes the relation between the Bernoulli numbers and the tangent numbers which is D. Knuth's favorite approach to the Bernoulli numbers (see for example the special skipping' section in CM 6.5 or his early writings on the computation of Bernoulli numbers). The formula gives $B_1 = 1/2$ (which is undoubtedly the right value for $B_1$ — see my Bernoulli Manifesto for a discussion). This is somewhat ironic since Knuth's favorite value for $B_1$ is $-1/2$.

Whether the formula may be considered as an adequate generalization in other respects remains subject of closer examination.

Below a plot comparing the zeta based tangent Bernoulli function with the above formula over the reals $\ge 2$. In the plots blue will always denote the zeta related function and red the trigonometric related functions discussed here. The intersections of the two curves at integer values indicate Bernoulli numbers.

However this is only the beginning of the story. If you look at my cheat sheet for the Euler-Bernoulli number family it becomes clear that the Bernoulli tangent numbers have to be complemented by the Bernoulli secant numbers very much like the Euler secant numbers $1,0,1,0,5,0,61,0,...$ have to be complemented by the Euler tangent numbers $0,1,0,2,0,16,0,272,...$ — indeed only the addition of these two sequences are called the Euler numbers by Richard Stanley. All four kinds of numbers are simple transforms of the more fundamental Euler zeta numbers. (If you are not familiar with these numbers I recommend Noam D. Elkies beautiful paper On the sums $\sum_{k= -\infty}^{+\infty}((4k+1)^{-n}$ available from the arXiv.)

So let's denote the above Bernoulli tangent numbers by $B_{\alpha}^{\tau} = B_{\alpha}$ and try to find the analogous formula for the Bernoulli secant numbers $B_{\alpha}^{\sigma}$. The details in my August 2011 blog post provide enough information to psych out

$$B_{\alpha}^{\sigma} = \frac{\alpha !}{\pi ({2}^{\alpha}-{4}^{\alpha} ) } \int _{0}^{2\,\pi }\!{\frac {{{\rm e}^{it \left(1- \alpha \right)}}} {{\rm e}^{{\rm e}^{it}}+{\rm e}^{-{\rm e}^{it}}}}\, {\rm d} t \, .$$

In the plot below the red graph represents this formula and the blue graph the zeta based secant Bernoulli function.

We can now define the confluent Bernoulli numbers as the sum of the tangent Bernoulli and the secant Bernoulli numbers.

\begin{align*} \mathfrak{B}_{\alpha} &= B_{\alpha}^{\tau} + B_{\alpha}^{\sigma} \\ &=\frac{\alpha !}{\pi ({4}^{\alpha}-{2}^{\alpha} ) } \int _{0}^{2\,\pi }\!{ e^{it(1-\alpha)} \left(1 + \frac{e^{e^{it}}-1}{e^{2e^{it}}+1} \right) }\, {\rm d} t \end{align*}

For $\alpha=1,2,\ldots,10$ we get for $\mathfrak{B}_{\alpha}$

$1, \frac16, \frac{3}{56}, -\frac{1}{30}, -\frac{25}{992}, \frac{1}{42}, \frac{427}{16256}, -\frac{1}{30}, -\frac{12465}{261632}, \frac{5}{66}.$

Again we compare below the two functions, the red graph indicates $\mathfrak{B}_{\alpha}$ and the blue graph the generalized Bernoulli function. In the appendix you can find Maple code for all functions and plots.

Of course one can see things also the other way round: Bernoulli numbers served as our man in the middle in our the attack on an integral. Eliminating the Bernoulli numbers from the formulas gives for integers $n \ge 1$

\begin{equation*} \int _{0}^{2\,\pi }\!{ e^{-itn} \left(1 + \frac{e^{e^{it}}-1}{e^{2e^{it}}+1} \right) }\, {\rm d} t = \\ \quad\quad\quad\quad \pi \, \frac{{4}^{n+1}-{2}^{n+1}}{ \Gamma(n+1) } \left(\frac{\zeta\left(-n, \frac34\right) - \zeta\left(-n, \frac14\right) } { 2^{-n}-2 } -\zeta(-n) \right). \end{equation*}

What is special about it is that the values of the integral are rational multiples of $\pi$. They are listed in the OEIS database but I leave it to your pleasure to identify them. (And of course one can rewrite the left hand side as a contour integral.)

### Postscript.

Looking at the integrands in the last formula we find by superposition of the first 80 integrands evaluated over $[ 0, 2\pi ]$ Bernoulli's butterfly:

plot([seq(Re(exp(I*t*(1-n))*(1+(exp(exp(I*t))-1)/(exp(2*exp(I*t))+1))),
n=1..15)],t=0..2*Pi);


### Maple code.

restart;
with(plots):

ZetaBS := z -> (Zeta(0,z,1/4) - Zeta(0,z,3/4))/(2^z-2):
ZetaBG := z -> Zeta(z) + ZetaBS(z):

# Tangent (classical) Bernoulli function
BTF := z -> -z*Zeta(1-z):

# Secant (lost) Bernoulli function
BSF := z -> -z*ZetaBS(1-z):

# Generalized Bernoulli function
BGF := z -> -z*ZetaBG(1-z):

Integral := (F,x) -> Int(F(x,t), t = 0..2*Pi)*x!/(Pi*(4^x-2^x)):
List := F -> [seq([x/100,evalf(Re(Integral(F,x/100)))],x=200..1000)]:

# --- Secant
S := (x,t) -> exp(I*(1-x)*t)/(exp(exp(I*t))+exp(-exp(I*t))):
PS := listplot(List(S), color='red'):
BPS := plot(BSF(x), x=2..10, color='blue'):
display(PS, BPS, title=Secant, thickness=2);

# --- Tangent
T := (x,t) -> exp(I*(1-x)*t)/(1+exp(-2*exp(I*t))):
PT := listplot(List(T), color='red'):
BPT := plot(BTF(x), x=2..10, color='blue'):
display(PT, BPT, title=Tangent, thickness=2);

# --- Confluent
ST := (x,t) -> exp(I*t*(1-x))*(1+(exp(exp(I*t))-1)/(exp(2*exp(I*t))+1)):
PST := listplot(List(ST), color='red'):
BST := plot(BGF(x), x=2..10, color='blue'):
display(PST,BST, title=Secant and Tangent, thickness=2);


### Sage code.

zetaBS = lambda z: (hurwitz_zeta(z,1/4) - hurwitz_zeta(z,3/4))/(2^z-2)
zetaBG = lambda z: zeta(z) + zetaBS(z)

# Tangent (classical) Bernoulli function
BTF = lambda z: -z*zeta(1-z)

# Secant (lost) Bernoulli function
BSF = lambda z: -z*zetaBS(1-z)

# Generalized Bernoulli function
BGF = lambda z: -z*zetaBG(1-z)


The plot functions are by fidbc given at 'ask sagemath'.

import numpy as np
import matplotlib.pyplot as plt

def secant( n ):
i = np.complex(0,1)
def func(t):
return np.exp(i*t*(1-n))/(np.exp(np.exp(i*t))+
np.exp(-np.exp(i*t)))
return func

def tangent( n ):
i = np.complex(0,1)
def func(t):
return np.exp(i*t*(1-n))*(1+(np.exp(-2*np.exp(i*t))))
return func

def confluent( n ):
i = np.complex(0,1)
def func(t):
return np.exp(i*t*(1-n))*(1+(np.exp(np.exp(i*t))-1)/
(np.exp(2*np.exp(i*t))+1))
return func

def plot_butterfly(get_func, n ):
t = np.arange(0.,2*np.pi,0.01)
for i in range(n):
func = get_func(i)
plt.plot(t,np.real(func(t)))
plt.show()

plot_butterfly(secant, 80)
plot_butterfly(tangent, 80)
plot_butterfly(confluent, 80)

`