| .TH MULDIV 3 |
| .SH NAME |
| muldiv, umuldiv \- high-precision multiplication and division |
| .SH SYNOPSIS |
| .B #include <u.h> |
| .br |
| .B #include <libc.h> |
| .PP |
| .B |
| long muldiv(long a, long b, long c) |
| .PP |
| .B |
| ulong umuldiv(ulong a, ulong b, ulong c) |
| .SH DESCRIPTION |
| .I Muldiv |
| returns |
| .BR a*b/c , |
| using a |
| .B vlong |
| to hold the intermediate result. |
| .I Umuldiv |
| is the equivalent for unsigned integers. |
| They can be used to scale integer values without worry about |
| overflowing the intermediate result. |
| .PP |
| On some architectures, these routines can generate a trap if the |
| final result does not fit in a |
| .B long |
| or |
| .BR ulong ; |
| on others they will silently truncate. |