long __Call_arsh( CDSR_VMEval& /*vm*/, MMD_Address& addr, UniWord *arg ) { #if _DEBUG if( addr.param2 < 0 ) throw _T("__Call_(fun) : internal error, out of range"); #endif if( addr.param2 == 0 ) // DSRDATA_TYPE_REAL *(arg - 1) = CDSRReal( arsh( (arg - 1)->getReal() ) ); else // DSRDATA_TYPE_COMPLEX *(arg - 1) = CDSRComplex( arsh( (arg - 1)->getComplex() ) ); return 1 - addr.param3; }
bool TrigonometricFunction::unaryArsh(ExecutionContext *context, QString *err) { switch (context->obligArg().type()) { case PretexVariant::Int: context->setReturnValue(arsh(context->obligArg().toInt())); break; case PretexVariant::Real: context->setReturnValue(arsh(context->obligArg().toReal())); break; case PretexVariant::String: default: return bRet(err, tr("Invalid argument type", "error"), false); } return bRet(err, QString(), true); }