aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2025-12-28 18:22:03 +0100
committerMattias Andrée <m@maandree.se>2025-12-28 18:22:03 +0100
commit1f8fa3333c8445e6ad90858229bc49e5447bf00b (patch)
treeb9eff9cdab92813d2291303c328ee066cc8be997
parentwhitespace (diff)
downloadlibj2-1f8fa3333c8445e6ad90858229bc49e5447bf00b.tar.gz
libj2-1f8fa3333c8445e6ad90858229bc49e5447bf00b.tar.bz2
libj2-1f8fa3333c8445e6ad90858229bc49e5447bf00b.tar.xz
Add man pages for regular subtraction functions
Signed-off-by: Mattias Andrée <m@maandree.se>
-rw-r--r--libj2_j2i_add_j2i.34
l---------libj2_j2i_rsub_j2i.31
-rw-r--r--libj2_j2i_rsub_j2i.c1
l---------libj2_j2i_rsub_j2i_overflow.31
-rw-r--r--libj2_j2i_rsub_j2i_overflow.c1
l---------libj2_j2i_rsub_j2i_overflow_p.31
-rw-r--r--libj2_j2i_rsub_j2i_overflow_p.c1
l---------libj2_j2i_rsub_ji.31
-rw-r--r--libj2_j2i_rsub_ji.c1
l---------libj2_j2i_rsub_ji_overflow.31
-rw-r--r--libj2_j2i_rsub_ji_overflow.c1
l---------libj2_j2i_rsub_ji_overflow_p.31
-rw-r--r--libj2_j2i_rsub_ji_overflow_p.c1
-rw-r--r--libj2_j2i_sub_j2i.3122
-rw-r--r--libj2_j2i_sub_j2i.c1
l---------libj2_j2i_sub_j2i_overflow.31
-rw-r--r--libj2_j2i_sub_j2i_overflow.c1
l---------libj2_j2i_sub_j2i_overflow_p.31
-rw-r--r--libj2_j2i_sub_j2i_overflow_p.c1
l---------libj2_j2i_sub_j2i_to_j2i.31
-rw-r--r--libj2_j2i_sub_j2i_to_j2i.c1
l---------libj2_j2i_sub_j2i_to_j2i_overflow.31
-rw-r--r--libj2_j2i_sub_j2i_to_j2i_overflow.c1
l---------libj2_j2i_sub_ji.31
-rw-r--r--libj2_j2i_sub_ji.c1
l---------libj2_j2i_sub_ji_overflow.31
-rw-r--r--libj2_j2i_sub_ji_overflow.c1
l---------libj2_j2i_sub_ji_overflow_p.31
-rw-r--r--libj2_j2i_sub_ji_overflow_p.c1
l---------libj2_j2i_sub_ji_to_j2i.31
-rw-r--r--libj2_j2i_sub_ji_to_j2i.c1
l---------libj2_j2i_sub_ji_to_j2i_overflow.31
-rw-r--r--libj2_j2i_sub_ji_to_j2i_overflow.c1
l---------libj2_j2u_rsub_j2u.31
-rw-r--r--libj2_j2u_rsub_j2u.c1
l---------libj2_j2u_rsub_j2u_overflow.31
-rw-r--r--libj2_j2u_rsub_j2u_overflow.c1
l---------libj2_j2u_rsub_j2u_overflow_p.31
-rw-r--r--libj2_j2u_rsub_j2u_overflow_p.c1
l---------libj2_j2u_rsub_ju.31
-rw-r--r--libj2_j2u_rsub_ju.c1
l---------libj2_j2u_rsub_ju_overflow.31
-rw-r--r--libj2_j2u_rsub_ju_overflow.c1
l---------libj2_j2u_rsub_ju_overflow_p.31
-rw-r--r--libj2_j2u_rsub_ju_overflow_p.c1
-rw-r--r--libj2_j2u_sub_j2u.3130
-rw-r--r--libj2_j2u_sub_j2u.c1
l---------libj2_j2u_sub_j2u_overflow.31
-rw-r--r--libj2_j2u_sub_j2u_overflow.c1
l---------libj2_j2u_sub_j2u_overflow_p.31
-rw-r--r--libj2_j2u_sub_j2u_overflow_p.c1
l---------libj2_j2u_sub_j2u_to_j2u.31
-rw-r--r--libj2_j2u_sub_j2u_to_j2u.c1
l---------libj2_j2u_sub_j2u_to_j2u_overflow.31
-rw-r--r--libj2_j2u_sub_j2u_to_j2u_overflow.c1
l---------libj2_j2u_sub_ju.31
-rw-r--r--libj2_j2u_sub_ju.c1
l---------libj2_j2u_sub_ju_overflow.31
-rw-r--r--libj2_j2u_sub_ju_overflow.c1
l---------libj2_j2u_sub_ju_overflow_p.31
-rw-r--r--libj2_j2u_sub_ju_overflow_p.c1
l---------libj2_j2u_sub_ju_to_j2u.31
-rw-r--r--libj2_j2u_sub_ju_to_j2u.c1
l---------libj2_j2u_sub_ju_to_j2u_overflow.31
-rw-r--r--libj2_j2u_sub_ju_to_j2u_overflow.c1
l---------libj2_ji_sub_j2i_overflow_p.31
-rw-r--r--libj2_ji_sub_j2i_overflow_p.c1
l---------libj2_ji_sub_j2i_to_j2i.31
-rw-r--r--libj2_ji_sub_j2i_to_j2i.c1
l---------libj2_ji_sub_j2i_to_j2i_overflow.31
-rw-r--r--libj2_ji_sub_j2i_to_j2i_overflow.c1
l---------libj2_ji_sub_ji_to_j2i.31
-rw-r--r--libj2_ji_sub_ji_to_j2i.c1
l---------libj2_ju_sub_j2u_overflow_p.31
-rw-r--r--libj2_ju_sub_j2u_overflow_p.c1
l---------libj2_ju_sub_j2u_to_j2u.31
-rw-r--r--libj2_ju_sub_j2u_to_j2u.c1
l---------libj2_ju_sub_j2u_to_j2u_overflow.31
-rw-r--r--libj2_ju_sub_j2u_to_j2u_overflow.c1
l---------libj2_ju_sub_ju_overflow_p.31
-rw-r--r--libj2_ju_sub_ju_overflow_p.c1
l---------libj2_ju_sub_ju_to_j2u.31
-rw-r--r--libj2_ju_sub_ju_to_j2u.c1
l---------libj2_ju_sub_ju_to_j2u_overflow.31
-rw-r--r--libj2_ju_sub_ju_to_j2u_overflow.c1
85 files changed, 295 insertions, 43 deletions
diff --git a/libj2_j2i_add_j2i.3 b/libj2_j2i_add_j2i.3
index c58cc76..f7d01d2 100644
--- a/libj2_j2i_add_j2i.3
+++ b/libj2_j2i_add_j2i.3
@@ -131,4 +131,6 @@ functions were added in version 1.1 of
.BR libj2 .
.SH SEE ALSO
-.BR libj2 (7)
+.BR libj2 (7),
+.BR libj2_j2i_sub_j2i (3),
+.BR libj2_j2u_sub_j2u (3)
diff --git a/libj2_j2i_rsub_j2i.3 b/libj2_j2i_rsub_j2i.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_rsub_j2i.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_rsub_j2i.c b/libj2_j2i_rsub_j2i.c
index ba68d80..745f31a 100644
--- a/libj2_j2i_rsub_j2i.c
+++ b/libj2_j2i_rsub_j2i.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2i_rsub_j2i(struct libj2_j2i *a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_rsub_j2i_overflow.3 b/libj2_j2i_rsub_j2i_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_rsub_j2i_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_rsub_j2i_overflow.c b/libj2_j2i_rsub_j2i_overflow.c
index 9840a41..a665b5b 100644
--- a/libj2_j2i_rsub_j2i_overflow.c
+++ b/libj2_j2i_rsub_j2i_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_rsub_j2i_overflow(struct libj2_j2i *a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_rsub_j2i_overflow_p.3 b/libj2_j2i_rsub_j2i_overflow_p.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_rsub_j2i_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_rsub_j2i_overflow_p.c b/libj2_j2i_rsub_j2i_overflow_p.c
index a45675c..9459beb 100644
--- a/libj2_j2i_rsub_j2i_overflow_p.c
+++ b/libj2_j2i_rsub_j2i_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_rsub_j2i_overflow_p(const struct libj2_j2i *a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_rsub_ji.3 b/libj2_j2i_rsub_ji.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_rsub_ji.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_rsub_ji.c b/libj2_j2i_rsub_ji.c
index eb99109..614eed4 100644
--- a/libj2_j2i_rsub_ji.c
+++ b/libj2_j2i_rsub_ji.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2i_rsub_ji(struct libj2_j2i *a, intmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_rsub_ji_overflow.3 b/libj2_j2i_rsub_ji_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_rsub_ji_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_rsub_ji_overflow.c b/libj2_j2i_rsub_ji_overflow.c
index 1fd1346..2227745 100644
--- a/libj2_j2i_rsub_ji_overflow.c
+++ b/libj2_j2i_rsub_ji_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_rsub_ji_overflow(struct libj2_j2i *a, intmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_rsub_ji_overflow_p.3 b/libj2_j2i_rsub_ji_overflow_p.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_rsub_ji_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_rsub_ji_overflow_p.c b/libj2_j2i_rsub_ji_overflow_p.c
index bad6009..897ae1f 100644
--- a/libj2_j2i_rsub_ji_overflow_p.c
+++ b/libj2_j2i_rsub_ji_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_rsub_ji_overflow_p(const struct libj2_j2i *a, intmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_j2i.3 b/libj2_j2i_sub_j2i.3
new file mode 100644
index 0000000..9d0fcf1
--- /dev/null
+++ b/libj2_j2i_sub_j2i.3
@@ -0,0 +1,122 @@
+.TH LIBJ2_J2I_SUB_J2I 3 LIBJ2
+.SH NAME
+libj2_j2i_sub_j2i \- Calculate difference
+
+.SH SYNOPSIS
+.nf
+#include <libj2.h>
+
+void \fBlibj2_j2i_sub_j2i\fP(struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP);
+void \fBlibj2_j2i_sub_j2i_to_j2i\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP, struct libj2_j2i *\fIr\fP);
+void \fBlibj2_j2i_sub_ji\fP(struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP);
+void \fBlibj2_j2i_sub_ji_to_j2i\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP, struct libj2_j2i *\fIr\fP);
+void \fBlibj2_ji_sub_j2i_to_j2i\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP, struct libj2_j2i *\fIr\fP);
+void \fBlibj2_ji_sub_ji_to_j2i\fP(intmax_t \fIa\fP, intmax_t \fIb\fP, struct libj2_j2i *\fIr\fP);
+
+int \fBlibj2_j2i_sub_j2i_overflow\fP(struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP);
+int \fBlibj2_j2i_sub_j2i_to_j2i_overflow\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP, struct libj2_j2i *\fIr\fP);
+int \fBlibj2_j2i_sub_ji_overflow\fP(struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP);
+int \fBlibj2_j2i_sub_ji_to_j2i_overflow\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP, struct libj2_j2i *\fIr\fP);
+int \fBlibj2_ji_sub_j2i_to_j2i_overflow\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP, struct libj2_j2i *\fIr\fP);
+
+int \fBlibj2_j2i_sub_j2i_overflow_p\fP(const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP);
+int \fBlibj2_j2i_sub_ji_overflow_p\fP(const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP);
+int \fBlibj2_ji_sub_j2i_overflow_p\fP(intmax_t \fIa\fP, const struct libj2_j2i *\fIb\fP);
+
+void \fBlibj2_j2i_rsub_j2i\fP(struct libj2_j2i *\fIb\fP, const struct libj2_j2i *\fIa\fP);
+void \fBlibj2_j2i_rsub_ji\fP(struct libj2_j2i *\fIb\fP, intmax_t \fIa\fP);
+
+int \fBlibj2_j2i_rsub_j2i_overflow\fP(struct libj2_j2i *\fIb\fP, const struct libj2_j2i *\fIa\fP);
+int \fBlibj2_j2i_rsub_ji_overflow\fP(struct libj2_j2i *\fIb\fP, intmax_t \fIa\fP);
+
+int \fBlibj2_j2i_rsub_j2i_overflow_p\fP(const struct libj2_j2i *\fIb\fP, const struct libj2_j2i *\fIa\fP);
+int \fBlibj2_j2i_rsub_ji_overflow_p\fP(const struct libj2_j2i *\fIb\fP, intmax_t \fIa\fP);
+.fi
+.PP
+Link with
+.IR -lj2 .
+
+.SH DESCRIPTION
+The above listed functions calculate the
+difference of the values of
+.I a
+(the minuend)
+and
+.I b
+(the subtrahend).
+The functions with the parameter
+.I r
+store the result in
+.IR r ,
+the other functions store the result in
+.IR a ,
+except the functions
+.BR libj2_j2i_sub_j2i_overflow_p (),
+.BR libj2_j2i_sub_ji_overflow_p (),
+.BR libj2_ji_sub_j2i_overflow_p (),
+.BR libj2_j2i_rsub_j2i_overflow_p (),
+and
+.BR libj2_j2i_rsub_ji_overflow_p (),
+only predict overflow, and do not calculate
+the sum, and therefore does store it anywhere;
+and except the functions
+.BR libj2_j2i_rsub_j2i (),
+.BR libj2_j2i_rsub_ji (),
+.BR libj2_j2i_rsub_j2i_overflow (),
+and
+.BR libj2_j2i_rsub_ji_overflow (),
+store the result in
+.IR b .
+.PP
+The value-returning functions (that is, those
+with word
+.B overflow
+in their name), detect arithmetic overflow.
+.PP
+The result is truncated to the least significant
+bits, as many as can be stored, in case of overflow;
+that is, modular arithmetics is used.
+
+.PP
+The arguments are assumed to be
+.RI non- NULL .
+
+.SH RETURN VALUE
+For functions with a return value, the functions
+return +1 if the result is positive but too large
+to be represented, -1 if the result is negative
+but too large, and 0 otherwise.
+
+.SH ERRORS
+The above listed functions cannot fail.
+
+.SH HISTORY
+The
+.BR libj2_j2i_sub_j2i (3),
+.BR libj2_j2i_sub_j2i_to_j2i (3),
+.BR libj2_j2i_sub_ji (3),
+.BR libj2_j2i_sub_ji_to_j2i (3),
+.BR libj2_ji_sub_j2i_to_j2i (3),
+.BR libj2_ji_sub_ji_to_j2i (3),
+.BR libj2_j2i_sub_j2i_overflow (3),
+.BR libj2_j2i_sub_j2i_to_j2i_overflow (3),
+.BR libj2_j2i_sub_ji_overflow (3),
+.BR libj2_j2i_sub_ji_to_j2i_overflow (3),
+.BR libj2_ji_sub_j2i_to_j2i_overflow (3),
+.BR libj2_j2i_sub_j2i_overflow_p (3),
+.BR libj2_j2i_sub_ji_overflow_p (3),
+.BR libj2_ji_sub_j2i_overflow_p (3),
+.BR libj2_j2i_rsub_j2i (3),
+.BR libj2_j2i_rsub_ji (3),
+.BR libj2_j2i_rsub_j2i_overflow (3),
+.BR libj2_j2i_rsub_ji_overflow (3),
+.BR libj2_j2i_rsub_j2i_overflow_p (3),
+and
+.BR libj2_j2i_rsub_ji_overflow_p (3)
+functions were added in version 1.1 of
+.BR libj2 .
+
+.SH SEE ALSO
+.BR libj2 (7),
+.BR libj2_j2u_sub_j2u (3),
+.BR libj2_j2i_add_j2i (3)
diff --git a/libj2_j2i_sub_j2i.c b/libj2_j2i_sub_j2i.c
index 92a344a..0492bea 100644
--- a/libj2_j2i_sub_j2i.c
+++ b/libj2_j2i_sub_j2i.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2i_sub_j2i(struct libj2_j2i *a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_j2i_overflow.3 b/libj2_j2i_sub_j2i_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_j2i_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_j2i_overflow.c b/libj2_j2i_sub_j2i_overflow.c
index 17275f2..292ae48 100644
--- a/libj2_j2i_sub_j2i_overflow.c
+++ b/libj2_j2i_sub_j2i_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_sub_j2i_overflow(struct libj2_j2i *a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_j2i_overflow_p.3 b/libj2_j2i_sub_j2i_overflow_p.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_j2i_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_j2i_overflow_p.c b/libj2_j2i_sub_j2i_overflow_p.c
index 0df616b..deb450b 100644
--- a/libj2_j2i_sub_j2i_overflow_p.c
+++ b/libj2_j2i_sub_j2i_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_sub_j2i_overflow_p(const struct libj2_j2i *a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_j2i_to_j2i.3 b/libj2_j2i_sub_j2i_to_j2i.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_j2i_to_j2i.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_j2i_to_j2i.c b/libj2_j2i_sub_j2i_to_j2i.c
index 5522262..1b95a03 100644
--- a/libj2_j2i_sub_j2i_to_j2i.c
+++ b/libj2_j2i_sub_j2i_to_j2i.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2i_sub_j2i_to_j2i(const struct libj2_j2i *a, const struct libj2_j2i *b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_j2i_to_j2i_overflow.3 b/libj2_j2i_sub_j2i_to_j2i_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_j2i_to_j2i_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_j2i_to_j2i_overflow.c b/libj2_j2i_sub_j2i_to_j2i_overflow.c
index db703c9..9ce4f07 100644
--- a/libj2_j2i_sub_j2i_to_j2i_overflow.c
+++ b/libj2_j2i_sub_j2i_to_j2i_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_sub_j2i_to_j2i_overflow(const struct libj2_j2i *a, const struct libj2_j2i *b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_ji.3 b/libj2_j2i_sub_ji.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_ji.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_ji.c b/libj2_j2i_sub_ji.c
index 27bf013..4fc8e0e 100644
--- a/libj2_j2i_sub_ji.c
+++ b/libj2_j2i_sub_ji.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2i_sub_ji(struct libj2_j2i *a, intmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_ji_overflow.3 b/libj2_j2i_sub_ji_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_ji_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_ji_overflow.c b/libj2_j2i_sub_ji_overflow.c
index d8201be..e48b7a1 100644
--- a/libj2_j2i_sub_ji_overflow.c
+++ b/libj2_j2i_sub_ji_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_sub_ji_overflow(struct libj2_j2i *a, intmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_ji_overflow_p.3 b/libj2_j2i_sub_ji_overflow_p.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_ji_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_ji_overflow_p.c b/libj2_j2i_sub_ji_overflow_p.c
index 1c07791..6cd194b 100644
--- a/libj2_j2i_sub_ji_overflow_p.c
+++ b/libj2_j2i_sub_ji_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_sub_ji_overflow_p(const struct libj2_j2i *a, intmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_ji_to_j2i.3 b/libj2_j2i_sub_ji_to_j2i.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_ji_to_j2i.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_ji_to_j2i.c b/libj2_j2i_sub_ji_to_j2i.c
index 4c06968..a3e76bd 100644
--- a/libj2_j2i_sub_ji_to_j2i.c
+++ b/libj2_j2i_sub_ji_to_j2i.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2i_sub_ji_to_j2i(const struct libj2_j2i *a, intmax_t b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2i_sub_ji_to_j2i_overflow.3 b/libj2_j2i_sub_ji_to_j2i_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_j2i_sub_ji_to_j2i_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_j2i_sub_ji_to_j2i_overflow.c b/libj2_j2i_sub_ji_to_j2i_overflow.c
index 52b2d2f..7eb807e 100644
--- a/libj2_j2i_sub_ji_to_j2i_overflow.c
+++ b/libj2_j2i_sub_ji_to_j2i_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2i_sub_ji_to_j2i_overflow(const struct libj2_j2i *a, intmax_t b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_rsub_j2u.3 b/libj2_j2u_rsub_j2u.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_rsub_j2u.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_rsub_j2u.c b/libj2_j2u_rsub_j2u.c
index edae0e7..9a1d5de 100644
--- a/libj2_j2u_rsub_j2u.c
+++ b/libj2_j2u_rsub_j2u.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2u_rsub_j2u(struct libj2_j2u *a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_rsub_j2u_overflow.3 b/libj2_j2u_rsub_j2u_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_rsub_j2u_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_rsub_j2u_overflow.c b/libj2_j2u_rsub_j2u_overflow.c
index e730930..39963dc 100644
--- a/libj2_j2u_rsub_j2u_overflow.c
+++ b/libj2_j2u_rsub_j2u_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_rsub_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_rsub_j2u_overflow_p.3 b/libj2_j2u_rsub_j2u_overflow_p.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_rsub_j2u_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_rsub_j2u_overflow_p.c b/libj2_j2u_rsub_j2u_overflow_p.c
index 4bf6cab..0081cde 100644
--- a/libj2_j2u_rsub_j2u_overflow_p.c
+++ b/libj2_j2u_rsub_j2u_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_rsub_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_rsub_ju.3 b/libj2_j2u_rsub_ju.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_rsub_ju.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_rsub_ju.c b/libj2_j2u_rsub_ju.c
index cd3a80f..3ed3cb4 100644
--- a/libj2_j2u_rsub_ju.c
+++ b/libj2_j2u_rsub_ju.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2u_rsub_ju(struct libj2_j2u *a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_rsub_ju_overflow.3 b/libj2_j2u_rsub_ju_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_rsub_ju_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_rsub_ju_overflow.c b/libj2_j2u_rsub_ju_overflow.c
index 398479f..d609af5 100644
--- a/libj2_j2u_rsub_ju_overflow.c
+++ b/libj2_j2u_rsub_ju_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_rsub_ju_overflow(struct libj2_j2u *a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_rsub_ju_overflow_p.3 b/libj2_j2u_rsub_ju_overflow_p.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_rsub_ju_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_rsub_ju_overflow_p.c b/libj2_j2u_rsub_ju_overflow_p.c
index 9666070..d7c5448 100644
--- a/libj2_j2u_rsub_ju_overflow_p.c
+++ b/libj2_j2u_rsub_ju_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_rsub_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_j2u.3 b/libj2_j2u_sub_j2u.3
new file mode 100644
index 0000000..c2a5baf
--- /dev/null
+++ b/libj2_j2u_sub_j2u.3
@@ -0,0 +1,130 @@
+.TH LIBJ2_J2U_SUB_J2U 3 LIBJ2
+.SH NAME
+libj2_j2u_sub_j2u \- Calculate difference
+
+.SH SYNOPSIS
+.nf
+#include <libj2.h>
+
+void \fBlibj2_j2u_sub_j2u\fP(struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP);
+void \fBlibj2_j2u_sub_j2u_to_j2u\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP, struct libj2_j2u *\fIr\fP);
+void \fBlibj2_j2u_sub_ju\fP(struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP);
+void \fBlibj2_j2u_sub_ju_to_j2u\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP, struct libj2_j2u *\fIr\fP);
+void \fBlibj2_ju_sub_j2u_to_j2u\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP, struct libj2_j2u *\fIr\fP);
+void \fBlibj2_ju_sub_ju_to_j2u\fP(uintmax_t \fIa\fP, uintmax_t \fIb\fP, struct libj2_j2u *\fIr\fP);
+
+int \fBlibj2_j2u_sub_j2u_overflow\fP(struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP);
+int \fBlibj2_j2u_sub_j2u_to_j2u_overflow\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP, struct libj2_j2u *\fIr\fP);
+int \fBlibj2_j2u_sub_ju_overflow\fP(struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP);
+int \fBlibj2_j2u_sub_ju_to_j2u_overflow\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP, struct libj2_j2u *\fIr\fP);
+int \fBlibj2_ju_sub_j2u_to_j2u_overflow\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP, struct libj2_j2u *\fIr\fP);
+int \fBlibj2_ju_sub_ju_to_j2u_overflow\fP(uintmax_t \fIa\fP, uintmax_t \fIb\fP, struct libj2_j2u *\fIr\fP);
+
+int \fBlibj2_j2u_sub_j2u_overflow_p\fP(const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP);
+int \fBlibj2_j2u_sub_ju_overflow_p\fP(const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP);
+int \fBlibj2_ju_sub_j2u_overflow_p\fP(uintmax_t \fIa\fP, const struct libj2_j2u *\fIb\fP);
+int \fBlibj2_ju_sub_ju_overflow_p\fP(uintmax_t \fIa\fP, uintmax_t \fIb\fP);
+
+void \fBlibj2_j2u_rsub_j2u\fP(struct libj2_j2u *\fIb\fP, const struct libj2_j2u *\fIa\fP);
+void \fBlibj2_j2u_rsub_ju\fP(struct libj2_j2u *\fIb\fP, uintmax_t \fIa\fP);
+
+int \fBlibj2_j2u_rsub_j2u_overflow\fP(struct libj2_j2u *\fIb\fP, const struct libj2_j2u *\fIa\fP);
+int \fBlibj2_j2u_rsub_ju_overflow\fP(struct libj2_j2u *\fIb\fP, uintmax_t \fIa\fP);
+
+int \fBlibj2_j2u_rsub_j2u_overflow_p\fP(const struct libj2_j2u *\fIb\fP, const struct libj2_j2u *\fIa\fP);
+int \fBlibj2_j2u_rsub_ju_overflow_p\fP(const struct libj2_j2u *\fIb\fP, uintmax_t \fIa\fP);
+.fi
+.PP
+Link with
+.IR -lj2 .
+
+.SH DESCRIPTION
+The above listed functions calculate the
+difference of the values of
+.I a
+(the minuend)
+and
+.I b
+(the subtrahend).
+The functions with the parameter
+.I r
+store the result in
+.IR r ,
+the other functions store the result in
+.IR a ,
+except the functions
+.BR libj2_j2u_sub_j2u_overflow_p (),
+.BR libj2_j2u_sub_ju_overflow_p (),
+.BR libj2_ju_sub_j2u_overflow_p (),
+.BR libj2_ju_sub_ju_overflow_p (),
+.BR libj2_j2u_rsub_j2u_overflow_p (),
+and
+.BR libj2_j2u_rsub_ju_overflow_p (),
+only predict overflow, and do not calculate
+the sum, and therefore does store it anywhere;
+and except the functions
+.BR libj2_j2u_rsub_j2u (),
+.BR libj2_j2u_rsub_ju (),
+.BR libj2_j2u_rsub_j2u_overflow (),
+and
+.BR libj2_j2u_rsub_ju_overflow (),
+store the result in
+.IR b .
+.PP
+The value-returning functions (that is, those
+with word
+.B overflow
+in their name), detect arithmetic overflow.
+.PP
+The result is truncated to the least significant
+bits, as many as can be stored, in case of overflow;
+that is, modular arithmetics is used.
+
+.PP
+The arguments are assumed to be
+.RI non- NULL .
+
+.SH RETURN VALUE
+For functions with a return value, the functions
+return 1 if the result too large to be represented,
+and 0 otherwise.
+
+.SH ERRORS
+The above listed functions cannot fail.
+
+.SH HISTORY
+The
+.BR libj2_j2u_sub_j2u (3),
+.BR libj2_j2u_sub_j2u_to_j2u (3),
+.BR libj2_j2u_sub_ju (3),
+.BR libj2_j2u_sub_ju_to_j2u (3),
+.BR libj2_ju_sub_j2u_to_j2u (3),
+.BR libj2_ju_sub_ju_to_j2u (3),
+.BR libj2_j2u_sub_j2u_overflow (3),
+.BR libj2_j2u_sub_j2u_to_j2u_overflow (3),
+.BR libj2_j2u_sub_ju_overflow (3),
+.BR libj2_j2u_sub_ju_to_j2u_overflow (3),
+.BR libj2_ju_sub_j2u_to_j2u_overflow (3),
+.BR libj2_ju_sub_ju_to_j2u_overflow (3),
+.BR libj2_j2u_sub_j2u_overflow_p (3),
+.BR libj2_j2u_sub_ju_overflow_p (3),
+.BR libj2_ju_sub_j2u_overflow_p (3),
+.BR libj2_ju_sub_ju_overflow_p (3),
+.BR libj2_j2u_rsub_j2u (3),
+.BR libj2_j2u_rsub_ju (3),
+.BR libj2_j2u_rsub_j2u_overflow (3),
+.BR libj2_j2u_rsub_ju_overflow (3),
+.BR libj2_j2u_rsub_j2u_overflow_p (3),
+and
+.BR libj2_j2u_rsub_ju_overflow_p (3)
+functions were added in version 1.0 of
+.BR libj2 .
+
+.SH NOTES
+The return value 1 represents negative
+overflow. Positive overflow is impossible.
+
+.SH SEE ALSO
+.BR libj2 (7),
+.BR libj2_j2i_sub_j2i (3),
+.BR libj2_j2i_add_j2i (3)
diff --git a/libj2_j2u_sub_j2u.c b/libj2_j2u_sub_j2u.c
index d69fb02..288aa33 100644
--- a/libj2_j2u_sub_j2u.c
+++ b/libj2_j2u_sub_j2u.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2u_sub_j2u(struct libj2_j2u *a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_j2u_overflow.3 b/libj2_j2u_sub_j2u_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_j2u_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_j2u_overflow.c b/libj2_j2u_sub_j2u_overflow.c
index c4e3052..e2d723d 100644
--- a/libj2_j2u_sub_j2u_overflow.c
+++ b/libj2_j2u_sub_j2u_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_sub_j2u_overflow(struct libj2_j2u *a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_j2u_overflow_p.3 b/libj2_j2u_sub_j2u_overflow_p.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_j2u_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_j2u_overflow_p.c b/libj2_j2u_sub_j2u_overflow_p.c
index 424b9a0..841b5e1 100644
--- a/libj2_j2u_sub_j2u_overflow_p.c
+++ b/libj2_j2u_sub_j2u_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_sub_j2u_overflow_p(const struct libj2_j2u *a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_j2u_to_j2u.3 b/libj2_j2u_sub_j2u_to_j2u.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_j2u_to_j2u.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_j2u_to_j2u.c b/libj2_j2u_sub_j2u_to_j2u.c
index 4f3e0c3..0cc2c47 100644
--- a/libj2_j2u_sub_j2u_to_j2u.c
+++ b/libj2_j2u_sub_j2u_to_j2u.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2u_sub_j2u_to_j2u(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_j2u_to_j2u_overflow.3 b/libj2_j2u_sub_j2u_to_j2u_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_j2u_to_j2u_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_j2u_to_j2u_overflow.c b/libj2_j2u_sub_j2u_to_j2u_overflow.c
index ca518a9..42fe088 100644
--- a/libj2_j2u_sub_j2u_to_j2u_overflow.c
+++ b/libj2_j2u_sub_j2u_to_j2u_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_sub_j2u_to_j2u_overflow(const struct libj2_j2u *a, const struct libj2_j2u *b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_ju.3 b/libj2_j2u_sub_ju.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_ju.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_ju.c b/libj2_j2u_sub_ju.c
index 651cd1c..1c6f174 100644
--- a/libj2_j2u_sub_ju.c
+++ b/libj2_j2u_sub_ju.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2u_sub_ju(struct libj2_j2u *a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_ju_overflow.3 b/libj2_j2u_sub_ju_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_ju_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_ju_overflow.c b/libj2_j2u_sub_ju_overflow.c
index 4b675be..0809417 100644
--- a/libj2_j2u_sub_ju_overflow.c
+++ b/libj2_j2u_sub_ju_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_sub_ju_overflow(struct libj2_j2u *a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_ju_overflow_p.3 b/libj2_j2u_sub_ju_overflow_p.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_ju_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_ju_overflow_p.c b/libj2_j2u_sub_ju_overflow_p.c
index 54b037d..0da311b 100644
--- a/libj2_j2u_sub_ju_overflow_p.c
+++ b/libj2_j2u_sub_ju_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_sub_ju_overflow_p(const struct libj2_j2u *a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_ju_to_j2u.3 b/libj2_j2u_sub_ju_to_j2u.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_ju_to_j2u.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_ju_to_j2u.c b/libj2_j2u_sub_ju_to_j2u.c
index 78ddc3a..d57326e 100644
--- a/libj2_j2u_sub_ju_to_j2u.c
+++ b/libj2_j2u_sub_ju_to_j2u.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_j2u_sub_ju_to_j2u(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_j2u_sub_ju_to_j2u_overflow.3 b/libj2_j2u_sub_ju_to_j2u_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_j2u_sub_ju_to_j2u_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_j2u_sub_ju_to_j2u_overflow.c b/libj2_j2u_sub_ju_to_j2u_overflow.c
index 4f983ab..cdd40f9 100644
--- a/libj2_j2u_sub_ju_to_j2u_overflow.c
+++ b/libj2_j2u_sub_ju_to_j2u_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_j2u_sub_ju_to_j2u_overflow(const struct libj2_j2u *a, uintmax_t b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ji_sub_j2i_overflow_p.3 b/libj2_ji_sub_j2i_overflow_p.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_ji_sub_j2i_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_ji_sub_j2i_overflow_p.c b/libj2_ji_sub_j2i_overflow_p.c
index afd2d4d..e9782e0 100644
--- a/libj2_ji_sub_j2i_overflow_p.c
+++ b/libj2_ji_sub_j2i_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_ji_sub_j2i_overflow_p(intmax_t a, const struct libj2_j2i *b);
-/* TODO Add man page */
#else
diff --git a/libj2_ji_sub_j2i_to_j2i.3 b/libj2_ji_sub_j2i_to_j2i.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_ji_sub_j2i_to_j2i.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_ji_sub_j2i_to_j2i.c b/libj2_ji_sub_j2i_to_j2i.c
index d77aca3..bd3f2bc 100644
--- a/libj2_ji_sub_j2i_to_j2i.c
+++ b/libj2_ji_sub_j2i_to_j2i.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_ji_sub_j2i_to_j2i(intmax_t a, const struct libj2_j2i *b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ji_sub_j2i_to_j2i_overflow.3 b/libj2_ji_sub_j2i_to_j2i_overflow.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_ji_sub_j2i_to_j2i_overflow.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_ji_sub_j2i_to_j2i_overflow.c b/libj2_ji_sub_j2i_to_j2i_overflow.c
index ff8a3a4..7106537 100644
--- a/libj2_ji_sub_j2i_to_j2i_overflow.c
+++ b/libj2_ji_sub_j2i_to_j2i_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_ji_sub_j2i_to_j2i_overflow(intmax_t a, const struct libj2_j2i *b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ji_sub_ji_to_j2i.3 b/libj2_ji_sub_ji_to_j2i.3
new file mode 120000
index 0000000..2bb1ba8
--- /dev/null
+++ b/libj2_ji_sub_ji_to_j2i.3
@@ -0,0 +1 @@
+libj2_j2i_sub_j2i.3 \ No newline at end of file
diff --git a/libj2_ji_sub_ji_to_j2i.c b/libj2_ji_sub_ji_to_j2i.c
index 018c93c..1057db6 100644
--- a/libj2_ji_sub_ji_to_j2i.c
+++ b/libj2_ji_sub_ji_to_j2i.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_ji_sub_ji_to_j2i(intmax_t a, intmax_t b, struct libj2_j2i *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ju_sub_j2u_overflow_p.3 b/libj2_ju_sub_j2u_overflow_p.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_ju_sub_j2u_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_ju_sub_j2u_overflow_p.c b/libj2_ju_sub_j2u_overflow_p.c
index 90fe79c..5b57ae6 100644
--- a/libj2_ju_sub_j2u_overflow_p.c
+++ b/libj2_ju_sub_j2u_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_ju_sub_j2u_overflow_p(uintmax_t a, const struct libj2_j2u *b);
-/* TODO Add man page */
#else
diff --git a/libj2_ju_sub_j2u_to_j2u.3 b/libj2_ju_sub_j2u_to_j2u.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_ju_sub_j2u_to_j2u.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_ju_sub_j2u_to_j2u.c b/libj2_ju_sub_j2u_to_j2u.c
index 6e85181..8a2c9e4 100644
--- a/libj2_ju_sub_j2u_to_j2u.c
+++ b/libj2_ju_sub_j2u_to_j2u.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_ju_sub_j2u_to_j2u(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ju_sub_j2u_to_j2u_overflow.3 b/libj2_ju_sub_j2u_to_j2u_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_ju_sub_j2u_to_j2u_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_ju_sub_j2u_to_j2u_overflow.c b/libj2_ju_sub_j2u_to_j2u_overflow.c
index 5fef105..29d226c 100644
--- a/libj2_ju_sub_j2u_to_j2u_overflow.c
+++ b/libj2_ju_sub_j2u_to_j2u_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_ju_sub_j2u_to_j2u_overflow(uintmax_t a, const struct libj2_j2u *b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ju_sub_ju_overflow_p.3 b/libj2_ju_sub_ju_overflow_p.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_ju_sub_ju_overflow_p.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_ju_sub_ju_overflow_p.c b/libj2_ju_sub_ju_overflow_p.c
index 05bc298..be1964a 100644
--- a/libj2_ju_sub_ju_overflow_p.c
+++ b/libj2_ju_sub_ju_overflow_p.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_ju_sub_ju_overflow_p(uintmax_t a, uintmax_t b);
-/* TODO Add man page */
#else
diff --git a/libj2_ju_sub_ju_to_j2u.3 b/libj2_ju_sub_ju_to_j2u.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_ju_sub_ju_to_j2u.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_ju_sub_ju_to_j2u.c b/libj2_ju_sub_ju_to_j2u.c
index cedc6f3..93f682f 100644
--- a/libj2_ju_sub_ju_to_j2u.c
+++ b/libj2_ju_sub_ju_to_j2u.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline void libj2_ju_sub_ju_to_j2u(uintmax_t a, uintmax_t b, struct libj2_j2u *res);
-/* TODO Add man page */
#else
diff --git a/libj2_ju_sub_ju_to_j2u_overflow.3 b/libj2_ju_sub_ju_to_j2u_overflow.3
new file mode 120000
index 0000000..126e9a9
--- /dev/null
+++ b/libj2_ju_sub_ju_to_j2u_overflow.3
@@ -0,0 +1 @@
+libj2_j2u_sub_j2u.3 \ No newline at end of file
diff --git a/libj2_ju_sub_ju_to_j2u_overflow.c b/libj2_ju_sub_ju_to_j2u_overflow.c
index cd3c67b..11b16cf 100644
--- a/libj2_ju_sub_ju_to_j2u_overflow.c
+++ b/libj2_ju_sub_ju_to_j2u_overflow.c
@@ -3,7 +3,6 @@
#ifndef TEST
extern inline int libj2_ju_sub_ju_to_j2u_overflow(uintmax_t a, uintmax_t b, struct libj2_j2u *res);
-/* TODO Add man page */
#else