Project

General

Profile

Actions

Bug #7728

closed

Range#bsearch on other Numerics?

Added by marcandre (Marc-Andre Lafortune) almost 12 years ago. Updated almost 12 years ago.

Status:
Closed
Target version:
ruby -v:
r38825
Backport:
[ruby-core:51573]

Description

Range#bsearch attempts to do something on generic Numeric classes.

I feel it is both useless and buggy:

(Rational(-1,2)..Rational(9,4)).bsearch{|x| true} # => yields with 7/8 and 33/16
(Rational(-1,2)..Rational(9,4)).bsearch{|x| false} # => loops forever
(BigDecimal('0.5')..BigDecimal('2.25'))... # => same

I feel the current implementation (aside from the bugs) only makes sense on Integers.

Possible approaches:

  • Rational
  1. convert to float, or
  2. bsearch accepts a "max iterations" parameter (which would be required for Rational), or
  3. forbid altogether
  • BigDecimal
  1. convert to float, or
  2. look at the space of decimal numbers in the range without a higher precision than begin or end.

Given the timeframe though, I recommend we raise a TypeError for both in 2.0.0 (or a NotImplemented if we decide what should be done).

Actions

Also available in: Atom PDF

Like0
Like0