(PHP 4, PHP 5)
bcmod — Modulo zweier Zahlen mit beliebiger Genauigkeit
Liefert den Modulo des left_operand unter Verwendung von modulus.
Der linke Operand in Stringform.
Der Modulo-Wert in Stringform.
Gibt den Modulo als String zurück. Ist modulus 0, wird NULL zurückgegeben.
Beispiel #1 bcmod()-Beispiel
<?php
echo bcmod('4', '2'); // 0
echo bcmod('2', '4'); // 2
?>
GCD made in Euclidian algorithm:
<?php
function bcgcd($a, $b)
{
    if($a < $b)
    {
        $t = $b;
        $b = $a;
        $a = $t;
        unset($t);
    }
    if(bcmod($a, $b) == "0") return $b;
    else return bcgcd($b, bcmod($a, $b));
}
?>
hope this helps.
Heres an useful IBAN generate function:
<?php
function controleer_iban($iban) {
    $iban = str_replace(array(" ", "  ", "   ", "\t"), "", $iban);
    $iban = strtoupper(str_replace(" ", "", $iban));
    if(strlen($iban)>34)
        return false;
    $acceptabel = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 1 2 3 4 5 6 7 8 9 0";
    $acceptabel = explode(" ", $acceptabel);
    for($i = 0; $i<strlen($iban); $i++) {
        if(in_array(substr($iban, $i, 1), $acceptabel) === false)
            return false;
    }
    $alfa = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";
    $alfa = explode(" ", $alfa);
    for($i = 1; $i<27; $i++) {
        $alfa_replace[] = $i+9;
    }
    $controlegetal = str_replace($alfa, $alfa_replace, substr($iban, 4, strlen($iban)-4).substr($iban, 0, 2)."00");
    $controlegetal = 98 - (int)bcmod($controlegetal,97);
    if((int)$controlegetal === (int)substr($iban, 2, 2))
        return true;
    else
        return false;    
}
?>
function bc_is_even($int_str) {
  return (int)!($int_str & 1);
}
More resource efficient version of 'bc_is_even'.
<?php
/**
 * my_bcmod - get modulus (substitute for bcmod)
 * string my_bcmod ( string left_operand, int modulus )
 * left_operand can be really big, but be carefull with modulus :(
 * by Andrius Baranauskas and Laurynas Butkus :) Vilnius, Lithuania
 **/
function my_bcmod( $x, $y )
{
    // how many numbers to take at once? carefull not to exceed (int)
    $take = 5;     
    $mod = '';
    do
    {
        $a = (int)$mod.substr( $x, 0, $take );
        $x = substr( $x, $take );
        $mod = $a % $y;    
    } 
    while ( strlen($x) );
    return (int)$mod;
}
// example
echo my_bcmod( "7044060001970316212900", 150 );
?>