/cln-1.3.2/src/real/elem/cl_R_compare.cc
# · C++ · 48 lines · 30 code · 8 blank · 10 comment · 4 complexity · d558bb52c5947f251c709aa07b64a2c4 MD5 · raw file
- // compare().
- // General includes.
- #include "base/cl_sysdep.h"
- // Specification.
- #include "cln/real.h"
- // Implementation.
- #include "real/cl_R.h"
- #include "cln/rational.h"
- #include "cln/float.h"
- namespace cln {
- cl_signean compare (const cl_R& x, const cl_R& y)
- {
- // Methode:
- // Beide rational oder beide Floats -> klar.
- // Eine rational, eine Float ->
- // Die rationale Zahl zum Float machen, vergleichen.
- // Verschieden -> Das war's.
- // Gleich -> Das Float mit RATIONAL rational machen, nochmals vergleichen.
- realcase2(x
- , realcase2(y
- , // beides rationale Zahlen
- return compare(x,y);
- , // x rational, y Float -> x in Float umwandeln
- var cl_signean result = compare(cl_float(x,y),y);
- if (result != signean_null)
- return result;
- return compare(x,rational(y));
- );
- , realcase2(y
- , // x Float, y rational -> y in Float umwandeln
- var cl_signean result = compare(x,cl_float(y,x));
- if (result != signean_null)
- return result;
- return compare(rational(x),y);
- , // beides Floats
- return compare(x,y);
- );
- );
- }
- } // namespace cln