diff --git a/src/shared/stdlib/kumirstdlib.hpp b/src/shared/stdlib/kumirstdlib.hpp index 54a73a7646b6d717132e2a5b16a8138723698c07..c0de7642d28746a5378a95937f78dccf589fefa7 100644 --- a/src/shared/stdlib/kumirstdlib.hpp +++ b/src/shared/stdlib/kumirstdlib.hpp @@ -455,9 +455,9 @@ public: inline static int ipow(int a, int b) { real rresult = ::floor(pow(real(a), real(b))); if (Core::error.length()>0) return 0; - if (rresult>real(maxint()) - || - rresult < -real(maxint())) + real absval = fabs(rresult); + real mxintval = fabs(real(maxint())); + if (absval>mxintval) { Core::abort(Core::fromUtf8("Ошибка возведения в степень: результат - слишком большое число")); return 0;