File: Support-for-different-numeric-types.html

package info (click to toggle)
gsl-ref-html 1.15-1
  • links: PTS
  • area: non-free
  • in suites: wheezy
  • size: 4,692 kB
  • sloc: makefile: 33
file content (115 lines) | stat: -rw-r--r-- 5,778 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
<html lang="en">
<head>
<title>Support for different numeric types - 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.13">
<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="Alternative-optimized-functions.html" title="Alternative optimized functions">
<link rel="next" href="Compatibility-with-C_002b_002b.html" title="Compatibility with C++">
<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, 2008, 2009, 2010, 2011 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.''-->
<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">
<a name="Support-for-different-numeric-types"></a>
<p>
Next:&nbsp;<a rel="next" accesskey="n" href="Compatibility-with-C_002b_002b.html">Compatibility with C++</a>,
Previous:&nbsp;<a rel="previous" accesskey="p" href="Alternative-optimized-functions.html">Alternative optimized functions</a>,
Up:&nbsp;<a rel="up" accesskey="u" href="Using-the-library.html">Using the library</a>
<hr>
</div>

<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>,

<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>
   <p class="noindent">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>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,

<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>
   <p class="noindent">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.

<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>
<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>