From 202de957cb348428eb65bb1478ad757676276365 Mon Sep 17 00:00:00 2001 From: gogotanaka Date: Wed, 10 Jun 2015 23:14:28 -0700 Subject: [PATCH 1/1] Deprecate some methods with "!" To: https://bugs.ruby-lang.org/ --- lib/cmath.rb | 117 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 60 insertions(+), 57 deletions(-) diff --git a/lib/cmath.rb b/lib/cmath.rb index fb2edd6..0103f37 100644 --- a/lib/cmath.rb +++ b/lib/cmath.rb @@ -23,29 +23,32 @@ module CMath include Math - alias exp! exp - alias log! log - alias log2! log2 - alias log10! log10 - alias sqrt! sqrt - alias cbrt! cbrt - - alias sin! sin - alias cos! cos - alias tan! tan - - alias sinh! sinh - alias cosh! cosh - alias tanh! tanh - - alias asin! asin - alias acos! acos - alias atan! atan - alias atan2! atan2 - - alias asinh! asinh - alias acosh! acosh - alias atanh! atanh + %w[ + exp + log + log2 + log10 + sqrt + cbrt + sin + cos + tan + sinh + cosh + tanh + asin + acos + atan + atan2 + asinh + acosh + atanh + ].each do |meth| + define_method(meth + '!') do |*args, &block| + warn("CMath##{meth}! is deprecated; use CMath##{meth} or Math##{meth}") if $VERBOSE + Math.send(meth, *args, &block) + end + end ## # Math::E raised to the +z+ power @@ -54,11 +57,11 @@ module CMath def exp(z) begin if z.real? - exp!(z) + Math.exp(z) else - ere = exp!(z.real) - Complex(ere * cos!(z.imag), - ere * sin!(z.imag)) + ere = Math.exp(z.real) + Complex(ere * Math.cos(z.imag), + ere * Math.sin(z.imag)) end rescue NoMethodError handle_no_method_error @@ -74,9 +77,9 @@ module CMath def log(z, b=::Math::E) begin if z.real? && z >= 0 && b >= 0 - log!(z, b) + Math.log(z, b) else - Complex(log!(z.abs), z.arg) / log(b) + Complex(Math.log(z.abs), z.arg) / log(b) end rescue NoMethodError handle_no_method_error @@ -90,9 +93,9 @@ module CMath def log2(z) begin if z.real? and z >= 0 - log2!(z) + Math.log2(z) else - log(z) / log!(2) + log(z) / Math.log(2) end rescue NoMethodError handle_no_method_error @@ -106,9 +109,9 @@ module CMath def log10(z) begin if z.real? and z >= 0 - log10!(z) + Math.log10(z) else - log(z) / log!(10) + log(z) / Math.log(10) end rescue NoMethodError handle_no_method_error @@ -123,9 +126,9 @@ module CMath begin if z.real? if z < 0 - Complex(0, sqrt!(-z)) + Complex(0, Math.sqrt(-z)) else - sqrt!(z) + Math.sqrt(z) end else if z.imag < 0 || @@ -134,7 +137,7 @@ module CMath else r = z.abs x = z.real - Complex(sqrt!((r + x) / 2.0), sqrt!((r - x) / 2.0)) + Complex(Math.sqrt((r + x) / 2.0), Math.sqrt((r - x) / 2.0)) end end rescue NoMethodError @@ -157,10 +160,10 @@ module CMath def sin(z) begin if z.real? - sin!(z) + Math.sin(z) else - Complex(sin!(z.real) * cosh!(z.imag), - cos!(z.real) * sinh!(z.imag)) + Complex(Math.sin(z.real) * Math.cosh(z.imag), + Math.cos(z.real) * Math.sinh(z.imag)) end rescue NoMethodError handle_no_method_error @@ -174,10 +177,10 @@ module CMath def cos(z) begin if z.real? - cos!(z) + Math.cos(z) else - Complex(cos!(z.real) * cosh!(z.imag), - -sin!(z.real) * sinh!(z.imag)) + Complex(Math.cos(z.real) * Math.cosh(z.imag), + -Math.sin(z.real) * Math.sinh(z.imag)) end rescue NoMethodError handle_no_method_error @@ -191,7 +194,7 @@ module CMath def tan(z) begin if z.real? - tan!(z) + Math.tan(z) else sin(z) / cos(z) end @@ -207,10 +210,10 @@ module CMath def sinh(z) begin if z.real? - sinh!(z) + Math.sinh(z) else - Complex(sinh!(z.real) * cos!(z.imag), - cosh!(z.real) * sin!(z.imag)) + Complex(Math.sinh(z.real) * Math.cos(z.imag), + Math.cosh(z.real) * Math.sin(z.imag)) end rescue NoMethodError handle_no_method_error @@ -224,10 +227,10 @@ module CMath def cosh(z) begin if z.real? - cosh!(z) + Math.cosh(z) else - Complex(cosh!(z.real) * cos!(z.imag), - sinh!(z.real) * sin!(z.imag)) + Complex(Math.cosh(z.real) * Math.cos(z.imag), + Math.sinh(z.real) * Math.sin(z.imag)) end rescue NoMethodError handle_no_method_error @@ -241,7 +244,7 @@ module CMath def tanh(z) begin if z.real? - tanh!(z) + Math.tanh(z) else sinh(z) / cosh(z) end @@ -257,7 +260,7 @@ module CMath def asin(z) begin if z.real? and z >= -1 and z <= 1 - asin!(z) + Math.asin(z) else (-1.0).i * log(1.0.i * z + sqrt(1.0 - z * z)) end @@ -273,7 +276,7 @@ module CMath def acos(z) begin if z.real? and z >= -1 and z <= 1 - acos!(z) + Math.acos(z) else (-1.0).i * log(z + 1.0.i * sqrt(1.0 - z * z)) end @@ -289,7 +292,7 @@ module CMath def atan(z) begin if z.real? - atan!(z) + Math.atan(z) else 1.0.i * log((1.0.i + z) / (1.0.i - z)) / 2.0 end @@ -306,7 +309,7 @@ module CMath def atan2(y,x) begin if y.real? and x.real? - atan2!(y,x) + Math.atan2(y,x) else (-1.0).i * log((x + 1.0.i * y) / sqrt(x * x + y * y)) end @@ -322,7 +325,7 @@ module CMath def asinh(z) begin if z.real? - asinh!(z) + Math.asinh(z) else log(z + sqrt(1.0 + z * z)) end @@ -338,7 +341,7 @@ module CMath def acosh(z) begin if z.real? and z >= 1 - acosh!(z) + Math.acosh(z) else log(z + sqrt(z * z - 1.0)) end @@ -354,7 +357,7 @@ module CMath def atanh(z) begin if z.real? and z >= -1 and z <= 1 - atanh!(z) + Math.atanh(z) else log((1.0 + z) / (1.0 - z)) / 2.0 end -- gogotanaka