From daa2e4e74745aada56af88b70872286556a3994b Mon Sep 17 00:00:00 2001 From: Slavasil Date: Mon, 23 Mar 2026 10:07:26 +0300 Subject: [PATCH] fix tabulation and gaps in expression.rb --- lib/ruby_algebra/expression.rb | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/ruby_algebra/expression.rb b/lib/ruby_algebra/expression.rb index 44a0258..1448fa7 100644 --- a/lib/ruby_algebra/expression.rb +++ b/lib/ruby_algebra/expression.rb @@ -69,6 +69,7 @@ module RubyAlgebra def type :sub end + def diff(v) Subtraction.new(@lhs.diff(v), @rhs.diff(v)) end @@ -114,13 +115,14 @@ module RubyAlgebra def op_assoc_type :left end + def diff(v) - u_prime = @lhs.diff(v) - v_prime = @rhs.diff(v) - term1 = Multiplication.new(u_prime, @rhs) - term2 = Multiplication.new(@lhs, v_prime) - Addition.new(term1, term2) - end + u_prime = @lhs.diff(v) + v_prime = @rhs.diff(v) + term1 = Multiplication.new(u_prime, @rhs) + term2 = Multiplication.new(@lhs, v_prime) + Addition.new(term1, term2) + end end class Division < Multiplication @@ -176,6 +178,7 @@ module RubyAlgebra def op_assoc_type :right end + def diff(v) unless @exponent.is_a?(Constant) raise NotImplementedError, "Дифференцирование степени с неконстантным показателем не реализовано" @@ -244,6 +247,7 @@ module RubyAlgebra def single_letter? @is_single_letter end + def diff(v) @symbol == v ? Constant.new(1) : Constant.new(0) end