PageRenderTime 64ms CodeModel.GetById 39ms RepoModel.GetById 1ms app.codeStats 0ms

/cln-1.3.2/src/rational/elem/cl_RA_equal.cc

#
C++ | 49 lines | 28 code | 8 blank | 13 comment | 6 complexity | c542e0910160f8f6768e6936896f3f22 MD5 | raw file
Possible License(s): GPL-2.0
  1. // equal().
  2. // General includes.
  3. #include "base/cl_sysdep.h"
  4. // Specification.
  5. #include "cln/rational.h"
  6. // Implementation.
  7. #include "rational/cl_RA.h"
  8. #include "cln/integer.h"
  9. namespace cln {
  10. bool equal (const cl_RA& r, const cl_RA& s)
  11. {
  12. // Methode:
  13. // r,s Integer -> klar
  14. // r Integer, s Ratio: verschieden.
  15. // r Ratio, s Integer: verschieden.
  16. // r,s Ratios: r=a/b, s=c/d. Vergleiche a mit c und b mit d.
  17. if (integerp(r))
  18. if (integerp(s)) {
  19. // r,s beide Integer
  20. DeclareType(cl_I,r);
  21. DeclareType(cl_I,s);
  22. return equal(r,s);
  23. } else
  24. // r Integer, s Ratio
  25. return false;
  26. else
  27. if (integerp(s))
  28. // r Ratio, s Integer
  29. return false;
  30. else {
  31. DeclareType(cl_RT,r);
  32. DeclareType(cl_RT,s);
  33. // r,s Ratios
  34. if (!equal(numerator(r),numerator(s)))
  35. return false;
  36. if (!equal(denominator(r),denominator(s)))
  37. return false;
  38. return true;
  39. }
  40. }
  41. } // namespace cln