long __Call_arcth( 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( arcth( (arg - 1)->getReal() ) ); else // DSRDATA_TYPE_COMPLEX *(arg - 1) = CDSRComplex( arcth( (arg - 1)->getComplex() ) ); return 1 - addr.param3; }
bool TrigonometricFunction::unaryArcth(ExecutionContext *context, QString *err) { switch (context->obligArg().type()) { case PretexVariant::Int: if (context->obligArg().toInt() == 1) return bRet(err, tr("Invalid argument", "error"), false); context->setReturnValue(arcth(context->obligArg().toInt())); break; case PretexVariant::Real: context->setReturnValue(arcth(context->obligArg().toReal())); break; case PretexVariant::String: default: return bRet(err, tr("Invalid argument type", "error"), false); } return bRet(err, QString(), true); }