/*! ****************************************************************************
\ingroup SPEC_MATH_TRANSCEND
\fn int bessel_i0(double* x, int n, double* y)
\brief
Модифицированная функция Бесселя первого рода \f$ I_0(x)\f$

Функция рассчитывает значения функции для вещественного вектора `x`, 
который должен принимать неотрицательные значения. \n

\param[in]  x
Указатель на вектор переменной \f$ x \f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n 
\n

\param[in]  n
Размер входного вектора `x`. \n 
\n

\param[out] y
Указатель на вектор значений функции \f$ I_0(x)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n 
\n

\return
`RES_OK` --- расчёт произведен успешно. \n
В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n

\note
Используемый алгоритм описа в статье:
Rational Approximations for the Modified Bessel Function 
of the First Kind – I0(x) for Computations with Double Precision 
by PAVEL HOLOBORODKO on NOVEMBER 11, 2015 

Пример использования функции `bessel_i0`:

\include bessel_i0.c

Данная программа рассчитывает значения функции \f$ I_0(x)\f$ переменной `x` 
в интервале \f$[0 \ 3]\f$. 
Рассчитанные данные сохраняются в текстовый файл `dat/dat0.txt` 
и выводятся на график `img/bessel_i0.png`

\image html bessel_i0.png


\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */



/*! ****************************************************************************
\ingroup SPEC_MATH_COMMON_GROUP
\fn int sinc(double* x, int n, double a, double* y)

\brief
Функция \f$ \textrm{sinc}(x,a) = \frac{\sin(ax)}{ax}\f$

Функция рассчитывает значения функции для вещественного вектора `x`.


\param[in]  x
Указатель на вектор переменной \f$ x \f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n 
\n

\param[in]  n
Размер входного вектора `x`. \n 
\n

\param[in]  a
Параметр функции \f$ \textrm{sinc}(x,a) = \frac{\sin(ax)}{ax}\f$. \n
\n


\param[out]  y
Указатель на вектор значений функции. \n
 Размер вектора `[n x 1]`. \n
 Память должна быть выделена. \n 
 \n


\return
`RES_OK` --- расчёт произведен успешно. \n
В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n

\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */



/*! ****************************************************************************
\ingroup SPEC_MATH_TRANSCEND
\fn int sine_int(double* x, int n, double* si)

\brief
Функция интегрального синуса

\f[ \textrm{Si}(x) = \int_{0}^{x} \frac{\sin(x)}{x} \, dx\f]

Функция рассчитывает значения функции для интегрального синуса 
для произвольного вещественного вектора `x`.


\param[in] x
Указатель на вектор переменной \f$ x \f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n
\n

\param[in] n
Размер входного вектора `x`. \n
\n


\param[out] si
Указатель на вектор значений функции интегрального синуса. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n
\n

\return
`RES_OK` --- расчёт произведен успешно. \n
В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n

Пример использования функции `sine_int`:

\include sine_int_test.c

Данная программа рассчитывает значения функции интегрального синуса и
функции \ref sinc для вектора переменной `x` 
в интервале \f$[-6\pi \ 6\pi]\f$. 
Рассчитанные данные сохраняются в текстовые файлы 
`dat/dat0.txt` и `dat/dat1.txt`

и выводятся на график `img/sine_int.png`

\image html sine_int.png

\author
Бахурин Сергей
www.dsplib.org
***************************************************************************** */


