Skip to content

Commit d9264f1

Browse files
Translate gmp functions (#146)
* Update gmp_gcdext * Update gmp_hamdist * Update gmp_intval * Update gmp_invert * Update gmp_jacobi * Update gmp_legendre * Update gmp_mod * Update gmp_mul * Update gmp_neg * Update gmp_or * Update gmp_perfect_square * Update gmp_popcount * Update gmp_pow * Update gmp_powm * Update gmp_prob_prime * Update gmp_random * Update gmp_scan0 * Update gmp_scan1 * Update gmp_setbit * Update gmp_sign * Update gmp_sqrt * Update gmp_sqrtrem * Update gmp_strval * Update gmp_sub * Update gmp_xor
1 parent 87512ff commit d9264f1

25 files changed

+2114
-638
lines changed
Lines changed: 92 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,95 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<!-- splitted from ./it/functions/gmp.xml, last change in rev 1.1 -->
3-
<!-- last change to 'gmp-gcdext' in en/ tree in rev 1.1 -->
4-
<!-- EN-Revision: n/a Maintainer: calandra Status: ready -->
5-
<!-- OLD-Revision: 1.25/EN.1.1 -->
6-
<refentry xml:id="function.gmp-gcdext" xmlns="http://docbook.org/ns/docbook">
7-
<refnamediv>
8-
<refname>gmp_gcdext</refname>
9-
<refpurpose>Calcola il MCD e moltiplicatori</refpurpose>
10-
</refnamediv>
11-
<refsect1>
12-
<title>Descrizione</title>
13-
<methodsynopsis>
14-
<type>array</type><methodname>gmp_gcdext</methodname>
15-
<methodparam><type>resource</type><parameter>a</parameter></methodparam>
16-
<methodparam><type>resource</type><parameter>b</parameter></methodparam>
17-
</methodsynopsis>
18-
<para>
19-
Calcola g, s e t, in questo modo <literal>a*s + b*t = g =
20-
gcd(a,b)</literal>, dove MCD è il massimo comune divisore.
21-
Restituisce un array con i rispettivi argomenti, cioè, g, s e t.
22-
</para>
23-
</refsect1>
24-
</refentry>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- EN-Revision: 039ab719e695141ee54409d26ad828337ec31d6e Maintainer: pastore Status: ready -->
3+
<!-- CREDITS: calandra -->
4+
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.gmp-gcdext">
5+
<refnamediv>
6+
<refname>gmp_gcdext</refname>
7+
<refpurpose>Calcola il MCD e i moltiplicatori</refpurpose>
8+
</refnamediv>
9+
10+
<refsect1 role="description">
11+
&reftitle.description;
12+
<methodsynopsis>
13+
<type>array</type><methodname>gmp_gcdext</methodname>
14+
<methodparam><type class="union"><type>GMP</type><type>int</type><type>string</type></type><parameter>num1</parameter></methodparam>
15+
<methodparam><type class="union"><type>GMP</type><type>int</type><type>string</type></type><parameter>num2</parameter></methodparam>
16+
</methodsynopsis>
17+
<para>
18+
Calcola g, s e t, tali che <literal>a*s + b*t = g =
19+
gcd(a,b)</literal>, dove gcd è il massimo comune divisore. Restituisce
20+
un array con i rispettivi elementi g, s e t.
21+
</para>
22+
<para>
23+
Questa funzione può essere utilizzata per risolvere equazioni diofantee lineari a due
24+
variabili. Si tratta di equazioni che ammettono solo soluzioni intere e hanno la forma:
25+
<literal>a*x + b*y = c</literal>.
26+
Per maggiori informazioni, visita la <link xlink:href="&url.diophantine-equation;">pagina "Equazione diofantea"
27+
su MathWorld</link>
28+
</para>
29+
</refsect1>
2530

31+
<refsect1 role="parameters">
32+
&reftitle.parameters;
33+
<para>
34+
<variablelist>
35+
<varlistentry>
36+
<term><parameter>num1</parameter></term>
37+
<listitem>
38+
&gmp.parameter;
39+
</listitem>
40+
</varlistentry>
41+
<varlistentry>
42+
<term><parameter>num2</parameter></term>
43+
<listitem>
44+
&gmp.parameter;
45+
</listitem>
46+
</varlistentry>
47+
</variablelist>
48+
</para>
49+
</refsect1>
50+
51+
<refsect1 role="returnvalues">
52+
&reftitle.returnvalues;
53+
<para>
54+
Un <type>array</type> di numeri GMP.
55+
</para>
56+
</refsect1>
57+
58+
<refsect1 role="examples">
59+
&reftitle.examples;
60+
<para>
61+
<example>
62+
<title>Risoluzione di un'equazione diofantea lineare</title>
63+
<programlisting role="php">
64+
<![CDATA[
65+
<?php
66+
// Risolve l'equazione a*s + b*t = g
67+
// dove a = 12, b = 21, g = gcd(12, 21) = 3
68+
$a = gmp_init(12);
69+
$b = gmp_init(21);
70+
$g = gmp_gcd($a, $b);
71+
$r = gmp_gcdext($a, $b);
72+
73+
$check_gcd = (gmp_strval($g) == gmp_strval($r['g']));
74+
$eq_res = gmp_add(gmp_mul($a, $r['s']), gmp_mul($b, $r['t']));
75+
$check_res = (gmp_strval($g) == gmp_strval($eq_res));
76+
77+
if ($check_gcd && $check_res) {
78+
$fmt = "Soluzione: %d*%d + %d*%d = %d\n";
79+
printf($fmt, gmp_strval($a), gmp_strval($r['s']), gmp_strval($b),
80+
gmp_strval($r['t']), gmp_strval($r['g']));
81+
} else {
82+
echo "Errore durante la risoluzione dell'equazione\n";
83+
}
84+
85+
// output: Soluzione: 12*2 + 21*-1 = 3
86+
?>
87+
]]>
88+
</programlisting>
89+
</example>
90+
</para>
91+
</refsect1>
92+
</refentry>
2693
<!-- Keep this comment at the end of the file
2794
Local variables:
2895
mode: sgml
@@ -42,4 +109,4 @@ End:
42109
vim600: syn=xml fen fdm=syntax fdl=2 si
43110
vim: et tw=78 syn=sgml
44111
vi: ts=1 sw=1
45-
-->
112+
-->
Lines changed: 94 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,97 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<!-- splitted from ./it/functions/gmp.xml, last change in rev 1.1 -->
3-
<!-- last change to 'gmp-hamdist' in en/ tree in rev 1.1 -->
4-
<!-- EN-Revision: n/a Maintainer: calandra Status: ready -->
5-
<!-- OLD-Revision: 1.25/EN.1.1 -->
6-
<refentry xml:id="function.gmp-hamdist" xmlns="http://docbook.org/ns/docbook">
7-
<refnamediv>
8-
<refname>gmp_hamdist</refname>
9-
<refpurpose>Distanza dell'hamming</refpurpose>
10-
</refnamediv>
11-
<refsect1>
12-
<title>Descrizione</title>
13-
<methodsynopsis>
14-
<type>int</type><methodname>gmp_hamdist</methodname>
15-
<methodparam><type>resource</type><parameter>a</parameter></methodparam>
16-
<methodparam><type>resource</type><parameter>b</parameter></methodparam>
17-
</methodsynopsis>
18-
<para>
19-
Restituisce la distanza di hamming tra <parameter>a</parameter> e
20-
<parameter>b</parameter>. Entrambe gli operandi dovrebbero essere non-negativi.
21-
</para>
22-
</refsect1>
23-
</refentry>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- EN-Revision: 039ab719e695141ee54409d26ad828337ec31d6e Maintainer: pastore Status: ready -->
3+
<!-- CREDITS: calandra -->
4+
<refentry xml:id="function.gmp-hamdist" xmlns="http://docbook.org/ns/docbook">
5+
<refnamediv>
6+
<refname>gmp_hamdist</refname>
7+
<refpurpose>Distanza di Hamming</refpurpose>
8+
</refnamediv>
9+
10+
<refsect1 role="description">
11+
&reftitle.description;
12+
<methodsynopsis>
13+
<type>int</type><methodname>gmp_hamdist</methodname>
14+
<methodparam><type class="union"><type>GMP</type><type>int</type><type>string</type></type><parameter>num1</parameter></methodparam>
15+
<methodparam><type class="union"><type>GMP</type><type>int</type><type>string</type></type><parameter>num2</parameter></methodparam>
16+
</methodsynopsis>
17+
<para>
18+
Restituisce la distanza di Hamming tra <parameter>num1</parameter> e
19+
<parameter>num2</parameter>. Entrambi gli operandi devono essere non negativi.
20+
</para>
21+
</refsect1>
2422

23+
<refsect1 role="parameters">
24+
&reftitle.parameters;
25+
<para>
26+
<variablelist>
27+
<varlistentry>
28+
<term><parameter>num1</parameter></term>
29+
<listitem>
30+
&gmp.parameter;
31+
<para>
32+
Deve essere positivo.
33+
</para>
34+
</listitem>
35+
</varlistentry>
36+
<varlistentry>
37+
<term><parameter>num2</parameter></term>
38+
<listitem>
39+
&gmp.parameter;
40+
<para>
41+
Deve essere positivo.
42+
</para>
43+
</listitem>
44+
</varlistentry>
45+
</variablelist>
46+
</para>
47+
</refsect1>
48+
49+
<refsect1 role="returnvalues">
50+
&reftitle.returnvalues;
51+
<para>
52+
La distanza di Hamming tra <parameter>num1</parameter> e <parameter>num2</parameter>, come <type>int</type>.
53+
</para>
54+
</refsect1>
55+
56+
<refsect1 role="examples">
57+
&reftitle.examples;
58+
<para>
59+
<example>
60+
<title>Esempio di <function>gmp_hamdist</function></title>
61+
<programlisting role="php">
62+
<![CDATA[
63+
<?php
64+
$ham1 = gmp_init("1001010011", 2);
65+
$ham2 = gmp_init("1011111100", 2);
66+
echo gmp_hamdist($ham1, $ham2) . "\n";
67+
68+
/* hamdist è equivalente a: */
69+
echo gmp_popcount(gmp_xor($ham1, $ham2)) . "\n";
70+
?>
71+
]]>
72+
</programlisting>
73+
&example.outputs;
74+
<screen>
75+
<![CDATA[
76+
6
77+
6
78+
]]>
79+
</screen>
80+
</example>
81+
</para>
82+
</refsect1>
83+
84+
<refsect1 role="seealso">
85+
&reftitle.seealso;
86+
<para>
87+
<simplelist>
88+
<member><function>gmp_popcount</function></member>
89+
<member><function>gmp_xor</function></member>
90+
</simplelist>
91+
</para>
92+
</refsect1>
93+
94+
</refentry>
2595
<!-- Keep this comment at the end of the file
2696
Local variables:
2797
mode: sgml
@@ -41,4 +111,4 @@ End:
41111
vim600: syn=xml fen fdm=syntax fdl=2 si
42112
vim: et tw=78 syn=sgml
43113
vi: ts=1 sw=1
44-
-->
114+
-->
Lines changed: 84 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,87 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<!-- splitted from ./it/functions/gmp.xml, last change in rev 1.1 -->
3-
<!-- last change to 'gmp-intval' in en/ tree in rev 1.1 -->
4-
<!-- EN-Revision: n/a Maintainer: calandra Status: ready -->
5-
<!-- OLD-Revision: 1.25/EN.1.1 -->
6-
<refentry xml:id="function.gmp-intval" xmlns="http://docbook.org/ns/docbook">
7-
<refnamediv>
8-
<refname>gmp_intval</refname>
9-
<refpurpose>Converte un numero GMP in un intero</refpurpose>
10-
</refnamediv>
11-
<refsect1>
12-
<title>Descrizione</title>
13-
<methodsynopsis>
14-
<type>int</type><methodname>gmp_intval</methodname>
15-
<methodparam><type>resource</type><parameter>gmpnumber</parameter></methodparam>
16-
</methodsynopsis>
17-
<para>
18-
Questa funzione converte un numero GMP in un intero.
19-
<warning>
20-
<simpara>
21-
Questa funzione restituisce un risultato utile, solo se il numero attualmente
22-
fornito al PHP è un intero (per esempio, un tipo signed long).
23-
Se desideri solo stampare il numero GMP, usa <function>gmp_strval</function>.
24-
</simpara>
25-
</warning>
26-
</para>
27-
</refsect1>
28-
</refentry>
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<!-- EN-Revision: 039ab719e695141ee54409d26ad828337ec31d6e Maintainer: pastore Status: ready -->
3+
<!-- CREDITS: calandra -->
4+
<refentry xml:id="function.gmp-intval" xmlns="http://docbook.org/ns/docbook">
5+
<refnamediv>
6+
<refname>gmp_intval</refname>
7+
<refpurpose>Converte un numero GMP in intero</refpurpose>
8+
</refnamediv>
9+
10+
<refsect1 role="description">
11+
&reftitle.description;
12+
<methodsynopsis>
13+
<type>int</type><methodname>gmp_intval</methodname>
14+
<methodparam><type class="union"><type>GMP</type><type>int</type><type>string</type></type><parameter>num</parameter></methodparam>
15+
</methodsynopsis>
16+
<para>
17+
Questa funzione converte un numero GMP in <type>int</type> nativi di PHP.
18+
</para>
19+
</refsect1>
2920

21+
<refsect1 role="parameters">
22+
&reftitle.parameters;
23+
<para>
24+
<variablelist>
25+
<varlistentry>
26+
<term><parameter>num</parameter></term>
27+
<listitem>
28+
&gmp.parameter;
29+
</listitem>
30+
</varlistentry>
31+
</variablelist>
32+
</para>
33+
</refsect1>
34+
35+
<refsect1 role="returnvalues">
36+
&reftitle.returnvalues;
37+
<para>
38+
Il valore <type>int</type> di <parameter>num</parameter>.
39+
</para>
40+
</refsect1>
41+
42+
<refsect1 role="examples">
43+
&reftitle.examples;
44+
<para>
45+
<example>
46+
<title>Esempio di <function>gmp_intval</function></title>
47+
<programlisting role="php">
48+
<![CDATA[
49+
<?php
50+
// visualizza il risultato corretto
51+
echo gmp_intval("2147483647") . "\n";
52+
53+
// visualizza un risultato errato, oltre il limite degli interi di PHP
54+
echo gmp_intval("2147483648") . "\n";
55+
56+
// visualizza il risultato corretto
57+
echo gmp_strval("2147483648") . "\n";
58+
?>
59+
]]>
60+
</programlisting>
61+
&example.outputs;
62+
<screen>
63+
<![CDATA[
64+
2147483647
65+
2147483647
66+
2147483648
67+
]]>
68+
</screen>
69+
</example>
70+
</para>
71+
</refsect1>
72+
73+
<refsect1 role="notes">
74+
&reftitle.notes;
75+
<warning>
76+
<simpara>
77+
Questa funzione restituisce un risultato utile solo se il numero rientra
78+
effettivamente nei limiti dell'intero PHP (cioè tipo long con segno). Per stampare semplicemente il numero
79+
GMP, utilizzare <function>gmp_strval</function>.
80+
</simpara>
81+
</warning>
82+
</refsect1>
83+
84+
</refentry>
3085
<!-- Keep this comment at the end of the file
3186
Local variables:
3287
mode: sgml
@@ -46,4 +101,4 @@ End:
46101
vim600: syn=xml fen fdm=syntax fdl=2 si
47102
vim: et tw=78 syn=sgml
48103
vi: ts=1 sw=1
49-
-->
104+
-->

0 commit comments

Comments
 (0)