C言語tips

iterationのオーバーフロー

エラーは出ないが明らかに計算時間が早い

iterationがbreakとなる

==>iteration が 10E+8 超えたくらいから, iに格納できる数字に限界(オーバーフロー)

 

例えば

for( i = 0; i  < 120 * 60 * 10E+6 ; i ++){

   19の連立微分方程式(varの数19);

   if( i % 10E+6){

      fprintf(fp2,"%lf .... %lf",var1,var2 ...);

}

>>>>>>>> OVERFLOR

 解決策

forのネストを2つにする

for( n = 0; n < 120; n ++){

     for( m = 0; m < 60 * 10E+6; m++){

        連立微分

 }

   fprintf(fp2,"%lf .... %lf",var1,var2 ...);    

}

 >>>>>> 数分で計算完了