Skip to content

FloatMul

FloatMul

Description

Generic multiplication convenience macro for Float.

Parameters

Name Direction Description
result out Destination for the product
a in Left operand
b in Right operand selected through generic dispatch

Usage example (from documentation)

  FloatMul(&product, &value, 0.5f);

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    void(FloatMul)(Float *result, Float *a, Float *b) {
        Float temp = FloatInit();
        Float rhs = MISRA_PRIV_FloatFromInt(b);
    
        FloatMul(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = MISRA_PRIV_FloatFromU64(b);
    
        FloatMul(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = MISRA_PRIV_FloatFromI64(b);
    
        FloatMul(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = float_from_f32_value(b);
    
        FloatMul(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = float_from_f64_value(b);
    
        FloatMul(result, a, &rhs);
        FloatDeinit(&rhs);
    }
    
    bool test_float_mul_small_small(void) {
        WriteFmt("Testing FloatMul with small floats\n");
    
        Float a            = FloatFromStr("12.5");
        Str   text         = StrInit();
    
        FloatMul(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
    bool test_float_mul_very_large_small(void) {
        WriteFmt("Testing FloatMul with very large and small floats\n");
    
        Float a            = FloatFromStr(FLOAT_TEST_VERY_LARGE_ONES);
        Str   text         = StrInit();
    
        FloatMul(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
    bool test_float_mul_generic(void) {
        WriteFmt("Testing FloatMul generic dispatch\n");
    
        Float a            = FloatFromStr("1.5");
        Str   text         = StrInit();
    
        FloatMul(&result_value, &a, b);
        text = FloatToStr(&result_value);
        bool result = strcmp(text.data, "3") == 0;
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, whole);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3") == 0);
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3") == 0);
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, -2);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "-3") == 0);
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, 0.5f);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "0.75") == 0);
    /// TAGS: Float, Math, Multiply
    ///
    void (FloatMul)(Float *result, Float *a, Float *b);
    ///
    /// Divide one float by another.
                (rhs),                                                                                                     \
                Float: MISRA_PRIV_FloatMulValueFloat,                                                                      \
                Float *: FloatMul,                                                                                         \
                const Float *: MISRA_PRIV_FloatMulConstFloat,                                                              \
                Int: MISRA_PRIV_FloatMulValueInt,                                                                          \
Last updated on