Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Die sqrt Function (https://www.delphipraxis.net/68061-die-sqrt-function.html)

Neutral General 24. Apr 2006 09:16


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

Hawkeye219 24. Apr 2006 09:21

Re: Die sqrt Function
 
Hallo,

der Compiler bindet den notwendigen Code "inline" ein, somit findet kein Funktionsaufruf statt.

Gruß Hawkeye

Neutral General 24. Apr 2006 09:22

Re: Die sqrt Function
 
Und niemand kennt diesen Code ? -.-

himitsu 24. Apr 2006 09:24

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;

hathor 23. Jan 2014 00:13

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));

hathor 23. Jan 2014 01:20

AW: Die sqrt Function
 
Betrifft Function hier:
http://www.delphipraxis.net/498960-post2.html

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;

gammatester 23. Jan 2014 07:54

AW: Die sqrt Function
 
Zitat:

Zitat von hathor (Beitrag 1244974)
Betrifft Function hier:
http://www.delphipraxis.net/498960-post2.html

Die
function SqrtHeron(r: Double; anz: Integer): Double;
ist falsch!

Vielleicht könntest Du ja auch noch verraten, was angeblich falsch sein soll. Deine Funktion unterscheidet sich doch nur durch die Ersetzung 'double' -> 'extended' von der alten. Also ist nach Deiner Logik auch Deine Funktion falsch. Rechnen tun beide im richtig im Rahmen ihrer Aufgabe.

DeddyH 23. Jan 2014 07:57

AW: Die sqrt Function
 
Außerdem ist das fast 8 Jahre lang wohl niemandem aufgefallen.

hathor 23. Jan 2014 08:24

AW: Die sqrt Function
 
Ergebnisse:


1,41421356237309515 - Double
1,41421356237309505 - Extented
1,41421356237309505 - SQRT - system.pas


gammatester 23. Jan 2014 09:56

AW: Die sqrt Function
 
Zitat:

Zitat von hathor (Beitrag 1244991)
Ergebnisse:


1,41421356237309515 - Double
1,41421356237309505 - Extented
1,41421356237309505 - SQRT - system.pas


Und was soll uns das nun wieder sagen?

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 01:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz