Skip to content

IntModInv

IntModInv

Description

Compute the multiplicative inverse of a value modulo modulus.

Parameters

Name Direction Description
result out Destination for the inverse
value in Value to invert
modulus in Modulus

Usage example (from documentation)

  bool ok = IntModInv(&inverse, &value, &modulus);

Returns

true when the inverse exists.

Usage example (Cross-references)

Usage examples (Cross-references)
        bool ok     = false;
    
        ok = IntModInv(&inverse, b, modulus);
        if (!ok) {
            IntDeinit(&inverse);
    }
    
    bool IntModInv(Int *result, Int *value, Int *modulus) {
        ValidateInt(result);
        ValidateInt(value);
    
    bool test_int_mod_inv(void) {
        WriteFmt("Testing IntModInv\n");
    
        Int value = IntFrom(3);
        Int check = IntInit();
    
        bool result = IntModInv(&result_value, &value, &mod);
        result      = result && (IntToU64(&result_value) == 4);
    
    bool test_int_mod_inv_no_solution(void) {
        WriteFmt("Testing IntModInv no-solution case\n");
    
        Int value = IntFrom(6);
        Int result_value = IntFrom(99);
    
        bool result = !IntModInv(&result_value, &value, &mod);
        result      = result && (IntToU64(&result_value) == 99);
Last updated on