Ganzzahlige Potenz



  • wxSkip schrieb:

    ...

    😮

    *knivel-zustimm*

    Das ist nur eine ganz kompliziert aufgeschriebene Version eines eigentlich sehr simplen Algorithmus': "square and multiply".

    Ein Array braucht man dafür nicht.

    double pow(double base, int exp)
    {
      if (exp<0) return pow(1.0/base,-exp);
      double result = 1;
      while (exp) {
        if (exp & 1) result *= base;
        base = base * base;
        exp >>= 1;
      }
      return result;
    }
    

    Aber ob das jetzt schneller als std::pow(double,int) ist, wage ich zu bezweifeln ...



  • Kann eine x86 CPU nicht sowieso hardwarebeschleunig potenzieren, dh. alles Selbstgebaute ist sowieso langsamer und man sollte Insintrics nutzen?


  • Mod

    Ethon schrieb:

    Kann eine x86 CPU nicht sowieso hardwarebeschleunig potenzieren, dh. alles Selbstgebaute ist sowieso langsamer und man sollte Insintrics nutzen?

    Nicht dass ich wüsste. Es gibt jedoch 8087-Assemblerbefehle für y*log(x) und 2x-1, was natürlich enorm hilfreich ist. Aber die sind auch nicht gerade trivial. Also nix was nur einen Takt braucht.

    Weiß nicht, ob es das auch für SSE gibt, vermutlich wird es was ähnliches geben. Aber man kann die Mathematik nicht austricksen. pow(real, real) ist keine triviale Operation, das braucht immer ordentlich Rechenaufwand.



  • Die ersten PCs hatten keinen CoProzessor für Fliesskomma (xx87) oder dieser musste für ordentlich Geld nachgerüstet werden. Ohne CoProzesor wurde alles langsam mit Emulatoren (in einer library) gemacht. Seht euch den Code dieser Emulatoren (wahrscheinlich Assembler) an und vergesst dieses Thema! 🤡



  • berniebutt schrieb:

    Die ersten PCs hatten keinen CoProzessor für Fliesskomma (xx87) oder dieser musste für ordentlich Geld nachgerüstet werden. Ohne CoProzesor wurde alles langsam mit Emulatoren (in einer library) gemacht. Seht euch den Code dieser Emulatoren (wahrscheinlich Assembler) an und vergesst dieses Thema! 🤡

    AFAIK hatten die Fließkomma-Zahl Berechnungen durch komplexe Ganz-zahl Berechnungen gelöst; heute gibt es natürlich die FPU.


Anmelden zum Antworten