1 /*
2 Copyright (C) 2015-2021, Dirk Krause
3 SPDX-License-Identifier: BSD-3-Clause
4 */
5
6 /*
7 WARNING: This file was generated by the dkct program (see
8 http://dktools.sourceforge.net/ for details).
9 Changes you make here will be lost if dkct is run again!
10 You should modify the original source and run dkct on it.
11 Original source: dk4maadu.ctr
12 */
13
14 /** @file dk4maadu.c The dk4maadu module.
15 */
16
17
18 #include "dk4conf.h"
19 #include <libdk4base/dk4types.h>
20 #include <libdk4base/dk4error.h>
21 #include <libdk4base/dk4numco.h>
22
23 #if DK4_HAVE_INTMAX_T
24 #include <libdk4ma/dk4maamu.h>
25 #else
26 #if DK4_HAVE_LONG_LONG
27 #include <libdk4ma/dk4maalu.h>
28 #else
29 #include <libdk4ma/dk4maaul.h>
30 #endif
31 #endif
32
33 #include <libdk4ma/dk4maadu.h>
34
35
36
37
38
39
40
41 dk4_um_t
dk4ma_um_add(dk4_um_t a,dk4_um_t b,dk4_er_t * erp)42 dk4ma_um_add(dk4_um_t a, dk4_um_t b, dk4_er_t *erp)
43 {
44 #if DK4_HAVE_INTMAX_T
45 return (dk4ma_uintmax_t_add(a, b, erp));
46 #else
47 #if DK4_HAVE_LONG_LONG
48 return (dk4ma_ull_add(a, b, erp));
49 #else
50 return (dk4ma_ulong_add(a, b, erp));
51 #endif
52 #endif
53 }
54
55
56
57 dk4_um_t
dk4ma_um_sub(dk4_um_t a,dk4_um_t b,dk4_er_t * erp)58 dk4ma_um_sub(dk4_um_t a, dk4_um_t b, dk4_er_t *erp)
59 {
60 #if DK4_HAVE_INTMAX_T
61 return (dk4ma_uintmax_t_sub(a, b, erp));
62 #else
63 #if DK4_HAVE_LONG_LONG
64 return (dk4ma_ull_sub(a, b, erp));
65 #else
66 return (dk4ma_ulong_sub(a, b, erp));
67 #endif
68 #endif
69 }
70
71
72
73 dk4_um_t
dk4ma_um_mul(dk4_um_t a,dk4_um_t b,dk4_er_t * erp)74 dk4ma_um_mul(dk4_um_t a, dk4_um_t b, dk4_er_t *erp)
75 {
76 #if DK4_HAVE_INTMAX_T
77 return (dk4ma_uintmax_t_mul(a, b, erp));
78 #else
79 #if DK4_HAVE_LONG_LONG
80 return (dk4ma_ull_mul(a, b, erp));
81 #else
82 return (dk4ma_ulong_mul(a, b, erp));
83 #endif
84 #endif
85 }
86
87
88
89 dk4_um_t
dk4ma_um_div(dk4_um_t a,dk4_um_t b,dk4_er_t * erp)90 dk4ma_um_div(dk4_um_t a, dk4_um_t b, dk4_er_t *erp)
91 {
92 #if DK4_HAVE_INTMAX_T
93 return (dk4ma_uintmax_t_div(a, b,erp));
94 #else
95 #if DK4_HAVE_LONG_LONG
96 return (dk4ma_ull_div(a, b, erp));
97 #else
98 return (dk4ma_ulong_div(a, b, erp));
99 #endif
100 #endif
101 }
102
103
104
105 dk4_um_t
dk4ma_um_gcd(dk4_um_t a,dk4_um_t b)106 dk4ma_um_gcd(dk4_um_t a, dk4_um_t b)
107 {
108 dk4_um_t h;
109
110 while (0UL < b) {
111 h = a % b;
112 a = b;
113 b = h;
114 }
115 if (0UL == a) { a = 1UL; }
116 return a;
117 }
118
119
120
121 dk4_um_t
dk4ma_um_lcm(dk4_um_t a,dk4_um_t b,dk4_er_t * erp)122 dk4ma_um_lcm(dk4_um_t a, dk4_um_t b, dk4_er_t *erp)
123 {
124 return(
125 dk4ma_um_mul(
126 dk4ma_um_div(a, dk4ma_um_gcd(a, b), erp), b, erp
127 )
128 );
129 }
130
131
132
133 int
dk4ma_um_isgr(dk4_um_t a,dk4_um_t b)134 dk4ma_um_isgr(dk4_um_t a, dk4_um_t b)
135 {
136 return ((a > b) ? ((int)1) : ((int)0));
137 }
138
139
140
141 int
dk4ma_um_isgeq(dk4_um_t a,dk4_um_t b)142 dk4ma_um_isgeq(dk4_um_t a, dk4_um_t b)
143 {
144 return ((a >= b) ? ((int)1) : ((int)0));
145 }
146
147
148
149 /* vim: set ai sw=4 ts=4 : */
150
151