-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
hast du da mal ein Testprogramm für mich?
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
Function tF_Haupt.mod_exp(Const Basis, Exponent, Modulo: TBigInt): TBigInt;
Begin
Result := Basis;
Result.ExpMod(Exponent, Modulo);
End;
welches ist denn die Zeile 176?
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
doch schon ... der Fehler in Zeile 175 ist ja behoben ... nur gib es noch andere ... hab leider kein D2007 zum Testen.
hast aber in Zeile 1334 das BitwiseNot noch nicht durch LogicalNot ersetzt :angel2:
(Deklaraion und Funktion müssen ja umbenannt werden)
Zeile 177+178 = ShiftRight und ShiftLeft
ich dachte zwar die haben es schon mit dem Updat behoben,
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
da es mit Zeile 175 anfängt
ersetzt mal den Namen BitwiseNot durch LogicalNot :gruebel:
(Zeilen 175 und 1334)
stimmt zwar von der Logik her nicht ganz, aber von der Funktion her sollte es damit auch gehn.
(Delphi unterscheidet ja angeblich nicht zwischen binären und logischen Operatoren :? )
nja, und dann mal sehen welche der Folgefehler noch übrig bleiben :stupid:
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
@gammatester:
ich meinte da ja auch das VLI :angel2:
Division kann man über 'ne Umkerung des Multiplikation regeln ... mach ich nicht anders :stupid: (weils so schön einfach ist)
Modulo über 'ne Division+Multiplication+Subtraktion
Multiplicaion ist ja auch nur 'ne Mehrfache Addition
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
leider erst ab D2006
> anderer Thread siehe Beitrag #15
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
na gut, dieses könnte man sich da notfalls noch nachrüsten.
erstmal eine Modfunktion erstellen
vom Prinzip her so:
Function Mod....
Begin
Result{Modulo} := Dividend - ((Dividend div Divisor) * Divisor)
End;
für TVLI etwa so :gruebel:
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
Jupp, die Datei einfach in den Projektordner, oder einen anderen Ordner, welcher in den Suchpfaden drin steht.
dann BigInt in Uses eintragen
und TBigInt verwenden.
und zur Verwendung:
die "Standardfunktionalität ist genauso wie bei auch "normalen" Integern
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
http://www.delphipraxis.net/internal_redirect.php?p=895756#895756
512 Bit im Zweierkomplement = 152(153) Dezimalstellen
Int64 = 18(19) Dezimalstellen
und man kann, dank der neuen Kompilerfeatures, einfach sowas wie + und - Verwenden (siehe Testprojekt)
< <= = <> >= >
+ - div mod
and or xor not shl shr
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
31. Mai 2008
ist halt Teil eines Projektes. :stupid:
aber ich versuch mal die den BigInt-Teil zu vereinzeln.
mir raucht eh grad de Kopf von dessen großer Schwester (oder Bruder?) ... nja, etas abwechslung tut bestimmt Gut :angel:
was für Fehlermeldungen kommen eigentlich?
(außer daß Delphi meckern sollte, das etwas ('ne menge Units) fehlt)
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
29. Mai 2008
TBigInt
TBigInt ... Platz 1 ... sollte mir das was su denken geben?
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
22. Mai 2008
also Integer geht bei direkter Rechnung nicht ;(
666^4 sprenkt schonmal die Integergrenzen und auch 512 Bit werden gesprengt
falls ich mich jetzt nicht verschätzt hab, dann komm ich auf etwa 10.0000.000 Bits für 666^58613 :gruebel:
vielleicht sollte ich mir doch noch überlegen auch noch 'en dynamischen BigInteger zu erstellen (wenn ich diesen soweit fertig hab :stupid: ), denn so geht...
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
22. Mai 2008
Komisch, jetzt getestet kommt auch 11771, aber letztens war es irgendwas Anderes :gruebel:
Was die größeren Zahlen angeht, dann mißt du wohl entweder Extendet verwenden, allerdings kann man da nur die ersten 18-19 Stellen betrachten, da die Auflösung nicht anderes zuläßt.
Bei 'ner 30-stelligen Zahl wären also durchschnittlich die letzten 11 Stellen fehlerhaft.
Ansonsten hätte ich...
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
16. Mai 2008
stümmt, geht aber immernoch nicht richtig ... und irgendwie bekomm ich keine Fehlermeldung o.O
{$OVERFLOWCHECKS ON}
{$RANGECHECKS ON}
function mod_exp(basis, exponent, modulo: Integer): Int64;
var basis64: Int64;
begin
Result := 1;
basis64 := basis;
while exponent > 0 do begin
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
16. Mai 2008
ist dir übrigens schon aufgefallen, daß e nur ein Integer ist, also ist Result (Result:=e) auch nur ein Integer :shock:
-
Forum: Sonstige Fragen zu Delphi
Delphi
by himitsu,
16. Mai 2008
schalte doch einfach mal die Überlaufprüfung ein, :angel2:
{$Q+} or {$OVERFLOWCHECKS ON}
dann bekommst du eine Meldung bei Überscheitung der Wertebereiche.
ansonsten bleibt dir nur der Werg über sowas wie BigInt.