next up previous contents
Next: Απώλεια σημαντικών ψηφίων Up: Αριθμητική Υπολογιστή Previous: Εξαιρετικές Τιμές   Contents

Αριθμητική Κινητής Υποδιαστολής

Κατά την πρόσθεση ή την αφαίρεση δύο αριθμών κινητής υποδιαστολής, οι εκθέτες τους πρέπει να εξισωθούν πριν προστεθούν ή αφαιρεθούν τα σημαντικά τους τμήματα. Αν αρχικά δεν είναι ίσοι, τότε το σημαντικό τμήμα ενός από αυτούς πρέπει να μετατραπεί έως ότου να εξισωθούν οι εκθέτες. Εκτελούμενης μιας τέτοιας μετατροπής, κάποια από τα τελευταία ψηφία του μικρότερου (σε μέγεθος) αριθμού θα αποκοπούν από το τέλος του σημαντικού τμήματος και γι αυτό το ορθό αποτέλεσμα της αριθμητικής πράξης δεν μπορεί να αναπαρασταθεί ακριβώς στο σύστημα αριθμών κινητής υποδιαστολής. Εάν η διαφορά τών μεγεθών των αριθμών είναι πάρα πολύ μεγάλη, τότε ολόκληρο το σημαντικό τμήμα του μικρότερου σε μέγεθος αριθμού μπορεί να βρεθεί τελείως έξω από το εύρος του σημαντικού πεδίου έτσι ώστε το αποτέλεσμα της πράξης θα είναι απλά ο μεγαλύτερος σε μέγεθος από τους δύο αριθμούς. Ενας άλλος τρόπος να διατυπωθεί αυτό είναι ότι εάν το πραγματικό άθροισμα δύο 49#49-ψήφιων αριθμών περιέχει περισσότερα από 49#49 ψηφία, τότε τα επί πλέον ψηφία θα χαθούν όταν το αποτέλεσμα θα στρογγυλευτεί σε 49#49 ψηφία, και στην χειρότερη περίπτωση ο αριθμός με το μικρότερο μέγεθος ενδέχεται να χαθεί τελείως. Ο πολλαπλασιασμός δύο αριθμών κινητής υποδιαστολής δεν απαιτεί οι δύο αριθμοί να έχουν ίδιους εκθέτες - οι εκθέτες απλά προστίθενται και τα σημαντικά τμήματα πολλαπλασιάζονται. Ομως το γινόμενο δύο 49#49-ψήφιων αριθμών περιέχει γενικά ως 165#165 ψηφία, και έτσι για άλλη μια φορά το αποτέλεσμα δεν μπορεί να παρασταθεί ορθά στο σύστημα αριθμών κινητής υποδιαστολής και άρα πρέπει να στρογγυλευτεί.

27#27

Παράδειγμα 1.7   Αριθμητική κινητής υποδιαστολής. Θεωρούμε ένα σύστημα αριθμών κινητής υποδιαστολής με 100#100 και 166#166. Αν 167#167 και 168#168, τότε η πρόσθεσή τους δίνει το αποτέλεσμα 169#169, εφαρμόζοντας στρογγύλευση στον πλησιέστερο. Σημειώστε ότι τα δύο τελευταία ψηφία του 170#170 δεν έχουν επίδραση στο αποτέλεσμα. Με έναν ακόμη μικρότερο εκθέτη, ο 170#170 θα μπορούσε να μην έχει διόλου επίδραση στο αποτέλεσμα. Παρόμοια, ο πολλαπλασιασμός των δύο δοθέντων αριθμών κινητής υποδιαστολής δίνει το αποτέλεσμα 171#171, το οποίο διατηρεί μόνο τα μισά ψηφία του ακριβούς αποτελέσματος.


27#27

Η διαίρεση δύο αριθμών κινητής υποδιαστολής ενδέχεται επίσης να δώσει αποτέλεσμα το οποίο να μην μπορεί να παρασταθεί ακριβώς. Για παράδειγμα, οι αριθμοί 39#39 και 43#43 αναπαρίστανται ακριβώς ως δυαδικοί αριθμοί κινητής υποδιαστολής, αλλά το πηλίκο τους, 172#172, έχει ένα ατέρμον δυαδικό ανάπτυγμα και για το λόγο αυτό δεν μπορεί να χαρακτηριστεί ως δυαδικός αριθμός κινητής υποδιαστολής. Σε κάθε μία από τις περιπτώσεις που παρατέθηκαν, το αποτέλεσμα μιας πράξης με αριθμούς κινητής υποδιαστολής μπορεί να διαφέρει από το αποτέλεσμα που θα παίρναμε από την αντίστοιχη πράξη εάν την εκτελούσαμε με τους ίδιους όρους στο σύνολο των πραγματικών αριθμών επειδή υπάρχει ανεπαρκής ακρίβεια για την αναπαράσταση του ορθού αποτελέσματός της. Ενδέχεται επίσης το πραγματικό αποτέλεσμα να μην μπορεί να αναπαρασταθεί επειδή το πλήθος των ψηφίων του εκθέτη του είναι πέρα από το διαθέσιμο εύρος του πεδίου του στο σύστημα αριθμών κινητής υποδιαστολής (υπερχείλιση ή υποεκχείλιση). Η υπερχείλιση είναι συνήθως σοβαρότερο πρόβλημα από την υποεκχείλιση υπό την έννοια ότι δεν υπάρχει καμία καλή προσέγγιση σε ένα σύστημα αριθμών κινητής υποδιαστολής για οποιουσδήποτε μεγάλους αριθμούς ενώ το μηδέν είναι συχνά μία λογική προσέγγιση για οποιουσδήποτε μικρούς αριθμούς. Για το λόγο αυτό, σε πολλά υπολογιστικά συστήματα το να συμβεί υπερχείλιση περατώνει πρόωρα το πρόγραμμα με συνέπεια μοιραίου σφάλματος ενώ η υποεκχείλιση μπορεί σιωπηρά να παίρνει την τιμή μηδέν χωρίς να διαταράσσει την εκτέλεση.

27#27

Παράδειγμα 1.8   Πρόσθεση των όρων σειράς. Σαν ένα παράδειγμα των παραπάνω θεμάτων, η σειρά

173#173

έχει ένα πεπερασμένο άθροισμα στην αριθμητική κινητής υποδιαστολής αν και η πραγματική σειρά αποκλίνει. Με μια πρώτη ματιά κάποιος θα σκεφτόταν ότι αυτό συμβαίνει επειδή το 174#174 τελικά θα παρουσιάσει υποεκχείλιση ή τα μερικά αθροίσματα τελικά θα παρουσιάσουν υπερχείλιση, κάτι που πράγματι θα συμβεί. Αλλά πριν κάτι από αυτά συμβεί, το μερικό άθροισμα παύει να αλλάζει όταν το 174#174 καταστεί αμελητέο σε σχέση με το μερικό άθροισμα, δηλαδή, όταν 175#175, και επομένως το άθροισμα είναι πεπερασμένο (δείτε Πρόβλημα σε Υπολογιστή 1.8).


27#27

Οπως έχουμε επισημάνει, μια πράξη στο σύνολο των πραγματικών αριθμών με δύο αριθμούς κινητής υποδιαστολής δεν καταλήγει απαραίτητα σε έναν άλλο αριθμό κινητής υποδιαστολής. Αν ένας αριθμός που δεν παριστάνεται ακριβώς σαν αριθμός κινητής υποδιαστολής εισαχθεί στον υπολογιστή ή παραχθεί από μία επακολουθούσα αριθμητική πράξη, τότε πρέπει να στρογγυλευτεί (χρησιμοποιώντας έναν από τους κανόνες στρογγύλευσης που προαναφέρθηκαν) για να παραχθεί ένας αριθμός κινητής υποδιαστολής. Επειδή οι αριθμοί κινητής υποδιαστολής δεν είναι ομοιόμορφα κατανεμημένοι, το απόλυτο σφάλμα που γίνεται σε μια τέτοια προσέγγιση δεν είναι ομοιόμορφο αλλά το σχετικό σφάλμα φράσσεται από τη μονάδα στρογύλευσης 139#139. Ιδανικά, 176#176(δηλαδή, αριθμητικές πράξεις κινητής υποδιαστολής παράγουν σωστά στρογγυλευμένα αποτελέσματα) και πολλοί υπολογιστές, όπως αυτοί που ικανοποιούν τα πρότυπα κινητής υποδιαστολής 135#135, επιτυγχάνουν το ιδανικό εφόσον το 177#177 βρίσκεται μέσα στο πεδίο του συστήματος αριθμών κινητής υποδιαστολής. Παρ' όλα αυτά, κάποιοι γνωστοί νόμοι της αριθμητικής των πραγματικών αριθμών δεν ισχύουν απαραίτητα σε ένα σύστημα αριθμών κινητής υποδιαστολής. Πιο συγκεκριμένα, η πρόσθεση και ο πολλαπλασιασμός αριθμών κινητής υποδιαστολής είναι πράξεις αντιμεταθετικές αλλά όχι προσεταιριστικες. Για παράδειγμα, αν 143#143 είναι ένας αριθμός κινητής υποδιαστολής ελάχιστα μικρότερος από τη μονάδα στρογγύλευσης 139#139, τότε 178#178 αλλά 179#179. Η αδυναμία της αριθμητικής κινητής υποδιαστολής για ικανοποίηση των συνήθων νόμων της αριθμητικής πραγματικών αριθμών είναι ένας λόγος για τον οποίο η προς τα μπρος ανάλυση σφαλμάτων μπορεί να παρουσιάζει δυσκολίες. Ενα πλεονέκτημα της προς τα πίσω ανάλυση σφαλμάτων είναι το ότι επιτρέπει τη χρήση αριθμητικής πραγματικών αριθμών στην ανάλυση.

Manolis Vavalis 2000-03-24