32 lines
639 B
Text
32 lines
639 B
Text
|
.TH MULDIV 2
|
||
|
.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.
|