![]() |
Die sqrt Function
Hi,
Ich wollte fragen ob mir jemand die original sqrt-function posten kann. Weil angeblich ist die in der Unit System aber entweder bin ich blöd oder die steht da nicht drin..... Wenn ich die System Unit öffne und nach sqrt suche dann wird nichts gefunden :| Gruß Neutral General |
Re: Die sqrt Function
Hallo,
der Compiler bindet den notwendigen Code "inline" ein, somit findet kein Funktionsaufruf statt. Gruß Hawkeye |
Re: Die sqrt Function
Und niemand kennt diesen Code ? -.-
|
Re: Die sqrt Function
Nicht alles was da drin sein soll ist auch da drin, vorallem beim ganzen CompilerMagicZeugs wird angezeigt, daß es angeblich da drin sein, aber gerade das wird ja vom Compiler erzeigt und bereit gestellt, so ist es auch mit dem sqrt :zwinker:
hier der Code für 2 Single's :zwinker:
Delphi-Quellcode:
b := sqrt(a);
asm fld dword ptr &a fsqrt fstp dword ptr &b wait end; |
AW: Die sqrt Function
Aus DELPHI2009:
Delphi-Quellcode:
function Sqrt(const X: Extended): Extended;
asm FLD X FSQRT FWAIT end; Memo.lines.add(FloatToStrF(sqrt(2.0), ffGeneral, 22, 20)); |
AW: Die sqrt Function
Betrifft Function hier:
![]() Die function SqrtHeron(r: Double; anz: Integer): Double; ist falsch! Richtig:
Delphi-Quellcode:
function SqrtHeron(r: Extended; anz: Integer): Extended;
var i: Integer; begin result := 1; // Startwert for i := 1 to anz do // Anzahl der Annäherungsdurchläufe begin result := 0.5 * (result + r/result); // Heron-Verfahren end; end; procedure TForm1.Button20Click(Sender: TObject); var val : Extended; begin val:= SQRTHERON(2.0,5); Memo.lines.add(FloatToStrF(val, ffGeneral, 22, 20)); Memo.lines.add(FloatToStrF(SQRT(2.0), ffGeneral, 22, 20)); //eingebaute Function end; |
AW: Die sqrt Function
Zitat:
|
AW: Die sqrt Function
Außerdem ist das fast 8 Jahre lang wohl niemandem aufgefallen.
|
AW: Die sqrt Function
Ergebnisse:
1,41421356237309515 - Double 1,41421356237309505 - Extented 1,41421356237309505 - SQRT - system.pas |
AW: Die sqrt Function
Zitat:
Der Double-Wert von sqrt(2) ist 1.41421356237309514547462185873882845... Also ist die Ausgabe völlig korrekt! Oder willst Du behaupten, daß alle Double-Funktionen 'falsch' sind und in die Tonne gehören? Das wird allerdings den 64-Bit Leuten gar nicht gefallen, denn die haben standardmäßig nur double (extended nur mit Tricks/Software)! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz