public ClLinearInequality(ClLinearExpression cle1, Cl.Operator op, ClLinearExpression cle2, ClStrength strength, double weight = 1.0) : base(cle2.Clone(), strength, weight) /* throws ExClInternalError */ { const double EPSILON = 1e-8; switch (op) { case Cl.Operator.GreaterThanOrEqualTo: SetupGreaterThanOrEqualTo(cle1); break; case Cl.Operator.GreaterThan: SetupGreaterThanOrEqualTo(cle1); ExpressionField.IncrementConstant(-EPSILON); break; case Cl.Operator.LessThanOrEqualTo: SetupLessThanOrEqualTo(cle1); break; case Cl.Operator.LessThan: SetupLessThanOrEqualTo(cle1); ExpressionField.IncrementConstant(-EPSILON); break; default: // invalid operator throw new CassowaryInternalException("Invalid operator in ClLinearInequality constructor"); } }
public ClLinearEquation(ClLinearExpression cle1, ClLinearExpression cle2, ClStrength strength, double weight = 1.0) : base(cle1.Clone(), strength, weight) { ExpressionField.AddExpression(cle2, -1.0); }
public ClLinearEquation(ClLinearExpression cle, ClAbstractVariable clv, ClStrength strength, double weight = 1.0) : base(cle.Clone(), strength, weight) { ExpressionField.AddVariable(clv, -1.0); }