Skip to content

IntModSqrt

IntModSqrt

Description

Compute a modular square root.

Parameters

Name Direction Description
result out Destination for the root
value in Value whose square root is requested
modulus in Modulus

Usage example (from documentation)

  bool ok = IntModSqrt(&root, &value, &modulus);

Returns

true when a modular square root exists.

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    bool IntModSqrt(Int *result, Int *value, Int *modulus) {
        ValidateInt(result);
        ValidateInt(value);
    
    bool test_int_mod_sqrt(void) {
        WriteFmt("Testing IntModSqrt\n");
    
        Int value = IntFrom(10);
        Int check = IntInit();
    
        bool result = IntModSqrt(&root, &value, &mod);
        IntSquareMod(&check, &root, &mod);
        result = result && (IntCompare(&check, 10) == 0);
    
    bool test_int_mod_sqrt_no_solution(void) {
        WriteFmt("Testing IntModSqrt no-solution case\n");
    
        Int value = IntFrom(3);
        Int root = IntFrom(99);
    
        bool result = !IntModSqrt(&root, &value, &mod);
        result      = result && (IntCompare(&root, 99) == 0);
Last updated on