int main(void) { size_t i, n; // Sum all values and print, to avoid optimization. double res, sum = 0.0; n = sizeof src / sizeof *src; if (n != sizeof result / sizeof *result) { fprintf(stderr, "array mismatch\n"); exit(1); } for (i = 0; i < n; i++) { res = blackscholes_call(src[i].S, src[i].X, src[i].T, src[i].r, src[i].v); if (!equalish(res, result[i])) { fprintf(stderr, "test %zu: expected %g, got %g\n", i, result[i], res); exit(1); } sum += res; } printf("%zu: %g\n", i, sum); exit(0); }
void driver() { meter_vector results; std::vector<double> inputs = {1.0, 10.0, 12.25}; std::vector<double> expected = {1.0, 1000.0, 1609.34, 10.0, 10000.0, 16093.4, 12.25, 12250.0, 19714.5}; for (double input : inputs) { populate_vector(fr::oonits::meters(input), &results); populate_vector(fr::oonits::kilometers(input), &results); populate_vector(fr::oonits::miles(input), &results); // Will result in a surprisingly informative error message // in gcc 4.9.0 // populate_vector(fr::oonits::celcius(input), &results); } for (int i = 0; i < expected.size(); ++i) { std::cout << "Expected: " << expected[i] << " result: " << results[i].units << std::endl; CPPUNIT_ASSERT(equalish(expected[i], results[i].units)); } }