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 – Reference Manual: Handling floating point exceptions</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: Handling floating point exceptions">
<meta name="keywords" content="GNU Scientific Library – 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> [<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>
|