source: public/doc/gnu-c/Handling-Infinity.html@ 02598c2

Last change on this file since 02598c2 was 02598c2, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:36:29 PM

Add gnu-c

  • Property mode set to 100644
File size: 5.4 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2<html>
3<!-- Copyright (C) 2022 Richard Stallman and Free Software Foundation, Inc.
4
5(The work of Trevis Rothwell and Nelson Beebe has been assigned or
6licensed to the FSF.)
7
8Permission is granted to copy, distribute and/or modify this document
9under the terms of the GNU Free Documentation License, Version 1.3 or
10any later version published by the Free Software Foundation; with the
11Invariant Sections being "GNU General Public License," with the
12Front-Cover Texts being "A GNU Manual," and with the Back-Cover
13Texts as in (a) below. A copy of the license is included in the
14section entitled "GNU Free Documentation License."
15
16(a) The FSF's Back-Cover Text is: "You have the freedom to copy and
17modify this GNU manual. Buying copies from the FSF supports it in
18developing GNU and promoting software freedom." -->
19<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
20<head>
21<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
22<title>Handling Infinity (GNU C Language Manual)</title>
23
24<meta name="description" content="Handling Infinity (GNU C Language Manual)">
25<meta name="keywords" content="Handling Infinity (GNU C Language Manual)">
26<meta name="resource-type" content="document">
27<meta name="distribution" content="global">
28<meta name="Generator" content="makeinfo">
29<link href="index.html" rel="start" title="Top">
30<link href="Symbol-Index.html" rel="index" title="Symbol Index">
31<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
32<link href="Floating-Point-in-Depth.html" rel="up" title="Floating Point in Depth">
33<link href="Handling-NaN.html" rel="next" title="Handling NaN">
34<link href="Exact-Floating-Constants.html" rel="prev" title="Exact Floating Constants">
35<style type="text/css">
36<!--
37a.summary-letter {text-decoration: none}
38blockquote.indentedblock {margin-right: 0em}
39div.display {margin-left: 3.2em}
40div.example {margin-left: 3.2em}
41div.lisp {margin-left: 3.2em}
42kbd {font-style: oblique}
43pre.display {font-family: inherit}
44pre.format {font-family: inherit}
45pre.menu-comment {font-family: serif}
46pre.menu-preformatted {font-family: serif}
47span.nolinebreak {white-space: nowrap}
48span.roman {font-family: initial; font-weight: normal}
49span.sansserif {font-family: sans-serif; font-weight: normal}
50ul.no-bullet {list-style: none}
51-->
52</style>
53
54
55</head>
56
57<body lang="en">
58<span id="Handling-Infinity"></span><div class="header">
59<p>
60Next: <a href="Handling-NaN.html" accesskey="n" rel="next">Handling NaN</a>, Previous: <a href="Exact-Floating-Constants.html" accesskey="p" rel="prev">Exact Floating Constants</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
61</div>
62<hr>
63<span id="Handling-Infinity-1"></span><h3 class="section">28.13 Handling Infinity</h3>
64<span id="index-infinity-in-floating_002dpoint-arithmetic"></span>
65<span id="index-floating_002dpoint-infinity"></span>
66
67<p>As we noted earlier, the IEEE 754 model of computing is not to stop
68the program when exceptional conditions occur. It takes note of
69exceptional values or conditions by setting sticky <em>exception
70flags</em>, or by producing results with the special values Infinity and
71QNaN. In this section, we discuss Infinity; see <a href="Handling-NaN.html">Handling NaN</a> for
72the other.
73</p>
74<p>In GNU C, you can create a value of negative Infinity in software like
75this:
76</p>
77<pre class="verbatim">double x;
78
79x = -1.0 / 0.0;
80</pre>
81<p>GNU C supplies the <code>__builtin_inf</code>, <code>__builtin_inff</code>, and
82<code>__builtin_infl</code> macros, and the GNU C Library provides the
83<code>INFINITY</code> macro, all of which are compile-time constants for
84positive infinity.
85</p>
86<p>GNU C also provides a standard function to test for an Infinity:
87<code>isinf (x)</code> returns <code>1</code> if the argument is a signed
88infinity, and <code>0</code> if not.
89</p>
90<p>Infinities can be compared, and all Infinities of the same sign are
91equal: there is no notion in IEEE 754 arithmetic of different kinds of
92Infinities, as there are in some areas of mathematics. Positive
93Infinity is larger than any finite value, and negative Infinity is
94smaller than finite value.
95</p>
96<p>Infinities propagate in addition, subtraction, multiplication,
97and square root, but in division, they disappear, because of the
98rule that <code>finite / Infinity</code> is <code>0.0</code>. Thus, an
99overflow in an intermediate computation that produces an Infinity
100is likely to be noticed later in the final results. The programmer can
101then decide whether the overflow is expected, and acceptable, or whether
102the code possibly has a bug, or needs to be run in higher
103precision, or redesigned to avoid the production of the Infinity.
104</p>
105
106<hr>
107<div class="header">
108<p>
109Next: <a href="Handling-NaN.html" accesskey="n" rel="next">Handling NaN</a>, Previous: <a href="Exact-Floating-Constants.html" accesskey="p" rel="prev">Exact Floating Constants</a>, Up: <a href="Floating-Point-in-Depth.html" accesskey="u" rel="up">Floating Point in Depth</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Index.html" title="Index" rel="index">Index</a>]</p>
110</div>
111
112
113
114</body>
115</html>
Note: See TracBrowser for help on using the repository browser.