Esempio n. 1
0
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);
}
Esempio n. 2
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));
    }
  }