You can use the below function for linear interpolation i.e. #include int NearestIndex( double value, double *x, int len ) { double dist; int index; int i; index = -1; dist = Double_Max; for ( i = 0; i < len; i++ ) { double newDist = value - x[i]; if ( newDist > 0 && newDist < dist ) { dist = newDist; index = i; } } return index; } void linearinterpolation(double *x, int x_tem, double *y, double *xx, int xx_tem, double *yy) { double da, db, *slp, *inter; int i, Envectorindice; slp=(double *)calloc(x_tem,sizeof(double)); inter=(double *)calloc(x_tem,sizeof(double)); for(i = 0; i < x_tem; i++){ if(i Solution You can use the below function for linear interpolation i.e. #include int NearestIndex( double value, double *x, int len ) { double dist; int index; int i; index = -1; dist = Double_Max; for ( i = 0; i < len; i++ ) { double newDist = value - x[i]; if ( newDist > 0 && newDist < dist ) { dist = newDist; index = i; } } return index; } void linearinterpolation(double *x, int x_tem, double *y, double *xx, int xx_tem, double *yy) { double da, db, *slp, *inter; int i, Envectorindice; slp=(double *)calloc(x_tem,sizeof(double)); inter=(double *)calloc(x_tem,sizeof(double)); for(i = 0; i < x_tem; i++){ if(i.