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.

112 lines
5.6 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>Integer Exponentiation (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="Integer Exponentiation (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="Integer-Functions.html#Integer-Functions" rel="up" title="Integer Functions">
<link href="Integer-Roots.html#Integer-Roots" rel="next" title="Integer Roots">
<link href="Integer-Division.html#Integer-Division" rel="prev" title="Integer Division">
<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="Integer-Exponentiation"></a>
<div class="header">
<p>
Next: <a href="Integer-Roots.html#Integer-Roots" accesskey="n" rel="next">Integer Roots</a>, Previous: <a href="Integer-Division.html#Integer-Division" accesskey="p" rel="prev">Integer Division</a>, Up: <a href="Integer-Functions.html#Integer-Functions" accesskey="u" rel="up">Integer Functions</a> &nbsp; [<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Exponentiation-Functions"></a>
<h3 class="section">5.7 Exponentiation Functions</h3>
<a name="index-Integer-exponentiation-functions"></a>
<a name="index-Exponentiation-functions"></a>
<a name="index-Powering-functions"></a>
<dl>
<dt><a name="index-mpz_005fpowm"></a>Function: <em>void</em> <strong>mpz_powm</strong> <em>(mpz_t <var>rop</var>, const mpz_t <var>base</var>, const mpz_t <var>exp</var>, const mpz_t <var>mod</var>)</em></dt>
<dt><a name="index-mpz_005fpowm_005fui"></a>Function: <em>void</em> <strong>mpz_powm_ui</strong> <em>(mpz_t <var>rop</var>, const mpz_t <var>base</var>, unsigned long int <var>exp</var>, const mpz_t <var>mod</var>)</em></dt>
<dd><p>Set <var>rop</var> to <em>(<var>base</var> raised to <var>exp</var>)
modulo <var>mod</var></em>.
</p>
<p>Negative <var>exp</var> is supported if an inverse <em><var>base</var>^<span class="nolinebreak">-1</span><!-- /@w --> mod
<var>mod</var></em> exists (see <code>mpz_invert</code> in <a href="Number-Theoretic-Functions.html#Number-Theoretic-Functions">Number Theoretic Functions</a>).
If an inverse doesn&rsquo;t exist then a divide by zero is raised.
</p></dd></dl>
<dl>
<dt><a name="index-mpz_005fpowm_005fsec"></a>Function: <em>void</em> <strong>mpz_powm_sec</strong> <em>(mpz_t <var>rop</var>, const mpz_t <var>base</var>, const mpz_t <var>exp</var>, const mpz_t <var>mod</var>)</em></dt>
<dd><p>Set <var>rop</var> to <em>(<var>base</var> raised to <var>exp</var>)
modulo <var>mod</var></em>.
</p>
<p>It is required that <em><var>exp</var> &gt; 0</em> and that <var>mod</var> is odd.
</p>
<p>This function is designed to take the same time and have the same cache access
patterns for any two same-size arguments, assuming that function arguments are
placed at the same position and that the machine state is identical upon
function entry. This function is intended for cryptographic purposes, where
resilience to side-channel attacks is desired.
</p></dd></dl>
<dl>
<dt><a name="index-mpz_005fpow_005fui"></a>Function: <em>void</em> <strong>mpz_pow_ui</strong> <em>(mpz_t <var>rop</var>, const mpz_t <var>base</var>, unsigned long int <var>exp</var>)</em></dt>
<dt><a name="index-mpz_005fui_005fpow_005fui"></a>Function: <em>void</em> <strong>mpz_ui_pow_ui</strong> <em>(mpz_t <var>rop</var>, unsigned long int <var>base</var>, unsigned long int <var>exp</var>)</em></dt>
<dd><p>Set <var>rop</var> to <em><var>base</var> raised to <var>exp</var></em>. The case
<em>0^0</em> yields 1.
</p></dd></dl>
</body>
</html>