Skip to content

Instantly share code, notes, and snippets.

@VirtualSatai
Created October 29, 2014 11:48
Show Gist options
  • Save VirtualSatai/9ba6a17ef5f4369948fd to your computer and use it in GitHub Desktop.
Save VirtualSatai/9ba6a17ef5f4369948fd to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <math.h>
typedef double (*function)(double);
typedef double (*sum_function)(double, double, double, function);
double trap(double startX, double endX, double numOfIntervals, sum_function sum_fn, function fn);
double sum_fn(double startX, double intervalSize, double endX, function fn);
double fn(double x);
int main(void){
double startX = -2;
double endX = 2;
double numOfIntervals = 128;
printf("%f\n", trap(startX, endX, numOfIntervals, &sum_fn, &fn));
return 0;
}
double trap(double startX, double endX, double numOfIntervals, sum_function sum_fn, function fn){
double intervalSize = (endX-startX)/numOfIntervals;
return (intervalSize/2)*(fn(startX)+fn(endX)+2*sum_fn(startX, intervalSize, endX, fn));
}
double sum_fn(double startX, double intervalSize, double endX, function fn){
double sum = 0;
double i;
for (i = startX+intervalSize; i < endX; i += intervalSize)
{
sum +=fn(i);
}
return sum;
}
double fn(double x){
return sqrt(4-pow(x,2));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment