/* temperature interpolator for SB experiment */ #include #include #include double R[34],T[34],alpha,y; float r,c1,c2,c3,c4; int n,m; main(int argc, char *argv[]){ if(argc!=2){ printf("./RvsT resistance\n"); printf("Where resistance is in Ohms\n"); exit(1); } R[0]=1.0;T[0]=300.0; R[1]=1.43;T[1]=400.0; R[2]=1.87;T[2]=500.0; R[3]=2.34;T[3]=600.0; R[4]=2.85;T[4]=700.0; R[5]=3.36;T[5]=800.0; R[6]=3.88;T[6]=900.0; R[7]=4.41;T[7]=1000.0; R[8]=4.95;T[8]=1100.0; R[9]=5.48;T[9]=1200.0; R[10]=6.03;T[10]=1300.0; R[11]=6.58;T[11]=1400.0; R[12]=7.14;T[12]=1500.0; R[13]=7.71;T[13]=1600.0; R[14]=8.28;T[14]=1700.0; R[15]=8.86;T[15]=1800.0; R[16]=9.44;T[16]=1900.0; R[17]=10.03;T[17]=2000.0; R[18]=10.63;T[18]=2100.0; R[19]=11.24;T[19]=2200.0; R[20]=11.84;T[20]=2300.0; R[21]=12.46;T[21]=2400.0; R[22]=13.08;T[22]=2500.0; R[23]=13.72;T[23]=2600.0; R[24]=14.34;T[24]=2700.0; R[25]=14.99;T[25]=2800.0; R[26]=15.63;T[26]=2900.0; R[27]=16.29;T[27]=3000.0; R[28]=16.95;T[28]=3100.0; R[29]=17.62;T[29]=3200.0; R[30]=18.28;T[30]=3300.0; R[31]=18.97;T[31]=3400.0; R[32]=19.66;T[32]=3500.0; /* find R in table closest to input r */ n=0; r=atof(argv[1]); for(m=0;m<31;m++){ if(fabs(r-R[m]) <= fabs(r-R[n])) n=m; } /* now we have bracketting values */ alpha=r-R[n]; c1=-(alpha-1.0)*(alpha-2.0)*(alpha-3.0)/6.0; c2=alpha*(alpha-2.0)*(alpha-3.0)/2.0; c3=-alpha*(alpha-1.0)*(alpha-3.0)/2.0; c4=alpha*(alpha-1.0)*(alpha-2.0)/6.0; y=c1*T[n]+c2*T[n+1]+c3*T[n+2]+c4*T[n+3]; printf("R/R(300) = %f at T = %f\n",r,y); }