[#20490] [BUG] evalがらみでSIGSEGV — "yamamoto madoka" <dan@...2.so-net.ne.jp>
こんにちは、山本 円と申します。
[#20495] 不正なバイト列とのマッチ — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#20499] Re: [ruby-cvs] ruby/ext/curses: * string.c (rb_str_shared_replace): clear flags before copy. — nobu.nakada@...
なかだです。
まつもと ゆきひろです
わたなべです。
まつもと ゆきひろです
わたなべです。
[#20525] [BigDecimal] changing rule of coerce — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
斎藤です。
小林です。
まつもと ゆきひろです
小林です。
小林です。
前田です。
小林です。
小林です。
小林です。
小林です。
小林です。
[#20570] Marshal upgrade — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
まつもと ゆきひろです
新井です。
新井です。
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#20580] add library(Re:ruby-dev:20570) — たむらけんいち <sgs02516@...>
たむらです。
なひです。
In message <038d01c349cb$eaad71d0$93222fc0@sarion.co.jp>,
まつもと ゆきひろです
In message <1058171960.400840.10041.nullmailer@picachu.netlab.jp>,
話をそらしてしまうかもしれませんが、
In message <20030714.183104.09092354.taca@back-street.net>,
In message <20030715.013655.424936247.gotoyuzo@kotetsu.does.notwork.org>
In message <20030715.025907.26217115.taca@back-street.net>,
In message <20030715.051853.968499478.gotoyuzo@kotetsu.does.notwork.org>
In message <20030721.163444.09092937.taca@back-street.net>,
In message <20030721.191306.60866533.gotoyuzo@kotetsu.does.notwork.org>
In message <20030721.211845.20473808.taca@back-street.net>,
In message <20030722.002037.774147317.gotoyuzo@kotetsu.does.notwork.org>
In message <20030722.003236.72433302.taca@back-street.net>,
[#20582] rexmlのuconv依存 — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
In article <1057770842.878440.16422.nullmailer@picachu.netlab.jp>,
なかだです。
In article <200307100751.h6A7pLFs003667@sharui.nakada.kanuma.tochigi.jp>,
[#20606] ruby-1.8.0 on BSD/OS — OHARA Shigeki <os@...>
大原です。
[#20613] compiling Ruby on AIX (powerpc-ibm-aix4.3.3.0) and Alpha OSF/1 (alphaev67-dec-osf5.1) — NISHIMATSU Takeshi <t-nissie@...>
西松と申します.
なかだです。
西松です. お返事が遅くなり申し訳ありません.
[#20631] SOAP4R in 1.8.0? — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20655] frozen ThreadGroup — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
In article <1058719939.886480.22830.nullmailer@picachu.netlab.jp>,
[#20680] 1.8.0 on IA64 etc. — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20691] Re: [Oniguruma] explicit capture — kkosako@...
> -----Original Message-----
[#20716] Re: [Oniguruma] explicit capture — kkosako@...
> -----Original Message-----
[#20748] [BigDecimal] exception handling — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
斎藤です。
[#20765] Re: [ruby-cvs] ruby/lib: * lib/tmpdir.rb: new library to get temporary directory path, — WATANABE Hirofumi <eban@...>
わたなべです。
まつもと ゆきひろです
わたなべです。
まつもと ゆきひろです
わたなべです。
[#20780] complex.rb — Masahiro TANAKA <masa@...>
complex.rb についての修正案を[ruby-math:00543]で提案しましたが、その後
まつもと ゆきひろです
けいじゅ@いしつかです.
At Tue, 22 Jul 2003 17:30:31 +0900, Yukihiro Matsumoto wrote:
まつもと ゆきひろです
けいじゅ@いしつかです.
At Sat, 26 Jul 2003 06:52:21 +0900, 石塚圭樹 wrote:
[#20791] 1.8.0 preview4 schedule — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
永井@知能.九工大です.
[#20795] warning: terminated thread — Masatoshi SEKI <m_seki@...>
咳といいます。
mput です。こんばんわ。
まつもと ゆきひろです
[#20800] 0**(-1) with rational — Tanaka Akira <akr@...17n.org>
そういえば思い出したのですが、rational を require しているときとしてい
At Wed, 23 Jul 2003 03:30:41 +0900, Tanaka Akira wrote:
[#20810] Rational 始めました。 — Shin-ichiro HARA <sinara@...>
原です。
けいじゅ@いしつかです.
In article <200307241940.EAA14225.keiju@ishitsuka.com>,
けいじゅ@いしつかです.
In article <200307271500.AAA04363.keiju@bc.mbn.or.jp>,
[#20818] ThreadGroup#wait — nobu.nakada@...
なかだです。
まつもと ゆきひろです
[#20868] ruby 1.8.0 preview4 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#20887] ext/openssl undefined BN_pseudo_rand_range — Kazuhiro Yoshida <moriq@...>
もりきゅうです。
[#20915] [BUG] errno == 0 — Kazuhiro Yoshida <moriq@...>
もりきゅうです。win32だけかもしれません。
まつもと ゆきひろです
もりきゅうです。
[#20932] move ChangeLog — Tanaka Akira <akr@...17n.org>
提案なんですが、1.8.0 が出たらそこまでのぶんの ChangeLog を移動しませ
[#20949] multiple Tk interpreter support — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
[#20954] ruby 1.8.0 preview5 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
もりきゅうです。
Siena. です。
[#20957] [BigDecimal] conflict between Numeric#div and BigDecimal#div — "Tadashi Saito" <shiba@...2.accsnet.ne.jp>
斎藤です。
At Mon, 28 Jul 2003 18:26:20 +0900, Tadashi Saito wrote:
まつもと ゆきひろです
At Mon, 28 Jul 2003 21:16:08 +0900, Yukihiro Matsumoto wrote:
まつもと ゆきひろです
At Tue, 29 Jul 2003 14:43:19 +0900, Yukihiro Matsumoto wrote:
原です。
[#20989] Re: [Oniguruma] explicit capture — kkosako@...
> -----Original Message-----
[#21027] -W option — WATANABE Hirofumi <eban@...>
わたなべです。
[ruby-dev:20900] Re: complex.rb
At Tue, 22 Jul 2003 17:30:31 +0900, Yukihiro Matsumoto wrote:
> |あと、ここには含まれていませんが、complex.rb 中の Fixnum#** の再定義は、
> |Complex とは関係ないだけでなく、(-2)**2 => Complex(4, 0) という副作用
> |があるので、削除して欲しいです。(というのも合意してもらったはず)
>
> 石塚さん、作業しますか。それとも私がやりましょうか?
石塚さんがお忙しそうなので、complex.rb のパッチを作りました。
** の再定義を削除する他に、以下の変更も含みます。
* Complex.new を public にする
* Complex.new の引数が Complex であったときに例外を上げる
* Math.atan2 の再定義の削除
* Complex版 cosh,sinh,tanh,acos,asin,atan,acosh,asinh,atanh の追加
* 別名の追加 ( arg -> angle, conjugate -> conj )
あと Complex(real,imag) をもっと単純にしたほうがいいと思いますが、
とりあえず問題ではないのでそのままにしてあります。
田中昌宏
Index: complex.rb
===================================================================
RCS file: /ruby/ruby/lib/complex.rb,v
retrieving revision 1.16
diff -u -r1.16 complex.rb
--- complex.rb 22 Jul 2003 08:42:47 -0000 1.16
+++ complex.rb 25 Jul 2003 10:41:28 -0000
@@ -21,7 +21,8 @@
#
# The following +Math+ module methods are redefined to handle Complex arguments.
# They will work as normal with non-Complex arguments.
-# sqrt exp cos sin tan log log10 atan2
+# sqrt exp cos sin tan log log10
+# cosh sinh tanh acos asin atan acosh asinh atanh
#
@@ -66,7 +67,6 @@
Complex(r*Math.cos(theta), r*Math.sin(theta))
end
- private_class_method :new
#
# Creates a +Complex+ number <tt>a</tt>+<tt>b</tt><i>i</i>.
#
@@ -76,7 +76,9 @@
def initialize(a, b)
raise "non numeric 1st arg `#{a.inspect}'" if !a.kind_of? Numeric
+ raise "`#{a.inspect}' for 1st arg" if a.kind_of? Complex
raise "non numeric 2nd arg `#{b.inspect}'" if !b.kind_of? Numeric
+ raise "`#{b.inspect}' for 2nd arg" if b.kind_of? Complex
@real = a
@image = b
end
@@ -181,7 +183,7 @@
end
elsif Complex.generic?(other)
r, theta = polar
- Complex.polar(r.power!(other), theta * other)
+ Complex.polar(r**other, theta*other)
else
x, y = other.coerce(self)
x**y
@@ -238,6 +240,7 @@
def arg
Math.atan2(@image.to_f, @real.to_f)
end
+ alias angle arg
#
# Returns the absolute value _and_ the argument.
@@ -252,6 +255,7 @@
def conjugate
Complex(@real, -@image)
end
+ alias conj conjugate
#
# Compares the absolute values of the two numbers.
@@ -395,6 +399,7 @@
return Math::PI
end
end
+ alias angle arg
#
# See Complex#polar.
@@ -409,47 +414,27 @@
def conjugate
self
end
+ alias conj conjugate
end
-class Fixnum
- unless defined? 1.power!
- alias power! **
- p [__FILE__, defined? 1.power!]
- end
-
- # Redefined to handle a Complex argument.
- def ** (other)
- if self < 0
- Complex.new!(self, 0) ** other
- else
- if defined? self.rpower
- self.rpower(other)
- else
- self.power!(other)
- end
- end
- end
-end
-
-class Bignum
- alias power! **
-end
-
-class Float
- alias power! **
-end
-
module Math
alias sqrt! sqrt
alias exp! exp
+ alias log! log
+ alias log10! log10
alias cos! cos
alias sin! sin
alias tan! tan
- alias log! log
- alias atan! atan
- alias log10! log10
- alias atan2! atan2
+ alias cosh! cosh
+ alias sinh! sinh
+ alias tanh! tanh
+ alias acos! acos
+ alias asin! asin
+ alias atan! atan
+ alias acosh! acosh
+ alias asinh! asinh
+ alias atanh! atanh
# Redefined to handle a Complex argument.
def sqrt(z)
@@ -479,20 +464,6 @@
end
end
- #
- # Hyperbolic cosine.
- #
- def cosh!(x)
- (exp!(x) + exp!(-x))/2.0
- end
-
- #
- # Hyperbolic sine.
- #
- def sinh!(x)
- (exp!(x) - exp!(-x))/2.0
- end
-
# Redefined to handle a Complex argument.
def cos(z)
if Complex.generic?(z)
@@ -521,6 +492,30 @@
sin(z)/cos(z)
end
end
+
+ def sinh(z)
+ if Complex.generic?(z)
+ sinh!(z)
+ else
+ Complex( sinh!(z.real)*cos!(z.image), cosh!(z.real)*sin!(z.image) )
+ end
+ end
+
+ def cosh(z)
+ if Complex.generic?(z)
+ cosh!(z)
+ else
+ Complex( cosh!(z.real)*cos!(z.image), sinh!(z.real)*sin!(z.image) )
+ end
+ end
+
+ def tanh(z)
+ if Complex.generic?(z)
+ tanh!(z)
+ else
+ sinh(z)/cosh(z)
+ end
+ end
# Redefined to handle a Complex argument.
def log(z)
@@ -540,69 +535,92 @@
log(z)/log!(10)
end
end
-
- # FIXME: I don't know what the point of this is. If you give it Complex
- # arguments, it will fail.
- def atan2(x, y)
- if Complex.generic?(x) and Complex.generic?(y)
- atan2!(x, y)
+
+ def acos(z)
+ if Complex.generic?(z)
+ acos!(z)
else
- fail "Not yet implemented."
+ -1.0.im * log( z + 1.0.im * sqrt(1.0-z*z) )
end
end
-
- #
- # Hyperbolic arctangent.
- #
- def atanh!(x)
- log((1.0 + x.to_f) / ( 1.0 - x.to_f)) / 2.0
+
+ def asin(z)
+ if Complex.generic?(z)
+ asin!(z)
+ else
+ -1.0.im * log( 1.0.im * z + sqrt(1.0-z*z) )
+ end
end
-
- # Redefined to handle a Complex argument.
+
def atan(z)
if Complex.generic?(z)
- atan2!(z, 1)
- elsif z.image == 0
- atan2(z.real,1)
- else
- a = z.real
- b = z.image
-
- c = (a*a + b*b - 1.0)
- d = (a*a + b*b + 1.0)
+ atan!(z)
+ else
+ 1.0.im * log( (1.0.im+z) / (1.0.im-z) ) / 2.0
+ end
+ end
- Complex(atan2!((c + sqrt(c*c + 4.0*a*a)), 2.0*a),
- atanh!((-d + sqrt(d*d - 4.0*b*b))/(2.0*b)))
+ def acosh(z)
+ if Complex.generic?(z)
+ acosh!(z)
+ else
+ log( z + sqrt(z*z-1.0) )
end
end
-
- module_function :sqrt
+
+ def asinh(z)
+ if Complex.generic?(z)
+ asinh!(z)
+ else
+ log( z + sqrt(1.0+z*z) )
+ end
+ end
+
+ def atanh(z)
+ if Complex.generic?(z)
+ atanh!(z)
+ else
+ log( (1.0+z) / (1.0-z) ) / 2.0
+ end
+ end
+
module_function :sqrt!
+ module_function :sqrt
module_function :exp!
module_function :exp
+ module_function :log!
+ module_function :log
+ module_function :log10!
+ module_function :log10
module_function :cosh!
+ module_function :cosh
module_function :cos!
module_function :cos
module_function :sinh!
+ module_function :sinh
module_function :sin!
module_function :sin
module_function :tan!
module_function :tan
- module_function :log!
- module_function :log
- module_function :log10!
- module_function :log
- module_function :atan2!
- module_function :atan2
-# module_function :atan!
+ module_function :tanh!
+ module_function :tanh
+ module_function :acos!
+ module_function :acos
+ module_function :asin!
+ module_function :asin
+ module_function :atan!
module_function :atan
+ module_function :acosh!
+ module_function :acosh
+ module_function :asinh!
+ module_function :asinh
module_function :atanh!
+ module_function :atanh
end
# Documentation comments:
# - source: original (researched from pickaxe)
# - a couple of fixme's
-# - Math module methods sinh! etc. a bit fuzzy. What exactly is the intention?
# - RDoc output for Bignum etc. is a bit short, with nothing but an
# (undocumented) alias. No big deal.