Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Rechnen mit großen Exponenten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Rechnen mit großen Exponenten

    Hallo,
    ich benötige eine Funktion um mit großen Hochzahlen rechnen zu können.
    pow($base,$exp) steigt leider zu schnell aus. Leider konnte ich keine direkte Lösung finden, hier also mein Vorschlag:
    PHP-Code:
    <?php
    /*
    Square and Multiply Algorithmus
    */
    $base 13;
    $exp 480;
    echo 
    sam($base,$exp); //7.5622055031668E+301
    echo pow(13,480); //Inf

    /*
    berechnet base^exp
    */
    function sam($base,$exp)
    {
      
    $res $base;
      if(
    $exp == 0) return 1;
      while (
    $exp != 0)
      {
        
    $res $res $res;//quadriert wird immer
        
    $exp $exp 2//exponent halbieren
        
    (int)$exp//Kommastellen absägen
        
    if($exp 2)
        {
          
    $res $res $base//bei ungeradem Exponent mit der Basis multiplizieren
          
    $exp--;//und eins vom Exponent abziehen
        
    }
      }
      return 
    $res;
    }
    Gibt es eine Möglichkeit diese Funktion noch besser / leistungsfähiger umzusetzten?
    Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.

  • #2
    die gmp-extension, falls installiert kann dir weiterhelfen:

    PHP: gmp_pow - Manual
    [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
    | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

    Kommentar


    • #3
      Danke schön, GMP scheint das Richtige zu sein. Werd ich mal installieren...
      Ein Klauenhammer ist kein Schraubendreher, auch wenn beide das Problem ,,Schraube-Wand" bidirektional lösen können.

      Kommentar


      • #4
        PHP: bcpow - Manual

        Ueber die Performance im Vergleich zu deiner Funktion weiss ich allerdings nichts.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar

        Lädt...
        X