.TH ZDIVMOD 3 libzahl .SH NAME zdivmod - Calculate the quotient and the remainder of two big integer .SH SYNOPSIS .nf #include void zdivmod(z_t \fIquotient\fP, z_t \fIremainder\fP, z_t \fIdividend\fP, z_t \fIdivisor\fP); .fi .SH DESCRIPTION .B zdivmod calculates the truncated quotient and the remainder of a .I dividend and a .IR divisor , and stores the truncated quotient in .I quotient and the remainder in .IR remainder . That is, .I quotient gets .I dividend / .I divisor and .I remainder gets .I dividend Mod .IR divisor . .P Be aware, .I remainder gets .RI | dividend | Mod .RI | divisor |, this means that it is only guaranteed to be true that .I dividend = .I quotient ⋅ .I divisor + .IR remainder if .I dividend and .I divisor are both non-negative. It is up to the user, to make the necessary adjustment to .I remainder to make this true or to satisfy any desired property. This exceptional behaviour has been choosen because it is the simplies, works just fine if you are working with natural numbers only, and there are two many ways to define modulus; this one is advantages when you want to make adjustments, it is straight-forward. .P It is safe to call .B zdivmod with non-unique parameters, except it is .I not safe to call .B zdivmod with .IR "(quotient==remainder)" . .P See .BR zmod (3) for details on modulation. .SH RATIONALE Calculating the remainder requires calculating division to be performed, and performing a division gives the remainder for free. It is often useful to calculate both. .SH SEE ALSO .BR zstr (3), .BR zadd (3), .BR zsub (3), .BR zmul (3), .BR zdiv (3), .BR zmod (3), .BR zneg (3), .BR zabs (3), .BR zpow (3)