#include #define HALFPI 1.5707963268 // Compute factorial iteratively double factorial(int n) { double result = 1.0; for (int i = 2; i <= n; ++i) { result *= i; } return result; } double abs_double(double x) { return x < 0 ? -x : x; } // SICP-style iterative approximation for sin(x) double sin_iter(double x) { double term = x; // First term of the series double sum = term; // Initial sum // double prev_sum; int n = 1; // Starting from x^3/3! do { // prev_sum = sum; term *= -x * x / ((2 * n) * (2 * n + 1)); // Next term in series sum += term; ++n; } while (abs_double(term) > 1e-10); // Stop when term is sufficiently small return sum; } int main() { printf("Approximated sin(pi/2) = %.10f\n", sin_iter(HALFPI)); return 0; }