* Bug 16026 fixed: atanh() page and m2sci updated 52/21152/5
Samuel GOUGEON [Sun, 8 Dec 2019 23:22:35 +0000 (00:22 +0100)]
  http://bugzilla.scilab.org/16026

  Updated page (PDF): http://bugzilla.scilab.org/attachment.cgi?id=5031

Change-Id: Icfa1daf8594beed8c5290971179eef485736c2d3

scilab/CHANGES.md
scilab/modules/elementary_functions/help/en_US/trigonometry/atanh.xml
scilab/modules/elementary_functions/help/ja_JP/trigonometry/atanh.xml
scilab/modules/elementary_functions/help/pt_BR/trigonometry/atanh.xml
scilab/modules/elementary_functions/help/ru_RU/trigonometry/atanh.xml
scilab/modules/m2sci/help/en_US/m2sci_equivalents/a/atanh.xml
scilab/modules/m2sci/macros/sci_files/Makeproto
scilab/modules/m2sci/macros/sci_files/sci_atanh.sci

index 8cdebd6..932861d 100644 (file)
@@ -213,6 +213,7 @@ Bug Fixes
 * [#16014](http://bugzilla.scilab.org/show_bug.cgi?id=16014): after `x.a=1; x(:)=[]` x.a was an empty list.
 * [#16015](http://bugzilla.scilab.org/show_bug.cgi?id=116015): `intg(a,b,f)` called f(x) with x outside [a,b].
 * [#16021](http://bugzilla.scilab.org/show_bug.cgi?id=16021): `tand([-90 90])` answered [Nan Nan] instead of [-Inf, Inf]. `cotd([-90 90])` answered [Nan Nan] instead of [0 0]. `1 ./cosd([-90 90])` answered [Inf -Inf] instead of [Inf Inf].
+* [#16026](http://bugzilla.scilab.org/show_bug.cgi?id=16026): For `atanh()`, neither the documentation pages nor the `m2sci` converter were up to date.
 * [#16067](http://bugzilla.scilab.org/show_bug.cgi?id=16067): The display of matrices of signed integers was misaligned (regression of 6.0.0 vs 5.5.2)
 * [#16071](http://bugzilla.scilab.org/show_bug.cgi?id=16071): `prettyprint(complex(1,%nan))` omitted the "+" in `1 + Nani`. It printed positive exponents with a useless "+". For any input nul polynomial, the string result never included the name of the variable. Default input arguments could not be skipped. ExportFormat was uselessly case-sensitive. For tex|latex: for text input, $ \ % & { } ~ and ^ special characters were not protected ; spaces were not protected, all words were concatenated ; for polynomials and rationals, the result string could be extremely long and not easily wrappable. For MathML: "<" was not protected ; <mi></mi> were missing for text input ; <mtable>, </mtable>, <mtr>, </mtr>, <mtd>, <mfenced> and </mfenced> tags were not wrapped and could not be indented. Delimiters: "" was not documented as possible value ; ")" was wrongly documented. Dynamical linear systems were not documented as possible input.
 * [#16072](http://bugzilla.scilab.org/show_bug.cgi?id=16072): `prettyprint()` did not actually support input encoded integers.
index 60dce6f..91df46d 100644 (file)
@@ -2,8 +2,8 @@
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2008 - INRIA
- *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ * Copyright (C) 2019 - Samuel GOUGEON
  *
  * This file is hereby licensed under the terms of the GNU GPL v2.0,
  * pursuant to article 5.3.4 of the CeCILL v.2.1.
         <title>Arguments</title>
         <variablelist>
             <varlistentry>
-                <term>x</term>
-                <listitem>
-                    <para>a real or complex vector/matrix.</para>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term>t</term>
+                <term>x, t</term>
                 <listitem>
-                    <para>a real or complex vector/matrix.</para>
+                    <para>Arrays of real or complex numbers, of same sizes.</para>
                 </listitem>
             </varlistentry>
         </variablelist>
     <refsection>
         <title>Description</title>
         <para>
-            The components of vector <varname>t</varname> are the hyperbolic
-            tangent inverse of the corresponding entries of vector
-            <varname>x</varname>. Definition domain is <literal>[-1,1]</literal> for
-            the real function (see Remark).
+            The components of vector <varname>t</varname> are the hyperbolic tangent inverse of
+            the corresponding entries of vector <varname>x</varname>.
+            The result <varname>t</varname> is real for <varname>x</varname> in
+            <literal>[-1,1]</literal>, and complex otherwise.
         </para>
     </refsection>
     <refsection>
-        <title>Remark</title>
-        <para>
-            In Scilab (as in some others numerical software) when you try to
-            evaluate an elementary mathematical function outside its definition domain
-            in the real case, then the complex extension is used (with a complex
-            result). The most famous example being the <function>sqrt</function> function (try
-            <code>sqrt(-1)</code>!).
-        </para>
-        <para>
-            This approach has some drawbacks when you
-            evaluate the function at a singular point which may lead to different
-            results when the point is considered as real or complex.
-        </para>
+        <title>Examples</title>
         <para>
-            For <literal>atanh()</literal>, this occurs for <literal>-1</literal> and
-            <literal>1</literal>, because at these points the imaginary part does not
-            converge and so <literal>atanh(1) = +Inf + i NaN</literal> while
-            <literal>atanh(1) = +Inf</literal> for the real case (as lim <literal>x-&gt;1</literal>
-            of <code>atanh(x)</code>).
+            With input real numbers:
         </para>
+        <programlisting role="example"><![CDATA[
+x = [-%inf -2 -1 -0.5 0 0.5 1 2 3 %inf];
+[x ; atanh(tanh(x))]
+atanh(x')
+ ]]></programlisting>
+    <screen><![CDATA[
+--> [x ; atanh(tanh(x))]
+ ans  =
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+
+--> atanh(x')
+ ans  =
+   0.        + 1.5707963i
+  -0.5493061 + 1.5707963i
+  -Inf       + 0.i       
+  -0.5493061 + 0.i       
+   0.        + 0.i       
+   0.5493061 + 0.i       
+   Inf       + 0.i       
+   0.5493061 + 1.5707963i
+   0.3465736 + 1.5707963i
+   0.        + 1.5707963i
+]]></screen>
         <para>
-            So when you evaluate this function on the vector <literal>[1 2]</literal>
-            then like <literal>2</literal> is outside the definition
-            domain, the complex extension is used for all the vector and you get
-            <literal>atanh(1) = +Inf + i NaN</literal> while you get
-            <literal>atanh(1) = +Inf</literal> with <literal>[1, 0.5]</literal> for instance.
+            With input complex numbers:
         </para>
-    </refsection>
-    <refsection>
-        <title>Examples</title>
         <programlisting role="example"><![CDATA[
-// example 1
-x=[0,%i,-%i]
-tanh(atanh(x))
+x = [-1-%i, -%i, 0, %i, %i+1];
+[x; tanh(atanh(x)) ; atanh(tanh(x))]
+atanh(x.')
+ ]]></programlisting>
+    <screen><![CDATA[
+--> [x; tanh(atanh(x)) ; atanh(tanh(x))]
+ ans  =
 
-// example 2
-x = [-%inf -3 -2 -1 0 1 2 3 %inf]
-ieee(2)
-atanh(tanh(x))
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
 
-// example 3 (see Remark)
-ieee(2)
-atanh([1 2])
-atanh([1 0.5])
- ]]></programlisting>
+--> atanh(x.')
+ ans  =
+
+  -0.4023595 - 1.017222i
+   0.        - 0.7853982i
+   0.        + 0.i      
+   0.        + 0.7853982i
+   0.4023595 + 1.017222i
+]]></screen>
     </refsection>
     <refsection role="see also">
         <title>See also</title>
@@ -104,9 +106,25 @@ atanh([1 0.5])
             <member>
                 <link linkend="tanh">tanh</link>
             </member>
-            <member>
-                <link linkend="ieee">ieee</link>
-            </member>
         </simplelist>
     </refsection>
+    <refsection role="history">
+        <title>History</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0</revnumber>
+                <revdescription>
+                    <itemizedlist>
+                        <listitem>
+                            <literal>atanh(-1)</literal> is now always <literal>-Inf</literal>, and
+                            <literal>atanh(1)</literal> always <literal>Inf</literal>.
+                        </listitem>
+                        <listitem>
+                            For any real x>1, imag(atanh(x)) is now > 0.
+                        </listitem>
+                    </itemizedlist>
+                </revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index 07cd136..d303915 100644 (file)
@@ -1,10 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2008 - INRIA
- *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ * Copyright (C) 2019 - Samuel GOUGEON
  *
  * This file is hereby licensed under the terms of the GNU GPL v2.0,
  * pursuant to article 5.3.4 of the CeCILL v.2.1.
  * along with this program.
  *
  -->
-
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="atanh" xml:lang="ja">
-
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
+          xmlns:scilab="http://www.scilab.org" xml:id="atanh" xml:lang="ja">
     <refnamediv>
-
         <refname>atanh</refname>
-
         <refpurpose>双曲線逆正接</refpurpose>
-
     </refnamediv>
-
     <refsynopsisdiv>
-
         <title>呼び出し手順</title>
-
         <synopsis>t = atanh(x)</synopsis>
-
     </refsynopsisdiv>
-
     <refsection>
-
         <title>引数</title>
-
         <variablelist>
-
             <varlistentry>
-
-                <term>x</term>
-
+                <term>x, t</term>
                 <listitem>
-
                     <para>実数または複素数のベクトル/行列</para>
-
                 </listitem>
-
             </varlistentry>
-
-            <varlistentry>
-
-                <term>t</term>
-
-                <listitem>
-
-                    <para>実数または複素数のベクトル/行列</para>
-
-                </listitem>
-
-            </varlistentry>
-
         </variablelist>
-
     </refsection>
-
     <refsection>
-
         <title>説明</title>
-
         <para>
-
-            ベクトル<varname>t</varname>の要素は,
-
-            ベクトル<varname>x</varname>の対応する要素の双曲線逆正接となります.
-
-            実数関数の場合,定義域は,<literal>[-1,1]</literal>です(注記参照).
-
+            ベクトル<varname>t</varname>の要素は,ベクトル<varname>x</varname>の対応する要素の双曲線逆正接となります.
+            実数関数の場合,定義域は,<literal>[-1,1]</literal>です.
         </para>
-
     </refsection>
-
     <refsection>
-
-        <title>注記</title>
-
-        <para>Scilab では(他の数値計算ソフトウエアと同様に)
-
-            定義域の範囲外の基本数値関数の値を計算しようとした場合に,
-
-            複素数拡張(結果は複素数)が使用されます.
-
-            より有名な例は, sqrt 関数で行われるものです
-
-            (<code>sqrt(-1)</code>を試してみてください!).
-
-            このやり方は,特異点で関数を評価する際に,
-
-            おの点が実数または複素数とみなされると,
-
-            その結果が異なってしまうという欠点があります.
-
-            <function>atanh</function>の場合,
-
-            <literal>-1</literal> および <literal>1</literal>でこれが
-
-            発生します.
-
-            これは,これらの点においては虚部は収束せず,
-
-            このため, 実際には <literal>atanh(1) = +Inf</literal> となる
-
-            時(<code>atanh(x)</code>のlim <literal>x-&gt;1</literal>ように)に,
-
-            <literal>atanh(1) = +Inf + i NaN</literal> となります.
-
-            このため,この関数をベクトル<literal>[1 2]</literal>で
-
-            評価すると,  <literal>2</literal> が定義域の外側にあるので,
-
-            そのベクトル全体に複素数拡張が使用されます.
-
-            その結果は,例えば,<literal>[1 0.5]</literal>で
-
-            <literal>atanh(1) = +Inf</literal>となるにもかかわらず,
-
-            <literal>atanh(1) = +Inf + i NaN</literal>となります.
-
-        </para>
-
-    </refsection>
-
-    <refsection>
-
         <title>例</title>
-
+        <para>
+            With input real numbers:
+        </para>
         <programlisting role="example"><![CDATA[
-// 例 1
-x=[0,%i,-%i]
-tanh(atanh(x))
-
-// 例 2
-x = [-%inf -3 -2 -1 0 1 2 3 %inf]
-ieee(2)
-atanh(tanh(x))
-
-// 例 3 (注記参照)
-ieee(2)
-atanh([1 2])
-atanh([1 0.5])
+x = [-%inf -2 -1 -0.5 0 0.5 1 2 3 %inf];
+[x ; atanh(tanh(x))]
+atanh(x')
  ]]></programlisting>
-
+    <screen><![CDATA[
+--> [x ; atanh(tanh(x))]
+ ans  =
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+
+--> atanh(x')
+ ans  =
+   0.        + 1.5707963i
+  -0.5493061 + 1.5707963i
+  -Inf       + 0.i       
+  -0.5493061 + 0.i       
+   0.        + 0.i       
+   0.5493061 + 0.i       
+   Inf       + 0.i       
+   0.5493061 + 1.5707963i
+   0.3465736 + 1.5707963i
+   0.        + 1.5707963i
+]]></screen>
+        <para>
+            With input complex numbers:
+        </para>
+        <programlisting role="example"><![CDATA[
+x = [-1-%i, -%i, 0, %i, %i+1];
+[tanh(atanh(x)) ; atanh(tanh(x))]
+atanh(x.')
+ ]]></programlisting>
+    <screen><![CDATA[
+--> [x ; atanh(tanh(x))]
+ ans  =
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+
+--> atanh(x')
+ ans  =
+   0.        + 1.5707963i
+  -0.5493061 + 1.5707963i
+  -Inf       + 0.i       
+  -0.5493061 + 0.i       
+   0.        + 0.i       
+   0.5493061 + 0.i       
+   Inf       + 0.i       
+   0.5493061 + 1.5707963i
+   0.3465736 + 1.5707963i
+   0.        + 1.5707963i
+]]></screen>
     </refsection>
-
     <refsection role="see also">
-
         <title>参照</title>
-
         <simplelist type="inline">
-
             <member>
-
                 <link linkend="tanh">tanh</link>
-
-            </member>
-
-            <member>
-
-                <link linkend="ieee">ieee</link>
-
             </member>
-
         </simplelist>
-
     </refsection>
-
-</refentry>
-
+    <refsection role="history">
+        <title>履歴</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0</revnumber>
+                <revdescription>
+                    <itemizedlist>
+                        <listitem>
+                            <literal>atanh(-1)</literal> is now always <literal>-Inf</literal>, and
+                            <literal>atanh(1)</literal> always <literal>Inf</literal>.
+                        </listitem>
+                        <listitem>
+                            For any real x>1, imag(atanh(x)) is now > 0.
+                        </listitem>
+                    </itemizedlist>
+                </revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
+</refentry>
\ No newline at end of file
index e55ac40..33c3601 100644 (file)
@@ -2,8 +2,8 @@
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2008 - INRIA
- *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ * Copyright (C) 2019 - Samuel GOUGEON
  *
  * This file is hereby licensed under the terms of the GNU GPL v2.0,
  * pursuant to article 5.3.4 of the CeCILL v.2.1.
  * along with this program.
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="atanh" xml:lang="pt">
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns4="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
+          xmlns:scilab="http://www.scilab.org" xml:id="atanh" xml:lang="pt">
     <refnamediv>
         <refname>atanh</refname>
         <refpurpose>arco-tangente hiperbólico</refpurpose>
         <title>Parâmetros</title>
         <variablelist>
             <varlistentry>
-                <term>x</term>
-                <listitem>
-                    <para>matriz ou vetor de reais ou complexos </para>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term>t</term>
+                <term>x, t</term>
                 <listitem>
-                    <para>matriz ou vetor de reais ou complexos </para>
+                    <para>matrizes de números reais ou complexos, do mesmo tamanho.</para>
                 </listitem>
             </varlistentry>
         </variablelist>
         <title>Descrição</title>
         <para>
             Os compontente do vetor <literal>t</literal> são os arcos-tangentes
-            hiperbólicos das entradas correspondentes em <literal>x</literal>. O
-            domínio de definição é <literal>[-1,1]</literal> para a função real (ver
-            "Observação").
-        </para>
-    </refsection>
-    <refsection>
-        <title>Observação </title>
-        <para>No Scilab (como em alguns outros softwares numéricos), quando se
-            tenta avaliar uma função matemática elementar fora de seu domínio de
-            definição no caso real, uma extensão complexa é usada (com resultado
-            complexo). O exemplo mais famoso é a função sqrt (tente
-            <literal>sqrt(-1)</literal> !). !). Esta aproximação tem algumas
-            desvantagens quando você avalia a função em um ponto singular que pode
-            levar a diferentes resultados quando o ponto é considerado como real ou
-            complexo. Para a função <literal>atanh</literal> isto ocorre para
-            <literal>-1</literal> e <literal>1</literal> porque, nestes pontos, a
-            parte imaginária não converge e então <literal>atanh(1) = +Inf + i
-                NaN
-            </literal>
-            enquanto <literal>atanh(1) = +Inf</literal> para o caso real
-            (como lim x-&gt;1- de atanh(x)). Então, quando você avaliar esta função no
-            vetor <literal>[1 2]</literal> , como <literal>2</literal> está fora do
-            domínio de definição, a extensão complexa é usada para todo o vetor e o
-            resultado de <literal>atanh(1) = +Inf + i NaN</literal> enquanto o
-            resultado de <literal>atanh(1) = +Inf</literal> com <literal>[1
-                0.5]
-            </literal>
-            ,por exemplo.
+            hiperbólicos das entradas correspondentes em <literal>x</literal>.
+            O domínio de definição é <literal>[-1,1]</literal> para a função real.
         </para>
     </refsection>
     <refsection>
         <title>Exemplos</title>
+        <para>
+            With input real numbers:
+        </para>
         <programlisting role="example"><![CDATA[
-// exemplo 1
-x=[0,%i,-%i]
-tanh(atanh(x))
-
-// exemplo 2
-x = [-%inf -3 -2 -1 0 1 2 3 %inf]
-ieee(2)
-atanh(tanh(x))
+x = [-%inf -2 -1 -0.5 0 0.5 1 2 3 %inf];
+[x ; atanh(tanh(x))]
+atanh(x')
+ ]]></programlisting>
+    <screen><![CDATA[
+--> [x ; atanh(tanh(x))]
+ ans  =
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
 
-// exemplo 3 (ver "Observação")
-ieee(2)
-atanh([1 2])
-atanh([1 0.5])
+--> atanh(x')
+ ans  =
+   0.        + 1.5707963i
+  -0.5493061 + 1.5707963i
+  -Inf       + 0.i       
+  -0.5493061 + 0.i       
+   0.        + 0.i       
+   0.5493061 + 0.i       
+   Inf       + 0.i       
+   0.5493061 + 1.5707963i
+   0.3465736 + 1.5707963i
+   0.        + 1.5707963i
+]]></screen>
+        <para>
+            With input complex numbers:
+        </para>
+        <programlisting role="example"><![CDATA[
+x = [-1-%i, -%i, 0, %i, %i+1];
+[tanh(atanh(x)) ; atanh(tanh(x))]
+atanh(x.')
  ]]></programlisting>
+    <screen><![CDATA[
+--> [x; tanh(atanh(x)) ; atanh(tanh(x))]
+ ans  =
+
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+
+--> atanh(x.')
+ ans  =
+
+  -0.4023595 - 1.017222i
+   0.        - 0.7853982i
+   0.        + 0.i      
+   0.        + 0.7853982i
+   0.4023595 + 1.017222i
+]]></screen>
     </refsection>
     <refsection role="see also">
         <title>Ver Também</title>
@@ -97,9 +105,25 @@ atanh([1 0.5])
             <member>
                 <link linkend="tanh">tanh</link>
             </member>
-            <member>
-                <link linkend="ieee">ieee</link>
-            </member>
         </simplelist>
     </refsection>
+    <refsection role="history">
+        <title>Histórico</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0</revnumber>
+                <revdescription>
+                    <itemizedlist>
+                        <listitem>
+                            <literal>atanh(-1)</literal> is now always <literal>-Inf</literal>, and
+                            <literal>atanh(1)</literal> always <literal>Inf</literal>.
+                        </listitem>
+                        <listitem>
+                            For any real x>1, imag(atanh(x)) is now > 0.
+                        </listitem>
+                    </itemizedlist>
+                </revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index 90c500d..c563dac 100644 (file)
@@ -2,8 +2,8 @@
 <!--
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2008 - INRIA
- *
  * Copyright (C) 2012 - 2016 - Scilab Enterprises
+ * Copyright (C) 2019 - Samuel GOUGEON
  *
  * This file is hereby licensed under the terms of the GNU GPL v2.0,
  * pursuant to article 5.3.4 of the CeCILL v.2.1.
  * along with this program.
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="atanh" xml:lang="ru">
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml"
+          xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook"
+          xmlns:scilab="http://www.scilab.org" xml:id="atanh" xml:lang="ru">
     <refnamediv>
         <refname>atanh</refname>
         <refpurpose>гиперболический арктангенс</refpurpose>
         <title>Аргументы</title>
         <variablelist>
             <varlistentry>
-                <term>x</term>
-                <listitem>
-                    <para>вещественный или комплексный вектор/матрица.</para>
-                </listitem>
-            </varlistentry>
-            <varlistentry>
-                <term>t</term>
+                <term>x, t</term>
                 <listitem>
                     <para>вещественный или комплексный вектор/матрица.</para>
                 </listitem>
     <refsection>
         <title>Описание</title>
         <para>
-            Компоненты вектора  <varname>t</varname> являются гиперболическим арктангенсом соответствующих элементов вектора <varname>x</varname>. Область определения для вещественной функции <literal>[-1,1]</literal> (см. Примечание).
+            Компоненты вектора  <varname>t</varname> являются гиперболическим арктангенсом
+            соответствующих элементов вектора <varname>x</varname>.
+            Область определения для вещественной функции <literal>[-1,1]</literal>.
         </para>
     </refsection>
     <refsection>
-        <title>Примечание</title>
+        <title>Примеры</title>
         <para>
-            В Scilab (как и в некоторых других вычислительных программах), когда вы пытаетесь вычислить элементарную математическую функцию вне её области определения для вещественных значений, то используется комплексное расширение (с комплексным результатом). Самый знаменитый пример - это функция квадратного корня (попробуйте найти <code>sqrt(-1)</code>!).
-            Этот подход имеет недостатки, когда вы вычисляете функцию в неопределённой точке, что может привести к различным результатам, когда точка считается вещественной или комплексной.
-            Для <function>atanh</function> это происходит для <literal>-1</literal> и
-            <literal>1</literal>, поскольку в этих точках мнимая часть не сходится и поэтому
-            <literal>atanh(1) = +Inf + i NaN</literal>, в то время как
-            <literal>atanh(1) = +Inf</literal> для вещественных значений (в качестве предела <literal>x-&gt;1</literal> функции <code>atanh(x)</code>). Поэтому, когда вы вычисляете эту функцию для вектора <literal>[1 2]</literal>, то, поскольку <literal>2</literal> лежит вне области определения, используется комплексное расширение для всего вектора и вы получите
-            <literal>atanh(1) = +Inf + i NaN</literal>, хотя вы получаете <literal>atanh(1)
-                = +Inf
-            </literal>
-            и, например, <literal>[1 0.5]</literal>.
+            С вещественными числами на входе:
         </para>
-    </refsection>
-    <refsection>
-        <title>Примеры</title>
         <programlisting role="example"><![CDATA[
-// пример 1
-x=[0,%i,-%i]
-tanh(atanh(x))
-
-// пример 2
-x = [-%inf -3 -2 -1 0 1 2 3 %inf]
-ieee(2)
-atanh(tanh(x))
+x = [-%inf -2 -1 -0.5 0 0.5 1 2 3 %inf];
+[x ; atanh(tanh(x))]
+atanh(x')
+ ]]></programlisting>
+    <screen><![CDATA[
+--> [x ; atanh(tanh(x))]
+ ans  =
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
+  -Inf  -2.  -1.  -0.5   0.   0.5   1.   2.   3.   Inf
 
-// пример 3 (см. Примечание)
-ieee(2)
-atanh([1 2])
-atanh([1 0.5])
+--> atanh(x')
+ ans  =
+   0.        + 1.5707963i
+  -0.5493061 + 1.5707963i
+  -Inf       + 0.i       
+  -0.5493061 + 0.i       
+   0.        + 0.i       
+   0.5493061 + 0.i       
+   Inf       + 0.i       
+   0.5493061 + 1.5707963i
+   0.3465736 + 1.5707963i
+   0.        + 1.5707963i
+]]></screen>
+        <para>
+            С комплексными числами на входе:
+        </para>
+        <programlisting role="example"><![CDATA[
+x = [-1-%i, -%i, 0, %i, %i+1];
+[tanh(atanh(x)) ; atanh(tanh(x))]
+atanh(x.')
  ]]></programlisting>
+    <screen><![CDATA[
+--> [x; tanh(atanh(x)) ; atanh(tanh(x))]
+ ans  =
+
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+  -1. - i     0. - i     0. + 0.i   0. + i     1. + i  
+
+--> atanh(x.')
+ ans  =
+
+  -0.4023595 - 1.017222i
+   0.        - 0.7853982i
+   0.        + 0.i      
+   0.        + 0.7853982i
+   0.4023595 + 1.017222i
+]]></screen>
     </refsection>
     <refsection role="see also">
         <title>Смотрите также</title>
@@ -84,9 +105,25 @@ atanh([1 0.5])
             <member>
                 <link linkend="tanh">tanh</link>
             </member>
-            <member>
-                <link linkend="ieee">ieee</link>
-            </member>
         </simplelist>
     </refsection>
+    <refsection role="history">
+        <title>История</title>
+        <revhistory>
+            <revision>
+                <revnumber>6.0</revnumber>
+                <revdescription>
+                    <itemizedlist>
+                        <listitem>
+                            <literal>atanh(-1)</literal> теперь всегда <literal>-Inf</literal>, а
+                            <literal>atanh(1)</literal> всегда <literal>Inf</literal>.
+                        </listitem>
+                        <listitem>
+                            Теперь для любого вещественного x>1 imag(atanh(x)) > 0.
+                        </listitem>
+                    </itemizedlist>
+                </revdescription>
+            </revision>
+        </revhistory>
+    </refsection>
 </refentry>
index e783d12..e182b14 100644 (file)
  * along with this program.
  *
  -->
-<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="m2sci_atanh">
+<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
+          xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
+          xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
+          xml:id="m2sci_atanh">
     <refnamediv>
         <refname>atanh (Matlab function)</refname>
         <refpurpose>Inverse hyperbolic tangent</refpurpose>
             </tr>
             <tr>
                 <td>
-                    <programlisting role="example"><![CDATA[
+                    <programlisting role="no-scilab-exec"><![CDATA[
 atanh
 ]]></programlisting>
                 </td>
                 <td>
-                    <programlisting role="example"><![CDATA[
+                    <programlisting role="no-scilab-exec"><![CDATA[
 atanh
 ]]></programlisting>
                 </td>
@@ -45,33 +48,32 @@ atanh
     </refsection>
     <refsection>
         <title>Particular cases</title>
-        <para>In y=atanh(x), for real elements of x outside the domain [-1,1], the complex part of Scilab y value is the opposite of Matlab y value.</para>
-    </refsection>
-    <refsection>
-        <title>Examples</title>
+        <para>
+            In y=atanh(x), for real elements of x &lt; -1, the complex part of Scilab y value is the
+            opposite of Matlab y value.
+        </para>
+        <para>
+          Examples
         <informaltable border="1" width="100%">
             <tr>
-                <td align="center">
-                    <emphasis role="bold">Matlab</emphasis>
-                </td>
-                <td align="center">
-                    <emphasis role="bold">Scilab</emphasis>
-                </td>
+                <th>Matlab</th>
+                <th>Scilab</th>
             </tr>
             <tr>
                 <td>
-                    <programlisting role="example"><![CDATA[
-y = atanh(2)
-y = 0.5493 + 1.5708i
+                    <programlisting role="no-scilab-exec"><![CDATA[
+y = atanh(-2)
+y = -0.5493 - 1.5708i
 ]]></programlisting>
                 </td>
                 <td>
-                    <programlisting role="example"><![CDATA[
-y = atanh(2)
-y = 0.5493061 - 1.5707963i
+                    <programlisting role="no-scilab-exec"><![CDATA[
+y = atanh(-2)
+y = -0.5493061 + 1.5707963i
 ]]></programlisting>
                 </td>
             </tr>
         </informaltable>
+        </para>
     </refsection>
 </refentry>
index 1e564a1..9cfe1ef 100644 (file)
@@ -11,7 +11,7 @@ PROTO1 = sci_max.sci sci_min.sci
 PROTO2 = sci_cumprod.sci sci_cumsum.sci 
 PROTO3 = sci_eye.sci sci_false.sci sci_ones.sci sci_rand.sci sci_randn.sci sci_true.sci sci_zeros.sci 
 PROTO4 = sci_acosh.sci sci_asinh.sci sci_conj.sci sci_cot.sci sci_coth.sci sci_double.sci sci_exp.sci sci_expm.sci sci_inv.sci sci_log.sci sci_log10.sci sci_sign.sci sci_sin.sci sci_sinh.sci sci_sqrt.sci sci_tan.sci sci_tanh.sci
-PROTO5 = sci_asin.sci sci_atanh.sci sci_atan.sci
+PROTO5 = sci_asin.sci sci_atan.sci
 PROTO6 = sci_ceil.sci sci_fix.sci sci_floor.sci sci_round.sci
 PROTO7 = sci_tril.sci sci_triu.sci 
 PROTO8 = sci_prod.sci sci_sum.sci
index fff7062..4cedcd6 100644 (file)
@@ -11,7 +11,6 @@
 // along with this program.
 
 function [tree]=sci_atanh(tree)
-    // File generated from sci_PROTO5.g: PLEASE DO NOT EDIT !
     // M2SCI function
     // Conversion function for Matlab atanh()
     // Input: tree = Matlab funcall tree
@@ -21,11 +20,7 @@ function [tree]=sci_atanh(tree)
     A=convert2double(A)
     tree.rhs=Rhs_tlist(A)
 
-    if tree.name=="atan" then
-        set_infos(msprintf(gettext("If %s is outside [-1,1]\n   real part of output of %s will be the opposite of Matlab one."), strcat(expression2code(A), ""), strcat(expression2code(tree), "")),2)
-    else
-        set_infos(msprintf(gettext("If %s is outside [-1,1]\n   complex part of output of %s will be the opposite of Matlab one."), strcat(expression2code(A), ""), strcat(expression2code(tree), "")),2)
-    end
+    set_infos(msprintf(gettext("If %s < -1, complex part of output of %s will be the opposite of Matlab one."), strcat(expression2code(A), ""), strcat(expression2code(tree), "")),2)
 
     tree.lhs(1).dims=A.dims
     tree.lhs(1).type=Type(Double,Unknown)