Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / html / python / lib / node182.html
CommitLineData
920dae64
AT
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3<head>
4<link rel="STYLESHEET" href="lib.css" type='text/css' />
5<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
6<link rel='start' href='../index.html' title='Python Documentation Index' />
7<link rel="first" href="lib.html" title='Python Library Reference' />
8<link rel='contents' href='contents.html' title="Contents" />
9<link rel='index' href='genindex.html' title='Index' />
10<link rel='last' href='about.html' title='About this document...' />
11<link rel='help' href='about.html' title='About this document...' />
12<link rel="next" href="node183.html" />
13<link rel="prev" href="decimal-notes.html" />
14<link rel="parent" href="decimal-notes.html" />
15<link rel="next" href="node183.html" />
16<meta name='aesop' content='information' />
17<title>5.6.5.1 Mitigating round-off error with increased precision</title>
18</head>
19<body>
20<DIV CLASS="navigation">
21<div id='top-navigation-panel' xml:id='top-navigation-panel'>
22<table align="center" width="100%" cellpadding="0" cellspacing="2">
23<tr>
24<td class='online-navigation'><a rel="prev" title="5.6.5 Floating Point Notes"
25 href="decimal-notes.html"><img src='../icons/previous.png'
26 border='0' height='32' alt='Previous Page' width='32' /></A></td>
27<td class='online-navigation'><a rel="parent" title="5.6.5 Floating Point Notes"
28 href="decimal-notes.html"><img src='../icons/up.png'
29 border='0' height='32' alt='Up One Level' width='32' /></A></td>
30<td class='online-navigation'><a rel="next" title="5.6.5.2 Special values"
31 href="node183.html"><img src='../icons/next.png'
32 border='0' height='32' alt='Next Page' width='32' /></A></td>
33<td align="center" width="100%">Python Library Reference</td>
34<td class='online-navigation'><a rel="contents" title="Table of Contents"
35 href="contents.html"><img src='../icons/contents.png'
36 border='0' height='32' alt='Contents' width='32' /></A></td>
37<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
38 border='0' height='32' alt='Module Index' width='32' /></a></td>
39<td class='online-navigation'><a rel="index" title="Index"
40 href="genindex.html"><img src='../icons/index.png'
41 border='0' height='32' alt='Index' width='32' /></A></td>
42</tr></table>
43<div class='online-navigation'>
44<b class="navlabel">Previous:</b>
45<a class="sectref" rel="prev" href="decimal-notes.html">5.6.5 Floating Point Notes</A>
46<b class="navlabel">Up:</b>
47<a class="sectref" rel="parent" href="decimal-notes.html">5.6.5 Floating Point Notes</A>
48<b class="navlabel">Next:</b>
49<a class="sectref" rel="next" href="node183.html">5.6.5.2 Special values</A>
50</div>
51<hr /></div>
52</DIV>
53<!--End of Navigation Panel-->
54
55<H3><A NAME="SECTION007651000000000000000">
565.6.5.1 Mitigating round-off error with increased precision</A>
57</H3>
58
59<P>
60The use of decimal floating point eliminates decimal representation error
61(making it possible to represent <tt class="constant">0.1</tt> exactly); however, some
62operations can still incur round-off error when non-zero digits exceed the
63fixed precision.
64
65<P>
66The effects of round-off error can be amplified by the addition or subtraction
67of nearly offsetting quantities resulting in loss of significance. Knuth
68provides two instructive examples where rounded floating point arithmetic with
69insufficient precision causes the breakdown of the associative and
70distributive properties of addition:
71
72<P>
73<div class="verbatim"><pre>
74# Examples from Seminumerical Algorithms, Section 4.2.2.
75&gt;&gt;&gt; from decimal import *
76&gt;&gt;&gt; getcontext().prec = 8
77
78&gt;&gt;&gt; u, v, w = Decimal(11111113), Decimal(-11111111), Decimal('7.51111111')
79&gt;&gt;&gt; (u + v) + w
80Decimal("9.5111111")
81&gt;&gt;&gt; u + (v + w)
82Decimal("10")
83
84&gt;&gt;&gt; u, v, w = Decimal(20000), Decimal(-6), Decimal('6.0000003')
85&gt;&gt;&gt; (u*v) + (u*w)
86Decimal("0.01")
87&gt;&gt;&gt; u * (v+w)
88Decimal("0.0060000")
89</pre></div>
90
91<P>
92The <tt class="module">decimal</tt> module makes it possible to restore the identities
93by expanding the precision sufficiently to avoid loss of significance:
94
95<P>
96<div class="verbatim"><pre>
97&gt;&gt;&gt; getcontext().prec = 20
98&gt;&gt;&gt; u, v, w = Decimal(11111113), Decimal(-11111111), Decimal('7.51111111')
99&gt;&gt;&gt; (u + v) + w
100Decimal("9.51111111")
101&gt;&gt;&gt; u + (v + w)
102Decimal("9.51111111")
103&gt;&gt;&gt;
104&gt;&gt;&gt; u, v, w = Decimal(20000), Decimal(-6), Decimal('6.0000003')
105&gt;&gt;&gt; (u*v) + (u*w)
106Decimal("0.0060000")
107&gt;&gt;&gt; u * (v+w)
108Decimal("0.0060000")
109</pre></div>
110
111<P>
112
113<DIV CLASS="navigation">
114<div class='online-navigation'>
115<p></p><hr />
116<table align="center" width="100%" cellpadding="0" cellspacing="2">
117<tr>
118<td class='online-navigation'><a rel="prev" title="5.6.5 Floating Point Notes"
119 href="decimal-notes.html"><img src='../icons/previous.png'
120 border='0' height='32' alt='Previous Page' width='32' /></A></td>
121<td class='online-navigation'><a rel="parent" title="5.6.5 Floating Point Notes"
122 href="decimal-notes.html"><img src='../icons/up.png'
123 border='0' height='32' alt='Up One Level' width='32' /></A></td>
124<td class='online-navigation'><a rel="next" title="5.6.5.2 Special values"
125 href="node183.html"><img src='../icons/next.png'
126 border='0' height='32' alt='Next Page' width='32' /></A></td>
127<td align="center" width="100%">Python Library Reference</td>
128<td class='online-navigation'><a rel="contents" title="Table of Contents"
129 href="contents.html"><img src='../icons/contents.png'
130 border='0' height='32' alt='Contents' width='32' /></A></td>
131<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
132 border='0' height='32' alt='Module Index' width='32' /></a></td>
133<td class='online-navigation'><a rel="index" title="Index"
134 href="genindex.html"><img src='../icons/index.png'
135 border='0' height='32' alt='Index' width='32' /></A></td>
136</tr></table>
137<div class='online-navigation'>
138<b class="navlabel">Previous:</b>
139<a class="sectref" rel="prev" href="decimal-notes.html">5.6.5 Floating Point Notes</A>
140<b class="navlabel">Up:</b>
141<a class="sectref" rel="parent" href="decimal-notes.html">5.6.5 Floating Point Notes</A>
142<b class="navlabel">Next:</b>
143<a class="sectref" rel="next" href="node183.html">5.6.5.2 Special values</A>
144</div>
145</div>
146<hr />
147<span class="release-info">Release 2.4.2, documentation updated on 28 September 2005.</span>
148</DIV>
149<!--End of Navigation Panel-->
150<ADDRESS>
151See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
152</ADDRESS>
153</BODY>
154</HTML>