From 5cb52f7bb717c807f48c6a422b208055bd601c64 Mon Sep 17 00:00:00 2001 From: Slavasil Date: Mon, 23 Mar 2026 10:14:06 +0300 Subject: [PATCH] optimize unary minus for constants --- lib/ruby_algebra/parser.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ruby_algebra/parser.rb b/lib/ruby_algebra/parser.rb index 98f2a70..05c8086 100644 --- a/lib/ruby_algebra/parser.rb +++ b/lib/ruby_algebra/parser.rb @@ -183,7 +183,11 @@ module RubyAlgebra when :positive out_stack.push a when :negative - out_stack.push Multiplication.new(Constant.new(-1), a) + if a.type == :constant + out_stack.push Constant.new(-a.value) + else + out_stack.push Multiplication.new(Constant.new(-1), a) + end end end