inline void ratio_subtract (intmax_t num1 , intmax_t den1 , intmax_t num2 , intmax_t den2 , intmax_t & num , intmax_t & den) { ratio_add(num1, den1, - num2, den2, num, den); }
ratio_s ratio_add(ratio_s left, ratio_s right) { return (ratio_s) { .numerator=left.numerator*right.denominator + right.numerator*left.denominator, .denominator=left.denominator*right.denominator, .value=left.value + right.value }; } int main() { ratio_s twothirds= new_ratio(2, 3); ratio_s aquarter= new_ratio(1, 4); print_ratio(twothirds); print_ratio(aquarter); print_ratio(ratio_add(twothirds, aquarter)); }
inline intmax_t ratio_add_and_get_den(intmax_t num1, intmax_t den1, intmax_t num2, intmax_t den2) { intmax_t num, den; ratio_add(num1, den1, num2, den2, num, den); return den; }