* Bug 15643 fixed [doc]: The signed zero was not documented 86/20986/10
Samuel GOUGEON [Sat, 25 May 2019 18:47:19 +0000 (20:47 +0200)]
   http://bugzilla.scilab.org/15643
   PDF page: http://bugzilla.scilab.org/attachment.cgi?id=4961

Change-Id: Ibc4a7c7242a6c91b742446523bef636ad19e3bae

18 files changed:
scilab/CHANGES.md
scilab/modules/core/help/en_US/variables/predefined/percentinf.xml
scilab/modules/core/help/ja_JP/variables/predefined/percentinf.xml
scilab/modules/core/help/ru_RU/variables/predefined/percentinf.xml
scilab/modules/elementary_functions/help/en_US/elementarymatrices/zeros.xml
scilab/modules/elementary_functions/help/en_US/floating_point/number_properties.xml
scilab/modules/elementary_functions/help/en_US/floating_point/signed_zero.xml [new file with mode: 0644]
scilab/modules/elementary_functions/help/fr_FR/elementarymatrices/zeros.xml
scilab/modules/elementary_functions/help/ja_JP/elementarymatrices/zeros.xml
scilab/modules/elementary_functions/help/ja_JP/floating_point/number_properties.xml
scilab/modules/elementary_functions/help/pt_BR/elementarymatrices/zeros.xml
scilab/modules/elementary_functions/help/pt_BR/floating_point/number_properties.xml
scilab/modules/elementary_functions/help/ru_RU/elementarymatrices/zeros.xml
scilab/modules/elementary_functions/help/ru_RU/floating_point/number_properties.xml
scilab/modules/elementary_functions/help/ru_RU/floating_point/signed_zero.xml [new file with mode: 0644]
scilab/modules/sparse/help/en_US/sparseconvert/sparse.xml
scilab/modules/sparse/help/ja_JP/sparseconvert/sparse.xml
scilab/modules/sparse/help/pt_BR/sparseconvert/sparse.xml

index d7803f4..284b4c6 100644 (file)
@@ -340,6 +340,7 @@ Bug Fixes
 * [#15087](https://bugzilla.scilab.org/15087): Deleting rows or columns from a matrix is slow (regression)
 * [#15200](https://bugzilla.scilab.org/15200): `weekday` yielded an error for some row of input dates.
 * [#15248](https://bugzilla.scilab.org/15248): `lsq`was leaking memory.
+* [#15260](https://bugzilla.scilab.org/15260): `sci2exp` was no longer able to convert non-scalar structures.
 * [#15269](https://bugzilla.scilab.org/15269): `xgetech` was poor and stiff compared to any combination of `gca()` properties `.axes_bounds`, `.data_bounds`, `.log_flags`, and `.margins`. It is removed.
 * [#15271](https://bugzilla.scilab.org/15271): `bitget` needed to be upgraded.
 * [#15309](https://bugzilla.scilab.org/15309): `eval` was a weak duplicate of `evstr`. It should be removed.
@@ -351,31 +352,32 @@ Bug Fixes
 * [#15368](https://bugzilla.scilab.org/15368): `freson` silently returned frequencies not corresponding to a maximum, or returned [] instead of some still computable maxima frequencies.
 * [#15392](https://bugzilla.scilab.org/15392): `comet` and `comet3d` did not allow specifying colors with colors names.
 * [#15393](https://bugzilla.scilab.org/15393): In a new figure, `nicholschart` plotted nothing. The default frame color was a flashy cyan. The position of gain labels could be puzzling. It was not possible to specify colors by their names. Postprocessing the frames and the set of labels was not easy.
+* [#15421](https://bugzilla.scilab.org/15421): A new smarter default grid_style was required since smart lines styles #7-10 are available.
 * [#15425](https://bugzilla.scilab.org/15425): The Kronecker product `a .*. b` failed when `a` or `b` or both are hypermatrices, with one or both being polynomials or rationals.
 * [#15428](https://bugzilla.scilab.org/15428): `repmat` was slow. Its code did not use `kron` and was complex.
 * [#15431](https://bugzilla.scilab.org/15431): The empty matrix `[]` and its non-convertibility were poorly documented.
-* [#15421](https://bugzilla.scilab.org/15421): A new smarter default grid_style was required since smart lines styles #7-10 are available.
 * [#15451](https://bugzilla.scilab.org/15451): The code was not adapted to use `lucene 4.10` in Debian.
 * [#15514](https://bugzilla.scilab.org/15514): The `set` documentation page needed to be overhauled.
 * [#15517](https://bugzilla.scilab.org/15517): `factorial` could be actually used up to only n=170.
-* [#15260](https://bugzilla.scilab.org/15260): `sci2exp` was no longer able to convert non-scalar structures.
 * [#15522](https://bugzilla.scilab.org/15522): `unique` was not able to consider all Nan values as the same value. A `uniqueNan` option now allows it.
 * [#15523](https://bugzilla.scilab.org/15523): `%ODEOPTIONS(1)=2` didn't work with solvers 'rk' and 'rkf'
 * [#15534](https://bugzilla.scilab.org/15534): Booleans and encoded integers could not be concatenated together.
 * [#15577](https://bugzilla.scilab.org/15577): `edit` did not accept a line number as text, as with `edit linspace 21`.
 * [#15580](https://bugzilla.scilab.org/15580): `det(sparse([],[]))` yielded an error.
-* [#15737](https://bugzilla.scilab.org/15737): `setdiff` was wrong with complex numbers.
-* [#15981](https://bugzilla.scilab.org/15981): `wavread` kept the wav file open and locked when returning on errors. It weakly managed the input file name. It claimed for invalid data formats instead of unsupported ones, with poor information about the current format vs the supported ones. Several error messages refered to a wrong function.
-* [#15595](https://bugzilla.scilab.org/15595): `unique` was not able to return distinct values in their original order, without sorting them. A `keepOrder` option now allows it.
-* [#15668](https://bugzilla.scilab.org/15668): `save(filename)` saved all predefined Scilab constants %e %pi etc.. (regression)
-* [#15715](https://bugzilla.scilab.org/15715): `%nan` indices crashed Scilab.
-* [#15734](https://bugzilla.scilab.org/15734): `intersect` did not support complex numbers.
-* [#15742](https://bugzilla.scilab.org/15742): The `compatibility_functions` module should be merged in the `m2sci` one.
 * [#15581](https://bugzilla.scilab.org/15581): display of complex matrix was ugly.
+* [#15595](https://bugzilla.scilab.org/15595): `unique` was not able to return distinct values in their original order, without sorting them. A `keepOrder` option now allows it.
 * [#15628](https://bugzilla.scilab.org/15628): `with_tk` was a duplicate of `with_module('tclsci')`. It is removed.
+* [#15643](https://bugzilla.scilab.org/15643): Features with the signed zero -0 were not documented.
+* [#15668](https://bugzilla.scilab.org/15668): `save(filename)` saved all predefined Scilab constants %e %pi etc.. (regression)
 * [#15680](https://bugzilla.scilab.org/15680): `loadmatfile` could not return variables in a structure instead of into the calling environment.
 * [#15701](https://bugzilla.scilab.org/15701): `A\B` was not faster when `A` is square and triangular.
+* [#15715](https://bugzilla.scilab.org/15715): `%nan` indices crashed Scilab.
+* [#15734](https://bugzilla.scilab.org/15734): `intersect` did not support complex numbers.
+
 * [#15734](https://bugzilla.scilab.org/15734):  Trivial infinite loop could not be interrupted.
+
+* [#15737](https://bugzilla.scilab.org/15737): `setdiff` was wrong with complex numbers.
+* [#15742](https://bugzilla.scilab.org/15742): The `compatibility_functions` module should be merged in the `m2sci` one.
 * [#15744](https://bugzilla.scilab.org/15744): `sylm(a,b)` yielded an error when degree(a)==0 or degree(b)==0.
 * [#15745](https://bugzilla.scilab.org/15745): `diophant(0,0,m)`, `diophant([p 0],q)`, `diophant([0 p],q)` with m<>0 and p>q were wrong. There was no flag for cases with an infinite number of solutions. When there is no solution, some values were returned anyway, instead of []. In this case, the documented definition of the err value was dubious. Decimal numbers and integers were accepted, but not encoded integers. Inf and NaN input coefficients were not rejected.
 * [#15812](https://bugzilla.scilab.org/15812): On assigning variables the source variable may become become corrupted
@@ -393,6 +395,7 @@ Bug Fixes
 * [#15974](https://bugzilla.scilab.org/15974): `msprintf("%d", %nan)` did not return Nan
 * [#15977](https://bugzilla.scilab.org/15977): The documentation for `wavread(..,'info')` had a mistake. The `wavread` page deserved some improvements.
 * [#15978](https://bugzilla.scilab.org/15978): The `writewav` page in english said that input data are one column per channel, instead of one row per channel. In addition, in case of writing error, `savewave` kept the output file open and locked.
+* [#15981](https://bugzilla.scilab.org/15981): `wavread` kept the wav file open and locked when returning on errors. It weakly managed the input file name. It claimed for invalid data formats instead of unsupported ones, with poor information about the current format vs the supported ones. Several error messages refered to a wrong function.
 * [#15983](https://bugzilla.scilab.org/15983): `group` regressed in 5.5.2 due to a too intrusive fix.
 * [#15984](https://bugzilla.scilab.org/15984): display scale was wrong with Retina dispplays on OSX..
 * [#15995](https://bugzilla.scilab.org/15995): patch was missing in surface plot (regression)
@@ -409,13 +412,13 @@ Bug Fixes
 * [#16015](https://bugzilla.scilab.org/16015): `intg(a,b,f)` called f(x) with x outside [a,b].
 * [#16019](https://bugzilla.scilab.org/16019): `polarplot(x,Z)` yielded an error when x is a vector and Z a matrix.
 * [#16021](https://bugzilla.scilab.org/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].
-* [#16064](https://bugzilla.scilab.org/16064): `tbx_make(Dir,'localization')` did not update `.mo` files from `.po`.
 * [#16026](https://bugzilla.scilab.org/16026): For `atanh`, neither the documentation pages nor the `m2sci` converter were up to date.
 * [#16028](https://bugzilla.scilab.org/16028): The length of `intdec(intdec(x, r), 1/r)` was most often different from length(x).
 * [#16046](https://bugzilla.scilab.org/16046): After `w=ssrand(2,3,4)`, `[]+w`, `[]-w`, `w+[]` and `w-[]` yielded an "operation +/- []" warning.
 * [#16051](https://bugzilla.scilab.org/16051): undefined list elements could be of 2 distinct typeof "void" or "listundefined" according to the way they are created.
 * [#16053](https://bugzilla.scilab.org/16053): `plot(,"color",c)` no longer supported standard abbreviated color names c like "k" for black.
 * [#16062](https://bugzilla.scilab.org/16062): `tbx_make` did not allow easily to force building all toolbox sections without the toolbox builder (if any). `tbx_make(Dir,"*")` now does it.
+* [#16064](https://bugzilla.scilab.org/16064): `tbx_make(Dir,'localization')` did not update `.mo` files from `.po`.
 * [#16065](https://bugzilla.scilab.org/16065): Building help pages including some <scilab:image> tags used and finally deleted the current on-screen figures (if any)!
 * [#16067](https://bugzilla.scilab.org/16067): The display of matrices of signed integers was misaligned (regression of 6.0.0 vs 5.5.2)
 * [#16071](https://bugzilla.scilab.org/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.
index ef4fcac..d994668 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: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="percentinf" xml:lang="en">
+<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="percentinf" xml:lang="en">
     <refnamediv>
         <refname>%inf</refname>
         <refpurpose>infinity</refpurpose>
@@ -42,6 +45,9 @@
             <member>
                 <link linkend="isinf">isinf</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index 8256722..1306f5b 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: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="percentinf" 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="percentinf" xml:lang="ja">
     <refnamediv>
         <refname>%inf</refname>
         <refpurpose>無限大</refpurpose>
@@ -42,6 +45,9 @@
             <member>
                 <link linkend="isinf">isinf</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index 858062b..4a77cd1 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: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="percentinf" 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="percentinf" xml:lang="ru">
     <refnamediv>
         <refname>%inf</refname>
         <refpurpose>бесконечность</refpurpose>
@@ -43,6 +46,9 @@
             <member>
                 <link linkend="isinf">isinf</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index 0b812fc..0f11fb1 100644 (file)
@@ -146,6 +146,9 @@ repmat(1, [2 4 2])
             <member>
                 <link linkend="repmat">repmat</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index fb11a96..11ec7ae 100644 (file)
@@ -163,6 +163,9 @@ eps = number_properties("eps")
             <member>
                 <link linkend="log2">log2</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
diff --git a/scilab/modules/elementary_functions/help/en_US/floating_point/signed_zero.xml b/scilab/modules/elementary_functions/help/en_US/floating_point/signed_zero.xml
new file mode 100644 (file)
index 0000000..2bf15e9
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * 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.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * 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:lang="en" xml:id="signed_zero">
+    <refnamediv>
+        <refname>signed zero -0</refname>
+        <refpurpose>Processing of -0 versus 0</refpurpose>
+    </refnamediv>
+    <refsection>
+        <title>Description</title>
+        <para>
+            The binary representation of decimal numbers is such that one bit over 64 (= 8 bytes) is
+            dedicated to the sign of the mantissa. This is true for any decimal number, that
+            can be symetrically positive or negative. This also applies to the zero value.
+        </para>
+        <para>
+            It is possible to force to minus the sign of zero by using the unary minus
+            and writting <literal>-0</literal>.
+        </para>
+        <para>
+            Most of operations and functions do not take the sign of zero into account, but there
+            are some exceptions. For instance, the division and atan() do not yield the same
+            results with 0 and -0.
+        </para>
+        <para>
+            Common interesting cases are illustrated in the following examples.
+        </para>
+        <note>
+            As 0, -0 is not stored in sparse-encoded matrices, and so is ignored.
+        </note>
+    </refsection>
+    <refsection>
+        <title>Examples</title>
+        <para>
+            0 and -0 are distinguished:
+        </para>
+        <programlisting role="example"><![CDATA[
+bitstring([0 ; -0])
+[1/0 1/-0]
+a = - 0 - 0;    1 / a
+a = - 0 + (-0); 1 / a
+1 / (0*(-0))
+1 / prod([-0 1])
+1 ./ ((-0)^[1 2 3])
+[atan(0,0), atan(0,-0)]
+     ]]></programlisting>
+        <screen><![CDATA[
+--> bitstring([0 ; -0])
+ ans  =
+!0000000000000000000000000000000000000000000000000000000000000000  !
+!1000000000000000000000000000000000000000000000000000000000000000  !
+
+--> [1/0 1/-0]
+ ans  =
+   Inf  -Inf
+
+--> a = - 0 - 0; 1 / a
+ ans  =
+  -Inf
+
+--> a = - 0 + (-0); 1 / a
+ ans  =
+  -Inf
+
+--> 1 / (0*(-0))
+ ans  =
+  -Inf
+
+--> 1 / prod([-0 1])
+ ans  =
+  -Inf
+
+--> 1 ./ ((-0)^[1 2 3])
+ ans  =
+  -Inf   Inf  -Inf
+
+--> [atan(0,0), atan(0,-0)]
+ ans  =
+   0.   3.1415927
+]]></screen>
+        <para/>
+        <para>
+        .. but + 0 wins:
+        </para>
+        <programlisting role="example"><![CDATA[
+a = - 0 + 0; 1 / a
+     ]]></programlisting>
+        <screen><![CDATA[
+--> a = - 0 + 0; 1 / a
+ ans  =
+   Inf
+]]></screen>
+        <para/>
+        <para>
+        0 and -0 are NOT distinguished:
+        </para>
+        <programlisting role="example"><![CDATA[
+[sign(-0), 1/sign(-0)]
+sign(0)==sign(-0)
+[ isequal(0,-0), 0==-0,  -0<0,  0>-0 ]
+1 / sin(-0)
+     ]]></programlisting>
+        <screen><![CDATA[
+--> [sign(-0), 1/sign(-0)]
+ ans  =
+   0.   Inf
+
+--> sign(0)==sign(-0)
+ ans  =
+  T
+
+--> [ isequal(0,-0), 0==-0,  -0<0,  0>-0 ]
+ ans  =
+  T T F F
+
+--> 1 / sin(-0)
+ ans  =
+   Inf
+]]></screen>
+        <para/>
+        <para>
+            The sparse encoding ignores -0 as it does for 0:
+        </para>
+        <programlisting role="example"><![CDATA[
+sparse([-0 0 1])
+1 / sparse(-0)
+     ]]></programlisting>
+        <screen><![CDATA[
+--> sparse([-0 0 1])
+ ans  =
+(  1,  3) sparse matrix
+(  1,  3)     1.
+
+--> 1 / sparse(-0)
+ ans  =
+    Inf
+]]></screen>
+    </refsection>
+    <refsection role="see also">
+        <title>See also</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="percentinf">%inf</link>
+            </member>
+            <member>
+                <link linkend="zeros">zeros</link>
+            </member>
+            <member>
+                <link linkend="sparse">sparse</link>
+            </member>
+            <member>
+                <link linkend="number_properties">number_properties</link>
+            </member>
+            <member>
+                <ulink url="https://en.wikipedia.org/wiki/Signed_zero">Signed zero on Wikipedia</ulink>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
index b5f4069..c7f0523 100644 (file)
@@ -136,6 +136,9 @@ repmat(1, [2 4 2])
             <member>
                 <link linkend="repmat">repmat</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index d028ddd..bc6f750 100644 (file)
@@ -221,6 +221,9 @@ repmat(0, [2 4 2])
                 <link linkend="spzeros">spzeros</link>
 
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
 
         </simplelist>
 
index f332a13..b9e57cc 100644 (file)
@@ -174,6 +174,9 @@ eps = number_properties("eps")
             <member>
                 <link linkend="log2">log2</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
\ No newline at end of file
index 6fe54cd..216c891 100644 (file)
@@ -125,6 +125,9 @@ repmat(0, [2 4 2])
             <member>
                 <link linkend="spzeros">spzeros</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index 0dc26b7..464eadd 100644 (file)
@@ -169,6 +169,9 @@ eps = number_properties("eps")
             <member>
                 <link linkend="log2">log2</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index 404601c..aa97d1c 100644 (file)
@@ -123,6 +123,9 @@ repmat(0, [2 4 2])
             <member>
                 <link linkend="spzeros">spzeros</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
index f8f253b..b2acd87 100644 (file)
@@ -172,6 +172,9 @@ eps = number_properties("eps")
             <member>
                 <link linkend="log2">log2</link>
             </member>
+            <member>
+                <link linkend="signed_zero">-0</link>
+            </member>
         </simplelist>
     </refsection>
 </refentry>
diff --git a/scilab/modules/elementary_functions/help/ru_RU/floating_point/signed_zero.xml b/scilab/modules/elementary_functions/help/ru_RU/floating_point/signed_zero.xml
new file mode 100644 (file)
index 0000000..0434af5
--- /dev/null
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * 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.
+ * This file was originally licensed under the terms of the CeCILL v2.1,
+ * and continues to be available under such terms.
+ * For more information, see the COPYING file which you should have received
+ * 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:lang="ru" xml:id="signed_zero">
+    <refnamediv>
+        <refname>ноль со знаком -0</refname>
+        <refpurpose>Обработка -0 по сравнению с 0</refpurpose>
+    </refnamediv>
+    <refsection>
+        <title>Описание</title>
+        <para>
+            Двоичное представление десятичных чисел таково, что один бить из 64 (= 8 байт) 
+            предназначен для знака мантиссы. Это верно для любого десятичного числа, которое 
+            может быть симметрично положительно или отрицательно. Это также применимо к нулевому 
+            значению.
+        </para>
+        <para>
+            Можно принудительно поставить знак минуса к нулю используя унарный минус и написав 
+            <literal>-0</literal>.
+        </para>
+        <para>
+            Большинство операций и функций не учитывает знак нуля, но есть некоторые исключения. 
+            Например, деление и <literal>atan()</literal> дают неодинаковые результаты для 
+            <literal>0</literal> и <literal>-0</literal>.
+        </para>
+        <para>
+            В следующих примерах показаны интересные случаи.
+        </para>
+        <note>
+            Как и <literal>0</literal>, <literal>-0</literal> не хранится в разрежённых матрицах, 
+            и, таким образом, игнорируется.
+        </note>
+    </refsection>
+    <refsection>
+        <title>Примеры</title>
+        <para>
+            <literal>0</literal> и <literal>-0</literal> различаются:
+        </para>
+        <programlisting role="example"><![CDATA[
+bitstring([0 ; -0])
+[1/0 1/-0]
+a = - 0 - 0;    1 / a
+a = - 0 + (-0); 1 / a
+1 / (0*(-0))
+1 / prod([-0 1])
+1 ./ ((-0)^[1 2 3])
+[atan(0,0), atan(0,-0)]
+     ]]></programlisting>
+        <screen><![CDATA[
+--> bitstring([0 ; -0])
+ ans  =
+!0000000000000000000000000000000000000000000000000000000000000000  !
+!1000000000000000000000000000000000000000000000000000000000000000  !
+
+--> [1/0 1/-0]
+ ans  =
+   Inf  -Inf
+
+--> a = - 0 - 0; 1 / a
+ ans  =
+  -Inf
+
+--> a = - 0 + (-0); 1 / a
+ ans  =
+  -Inf
+
+--> 1 / (0*(-0))
+ ans  =
+  -Inf
+
+--> 1 / prod([-0 1])
+ ans  =
+  -Inf
+
+--> 1 ./ ((-0)^[1 2 3])
+ ans  =
+  -Inf   Inf  -Inf
+
+--> [atan(0,0), atan(0,-0)]
+ ans  =
+   0.   3.1415927
+]]></screen>
+        <para/>
+        <para>
+        .. но побеждает + 0:
+        </para>
+        <programlisting role="example"><![CDATA[
+a = - 0 + 0; 1 / a
+     ]]></programlisting>
+        <screen><![CDATA[
+--> a = - 0 + 0; 1 / a
+ ans  =
+   Inf
+]]></screen>
+        <para/>
+        <para>
+        <literal>0</literal> и <literal>-0</literal> НЕ различаются:
+        </para>
+        <programlisting role="example"><![CDATA[
+[sign(-0), 1/sign(-0)]
+sign(0)==sign(-0)
+[ isequal(0,-0), 0==-0,  -0<0,  0>-0 ]
+1 / sin(-0)
+     ]]></programlisting>
+        <screen><![CDATA[
+--> [sign(-0), 1/sign(-0)]
+ ans  =
+   0.   Inf
+
+--> sign(0)==sign(-0)
+ ans  =
+  T
+
+--> [ isequal(0,-0), 0==-0,  -0<0,  0>-0 ]
+ ans  =
+  T T F F
+
+--> 1 / sin(-0)
+ ans  =
+   Inf
+]]></screen>
+        <para/>
+        <para>
+            Кодирование разрежённых матриц игнорирует <literal>-0</literal>, как
+            это делается и для <literal>0</literal>:
+        </para>
+        <programlisting role="example"><![CDATA[
+sparse([-0 0 1])
+1 / sparse(-0)
+     ]]></programlisting>
+        <screen><![CDATA[
+--> sparse([-0 0 1])
+ ans  =
+(  1,  3) sparse matrix
+(  1,  3)     1.
+
+--> 1 / sparse(-0)
+ ans  =
+    Inf
+]]></screen>
+    </refsection>
+    <refsection role="see also">
+        <title>Смотрите также</title>
+        <simplelist type="inline">
+            <member>
+                <link linkend="percentinf">%inf</link>
+            </member>
+            <member>
+                <link linkend="zeros">zeros</link>
+            </member>
+            <member>
+                <link linkend="sparse">sparse</link>
+            </member>
+            <member>
+                <link linkend="number_properties">number_properties</link>
+            </member>
+            <member>
+                <ulink url="https://ru.wikipedia.org/wiki/%E2%88%920_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)">Отрицательный ноль в Википедии</ulink>
+            </member>
+        </simplelist>
+    </refsection>
+</refentry>
index 59f944d..f537505 100644 (file)
@@ -175,6 +175,9 @@ sp = sparse(dense)
             <member>
                 <link linkend="toeplitz">toeplitz</link>
             </member>
+            <member>
+                <link linkend="signed_zero">sparse(-0)</link>
+            </member>
         </simplelist>
     </refsection>
     <refsection role="history">
index c9ea86b..28437a7 100644 (file)
@@ -182,6 +182,9 @@ sp=sparse(dense)
             <member>
                 <link linkend="toeplitz">toeplitz</link>
             </member>
+            <member>
+                <link linkend="signed_zero">sparse(-0)</link>
+            </member>
         </simplelist>
     </refsection>
     <refsection role="history">
index b580f1e..0e225a0 100644 (file)
@@ -164,6 +164,9 @@ sp = sparse(dense)
             <member>
                 <link linkend="toeplitz">toeplitz</link>
             </member>
+            <member>
+                <link linkend="signed_zero">sparse(-0)</link>
+            </member>
         </simplelist>
     </refsection>
     <refsection role="history">