|  | .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. |