MathFunctions.cxx 805 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <cmath>
  2. #include <format>
  3. // TODO5: Replace <iostream> with <MathLogger.h>
  4. #include <iostream>
  5. namespace {
  6. // TODO6: Instantiate a logger inside the anonymous namespace
  7. // a hack square root calculation using simple operations
  8. double mysqrt(double x)
  9. {
  10. if (x <= 0) {
  11. return 0;
  12. }
  13. double result = x;
  14. // do ten iterations
  15. for (int i = 0; i < 10; ++i) {
  16. if (result <= 0) {
  17. result = 0.1;
  18. }
  19. double delta = x - (result * result);
  20. result = result + 0.5 * delta / result;
  21. // TODO7: Use the logger to log the message
  22. std::cout << std::format("Computing sqrt of {} to be {}\n", x, result);
  23. }
  24. return result;
  25. }
  26. }
  27. namespace mathfunctions {
  28. double sqrt(double x)
  29. {
  30. #ifdef TUTORIAL_USE_STD_SQRT
  31. return std::sqrt(x);
  32. #else
  33. return mysqrt(x);
  34. #endif
  35. }
  36. }