/* GSoC12: Tobenna Peter, Igwe (Edited) */ Rat ratreduce (Rat a) { if (zero(a.num)) { /*a.den = 1;*/ itomp(1, a.den); } else { mp div; mp c; if (negative(a.den)) { /*a.den = -a.den;*/ changesign(a.den); /*a.num = -a.num;*/ changesign(a.num); } /*div = ratgcd(a.den, a.num);*/ ratgcd(a.den, a.num, div); /*a.num = a.num/div;*/ divint(a.num, div, c); copy(a.num, c); /*a.den = a.den/div;*/ divint(a.den, div, c); copy(a.den, c); } return a; }
Rat ratreduce (Rat a) { if (a.num == 0) a.den = 1; else { int div; if (a.den < 0) { a.den = -a.den; a.num = -a.num; } div = ratgcd(a.den, a.num); a.num = a.num/div; a.den = a.den/div; } return a; }