diff --git a/src/utils.cpp b/src/utils.cpp index 713925b..246ca1d 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -225,6 +225,13 @@ std::any Mul(std::any a, std::any b) { ptr_a_string = std::any_cast(&a); ptr_b_string = std::any_cast(&b); } + if (Less(b, ZYM::int2048(0))) { + b = Neg(b); + ptr_b_bool = std::any_cast(&b); + ptr_b_int2048 = std::any_cast(&b); + ptr_b_float = std::any_cast(&b); + ptr_b_string = std::any_cast(&b); + } if (ptr_b_float != nullptr) { b = Any2Int(*ptr_b_float); ptr_b_int2048 = std::any_cast(&b); @@ -279,6 +286,8 @@ std::any Div(std::any a, std::any b) { std::any Divv(std::any a, std::any b) { if (std::any_cast(&a)) a = (bool)false; if (std::any_cast(&b)) b = (bool)false; + if (std::any_cast(&a) != nullptr) a = ZYM::int2048(0); + if (std::any_cast(&b) != nullptr) b = ZYM::int2048(0); ConverToSameArithType(a, b); bool *ptr_a_bool = std::any_cast(&a); bool *ptr_b_bool = std::any_cast(&b);