Avatar billede tax Nybegynder
27. januar 2004 - 09:35 Der er 3 kommentarer

float præcision

Jeg roder med en applikation, hvor jeg for at spare hukommelse anvender half precision floats.

Mit problem er at jeg ikke umiddelbart kan få overblik over hvad det vil sige, da jeg ikke har formelen for floatværdi som funktion af bitmønster.

Jeg skal vide hvilken præcision jeg ender på.

Pseudokode for half precision floats:
PACK:
// C Pseudocode
result = (((half)a.y) << 16) | (half)a.x;

UNPACK:
// C Pseudocode
result.x = (a >> 0) & 0xFF;
result.y = (a >> 16) & 0xFF;
Avatar billede s.nielsen Nybegynder
27. januar 2004 - 13:52 #1
Hvis datatypen er 16 bit, vil jeg umiddelbart gætte på at der er
1 sign bit
10 bit mantissa
5 bit eksponent

hvilket vil sige at du har 10 bit til at repræsentere et tal med og en eksponent der spænder fra -16 til +15

Men der burde følge noget dokumentation med til den half-precision implementation du anvender hvor du kan se layoutet af datatypen og eksempler på datatypens range.
Hvis du ikke kender til principperne bag floating point repræsentation anbefaler jeg at søge lidt på google, det er for komplekst et emne at beskrive her.
Avatar billede tax Nybegynder
27. januar 2004 - 16:52 #2
Det er implementationen i Cg sproget, dokumentationen stinker.
Avatar billede arne_v Ekspert
27. januar 2004 - 18:30 #3
Vi skal se noget implementations kode for at kunne sige noget specifikt.

16 bit vil ihvertfald betyde at præcisionen maksimalt er 4-5 betydende cifre,
men formentligt mindre.

Generelt tror jeg ikke at det er et anbefalelsesværdigt approach. Jeg ville
tro at det havde været bedre at lave en komprimering af 32 bit floats
(ofte vil data nemlig ikke være tilfældige).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester