# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

# `bernoulli`

Bernoulli numbers and polynomials

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.

## Syntax

```bernoulli(`n`)
bernoulli(`n`, `x`)
```

## Description

`bernoulli(n)` returns the n-th Bernoulli number.

`bernoulli(n, x)` returns the n-th Bernoulli polynomial in x.

The Bernoulli polynomials are defined by the generating function

.

The Bernoulli numbers are defined by `bernoulli(n)` = `bernoulli(n,0)`.

An error occurs if `n` is a numerical value not representing a nonnegative integer.

If `n` is an integer larger than the value returned by `Pref::autoExpansionLimit`(), then the call `bernoulli(n)` is returned symbolically. Use `expand(bernoulli(n))` to get an explicit numerical result for large integers `n`.

If `n` contains non-numerical symbolic identifiers, then the call `bernoulli(n)` is returned symbolically. In most cases, the same holds true for calls ```bernoulli(n, x)```. Some simplifications are implemented for special numerical values such as `x = 0`, `x = 1/2`, ```x = 1``` etc. for symbolic `n` . Cf. Example 3.

### Note

Note that floating-point evaluation for high degree polynomials may be numerically unstable. Cf. Example 4.

The floating-point evaluation on the standard interval x ∈ [0, 1] is numerically stable for arbitrary `n`.

## Environment Interactions

When called with a floating-point value `x`, the function is sensitive to the environment variable `DIGITS` which determines the numerical working precision.

## Examples

### Example 1

The first Bernoulli numbers are:

`bernoulli(n) \$ n = 0..11`

The first Bernoulli polynomials:

`bernoulli(n, x) \$ n = 0..4`

If `n` is symbolic, then a symbolic call is returned:

`bernoulli(n, x), bernoulli(n + 3/2, x), bernoulli(n + 5*I, x)`

### Example 2

If `x` is not an indeterminate, then the evaluation of the Bernoulli polynomial at the point `x` is returned:

`bernoulli(50, 1 + I)`

`bernoulli(3, 1 - y), expand(bernoulli(3, 1 - y))`

### Example 3

Certain simplifications occur for some special numerical values of `x`, even if `n` is symbolic:

`bernoulli(n, 0), bernoulli(n, 1/2), bernoulli(n, 1)`

Calls with numerical arguments between and 1 are automatically rewritten in terms of calls with arguments between 0 and :

`bernoulli(n, 2/3), bernoulli(n, 0.7)`

Calls with negative numerical arguments are automatially rewritten in terms of calls with positive arguments:

`bernoulli(n, -2)`

`bernoulli(n, -12.345)`

### Example 4

Float evaluation of high degree polynomials may be numerically unstable:

`exact := bernoulli(50, 1 + I): float(exact);`

`bernoulli(50, float(1 + I))`

`DIGITS := 40: bernoulli(50, float(1 + I))`

`delete exact, DIGITS:`

### Example 5

Some system functions such as `diff` or `expand` handle symbolic calls of `bernoulli`:

Some system functions such as `diff` or `expand` handle symbolic calls of `bernoulli`:

`diff(bernoulli(n, f(x)), x)`

`expand(bernoulli(n, x + 2))`

`expand(bernoulli(n, -x))`

`expand(bernoulli(n, 3*x))`

## Parameters

 `n` An arithmetical expression representing a nonnegative integer `x`

## Return Values

Arithmetical expression.

## References

M. Abramowitz and I. Stegun, “Handbook of Mathematical Functions”, Dover Publications Inc., New York (1965).