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