1234567891011121314151617181920212223242526272829303132333435363738 |
- #include <u.h>
- #include <libc.h>
- ulong
- umuldiv(ulong a, ulong b, ulong c)
- {
- double d;
- d = ((double)a * (double)b) / (double)c;
- if(d >= 4294967296.)
- abort();
- return d;
- }
- long
- muldiv(long a, long b, long c)
- {
- int s;
- long v;
- s = 0;
- if(a < 0) {
- s = !s;
- a = -a;
- }
- if(b < 0) {
- s = !s;
- b = -b;
- }
- if(c < 0) {
- s = !s;
- c = -c;
- }
- v = umuldiv(a, b, c);
- if(s)
- v = -v;
- return v;
- }
|