Thanks for the response Greg, 
I placed the x function in my code and tried it out and it still kind of worked but it still took about 15 minutes to run.
So, I'm working on the code in C using the same type of idea to see if I can get it to run properly and I got some errors doing it this way.  
I received internal errors: -898 and -45.
Here's what I have so far.  
void RBMChiralities(){
	//setup worksheets
	string RamanWksStr = "[Raman]Sheet1";
	Worksheet RamanWks(RamanWksStr);
	if(!RamanWks)
		return;
		
	WorksheetPage RBMWksPg("RBM");
	if(!RBMWksPg){
		WorksheetPage RBMWksPg;
		RBMWksPg.Create("origin", CREATE_VISIBLE);
		if(!RBMWksPg)
			return;
		RBMWksPg.SetName("RBM");
	}
	string RBMWksStr = "[RBM]Sheet1";
	Worksheet RBMWks(RBMWksStr);
	
	RBMWks.SetSize(11,5);
	
	RBMWks.SetColDesignations("XYLLL"); //L stands for Label
	RBMWks.SetColFormats("00011"); //Numeric, Numeric, Numeric, Text, Text
	RBMWks.Columns(0).SetLongName("PEAKLOCATION");
	RBMWks.Columns(0).SetName("PEAKLOCATION");
	RBMWks.Columns(0).SetLabel("PEAKLOCATION");
	RBMWks.Columns(1).SetLongName("INTENSITY");
	RBMWks.Columns(1).SetName("INTENSITY");
	RBMWks.Columns(1).SetLabel("INTENSITY");
	RBMWks.Columns(2).SetLongName("DIAMETER");
	RBMWks.Columns(2).SetName("DIAMETER");
	RBMWks.Columns(2).SetLabel("DIAMETER");
	RBMWks.Columns(3).SetLongName("NMASSIGNMENT");
	RBMWks.Columns(3).SetName("NMASSIGNMENT");
	RBMWks.Columns(3).SetLabel("NMASSIGNMENT");
	RBMWks.Columns(4).SetLongName("TYPE");
	RBMWks.Columns(4).SetName("TYPE");
	RBMWks.Columns(4).SetLabel("TYPE");
	//data    
	//http://arrow.dit.ie/cgi/viewcontent.cgi?article=1093&context=sciendoc
	//
	//Peak Locations
	RBMWks.SetCell(0,0,182.4);
	RBMWks.SetCell(1,0,192.5);
	RBMWks.SetCell(2,0,213.7);
	RBMWks.SetCell(3,0,222.5);
	RBMWks.SetCell(4,0,233.2);
	RBMWks.SetCell(5,0,244.8);
	RBMWks.SetCell(6,0,254.0);
	RBMWks.SetCell(7,0,268.3);
	RBMWks.SetCell(8,0,278.0);
	RBMWks.SetCell(9,0,295.0);
	RBMWks.SetCell(10,0,317.2);
	//Diameters
	RBMWks.SetCell(0,2,1.3355771);
	RBMWks.SetCell(1,2,1.27026066);
	RBMWks.SetCell(2,2,1.12556841);
	RBMWks.SetCell(3,2,1.09145283);
	RBMWks.SetCell(4,2,1.03817364);
	RBMWks.SetCell(5,2,0.99160114);
	RBMWks.SetCell(6,2,0.95269852);
	RBMWks.SetCell(7,2,0.90171326);
	RBMWks.SetCell(8,2,0.8587524);
	RBMWks.SetCell(9,2,0.80573685);
	RBMWks.SetCell(10,2,0.75734626);
	//NM Assignments
	RBMWks.SetCell(0,3,"(13,6)");
	RBMWks.SetCell(1,3,"(16,0)");
	RBMWks.SetCell(2,3,"(11,5)");
	RBMWks.SetCell(3,3,"(12,3)");
	RBMWks.SetCell(4,3,"(9,6)");
	RBMWks.SetCell(5,3,"(10,4)");
	RBMWks.SetCell(6,3,"(12,0)");
	RBMWks.SetCell(7,3,"(8,5)");
	RBMWks.SetCell(8,3,"(9,3)");
	RBMWks.SetCell(9,3,"(9,2)");
	RBMWks.SetCell(10,3,"(6,5)");
	//Types
	RBMWks.SetCell(0,4,"S");
	RBMWks.SetCell(1,4,"S");
	RBMWks.SetCell(2,4,"M");
	RBMWks.SetCell(3,4,"M");
	RBMWks.SetCell(4,4,"M");
	RBMWks.SetCell(5,4,"M");
	RBMWks.SetCell(6,4,"M");
	RBMWks.SetCell(7,4,"M");
	RBMWks.SetCell(8,4,"M");
	RBMWks.SetCell(9,4,"S");
	RBMWks.SetCell(10,4,"S");
//interpolation code to replace loop
	string XFStr = "interp1";
	XFBase xf(XFStr);
	if(!xf.IsValid()){
		out_str("Falied to load X Function");
		return;
	}
	DataRange vX;
	vX.Add("X", RBMWks, 0, 0, -1, 0);
	DataRange vYreal;
	vYreal.Add("Y", RamanWks, 0, 1, -1, 1);
	DataRange vYinter;
	vYinter.Add("Y", RBMWks, 0, 1, -1, 1);
	xf.SetArg(0,vX); // 0 is ix
	xf.SetArg(1,vYreal); //1 is iy
	xf.SetArg(2, 0); //2 is method, 0 is linear
	xf.SetArg(5, vYinter); //5 is the result (ox)
	xf.Evaluate();
	
}
Thanks for the input.