32 lines
639 B
Plaintext
32 lines
639 B
Plaintext
.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.
|