subroutine nden(val,eval) implicit none integer i,n parameter(n=34) double precision temp(n), norm(n) double precision val,eval,slop,y_int data temp/ 0.2, 0.3, 0.4, 0.5, 0.6, & 0.7, 0.8, 0.9, 1.0, 1.1, & 1.2, 1.3, 1.4, 1.5, 1.6, & 1.7, 1.8, 1.9, 2.0, 2.1, & 2.2, 2.3, 2.4, 2.5, 2.6, & 2.8, 3.0, 3.2, 3.4, 3.6, & 3.8, 4.0, 4.2, 4.4/ ! (K) data norm/ 0.9931507, 0.9931507, 0.9931507, 0.9931507, & 0.9931507, 0.9931507, 0.9931507, 0.9931507, 0.9931507, & 0.9931507, 0.9931507, 0.9931507, 0.9931507, 0.9938356, & 0.9938356, 0.9945205, 0.9952055, 0.9958904, 0.9972603, & 0.9986301, 1.0000000, 0.9979452, 0.9952055, 0.9917809, & 0.9876713, 0.9787672, 0.9671233, 0.9534247, 0.9376712, & 0.9198630, 0.9006850, 0.8794520, 0.8568493, 0.8328767/ * do i=1,n-1 if(val.lt.temp(1).or.val.gt.temp(n)) then write(*,*) val,temp(1),temp(n) write(*,*) 'The value is out of range ... nden code' stop elseif(val.eq.temp(i)) then eval = norm(i) elseif(val.eq.temp(i+1)) then eval = norm(i+1) elseif(val.gt.temp(i).and.val.lt.temp(i+1)) then slop = (norm(i+1)-norm(i))/(temp(i+1)-temp(i)) y_int = norm(i) - slop*temp(i) eval = slop*val+y_int else continue endif enddo return end