added rational.c