Skip to content

FloatSub

FloatSub

Description

Generic subtraction convenience macro for Float.

Parameters

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

Usage example (from documentation)

  FloatSub(&diff, &value, 2u);

Usage example (Cross-references)

Usage examples (Cross-references)
    }
    
    void(FloatSub)(Float *result, Float *a, Float *b) {
        Float rhs = FloatClone(b);
        Float rhs = MISRA_PRIV_FloatFromInt(b);
    
        FloatSub(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = MISRA_PRIV_FloatFromU64(b);
    
        FloatSub(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = MISRA_PRIV_FloatFromI64(b);
    
        FloatSub(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = float_from_f32_value(b);
    
        FloatSub(result, a, &rhs);
        FloatDeinit(&rhs);
    }
        Float rhs = float_from_f64_value(b);
    
        FloatSub(result, a, &rhs);
        FloatDeinit(&rhs);
    }
    
    bool test_float_sub_small_small(void) {
        WriteFmt("Testing FloatSub with small floats\n");
    
        Float a            = FloatFromStr("1.5");
        Str   text         = StrInit();
    
        FloatSub(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
    bool test_float_sub_very_large_large(void) {
        WriteFmt("Testing FloatSub with very large floats\n");
    
        Float a            = FloatFromStr(FLOAT_TEST_VERY_LARGE_THREES);
        Str   text         = StrInit();
    
        FloatSub(&result_value, &a, &b);
        text = FloatToStr(&result_value);
    
    bool test_float_sub_generic(void) {
        WriteFmt("Testing FloatSub generic dispatch\n");
    
        Float a            = FloatFromStr("5.5");
        Str   text         = StrInit();
    
        FloatSub(&result_value, &a, b);
        text = FloatToStr(&result_value);
        bool result = strcmp(text.data, "5") == 0;
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, whole);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3.5") == 0);
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "3.5") == 0);
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, -2);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "7.5") == 0);
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, 0.5f);
        text   = FloatToStr(&result_value);
        result = result && (strcmp(text.data, "5") == 0);
    /// TAGS: Float, Math, Subtract
    ///
    void (FloatSub)(Float *result, Float *a, Float *b);
    ///
    /// Multiply two floats.
                (rhs),                                                                                                     \
                Float: MISRA_PRIV_FloatSubValueFloat,                                                                      \
                Float *: FloatSub,                                                                                         \
                const Float *: MISRA_PRIV_FloatSubConstFloat,                                                              \
                Int: MISRA_PRIV_FloatSubValueInt,                                                                          \
Last updated on