int sq_sum (int n) { if (n == 0) return 0; return n * n + sq_sum (n - 1); }
double AmericanPut::megan_fox_(double z, double x, double y) const { const double log_term = log_factor_(z); check_nz(a_, "AmericanPut::a_"); const double arc_tan = atan(z / a_); const double top = x * log_term + y * arc_tan; const double bottom = sq_sum(b_, z); check_nz(bottom, "AmericanPut::megan_fox_()::bottom"); const double retVal = top / bottom; return retVal; }
int main(void) { if (sum (5) != 15) abort (); if (fac (5) != 120) abort (); if (sq_sum (5) != 55) abort (); if (pow2m1 (5) != 31) abort (); if (fib (5) != 8) abort (); exit (0); }
double AmericanPut::finite_time_price_integrand_(double x) const { const double retVal = exp_factor_(x) * sholay_(S_/K_, x) / sq_sum(a_, x) / sq_sum(b_, x); return retVal; }
double AmericanPut::log_factor_(double x) const { const double retVal = log( sqrt(sq_sum(a_, x)) / gamma_ ); return retVal; }
double AmericanPut::optimal_exercise_integrand_(double x) const { const double retVal = x * exp_factor_(x) * exp(-f1_(x)) * sin(f2_(x)) / sq_sum(a_, x); return retVal; }