Ошибка переполнения стека с помощью символического переполнения стека

Простейшая версия проблемы такова:

Symbolic x("x");
Symbolic y("y");
Symbolic a("a");
Symbolic ans;
a = 1.1;
ans = a ^ (x + y);
std::cout << ans;

По сути, это начинает бесконечный цикл рекурсии и приводит к переполнению стека.

Если a = 0 или a = 1, переполнение стека не происходит, потому что 0 ^ x = 0 и 1 ^ x = 1. Если a не установлено на постоянное значение, будет напечатано «a ^ (x + y)», потому что это не может быть упрощено. Создание целого числа (кроме 1 и 0) ничего не меняет.

Оптимально это выдает «(1.1) ^ (x + y)», потому что нет способа упростить это.

Мне интересно, если кто-то имел эту проблему раньше или знает, как обойти. Я пробовал поискать в Google, но этот сайт сделал невозможным поиск информации об ошибках переполнения стека с помощью Google.

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]