File: Sparse-Matrices-Allocation.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 (144 lines) | stat: -rw-r--r-- 7,877 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
<!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: Sparse Matrices Allocation</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Sparse Matrices Allocation">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Sparse Matrices Allocation">
<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="Sparse-Matrices.html#Sparse-Matrices" rel="up" title="Sparse Matrices">
<link href="Sparse-Matrices-Accessing-Elements.html#Sparse-Matrices-Accessing-Elements" rel="next" title="Sparse Matrices Accessing Elements">
<link href="Sparse-Matrices-Overview.html#Sparse-Matrices-Overview" rel="previous" title="Sparse Matrices Overview">
<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="Sparse-Matrices-Allocation"></a>
<div class="header">
<p>
Next: <a href="Sparse-Matrices-Accessing-Elements.html#Sparse-Matrices-Accessing-Elements" accesskey="n" rel="next">Sparse Matrices Accessing Elements</a>, Previous: <a href="Sparse-Matrices-Overview.html#Sparse-Matrices-Overview" accesskey="p" rel="previous">Sparse Matrices Overview</a>, Up: <a href="Sparse-Matrices.html#Sparse-Matrices" accesskey="u" rel="up">Sparse Matrices</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Allocation"></a>
<h3 class="section">41.2 Allocation</h3>
<a name="index-sparse-matrices_002c-allocation"></a>

<p>The functions for allocating memory for a sparse matrix follow the style of
<code>malloc</code> and <code>free</code>. They also perform their own error checking. If
there is insufficient memory available to allocate a matrix then the functions
call the GSL error handler with an error code of <code>GSL_ENOMEM</code> in addition
to returning a null pointer.
</p>
<dl>
<dt><a name="index-gsl_005fspmatrix_005falloc"></a>Function: <em>gsl_spmatrix *</em> <strong>gsl_spmatrix_alloc</strong> <em>(const size_t <var>n1</var>, const size_t <var>n2</var>)</em></dt>
<dd><p>This function allocates a sparse matrix of size <var>n1</var>-by-<var>n2</var> and
initializes it to all zeros. If the size of the matrix is not known at allocation
time, both <var>n1</var> and <var>n2</var> may be set to 1, and they will automatically
grow as elements are added to the matrix. This function sets the
matrix to the triplet representation, which is the easiest for adding
and accessing matrix elements. This function tries to make a reasonable guess
for the number of non-zero elements (<var>nzmax</var>) which will be added to the matrix by
assuming a sparse density of <em>10\%</em>. The function
<code>gsl_spmatrix_alloc_nzmax</code> can be used if this number is known more
accurately. The workspace is of size <em>O(nzmax)</em>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fspmatrix_005falloc_005fnzmax"></a>Function: <em>gsl_spmatrix *</em> <strong>gsl_spmatrix_alloc_nzmax</strong> <em>(const size_t <var>n1</var>, const size_t <var>n2</var>, const size_t <var>nzmax</var>, const size_t <var>sptype</var>)</em></dt>
<dd><p>This function allocates a sparse matrix of size <var>n1</var>-by-<var>n2</var> and
initializes it to all zeros. If the size of the matrix is not known at allocation
time, both <var>n1</var> and <var>n2</var> may be set to 1, and they will automatically
grow as elements are added to the matrix. The parameter <var>nzmax</var> specifies
the maximum number of non-zero elements which will be added to the matrix.
It does not need to be precisely known in advance, since storage space will 
automatically grow using <code>gsl_spmatrix_realloc</code> if <var>nzmax</var> is not
large enough. Accurate knowledge of this parameter reduces the number of
reallocation calls required. The parameter <var>sptype</var> specifies the
storage format of the sparse matrix. Possible values are
</p><dl compact="compact">
<dt><code>GSL_SPMATRIX_TRIPLET</code></dt>
<dd><p>This flag specifies triplet storage.
</p>
</dd>
<dt><code>GSL_SPMATRIX_CCS</code></dt>
<dd><p>This flag specifies compressed column storage.
</p>
</dd>
<dt><code>GSL_SPMATRIX_CRS</code></dt>
<dd><p>This flag specifies compressed row storage.
</p></dd>
</dl>
<p>The allocated <code>gsl_spmatrix</code> structure is of size <em>O(nzmax)</em>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fspmatrix_005frealloc"></a>Function: <em>int</em> <strong>gsl_spmatrix_realloc</strong> <em>(const size_t <var>nzmax</var>, gsl_spmatrix * <var>m</var>)</em></dt>
<dd><p>This function reallocates the storage space for <var>m</var> to accomodate
<var>nzmax</var> non-zero elements. It is typically called internally by
<code>gsl_spmatrix_set</code> if the user wants to add more elements to the
sparse matrix than the previously specified <var>nzmax</var>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fspmatrix_005ffree"></a>Function: <em>void</em> <strong>gsl_spmatrix_free</strong> <em>(gsl_spmatrix * <var>m</var>)</em></dt>
<dd><p>This function frees the memory associated with the sparse matrix <var>m</var>.
</p></dd></dl>

<hr>
<div class="header">
<p>
Next: <a href="Sparse-Matrices-Accessing-Elements.html#Sparse-Matrices-Accessing-Elements" accesskey="n" rel="next">Sparse Matrices Accessing Elements</a>, Previous: <a href="Sparse-Matrices-Overview.html#Sparse-Matrices-Overview" accesskey="p" rel="previous">Sparse Matrices Overview</a>, Up: <a href="Sparse-Matrices.html#Sparse-Matrices" accesskey="u" rel="up">Sparse Matrices</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>