Skip to content

IntDivMod

IntDivMod

Description

Generic quotient-and-remainder convenience macro.

Parameters

Name Direction Description
quotient out Destination for the quotient
remainder out Destination for the remainder
dividend in Dividend
divisor in Divisor selected through generic dispatch

Usage example (from documentation)

  IntDivMod(&q, &r, &value, 97u);

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    void(IntDivMod)(Int *quotient, Int *remainder, Int *dividend, Int *divisor) {
        ValidateInt(quotient);
        ValidateInt(remainder);
        Int remainder = IntInit();
    
        IntDivMod(&quotient, &remainder, dividend, divisor);
        IntDeinit(&remainder);
        int_replace(result, &quotient);
        Int remainder = IntInit();
    
        IntDivMod(&quotient, &remainder, dividend, divisor);
        if (!IntIsZero(&remainder)) {
            IntDeinit(&quotient);
        Int divisor_value = MISRA_PRIV_IntFromU64(divisor);
    
        IntDivMod(quotient, remainder, dividend, &divisor_value);
        IntDeinit(&divisor_value);
    }
        Int divisor_value = MISRA_PRIV_IntFromI64(divisor);
    
        IntDivMod(quotient, remainder, dividend, &divisor_value);
        IntDeinit(&divisor_value);
    }
        u64 rem           = 0;
    
        IntDivMod(quotient, &remainder, dividend, &divisor_value);
        rem = IntToU64(&remainder);
        Int remainder = IntInit();
    
        IntDivMod(&quotient, &remainder, dividend, divisor);
        IntDeinit(&quotient);
        int_replace(result, &remainder);
            Int       next_r   = IntInit();
    
            IntDivMod(&q, &rem, &r, &new_r);
            sint_mul_unsigned(&q_new_t, &new_t, &q);
            sint_sub(&next_t, &t, &q_new_t);
    
    bool test_int_div_mod(void) {
        WriteFmt("Testing IntDivMod generic dispatch\n");
    
        Int dividend  = IntFromStr("12345678901234567890");
        Str qtext     = StrInit();
    
        IntDivMod(&quotient, &remainder, &dividend, 97u);
        qtext = IntToStr(&quotient);
    
    bool test_int_div_mod_scalar(void) {
        WriteFmt("Testing IntDivMod scalar-divisor dispatch\n");
    
        Int dividend = IntFromStr("12345678901234567890");
        Str text = StrInit();
    
        IntDivMod(&quotient, &remainder, &dividend, 97);
        text = IntToStr(&quotient);
        Int remainder = IntInit();
    
        IntDivMod(&quotient, &remainder, &dividend, &divisor);
        return false;
    }
    /// TAGS: Int, Math, Divide, Modulo
    ///
    void (IntDivMod)(Int *quotient, Int *remainder, Int *dividend, Int *divisor);
    ///
    /// Compute the greatest common divisor of two integers.
                (divisor),                                                                                                 \
                Int: MISRA_PRIV_IntDivModValue,                                                                            \
                Int *: IntDivMod,                                                                                          \
                const Int *: MISRA_PRIV_IntDivModConst,                                                                    \
                unsigned char: MISRA_PRIV_IntDivModU64,                                                                    \
Last updated on