Complexクラス
Complexクラスで複素数が扱えます。Complex::Iが虚数単位iに相当しますが、Complex(0, 1)とequal?ではありません。なぜでしょうね。
require "complex" p Complex(0, 1) # => Complex(0, 1) p Complex::I # => Complex(0, 1) if Complex(0, 1).equal?(Complex::I) puts "Same ... equal?" else puts "Different ... equal?" # こちら end if Complex(0, 1) == (Complex::I) puts "Same ... ==" # こちら else puts "Different ... ==" end