

/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int ellip_acd(double* w, int n, double k, double* u)  
\brief  Обратная эллиптическая функция Якоби 
  \f$ u = \textrm{cd}^{-1}(w, k)\f$ вещественного аргумента

Функция рассчитывает значения обратной эллиптической функции 
\f$ u = \textrm{cd}^{-1}(w, k)\f$  для вещественного вектора `w`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n
  
\param[in]  w
Указатель на массив вектора переменной \f$ w \f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n
    
\param[in]  n
Размер вектора `w`. \n 
  
\param[in]  k   Значение эллиптического модуля \f$ k \f$. 
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1. \n \n 


\param[out]  u
Указатель на вектор значений обратной эллиптической
функции \f$ u = \textrm{cd}^{-1}(w, k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n


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

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







/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int ellip_acd_cmplx(complex_t* w, int n, double k, complex_t* u)  
\brief  Обратная эллиптическая функция Якоби 
  \f$ u = \textrm{cd}^{-1}(w, k)\f$ комплексного аргумента

Функция рассчитывает занчения значения обратной эллиптической функции 
\f$ u = \textrm{cd}^{-1}(w, k)\f$  для комплексного вектора `w`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n

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

\param[in]  n
Размер вектора `w`.  \n \n 

\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 

\param[out]  u
Указатель на вектор значений обратной эллиптической
функции \f$ u = \textrm{cd}^{-1}(w, k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n

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

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







/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int ellip_asn(double* w, int n, double k, double* u)  
\brief  Обратная эллиптическая функция Якоби 
  \f$ u = \textrm{sn}^{-1}(w, k)\f$ вещественного аргумента

Функция рассчитывает занчения значения обратной эллиптической функции 
\f$ u = \textrm{sn}^{-1}(w, k)\f$  для вещественного вектора `w`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n

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

\param[in]  n
Размер вектора `w`.  \n \n 

\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 

\param[out]  u
Указатель на вектор значений обратной эллиптической
функции \f$ u = \textrm{sn}^{-1}(w, k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n

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

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







/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int ellip_asn_cmplx(complex_t* w, int n, double k, complex_t* u)  
\brief  Обратная эллиптическая функция Якоби 
  \f$ u = \textrm{sn}^{-1}(w, k)\f$ комплексного аргумента

Функция рассчитывает занчения значения обратной эллиптической функции 
\f$ u = \textrm{sn}^{-1}(w, k)\f$  для комплексного вектора `w`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n
  

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

\param[in]  n
Размер вектора `w`.  \n \n 
  
\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 

\param[out]  u
Указатель на вектор значений обратной эллиптической
функции \f$ u = \textrm{sn}^{-1}(w, k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n


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

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







/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int ellip_cd(double* u, int n, double k, double* y)  
\brief  Эллиптическая функция Якоби 
\f$ y = \textrm{cd}(u K(k), k)\f$ вещественного аргумента

Функция рассчитывает занчения значения эллиптической функции 
\f$ y = \textrm{cd}(u K(k), k)\f$  для вещественного вектора `u` и 
эллиптического  модуля `k`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n
  

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

\param[in]  n
Размер вектора `u`.  \n \n 

\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 

\param[out]  y
Указатель на вектор значений эллиптической
функции \f$ y = \textrm{cd}(u K(k), k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n


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

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







/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int  ellip_cd_cmplx(complex_t* u, int n, double k, complex_t* y)
\brief  Эллиптическая функция Якоби 
  \f$ y = \textrm{cd}(u K(k), k)\f$ комплексного аргумента

Функция рассчитывает занчения значения эллиптической функции 
\f$ y = \textrm{cd}(u K(k), k)\f$  для комплексного вектора `u` и 
эллиптического  модуля `k`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n
  

\param[in]  u
Указатель на массив вектора переменной \f$ u \f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n
    
\param[in]  n
Размер вектора `u`.  \n \n 
  
\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 
    

\param[out]  y
Указатель на вектор значений эллиптической
функции \f$ y = \textrm{cd}(u K(k), k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n


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

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






/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int  ellip_landen(double k, int n, double* y)
\brief  Расчет коэффициентов \f$ k_i \f$ ряда полного эллиптического интеграла.  

Полный эллиптический интеграл \f$ K(k) \f$ может быть представлен рядом:

\f[
K(k) = \frac{\pi}{2} \prod_{i = 1}^{\infty}(1+k_i),
\f]

где \f$ k_i \f$ вычисляется итерационно при начальных условиях \f$ k_0 = k\f$: 

\f[
k_i = 
\left( 
\frac{k_{i-1}}
{
1+\sqrt{1-k_{i-1}^2}
}
\right)^2
\f]

Данная функция рассчитывает ряд первых `n` значений \f$ k_i \f$, которые в
дальнейшем могут быть использованы для расчета эллиптического интеграла и 
эллиптических функций.

\param[in]  k
Эллиптический модуль \f$ k \f$. \n

\param[in]  n
Размер вектора `y` соответсвующих коэффициентам \f$ k_i \f$.  \n \n 

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


\return
`RES_OK` Расчет произведен успешно. \n
В противном случае \ref ERROR_CODE_GROUP "код ошибки". \n
      
Пример использования функции `ellip_landen`:

\include ellip_landen_test.c

Результат работы программы:

\verbatim
 i        k[i]

 1    4.625e-01
 2    6.009e-02
 3    9.042e-04
 4    2.044e-07
 5    1.044e-14
 6    2.727e-29
 7    1.859e-58
 8   8.640e-117
 9   1.866e-233
10    0.000e+00
11    0.000e+00
12    0.000e+00
13    0.000e+00
\endverbatim

\note
Ряд полного эллиптического интеграла сходится при значениях
эллиптического модуля \f$ k<1 \f$. При этом сходимость ряда достаточно
быстрая и для практический приложений достаточно от 10 до 20 значений 
\f$ k_i \f$ для обеспечения погрешности при расчете полного 
эллиптического интеграла в пределах машинной точности.

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






/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int ellip_sn(double* u, int n, double k, double* y)  
\brief  Эллиптическая функция Якоби 
\f$ y = \textrm{sn}(u K(k), k)\f$ вещественного аргумента

Функция рассчитывает занчения значения эллиптической функции 
\f$ y = \textrm{sn}(u K(k), k)\f$  для вещественного вектора `u` и 
эллиптического  модуля `k`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n
  

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

\param[in]  n
Размер вектора `u`. \n \n 

\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 

\param[out]  y
Указатель на вектор значений эллиптической
функции \f$ y = \textrm{sn}(u K(k), k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n


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

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







/*! ****************************************************************************
\ingroup SPEC_MATH_ELLIP_GROUP
\fn int  ellip_sn_cmplx(complex_t* u, int n, double k, complex_t* y)
\brief  Эллиптическая функция Якоби 
\f$ y = \textrm{sn}(u K(k), k)\f$ комплексного аргумента

Функция рассчитывает занчения значения эллиптической функции 
\f$ y = \textrm{sn}(u K(k), k)\f$  для комплексного вектора `u` и 
эллиптического  модуля `k`. \n

Для расчета используется итерационный алгоритм на основе преобразования
Ландена. \n

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

\param[in]  n
Размер вектора `u`.  \n \n 

\param[in]  k
Значение эллиптического модуля \f$ k \f$. \n
Эллиптический модуль -- вещественный параметр, 
принимающий значения от 0 до 1.  \n \n 

\param[out]  y
Указатель на вектор значений эллиптической
функции \f$ y = \textrm{sn}(u K(k), k)\f$. \n
Размер вектора `[n x 1]`. \n
Память должна быть выделена. \n \n

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

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




