mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-27 06:18:56 +00:00

Added blurb on object comparisons in PHP4 Known bug: make html does not copy the PNG from images to the correct dir Someone with more insight on what to change in configure.in and related can do the changes (don't want to break the build). git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@121878 c90b9560-bf6c-de11-be94-00142212c4b1
82 lines
2.5 KiB
XML
82 lines
2.5 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision: 1.3 $ -->
|
|
<!-- splitted from ./en/functions/gmp.xml, last change in rev 1.1 -->
|
|
<refentry id="function.gmp-gcdext">
|
|
<refnamediv>
|
|
<refname>gmp_gcdext</refname>
|
|
<refpurpose>Calculate GCD and multipliers</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<methodsynopsis>
|
|
<type>array</type><methodname>gmp_gcdext</methodname>
|
|
<methodparam><type>resource</type><parameter>a</parameter></methodparam>
|
|
<methodparam><type>resource</type><parameter>b</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Calculates g, s, and t, such that <literal>a*s + b*t = g =
|
|
gcd(a,b)</literal>, where gcd is the greatest common divisor. Returns
|
|
an array with respective elements g, s and t.
|
|
</para>
|
|
<para>
|
|
This function can be used to solve linear Diophantine equations in two
|
|
variables. These are equations that allow only integer solutions and have the form:
|
|
<informalequation>
|
|
<alt>a*x + b*y = c</alt>
|
|
<graphic fileref="images/diophantine-equation.png"/>
|
|
</informalequation>
|
|
For more information, go to the <ulink url="&url.diophantine-equation;">"Diophantine
|
|
Equation" page at MathWorld</ulink>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Solving a linear Diophantine equation</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
// Solve the equation a*s + b*t = g
|
|
// where a = 12, b = 21, g = gcd(12, 21) = 3
|
|
$a = gmp_init(12);
|
|
$b = gmp_init(21);
|
|
$g = gmp_gcd($a, $b);
|
|
$r = gmp_gcdext($a, $b);
|
|
|
|
$check_gcd = (gmp_strval($g) == gmp_strval($r['g']));
|
|
$eq_res = gmp_add(gmp_mul($a, $r['s']), gmp_mul($b, $r['t']));
|
|
$check_res = (gmp_strval($g) == gmp_strval($eq_res));
|
|
|
|
if ($check_gcd && $check_res) {
|
|
$fmt = "Solution: %d*%d + %d*%d = %d\n";
|
|
printf($fmt, gmp_strval($a), gmp_strval($r['s']), gmp_strval($b),
|
|
gmp_strval($r['t']), gmp_strval($r['g']));
|
|
} else {
|
|
echo "Error while solving the equation\n";
|
|
}
|
|
|
|
// output: Solution: 12*2 + 21*-1 = 3
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|