Hi,

I've written a patch for rubyspec.


diff --git a/core/math/gamma_spec.rb b/core/math/gamma_spec.rb
index 4215075..4b291d3 100644
--- a/core/math/gamma_spec.rb
+++ b/core/math/gamma_spec.rb
@@ -33,23 +33,39 @@ ruby_version_is "1.9" do
     it "returns good numerical approximation for gamma(-0.00001)" do
       Math.gamma(-0.00001).should be_close(-100000.577225, TOLERANCE)
     end
-   =20
-    it "raises Domain Error given -1" do
-      lambda { Math.gamma(-1) }.should raise_error(Errno::EDOM)
+
+    ruby_version_is ""..."1.9" do
+      it "raises Domain Error given -1" do
+        lambda { Math.gamma(-1) }.should raise_error(Errno::EDOM)
+      end
     end
-   =20
+
+    ruby_version_is "1.9" do
+      it "raises Math::DomainError given -1" do
+        lambda { Math.gamma(-1) }.should raise_error(Math::DomainError)
+      end
+    end
+
     # See http://redmine.ruby-lang.org/issues/show/2189
     it "returns +infinity given +infinity" do
       Math.gamma(infinity_value).infinite?.should =3D=3D 1
     end
-   =20
-    it "raises Domain Error given negative infinity" do
-      lambda { Math.gamma(-infinity_value) }.should =
raise_error(Errno::EDOM)
+
+    ruby_version_is ""..."1.9" do
+      it "raises Domain Error given negative infinity" do
+        lambda { Math.gamma(-infinity_value) }.should =
raise_error(Errno::EDOM)
+      end
     end
-   =20
+
+    ruby_version_is "1.9" do
+      it "raises Math::DomainError given negative infinity" do
+        lambda { Math.gamma(-infinity_value) }.should =
raise_error(Math::DomainError)
+      end
+    end
+
     it "returns NaN given NaN" do
       Math.gamma(nan_value).nan?.should be_true
     end
=20
   end
-end
\ No newline at end of file
+end
diff --git a/core/math/lgamma_spec.rb b/core/math/lgamma_spec.rb
index c3bc48e..1ea5bf4 100644
--- a/core/math/lgamma_spec.rb
+++ b/core/math/lgamma_spec.rb
@@ -34,8 +34,16 @@ ruby_version_is "1.9" do
       lg2[1].should =3D=3D 1
     end
=20
-    it "returns [Infinity, 1] when passed -Infinity" do
-      Math.lgamma(-infinity_value).should =3D=3D [infinity_value, 1]
+    ruby_version_is ""..."1.9" do
+      it "returns [Infinity, 1] when passed -Infinity" do
+        Math.lgamma(-infinity_value).should =3D=3D [infinity_value, 1]
+      end
+    end
+
+    ruby_version_is "1.9" do
+      it "raises Math::DomainError when passed -Infinity" do
+        lambda { Math.lgamma(-infinity_value) }.should =
raise_error(Math::DomainError)
+      end
     end
=20
     # Note: see related issue =
http://redmine.ruby-lang.org/issues/show/2189
@@ -50,15 +58,23 @@ ruby_version_is "1.9" do
     # Note: see related issue =
http://redmine.ruby-lang.org/issues/show/2189
     # If you would like to see simpler Ruby behavior, lobby for Ruby to
     # have platform-independent Math functions.
-    platform_is :darwin do
-      # JRuby has platform-independent math and behaves as above
-      not_compliant_on :jruby do
-        it "raises an Errno::EDOM when passed Infinity" do
-          lambda { Math.lgamma(infinity_value) }.should =
raise_error(Errno::EDOM)
+    ruby_version_is ""..."1.9" do
+      platform_is :darwin do
+        # JRuby has platform-independent math and behaves as above
+        not_compliant_on :jruby do
+          it "raises an Errno::EDOM when passed Infinity" do
+            lambda { Math.lgamma(infinity_value) }.should =
raise_error(Errno::EDOM)
+          end
         end
       end
     end
=20
+    ruby_version_is "1.9" do
+      it "returns [Infinity, 1] when passed Infinity" do
+        Math.lgamma(infinity_value).should =3D=3D [infinity_value, 1]
+      end
+    end
+
     it "returns [NaN, 1] when passed NaN" do
       Math.lgamma(nan_value)[0].nan?.should be_true
       Math.lgamma(nan_value)[1].should =3D=3D 1
diff --git a/library/mathn/math/shared/rsqrt.rb =
b/library/mathn/math/shared/rsqrt.rb
index ff12abf..3d1b424 100644
--- a/library/mathn/math/shared/rsqrt.rb
+++ b/library/mathn/math/shared/rsqrt.rb
@@ -13,9 +13,19 @@ describe :mathn_math_rsqrt, :shared =3D> true do
     @object.send(:rsqrt, 12.34).should =3D=3D Math.sqrt!(12.34)
   end
=20
-  it "raises an Errno::EDOM if the argument is a negative number" do
-    lambda { @object.send(:rsqrt, -1) }.should raise_error(Errno::EDOM)
-    lambda { @object.send(:rsqrt, -4.0) }.should =
raise_error(Errno::EDOM)
-    lambda { @object.send(:rsqrt, -16/64) }.should =
raise_error(Errno::EDOM)
+  ruby_version_is ""..."1.9" do
+    it "raises an Errno::EDOM if the argument is a negative number" do
+      lambda { @object.send(:rsqrt, -1) }.should =
raise_error(Errno::EDOM)
+      lambda { @object.send(:rsqrt, -4.0) }.should =
raise_error(Errno::EDOM)
+      lambda { @object.send(:rsqrt, -16/64) }.should =
raise_error(Errno::EDOM)
+    end
+  end
+
+  ruby_version_is "1.9" do
+    it "raises an Math::DomainError if the argument is a negative =
number" do
+      lambda { @object.send(:rsqrt, -1) }.should =
raise_error(Math::DomainError)
+      lambda { @object.send(:rsqrt, -4.0) }.should =
raise_error(Math::DomainError)
+      lambda { @object.send(:rsqrt, -16/64) }.should =
raise_error(Math::DomainError)
+    end
   end
 end
diff --git a/shared/math/atanh.rb b/shared/math/atanh.rb
index b520171..69341af 100644
--- a/shared/math/atanh.rb
+++ b/shared/math/atanh.rb
@@ -120,11 +120,23 @@ describe :math_atanh_private, :shared =3D> true do
 end
=20
 describe :math_atanh_no_complex, :shared =3D> true do
-  it "raises an Errno::EDOM for arguments greater than 1.0" do
-    lambda { @object.send(@method, 1.0 + Float::EPSILON)  }.should =
raise_error(Errno::EDOM)
+  ruby_version_is ""..."1.9" do
+    it "raises an Errno::EDOM for arguments greater than 1.0" do
+      lambda { @object.send(@method, 1.0 + Float::EPSILON)  }.should =
raise_error(Errno::EDOM)
+    end
+
+    it "raises an Errno::EDOM for arguments less than -1.0" do
+      lambda { @object.send(@method, -1.0 - Float::EPSILON) }.should =
raise_error(Errno::EDOM)
+    end
   end
=20
-  it "raises an Errno::EDOM for arguments less than -1.0" do
-    lambda { @object.send(@method, -1.0 - Float::EPSILON) }.should =
raise_error(Errno::EDOM)
+  ruby_version_is "1.9" do
+    it "raises an Math::DomainError for arguments greater than 1.0" do
+      lambda { @object.send(@method, 1.0 + Float::EPSILON)  }.should =
raise_error(Math::DomainError)
+    end
+
+    it "raises an Math::DomainError for arguments less than -1.0" do
+      lambda { @object.send(@method, -1.0 - Float::EPSILON) }.should =
raise_error(Math::DomainError)
+    end
   end
 end


--
Kenta Murata
OpenPGP FP =3D FA26 35D7 4F98 3498 0810 E0D5 F213 966F E9EB 0BCC

E-mail: mrkn / mrkn.jp
twitter: http://twitter.com/mrkn/
blog: http://d.hatena.ne.jp/mrkn/