ref: 4308f6e7e6586e3a27aa46c4d54c434b8533b16d
dir: /sys/src/libc/port/muldiv.c/
#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; }