libdspl-2.0/dspl/doc/html/ellipj_8c_source.html

127 wiersze
135 KiB
HTML
Czysty Wina Historia

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

<!-- HTML header for doxygen 1.8.13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.15"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libdspl-2.0: Исходный файл F:/dsplib.org/libdspl-2.0/dspl/src/ellipj.c</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="doxy_stylesheet.css" rel="stylesheet" type="text/css" />
<link href="http://dsplib.org/dsplib-stylesheet.css".css" rel="stylesheet" type="text/css">
</head>
<body>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter32971694 = new Ya.Metrika({
id:32971694,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
} catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = "https://mc.yandex.ru/metrika/watch.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/32971694" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<div class = "header-bar">
<div class = "menu-bar">
<nav>
<ul>
<div class = "dsplib-logo"><img src="http://dsplib.org/logo.png" /> </div>
<li><a href="http://ru.dsplib.org">Содержание</a></li>
<li><a href="http://ru.dsplib.org/dspl">DSPL</a></li>
<li><a href="http://ru.dsplib.org/forum">Форум</a></li>
<li>
<div class="search-bar">
<div class="ya-site-form ya-site-form_inited_no" onclick="return {'action':'http://ru.dsplib.org/search_results.html','arrow':false,'bg':'transparent','fontsize':12,'fg':'#000000','language':'ru','logo':'rb','publicname':'ru.dsplib.org поиск','suggest':true,'target':'_self','tld':'ru','type':2,'usebigdictionary':true,'searchid':2332185,'input_fg':'#000000','input_bg':'#ffffff','input_fontStyle':'normal','input_fontWeight':'normal','input_placeholder':'поиск','input_placeholderColor':'#000000','input_borderColor':'#7f9db9'}"><form action="https://yandex.ru/search/site/" method="get" target="_self" accept-charset="utf-8"><input type="hidden" name="searchid" value="2332185"/><input type="hidden" name="l10n" value="ru"/><input type="hidden" name="reqenc" value=""/><input type="search" name="text" value="" style = "height: 24px; font-family: verdana,arial; font-size: 12px"/><input type="submit" value="Найти" style = "display: none;"/></form></div><style type="text/css">.ya-page_js_yes .ya-site-form_inited_no { display: none; }</style><script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;if((' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1){e.className+=' ya-page_js_yes';}s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');</script>
</div>
</li>
</ul>
</nav>
</div>
</div>
<div class="main-dsplib">
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libdspl-2.0
</div>
<div id="projectbrief">Библиотека алгоритмов цифровой обработки сигналов</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Создано системой Doxygen 1.8.15 -->
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_12d635cfd40a13a86dc83e7a5cc309f3.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">ellipj.c</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">* Copyright (c) 2015-2019 Sergey Bakhurin</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">* Digital Signal Processing Library [http://dsplib.org]</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">* This file is part of DSPL.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">* is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">* it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">* the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">* (at your option) any later version.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">* DSPL is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">* GNU General Public License for more details.</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">*</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">* You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">* along with Foobar. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">*/</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &lt;stdio.h&gt;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;string.h&gt;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;math.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;dspl.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="comment">\fn int ellip_acd(double* w, int n, double k, double* u) </span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="comment">\brief Inverse Jacobi elliptic function </span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="comment">\f$ u = \textrm{cd}^{-1}(w, k)\f$ of real vector argument</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="comment">Function calculates inverse Jacobi elliptic function </span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="comment">\f$ u = \textrm{cd}^{-1}(w, k)\f$ of real vector `w`. \n</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="comment">\param[in] w Pointer to the argument vector \f$ w \f$. \n</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="comment">\param[in] n Size of vector `w`. \n </span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160;<span class="comment">\param[out] u Pointer to the vector of inverse Jacobi elliptic function</span></div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;<span class="comment"> \f$ u = \textrm{cd}^{-1}(w, k)\f$. \n</span></div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf345ef0ea154d7b42230c12bae270c01"> 60</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf345ef0ea154d7b42230c12bae270c01">ellip_acd</a>(<span class="keywordtype">double</span>* w, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <span class="keywordtype">double</span>* u)</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;{</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER], t;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">if</span>(!u || !w)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; {</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; u[m] = w[m];</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keywordflow">for</span>(i = 1; i &lt; ELLIP_ITER; i++)</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; {</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; t = lnd[i-1]*u[m];</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; t *= t;</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; t = 1.0 + sqrt(1.0 - t);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; u[m] = 2.0 * u[m] / (t+t*lnd[i]);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; }</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; u[m] = 2.0 * acos(u[m]) / M_PI;</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; }</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160;}</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160;</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160;</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;<span class="comment">\fn int ellip_acd_cmplx(complex_t* w, int n, double k, complex_t* u)</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160;<span class="comment">\brief Inverse Jacobi elliptic function </span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;<span class="comment">\f$ u = \textrm{cd}^{-1}(w, k)\f$ of complex vector argument</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160;<span class="comment">Function calculates inverse Jacobi elliptic function </span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;<span class="comment">\f$ u = \textrm{cd}^{-1}(w, k)\f$ of complex vector `w`. \n</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160;<span class="comment">\param[in] w Pointer to the argument vector \f$ w \f$. \n</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;<span class="comment">\param[in] n Size of vector `w`. \n </span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;<span class="comment">\param[out] u Pointer to the vector of inverse Jacobi elliptic function</span></div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="comment"> \f$ u = \textrm{cd}^{-1}(w, k)\f$. \n</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga6110be348c9d6aaffe7464b4114e011a"> 125</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga6110be348c9d6aaffe7464b4114e011a">ellip_acd_cmplx</a>(<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* w, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* u)</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160;{</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER], t;</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a> tmp0, tmp1;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span>(!u || !w)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; {</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(w[m]);</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(w[m]);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">for</span>(i = 1; i &lt; ELLIP_ITER; i++)</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; {</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) = lnd[i-1]*<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]);</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0) = lnd[i-1]*<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp1) = 1.0 - CMRE(tmp0, tmp0);</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp1) = - CMIM(tmp0, tmp0);</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p.html#ga951b305891a92cad47f0b465a1df9fd5">sqrt_cmplx</a>(&amp;tmp1, 1, &amp;tmp0);</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) += 1.0;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp1) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) * (1.0 + lnd[i]);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp1) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0) * (1.0 + lnd[i]);</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; t = 2.0 / <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a>(tmp1);</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) = t * CMCONJRE(u[m], tmp1);</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0) = t * CMCONJIM(u[m], tmp1);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0);</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0);</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; }</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga377b5d09f9be28370b6615cf93285957">acos_cmplx</a>(&amp;tmp0, 1, u+m);</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; t = 2.0 / M_PI;</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) *= t;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) *= t;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160;}</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160;</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160;</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160;<span class="comment">\fn int ellip_asn(double* w, int n, double k, double* u) </span></div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160;<span class="comment">\brief Inverse Jacobi elliptic function </span></div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160;<span class="comment">\f$ u = \textrm{sn}^{-1}(w, k)\f$ of real vector argument</span></div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;<span class="comment">Function calculates inverse Jacobi elliptic function </span></div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160;<span class="comment">\f$ u = \textrm{sn}^{-1}(w, k)\f$ of real vector `w`. \n</span></div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;<span class="comment">\param[in] w Pointer to the argument vector \f$ w \f$. \n</span></div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160;<span class="comment">\param[in] n Size of vector `w`. \n </span></div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160;<span class="comment">\param[out] u Pointer to the vector of inverse Jacobi elliptic function</span></div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;<span class="comment"> \f$ u = \textrm{sn}^{-1}(w, k)\f$. \n</span></div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga142cd3a45362a5e82fcf547ded77e3a4"> 210</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga142cd3a45362a5e82fcf547ded77e3a4">ellip_asn</a>(<span class="keywordtype">double</span>* w, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <span class="keywordtype">double</span>* u)</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160;{</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER], t;</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <span class="keywordflow">if</span>(!u || !w)</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; {</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; u[m] = w[m];</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">for</span>(i = 1; i &lt; ELLIP_ITER; i++)</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; {</div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; t = lnd[i-1]*u[m];</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; t *= t;</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; t = 1.0 + sqrt(1.0 - t);</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; u[m] = 2.0 * u[m] / (t+t*lnd[i]);</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; u[m] = 2.0 * asin(u[m]) / M_PI;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; }</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160;}</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160;</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160;<span class="comment">\fn int ellip_asn_cmplx(complex_t* w, int n, double k, complex_t* u)</span></div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160;<span class="comment">\brief Inverse Jacobi elliptic function </span></div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160;<span class="comment">\f$ u = \textrm{sn}^{-1}(w, k)\f$ of complex vector argument</span></div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;<span class="comment">Function calculates inverse Jacobi elliptic function </span></div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;<span class="comment">\f$ u = \textrm{sn}^{-1}(w, k)\f$ of complex vector `w`. \n</span></div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;<span class="comment">\param[in] w Pointer to the argument vector \f$ w \f$. \n</span></div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160;<span class="comment">\param[in] n Size of vector `w`. \n </span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160;<span class="comment">\param[out] u Pointer to the vector of inverse Jacobi elliptic function</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160;<span class="comment"> \f$ u = \textrm{sn}^{-1}(w, k)\f$. \n</span></div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00275"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gadb4326ef932a576883f2692c15a3af1e"> 275</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gadb4326ef932a576883f2692c15a3af1e">ellip_asn_cmplx</a>(<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* w, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* u)</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160;{</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER], t;</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a> tmp0, tmp1;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">if</span>(!u || !w)</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160;</div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; {</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(w[m]);</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(w[m]);</div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">for</span>(i = 1; i &lt; ELLIP_ITER; i++)</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; {</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) = lnd[i-1]*<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]);</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0) = lnd[i-1]*<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp1) = 1.0 - CMRE(tmp0, tmp0);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp1) = - CMIM(tmp0, tmp0);</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160;</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p.html#ga951b305891a92cad47f0b465a1df9fd5">sqrt_cmplx</a>(&amp;tmp1, 1, &amp;tmp0);</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) += 1.0;</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp1) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) * (1.0 + lnd[i]);</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp1) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0) * (1.0 + lnd[i]);</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160;</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; t = 2.0 / <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a>(tmp1);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160;</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0) = t * CMCONJRE(u[m], tmp1);</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0) = t * CMCONJIM(u[m], tmp1);</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp0);</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp0);</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; }</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga9e9ca62d62f8f4fa8c9876bdb7c1b59c">asin_cmplx</a>(&amp;tmp0, 1, u+m);</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; t = 2.0 / M_PI;</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) *= t;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) *= t;</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160;}</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160;</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160;</div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160;</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160;<span class="comment">int ellip_cd(double* u, int n, double k, double* y)</span></div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160;<span class="comment">\brief Jacobi elliptic function </span></div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;<span class="comment">\f$ y = \textrm{cd}(u K(k), k)\f$ of real vector argument</span></div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160;<span class="comment">Function calculates Jacobi elliptic function </span></div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;<span class="comment">\f$ y = \textrm{cd}(u K(k), k)\f$ of real vector `u` and</span></div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160;<span class="comment">elliptical modulus `k`. \n</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160;<span class="comment">\param[in] u Pointer to the argument vector \f$ u \f$. \n</span></div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;<span class="comment">\param[in] n Size of vector `u`. \n </span></div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00349"></a><span class="lineno"> 349</span>&#160;<span class="comment">\param[out] y Pointer to the vector of Jacobi elliptic function</span></div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;<span class="comment"> \f$ y = \textrm{cd}(u K(k), k)\f$. \n</span></div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00360"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gac90d82bda67569e4b57b904f3e8fd75c"> 360</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gac90d82bda67569e4b57b904f3e8fd75c">ellip_cd</a>(<span class="keywordtype">double</span>* u, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <span class="keywordtype">double</span>* y)</div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;{</div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER];</div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160;</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">if</span>(!u || !y)</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160;</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160;</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; {</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; y[m] = cos(u[m] * M_PI * 0.5);</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; <span class="keywordflow">for</span>(i = ELLIP_ITER-1; i&gt;0; i--)</div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; {</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; y[m] = (1.0 + lnd[i]) / (1.0 / y[m] + lnd[i]*y[m]);</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; }</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; }</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;}</div><div class="line"><a name="l00385"></a><span class="lineno"> 385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160;</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160;</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160;</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160;<span class="comment">int ellip_cd_cmplx(complex_t* u, int n, double k, complex_t* y)</span></div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;<span class="comment">\brief Jacobi elliptic function </span></div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160;<span class="comment">\f$ y = \textrm{cd}(u K(k), k)\f$ of complex vector argument</span></div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;<span class="comment">Function calculates Jacobi elliptic function </span></div><div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160;<span class="comment">\f$ y = \textrm{cd}(u K(k), k)\f$ of complex vector `u` and</span></div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;<span class="comment">elliptical modulus `k`. \n</span></div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;<span class="comment">\param[in] u Pointer to the argument vector \f$ u \f$. \n</span></div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00404"></a><span class="lineno"> 404</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160;<span class="comment">\param[in] n Size of vector `u`. \n </span></div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment">\param[out] y Pointer to the vector of Jacobi elliptic function</span></div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="comment"> \f$ y = \textrm{cd}(u K(k), k)\f$. \n</span></div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00424"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga030c798f0ddb4a511b43f935da3fe08d"> 424</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga030c798f0ddb4a511b43f935da3fe08d">ellip_cd_cmplx</a>(<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* u, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* y)</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;{</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER], t;</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a> tmp;</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160;</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">if</span>(!u || !y)</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160;</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160;</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160;</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; {</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) * M_PI * 0.5;</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) * M_PI * 0.5;</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga33ba6948e7af445698e13ef52d1110b1">cos_cmplx</a>(&amp;tmp, 1, y+m);</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; <span class="keywordflow">for</span>(i = ELLIP_ITER-1; i&gt;0; i--)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; {</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; t = 1.0 / <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a>(y[m]);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(y[m]) * t + <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(y[m]) * lnd[i];</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp) = -<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(y[m]) * t + <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(y[m]) * lnd[i];</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; t = (1.0 + lnd[i]) / <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a>(tmp);</div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160;</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(y[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp) * t;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(y[m]) = -<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp) * t;</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160;</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; }</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; }</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160;}</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160;</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160;</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160;</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160;</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160;<span class="comment">\fn int ellip_landen(double k, int n, double* y)</span></div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160;<span class="comment">\brief Function calculates complete elliptical integral </span></div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160;<span class="comment">coefficients \f$ k_i \f$ </span></div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160;<span class="comment">Complete elliptical integral \f$ K(k) \f$ can be described as:</span></div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160;<span class="comment">\f[</span></div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160;<span class="comment">K(k) = \frac{\pi}{2} \prod_{i = 1}^{\infty}(1+k_i),</span></div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160;<span class="comment">\f]</span></div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160;<span class="comment">here \f$ k_i \f$ -- coefficients which calculated </span></div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160;<span class="comment">iterative from \f$ k_0 = k\f$: </span></div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;<span class="comment">\f[</span></div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160;<span class="comment">k_i = </span></div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160;<span class="comment">\left( </span></div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160;<span class="comment">\frac{k_{i-1}}</span></div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;<span class="comment">{</span></div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160;<span class="comment">1+\sqrt{1-k_{i-1}^2}</span></div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160;<span class="comment">}</span></div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;<span class="comment">\right)^2</span></div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160;<span class="comment">\f]</span></div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160;<span class="comment">This function calculates `n` fist coefficients \f$ k_i \f$, which can</span></div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160;<span class="comment">be used for Complete elliptical integral.</span></div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n</span></div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160;<span class="comment">\param[in] n Number of \f$ k_i \f$ which need to calculate.\n </span></div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160;<span class="comment"> Parameter `n` is size of output vector `y`.\n </span></div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160;<span class="comment">\param[out] y pointer to the real vector which keep \f$ k_i \f$. \n</span></div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;<span class="comment"> `RES_OK` -- successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160;<span class="comment">Example:</span></div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160;<span class="comment">\include ellip_landen_test.c</span></div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160;<span class="comment">Result:</span></div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;<span class="comment">\verbatim</span></div><div class="line"><a name="l00521"></a><span class="lineno"> 521</span>&#160;<span class="comment"> i k[i]</span></div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160;<span class="comment"> 1 4.625e-01</span></div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160;<span class="comment"> 2 6.009e-02</span></div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;<span class="comment"> 3 9.042e-04</span></div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;<span class="comment"> 4 2.044e-07</span></div><div class="line"><a name="l00527"></a><span class="lineno"> 527</span>&#160;<span class="comment"> 5 1.044e-14</span></div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;<span class="comment"> 6 2.727e-29</span></div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160;<span class="comment"> 7 1.859e-58</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160;<span class="comment"> 8 8.640e-117</span></div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160;<span class="comment"> 9 1.866e-233</span></div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;<span class="comment">10 0.000e+00</span></div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160;<span class="comment">11 0.000e+00</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160;<span class="comment">12 0.000e+00</span></div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160;<span class="comment">13 0.000e+00</span></div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;<span class="comment">\endverbatim</span></div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;<span class="comment">\note Complete elliptical integral converges enough fast</span></div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160;<span class="comment"> if modulus \f$ k&lt;1 \f$. There are 10 to 20 coefficients \f$ k_i \f$ </span></div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160;<span class="comment"> are sufficient for practical applications</span></div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;<span class="comment"> to ensure complete elliptic integral precision within EPS.</span></div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00545"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6"> 545</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(<span class="keywordtype">double</span> k, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span>* y)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160;{</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordtype">int</span> i;</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; y[0] = k;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160;</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160; <span class="keywordflow">if</span>(!y)</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; <span class="keywordflow">if</span>(n &lt; 1)</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00554"></a><span class="lineno"> 554</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160;</div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="keywordflow">for</span>(i = 1; i &lt; n; i++)</div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; {</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; y[i] = y[i-1] / (1.0 + sqrt(1.0 - y[i-1] * y[i-1]));</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; y[i] *= y[i];</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; }</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"> 566</span>&#160;</div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160;</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160;<span class="comment"> * Elliptic modular equation</span></div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160;<span class="keywordtype">int</span> DSPL_API ellip_modulareq(<span class="keywordtype">double</span> rp, <span class="keywordtype">double</span> rs, <span class="keywordtype">int</span> ord, <span class="keywordtype">double</span> *k)</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160;{</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordtype">double</span> ep, es, ke, kp, t, sn = 0.0;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordtype">int</span> i, L, r;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; <span class="keywordflow">if</span>(rp &lt; 0 || rp == 0)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga93dffc900c697c2fc2b4c042ef3796c1">ERROR_FILTER_RP</a>;</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span>(rs &lt; 0 || rs == 0)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga08e7dbd983321b7db53d221919b13ac0">ERROR_FILTER_RS</a>;</div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordflow">if</span>(ord &lt; 1)</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga58db6b22351df1bc37812216ce3b902f">ERROR_FILTER_ORD</a>;</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span>(!k)</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; ep = sqrt(pow(10.0, rp*0.1)-1.0);</div><div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; es = sqrt(pow(10.0, rs*0.1)-1.0);</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; ke = ep/es;</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; ke = sqrt(1.0 - ke*ke);</div><div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160;</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; r = ord % 2;</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; L = (ord-r)/2;</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160;</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; kp = 1.0;</div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; L; i++)</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; {</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; t = (double)(2*i+1) / (double)ord;</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gae9f8b103230a0c1d261ffa792a6f41ae">ellip_sn</a>(&amp;t, 1, ke, &amp;sn);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; sn*=sn;</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; kp *= sn*sn;</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; }</div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160;</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; kp *= pow(ke, (<span class="keywordtype">double</span>)ord);</div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; *k = sqrt(1.0 - kp*kp);</div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160;</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160;</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160;}</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160;</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160;<span class="comment"> * Elliptic rational function</span></div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160;<span class="keywordtype">int</span> DSPL_API ellip_rat(<span class="keywordtype">double</span>* w, <span class="keywordtype">int</span> n, <span class="keywordtype">int</span> ord, <span class="keywordtype">double</span> k, <span class="keywordtype">double</span>* u)</div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160;{</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordtype">double</span> t, xi, w2, xi2, k2;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; <span class="keywordtype">int</span> i, m, r, L;</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160;</div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span>(!u || !w)</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160;</div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; r = ord%2;</div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; L = (ord-r)/2;</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span>(r)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; memcpy(u, w, n*<span class="keyword">sizeof</span>(<span class="keywordtype">double</span>));</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; {</div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160; {</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160; u[m] = 1.0;</div><div class="line"><a name="l00641"></a><span class="lineno"> 641</span>&#160; }</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160; }</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160;</div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; k2 = k*k;</div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="keywordflow">for</span>(i = 0; i &lt; L; i++)</div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160; {</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; t = (double)(2*i+1) / (double)ord;</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gac90d82bda67569e4b57b904f3e8fd75c">ellip_cd</a>(&amp;t, 1, k, &amp;xi);</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; xi2 = xi*xi;</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; {</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; w2 = w[m]*w[m];</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; u[m] *= (w2 - xi2) / (1.0 - w2 * k2 * xi2);</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; u[m] *= (1.0 - k2*xi2) / (1.0 - xi2);</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; }</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; }</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160;}</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160;</div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160;</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160;</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160;</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160;<span class="comment">int ellip_sn(double* u, int n, double k, double* y)</span></div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160;<span class="comment">\brief Jacobi elliptic function </span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160;<span class="comment">\f$ y = \textrm{sn}(u K(k), k)\f$ of real vector argument</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160;<span class="comment">Function calculates Jacobi elliptic function </span></div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160;<span class="comment">\f$ y = \textrm{sn}(u K(k), k)\f$ of real vector `u` and</span></div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160;<span class="comment">elliptical modulus `k`. \n</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160;<span class="comment">\param[in] u Pointer to the argument vector \f$ u \f$. \n</span></div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00678"></a><span class="lineno"> 678</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00679"></a><span class="lineno"> 679</span>&#160;<span class="comment">\param[in] n Size of vector `u`. \n </span></div><div class="line"><a name="l00680"></a><span class="lineno"> 680</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00681"></a><span class="lineno"> 681</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00682"></a><span class="lineno"> 682</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160;<span class="comment">\param[out] y Pointer to the vector of Jacobi elliptic function</span></div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;<span class="comment"> \f$ y = \textrm{sn}(u K(k), k)\f$. \n</span></div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00697"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gae9f8b103230a0c1d261ffa792a6f41ae"> 697</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gae9f8b103230a0c1d261ffa792a6f41ae">ellip_sn</a>(<span class="keywordtype">double</span>* u, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <span class="keywordtype">double</span>* y)</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160;{</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER];</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00701"></a><span class="lineno"> 701</span>&#160;</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160; <span class="keywordflow">if</span>(!u || !y)</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160;</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"> 712</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160; {</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; y[m] = sin(u[m] * M_PI * 0.5);</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <span class="keywordflow">for</span>(i = ELLIP_ITER-1; i&gt;0; i--)</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; {</div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; y[m] = (1.0 + lnd[i]) / (1.0 / y[m] + lnd[i]*y[m]);</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160; }</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; }</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;}</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno"> 723</span>&#160;</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160;</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160;<span class="comment">/*****************************************************************************</span></div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;<span class="comment">\ingroup SPEC_MATH_ELLIP_GROUP</span></div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160;<span class="comment">int ellip_sn_cmplx(complex_t* u, int n, double k, complex_t* y)</span></div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160;<span class="comment">\brief Jacobi elliptic function </span></div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;<span class="comment">\f$ y = \textrm{sn}(u K(k), k)\f$ of complex vector argument</span></div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160;<span class="comment">Function calculates Jacobi elliptic function </span></div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;<span class="comment">\f$ y = \textrm{sn}(u K(k), k)\f$ of complex vector `u` and</span></div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160;<span class="comment">elliptical modulus `k`. \n</span></div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;<span class="comment">\param[in] u Pointer to the argument vector \f$ u \f$. \n</span></div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160;<span class="comment">\param[in] n Size of vector `u`. \n </span></div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160;<span class="comment">\param[in] k Elliptical modulus \f$ k \f$. \n</span></div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160;<span class="comment"> Elliptical modulus is real parameter,</span></div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;<span class="comment"> which values can be from 0 to 1. \n \n </span></div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160;<span class="comment"> </span></div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160;<span class="comment">\param[out] y Pointer to the vector of Jacobi elliptic function</span></div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;<span class="comment"> \f$ y = \textrm{sn}(u K(k), k)\f$. \n</span></div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160;<span class="comment"> Vector size is `[n x 1]`. \n</span></div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160;<span class="comment"> Memory must be allocated. \n \n</span></div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;<span class="comment">\return</span></div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160;<span class="comment">`RES_OK` successful exit, else \ref ERROR_CODE_GROUP &quot;error code&quot;. \n</span></div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160;<span class="comment"></span></div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160;<span class="comment">\author Sergey Bakhurin www.dsplib.org </span></div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160;<span class="comment"> ******************************************************************************/</span></div><div class="line"><a name="l00758"></a><span class="lineno"><a class="line" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga02b85a145338ba49e351ae93ccb1b689"> 758</a></span>&#160;<span class="keywordtype">int</span> DSPL_API <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga02b85a145338ba49e351ae93ccb1b689">ellip_sn_cmplx</a>(<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* u, <span class="keywordtype">int</span> n, <span class="keywordtype">double</span> k, <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a>* y)</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160;{</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <span class="keywordtype">double</span> lnd[ELLIP_ITER], t;</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; <span class="keywordtype">int</span> i, m;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a> tmp;</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160;</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; <span class="keywordflow">if</span>(!u || !y)</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a>;</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span>(n&lt;1)</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a>;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; <span class="keywordflow">if</span>(k &lt; 0.0 || k&gt;= 1.0)</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">return</span> ERROR_ELLIP_MODULE;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160;</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a>(k,ELLIP_ITER, lnd);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="keywordflow">for</span>(m = 0; m &lt; n; m++)</div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; {</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(u[m]) * M_PI * 0.5;</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(u[m]) * M_PI * 0.5;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160;</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; <a class="code" href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga514268fdfc9d33f89c6d0c6bfdbc5488">sin_cmplx</a>(&amp;tmp, 1, y+m);</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160;</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; <span class="keywordflow">for</span>(i = ELLIP_ITER-1; i&gt;0; i--)</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; {</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; t = 1.0 / <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a>(y[m]);</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160;</div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(y[m]) * t + <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(y[m]) * lnd[i];</div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp) = -<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(y[m]) * t + <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(y[m]) * lnd[i];</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; t = (1.0 + lnd[i]) / <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a>(tmp);</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160;</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(y[m]) = <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a>(tmp) * t;</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(y[m]) = -<a class="code" href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a>(tmp) * t;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; }</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; }</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <span class="keywordflow">return</span> <a class="code" href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a>;</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160;}</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160;</div><div class="ttc" id="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p_html_ga75a729cde9582beeb20e77f18407f426"><div class="ttname"><a href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga75a729cde9582beeb20e77f18407f426">ERROR_SIZE</a></div><div class="ttdeci">#define ERROR_SIZE</div><div class="ttdoc">Ошибка при передаче размера массива. Данная ошибка возникает когда помимо указателя на массив входных...</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00148">dspl.h:148</a></div></div>
<div class="ttc" id="group___t_y_p_e_s___g_r_o_u_p_html_gaacff82c46e2eef9207670a2e52ed4b89"><div class="ttname"><a href="group___t_y_p_e_s___g_r_o_u_p.html#gaacff82c46e2eef9207670a2e52ed4b89">complex_t</a></div><div class="ttdeci">double complex_t[2]</div><div class="ttdoc">Описание комплексного типа данных.</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00041">dspl.h:41</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_gaf0b3f534bad7b93d90eb8a9b493cddc6"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf0b3f534bad7b93d90eb8a9b493cddc6">ellip_landen</a></div><div class="ttdeci">int ellip_landen(double k, int n, double *y)</div><div class="ttdoc">Расчет коэффициентов ряда полного эллиптического интеграла.</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00545">ellipj.c:545</a></div></div>
<div class="ttc" id="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p_html_ga477d967805466948edb85d57c95532a3"><div class="ttname"><a href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga477d967805466948edb85d57c95532a3">ERROR_PTR</a></div><div class="ttdeci">#define ERROR_PTR</div><div class="ttdoc">Ошибка указателя. Данная ошибка означает, что один из обязательных указателей (память под который дол...</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00140">dspl.h:140</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_gaf345ef0ea154d7b42230c12bae270c01"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gaf345ef0ea154d7b42230c12bae270c01">ellip_acd</a></div><div class="ttdeci">int ellip_acd(double *w, int n, double k, double *u)</div><div class="ttdoc">Обратная эллиптическая функция Якоби вещественного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00060">ellipj.c:60</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_ga142cd3a45362a5e82fcf547ded77e3a4"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga142cd3a45362a5e82fcf547ded77e3a4">ellip_asn</a></div><div class="ttdeci">int ellip_asn(double *w, int n, double k, double *u)</div><div class="ttdoc">Обратная эллиптическая функция Якоби вещественного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00210">ellipj.c:210</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p_html_ga514268fdfc9d33f89c6d0c6bfdbc5488"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga514268fdfc9d33f89c6d0c6bfdbc5488">sin_cmplx</a></div><div class="ttdeci">int sin_cmplx(complex_t *x, int n, complex_t *y)</div><div class="ttdoc">Синус комплексного аргумента x</div><div class="ttdef"><b>Definition:</b> <a href="complex_8c_source.html#l00513">complex.c:513</a></div></div>
<div class="ttc" id="group___t_y_p_e_s___g_r_o_u_p_html_gab52656a2ffb9da83eb2b959b3c955235"><div class="ttname"><a href="group___t_y_p_e_s___g_r_o_u_p.html#gab52656a2ffb9da83eb2b959b3c955235">IM</a></div><div class="ttdeci">#define IM(x)</div><div class="ttdoc">Макрос определяющий мнимую часть комплексного числа.</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00078">dspl.h:78</a></div></div>
<div class="ttc" id="group___t_y_p_e_s___g_r_o_u_p_html_ga770c27ca7e4fb6f017a57b638e8d45f7"><div class="ttname"><a href="group___t_y_p_e_s___g_r_o_u_p.html#ga770c27ca7e4fb6f017a57b638e8d45f7">ABSSQR</a></div><div class="ttdeci">#define ABSSQR(x)</div><div class="ttdoc">Макрос возвращает квадрат модуля комплексного числа x.</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00082">dspl.h:82</a></div></div>
<div class="ttc" id="group___t_y_p_e_s___g_r_o_u_p_html_ga4ad411d49d4ec45752869ddaeac54653"><div class="ttname"><a href="group___t_y_p_e_s___g_r_o_u_p.html#ga4ad411d49d4ec45752869ddaeac54653">RE</a></div><div class="ttdeci">#define RE(x)</div><div class="ttdoc">Макрос определяющий реальную часть комплексного числа.</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00077">dspl.h:77</a></div></div>
<div class="ttc" id="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p_html_ga58db6b22351df1bc37812216ce3b902f"><div class="ttname"><a href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga58db6b22351df1bc37812216ce3b902f">ERROR_FILTER_ORD</a></div><div class="ttdeci">#define ERROR_FILTER_ORD</div><div class="ttdoc">Порядок фильтра задан неверно. Порядок фильтра должен быть задан положительным целым значением.</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00111">dspl.h:111</a></div></div>
<div class="ttc" id="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p_html_ga08e7dbd983321b7db53d221919b13ac0"><div class="ttname"><a href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga08e7dbd983321b7db53d221919b13ac0">ERROR_FILTER_RS</a></div><div class="ttdeci">#define ERROR_FILTER_RS</div><div class="ttdoc">Параметр подавления фильтра в полосе заграждения задан неверно. Данный параметр задается в дБ и долже...</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00114">dspl.h:114</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_ga030c798f0ddb4a511b43f935da3fe08d"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga030c798f0ddb4a511b43f935da3fe08d">ellip_cd_cmplx</a></div><div class="ttdeci">int ellip_cd_cmplx(complex_t *u, int n, double k, complex_t *y)</div><div class="ttdoc">Эллиптическая функция Якоби комплексного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00424">ellipj.c:424</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p_html_ga951b305891a92cad47f0b465a1df9fd5"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___c_o_m_m_o_n___g_r_o_u_p.html#ga951b305891a92cad47f0b465a1df9fd5">sqrt_cmplx</a></div><div class="ttdeci">int sqrt_cmplx(complex_t *x, int n, complex_t *y)</div><div class="ttdoc">Квадратный корень из комплексного вектора x (поэлементный).</div><div class="ttdef"><b>Definition:</b> <a href="complex_8c_source.html#l00588">complex.c:588</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_gac90d82bda67569e4b57b904f3e8fd75c"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gac90d82bda67569e4b57b904f3e8fd75c">ellip_cd</a></div><div class="ttdeci">int ellip_cd(double *u, int n, double k, double *y)</div><div class="ttdoc">Эллиптическая функция Якоби вещественного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00360">ellipj.c:360</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_gae9f8b103230a0c1d261ffa792a6f41ae"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gae9f8b103230a0c1d261ffa792a6f41ae">ellip_sn</a></div><div class="ttdeci">int ellip_sn(double *u, int n, double k, double *y)</div><div class="ttdoc">Эллиптическая функция Якоби вещественного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00697">ellipj.c:697</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_ga6110be348c9d6aaffe7464b4114e011a"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga6110be348c9d6aaffe7464b4114e011a">ellip_acd_cmplx</a></div><div class="ttdeci">int ellip_acd_cmplx(complex_t *w, int n, double k, complex_t *u)</div><div class="ttdoc">Обратная эллиптическая функция Якоби комплексного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00125">ellipj.c:125</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p_html_ga33ba6948e7af445698e13ef52d1110b1"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga33ba6948e7af445698e13ef52d1110b1">cos_cmplx</a></div><div class="ttdeci">int cos_cmplx(complex_t *x, int n, complex_t *y)</div><div class="ttdoc">Косинус комплексного аргумента x</div><div class="ttdef"><b>Definition:</b> <a href="complex_8c_source.html#l00299">complex.c:299</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p_html_ga377b5d09f9be28370b6615cf93285957"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga377b5d09f9be28370b6615cf93285957">acos_cmplx</a></div><div class="ttdeci">int acos_cmplx(complex_t *x, int n, complex_t *y)</div><div class="ttdoc">Арккосинус комплексного аргумента x</div><div class="ttdef"><b>Definition:</b> <a href="complex_8c_source.html#l00080">complex.c:80</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_gadb4326ef932a576883f2692c15a3af1e"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#gadb4326ef932a576883f2692c15a3af1e">ellip_asn_cmplx</a></div><div class="ttdeci">int ellip_asn_cmplx(complex_t *w, int n, double k, complex_t *u)</div><div class="ttdoc">Обратная эллиптическая функция Якоби комплексного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00275">ellipj.c:275</a></div></div>
<div class="ttc" id="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p_html_ga93dffc900c697c2fc2b4c042ef3796c1"><div class="ttname"><a href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga93dffc900c697c2fc2b4c042ef3796c1">ERROR_FILTER_RP</a></div><div class="ttdeci">#define ERROR_FILTER_RP</div><div class="ttdoc">Параметр неравномерности фильтра в полосе пропускания задан неверно. Данный параметр задается в дБ и ...</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00113">dspl.h:113</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p_html_ga02b85a145338ba49e351ae93ccb1b689"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___e_l_l_i_p___g_r_o_u_p.html#ga02b85a145338ba49e351ae93ccb1b689">ellip_sn_cmplx</a></div><div class="ttdeci">int ellip_sn_cmplx(complex_t *u, int n, double k, complex_t *y)</div><div class="ttdoc">Эллиптическая функция Якоби комплексного аргумента</div><div class="ttdef"><b>Definition:</b> <a href="ellipj_8c_source.html#l00758">ellipj.c:758</a></div></div>
<div class="ttc" id="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p_html_ga9e9ca62d62f8f4fa8c9876bdb7c1b59c"><div class="ttname"><a href="group___s_p_e_c___m_a_t_h___t_r_i_g___g_r_o_u_p.html#ga9e9ca62d62f8f4fa8c9876bdb7c1b59c">asin_cmplx</a></div><div class="ttdeci">int asin_cmplx(complex_t *x, int n, complex_t *y)</div><div class="ttdoc">Арксинус комплексного аргумента x</div><div class="ttdef"><b>Definition:</b> <a href="complex_8c_source.html#l00151">complex.c:151</a></div></div>
<div class="ttc" id="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p_html_ga312c04ce416e0afdbd653394e36a117d"><div class="ttname"><a href="group___e_r_r_o_r___c_o_d_e___g_r_o_u_p.html#ga312c04ce416e0afdbd653394e36a117d">RES_OK</a></div><div class="ttdeci">#define RES_OK</div><div class="ttdoc">Функция завершилась корректно. Ошибки отсутствуют.</div><div class="ttdef"><b>Definition:</b> <a href="dspl_8h_source.html#l00094">dspl.h:94</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- HTML footer for doxygen 1.8.13-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Документация по libdspl-2.0. Последние изменения: Пн 4 Ноя 2019 16:56:51. Создано системой &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.15
</small></address>
</div>
</body>
</html>