#include #include "LPC17xx.H" /* LPC17xx definitions */ #include float tm[] = {10,20,30,40}; float lb[] = {300,500,700,900}; int V[4][4] = {{395,340,321,317},{590,550,541,535},{790,760,750,746},{974,969,962,954}}; float r = 3300; float rx[4]; float m[4][3],p[4][2],o[4]; float temp,p1,q1,p2,q2,p3,q3,Q1[3],Q2[2],Q3,xv; int i,j; void delay(){ int i=0; for(i=0;i<10000000;i++) {} } void rat(float temp,float v){ //obtain rational interpolated data for(j=0;j<4;j++){ p1 = m[j][0]*V[j][0] + (temp-tm[0]); q1 = m[j][0]; p2 = p[j][0]*p1 + (temp-tm[1])*V[j][0]; q2 = p[j][0]*q1 + (temp-tm[1]); p3 = o[j]*p2 + (temp-tm[2])*p1; q3 = o[j]*q2 + (temp-tm[2])*q1; rx[j] = p3/q3; } for (i=0;i<3;i++){ Q1[i] = (rx[0]-rx[i+1])/(lb[0]-lb[i+1]); } for (i=0;i<2;i++){ Q2[i] = (rx[1]-rx[i+2])/(Q1[0]-Q1[i+1]); } Q3 = (rx[2]-rx[3])/(Q2[0]-Q2[1]); p1 = Q1[0]*300 + (v-rx[0]); q1 = Q1[0]; p2 = Q2[0]*p1 + (v-rx[1])*300; q2 = Q2[0]*q1 + (v-rx[1]); p3 = Q3*p2 + (v-rx[2])*p1; q3 = Q3*q2 + (v-rx[2])*q1; r = p3/q3; } void coff(){ //initial coefficients / devided differences for(i=0;i<3;i++){ for(j=0;j<4;j++){ m[j][i] = (tm[i+1]-tm[0])/(V[j][i+1]-V[j][0]); } } for(i=0;i<2;i++){ for(j=0;j<4;j++){ p[j][i] = (tm[i+2]-tm[1])/(m[j][i+1]-m[j][0]); } } for(j=0;j<4;j++){ o[j] = (tm[3]-tm[2])/(p[j][1]-p[j][0]); } } int main(){ SystemInit(); temp = 1/(1.4*pow(10,-3) + 2.37*log(r)*pow(10,-4) + 9.9*pow(log(r),3)*pow(10,-8)); coff(); rat(10,704); }