GMP Native Interface for .NET
gmp_libmpz_powm Method |
Set rop to (base^exp) modulo mod.
Namespace: Math.Gmp.Native
Assembly: Math.Gmp.Native (in Math.Gmp.Native.dll) Version: 1.0.0.0 (1.0.0.0)

public static void mpz_powm( mpz_t rop, mpz_t base, mpz_t exp, mpz_t mod )
Public Shared Sub mpz_powm ( rop As mpz_t, base As mpz_t, exp As mpz_t, mod As mpz_t )
public: static void mpz_powm( mpz_t^ rop, mpz_t^ base, mpz_t^ exp, mpz_t^ mod )
static member mpz_powm : rop : mpz_t * base : mpz_t * exp : mpz_t * mod : mpz_t -> unit
Parameters
- rop
- Type: Math.Gmp.Nativempz_t
The result integer. - base
- Type: Math.Gmp.Nativempz_t
The base integer. - exp
- Type: Math.Gmp.Nativempz_t
The exponent integer. - mod
- Type: Math.Gmp.Nativempz_t
The modulo integer.

Negative exp is supported if an inverse base^-1 modulo mod exists (see mpz_invert). If an inverse doesn’t exist then a divide by zero is raised.

// Create, initialize, and set the value of base to 2. mpz_t @base = new mpz_t(); gmp_lib.mpz_init_set_ui(@base, 2U); // Create, initialize, and set the value of exp to 4. mpz_t exp = new mpz_t(); gmp_lib.mpz_init_set_ui(exp, 4U); // Create, initialize, and set the value of mod to 3. mpz_t mod = new mpz_t(); gmp_lib.mpz_init_set_ui(mod, 3U); // Create, initialize, and set the value of rop to 0. mpz_t rop = new mpz_t(); gmp_lib.mpz_init(rop); // Set rop = base^exp mod mod. gmp_lib.mpz_powm(rop, @base, exp, mod); // Assert that rop is 1. Assert.IsTrue(gmp_lib.mpz_get_si(rop) == 1); // Release unmanaged memory allocated for rop, base, exp, and mod. gmp_lib.mpz_clears(rop, @base, exp, mod, null);
' Create, initialize, and set the value of base to 2. Dim base As New mpz_t() gmp_lib.mpz_init_set_ui(base, 2UI) ' Create, initialize, and set the value of exp to 4. Dim exp As New mpz_t() gmp_lib.mpz_init_set_ui(exp, 4UI) ' Create, initialize, and set the value of mod to 3. Dim[mod] As New mpz_t() gmp_lib.mpz_init_set_ui([mod], 3UI) ' Create, initialize, and set the value of rop to 0. Dim rop As New mpz_t() gmp_lib.mpz_init(rop) ' Set rop = base^exp mod mod. gmp_lib.mpz_powm(rop, base, exp, [mod]) ' Assert that rop is 1. Assert.IsTrue(gmp_lib.mpz_get_si(rop) = 1) ' Release unmanaged memory allocated for rop, base, exp, and mod. gmp_lib.mpz_clears(rop, base, exp, [mod], Nothing)
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
