besselJs {Bessel} | R Documentation |

## Bessel J() function Simple Series Representation

### Description

Computes the modified Bessel `J`

function, using one of its basic
definitions as an infinite series, e.g. A. & S., p.360, (9.1.10). The
implementation is pure **R**, working for `numeric`

,
`complex`

, but also e.g., for objects of class
`"mpfr"`

from package Rmpfr.

### Usage

```
besselJs(x, nu, nterm = 800, log = FALSE,
Ceps = if (isNum) 8e-16 else 2^(-x@.Data[[1]]@prec))
```

### Arguments

`x` |
numeric or complex vector, or of another |

`nu` |
non-negative numeric (scalar). |

`nterm` |
integer indicating the number of terms to be used.
Should be in the order of |

`log` |
logical indicating if the logarithm |

`Ceps` |
a relative error tolerance for checking if |

### Value

a “numeric” (or complex or `"mpfr"`

)
vector of the same class and length as `x`

.

### Author(s)

Martin Maechler

### References

Abramowitz, M., and Stegun, I. A. (1955, etc).
*Handbook of mathematical functions*
(NBS AMS series 55, U.S. Dept. of Commerce).
http://people.math.sfu.ca/~cbm/aands/page_360.htm

### See Also

This package `BesselJ`

, base `besselJ`

, etc

### Examples

```
stopifnot(all.equal(besselJs(1:10, 1), # our R code
besselJ (1:10, 1)))# internal C code w/ different algorithm
## Large 'nu' ...
x <- (0:20)/4
(bx <- besselJ(x, nu=200))# base R's -- gives (mostly wrong) warnings
if(require("Rmpfr")) { ## Use high precision, notably large exponent range, numbers:
Bx <- besselJs(mpfr(x, 64), nu=200)
all.equal(Bx, bx, tol = 1e-15)# TRUE -- warnings were mostly wrong; specifically:
cbind(bx, Bx)
signif(asNumeric(1 - (bx/Bx)[19:21]), 4) # only [19] had lost accuracy
## With*out* mpfr numbers -- using log -- is accurate (here)
lbx <- besselJs( x, nu=200, log=TRUE)
lBx <- besselJs(mpfr(x, 64), nu=200, log=TRUE)
cbind(x, lbx, lBx)
stopifnot(all.equal(asNumeric(log(Bx)), lbx, tol=1e-15),
all.equal(lBx, lbx, tol=4e-16))
} # Rmpfr
```

*Bessel*version 0.6-0 Index]