Damit es nicht untergeht dachte ich, ich lagere diese gestern gestellte Frage mal in einen
neuen Thread aus:
In TestJclMath sind einige leere Testmethoden schon mal deklariert, aber noch nicht ausprogrammiert.
Manche davon konnte ich inzwischen ausfüllen (Pull requests sind erstellt), aber diese hier Will
nicht so recht, dummerwise bin ich aber auch kein Mathe-Genie:
Delphi-Quellcode:
procedure TMathTranscendentalTest._ArcCsc;
var
x: Extended;
begin
x := -3.98;
while x < -1 do
begin
CheckEquals(Math.ArcCsc(X), JclMath.ArcCsc(X), PrecisionTolerance);
x := x + 0.1;
end;
x := 1.00;
while x < 4 do
begin
CheckEquals(Math.ArcCsc(X), JclMath.ArcCsc(X), PrecisionTolerance);
x := x + 0.1;
end;
end;
Die _ArcCsc meckert, dass die Ergebnisse nicht übereinstimmen, obwohl beide verglichenen
Ergebnisse lt. DUnit log-Eintrag identisch sind. Da muss wohl der Fehler noch weiter hinten
in den Nachkommastellen liegen...
PrecisionTolerance: Float = 0.0000001;
Und Log-Meldung: expected: <-0,253977954770906> but was: <0,253977954770906>
Habe jetzt eben erst gesehen, dass das Vorzeichen falsch ist und ein Vergleich von Math.ArcCsc und JclMath.ArcCSc ergibt:
System.Math: Result := ArcSin(1 / X);
JclMath: Result := ArcSec(X / Sqrt(X * X -1));
Wer hat recht?