前田/日誌/2009-06-24
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[前田/日誌]]
***今日やったこと [#cb38d23a]
-電子回路レポート
***戯言 [#cfac9bfc]
-Debian 5.0, gcc/g++(4.3.2-1.1)で以下のプログラムをコンパイル/実行すると得られる値が違う。
#include <stdio.h>
#include <math.h>
double lg(double a)
{
return log(a)/log(2.0);
}
int main(void)
{
printf("%d\n",(int)(log(64.0)/log(2.0)));
printf("%d\n",(int)lg(64.0));
return 0;
}
/* 実行結果
6
5
*/
--これが原因でFFTが動かなかった。OS依存のコンパイラのバグ?
--C言語/C++の仕様書にキャストの順番とか関数の戻り値に対するキャストの定義とかあったかなぁ・・
--例えば単純な解決策としては、2を底とした値で整数しか必要ない場合、math.hにあるceil関数を用いるとか考えられるが・・
----
#comment
終了行:
[[前田/日誌]]
***今日やったこと [#cb38d23a]
-電子回路レポート
***戯言 [#cfac9bfc]
-Debian 5.0, gcc/g++(4.3.2-1.1)で以下のプログラムをコンパイル/実行すると得られる値が違う。
#include <stdio.h>
#include <math.h>
double lg(double a)
{
return log(a)/log(2.0);
}
int main(void)
{
printf("%d\n",(int)(log(64.0)/log(2.0)));
printf("%d\n",(int)lg(64.0));
return 0;
}
/* 実行結果
6
5
*/
--これが原因でFFTが動かなかった。OS依存のコンパイラのバグ?
--C言語/C++の仕様書にキャストの順番とか関数の戻り値に対するキャストの定義とかあったかなぁ・・
--例えば単純な解決策としては、2を底とした値で整数しか必要ない場合、math.hにあるceil関数を用いるとか考えられるが・・
----
#comment
ページ名: