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 – Reference Manual: Sparse Matrices Allocation</title>
<meta name="description" content="GNU Scientific Library – Reference Manual: Sparse Matrices Allocation">
<meta name="keywords" content="GNU Scientific Library – 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> [<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> [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>
|