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