Пример #1
0
Value* SqrtFunction::evaluate(Context* ctx)
{
	NumberValue* numVal=dynamic_cast<NumberValue*>(getParameterArgument(ctx,0));
	if(numVal) {
		decimal num=numVal->getNumber();

		return new NumberValue(r_sqrt(num));
	}
	return Value::undefined();
}
Пример #2
0
Value* ComplexValue::operation(Expression::Operator_e e)
{
	if(e==Expression::Length) {
		//l = sqrt(w^2+x^2+y^2,z^2)
		Value* n=Value::operation(real,Expression::Multiply,real);
		for(Value* i: imaginary) {
			Value* r=Value::operation(i,Expression::Multiply,i);
			n=Value::operation(n,Expression::Add,r);
		}
		auto* l=dynamic_cast<NumberValue*>(n);
		if(l)
			return new NumberValue(r_sqrt(l->getNumber()));
		return Value::undefined();
	}
	return this;
}