2018-05-25 13:52:16 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*! ****************************************************************************
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `w`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] u Указатель на вектор значений обратной эллиптической
|
|
|
|
|
функции \f$ u = \textrm{cd}^{-1}(w, k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `w`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] u Указатель на вектор значений обратной эллиптической
|
|
|
|
|
функции \f$ u = \textrm{cd}^{-1}(w, k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `w`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] u Указатель на вектор значений обратной эллиптической
|
|
|
|
|
функции \f$ u = \textrm{sn}^{-1}(w, k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] w Указатель на массив вектора переменной \f$ w \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `w`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] u Указатель на вектор значений обратной эллиптической
|
|
|
|
|
функции \f$ u = \textrm{sn}^{-1}(w, k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `u`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] y Указатель на вектор значений эллиптической
|
|
|
|
|
функции \f$ y = \textrm{cd}(u K(k), k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `u`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] y Указатель на вектор значений эллиптической
|
|
|
|
|
функции \f$ y = \textrm{cd}(u K(k), k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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$.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `y` соответсвующих
|
|
|
|
|
коэффициентам \f$ k_i \f$. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] y Указатель на вектор значений
|
|
|
|
|
коэффициентов \f$ k_i \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
Пример использования функции `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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `u`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] y Указатель на вектор значений эллиптической
|
|
|
|
|
функции \f$ y = \textrm{sn}(u K(k), k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\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`.<BR>
|
|
|
|
|
|
|
|
|
|
Для расчета используется итерационный алгоритм на основе преобразования
|
|
|
|
|
Ландена.<BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[in] u Указатель на массив вектора переменной \f$ u \f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] n Размер вектора `u`. <BR><BR>
|
|
|
|
|
|
|
|
|
|
\param[in] k Значение эллиптического модуля \f$ k \f$.<BR>
|
|
|
|
|
Эллиптический модуль -- вещественный параметр,
|
|
|
|
|
принимающий значения от 0 до 1. <BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\param[out] y Указатель на вектор значений эллиптической
|
|
|
|
|
функции \f$ y = \textrm{sn}(u K(k), k)\f$.<BR>
|
|
|
|
|
Размер вектора `[n x 1]`.<BR>
|
|
|
|
|
Память должна быть выделена.<BR><BR>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
\return
|
|
|
|
|
`RES_OK` Расчет произведен успешно.<BR>
|
|
|
|
|
В противном случае
|
|
|
|
|
\ref ERROR_CODE_GROUP "код ошибки".<BR>
|
|
|
|
|
|
|
|
|
|
\author
|
|
|
|
|
Бахурин Сергей
|
|
|
|
|
www.dsplib.org
|
|
|
|
|
|
|
|
|
|
***************************************************************************** */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|