aboutsummaryrefslogtreecommitdiffstats
path: root/libj2_j2u_sub_j2u.3
diff options
context:
space:
mode:
Diffstat (limited to 'libj2_j2u_sub_j2u.3')
-rw-r--r--libj2_j2u_sub_j2u.3130
1 files changed, 130 insertions, 0 deletions
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)