File: Portability-functions.html

package info (click to toggle)
gsl-ref-html 1.10-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,496 kB
  • ctags: 2,955
  • sloc: makefile: 33
file content (79 lines) | stat: -rw-r--r-- 3,954 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
<html lang="en">
<head>
<title>Portability functions - GNU Scientific Library -- Reference Manual</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="GNU Scientific Library -- Reference Manual">
<meta name="generator" content="makeinfo 4.8">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Using-the-library.html" title="Using the library">
<link rel="prev" href="Long-double.html" title="Long double">
<link rel="next" href="Alternative-optimized-functions.html" title="Alternative optimized functions">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 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.2 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 freedom to copy and modify this
GNU Manual, like GNU software.''-->
<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="Portability-functions"></a>
Next:&nbsp;<a rel="next" accesskey="n" href="Alternative-optimized-functions.html">Alternative optimized functions</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Long-double.html">Long double</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Using-the-library.html">Using the library</a>
<hr>
</div>

<h3 class="section">2.7 Portability functions</h3>

<p>To help in writing portable applications GSL provides some
implementations of functions that are found in other libraries, such as
the BSD math library.  You can write your application to use the native
versions of these functions, and substitute the GSL versions via a
preprocessor macro if they are unavailable on another platform.

   <p>For example, after determining whether the BSD function <code>hypot</code> is
available you can include the following macro definitions in a file
<samp><span class="file">config.h</span></samp> with your application,

<pre class="example">     /* Substitute gsl_hypot for missing system hypot */
     
     #ifndef HAVE_HYPOT
     #define hypot gsl_hypot
     #endif
</pre>
   <p class="noindent">The application source files can then use the include command
<code>#include &lt;config.h&gt;</code> to replace each occurrence of <code>hypot</code> by
<code>gsl_hypot</code> when <code>hypot</code> is not available.  This substitution
can be made automatically if you use <code>autoconf</code>, see <a href="Autoconf-Macros.html">Autoconf Macros</a>.

   <p>In most circumstances the best strategy is to use the native versions of
these functions when available, and fall back to GSL versions otherwise,
since this allows your application to take advantage of any
platform-specific optimizations in the system library.  This is the
strategy used within GSL itself.

<hr>The GNU Scientific Library - a free numerical library licensed under the GNU GPL<br>Back to the <a href="/software/gsl/">GNU Scientific Library Homepage</a></body></html>