You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
4.8 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual describes how to install and use the GNU multiple precision
arithmetic library, version 6.1.0.
Copyright 1991, 1993-2015 Free Software Foundation, Inc.
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,
with the Front-Cover Texts being "A GNU Manual", and with the Back-Cover
Texts being "You have freedom to copy and modify this GNU Manual, like GNU
software". A copy of the license is included in
GNU Free Documentation License. -->
<!-- Created by GNU Texinfo 6.4, http://www.gnu.org/software/texinfo/ -->
<head>
<title>Variable Conventions (GNU MP 6.1.0)</title>
<meta name="description" content="How to install and use the GNU multiple precision arithmetic library, version 6.1.0.">
<meta name="keywords" content="Variable Conventions (GNU MP 6.1.0)">
<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=iso-8859-1">
<link href="index.html#Top" rel="start" title="Top">
<link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
<link href="GMP-Basics.html#GMP-Basics" rel="up" title="GMP Basics">
<link href="Parameter-Conventions.html#Parameter-Conventions" rel="next" title="Parameter Conventions">
<link href="Function-Classes.html#Function-Classes" rel="prev" title="Function Classes">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
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.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<a name="Variable-Conventions"></a>
<div class="header">
<p>
Next: <a href="Parameter-Conventions.html#Parameter-Conventions" accesskey="n" rel="next">Parameter Conventions</a>, Previous: <a href="Function-Classes.html#Function-Classes" accesskey="p" rel="prev">Function Classes</a>, Up: <a href="GMP-Basics.html#GMP-Basics" accesskey="u" rel="up">GMP Basics</a> &nbsp; [<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Variable-Conventions-1"></a>
<h3 class="section">3.4 Variable Conventions</h3>
<a name="index-Variable-conventions"></a>
<a name="index-Conventions-for-variables"></a>
<p>GMP functions generally have output arguments before input arguments. This
notation is by analogy with the assignment operator. The BSD MP compatibility
functions are exceptions, having the output arguments last.
</p>
<p>GMP lets you use the same variable for both input and output in one call. For
example, the main function for integer multiplication, <code>mpz_mul</code>, can be
used to square <code>x</code> and put the result back in <code>x</code> with
</p>
<div class="example">
<pre class="example">mpz_mul (x, x, x);
</pre></div>
<p>Before you can assign to a GMP variable, you need to initialize it by calling
one of the special initialization functions. When you&rsquo;re done with a
variable, you need to clear it out, using one of the functions for that
purpose. Which function to use depends on the type of variable. See the
chapters on integer functions, rational number functions, and floating-point
functions for details.
</p>
<p>A variable should only be initialized once, or at least cleared between each
initialization. After a variable has been initialized, it may be assigned to
any number of times.
</p>
<p>For efficiency reasons, avoid excessive initializing and clearing. In
general, initialize near the start of a function and clear near the end. For
example,
</p>
<div class="example">
<pre class="example">void
foo (void)
{
mpz_t n;
int i;
mpz_init (n);
for (i = 1; i &lt; 100; i++)
{
mpz_mul (n, &hellip;);
mpz_fdiv_q (n, &hellip;);
&hellip;
}
mpz_clear (n);
}
</pre></div>
</body>
</html>