Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <u.h>
2
#include <libc.h>
3
 
4
ulong
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
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
}