From b9dd31e9bb23faace4203493b85f6dc7c5f9aaca Mon Sep 17 00:00:00 2001 From: Muqsit Date: Thu, 3 Nov 2022 14:22:37 +0000 Subject: [PATCH] Resolve subtraction with NAN to NAN during operator strength reduction (address #16) --- .../optimizer/OperatorStrengthReductionExpressionOptimizer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/muqsit/arithmexp/expression/optimizer/OperatorStrengthReductionExpressionOptimizer.php b/src/muqsit/arithmexp/expression/optimizer/OperatorStrengthReductionExpressionOptimizer.php index 7e297a9..a366bfa 100644 --- a/src/muqsit/arithmexp/expression/optimizer/OperatorStrengthReductionExpressionOptimizer.php +++ b/src/muqsit/arithmexp/expression/optimizer/OperatorStrengthReductionExpressionOptimizer.php @@ -240,6 +240,7 @@ private function processBinaryExpression(Parser $parser, Expression $expression, new FunctionCallExpressionToken(Util::positionContainingExpressionTokens($right), $m_op->getSymbol(), 2, $m_op->getOperator(), $m_op->isDeterministic(), $m_op->isCommutative(), new BinaryOperatorToken($token->getPos(), $m_op->getSymbol())) ], $this->valueEquals($right, 0) => $left, + $this->valueIsNan($left), $this->valueIsNan($right) => [new NumericLiteralExpressionToken(Util::positionContainingExpressionTokens([...$left, ...$right]), NAN)], default => $this->processSubtraction($parser, $operator_token, $left, $right) }, default => null