Und hier die nächsten Probleme:
In TestJclMath sind einige leere Testmethoden schon mal deklariert, aber noch nicht ausprogrammiert.
Eine davon konnte ich so wie eine bereits bestehende ausfüllen, aber diese beiden hier wollen 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?