Кто-нибудь знает случайный генератор программ на 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
на float
, можно получить синтаксически правильную программу на C, но это почти наверняка не дастопределенная программа.Я могу проверить, содержит ли замещенная программа неопределенное поведение, но это не дешево, и если мне придется отклонить 99% замещенных программ, потому что они неопределенные, процесс будет слишком медленным, чтобы быть полезным.