Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » ist wirklich der Round-off Error so gross????

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
18.06.2003, 15:37 Uhr
Pablo
Supertux
(Operator)


@DIO: Die große der Manitse hängt von der Anzahl der Bits, die man benötigt, um eine Fließkommazahl zu codieren. Normerlweise nimmt man 32 Bits, das 31. Bit ist entweder 0 (bezeichnet positive Zahl) oder 1 (bezeichnet negative Zahl). Die 7 restlichen Bits [30 ... 24] ist die Mantisse, die dir sagt, welche Exponent damit gemeint ist. Es gibt in dieser Darstellung eine hidden bit, zwischen Bit 23 und 24, weil die Zahl immer 1.irgwendetwas^{Mantisse-127}, für den Fall 32.Bit (weiß ich nicht mehr ob -127 oder + 127, bin mir nicht so sicher, lange nicht mehr gebraucht). Jedenfall sind die 24. restlichen bits [23...0] die Zahl, die nach der Komma sind.

Sind alle 32 Bits 0, dann wird die 0 dargestellt, alle 1, dann, glaub ich, NAN (Not A Number), Mantisse Bits alle gleich 1 und Bits 23. bis 0. alle 0 ==> + (-) unendlich, leider weiß ich die Fälle nicht mehr, seit meiner TI Klausur hab ich sie nicht mehr gebraucht.

@~Davood: seit wann void main()? Das ist nicht ANSI, main muss mit int deklariert werden
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
18.06.2003, 15:41 Uhr
Tommix



Hallo,

Zitat:
virtual postete
..., du solltest es vielleicht mal mit einem long double probieren, welches ggf. eine höhere Genauigkeit aufweist.


leider nein. Unter Windows sind die erweiterten Genauigkeiten des 80x87 standardmäßig deaktiviert linkund in VC sind double und long double lt. MSDN identisch (Jaaa ich weiß, Linux...).
Wenn ich den im Link erwähnten Assembler-Code einbaue:

C++:
void main()
{
  int a;

  __asm
  {
    fstcw a
    or a, 0x0300; &B0000001100000000%  
    fldcw a
  }
  x1 = ...


werden nur die zur Laufzeifzeit ausgeführten Rechnungen genauer und der Gesamtfehler um eine Größenordnung geringer. In der Release-Build, mit eingeschalteten Optimierungen, übernimmt offenbar der Compiler wieder mehr und der Fehler wird wieder größer.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: