早速のレスありがとうございます。

ええと
main内で
for(i=0;i<30000;i++){
func(i)
}
って感じで繰り返しをしてるのですが、
func内の処理の前後でhogeの値を見ても値は変わっていないのです。
func(){
printf("before %f\n",hoge);
{処理}
printf("after %f\n",hoge);
}
ってやって確認しました。だから処理内でおかしなことが
起きていないと判断しているのですが。

とりあえずですが760さんのおっしゃるように
他の部分で配列の値がおかしくなってないかとか確認してみます。