#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(){
 clrscr();
 char choice='y';
 int n,i,j,k;
 float h[10],a,b,c,d,sum,s[10]={0},x[10],F[10],f[10],p,m[10][10]={0},temp;
 
printf("No of samples? ");
scanf("%d",&n);
printf("\nEnter all sample points: ");
 for(i=0;i<n;i++)
  scanf("%f%f",&x[i],&f[i]);
 for(i=n-1;i>0;i--){
  F[i]=(f[i]-f[i-1])/(x[i]-x[i-1]);
  h[i-1]=x[i]-x[i-1];
 }
//*********** formation of h, s , f matrix **************//
for(i=1;i<n-1;i++){
 m[i][i]=2*(h[i-1]+h[i]);
 if(i!=1){
  m[i][i-1]=h[i-1];
  m[i-1][i]=h[i-1];
 }
 m[i][n-1]=6*(F[i+1]-F[i]);
}
//*********** forward elimination **************//
for(i=1;i<n-2;i++){
 temp=(m[i+1][i]/m[i][i]);
 for(j=1;j<=n-1;j++)
  m[i+1][j]-=temp*m[i][j];
}
//*********** backward substitution *********//
for(i=n-2;i>0;i--){
 sum=0;
 for(j=i;j<=n-2;j++)
  sum+=m[i][j]*s[j];
 s[i]=(m[i][n-1]-sum)/m[i][i];
}
while(choice=='y'){
 printf("\nEnter x : ");
 scanf("%f",&p);
 for(i=0;i<n-1;i++)
  if(x[i]<=p&&p<=x[i+1]){
   a=(s[i+1]-s[i])/(6*h[i]);
   b=s[i]/2;
   c=(f[i+1]-f[i])/h[i]-(2*h[i]*s[i]+s[i+1]*h[i])/6;
   d=f[i];
   sum=a*pow((p-x[i]),3)+b*pow((p-x[i]),2)+c*(p-x[i])+d;
  }
 printf("\nCoefficients of sub intervals are : %f\n%f\n%f\n%f",a,b,c,d);
 printf("\nFunctional value is: %f",sum);
 printf("\nContinue (y/n) ? ");
 scanf("%c",&choice);
}
getch();
}
Sample Output:
No of samples? 5
Enter all sample points: 1     2
2     3
3     4
4     5
5     6
Enter x : 3.5
Coefficients of sub intervals are : 0.000000
0.000000
1.000000
4.000000
Functional value is: 4.500000
Continue (y/n) ?
©Dixit Bhatta 2013