1 #include <u.h>
2 #include <libc.h>
3
4 ulong
umuldiv(ulong a,ulong b,ulong c)5 umuldiv(ulong a, ulong b, ulong c)
6 {
7 double d;
8
9 d = ((double)a * (double)b) / (double)c;
10 if(d >= 4294967296.)
11 abort();
12 return d;
13 }
14
15 long
muldiv(long a,long b,long c)16 muldiv(long a, long b, long c)
17 {
18 int s;
19 long v;
20
21 s = 0;
22 if(a < 0) {
23 s = !s;
24 a = -a;
25 }
26 if(b < 0) {
27 s = !s;
28 b = -b;
29 }
30 if(c < 0) {
31 s = !s;
32 c = -c;
33 }
34 v = umuldiv(a, b, c);
35 if(s)
36 v = -v;
37 return v;
38 }
39