// modulo BigNumber & BigNumber::operator%= (const BigNumber & n) { bc_num result = NULL; bc_init_num (&result); // in case zero bc_modulo (num_, n.num_, &result, scale_); bc_free_num (&num_); num_ = result; return *this; } // end of BigNumber::operator%=
static Variant HHVM_FUNCTION(bcmod, const String& left, const String& right) { bc_num first, second, result; bc_init_num(&first); bc_init_num(&second); bc_init_num(&result); php_str2num(&first, (char*)left.data()); php_str2num(&second, (char*)right.data()); if (bc_modulo(first, second, &result, 0) == -1) { raise_warning("Division by zero"); return Variant(); } String ret(bc_num2str(result), AttachString); bc_free_num(&first); bc_free_num(&second); bc_free_num(&result); return ret; }
String f_bcmod(CStrRef left, CStrRef right) { bc_num first, second, result; bc_init_num(&first); bc_init_num(&second); bc_init_num(&result); php_str2num(&first, (char*)left.data()); php_str2num(&second, (char*)right.data()); if (bc_modulo(first, second, &result, 0) == -1) { Logger::Warning("Division by zero"); return String(); } String ret(bc_num2str(result), AttachString); bc_free_num(&first); bc_free_num(&second); bc_free_num(&result); return ret; }