.TH LIBJ2_J2I_DIVMOD_J2I 3 LIBJ2 .SH NAME libj2_j2i_divmod_j2i \- Calculate quotient and remainder .SH SYNOPSIS .nf #include intmax_t \fBlibj2_j2i_divmod_j2i\fP( struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP); void \fBlibj2_j2i_divmod_j2i_to_j2i\fP( struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP, struct libj2_j2i *\fIq\fP); void \fBlibj2_j2i_divmod_j2i_to_j2i_j2i\fP( const struct libj2_j2i *\fIa\fP, const struct libj2_j2i *\fIb\fP, struct libj2_j2i *\fIq\fP, struct libj2_j2i *\fIr\fP); intmax_t \fBlibj2_j2i_divmod_ji\fP( struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP); void \fBlibj2_j2i_divmod_ji_to_j2i\fP( struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP, struct libj2_j2i *\fIq\fP); void \fBlibj2_j2i_divmod_ji_to_j2i_j2i\fP( const struct libj2_j2i *\fIa\fP, intmax_t \fIb\fP, struct libj2_j2i *\fIq\fP, struct libj2_j2i *\fIr\fP); uintmax_t \fBlibj2_j2u_divmod_j2u\fP( struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP); void \fBlibj2_j2u_divmod_j2u_to_j2u\fP( struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP, struct libj2_j2u *\fIq\fP); void \fBlibj2_j2u_divmod_j2u_to_j2u_j2u\fP( const struct libj2_j2u *\fIa\fP, const struct libj2_j2u *\fIb\fP, struct libj2_j2u *\fIq\fP, struct libj2_j2u *\fIr\fP); uintmax_t \fBlibj2_j2u_divmod_ju\fP( struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP); void \fBlibj2_j2u_divmod_ju_to_j2u\fP( struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP, struct libj2_j2u *\fIq\fP); void \fBlibj2_j2u_divmod_ju_to_j2u_j2u\fP( const struct libj2_j2u *\fIa\fP, uintmax_t \fIb\fP, struct libj2_j2u *\fIq\fP, struct libj2_j2u *\fIr\fP); intmax_t \fBlibj2_j2i_rdivmod_j2i\fP( struct libj2_j2i *\fIb\fP, const struct libj2_j2i *\fIa\fP); void \fBlibj2_j2i_rdivmod_j2i_to_j2i\fP( struct libj2_j2i *\fIb\fP, const struct libj2_j2i *\fIa\fP, struct libj2_j2i *\fIq\fP); uintmax_t \fBlibj2_j2u_rdivmod_j2u\fP( struct libj2_j2u *\fIb\fP, const struct libj2_j2u *\fIa\fP); void \fBlibj2_j2u_rdivmod_j2u_to_j2u\fP( struct libj2_j2u *\fIb\fP, const struct libj2_j2u *\fIa\fP, struct libj2_j2u *\fIq\fP); .fi .PP Link with .IR -lj2 . .SH DESCRIPTION The above listed functions calculate the quotient between .I a and .IR b , and as a side-effect calculates the remainder (for no additional computational cost). .PP The .BR libj2_j2i_divmod_j2i (), .BR libj2_j2i_divmod_ji (), .BR libj2_j2u_divmod_j2u (), and .BR libj2_j2u_divmod_ju () functions return the quotient, the remainder of the functions store the quotient in .IR q . .PP The .BR libj2_j2i_divmod_j2i (), .BR libj2_j2i_divmod_j2i_to_j2i (), .BR libj2_j2i_divmod_ji (), .BR libj2_j2i_divmod_ji_to_j2i (), .BR libj2_j2u_divmod_j2u (), .BR libj2_j2u_divmod_j2u_to_j2u (), .BR libj2_j2u_divmod_ju (), and .BR libj2_j2u_divmod_ju_to_j2u () functions store the remainder in .IR a . .PP The .BR libj2_j2i_rdivmod_j2i () and .BR libj2_j2u_rdivmod_j2u () functions store the remainder in .IR b . .PP The .BR libj2_j2i_divmod_j2i_to_j2i_j2i (), .BR libj2_j2i_divmod_ji_to_j2i_j2i (), .BR libj2_j2u_divmod_j2u_to_j2u_j2u (), and .BR libj2_j2u_divmod_ju_to_j2u_j2u () functions store the remainder in .IR r . .PP If .I b is -1 and .I a is the largest negative value that can be represented, the computation will overflow such that the quotient will be largest negative value, rather than the largest positive value plus one. For the .BR libj2_j2i_divmod_j2i () and .BR libj2_j2i_divmod_ji () functions, the quotient will truncate to zero in that case. .PP The quotient is rounded towards zero. The remainder is defined such that the product of the rounded quotient and the divisor is equal to the difference between the dividend and the remainder. .PP The remainder of the functions do not return any value. .PP The arguments are assumed to be .RI non- NULL . .SH RETURN VALUE The .BR libj2_j2i_divmod_j2i () and .BR libj2_j2i_divmod_ji () functions return the quotient truncated to an .BR intmax_t. .PP The .BR libj2_j2u_divmod_j2u () and .BR libj2_j2u_divmod_ju () functions return the quotient truncated to a .BR uintmax_t. .PP The rest of the functions do not return any value. .SH ERRORS The above listed functions cannot fail. .SH HISTORY The .BR libj2_j2u_divmod_j2u (), .BR libj2_j2u_divmod_j2u_to_j2u (), .BR libj2_j2u_divmod_j2u_to_j2u_j2u (), .BR libj2_j2u_divmod_ju (), .BR libj2_j2u_divmod_ju_to_j2u (), .BR libj2_j2u_divmod_ju_to_j2u_j2u (), .BR libj2_j2u_rdivmod_j2u (), and .BR libj2_j2u_rdivmod_j2u_to_j2u () functions were added in version 1.0 of .BR libj2 . .PP The .BR libj2_j2i_divmod_j2i (), .BR libj2_j2i_divmod_j2i_to_j2i (), .BR libj2_j2i_divmod_j2i_to_j2i_j2i (), .BR libj2_j2i_divmod_ji (), .BR libj2_j2i_divmod_ji_to_j2i (), .BR libj2_j2i_divmod_ji_to_j2i_j2i (), .BR libj2_j2i_rdivmod_j2i (), and .BR libj2_j2i_rdivmod_j2i_to_j2i () functions were added in version 1.1 of .BR libj2 . .SH SEE ALSO .BR libj2 (7), .BR libj2_j2i_div_j2i (3), .BR libj2_j2i_mod_j2i (3), .BR libj2_j2i_add_j2i (3), .BR libj2_j2i_sub_j2i (3), .BR libj2_j2u_sub_j2u (3), .BR libj2_j2i_mul_j2i (3)