I have forgotten

COST (GBP)
1.00
0.00
0

# Bernoulli A

Calculates array of Bernoulli numbers using recurrent relations.
Controller: CodeCogs

C++

## Bernoulli A

 voidbernoulli_A( int iMax double* dB )
Given starting values with indices 0 and 1, this function calculates all numbers with indices up to some maximal index. The relations used are as follows:

$B_0=1$
$B_1=-\frac{1}{2}$
$\frac{2n+1}{2n}&space;B_{2n}&space;=&space;B_1&space;B_{2n-1}&space;-&space;\sum_{r=0}^{n-2}&space;\frac{1}{2r+2}&space;\big&space;(&space;\begin{array}{l}&space;2n-1&space;\\&space;2r+1&space;\end{array}&space;\big&space;)&space;B_{2r+2}&space;B_{2n-2r-2}$

$B_{2n+1}=0,&space;n=1,&space;2,...$

$B_{2n}=&space;-\frac{2n}{2n+1}&space;\sum_{r=0}^{n-2}&space;\frac{1}{2r+2}&space;\left&space;(&space;\begin{array}{c}&space;2n-1&space;\\&space;2r+1&space;\end{array}&space;\right)&space;B_{2r+2}&space;B_{2n-2r-2},&space;n=2,&space;3,...$

First numbers are:
$\begin{array}{l}&space;B_0&space;\&space;=&space;\&space;1&space;\\&space;B_1&space;\&space;=&space;\&space;-\frac{1}{2}&space;\\&space;B_2&space;\&space;=&space;\&space;\frac{1}{6}&space;\\&space;B_4&space;\&space;=&space;\&space;-\frac{1}{30}&space;\\&space;B_6&space;\&space;=&space;\&space;\frac{1}{42}&space;\\&space;B_8&space;\&space;=&space;\&space;-\frac{1}{30}&space;\\&space;B_{10}&space;\&space;=&space;\&space;\frac{5}{66}&space;\\&space;B_{12}&space;\&space;=&space;\&space;-\frac{691}{2,730}&space;\\&space;B_{14}&space;\&space;=&space;\&space;\frac{7}{6}&space;\\&space;B_{16}&space;\&space;=&space;\&space;-\frac{3,617}{510}&space;\\&space;B_{18}&space;\&space;=&space;\&space;\frac{43,867}{798}&space;\\&space;B_{20}&space;\&space;=&space;\&space;-\frac{174,611}{330}&space;\\&space;B_{22}&space;\&space;=&space;\&space;\frac{854,513}{138}&space;\end{array}$

## References:

• Higher Transcendental Functions, vol.1, (1.13) by H.Bateman and A.Erdelyi (Bateman Manuscript Project), 1953
• M.Abramowitz and I.A.Stegun, Handbook of Mathematical Functions, 1964 chapt.23
• Yu.Luke, Mathematical functions and their approximations, 1975 chapt.14.2

### Example 1

#include <stdio.h>
#include <codecogs/maths/discrete/number_theory/bernoulli_a.h>

#define MAX_INDEX 16

int main()
{
double dBernoulli[MAX_INDEX+1];

printf( "%8s%2c%20s\n", " ", 'n', "Bn" );
printf( "%8s", " " );
for(int i = 0; i < 22; i++ )
printf( "%c", '-' );
printf( "\n" );

Maths::Discrete::NumberTheory::bernoulli_A( MAX_INDEX, dBernoulli );

printf( "%10d%20.12f\n", 0, dBernoulli[0] );
printf( "%10d%20.12f\n", 1, dBernoulli[1] );
for(int i = 2; i <= MAX_INDEX; i += 2 )
printf( "%10d%20.12f\n", i, dBernoulli[i] );
return 0;
}
Output:
n           Bn
----------------------
0      1.000000000000
1     -0.500000000000
2      0.166666666667
4     -0.033333333333
6      0.023809523810
8     -0.033333333333
10      0.075757575758
12     -0.253113553114
14      1.166666666667
16     -7.092156862745

### Parameters

 iMax input maximal index requested dB output pointer to the array of numbers declared in the calling module. Array dimension should be iMax+1 or greater

### Authors

Anatoly Prognimack (Mar 13, 2005)
Developed & tested with: Borland C++ 3.1 for DOS and Microsoft Visual C++ 5.0, 6.0
Updated by Will Bateman (March 2005)
##### Source Code

Source code is available when you agree to a GP Licence or buy a Commercial Licence.

Not a member, then Register with CodeCogs. Already a Member, then Login.