/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
Possible License(s): GPL-2.0
- // 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