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 136 137 138 139 140 141 142 143 144 145
|
<!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 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 no
Invariant Sections and no cover texts. A copy of the license is
included in the section entitled "GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library – Reference Manual: Support for different numeric types</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: Support for different numeric types">
<meta name="keywords" content="GNU Scientific Library – Reference Manual: Support for different numeric types">
<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="Using-the-library.html#Using-the-library" rel="up" title="Using the library">
<link href="Compatibility-with-C_002b_002b.html#Compatibility-with-C_002b_002b" rel="next" title="Compatibility with C++">
<link href="Alternative-optimized-functions.html#Alternative-optimized-functions" rel="previous" title="Alternative optimized functions">
<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="Support-for-different-numeric-types"></a>
<div class="header">
<p>
Next: <a href="Compatibility-with-C_002b_002b.html#Compatibility-with-C_002b_002b" accesskey="n" rel="next">Compatibility with C++</a>, Previous: <a href="Alternative-optimized-functions.html#Alternative-optimized-functions" accesskey="p" rel="previous">Alternative optimized functions</a>, Up: <a href="Using-the-library.html#Using-the-library" accesskey="u" rel="up">Using the library</a> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Support-for-different-numeric-types-1"></a>
<h3 class="section">2.9 Support for different numeric types</h3>
<p>Many functions in the library are defined for different numeric types.
This feature is implemented by varying the name of the function with a
type-related modifier—a primitive form of C++ templates. The
modifier is inserted into the function name after the initial module
prefix. The following table shows the function names defined for all
the numeric types of an imaginary module <code>gsl_foo</code> with function
<code>fn</code>,
</p>
<div class="example">
<pre class="example">gsl_foo_fn double
gsl_foo_long_double_fn long double
gsl_foo_float_fn float
gsl_foo_long_fn long
gsl_foo_ulong_fn unsigned long
gsl_foo_int_fn int
gsl_foo_uint_fn unsigned int
gsl_foo_short_fn short
gsl_foo_ushort_fn unsigned short
gsl_foo_char_fn char
gsl_foo_uchar_fn unsigned char
</pre></div>
<p>The normal numeric precision <code>double</code> is considered the default and
does not require a suffix. For example, the function
<code>gsl_stats_mean</code> computes the mean of double precision numbers,
while the function <code>gsl_stats_int_mean</code> computes the mean of
integers.
</p>
<p>A corresponding scheme is used for library defined types, such as
<code>gsl_vector</code> and <code>gsl_matrix</code>. In this case the modifier is
appended to the type name. For example, if a module defines a new
type-dependent struct or typedef <code>gsl_foo</code> it is modified for other
types in the following way,
</p>
<div class="example">
<pre class="example">gsl_foo double
gsl_foo_long_double long double
gsl_foo_float float
gsl_foo_long long
gsl_foo_ulong unsigned long
gsl_foo_int int
gsl_foo_uint unsigned int
gsl_foo_short short
gsl_foo_ushort unsigned short
gsl_foo_char char
gsl_foo_uchar unsigned char
</pre></div>
<p>When a module contains type-dependent definitions the library provides
individual header files for each type. The filenames are modified as
shown in the below. For convenience the default header includes the
definitions for all the types. To include only the double precision
header file, or any other specific type, use its individual filename.
</p>
<div class="example">
<pre class="example">#include <gsl/gsl_foo.h> All types
#include <gsl/gsl_foo_double.h> double
#include <gsl/gsl_foo_long_double.h> long double
#include <gsl/gsl_foo_float.h> float
#include <gsl/gsl_foo_long.h> long
#include <gsl/gsl_foo_ulong.h> unsigned long
#include <gsl/gsl_foo_int.h> int
#include <gsl/gsl_foo_uint.h> unsigned int
#include <gsl/gsl_foo_short.h> short
#include <gsl/gsl_foo_ushort.h> unsigned short
#include <gsl/gsl_foo_char.h> char
#include <gsl/gsl_foo_uchar.h> unsigned char
</pre></div>
<hr>
<div class="header">
<p>
Next: <a href="Compatibility-with-C_002b_002b.html#Compatibility-with-C_002b_002b" accesskey="n" rel="next">Compatibility with C++</a>, Previous: <a href="Alternative-optimized-functions.html#Alternative-optimized-functions" accesskey="p" rel="previous">Alternative optimized functions</a>, Up: <a href="Using-the-library.html#Using-the-library" accesskey="u" rel="up">Using the library</a> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|