File: Support-for-different-numeric-types.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 (151 lines) | stat: -rw-r--r-- 7,538 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
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
146
147
148
149
150
151
<!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: Support for different numeric types</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Support for different numeric types">
<meta name="keywords" content="GNU Scientific Library &ndash; 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> &nbsp; [<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&mdash;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 &lt;gsl/gsl_foo.h&gt;               All types
#include &lt;gsl/gsl_foo_double.h&gt;        double        
#include &lt;gsl/gsl_foo_long_double.h&gt;   long double   
#include &lt;gsl/gsl_foo_float.h&gt;         float         
#include &lt;gsl/gsl_foo_long.h&gt;          long          
#include &lt;gsl/gsl_foo_ulong.h&gt;         unsigned long 
#include &lt;gsl/gsl_foo_int.h&gt;           int           
#include &lt;gsl/gsl_foo_uint.h&gt;          unsigned int  
#include &lt;gsl/gsl_foo_short.h&gt;         short         
#include &lt;gsl/gsl_foo_ushort.h&gt;        unsigned short
#include &lt;gsl/gsl_foo_char.h&gt;          char          
#include &lt;gsl/gsl_foo_uchar.h&gt;         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> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>