Skip to content

IntModDiv

IntModDiv

Description

Compute modular division a / b (mod modulus).

Parameters

Name Direction Description
result out Destination for the reduced quotient
a in Numerator
b in Denominator
modulus in Modulus

Usage example (from documentation)

  bool ok = IntModDiv(&result, &a, &b, &modulus);

Returns

true when a modular inverse for b exists.

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    bool IntModDiv(Int *result, Int *a, Int *b, Int *modulus) {
        ValidateInt(result);
        ValidateInt(a);
    
    bool test_int_mod_div(void) {
        WriteFmt("Testing IntModDiv\n");
    
        Int a = IntFrom(10);
        Int check = IntInit();
    
        bool result = IntModDiv(&result_value, &a, &b, &m);
        result      = result && (IntToU64(&result_value) == 12);
    
    bool test_int_mod_div_no_solution(void) {
        WriteFmt("Testing IntModDiv no-solution case\n");
    
        Int a = IntFrom(1);
        Int result_value = IntFrom(99);
    
        bool result = !IntModDiv(&result_value, &a, &b, &m);
        result      = result && (IntCompare(&result_value, 99) == 0);
    
    bool test_int_mod_div_zero_modulus(void) {
        WriteFmt("Testing IntModDiv zero modulus handling\n");
    
        Int a = IntFrom(10);
        Int result_value = IntInit();
    
        (void)IntModDiv(&result_value, &a, &b, &m);
        return false;
    }
Last updated on