From 7bf63c28769ebccb660294a38330a6abc3a22be1 Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Mon, 3 Feb 2014 15:18:52 +0900 Subject: add Float#nan? --- src/numeric.c | 7 +++++++ test/t/float.rb | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/src/numeric.c b/src/numeric.c index 0b841bf70..8f9d1ba25 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -612,6 +612,12 @@ flo_truncate(mrb_state *mrb, mrb_value num) return mrb_fixnum_value((mrb_int)f); } +static mrb_value +flo_nan_p(mrb_state *mrb, mrb_value num) +{ + return mrb_bool_value(isnan(mrb_float(num))); +} + /* * Document-class: Integer * @@ -1331,4 +1337,5 @@ mrb_init_numeric(mrb_state *mrb) mrb_define_method(mrb, fl, "to_s", flo_to_s, MRB_ARGS_NONE()); /* 15.2.9.3.16(x) */ mrb_define_method(mrb, fl, "inspect", flo_to_s, MRB_ARGS_NONE()); + mrb_define_method(mrb, fl, "nan?", flo_nan_p, MRB_ARGS_NONE()); } diff --git a/test/t/float.rb b/test/t/float.rb index f70bf2d66..0c67f510a 100644 --- a/test/t/float.rb +++ b/test/t/float.rb @@ -143,3 +143,10 @@ assert('Float#truncate', '15.2.9.3.15') do assert_equal( 3, 3.123456789.truncate) assert_equal(-3, -3.1.truncate) end + +assert('Float#nan?') do + assert_true (0.0/0.0).nan? + assert_false 0.0.nan? + assert_false (1.0/0.0).nan? + assert_false (-1.0/0.0).nan? +end -- cgit v1.2.3