File: Handling-floating-point-exceptions.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, sid
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (111 lines) | stat: -rw-r--r-- 5,544 bytes parent folder | download
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
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 The GSL Team.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "GNU General Public License" and "Free Software
Needs Free Documentation", the Front-Cover text being "A GNU Manual",
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled "GNU Free Documentation
License".

(a) The Back-Cover Text is: "You have the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Handling floating point exceptions</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Handling floating point exceptions">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Handling floating point exceptions">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Debugging-Numerical-Programs.html#Debugging-Numerical-Programs" rel="up" title="Debugging Numerical Programs">
<link href="GCC-warning-options-for-numerical-programs.html#GCC-warning-options-for-numerical-programs" rel="next" title="GCC warning options for numerical programs">
<link href="Examining-floating-point-registers.html#Examining-floating-point-registers" rel="previous" title="Examining floating point registers">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Handling-floating-point-exceptions"></a>
<div class="header">
<p>
Next: <a href="GCC-warning-options-for-numerical-programs.html#GCC-warning-options-for-numerical-programs" accesskey="n" rel="next">GCC warning options for numerical programs</a>, Previous: <a href="Examining-floating-point-registers.html#Examining-floating-point-registers" accesskey="p" rel="previous">Examining floating point registers</a>, Up: <a href="Debugging-Numerical-Programs.html#Debugging-Numerical-Programs" accesskey="u" rel="up">Debugging Numerical Programs</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Handling-floating-point-exceptions-1"></a>
<h3 class="section">A.3 Handling floating point exceptions</h3>
<a name="index-exceptions_002c-floating-point"></a>
<a name="index-floating-point-exceptions"></a>

<p>It is possible to stop the program whenever a <code>SIGFPE</code> floating
point exception occurs.  This can be useful for finding the cause of an
unexpected infinity or <code>NaN</code>.  The current handler settings can be
shown with the command <code>info signal SIGFPE</code>.
</p>
<div class="smallexample">
<pre class="smallexample">(gdb) info signal SIGFPE
Signal  Stop  Print  Pass to program Description
SIGFPE  Yes   Yes    Yes             Arithmetic exception
</pre></div>

<p>Unless the program uses a signal handler the default setting should be
changed so that SIGFPE is not passed to the program, as this would cause
it to exit.  The command <code>handle SIGFPE stop nopass</code> prevents this.
</p>
<div class="smallexample">
<pre class="smallexample">(gdb) handle SIGFPE stop nopass
Signal  Stop  Print  Pass to program Description
SIGFPE  Yes   Yes    No              Arithmetic exception
</pre></div>

<p>Depending on the platform it may be necessary to instruct the kernel to
generate signals for floating point exceptions.  For programs using GSL
this can be achieved using the <code>GSL_IEEE_MODE</code> environment variable
in conjunction with the function <code>gsl_ieee_env_setup</code> as described
in see <a href="IEEE-floating_002dpoint-arithmetic.html#IEEE-floating_002dpoint-arithmetic">IEEE floating-point arithmetic</a>.
</p>
<div class="example">
<pre class="example">(gdb) set env GSL_IEEE_MODE=double-precision
</pre></div>





</body>
</html>