diff options
Diffstat (limited to 'support/dktools/dk4maadu.ctr')
-rw-r--r-- | support/dktools/dk4maadu.ctr | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/support/dktools/dk4maadu.ctr b/support/dktools/dk4maadu.ctr new file mode 100644 index 0000000000..c54adb8401 --- /dev/null +++ b/support/dktools/dk4maadu.ctr @@ -0,0 +1,170 @@ +%% options + +copyright owner = Dirk Krause +copyright year = 2015-xxxx +license = bsd + + + +%% header + +/** @file + Arithmetic operations on dk4_um_t. + + CRT on Windows: Optional. +*/ + +#ifndef DK4CONF_H_INCLUDED +#include "dk4conf.h" +#endif + +#ifndef DK4TYPES_H_INCLUDED +#include "dk4types.h" +#endif + +#ifndef DK4ERROR_H_INCLUDED +#include "dk4error.h" +#endif + + + +#ifdef __cplusplus +extern "C" { +#endif + +/** Addition. + @param a Left operand. + @param b Right operand. + @param erp Error report, may be NULL. + @return Result on success, least significant result bits + on overflow (see ec component of erp). + + Error codes: DK4_E_OVERFLOW. +*/ +dk4_um_t +dk4ma_um_add(dk4_um_t a, dk4_um_t b, dk4_er_t *erp); + +/** Subtraction. + @param a Left operand. + @param b Right operand. + @param erp Error report, may be NULL. + @return Result on success, least significant result bits + on overflow (see ec component of erp). + + Error codes: DK4_E_OVERFLOW. +*/ +dk4_um_t +dk4ma_um_sub(dk4_um_t a, dk4_um_t b, dk4_er_t *erp); + +/** Multiplication. + @param a Left factor. + @param b right factor. + @param erp Error report, may be NULL. + @return Result on success, least significant + bits on overflow (see ec component of erp). + + Error codes: DK4_E_OVERFLOW. +*/ +dk4_um_t +dk4ma_um_mul(dk4_um_t a, dk4_um_t b, dk4_er_t *erp); + +/** Division. + @param a Counter (left operand). + @param b Denominator (right operand). + @param erp Error report, may be NULL. + @return Division result on success, + DK4_UM_MAX on division by zero + (see the ec component of erp). + + Error codes: DK4_E_DIVZERO. +*/ +dk4_um_t +dk4ma_um_div(dk4_um_t a, dk4_um_t b, dk4_er_t *erp); + +#ifdef __cplusplus +} +#endif + + +%% module + +#include "dk4conf.h" +#include "dk4types.h" +#include "dk4error.h" +#include "dk4numco.h" + +#if DK4_HAVE_INTMAX_T +#include "dk4maamu.h" +#else +#if DK4_HAVE_LONG_LONG +#include "dk4maalu.h" +#else +#include "dk4maaul.h" +#endif +#endif + +#include "dk4maadu.h" + + +dk4_um_t +dk4ma_um_add(dk4_um_t a, dk4_um_t b, dk4_er_t *erp) +{ +#if DK4_HAVE_INTMAX_T + return (dk4ma_uintmax_t_add(a, b, erp)); +#else +#if DK4_HAVE_LONG_LONG + return (dk4ma_ull_add(a, b, erp)); +#else + return (dk4ma_ulong_add(a, b, erp)); +#endif +#endif +} + + + +dk4_um_t +dk4ma_um_sub(dk4_um_t a, dk4_um_t b, dk4_er_t *erp) +{ +#if DK4_HAVE_INTMAX_T + return (dk4ma_uintmax_t_sub(a, b, erp)); +#else +#if DK4_HAVE_LONG_LONG + return (dk4ma_ull_sub(a, b, erp)); +#else + return (dk4ma_ulong_sub(a, b, erp)); +#endif +#endif +} + + + +dk4_um_t +dk4ma_um_mul(dk4_um_t a, dk4_um_t b, dk4_er_t *erp) +{ +#if DK4_HAVE_INTMAX_T + return (dk4ma_uintmax_t_mul(a, b, erp)); +#else +#if DK4_HAVE_LONG_LONG + return (dk4ma_ull_mul(a, b, erp)); +#else + return (dk4ma_ulong_mul(a, b, erp)); +#endif +#endif +} + + + +dk4_um_t +dk4ma_um_div(dk4_um_t a, dk4_um_t b, dk4_er_t *erp) +{ +#if DK4_HAVE_INTMAX_T + return (dk4ma_uintmax_t_div(a, b,erp)); +#else +#if DK4_HAVE_LONG_LONG + return (dk4ma_ull_div(a, b, erp)); +#else + return (dk4ma_ulong_div(a, b, erp)); +#endif +#endif +} + |