| 169 | return v ? Math.sqrt(v) : v; |
| 170 | }; |
| 171 | function d3_bisector(compare) { |
| 172 | return { |
| 173 | left: function(a, x, lo, hi) { |
| 174 | if (arguments.length < 3) lo = 0; |
| 175 | if (arguments.length < 4) hi = a.length; |
| 176 | while (lo < hi) { |
| 177 | var mid = lo + hi >>> 1; |
| 178 | if (compare(a[mid], x) < 0) lo = mid + 1; else hi = mid; |
| 179 | } |
| 180 | return lo; |
| 181 | }, |
| 182 | right: function(a, x, lo, hi) { |
| 183 | if (arguments.length < 3) lo = 0; |
| 184 | if (arguments.length < 4) hi = a.length; |
| 185 | while (lo < hi) { |
| 186 | var mid = lo + hi >>> 1; |
| 187 | if (compare(a[mid], x) > 0) hi = mid; else lo = mid + 1; |
| 188 | } |
| 189 | return lo; |
| 190 | } |
| 191 | }; |
| 192 | } |
| 193 | var d3_bisect = d3_bisector(d3_ascending); |
| 194 | d3.bisectLeft = d3_bisect.left; |
| 195 | d3.bisect = d3.bisectRight = d3_bisect.right; |