HPP modules/ifraction.hpp CPP modules/ifraction.cpp TEX modules/ifraction.tex MODULE fraction modules/ifraction.hlp TYPES IFRAC ifraction END IMPLICITCAST IFRAC INTEGER (ifraction(a)) DOUBLE IFRAC (double(a.num)/a.den) END BINARYFUNCTIONS add IFRAC IFRAC IFRAC (a+b) sub IFRAC IFRAC IFRAC (a-b) mul IFRAC IFRAC IFRAC (a*b) div IFRAC INTEGER INTEGER (ifraction(a,b)) div IFRAC IFRAC IFRAC (a/b) pow DOUBLE IFRAC IFRAC (pow(double(a.num)/a.den,double(b.num)/b.den)) eq INTEGER IFRAC IFRAC (a.num==b.num)&&(a.den==b.den) neq INTEGER IFRAC IFRAC (a.num!=b.num)||(a.den!=b.den) less INTEGER IFRAC IFRAC (double(a.num)/a.dendouble(b.num)/b.den) greatereq INTEGER IFRAC IFRAC (double(a.num)/a.den>=double(b.num)/b.den) END UNARYFUNCTIONS neg IFRAC IFRAC (-a) abs IFRAC IFRAC (a.num<0?ifraction(-a.num,a.den):a) sqr IFRAC IFRAC (ifraction(a.num*a.num,a.den*a.den)) Not IFRAC IFRAC (!(double(a.num)/a.den)) output STRING IFRAC (output(a)) END