Ejemplo n.º 1
0
 public override ITerm CApply(Unifier u)
 {
     try
     {
         double l = ((INumberTerm)GetTerm(0).CApply(u)).Solve();
         if (IsUnary())
         {
             if (op == ArithmeticOp.minus)
             {
                 value = new NumberTermImpl(-l);
             }
             else
             {
                 value = new NumberTermImpl(l);
             }
         }
         else
         {
             double r = ((INumberTerm)GetTerm(1).CApply(u)).Solve();
             value = new NumberTermImpl(op.Eval(l, r));
         }
         return(value);
     }
     catch (InvalidCastException)
     {
         Debug.Log("The value of " + this + " is not a number! Unifier = " + u + ". Code: " + GetSrcInfo());
         return(new NumberTermImpl(double.NaN));
     }
     catch (NoValueException)
     {
         return(Clone());
     }
 }
Ejemplo n.º 2
0
 public override int CompareTo(ITerm o)
 {
     if (o.GetType() == typeof(VarTerm))
     {
         return(o.CompareTo(this) * -1);
     }
     if (o.GetType() == typeof(NumberTermImpl))
     {
         NumberTermImpl st = o as NumberTermImpl;
         if (value > st.value)
         {
             return(1);
         }
         if (value < st.value)
         {
             return(-1);
         }
         return(0);
     }
     return(-1);
 }
Ejemplo n.º 3
0
 public NumberTermImpl(NumberTermImpl t)
 {
     value   = t.value;
     srcInfo = t.srcInfo;
 }