4 #include "base/cl_sysdep.h"
12 #include "real/cl_R.h"
13 #include "rational/cl_RA.h"
14 #include "cln/integer.h"
18 inline bool equal (const cl_F& x, const cl_F& y)
20 return compare(x,y) == 0;
23 bool equal (const cl_R& x, const cl_R& y)
26 // Beide rational oder beide Floats -> klar.
27 // Eine rational, eine Float ->
28 // Die rationale Zahl muß einen Zweierpotenz-Nenner haben, sonst verschieden.
29 // Die rationale Zahl zum Float machen, vergleichen.
30 // Verschieden -> Das war's.
31 // Gleich -> Das Float mit RATIONAL rational machen, nochmals vergleichen.
34 , // beides rationale Zahlen
36 , // x rational, y Float -> x in Float umwandeln
37 if (!power2p(denominator(x)))
39 if (!equal(cl_float(x,y),y))
41 return equal(x,rational(y));
44 , // x Float, y rational -> y in Float umwandeln
45 if (!power2p(denominator(y)))
47 if (!equal(x,cl_float(y,x)))
49 return equal(rational(x),y);