浮動小数点計算を含む C プログラムの乱数発生器を知っている人はいますか?
Csmith が浮動小数点式を生成せず、他の多くの構成要素を生成するため、変更が少し難しくなることを除いて、Csmithに少し似ているものを探しています。逐次計算を生成することは、これらに浮動小数点計算が含まれている限り、私の目的にとっては良い出発点です。条件付きはさらに優れていますが、ループ、ポインター、さらには配列は必要ありません。
非常に多くの言語が C に似た構文を使用しているため、そのようなジェネレーターは C に固有のものである必要はないかもしれません。別の C に似た言語に固有のものであっても、その言語用に生成されたプログラムをテキスト処理して、 C プログラム。
編集: これは、私が探しているものを明確にするための Csmith で生成されたプログラムのスニペットです。
...
int64_t *l_374 = &g_189;
int32_t l_375 = (-1L);
int i, j, k;
l_375 &= ((g_106 == ((*l_374) = (&g_324[4] == l_373[0][0][5]))) < 0x80C8L);
return (*g_207);
...
また、Csmith プログラムを使用して、たとえばint64_t
withで置換するとfloat
、構文的に正しい C プログラムが得られる可能性がありますが、定義されたプログラムが得られることはほとんどないことも明確にする必要があります。置換されたプログラムに未定義の動作が含まれているかどうかをテストできますが、これは安価ではありません。また、置換されたプログラムの 99% を未定義であるという理由で拒否しなければならない場合、プロセスが遅すぎて役に立たなくなります。