gmp_div_qr


gmp apg

GET the quotient and the remainder of the division of two GMP number.





This function returns an ARRAY of two elements, with the first as integer result of ( $num1 / $num2 ), and the second as the remainder of the division.



<?php

array gmp_div_qr GMP|int|string $num1
                               
GMP|int|string $num2
                                                
int $rounding_mode GMP_ROUND_ZERO )


where,

$num1 The divisor

$num2 
The dividend

$rounding_mode 
The result rounding mode
                                
SEE the below TABLE )

?> 

$num1


The divisor.



$num2


The dividend.



$rounding_mode


The result rounding, which can have the following values:


CONSTANT NAMEVALUEMEANING
GMP_ROUND_ZERO0The result is
truncate towards 0
GMP_ROUND_PLUSINF1The result is
round towards +infinity
GMP_ROUND_MINUSINF2The result is
round towards -infinity
ed48

  1 EXERCISE   

<?php

$a01a 
PHP_INT_MAX;

$a01b = [ 281832 ];

echo 
'GMP_ROUND_ZERO<br><br>';

foreach(
$a01b as $b01a)
{
    
$g01a gmp_div_qr($a01a$b01a);
    
$s01aa gmp_strval($g01a[0]);
    
$s01ab gmp_strval($g01a[1]);
    
    echo 
'gmp_div_qr ( ' $a01a ', ' $b01a ', 0 ) 
    <br>Quotient = ' 
$s01aa '<br>Remainder = ' $s01ab '<br><br>';
}

echo 
'<br><br>GMP_ROUND_PLUSINF<br><br>';

foreach(
$a01b as $b01b)
{
    
$g01b gmp_div_qr($a01a$b01b1);
    
$s01ba gmp_strval($g01b[0]);
    
$s01bb gmp_strval($g01b[1]);
    echo 
'gmp_div_qr ( ' $a01a ', ' $b01b ', 1 ) 
    <br>Quotient = ' 
$s01ba '<br>Remainder = ' $s01bb '<br><br>';
}

echo 
'<br><br>GMP_ROUND_MINUSINF<br><br>';

foreach(
$a01b as $b01c)
{
    
$g01c gmp_div_qr($a01a$b01c2);
    
$s01ca gmp_strval($g01c[0]);
    
$s01cb gmp_strval($g01c[1]);
    echo 
'gmp_div_qr ( ' $a01a ', ' $b01c ', 2 ) 
    <br>Quotient = ' 
$s01ca '<br>Remainder = ' $s01cb '<br><br>';
}

?> 

 RESULT   

GMP_ROUND_ZERO

gmp_div_qr ( 9223372036854775807, 2, 0 )
Quotient = 4611686018427387903
Remainder = 1

gmp_div_qr ( 9223372036854775807, 8, 0 )
Quotient = 1152921504606846975
Remainder = 7

gmp_div_qr ( 9223372036854775807, 18, 0 )
Quotient = 512409557603043100
Remainder = 7

gmp_div_qr ( 9223372036854775807, 32, 0 )
Quotient = 288230376151711743
Remainder = 31



GMP_ROUND_PLUSINF

gmp_div_qr ( 9223372036854775807, 2, 1 )
Quotient = 4611686018427387904
Remainder = -1

gmp_div_qr ( 9223372036854775807, 8, 1 )
Quotient = 1152921504606846976
Remainder = -1

gmp_div_qr ( 9223372036854775807, 18, 1 )
Quotient = 512409557603043101
Remainder = -11

gmp_div_qr ( 9223372036854775807, 32, 1 )
Quotient = 288230376151711744
Remainder = -1



GMP_ROUND_MINUSINF

gmp_div_qr ( 9223372036854775807, 2, 2 )
Quotient = 4611686018427387903
Remainder = 1

gmp_div_qr ( 9223372036854775807, 8, 2 )
Quotient = 1152921504606846975
Remainder = 7

gmp_div_qr ( 9223372036854775807, 18, 2 )
Quotient = 512409557603043100
Remainder = 7

gmp_div_qr ( 9223372036854775807, 32, 2 )
Quotient = 288230376151711743
Remainder = 31


  2 EXERCISE   

<?php

$a02a 
255;

$a02b 32;

echo 
'GMP_ROUND_ZERO<br><br>';

    
$g02a gmp_div_qr($a02a$a02b0);
    
    echo 
'gmp_div_qr ( ' $a02a ', ' $a02b ', 0 ) 
    <br>Quotient = ' 
$g02a[0] . '<br>Remainder = ' $g02a[1] . '<br><br>';

echo 
'<br><br>GMP_ROUND_PLUSINF<br><br>';

$g02a gmp_div_qr($a02a$a02b1);
    
    echo 
'gmp_div_qr ( ' $a02a ', ' $a02b ', 1 ) 
    <br>Quotient = ' 
$g02a[0] . '<br>Remainder = ' $g02a[1] . '<br><br>';
        
echo 
'<br><br>GMP_ROUND_MINUSINF<br><br>';

    
$g02a gmp_div_qr($a02a$a02b2);
    
    echo 
'gmp_div_qr ( ' $a02a ', ' $a02b ', 2 ) 
    <br>Quotient = ' 
$g02a[0] . '<br>Remainder = ' $g02a[1] . '<br><br>where ';
    echo 
"($a02a - ($a02a / $a02b) * $a02b) = " . ($a02a - ($a02a $a02b) * $a02b) . '<br><br>';
    
?> 

  3 EXERCISE   

<?php

echo "<pre>";
var_dump(gmp_div_qr(0,1));
echo 
"</pre><br><br><pre>";

try {
    
var_dump(gmp_div_qr(1,0));
} catch (
\DivisionByZeroError $e) {
    echo 
$e->getMessage() . "<br><br>";
}
try {
    
var_dump(gmp_div_qr(gmp_init(1), gmp_init(0)));
} catch (
\DivisionByZeroError $e) {
    echo 
$e->getMessage() . "<br><br>";
}

var_dump(gmp_div_qr(12653,23482734));
try {
    
var_dump(gmp_div_qr(12653,2348273410));
} catch (
\ValueError $e) {
    echo 
$e->getMessage() . "<br><br>";
}
var_dump(gmp_div_qr(1123123,123));
echo 
"</pre><br><br><pre>";
var_dump(gmp_div_qr(1123123,1231));
echo 
"</pre><br><br><pre>";
var_dump(gmp_div_qr(1123123,1232));
echo 
"</pre><br><br><pre>";
var_dump(gmp_div_qr(gmp_init(1123123), gmp_init(123)));
echo 
"</pre><br><br><pre>";
var_dump(gmp_div_qr(1123123,123GMP_ROUND_ZERO));
echo 
"</pre><br><br><pre>";
var_dump(gmp_div_qr(1123123,123GMP_ROUND_PLUSINF));
echo 
"</pre><br><br><pre>";
var_dump(gmp_div_qr(1123123,123GMP_ROUND_MINUSINF));
echo 
"</pre><br><br>";

$fp fopen(__FILE__'r');

try {
    
var_dump(gmp_div_qr($fp$fp));
} catch (
\TypeError $e) {
    echo 
$e->getMessage() . "<br><br>";
}
try {
    
var_dump(gmp_div_qr(array(), array()));
} catch (
\TypeError $e) {
    echo 
$e->getMessage() . "<br><br>";
}

?>