### 8.29 `BESSEL_JN` — Bessel function of the first kind

Description:
  `BESSEL_JN(N, X)` computes the Bessel function of the first kind of order N of X. This function is available under the name `BESJN` as a GNU extension. If N and X are arrays, their ranks and shapes shall conform.

  `BESSEL_JN(N1, N2, X)` returns an array with the Bessel functions of the first kind of the orders N1 to N2.

Standard:
  Fortran 2008 and later, negative N is allowed as GNU extension
Class:
  Elemental function, except for the transformational function `BESSEL_JN(N1, N2, X)`
Syntax:

  `RESULT = BESSEL_JN(N, X)`
  `RESULT = BESSEL_JN(N1, N2, X)`

Arguments:

  N | Shall be a scalar or an array of type `INTEGER`.
  N1 | Shall be a non-negative scalar of type `INTEGER`.
  N2 | Shall be a non-negative scalar of type `INTEGER`.
  X | Shall be a scalar or an array of type `REAL`; for `BESSEL_JN(N1, N2, X)` it shall be scalar.

Return value:
  The return value is a scalar of type `REAL`. It has the same kind as X.
Note:
  The transformational function uses a recurrence algorithm which might, for some values of X, lead to different results than calls to the elemental function.
Example:

                program test_besjn
                  real(8) :: x = 1.0_8
                  x = bessel_jn(5,x)
                end program test_besjn

Specific names:

  Name | Argument | Return type | Standard
  `DBESJN(N, X)` | `INTEGER N` | `REAL(8)` | GNU extension
  | `REAL(8) X` |  |