/*    ATK IV - Numerical Programming (2006)      */
/*    Excercise 7.4 -  Gaussian Quadratures      */

#include<stdio.h>
#include<math.h>
#define N 10

float f(float x){return x;}
float gausch(float (*g)(float x),int n);

int main(void){
  float y;

  y=gausch(f,N);

  printf("%f\n",y);

  return 0;

}

float gausch(float (*g)(float x),int n){
  float Pi = 4.0*atan(1.0);
  float w,x,sum;
  int i;

  w=Pi/n;

  for(i=1;i<=n;i++){
    x=cos(0.5*(2*i-1)*w);
    sum=sum+w*g(x);
  }
  return sum;
}