DirectX 11 Double Precision ALSO some bugs

DaveB

New member
Joined
Jul 18, 2008
Messages
4
Reaction score
0
Points
0
I just went back to Orbiter to use it some more after a long time away from it, and I recall an old thread about how precision in long flights have errors because Orbiter uses DirectX 7, which I understand does not intrinsically use double precision. I used earlier versions for long flights. It was said that this problem could be corrected in DirectX 10 or later. Would that problem be fixable with D3D11Client?

Also, for anyone's information, I noticed two big bugs. First, unchecking a module in Orbiter 121103 or Orbiter 100830 causes a Data Execution Prevention violation in Windows XP 32 bit. I have not tested other OSs. I have to erase the modules manually from Orbiter.cfg.

Second, orulex-100721-O2010-alpha (and maybe earlier versions) does not display correctly with Orbiiter 121103 but does display correctly with Orbiter 100830. This problem is big because the orulex layer is erroneously almost at right angle to the planet surface when it should be just layered on top of the surface.
 

Urwumpe

Not funny anymore
Addon Developer
Donator
Joined
Feb 6, 2008
Messages
37,605
Reaction score
2,326
Points
203
Location
Wolfsburg
Preferred Pronouns
Sire
The double precision limit is in Orbiters core, the part that simulates the physics, not in the Visualization clients.

FYI: Most of the visualization actually takes place in single precision (32 bit IEEE floating point), since GPUs are optimized for single precision calculations.

Orbiter could have used "long double" precision, but I suspect that martins either didn't know they exist in C++ or was aware that they are no portable type (different compilers have different definitions what a long double is. On most X86 compilers, it is a 80 bit floating point number, the biggest floating point number that the CPU can handle itself.).

On a PowerPC platform (eg, Playstation III), a long double would be a 128 bit floating point number. On a SPARC, it is even a 256 bit (quadruple precision double) number.
 

georgemacin

New member
Joined
Jan 17, 2017
Messages
1
Reaction score
0
Points
0
Website
net-informations.com
The decimal keyword denotes a 128-bit data type. Compared to floating-point types, the decimal type has a greater precision and a smaller range, which makes it suitable for financial and monetary calculations. Precision is the main difference where double is a double precision (64 bit) floating point data type and decimal is a 128-bit floating point data type.

Double - 64 bit (15-16 digits)

Decimal - 128 bit (28-29 significant digits)

So Decimals have much higher precision and are usually used within monetary (financial) applications that require a high degree of accuracy. But in performance wise Decimals are slower than double and float types. Double Types are probably the most normally used data type for real values, except handling money. In general, the double type is going to offer at least as great precision and definitely greater speed for arbitrary real numbers. More about...Double vs Decimal

George
 
Top