Files
wasmtime/tests/all/debug/testsuite/fraction-norm.cc
2020-07-07 09:43:03 -05:00

41 lines
677 B
C++

// Compile with:
// clang++ --target=wasm32 fraction-norm.cc -o fraction-norm.wasm -g \
// -O0 -nostdlib -fdebug-prefix-map=$PWD=.
struct Fraction {
long numerator;
long denominator;
};
inline long abs(long x)
{
return x >= 0 ? x : -x;
}
extern "C"
void norm(Fraction &n)
{
long a = abs(n.numerator), b = abs(n.denominator);
if (a == 0 || b == 0) return;
do {
a %= b;
if (a == 0) break;
b %= a;
} while (b > 0);
long gcd = a + b;
if (n.denominator > 0) {
n.numerator /= gcd;
n.denominator /= gcd;
} else {
n.numerator /= -gcd;
n.denominator /= -gcd;
}
}
extern "C"
void _start()
{
Fraction c = {6, 27};
norm(c);
}