static ISymbolValue HandleSingleMathOp(OperatorBasedExpression x, ISemantic l, ISemantic r, MathOp2 m, bool UnorderedCheck = true) { if(l == null || r == null) return null; var pl = l as PrimitiveValue; var pr = r as PrimitiveValue; //TODO: imaginary/complex parts if (pl != null && pr != null) { if (UnorderedCheck && (pl.IsNaN || pr.IsNaN)) return PrimitiveValue.CreateNaNValue(pl.IsNaN ? pl.BaseTypeToken : pr.BaseTypeToken, pl.IsNaN ? pl.Modifier : pr.Modifier); return m(pl, pr, x); } return null; //throw new NotImplementedException("Operator overloading not implemented yet."); }
ISemantic HandleSingleMathOp(OperatorBasedExpression x, ISemantic l, ISemantic r, MathOp2 m, bool UnorderedCheck = true) { if (l == null || r == null) { return(null); } var pl = l as PrimitiveValue; var pr = r as PrimitiveValue; //TODO: imaginary/complex parts if (pl != null && pr != null) { if (UnorderedCheck && (pl.IsNaN || pr.IsNaN)) { return(PrimitiveValue.CreateNaNValue(x, pl.IsNaN ? pl.BaseTypeToken : pr.BaseTypeToken)); } return(m(pl, pr, x)); } throw new NotImplementedException("Operator overloading not implemented yet."); }