Modern C++ idoms and recipes
C++17 adds template
std::optional to manage an optional value.
Try to make pass the tests for error cases. Do not worry about the good case test, if it fails because of formating or precision issues.
Make the tests pass by refactoring function
differentiate to return
std::optional<double> instead of
Does it help to make use of
Refactor the code to use std::optional
// symmetric difference quotient
double differentiate(std::function<double(double)> f, double h, double x)
return (f(x + h) - f(x - h)) / (2 * h);
std::string estimated_velocity(std::function<double(double)> distance, double time, double precision)
auto velocity = differentiate(distance, precision, time);
output << "Estimated velocity after " << time << " seconds is " << velocity << " m/s.";
Replace the type for time with something better than than double.
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.