public static IMatched <IObject> Evaluate(INumeric x) { switch (x) { case Int i: return(Int.IntObject(-i.Value).Matched()); case Float f: return(Float.FloatObject(-f.Value).Matched()); case Long l: return(Long.LongObject(-l.Value).Matched()); case Complex c: return(c.Negate().Matched()); case Rational r: return(r.Negate().Matched()); default: return(failedMatch <IObject>(notNumeric((IObject)x))); } }
public override void RegisterMessages() { base.RegisterMessages(); messageNumberMessages(); compareMessages(); numericConversionMessages(); registerMessage("numerator".get(), (obj, _) => function <Rational>(obj, r => Long.LongObject(r.Numerator))); registerMessage("denominator".get(), (obj, _) => function <Rational>(obj, r => Long.LongObject(r.Denominator))); }
public IObject Parse(string source) => Long.LongObject(BigInteger.Parse(source));