diff --git a/src/utils.cpp b/src/utils.cpp index 0f2f674..a3de5e0 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -421,6 +421,15 @@ bool Greater(std::any a, std::any b) { a = Any2Bool(a); return int(std::any_cast(a)) > int(*ptr_b_bool); } + if (ptr_a_int2048 != nullptr) { + b = ZYM::int2048(Any2Bool(b)); + return false; + // return *ptr_a_int2048 > std::any_cast(b); + } + if (ptr_b_int2048 != nullptr) { + a = ZYM::int2048(Any2Bool(a)); + return std::any_cast(a) > *ptr_b_int2048; + } return false; } else throw FatalError("Greater: Type Error", 54); @@ -454,6 +463,15 @@ bool Less(std::any a, std::any b) { return 0; // return int(std::any_cast(a)) < int(*ptr_b_bool); } + if (ptr_a_int2048 != nullptr) { + b = ZYM::int2048(Any2Bool(b)); + return *ptr_a_int2048 < std::any_cast(b); + } + if (ptr_b_int2048 != nullptr) { + a = ZYM::int2048(Any2Bool(a)); + return 0; + // return std::any_cast(a) < *ptr_b_int2048; + } return false; } else throw FatalError("Less: Type Error", 55); @@ -562,6 +580,15 @@ bool GreaterEqual(std::any a, std::any b) { a = Any2Bool(a); return int(std::any_cast(a)) >= int(*ptr_b_bool); } + if (ptr_a_int2048 != nullptr) { + b = ZYM::int2048(Any2Bool(b)); + return false; + // return *ptr_a_int2048 > std::any_cast(b); + } + if (ptr_b_int2048 != nullptr) { + a = ZYM::int2048(Any2Bool(a)); + return std::any_cast(a) >= *ptr_b_int2048; + } return false; } else throw FatalError("GreaterEqual: Type Error", 58); @@ -600,6 +627,15 @@ bool LessEqual(std::any a, std::any b) { return false; // return int(std::any_cast(a)) <= int(*ptr_b_bool); } + if (ptr_a_int2048 != nullptr) { + b = ZYM::int2048(Any2Bool(b)); + return *ptr_a_int2048 <= std::any_cast(b); + } + if (ptr_b_int2048 != nullptr) { + a = ZYM::int2048(Any2Bool(a)); + return false; + // return std::any_cast(a) <= *ptr_b_int2048; + } return false; } else throw FatalError("LessEqual: Type Error", 59);