SlideShare a Scribd company logo
1 of 20
Download to read offline
Computers can’t compute
Μια εισαγωγή στο
IEEE 754
Τσαγκατάκης Γιάννης
Msc in Informatics & MultimediaMsc in Informatics & Multimedia
Department of Informatics Engineering TEI of Crete
2
Τι θα κάνει ο παρακάτω κώδικας;
3
Γιατί;
fsum: 1.0000001192092895508
fprod: 1
dprod: 1
Intel(R) Core(TM) i5-4300U CPU
Γιατί;
fsum: 1.0000001192092895508
fprod: 1
dprod: 1.0000000149011611938
XilinX fpga
Γιατί;Γιατί;
No constexpr
optimizations
4
Γιατί;Γιατί;Γιατί;Γιατί;
224
!!! ERROR on iteration 16777217 !!!
5
Πέραν των ακεραίων
C/Java
Τι τύπο θα χρησιμοποιήσεις
για την τιμή ενός προϊόντος;
6
Πέραν των ακεραίων
● Αριθμοί σταθερής υποδιαστολής
● Rational Arithmetic
● Binary-coded decimal (BCD)
● Logarithmic number Systems (LMS)
● Bignum (arbitrary precision)
● Computer algebra systems
● Αριθμοί κινητής υποδιαστολής
DSP
ΙΕΕΕ 754
22/7
7
IEEE 754
IEEE 754
Floating Point
Standard
8
IEEE 754 Floating Point
9
Biased Exponent Representation
● Τιμή εκθέτη val(E) = E – Bias
● Για 8 bit
– Τιμές από 0 ... 255
– E =0 ή Ε=255 * ειδικές τιμές
– E =0 ... 254 * κανονική αναπαράσταση
● Bias = 127, val = E-127
– val(E=1) = -126
– val(E=127) = 0
– val(E=254) = +127
10
Παράδειγμα
https://www.slideshare.net/prochwani95/06-floating-point
11
Special Patterns
12
Ακρίβεια κωδικοποίησης
Η ακρίβεια είναι στο πλήθος των
στοιχείων (όχι στα δεκαδικά)
– 32 bit : 7-8 δεκαδικά σύμβολα
– 64 bit : 15-16 δεκαδικά σύμβολα
13
Προβλήματα
● Προβλήματα αναπαράστασης
● Λάθη μετατροπής
● Λάθη στρογγυλοποίησης
● Σταδιακή απώλεια ακρίβειας
https://en.wikipedia.org/wiki/Loss_of_significance
● Συγκρίσεις (machine epsilon)
#define FLT_EPSILON 1.19209290e-7F
#define DBL_EPSILON 2.2204460492503131e-16
● Overflow, underflow
14
Προβλήματα
● Δεν ισχύει η αντιμεταθετικότητα
a*(b*c) ≠ (a*b)*c
● Δεν ισχύει η προσεταιριστικότητα
a*(b+c) ≠ a*b+a*c
15
Intel x86 και ΙΕΕΕ 754
● Internal 80bit format x87
● Διαφορετική σειρά εντολών,
διαφορετικά αποτελέσματα
● Extended precision
● C99/C11 long double (gcc, clang)
● Speed over accuracy
Not Valid IEEE 754
● SSE2 instrcuction set
– Valid 754
– Ίδιο πρόγραμμα, ίδια CPU, άλλο αποτέλεσμα
– Ακόμα και για τον ίδιο compiler
● Παλιές GPU δεν έχουν subnormals
16
Πρακτικά θέματα
● Ποτέ δεν ελέγχουμε για ισότητα
fabs(a - b) <= FLT_EPSILON
fabs(a - b) <= epsilon * max(fabs(a), fabs(b))
● Προσοχή στις προσθέσεις αφαιρέσεις
– Αν ο ένας αριθμός είναι μικρός και ο άλλος μεγάλος
● Μαθαίνουμε την τυπική βιβλιοθήκη
● Προσοχή στα NaN, Inf
● Ψάχνουμε για τον σωστό αλγόριθμο
– Συμβουλευόμαστε ένα ειδικευμένο μαθηματικό
– Χρησιμοποιούμε καλές μαθηματικές βιβλιοθήκες
17
Καταστροφή
● Ariane 5 (1996)
– uint_64t →int16_t
– $500 million
● Patriot Missile Failure (1991)
– Dont use floats for time
– 28 νεκροί Αμερικάνοι στρατιώτες
● The sinking of the
Sleipner (1991)
$700 million
F.E.M. σφάλμα 35%
18
Δημιουργία
Doom: Fast Inverse Square Root
https://en.wikipedia.org/wiki/Fast_inverse_square_root
John Carmack
19
Για περισσότερα
● https://en.wikipedia.org/wiki/Floating-
point_arithmetic
● Floating-Point Design with Vivado HLS
● What Every Computer Scientist Should
Know About Floating-Point Arithmetic
https://docs.oracle.com/cd/E19957-01
/806-3568/ncg_goldberg.html
● http://docs.nvidia.com/cuda/floating-p
oint/index.html
20
Ερωτήσεις

More Related Content

Similar to IEEE 754 Floating point

ΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥ
ΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥ
ΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥlampriss
 
20111004 prodiagrafes pc_dynato
20111004 prodiagrafes pc_dynato20111004 prodiagrafes pc_dynato
20111004 prodiagrafes pc_dynatoitdevdamt
 
Τεχνολογικά Νέα - Τεύχος 6
Τεχνολογικά Νέα - Τεύχος 6Τεχνολογικά Νέα - Τεύχος 6
Τεχνολογικά Νέα - Τεύχος 6ΙΕΚ ΔΕΛΤΑ
 
Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointersjtsagata
 
C_01122023.pdf
C_01122023.pdfC_01122023.pdf
C_01122023.pdfargideli1
 
C_24112023.pdf
C_24112023.pdfC_24112023.pdf
C_24112023.pdfargideli1
 
Σύντομη εισαγωγή στην τεχνολογία GPU και την CUDA
Σύντομη εισαγωγή στην τεχνολογία GPU και την CUDAΣύντομη εισαγωγή στην τεχνολογία GPU και την CUDA
Σύντομη εισαγωγή στην τεχνολογία GPU και την CUDAKostas Diamantaras
 
C2 2 microprocessor-cpu
C2 2 microprocessor-cpuC2 2 microprocessor-cpu
C2 2 microprocessor-cpupapettas
 
them_psif_syst_epal_230615 (1).pdf
them_psif_syst_epal_230615 (1).pdfthem_psif_syst_epal_230615 (1).pdf
them_psif_syst_epal_230615 (1).pdfAnastasiaVasilikiGol
 
C_27102023.pdf
C_27102023.pdfC_27102023.pdf
C_27102023.pdfargideli1
 
Εργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές Arduino
Εργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές ArduinoΕργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές Arduino
Εργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές ArduinoIraklis Markelis
 
νέο παρουσίαση του Microsoft power point
νέο παρουσίαση του Microsoft power pointνέο παρουσίαση του Microsoft power point
νέο παρουσίαση του Microsoft power pointtsili_11
 
PLC_ EISAGOGH_sae04eisagvgh_plc.pdf
PLC_ EISAGOGH_sae04eisagvgh_plc.pdfPLC_ EISAGOGH_sae04eisagvgh_plc.pdf
PLC_ EISAGOGH_sae04eisagvgh_plc.pdfMitsakisMitsaras
 
συνθεση ηλεκτρονικου υπολογιστη
συνθεση  ηλεκτρονικου υπολογιστησυνθεση  ηλεκτρονικου υπολογιστη
συνθεση ηλεκτρονικου υπολογιστηsofiaefre
 
Angelos kaltsikis
Angelos kaltsikisAngelos kaltsikis
Angelos kaltsikisISSEL
 

Similar to IEEE 754 Floating point (20)

ΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥ
ΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥ
ΣΥΝΘΕΣΗ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΟΥ
 
20111004 prodiagrafes pc_dynato
20111004 prodiagrafes pc_dynato20111004 prodiagrafes pc_dynato
20111004 prodiagrafes pc_dynato
 
ρομποτικη με Arduino
ρομποτικη με Arduinoρομποτικη με Arduino
ρομποτικη με Arduino
 
Τεχνολογικά Νέα - Τεύχος 6
Τεχνολογικά Νέα - Τεύχος 6Τεχνολογικά Νέα - Τεύχος 6
Τεχνολογικά Νέα - Τεύχος 6
 
Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointers
 
C_01122023.pdf
C_01122023.pdfC_01122023.pdf
C_01122023.pdf
 
C_24112023.pdf
C_24112023.pdfC_24112023.pdf
C_24112023.pdf
 
Σύντομη εισαγωγή στην τεχνολογία GPU και την CUDA
Σύντομη εισαγωγή στην τεχνολογία GPU και την CUDAΣύντομη εισαγωγή στην τεχνολογία GPU και την CUDA
Σύντομη εισαγωγή στην τεχνολογία GPU και την CUDA
 
C2 2 microprocessor-cpu
C2 2 microprocessor-cpuC2 2 microprocessor-cpu
C2 2 microprocessor-cpu
 
Overclocking
OverclockingOverclocking
Overclocking
 
them_psif_syst_epal_230615 (1).pdf
them_psif_syst_epal_230615 (1).pdfthem_psif_syst_epal_230615 (1).pdf
them_psif_syst_epal_230615 (1).pdf
 
PRJ3A
PRJ3APRJ3A
PRJ3A
 
Syskeues epeksergastwn
Syskeues epeksergastwnSyskeues epeksergastwn
Syskeues epeksergastwn
 
C_27102023.pdf
C_27102023.pdfC_27102023.pdf
C_27102023.pdf
 
Εργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές Arduino
Εργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές ArduinoΕργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές Arduino
Εργαστήριο STEM - Αυτοματισμοί κυκλωμάτων και μικροελεγκτές Arduino
 
νέο παρουσίαση του Microsoft power point
νέο παρουσίαση του Microsoft power pointνέο παρουσίαση του Microsoft power point
νέο παρουσίαση του Microsoft power point
 
PLC_ EISAGOGH_sae04eisagvgh_plc.pdf
PLC_ EISAGOGH_sae04eisagvgh_plc.pdfPLC_ EISAGOGH_sae04eisagvgh_plc.pdf
PLC_ EISAGOGH_sae04eisagvgh_plc.pdf
 
Labnotes 2922
Labnotes 2922Labnotes 2922
Labnotes 2922
 
συνθεση ηλεκτρονικου υπολογιστη
συνθεση  ηλεκτρονικου υπολογιστησυνθεση  ηλεκτρονικου υπολογιστη
συνθεση ηλεκτρονικου υπολογιστη
 
Angelos kaltsikis
Angelos kaltsikisAngelos kaltsikis
Angelos kaltsikis
 

More from jtsagata

GPGPU Computation
GPGPU ComputationGPGPU Computation
GPGPU Computationjtsagata
 
Eισαγωγή στο TDD
Eισαγωγή στο TDDEισαγωγή στο TDD
Eισαγωγή στο TDDjtsagata
 
Παιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και ΔείκτεςΠαιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και Δείκτεςjtsagata
 
Linux and C
Linux and CLinux and C
Linux and Cjtsagata
 
Greek utf8
Greek utf8Greek utf8
Greek utf8jtsagata
 
Function pointers in C
Function pointers in CFunction pointers in C
Function pointers in Cjtsagata
 
Τι είναι υπολογισμός
Τι είναι υπολογισμόςΤι είναι υπολογισμός
Τι είναι υπολογισμόςjtsagata
 
Η Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeXΗ Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeXjtsagata
 
Unikernels
UnikernelsUnikernels
Unikernelsjtsagata
 
FPGA on the Cloud
FPGA on the Cloud FPGA on the Cloud
FPGA on the Cloud jtsagata
 
Evolutionary keyboard Layout
Evolutionary keyboard LayoutEvolutionary keyboard Layout
Evolutionary keyboard Layoutjtsagata
 
Το εργαλείο
Το εργαλείοΤο εργαλείο
Το εργαλείοjtsagata
 

More from jtsagata (15)

C locales
C localesC locales
C locales
 
GPGPU Computation
GPGPU ComputationGPGPU Computation
GPGPU Computation
 
Eισαγωγή στο TDD
Eισαγωγή στο TDDEισαγωγή στο TDD
Eισαγωγή στο TDD
 
Παιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και ΔείκτεςΠαιγνίδια με Πίνακες και Δείκτες
Παιγνίδια με Πίνακες και Δείκτες
 
Linux and C
Linux and CLinux and C
Linux and C
 
Git intro
Git introGit intro
Git intro
 
Greek utf8
Greek utf8Greek utf8
Greek utf8
 
Function pointers in C
Function pointers in CFunction pointers in C
Function pointers in C
 
Τι είναι υπολογισμός
Τι είναι υπολογισμόςΤι είναι υπολογισμός
Τι είναι υπολογισμός
 
Η Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeXΗ Τέχνη του TeX/LaTeX
Η Τέχνη του TeX/LaTeX
 
Unikernels
UnikernelsUnikernels
Unikernels
 
FPGA on the Cloud
FPGA on the Cloud FPGA on the Cloud
FPGA on the Cloud
 
Evolutionary keyboard Layout
Evolutionary keyboard LayoutEvolutionary keyboard Layout
Evolutionary keyboard Layout
 
Omilia
OmiliaOmilia
Omilia
 
Το εργαλείο
Το εργαλείοΤο εργαλείο
Το εργαλείο
 

IEEE 754 Floating point