-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFloating-point-implementation.html
More file actions
136 lines (103 loc) · 5.9 KB
/
Floating-point-implementation.html
File metadata and controls
136 lines (103 loc) · 5.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<html lang="en">
<head>
<title>Floating point implementation - Using the GNU Compiler Collection (GCC)</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="Using the GNU Compiler Collection (GCC)">
<meta name="generator" content="makeinfo 4.8">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="C-Implementation.html#C-Implementation" title="C Implementation">
<link rel="prev" href="Integers-implementation.html#Integers-implementation" title="Integers implementation">
<link rel="next" href="Arrays-and-pointers-implementation.html#Arrays-and-pointers-implementation" title="Arrays and pointers implementation">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'' and ``Funding
Free Software'', the Front-Cover texts being (a) (see below), and with
the Back-Cover Texts being (b) (see below). A copy of the license is
included in the section entitled ``GNU Free Documentation License''.
(a) The FSF's Front-Cover Text is:
A GNU Manual
(b) The FSF's Back-Cover Text is:
You have freedom to copy and modify this GNU Manual, like GNU
software. Copies published by the Free Software Foundation raise
funds for GNU development.-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<p>
<a name="Floating-point-implementation"></a>
Next: <a rel="next" accesskey="n" href="Arrays-and-pointers-implementation.html#Arrays-and-pointers-implementation">Arrays and pointers implementation</a>,
Previous: <a rel="previous" accesskey="p" href="Integers-implementation.html#Integers-implementation">Integers implementation</a>,
Up: <a rel="up" accesskey="u" href="C-Implementation.html#C-Implementation">C Implementation</a>
<hr>
</div>
<h3 class="section">4.6 Floating point</h3>
<ul>
<li><cite>The accuracy of the floating-point operations and of the library
functions in </cite><code><math.h></code><cite> and </cite><code><complex.h></code><cite> that return floating-point
results (C90 and C99 5.2.4.2.2).</cite>
<p>The accuracy is unknown.
<li><cite>The rounding behaviors characterized by non-standard values
of </cite><code>FLT_ROUNDS</code><cite>
(C90 and C99 5.2.4.2.2).</cite>
<p>GCC does not use such values.
<li><cite>The evaluation methods characterized by non-standard negative
values of </cite><code>FLT_EVAL_METHOD</code><cite> (C99 5.2.4.2.2).</cite>
<p>GCC does not use such values.
<li><cite>The direction of rounding when an integer is converted to a
floating-point number that cannot exactly represent the original
value (C90 6.2.1.3, C99 6.3.1.4).</cite>
<p>C99 Annex F is followed.
<li><cite>The direction of rounding when a floating-point number is
converted to a narrower floating-point number (C90 6.2.1.4, C99
6.3.1.5).</cite>
<p>C99 Annex F is followed.
<li><cite>How the nearest representable value or the larger or smaller
representable value immediately adjacent to the nearest representable
value is chosen for certain floating constants (C90 6.1.3.1, C99
6.4.4.2).</cite>
<p>C99 Annex F is followed.
<li><cite>Whether and how floating expressions are contracted when not
disallowed by the </cite><code>FP_CONTRACT</code><cite> pragma (C99 6.5).</cite>
<p>Expressions are currently only contracted if
<samp><span class="option">-funsafe-math-optimizations</span></samp> or <samp><span class="option">-ffast-math</span></samp> are used.
This is subject to change.
<li><cite>The default state for the </cite><code>FENV_ACCESS</code><cite> pragma (C99 7.6.1).</cite>
<p>This pragma is not implemented, but the default is to “off” unless
<samp><span class="option">-frounding-math</span></samp> is used in which case it is “on”.
<li><cite>Additional floating-point exceptions, rounding modes, environments,
and classifications, and their macro names (C99 7.6, C99 7.12).</cite>
<p>This is dependent on the implementation of the C library, and is not
defined by GCC itself.
<li><cite>The default state for the </cite><code>FP_CONTRACT</code><cite> pragma (C99 7.12.2).</cite>
<p>This pragma is not implemented. Expressions are currently only
contracted if <samp><span class="option">-funsafe-math-optimizations</span></samp> or
<samp><span class="option">-ffast-math</span></samp> are used. This is subject to change.
<li><cite>Whether the “inexact” floating-point exception can be raised
when the rounded result actually does equal the mathematical result
in an IEC 60559 conformant implementation (C99 F.9).</cite>
<p>This is dependent on the implementation of the C library, and is not
defined by GCC itself.
<li><cite>Whether the “underflow” (and “inexact”) floating-point
exception can be raised when a result is tiny but not inexact in an
IEC 60559 conformant implementation (C99 F.9).</cite>
<p>This is dependent on the implementation of the C library, and is not
defined by GCC itself.
</ul>
</body></html>