Floating Point. Jak je reprezentovaný a proč někdy nefunguje. 2. června 2013

Podobné dokumenty
Čísla v plovoucířádovéčárce. INP 2008 FIT VUT v Brně

Základní principy zobrazení čísla Celá čísla s pevnou řádovou čárkou Zobrazení reálných čísel Aritmetika s binárními čísly

UMÍ POČÍTAČE POČÍTAT?

Architektury počítačů

Struktura a architektura počítačů (BI-SAP) 6

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

1. Chyby vstupních dat metody převedení úlohy na numerickou (řád použité metody) zaokrouhlovací reprezentace čísel v počítači

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

C2115 Praktický úvod do superpočítání

Principy počítačů I Reprezentace dat

Pohyblivářádováčárka

REPREZENTACE DAT. Principy počítačů I. Literatura. Literály. Typy dat. Literály. Čísla Instrukce. Znaky. Logické hodnoty

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

v aritmetické jednotce počíta

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

PJC Cvičení #2. Číselné soustavy a binární reprezentace proměnných

Datové typy a jejich reprezentace v počítači.

Aplikovaná numerická matematika

Principy počítačů a operačních systémů

Algoritmy a datové struktury

Pokročilá algoritmizace amortizovaná složitost, Fibonacciho halda, počítačová aritmetika

E. Pohyblivářádováčárka

Úloha 1 Spojte binární obrazy na obrázku s hodnotami, které reprezentují.

Y36SAP - aritmetika. Osnova

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

UNIVERZITA PARDUBICE. Fakulta elektrotechniky a informatiky. Vybrané problémy výpočtů na PC s pohyblivou řádovou čárkou Nomindalai Naranbaatar

Racionální čísla, operátory, výrazy, knihovní funkce

Algoritmizace a programování

Číselné soustavy v mikroprocesorové technice Mikroprocesorová technika a embedded systémy

Čísla a číselné soustavy.

Algoritmy I. Číselné soustavy přečíst!!! ALGI 2018/19

Racionální čísla, operátory, výrazy, knihovní funkce

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Pokroky matematiky, fyziky a astronomie

Exponent. Integer 4 bajty až Double Integer 8 bajtů až

Variace. Mocniny a odmocniny

Úvod do problematiky numerických metod. Numerické metody. Ústav matematiky. 6. února 2006

Struktura a architektura počítačů

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

Elementární datové typy

Struktura a architektura počítačů (BI-SAP) 5

Jemný úvod do numerických metod

Principy cpypočítačůčů a operačních systémů

Informatika Datové formáty

Úvod do programování 7. hodina

Základy algoritmizace 2. Proměnné, datové typy

KTE / PPEL Počítačová podpora v elektrotechnice

Struktura a architektura počítačů

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Model je umělý objekt, který reflektuje a reprodukuje základní vlastnosti, vztahy (strukturu) a funkce konkrétního objektu nebo

Fz =a z + a z +...+a z +a z =

NPRG030 Programování I, 2018/19 1 / :25:37

Teoretická informatika Tomáš Foltýnek Algebra Struktury s jednou operací

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Čísla, reprezentace, zjednodušené výpočty

Algoritmizace a programování

Y36SAP. Osnova. Číselné soustavy a kódy, převody, aritmetické operace Y36SAP Poziční číselné soustavy a převody.

Číselné soustavy. Binární číselná soustava

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

Mikroprocesorová technika (BMPT)

Tematický plán pro školní rok 2015/16 Předmět: Matematika Vyučující: Mgr. Marta Klimecká Týdenní dotace hodin: 5 hodin Ročník: třetí

35POS 2010 Počítačové systémy 1 Úvod, jazyk C Doc. Ing. Bayer Jiří, Csc. Ing. Pavel Píša

Počítání s neúplnými čísly 1

2. LMP SP 3. LMP SP + 2. LMP NSP. operace. Závislosti, vztahy a práce s daty. Závislosti, vztahy a práce s daty. v prostoru

Aritmetické operácie v rôznych číselných sústavách. Ľudmila MACEKOVÁ, KEMT-FEI-TUKE, sep. 2017

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

Seminář z IVT Proměnné a operátory. Slovanské gymnázium Olomouc 11. září 2014 Tomáš Kühr

Tato tematika je zpracována v Záznamy přednášek: str materiál: PrikladyZobrazeniCisel.pdf

Paměť počítače. alg2 1

Část 1 Organizace předmětu. Základní pojmy. Část 2 Programování a výpočty. Část 3 Programovací jazyk Java

Aritmetické operace a obvody pro jejich realizaci

Systém je citlivý na velikost písmen CASE SENSITIVE rozeznává malá velká písmena, např. PROM=1; PROm=1; PRom=1; Prom=1; prom=1; - 5 různých proměnných

Úvod do numerické matematiky

3 Jednoduché datové typy Interpretace čísel v paměti počítače Problémy s matematickými operacemi 5

Datové typy pro reálná čísla

PB002 Základy informačních technologií

1. Základní pojmy a číselné soustavy

Jan Nekvapil ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE Fakulta elektrotechnická

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

1. 1 P Ř I R O Z E N Á Č Í S L A

Dělení. MI-AAK(Aritmetika a kódy)

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Datové typy pro reálná čísla

Operátory. Základy programování 1 Tomáš Kühr

Čísla v počítači Výpočetní technika I

Aritmetika s didaktikou I.

Přednáška 2: Čísla v počítači. Práce s počítačem. Číselné soustavy. Převody mezi soustavami. Aritmetické operace. Uložení čísel v paměti počítače

Úvod do informačních technologií

ZÁKLADNÍ ŠKOLA PŘI DĚTSKÉ LÉČEBNĚ Ostrov u Macochy, Školní 363 INOVACE VÝUKY CZ.1.07/1.4.00/

Čísla, reprezentace, zjednodušené výpočty

LEKCE 6. Operátory. V této lekci najdete:

2. Mocniny 2.1 Mocniny a odmocniny

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

ZŠ ÚnO, Bratří Čapků 1332

Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů

Struktury a uniony, přesnost výpočtů a vnitřní reprezentace číselných typů

a jeho hodnotu pro x = 2 a jeho hodnotu pro x = 2 3 x. a jeho hodnotu pro x = 2 a jeho hodnotu pro x = 6; x = = 1 7 a jeho hodnotu pro x = 2

F6180 Úvod do nelineární dynamiky. F6150 Pokročilé numerické metody FX003 Plánování a vyhodnocování experimentu. F7780 Nelineární vlny a solitony

Část 1 Struktury a uniony Struktury struct Proměnné se sdílenou pamětí union Příklad

Transkript:

Floating Point Jak je reprezentovaný a proč někdy nefunguje Augustin Žídek augus tin< at>zidek< dot> eu 2. června 2013

Historie Leonardo Torres y Quevedo 1914 Analytical Engine s floating point

Historie Leonardo Torres y Quevedo 1914 Analytical Engine s floating point Floating point vs fixed point (von Neumann)

Historie Leonardo Torres y Quevedo 1914 Analytical Engine s floating point Floating point vs fixed point (von Neumann) Různé implementace až do 1985 IEEE 754-1985

Post IEEE-754 Raketa Ariane 5 (1996), 10 let vývoje, 7 miliard dolarů

Post IEEE-754 Raketa Ariane 5 (1996), 10 let vývoje, 7 miliard dolarů Konvertovali 64-bitový float na 16-bitový int Neočekávaný overflow

Post IEEE-754 Raketa Ariane 5 (1996), 10 let vývoje, 7 miliard dolarů Konvertovali 64-bitový float na 16-bitový int Neočekávaný overflow Burza ve Vancouveru (1983)

Post IEEE-754 Raketa Ariane 5 (1996), 10 let vývoje, 7 miliard dolarů Konvertovali 64-bitový float na 16-bitový int Neočekávaný overflow Burza ve Vancouveru (1983) Index podhodnocený o 44 % Zaokrouhlovací chyba se sbírala 22 měsíců

Post IEEE-754 Raketa Ariane 5 (1996), 10 let vývoje, 7 miliard dolarů Konvertovali 64-bitový float na 16-bitový int Neočekávaný overflow Burza ve Vancouveru (1983) Index podhodnocený o 44 % Zaokrouhlovací chyba se sbírala 22 měsíců Střely Patriot (1991)

Post IEEE-754 Raketa Ariane 5 (1996), 10 let vývoje, 7 miliard dolarů Konvertovali 64-bitový float na 16-bitový int Neočekávaný overflow Burza ve Vancouveru (1983) Index podhodnocený o 44 % Zaokrouhlovací chyba se sbírala 22 měsíců Střely Patriot (1991) 28 mrtvých, nepřesnost 1/20 s kvůli 24-bitovým float

Post IEEE-754

Reprezentace vědecká notace 4.2 10 8 4.2 mantisa 8 exponent

Reprezentace floatu +1.11001 2 2 1011 (= 3648)

Reprezentace floatu +1.11001 2 2 1011 (= 3648) Float +/ Exponent Mantisa 31 30 23 22 0 32 (1+8+23) bitů

Reprezentace floatu +1.11001 2 2 1011 (= 3648) Float +/ Exponent Mantisa 31 30 23 22 0 32 (1+8+23) bitů Double +/ Exponent Mantisa 63 62 52 51 0 64 (1+11+52) bitů

Reprezentace floatu mantisa Mantisa normalizovaná: 1 mantisa < 2

Reprezentace floatu mantisa Mantisa normalizovaná: 1 mantisa < 2 Vždy 1 na začátku není třeba ukládat (hidden bit)

Reprezentace floatu mantisa Mantisa normalizovaná: 1 mantisa < 2 Vždy 1 na začátku není třeba ukládat (hidden bit) mantisa = 01000... Jaké číslo je reprezentováno?

Reprezentace floatu mantisa Mantisa normalizovaná: 1 mantisa < 2 Vždy 1 na začátku není třeba ukládat (hidden bit) mantisa = 01000... Jaké číslo je reprezentováno? 1 + 1/4 = 1.25

Reprezentace floatu exponent Exp (bin) Exp (dec) Hodnota 00000000 0 0 pokud mantisa = 0 00000001 1 2 126......... 01111111 127 2 0 10000000 128 2 1......... 11111110 254 2 127 11111111 255 inf pokud mantisa = 0, jinak NaN

Reprezentace floatu exponent Exp (bin) Exp (dec) Hodnota 00000000 0 0 pokud mantisa = 0 00000001 1 2 126......... 01111111 127 2 0 10000000 128 2 1......... 11111110 254 2 127 11111111 255 inf pokud mantisa = 0, jinak NaN double: 2 1022 2 1023

Reprezentace floatu denormalizovaná mantisa Pokud exponent = 0, stává se mantisa denormalizovaná 0 00000000 10000000 000000000 000000000 = 0.5 2 126

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0 0x4008 0000 0000 0000

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0 0x4008 0000 0000 0000 = 1.5 * 2^1

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0 0x4008 0000 0000 0000 = 1.5 * 2^1 0x7FF0 0000 0000 0000

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0 0x4008 0000 0000 0000 = 1.5 * 2^1 0x7FF0 0000 0000 0000 = +Infinity

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0 0x4008 0000 0000 0000 = 1.5 * 2^1 0x7FF0 0000 0000 0000 = +Infinity 0x7FF0 0000 000A 0000

Cvičení Double +/ Exponent Mantisa 63 62 52 51 0 0x8000 0000 0000 0000 = -0.0 0x4008 0000 0000 0000 = 1.5 * 2^1 0x7FF0 0000 0000 0000 = +Infinity 0x7FF0 0000 000A 0000 = NaN

Největší, nejmenší Největší float: 1.111...111 2 127. = 3 10 38

Největší, nejmenší Největší float: 1.111...111 2 127. = 3 10 38 Největší double: 1.111...111 2 1023. = 2 10 308

Největší, nejmenší Největší float: 1.111...111 2 127. = 3 10 38 Největší double: 1.111...111 2 1023. = 2 10 308 Nejmenší záporné analogicky

Největší, nejmenší Největší float: 1.111...111 2 127 =. 3 10 38 Největší double: 1.111...111 2 1023 =. 2 10 308 Nejmenší záporné analogicky Co nejmenší pozitivní? Pozor na denormalizované!

Největší, nejmenší Největší float: 1.111...111 2 127 =. 3 10 38 Největší double: 1.111...111 2 1023 =. 2 10 308 Nejmenší záporné analogicky Co nejmenší pozitivní? Pozor na denormalizované! Nejmenší float: 0.000...1 2 126 =. 1.4 10 45

Největší, nejmenší Největší float: 1.111...111 2 127 =. 3 10 38 Největší double: 1.111...111 2 1023 =. 2 10 308 Nejmenší záporné analogicky Co nejmenší pozitivní? Pozor na denormalizované! Nejmenší float: 0.000...1 2 126 =. 1.4 10 45 Nejmenší double: 0.000...1 2 1022 =. 5 10 324

Největší, nejmenší Největší float: 1.111...111 2 127 =. 3 10 38 Největší double: 1.111...111 2 1023 =. 2 10 308 Nejmenší záporné analogicky Co nejmenší pozitivní? Pozor na denormalizované! Nejmenší float: 0.000...1 2 126 =. 1.4 10 45 Nejmenší double: 0.000...1 2 1022 =. 5 10 324 Viz proměnné Float a Double

Machine epsilon Definice: Rozdíl mezi 1.0 a nejmenším reprezentovatelným číslem, které je větší než jedna.

Machine epsilon Definice: Rozdíl mezi 1.0 a nejmenším reprezentovatelným číslem, které je větší než jedna. Minimální rozdíl mezi čísly aby byla považována za nestejná.

Machine epsilon Definice: Rozdíl mezi 1.0 a nejmenším reprezentovatelným číslem, které je větší než jedna. Minimální rozdíl mezi čísly aby byla považována za nestejná. Float: 1.19209290E-7 Double: 2.2204460492503131E-16

Machine epsilon Definice: Rozdíl mezi 1.0 a nejmenším reprezentovatelným číslem, které je větší než jedna. Minimální rozdíl mezi čísly aby byla považována za nestejná. Float: 1.19209290E-7 Double: 2.2204460492503131E-16 Jednoduché vypočítat

Porovnávání float lze porovnávat bitově jako int Double +/ Exponent Mantisa 63 62 52 51 0

První úskalí Jak je reprezentováno 0.1?

První úskalí Jak je reprezentováno 0.1? 1 11111101110 0110011001100110011001100...

Aritmetika násobení a dělení (a 2 n ) (b 2 m ) = a b 2 n+m (a 2 n )/(b 2 m ) = a/b 2 n m + normalizace

Aritmetika sčítání a odčítání

Aritmetika sčítání a odčítání 1. Denormalizuj na větší číslo 1 2 1 + 1.9 2 3 = 0.125 2 3 + 1.9 2 3

Aritmetika sčítání a odčítání 1. Denormalizuj na větší číslo 1 2 1 + 1.9 2 3 = 0.125 2 3 + 1.9 2 3 2. Sečti/odečti 0.125 2 3 + 1.9 2 3 = 2.025 2 3

Aritmetika sčítání a odčítání 1. Denormalizuj na větší číslo 1 2 1 + 1.9 2 3 = 0.125 2 3 + 1.9 2 3 2. Sečti/odečti 0.125 2 3 + 1.9 2 3 = 2.025 2 3 3. Normalizuj 2.025 2 3 = 1.0125 2 4

Je sčítání asociativní? (1.0 + 1.0E40) - 1.0E40 = 1.0 + (1.0E40-1.0E40)

Je sčítání asociativní? (1.0 + 1.0E40) - 1.0E40 = 1.0 + (1.0E40-1.0E40) Hmm, někdy není...

Sčítání řad 1 1 + 1 2 + 1 3 + 1 4 +... + 1 n 1 n +... + 1 4 + 1 3 + 1 2 + 1 1

IEEE-754 zaokrouhlování

IEEE-754 zaokrouhlování Zaokrouhlování s preferencí sudé číslice (unbiased rounding)

IEEE-754 zaokrouhlování Zaokrouhlování s preferencí sudé číslice (unbiased rounding) 1.5. = 2.0, 2.5. = 2.0, 3.5. = 4.0

IEEE-754 zaokrouhlování Zaokrouhlování s preferencí sudé číslice (unbiased rounding) 1.5. = 2.0, 2.5. = 2.0, 3.5. = 4.0 Výhoda: Statisticky stejně často.5 zaokrouhleno nahoru a dolu

IEEE-754 zaokrouhlování Zaokrouhlování s preferencí sudé číslice (unbiased rounding) 1.5. = 2.0, 2.5. = 2.0, 3.5. = 4.0 Výhoda: Statisticky stejně často.5 zaokrouhleno nahoru a dolu Ukázky RoundingProblem a RoundingProblem2

Co s tím

Co s tím print(random()) alespoň intelektuálně upřímné

Co s tím print(random()) alespoň intelektuálně upřímné Použití knihoven (Apfloat, JScience), nástrojů (Matlab, Octave)

Co s tím print(random()) alespoň intelektuálně upřímné Použití knihoven (Apfloat, JScience), nástrojů (Matlab, Octave) V Javě BigDecimal

BigDecimal Libovolná přesnost, nástroje pro manipulaci

BigDecimal Libovolná přesnost, nástroje pro manipulaci Naprostá kontrola zaokrouhlování ideální pro finanční matematiku

BigDecimal Libovolná přesnost, nástroje pro manipulaci Naprostá kontrola zaokrouhlování ideální pro finanční matematiku docs.oracle.com/javase/7/docs/api/java/math/bigdecimal.html

Dotazy, řešení problémů? augus tin< at> zide k< dot> eu

Děkuji za pozornost