Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#15

AW: "invalid floating point operation" finde den Fehler nicht

  Alt 4. Nov 2011, 21:09
Ohne Angaben, was Du eigentlich berechnen willst, kann man nur spekulieren. Einiges scheint doch ohne nähere Angaben verbesserungwürdig.

Wenn Du Fließkomma rechnest, wozu der Zwischenschritt über integer, d.h. warum nimmst Du trunc und nicht floor aus der Math-Unit?

Wenn Du als eigentliches Ziel allerdings wirklich zB 142^23 mod 997 berechnen willst, ist Dein Ansatz ziemlich daneben. Nehmen wir an, Du willst b^a mod m berechnen, mit Integerwerten a,b,m. Wenn Du schon a^b in einer Schleife durch Ausmultiplizieren potenzieren und nicht mit schneller Exponentation berechnen willst, reduzierst Du in jedem Schritt mod also
Delphi-Quellcode:
r := b;
for i:=2 to a do begin
  r := r*b mod m;
end;

Wenn Du allerdings nicht Integer sondern Fließkomma rechnen willst, ist eine Lösung
Delphi-Quellcode:
r := power(b,a);
r := r - floor(r/m);
  Mit Zitat antworten Zitat