Forum: Object-Pascal / Delphi-Language
Delphi
by grizzly,
3. Nov 2008
Na toll, ich bin ja schon total verkalkt :oops:
Natürlich, da muß ein Plus hin.
Ich sollte mir abgewöhnen, ungetestete Software rauszugeben. Vielleicht sollten wir erst mal eine Test-Umgebung für diese Aufgabe entwerfen, bevor wir uns ans Lösen derselben machen...
Gruß
Michael
Forum: Object-Pascal / Delphi-Language
Delphi
by grizzly,
3. Nov 2008
Gerade bei so rechenintensiven Aufgaben sollte man dann halt die Ansprüche runterschrauben und mit einer Näherung zufrieden sein. Der folgende Code wird im Schnitt immer schneller, je ungenauer (je größer epsilon) das Ergebnis sein darf:
FUNCTION TurboNegativate(Number: integer; Epsilon: double): double;
BEGIN
Randomize;
Number := Abs(Number);
REPEAT
Result :=...
Forum: Object-Pascal / Delphi-Language
Delphi
by grizzly,
3. Nov 2008
Und so trivial ist es gar nicht, denn die Antworten in diesem Thread würden alle auf die negative 0 (Siehe auch Eintrag #93 dieses Threads) hereinfallen. Nicht umsonst hat Borland da in der Math.pas der Sign() Funktion einen Extra-Check auf 0.0 und -0.0 spendiert (in der Fließkomma Variante).
Und, ja, ich habe auch schon Fragen solchen Kalibers gestellt (anderes Forum und anderes Thema). Ihr...
Forum: Object-Pascal / Delphi-Language
Delphi
by grizzly,
31. Okt 2008
Langsam kann ich auch!
FUNCTION MakeNeg(i: integer): integer;
BEGIN
Randomize;
i := abs(i);
REPEAT
Result := -Random(MaxLongint);
UNTIL i+Result = 0;
END;
Forum: Object-Pascal / Delphi-Language
Delphi
by grizzly,
30. Okt 2008
Das hier macht sogar die 0 negativ ;)
FUNCTION Negativator(e: extended): extended;
BEGIN
pbyteArray(@e)^ := pbyteArray(@e)^ or $80;
Result := e;
END;
procedure TForm1.Button1Click(Sender: TObject);
var