コードはwhileループをスキップしているようです:
int i,j;
i= floor((Lx-23.61)/0.1);
j=0;
while(Nh - modSED[i][j] > 0.0){
j++;
}
if(j>0 && modSED[i][j]-Nh > Nh-modSED[i][j-1]){
fileNH=modSED[i][j-1];
}else{
fileNH=modSED[i][j];
}
これは、多かれ少なかれ、doubleの配列を介した大まかな線形検索です(i-indexは、コードの別の部分によって事前設定されているため、問題にはなりません)。GDBを見ると、コードが誤動作しているようです。
Breakpoint 1, mag (filter=4, Lx=23.930108812418158, z=0.57071772467724535, Nh=0.011911981460606383) at infopt.c:45
45 while(Nh-modSED[i][j]>0.0){
(gdb) print Nh-modSED[i][j]
$1 = 0.001911981460606383
(gdb) n
48 if(j>0 && modSED[i][j]-Nh > Nh-modSED[i][j-1]){
(gdb)
また、whileループがtrueと評価されたとしても、j++セグメントをスキップしただけです。
ありがとう、ジョシュ