aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libj2.h8
-rw-r--r--libj2/addition.h28
-rw-r--r--libj2/bit-scanning.h46
-rw-r--r--libj2/bit-shifting.h44
-rw-r--r--libj2/bitwise-logic.h160
-rw-r--r--libj2/constants.h12
-rw-r--r--libj2/constructors.h2
-rw-r--r--libj2/division.h40
-rw-r--r--libj2/multiplication.h44
-rw-r--r--libj2/sign-shifting.h4
-rw-r--r--libj2/signum.h4
-rw-r--r--libj2/subtraction.h44
-rw-r--r--libj2/unsigned-comparsion.h82
13 files changed, 518 insertions, 0 deletions
diff --git a/libj2.h b/libj2.h
index 4130c97..bb4832b 100644
--- a/libj2.h
+++ b/libj2.h
@@ -25,11 +25,15 @@
/**
* The number of bits in an `uintmax_t`
+ *
+ * @since 1.0
*/
#define LIBJ2_JU_BIT ((unsigned)CHAR_BIT * (unsigned)sizeof(uintmax_t))
/**
* The number of bits in an `struct libj2_j2u`
+ *
+ * @since 1.0
*/
#define LIBJ2_J2U_BIT (2U * LIBJ2_JU_BIT)
@@ -38,6 +42,8 @@
* Unsigned double-maximum precision integer
*
* If `uintmax_t` is a 64-bit type, this `struct` is a 128-bit type
+ *
+ * @since 1.0
*/
struct libj2_j2u {
/**
@@ -58,6 +64,8 @@ struct libj2_j2u {
* Use by some functions for which prediction
* is costly in edge cases, and thus stopped
* as soon as such an edge case is detected
+ *
+ * @since 1.0
*/
enum libj2_overflow {
/**
diff --git a/libj2/addition.h b/libj2/addition.h
index d0a57bf..033284e 100644
--- a/libj2/addition.h
+++ b/libj2/addition.h
@@ -12,6 +12,8 @@
*
* @param a The augend, and output parameter for the sum
* @param b The addend
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_add_ju(struct libj2_j2u *a, uintmax_t b)
@@ -38,6 +40,8 @@ libj2_j2u_add_ju(struct libj2_j2u *a, uintmax_t b)
* @param b The addend
* @return 1 on overflow (the highest set bit in the sum
* cannot be stored in the result), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_add_ju_overflow(struct libj2_j2u *a, uintmax_t b)
@@ -69,6 +73,8 @@ libj2_j2u_add_ju_overflow(struct libj2_j2u *a, uintmax_t b)
* @param a The augend
* @param b The addend
* @param res Output parameter for the sum
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_add_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -95,6 +101,8 @@ libj2_j2u_add_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The augend
* @param b The addend
* @param res Output parameter for the sum
+ *
+ * @since 1.0
*/
inline void
libj2_ju_add_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -115,6 +123,8 @@ libj2_ju_add_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @param res Output parameter for the sum
* @return 1 on overflow (the highest set bit in the sum
* cannot be stored in the result), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_add_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -150,6 +160,8 @@ libj2_j2u_add_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct
* @param res Output parameter for the sum
* @return 1 on overflow (the highest set bit in the sum
* cannot be stored in the result), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_add_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -169,6 +181,8 @@ libj2_ju_add_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct
* @param a The augend
* @param b The addend
* @param res Output parameter for the sum
+ *
+ * @since 1.0
*/
inline void
libj2_ju_add_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
@@ -190,6 +204,8 @@ libj2_ju_add_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
*
* @param a The augend, and output parameter for the sum
* @param b The addend
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_add_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -214,6 +230,8 @@ libj2_j2u_add_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The augend
* @param b The addend
* @param res Output parameter for the sum
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_add_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -243,6 +261,8 @@ libj2_j2u_add_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param b The addend
* @return 1 on overflow (the highest set bit in the sum
* cannot be stored in the result), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_add_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -279,6 +299,8 @@ libj2_j2u_add_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param res Output parameter for the sum
* @return 1 on overflow (the highest set bit in the sum
* cannot be stored in the result), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_add_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -325,6 +347,8 @@ libj2_j2u_add_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_
* @param a The augend
* @param b The addend
* @return 1 if the addition would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_add_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
@@ -344,6 +368,8 @@ libj2_j2u_add_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
* @param a The augend
* @param b The addend
* @return 1 if the addition would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_add_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b)
@@ -364,6 +390,8 @@ libj2_ju_add_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b)
* @param a The augend
* @param b The addend
* @return 1 if the addition would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_add_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b)
diff --git a/libj2/bit-scanning.h b/libj2/bit-scanning.h
index 963f2e2..885d956 100644
--- a/libj2/bit-scanning.h
+++ b/libj2/bit-scanning.h
@@ -11,6 +11,8 @@
* @param a The integer to inspect
* @return The number of zeroes after the most signficant set
* bit in `a`, `LIBJ2_J2U_BIT` if `a` has the value 0
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_clz_j2u(const struct libj2_j2u *a)
@@ -43,6 +45,8 @@ libj2_clz_j2u(const struct libj2_j2u *a)
* @param a The integer to inspect
* @return The number of ones after the most signficant cleared
* bit in `a`, `LIBJ2_J2U_BIT` if all bits in `a` are set
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_clo_j2u(const struct libj2_j2u *a)
@@ -58,6 +62,8 @@ libj2_clo_j2u(const struct libj2_j2u *a)
* @param a The integer to inspect
* @return The number of zeroes before the least signficant set
* bit in `a`, `LIBJ2_J2U_BIT` if `a` has the value 0
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_ctz_j2u(const struct libj2_j2u *a)
@@ -89,6 +95,8 @@ libj2_ctz_j2u(const struct libj2_j2u *a)
* @param a The integer to inspect
* @return The number of ones before the leadt signficant cleared
* bit in `a`, `LIBJ2_J2U_BIT` if all bits in `a` are set
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_cto_j2u(const struct libj2_j2u *a)
@@ -103,6 +111,8 @@ libj2_cto_j2u(const struct libj2_j2u *a)
*
* @param a The integer to inspect
* @return The number of set bits in `a`
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_co_j2u(const struct libj2_j2u *a)
@@ -155,6 +165,8 @@ libj2_co_j2u(const struct libj2_j2u *a)
*
* @param a The integer to inspect
* @return The number of cleared bits in `a`
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_cz_j2u(const struct libj2_j2u *a)
@@ -172,6 +184,8 @@ libj2_cz_j2u(const struct libj2_j2u *a)
* at the least significant bit, of the
* least significant set bit in `a`, or
* 0 if no bit is set
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_ffs_j2u(const struct libj2_j2u *a)
@@ -190,6 +204,8 @@ libj2_ffs_j2u(const struct libj2_j2u *a)
* at the least significant bit, of the
* least significant cleared bit in `a`,
* or 0 if no bit is cleared
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_ffc_j2u(const struct libj2_j2u *a)
@@ -207,6 +223,8 @@ libj2_ffc_j2u(const struct libj2_j2u *a)
* at the least significant bit, of the
* most significant set bit in `a`,
* or 0 if no bit is set
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_fls_j2u(const struct libj2_j2u *a)
@@ -225,6 +243,8 @@ libj2_fls_j2u(const struct libj2_j2u *a)
* at the least significant bit, of the
* most significant cleared bit in `a`,
* or 0 if no bit is cleared
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_flc_j2u(const struct libj2_j2u *a)
@@ -240,6 +260,8 @@ libj2_flc_j2u(const struct libj2_j2u *a)
* @param a The integer to inspect
* @return 1 if the number of set bits in `a`
* is odd, 0 otherwise (if even)
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline unsigned
libj2_parity_j2u(const struct libj2_j2u *a)
@@ -264,6 +286,8 @@ libj2_parity_j2u(const struct libj2_j2u *a)
* integer except the least significant set bit
*
* @param a The integer to modify; will be updated
+ *
+ * @since 1.0
*/
inline void
libj2_kfs_j2u(struct libj2_j2u *a)
@@ -280,6 +304,8 @@ libj2_kfs_j2u(struct libj2_j2u *a)
*
* @param a The integer to modify
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_kfs_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
@@ -297,6 +323,8 @@ libj2_kfs_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
* integer except the most significant set bit
*
* @param a The integer to modify; will be modified
+ *
+ * @since 1.0
*/
inline void
libj2_kls_j2u(struct libj2_j2u *a)
@@ -313,6 +341,8 @@ libj2_kls_j2u(struct libj2_j2u *a)
*
* @param a The integer to modify
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_kls_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
@@ -330,6 +360,8 @@ libj2_kls_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
* unsigned double-max precision integer
*
* @param a The integer to modify; will be updated
+ *
+ * @since 1.0
*/
inline void
libj2_cfs_j2u(struct libj2_j2u *a)
@@ -346,6 +378,8 @@ libj2_cfs_j2u(struct libj2_j2u *a)
*
* @param a The integer to modify
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_cfs_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
@@ -363,6 +397,8 @@ libj2_cfs_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
* unsigned double-max precision integer
*
* @param a The integer to modify; will be modified
+ *
+ * @since 1.0
*/
inline void
libj2_cls_j2u(struct libj2_j2u *a)
@@ -379,6 +415,8 @@ libj2_cls_j2u(struct libj2_j2u *a)
*
* @param a The integer to modify
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_cls_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
@@ -396,6 +434,8 @@ libj2_cls_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
* unsigned double-max precision integer
*
* @param a The integer to modify; will be updated
+ *
+ * @since 1.0
*/
inline void
libj2_sfc_j2u(struct libj2_j2u *a)
@@ -412,6 +452,8 @@ libj2_sfc_j2u(struct libj2_j2u *a)
*
* @param a The integer to modify
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_sfc_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
@@ -429,6 +471,8 @@ libj2_sfc_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
* unsigned double-max precision integer
*
* @param a The integer to modify; will be modified
+ *
+ * @since 1.0
*/
inline void
libj2_slc_j2u(struct libj2_j2u *a)
@@ -445,6 +489,8 @@ libj2_slc_j2u(struct libj2_j2u *a)
*
* @param a The integer to modify
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_slc_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
diff --git a/libj2/bit-shifting.h b/libj2/bit-shifting.h
index bb691bc..acceb4c 100644
--- a/libj2/bit-shifting.h
+++ b/libj2/bit-shifting.h
@@ -20,6 +20,8 @@
* @param a The integer to shift, also used as the
* output parameter for the result
* @param b The number of positions to shift each bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_lsh(struct libj2_j2u *a, unsigned b)
@@ -54,6 +56,8 @@ libj2_j2u_lsh(struct libj2_j2u *a, unsigned b)
* @param a The integer to shift
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_lsh_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -89,6 +93,8 @@ libj2_j2u_lsh_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *re
* @param a The integer to shift
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_lsh_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
@@ -117,6 +123,8 @@ libj2_ju_lsh_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
* @param b The number of positions to shift each bit
* @return 1 if any set bit was discarded because
* it was shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_lsh_overflow(struct libj2_j2u *a, unsigned b)
@@ -167,6 +175,8 @@ libj2_j2u_lsh_overflow(struct libj2_j2u *a, unsigned b)
* @param res Output parameter for the result
* @return 1 if any set bit was discarded because
* it was shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_lsh_to_j2u_overflow(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -198,6 +208,8 @@ libj2_j2u_lsh_to_j2u_overflow(const struct libj2_j2u *a, unsigned b, struct libj
* @param res Output parameter for the result
* @return 1 if any set bit was discarded because
* it was shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_lsh_to_j2u_overflow(uintmax_t a, unsigned b, struct libj2_j2u *res)
@@ -223,6 +235,8 @@ libj2_ju_lsh_to_j2u_overflow(uintmax_t a, unsigned b, struct libj2_j2u *res)
* @param a The integer to shift, also used as the
* output parameter for the result
* @param b The number of positions to shift each bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rsh(struct libj2_j2u *a, unsigned b)
@@ -257,6 +271,8 @@ libj2_j2u_rsh(struct libj2_j2u *a, unsigned b)
* @param a The integer to shift
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rsh_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -285,6 +301,8 @@ libj2_j2u_rsh_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *re
* @param a The integer to shift
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_rsh_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
@@ -313,6 +331,8 @@ libj2_ju_rsh_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
* @param b The number of positions to shift each bit
* @return 1 if any set bit was discarded because
* it was shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsh_underflow(struct libj2_j2u *a, unsigned b)
@@ -363,6 +383,8 @@ libj2_j2u_rsh_underflow(struct libj2_j2u *a, unsigned b)
* @param res Output parameter for the result
* @return 1 if any set bit was discarded because
* it was shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsh_to_j2u_underflow(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -394,6 +416,8 @@ libj2_j2u_rsh_to_j2u_underflow(const struct libj2_j2u *a, unsigned b, struct lib
* @param res Output parameter for the result
* @return 1 if any set bit was discarded because
* it was shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_rsh_to_j2u_underflow(uintmax_t a, unsigned b, struct libj2_j2u *res)
@@ -417,6 +441,8 @@ libj2_ju_rsh_to_j2u_underflow(uintmax_t a, unsigned b, struct libj2_j2u *res)
* @param a The integer to rotate, also used as the
* output parameter for the result
* @param b The number of positions to shift each bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_lrot(struct libj2_j2u *a, unsigned b)
@@ -453,6 +479,8 @@ libj2_j2u_lrot(struct libj2_j2u *a, unsigned b)
* @param a The integer to rotate
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_lrot_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -479,6 +507,8 @@ libj2_j2u_lrot_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *r
* @param a The integer to rotate
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_lrot_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
@@ -502,6 +532,8 @@ libj2_ju_lrot_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
* @param a The integer to rotate, also used as the
* output parameter for the result
* @param b The number of positions to shift each bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rrot(struct libj2_j2u *a, unsigned b)
@@ -538,6 +570,8 @@ libj2_j2u_rrot(struct libj2_j2u *a, unsigned b)
* @param a The integer to rotate
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rrot_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -564,6 +598,8 @@ libj2_j2u_rrot_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *r
* @param a The integer to rotate
* @param b The number of positions to shift each bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_rrot_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
@@ -585,6 +621,8 @@ libj2_ju_rrot_to_j2u(uintmax_t a, unsigned b, struct libj2_j2u *res)
* @param a The integer to shift (dry-run)
* @param b The number of positions to shift each bit
* @return 1 if set bit would be be shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_lsh_overflow_p(const struct libj2_j2u *a, unsigned b)
@@ -613,6 +651,8 @@ libj2_j2u_lsh_overflow_p(const struct libj2_j2u *a, unsigned b)
* @param a The integer to shift (dry-run)
* @param b The number of positions to shift each bit
* @return 1 if set bit would be be shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_lsh_overflow_p(uintmax_t a, unsigned b)
@@ -638,6 +678,8 @@ libj2_ju_lsh_overflow_p(uintmax_t a, unsigned b)
* @param a The integer to shift (dry-run)
* @param b The number of positions to shift each bit
* @return 1 if set bit would be be shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsh_underflow_p(const struct libj2_j2u *a, unsigned b)
@@ -666,6 +708,8 @@ libj2_j2u_rsh_underflow_p(const struct libj2_j2u *a, unsigned b)
* @param a The integer to shift (dry-run)
* @param b The number of positions to shift each bit
* @return 1 if set bit would be be shifted out, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_rsh_underflow_p(uintmax_t a, unsigned b)
diff --git a/libj2/bitwise-logic.h b/libj2/bitwise-logic.h
index 288994b..b833e38 100644
--- a/libj2/bitwise-logic.h
+++ b/libj2/bitwise-logic.h
@@ -12,6 +12,8 @@
* @param b The index of the bit to test,
* 0 for the least significant bit
* @return 1 if the bit is set, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_test_bit(const struct libj2_j2u *a, unsigned b)
@@ -33,6 +35,8 @@ libj2_j2u_test_bit(const struct libj2_j2u *a, unsigned b)
* @param b The other integer
* @return 1 if the two integers have set bits
* in common, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_test_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -50,6 +54,8 @@ libj2_j2u_test_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param b The max precision integer
* @return 1 if the two integers have set bits
* in common, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_test_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -67,6 +73,8 @@ libj2_j2u_test_ju(const struct libj2_j2u *a, uintmax_t b)
* @param b The max precision integer
* @return 1 if high part of `a` have set bits
* in common with `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_test_high_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -81,6 +89,8 @@ libj2_j2u_test_high_ju(const struct libj2_j2u *a, uintmax_t b)
*
* @param a The integer, also used as output
* parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_not_j2u(struct libj2_j2u *a)
@@ -96,6 +106,8 @@ libj2_not_j2u(struct libj2_j2u *a)
*
* @param a The integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_not_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
@@ -113,6 +125,8 @@ libj2_not_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
*
* @param a The integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_not_ju_to_j2u(uintmax_t a, struct libj2_j2u *res)
@@ -129,6 +143,8 @@ libj2_not_ju_to_j2u(uintmax_t a, struct libj2_j2u *res)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_and_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -146,6 +162,8 @@ libj2_j2u_and_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_and_ju(struct libj2_j2u *a, uintmax_t b)
@@ -162,6 +180,8 @@ libj2_j2u_and_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_and_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -179,6 +199,8 @@ libj2_j2u_and_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_and_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -196,6 +218,8 @@ libj2_j2u_and_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_and_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -211,6 +235,8 @@ libj2_ju_and_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_or_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -228,6 +254,8 @@ libj2_j2u_or_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_or_ju(struct libj2_j2u *a, uintmax_t b)
@@ -243,6 +271,8 @@ libj2_j2u_or_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_or_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -260,6 +290,8 @@ libj2_j2u_or_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, st
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_or_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -277,6 +309,8 @@ libj2_j2u_or_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_or_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -292,6 +326,8 @@ libj2_ju_or_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xor_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -309,6 +345,8 @@ libj2_j2u_xor_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xor_ju(struct libj2_j2u *a, uintmax_t b)
@@ -324,6 +362,8 @@ libj2_j2u_xor_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xor_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -341,6 +381,8 @@ libj2_j2u_xor_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xor_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -358,6 +400,8 @@ libj2_j2u_xor_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_xor_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -373,6 +417,8 @@ libj2_ju_xor_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nand_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -390,6 +436,8 @@ libj2_j2u_nand_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nand_ju(struct libj2_j2u *a, uintmax_t b)
@@ -406,6 +454,8 @@ libj2_j2u_nand_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nand_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -423,6 +473,8 @@ libj2_j2u_nand_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b,
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nand_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -440,6 +492,8 @@ libj2_j2u_nand_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_nand_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -455,6 +509,8 @@ libj2_ju_nand_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nor_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -472,6 +528,8 @@ libj2_j2u_nor_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nor_ju(struct libj2_j2u *a, uintmax_t b)
@@ -488,6 +546,8 @@ libj2_j2u_nor_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nor_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -505,6 +565,8 @@ libj2_j2u_nor_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nor_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -522,6 +584,8 @@ libj2_j2u_nor_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_nor_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -537,6 +601,8 @@ libj2_ju_nor_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xnor_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -554,6 +620,8 @@ libj2_j2u_xnor_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xnor_ju(struct libj2_j2u *a, uintmax_t b)
@@ -570,6 +638,8 @@ libj2_j2u_xnor_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xnor_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -587,6 +657,8 @@ libj2_j2u_xnor_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b,
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xnor_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -604,6 +676,8 @@ libj2_j2u_xnor_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_xnor_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -619,6 +693,8 @@ libj2_ju_xnor_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_imply_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -640,6 +716,8 @@ libj2_j2u_imply_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_imply_ju(struct libj2_j2u *a, uintmax_t b)
@@ -656,6 +734,8 @@ libj2_j2u_imply_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_imply_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -682,6 +762,8 @@ libj2_j2u_imply_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b,
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_imply_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -698,6 +780,8 @@ libj2_j2u_imply_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_if_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -716,6 +800,8 @@ libj2_j2u_if_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_if_ju(struct libj2_j2u *a, uintmax_t b)
@@ -733,6 +819,8 @@ libj2_j2u_if_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_if_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -749,6 +837,8 @@ libj2_j2u_if_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, st
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_if_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -772,6 +862,8 @@ libj2_j2u_if_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_imply_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -788,6 +880,8 @@ libj2_ju_imply_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_if_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -803,6 +897,8 @@ libj2_ju_if_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nimply_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -821,6 +917,8 @@ libj2_j2u_nimply_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nimply_ju(struct libj2_j2u *a, uintmax_t b)
@@ -838,6 +936,8 @@ libj2_j2u_nimply_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nimply_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -864,6 +964,8 @@ libj2_j2u_nimply_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nimply_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -886,6 +988,8 @@ libj2_j2u_nimply_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nif_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -907,6 +1011,8 @@ libj2_j2u_nif_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand integer, also used as the
* output parameter for result
* @param b The right-hand integer
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nif_ju(struct libj2_j2u *a, uintmax_t b)
@@ -923,6 +1029,8 @@ libj2_j2u_nif_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nif_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -939,6 +1047,8 @@ libj2_j2u_nif_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nif_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -956,6 +1066,8 @@ libj2_j2u_nif_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_nimply_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -972,6 +1084,8 @@ libj2_ju_nimply_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_
* @param a The left-hand integer
* @param b The right-hand integer
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_ju_nif_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -993,6 +1107,8 @@ libj2_ju_nif_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_and_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1023,6 +1139,8 @@ libj2_j2u_and_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_and_bit(struct libj2_j2u *a, unsigned b)
@@ -1044,6 +1162,8 @@ libj2_j2u_and_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_or_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1074,6 +1194,8 @@ libj2_j2u_or_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_or_bit(struct libj2_j2u *a, unsigned b)
@@ -1101,6 +1223,8 @@ libj2_j2u_or_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xor_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1131,6 +1255,8 @@ libj2_j2u_xor_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xor_bit(struct libj2_j2u *a, unsigned b)
@@ -1158,6 +1284,8 @@ libj2_j2u_xor_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_if_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1188,6 +1316,8 @@ libj2_j2u_if_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_if_bit(struct libj2_j2u *a, unsigned b)
@@ -1209,6 +1339,8 @@ libj2_j2u_if_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_imply_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1238,6 +1370,8 @@ libj2_j2u_imply_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_imply_bit(struct libj2_j2u *a, unsigned b)
@@ -1259,6 +1393,8 @@ libj2_j2u_imply_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nand_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1291,6 +1427,8 @@ libj2_j2u_nand_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nand_bit(struct libj2_j2u *a, unsigned b)
@@ -1312,6 +1450,8 @@ libj2_j2u_nand_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nor_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1341,6 +1481,8 @@ libj2_j2u_nor_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nor_bit(struct libj2_j2u *a, unsigned b)
@@ -1362,6 +1504,8 @@ libj2_j2u_nor_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xnor_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1391,6 +1535,8 @@ libj2_j2u_xnor_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_xnor_bit(struct libj2_j2u *a, unsigned b)
@@ -1412,6 +1558,8 @@ libj2_j2u_xnor_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nif_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1444,6 +1592,8 @@ libj2_j2u_nif_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nif_bit(struct libj2_j2u *a, unsigned b)
@@ -1465,6 +1615,8 @@ libj2_j2u_nif_bit(struct libj2_j2u *a, unsigned b)
* the right-hand integer, 0 for the least
* significant bit
* @param res Output parameter for the result
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nimply_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_j2u *res)
@@ -1495,6 +1647,8 @@ libj2_j2u_nimply_bit_to_j2u(const struct libj2_j2u *a, unsigned b, struct libj2_
* @param b The index of bit that shall be set in
* the right-hand integer, 0 for the least
* significant bit
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_nimply_bit(struct libj2_j2u *a, unsigned b)
@@ -1519,6 +1673,8 @@ libj2_j2u_nimply_bit(struct libj2_j2u *a, unsigned b)
* @param b Integer whose set bits should also be set in `a`
* @return 1 if the set bits in `b` are also set in `a`,
* 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_has_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -1537,6 +1693,8 @@ libj2_j2u_has_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param b Integer whose set bits should also be set in `a`
* @return 1 if the set bits in `b` are also set in `a`,
* 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_has_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -1557,6 +1715,8 @@ libj2_j2u_has_ju(const struct libj2_j2u *a, uintmax_t b)
* most significant half (`a->high`)
* @return 1 if the set bits in `b` are also set in `a->high`,
* 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_has_high_ju(const struct libj2_j2u *a, uintmax_t b)
diff --git a/libj2/constants.h b/libj2/constants.h
index a13eeac..481c431 100644
--- a/libj2/constants.h
+++ b/libj2/constants.h
@@ -12,6 +12,8 @@
*
* @param a The integer to inspect
* @return 1 if `a` has the value 0, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_is_zero(const struct libj2_j2u *a)
@@ -26,6 +28,8 @@ libj2_j2u_is_zero(const struct libj2_j2u *a)
* `libj2_j2u_zero(res)` implements `(void)(*res = 0)`
*
* @param res The integer to assign the value 0 to
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_zero(struct libj2_j2u *res)
@@ -40,6 +44,8 @@ libj2_j2u_zero(struct libj2_j2u *res)
*
* @param a The integer to inspect
* @return 1 if `a` has highest representable value, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_is_max(const struct libj2_j2u *a)
@@ -53,6 +59,8 @@ libj2_j2u_is_max(const struct libj2_j2u *a)
* precision integer
*
* @param res The integer to assign the value to
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_max(struct libj2_j2u *res)
@@ -70,6 +78,8 @@ libj2_j2u_max(struct libj2_j2u *res)
*
* @param a The integer to inspect
* @return 1 if `a` has lowest representable value, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_is_min(const struct libj2_j2u *a)
@@ -86,6 +96,8 @@ libj2_j2u_is_min(const struct libj2_j2u *a)
* does the same thing as `libj2_j2u_zero(res)`
*
* @param res The integer to assign the value to
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_min(struct libj2_j2u *res)
diff --git a/libj2/constructors.h b/libj2/constructors.h
index 3f2b8fe..12fd8f0 100644
--- a/libj2/constructors.h
+++ b/libj2/constructors.h
@@ -12,6 +12,8 @@
*
* @param a The value to assign to `*res`
* @param res The integer to assign the value `a` to
+ *
+ * @since 1.0
*/
inline void
libj2_ju_to_j2u(uintmax_t a, struct libj2_j2u *res)
diff --git a/libj2/division.h b/libj2/division.h
index 9797f4e..427c75e 100644
--- a/libj2/division.h
+++ b/libj2/division.h
@@ -20,6 +20,8 @@
* the output parameter for the remainder
* @param b The divisor (right-hand)
* @param res_q Output parameter for the quotient
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_divmod_j2u_to_j2u(struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res_q)
@@ -75,6 +77,8 @@ out:
* @param b The divisor (right-hand)
* @param res_q Output parameter for the quotient
* @param res_r Output parameter for the remainder
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_divmod_j2u_to_j2u_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b,
@@ -110,6 +114,8 @@ libj2_j2u_divmod_j2u_to_j2u_j2u(const struct libj2_j2u *a, const struct libj2_j2
* the output parameter for the remainder
* @param b The divisor (right-hand)
* @return The low half of the quotient
+ *
+ * @since 1.0
*/
inline uintmax_t
libj2_j2u_divmod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -140,6 +146,8 @@ libj2_j2u_divmod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* the output parameter for the remainder
* @param b The divisor (right-hand)
* @return The low half of the quotient
+ *
+ * @since 1.0
*/
inline uintmax_t
libj2_j2u_divmod_ju(struct libj2_j2u *a, uintmax_t b)
@@ -179,6 +187,8 @@ libj2_j2u_divmod_ju(struct libj2_j2u *a, uintmax_t b)
* the output parameter for the remainder
* @param b The divisor (right-hand)
* @param res_q Output parameter for the quotient
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_divmod_ju_to_j2u(struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res_q)
@@ -205,6 +215,8 @@ libj2_j2u_divmod_ju_to_j2u(struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *r
* @param b The divisor (right-hand)
* @param res_q Output parameter for the quotient
* @param res_r Output parameter for the remainder
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_divmod_ju_to_j2u_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res_q, struct libj2_j2u *res_r)
@@ -234,6 +246,8 @@ libj2_j2u_divmod_ju_to_j2u_j2u(const struct libj2_j2u *a, uintmax_t b, struct li
* the output parameter for the remainder
* @param b The dividend (left-hand)
* @param res_q Output parameter for the quotient
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rdivmod_j2u_to_j2u(struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res_q)
@@ -266,6 +280,8 @@ libj2_j2u_rdivmod_j2u_to_j2u(struct libj2_j2u *a, const struct libj2_j2u *b, str
* the output parameter for the remainder
* @param b The dividend (left-hand)
* @return The low half of the quotient
+ *
+ * @since 1.0
*/
inline uintmax_t
libj2_j2u_rdivmod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -286,6 +302,8 @@ libj2_j2u_rdivmod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The dividend (left-hand), also used as
* the output parameter for the quotient
* @param b The divisor (right-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_div_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -306,6 +324,8 @@ libj2_j2u_div_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The dividend (left-hand)
* @param b The divisor (right-hand)
* @param res Output parameter for the quotient
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_div_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -326,6 +346,8 @@ libj2_j2u_div_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a The dividend (left-hand)
* @param b The divisor (right-hand)
* @return The low half of the quotient
+ *
+ * @since 1.0
*/
inline uintmax_t
libj2_j2u_div_j2u_return(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -348,6 +370,8 @@ libj2_j2u_div_j2u_return(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The divisor (right-hand), also used as
* the output parameter for the quotient
* @param b The dividend (left-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rdiv_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -368,6 +392,8 @@ libj2_j2u_rdiv_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The dividend (left-hand), also used as
* the output parameter for the quotient
* @param b The divisor (right-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_div_ju(struct libj2_j2u *a, uintmax_t b)
@@ -389,6 +415,8 @@ libj2_j2u_div_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The dividend (left-hand)
* @param b The divisor (right-hand)
* @param res Output parameter for the quotient
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_div_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -410,6 +438,8 @@ libj2_j2u_div_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The dividend (left-hand)
* @param b The divisor (right-hand)
* @return The low half of the quotient
+ *
+ * @since 1.0
*/
inline uintmax_t
libj2_j2u_div_ju_return(const struct libj2_j2u *a, uintmax_t b)
@@ -429,6 +459,8 @@ libj2_j2u_div_ju_return(const struct libj2_j2u *a, uintmax_t b)
* @param a The dividend (left-hand), also used as
* the output parameter for the remainder
* @param b The divisor (right-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -448,6 +480,8 @@ libj2_j2u_mod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The dividend (left-hand)
* @param b The divisor (right-hand)
* @param res Output parameter for the remainder
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mod_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -477,6 +511,8 @@ libj2_j2u_mod_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a The divisor (right-hand), also used as
* the output parameter for the remainder
* @param b The dividend (left-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rmod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -497,6 +533,8 @@ libj2_j2u_rmod_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The dividend (left-hand), also used as
* the output parameter for the remainder
* @param b The divisor (right-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mod_ju(struct libj2_j2u *a, uintmax_t b)
@@ -527,6 +565,8 @@ libj2_j2u_mod_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The dividend (left-hand)
* @param b The divisor (right-hand)
* @param res Output parameter for the remainder
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mod_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
diff --git a/libj2/multiplication.h b/libj2/multiplication.h
index 09ead3c..eb0d9a5 100644
--- a/libj2/multiplication.h
+++ b/libj2/multiplication.h
@@ -15,6 +15,8 @@
* @param a The multiplier
* @param b The multiplicand
* @param res Output parameter for the product
+ *
+ * @since 1.0
*/
inline void
libj2_ju_mul_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
@@ -71,6 +73,8 @@ libj2_ju_mul_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
* @param a The multiplier, also used as the
* output parameter for the product
* @param b The multiplicand
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mul_ju(struct libj2_j2u *a, uintmax_t b)
@@ -93,6 +97,8 @@ libj2_j2u_mul_ju(struct libj2_j2u *a, uintmax_t b)
* @param a The multiplier
* @param b The multiplicand
* @param res Output parameter for the product
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mul_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -114,6 +120,8 @@ libj2_j2u_mul_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a The multiplier
* @param b The multiplicand
* @param res Output parameter for the product
+ *
+ * @since 1.0
*/
inline void
libj2_ju_mul_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -136,6 +144,8 @@ libj2_ju_mul_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* output parameter for the product
* @param b The multiplicand
* @return 1 if the result overflowed, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_ju_overflow(struct libj2_j2u *a, uintmax_t b)
@@ -179,6 +189,8 @@ libj2_j2u_mul_ju_overflow(struct libj2_j2u *a, uintmax_t b)
* @param b The multiplicand
* @param res Output parameter for the product
* @return 1 if the result overflowed, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -202,6 +214,8 @@ libj2_j2u_mul_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct
* @param b The multiplicand
* @param res Output parameter for the product
* @return 1 if the result overflowed, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_mul_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -224,6 +238,8 @@ libj2_ju_mul_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct
* @param b The multiplicand; will be tainted
*
* `a` and `b` must not be the same pointers
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mul_j2u_destructive(struct libj2_j2u *restrict a /* result */, struct libj2_j2u *restrict b /* destructed */)
@@ -246,6 +262,8 @@ libj2_j2u_mul_j2u_destructive(struct libj2_j2u *restrict a /* result */, struct
* @param a The multiplier, also used as the
* output parameter for the product
* @param b The multiplicand
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mul_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -270,6 +288,8 @@ libj2_j2u_mul_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @return 1 if the result overflowed, 0 otherwise
*
* `a` and `b` must not be the same pointers
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_j2u_overflow_destructive(struct libj2_j2u *restrict a /* result */, struct libj2_j2u *restrict b /* destructed */)
@@ -317,6 +337,8 @@ libj2_j2u_mul_j2u_overflow_destructive(struct libj2_j2u *restrict a /* result */
* output parameter for the product
* @param b The multiplicand
* @return 1 if the result overflowed, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -336,6 +358,8 @@ libj2_j2u_mul_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The multiplier
* @param b The multiplicand
* @param res Output parameter for the product
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_mul_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -356,6 +380,8 @@ libj2_j2u_mul_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param b The multiplicand
* @param res Output parameter for the product
* @return 1 if the result overflowed, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -375,6 +401,8 @@ libj2_j2u_mul_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_
* @return `LIBJ2_OVERFLOW` (= 1) if the multiplication would overflow,
* `LIBJ2_NO_OVERFLOW` (= 0) if the multiplication would not overflow,
* or `LIBJ2_OVERFLOW_UNKNOWN` if the prediction was not made
+ *
+ * @since 1.0
*/
inline enum libj2_overflow
libj2_j2u_mul_j2u_overflow_p_quick(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -407,6 +435,8 @@ libj2_j2u_mul_j2u_overflow_p_quick(const struct libj2_j2u *a, const struct libj2
* @return `LIBJ2_OVERFLOW` (= 1) if the multiplication would overflow,
* `LIBJ2_NO_OVERFLOW` (= 0) if the multiplication would not overflow,
* or `LIBJ2_OVERFLOW_UNKNOWN` if the prediction was not made
+ *
+ * @since 1.0
*/
inline enum libj2_overflow
libj2_j2u_mul_ju_overflow_p_quick(const struct libj2_j2u *a, uintmax_t b)
@@ -424,6 +454,8 @@ libj2_j2u_mul_ju_overflow_p_quick(const struct libj2_j2u *a, uintmax_t b)
* @return `LIBJ2_OVERFLOW` (= 1) if the multiplication would overflow,
* `LIBJ2_NO_OVERFLOW` (= 0) if the multiplication would not overflow,
* or `LIBJ2_OVERFLOW_UNKNOWN` if the prediction was not made
+ *
+ * @since 1.0
*/
inline enum libj2_overflow
libj2_ju_mul_j2u_overflow_p_quick(uintmax_t a, const struct libj2_j2u *b)
@@ -444,6 +476,8 @@ libj2_ju_mul_j2u_overflow_p_quick(uintmax_t a, const struct libj2_j2u *b)
* @param a The multiplier
* @param b The multiplicand
* @return 1 if the multiplication would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -490,6 +524,8 @@ libj2_j2u_mul_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *
* @param a The multiplier
* @param b The multiplicand
* @return 1 if the multiplication would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
@@ -509,6 +545,8 @@ libj2_j2u_mul_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
* @param a The multiplier
* @param b The multiplicand
* @return 1 if the multiplication would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_mul_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b)
@@ -533,6 +571,8 @@ libj2_ju_mul_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b)
* will never be set to any other value
* @return 1 if the multiplication would overflow
* (did overflow), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_j2u_to_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res, int *res_set)
@@ -569,6 +609,8 @@ libj2_j2u_mul_j2u_to_j2u_overflow_p(const struct libj2_j2u *a, const struct libj
* will never be set to any other value
* @return 1 if the multiplication would overflow
* (did overflow), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_mul_ju_to_j2u_overflow_p(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res, int *res_set)
@@ -593,6 +635,8 @@ libj2_j2u_mul_ju_to_j2u_overflow_p(const struct libj2_j2u *a, uintmax_t b, struc
* will never be set to any other value
* @return 1 if the multiplication would overflow
* (did overflow), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_mul_j2u_to_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res, int *res_set)
diff --git a/libj2/sign-shifting.h b/libj2/sign-shifting.h
index 034259e..89c2ecf 100644
--- a/libj2/sign-shifting.h
+++ b/libj2/sign-shifting.h
@@ -12,6 +12,8 @@
*
* @param a The integer to invert, also used as the
* output parameter for the inverse
+ *
+ * @since 1.0
*/
inline void
libj2_minus_j2u(struct libj2_j2u *a)
@@ -32,6 +34,8 @@ libj2_minus_j2u(struct libj2_j2u *a)
*
* @param a The integer to invert
* @param res Output parameter for the inverse
+ *
+ * @since 1.0
*/
inline void
libj2_minus_j2u_to_j2u(const struct libj2_j2u *a, struct libj2_j2u *res)
diff --git a/libj2/signum.h b/libj2/signum.h
index cfd047d..60b37c1 100644
--- a/libj2/signum.h
+++ b/libj2/signum.h
@@ -12,6 +12,8 @@
*
* @param a The integer to inspect
* @return 1 if `a` has a positive value, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_is_positive(const struct libj2_j2u *a)
@@ -34,6 +36,8 @@ libj2_j2u_is_positive(const struct libj2_j2u *a)
* @return -1 if `a` is negative (impossible),
* +1 if `a` is positive, and
* 0 if `a` is 0
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_sgn_j2u(const struct libj2_j2u *a)
diff --git a/libj2/subtraction.h b/libj2/subtraction.h
index 7f0bbce..9c2f775 100644
--- a/libj2/subtraction.h
+++ b/libj2/subtraction.h
@@ -14,6 +14,8 @@
* @param a The minuend (left-hand), also used as the
* output parameter for the difference
* @param b The subtrahend (right-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_sub_ju(struct libj2_j2u *a, uintmax_t b)
@@ -43,6 +45,8 @@ libj2_j2u_sub_ju(struct libj2_j2u *a, uintmax_t b)
* @return 1 if the result overflowed (`b` is greater than `*a`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_sub_ju_overflow(struct libj2_j2u *a, uintmax_t b)
@@ -75,6 +79,8 @@ libj2_j2u_sub_ju_overflow(struct libj2_j2u *a, uintmax_t b)
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @param res Output parameter for the difference
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_sub_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -105,6 +111,8 @@ libj2_j2u_sub_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @return 1 if the result overflowed (`b` is greater than `*a`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_sub_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -140,6 +148,8 @@ libj2_j2u_sub_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @param res Output parameter for the difference
+ *
+ * @since 1.0
*/
inline void
libj2_ju_sub_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
@@ -169,6 +179,8 @@ libj2_ju_sub_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
* @return 1 if the result overflowed (`b` is greater than `*a`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_sub_ju_to_j2u_overflow(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
@@ -194,6 +206,8 @@ libj2_ju_sub_ju_to_j2u_overflow(uintmax_t a, uintmax_t b, struct libj2_j2u *res)
* @param a The minuend (left-hand), also used
* as the output parameter for the difference
* @param b The subtrahend (right-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_sub_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -213,6 +227,8 @@ libj2_j2u_sub_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @param res Output parameter for the difference
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_sub_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -242,6 +258,8 @@ libj2_j2u_sub_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @return 1 if the result overflowed (`b` is greater than `*a`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_sub_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -271,6 +289,8 @@ libj2_j2u_sub_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
* @return 1 if the result overflowed (`b` is greater than `*a`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_sub_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -308,6 +328,8 @@ libj2_j2u_sub_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @param res Output parameter for the difference
+ *
+ * @since 1.0
*/
inline void
libj2_ju_sub_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -337,6 +359,8 @@ libj2_ju_sub_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u
* @return 1 if the result overflowed (`*b` is greater than `a`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_sub_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -367,6 +391,8 @@ libj2_ju_sub_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct
* @param a The subtrahend (right-hand), also used as
* the output parameter for the difference
* @param b The minuend (left-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rsub_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -399,6 +425,8 @@ libj2_j2u_rsub_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @return 1 if the result overflowed (`*a` is greater than `*b`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsub_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -436,6 +464,8 @@ libj2_j2u_rsub_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The subtrahend (right-hand), also used as
* the output parameter for the difference
* @param b The minuend (left-hand)
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_rsub_ju(struct libj2_j2u *a, uintmax_t b)
@@ -470,6 +500,8 @@ libj2_j2u_rsub_ju(struct libj2_j2u *a, uintmax_t b)
* @return 1 if the result overflowed (`*a` is greater than `b`),
* so the result wrapped around (actual difference is
* negative), 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsub_ju_overflow(struct libj2_j2u *a, uintmax_t b)
@@ -505,6 +537,8 @@ libj2_j2u_rsub_ju_overflow(struct libj2_j2u *a, uintmax_t b)
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @return 1 if the subtraction would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_sub_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
@@ -524,6 +558,8 @@ libj2_j2u_sub_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @return 1 if the subtraction would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_sub_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b)
@@ -543,6 +579,8 @@ libj2_ju_sub_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b)
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @return 1 if the subtraction would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_ju_sub_ju_overflow_p(uintmax_t a, uintmax_t b)
@@ -563,6 +601,8 @@ libj2_ju_sub_ju_overflow_p(uintmax_t a, uintmax_t b)
* @param a The minuend (left-hand)
* @param b The subtrahend (right-hand)
* @return 1 if the subtraction would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_sub_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -582,6 +622,8 @@ libj2_j2u_sub_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *
* @param a The subtrahend (right-hand)
* @param b The minuend (left-hand)
* @return 1 if the subtraction would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsub_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -601,6 +643,8 @@ libj2_j2u_rsub_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u
* @param a The subtrahend (right-hand)
* @param b The minuend (left-hand)
* @return 1 if the subtraction would overflow, 0 otherwise
+ *
+ * @since 1.0
*/
inline int
libj2_j2u_rsub_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b)
diff --git a/libj2/unsigned-comparsion.h b/libj2/unsigned-comparsion.h
index fcc81c9..39fdd07 100644
--- a/libj2/unsigned-comparsion.h
+++ b/libj2/unsigned-comparsion.h
@@ -14,6 +14,8 @@
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is less than `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_lt_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -31,6 +33,8 @@ libj2_j2u_lt_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is less than or equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_le_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -48,6 +52,8 @@ libj2_j2u_le_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is greater than `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_gt_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -65,6 +71,8 @@ libj2_j2u_gt_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is greater than or equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_ge_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -82,6 +90,8 @@ libj2_j2u_ge_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_eq_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -99,6 +109,8 @@ libj2_j2u_eq_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is not equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_ne_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -119,6 +131,8 @@ libj2_j2u_ne_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @return -1 if `*a` is less than `*b`,
* +1 if `*a` is greater than `*b`,
* 0 if `*a` is equal to `*b`
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_cmp_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -136,6 +150,8 @@ libj2_j2u_cmp_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is less than `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_lt_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -153,6 +169,8 @@ libj2_j2u_lt_ju(const struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is less than or equal to `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_le_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -170,6 +188,8 @@ libj2_j2u_le_ju(const struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is less than `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_gt_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -187,6 +207,8 @@ libj2_j2u_gt_ju(const struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is greater than or equal to `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_ge_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -204,6 +226,8 @@ libj2_j2u_ge_ju(const struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is equal to `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_eq_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -221,6 +245,8 @@ libj2_j2u_eq_ju(const struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `*a` is not equal to `b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_ne_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -241,6 +267,8 @@ libj2_j2u_ne_ju(const struct libj2_j2u *a, uintmax_t b)
* @return -1 if `*a` is less than `b`,
* +1 if `*a` is greater than `b`,
* 0 if `*a` is equal to `b`
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_j2u_cmp_ju(const struct libj2_j2u *a, uintmax_t b)
@@ -258,6 +286,8 @@ libj2_j2u_cmp_ju(const struct libj2_j2u *a, uintmax_t b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `a` is less than `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_lt_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -275,6 +305,8 @@ libj2_ju_lt_j2u(uintmax_t a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `a` is less than or equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_le_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -292,6 +324,8 @@ libj2_ju_le_j2u(uintmax_t a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `a` is less than `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_gt_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -309,6 +343,8 @@ libj2_ju_gt_j2u(uintmax_t a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `a` is greater than or equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_ge_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -326,6 +362,8 @@ libj2_ju_ge_j2u(uintmax_t a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `a` is equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_eq_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -343,6 +381,8 @@ libj2_ju_eq_j2u(uintmax_t a, const struct libj2_j2u *b)
* @param a The left-hand value
* @param b The right-hand value
* @return 1 if `a` is not equal to `*b`, 0 otherwise
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_ne_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -363,6 +403,8 @@ libj2_ju_ne_j2u(uintmax_t a, const struct libj2_j2u *b)
* @return -1 if `a` is less than `*b`,
* +1 if `a` is greater than `*b`,
* 0 if `a` is equal to `*b`
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline int
libj2_ju_cmp_j2u(uintmax_t a, const struct libj2_j2u *b)
@@ -384,6 +426,8 @@ libj2_ju_cmp_j2u(uintmax_t a, const struct libj2_j2u *b)
* @param a One of the values
* @param b The other value
* @param res Output parameter for the maximum of `*a` and `*b`
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_max_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -402,6 +446,8 @@ libj2_j2u_max_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a One of the values, and output parameter
* for the maximum of `*a` and `*b`
* @param b The other value
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_max_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -422,6 +468,8 @@ libj2_j2u_max_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a One of the values, and output parameter
* for the maximum of `*a` and `b`
* @param b The other value
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_max_ju(struct libj2_j2u *a, uintmax_t b)
@@ -442,6 +490,8 @@ libj2_j2u_max_ju(struct libj2_j2u *a, uintmax_t b)
* @param a One of the values
* @param b The other value
* @param res Output parameter for the maximum of `*a` and `b`
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_max_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -465,6 +515,8 @@ libj2_j2u_max_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* @param a One of the values
* @param b The other value
* @param res Output parameter for the minimum of `*a` and `*b`
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_min_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res)
@@ -483,6 +535,8 @@ libj2_j2u_min_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, s
* @param a One of the values, and output parameter
* for the minimum of `*a` and `*b`
* @param b The other value
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_min_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
@@ -503,6 +557,8 @@ libj2_j2u_min_j2u(struct libj2_j2u *a, const struct libj2_j2u *b)
* @param a One of the values, and output parameter
* for the minimum of `*a` and `b`
* @param b The other value
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_min_ju(struct libj2_j2u *a, uintmax_t b)
@@ -525,6 +581,8 @@ libj2_j2u_min_ju(struct libj2_j2u *a, uintmax_t b)
* @param a One of the values
* @param b The other value
* @param res Output parameter for the minimum of `*a` and `b`
+ *
+ * @since 1.0
*/
inline void
libj2_j2u_min_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res)
@@ -546,6 +604,8 @@ libj2_j2u_min_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u
* the maximum of the values
* @param args `NULL` terminated list of additional values; each
* argument shall have the type `const struct libj2_j2u *`
+ *
+ * @since 1.0
*/
inline void
libj2_vmax_j2u(struct libj2_j2u *a, va_list args)
@@ -564,6 +624,8 @@ libj2_vmax_j2u(struct libj2_j2u *a, va_list args)
* the maximum of the values
* @param ... `NULL` terminated list of additional values; each
* argument shall have the type `const struct libj2_j2u *`
+ *
+ * @since 1.0
*/
inline void
libj2_max_j2u(struct libj2_j2u *a, ... /*, NULL */)
@@ -584,6 +646,8 @@ libj2_max_j2u(struct libj2_j2u *a, ... /*, NULL */)
* argument shall have the type `const struct libj2_j2u *`
* @return One of the `const struct libj2_j2u *` that as the
* maximum of the values of each argument
+ *
+ * @since 1.0
*/
inline const struct libj2_j2u *
libj2_vmax_j2u_return(const struct libj2_j2u *a, va_list args)
@@ -605,6 +669,8 @@ libj2_vmax_j2u_return(const struct libj2_j2u *a, va_list args)
* argument shall have the type `const struct libj2_j2u *`
* @return One of the `const struct libj2_j2u *` that as the
* maximum of the values of each argument
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline const struct libj2_j2u *
libj2_max_j2u_return(const struct libj2_j2u *a, ... /*, NULL */)
@@ -625,6 +691,8 @@ libj2_max_j2u_return(const struct libj2_j2u *a, ... /*, NULL */)
* argument shall have the type `const struct libj2_j2u *`,
* followed by a `struct libj2_j2u *` is used as the
* output parameter for the maximum of the values
+ *
+ * @since 1.0
*/
inline void
libj2_vmax_j2u_to_j2u(const struct libj2_j2u *a, va_list args)
@@ -645,6 +713,8 @@ libj2_vmax_j2u_to_j2u(const struct libj2_j2u *a, va_list args)
* argument shall have the type `const struct libj2_j2u *`,
* followed by a `struct libj2_j2u *` is used as the
* output parameter for the maximum of the values
+ *
+ * @since 1.0
*/
inline void
libj2_max_j2u_to_j2u(const struct libj2_j2u *a, ... /*, NULL, struct libj2_j2u *res */)
@@ -664,6 +734,8 @@ libj2_max_j2u_to_j2u(const struct libj2_j2u *a, ... /*, NULL, struct libj2_j2u *
* the minimum of the values
* @param args `NULL` terminated list of additional values; each
* argument shall have the type `const struct libj2_j2u *`
+ *
+ * @since 1.0
*/
inline void
libj2_vmin_j2u(struct libj2_j2u *a, va_list args)
@@ -682,6 +754,8 @@ libj2_vmin_j2u(struct libj2_j2u *a, va_list args)
* the minimum of the values
* @param ... `NULL` terminated list of additional values; each
* argument shall have the type `const struct libj2_j2u *`
+ *
+ * @since 1.0
*/
inline void
libj2_min_j2u(struct libj2_j2u *a, ... /*, NULL */)
@@ -702,6 +776,8 @@ libj2_min_j2u(struct libj2_j2u *a, ... /*, NULL */)
* argument shall have the type `const struct libj2_j2u *`
* @return One of the `const struct libj2_j2u *` that as the
* minimum of the values of each argument
+ *
+ * @since 1.0
*/
inline const struct libj2_j2u *
libj2_vmin_j2u_return(const struct libj2_j2u *a, va_list args)
@@ -723,6 +799,8 @@ libj2_vmin_j2u_return(const struct libj2_j2u *a, va_list args)
* argument shall have the type `const struct libj2_j2u *`
* @return One of the `const struct libj2_j2u *` that as the
* minimum of the values of each argument
+ *
+ * @since 1.0
*/
LIBJ2_PURE_ inline const struct libj2_j2u *
libj2_min_j2u_return(const struct libj2_j2u *a, ... /*, NULL */)
@@ -743,6 +821,8 @@ libj2_min_j2u_return(const struct libj2_j2u *a, ... /*, NULL */)
* argument shall have the type `const struct libj2_j2u *`,
* followed by a `struct libj2_j2u *` is used as the
* output parameter for the minimum of the values
+ *
+ * @since 1.0
*/
inline void
libj2_vmin_j2u_to_j2u(const struct libj2_j2u *a, va_list args)
@@ -763,6 +843,8 @@ libj2_vmin_j2u_to_j2u(const struct libj2_j2u *a, va_list args)
* argument shall have the type `const struct libj2_j2u *`,
* followed by a `struct libj2_j2u *` is used as the
* output parameter for the minimum of the values
+ *
+ * @since 1.0
*/
inline void
libj2_min_j2u_to_j2u(const struct libj2_j2u *a, ... /*, NULL, struct libj2_j2u *res */)