Incorrect results for binary search on large arrays due to miscomputation of midpoint
Los mantenedores suelen responder en 1 día
@maximilliangrand ya está trabajando en esto.
Desde el 15/8/2026.
- #284 de @maximilliangrand — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- javascript
- Área
- search
Línea de trabajo
Start in src/bisector.js at bisector.left and bisector.right, where the issue identifies the midpoint calculation, and review the linked Observable example. Check the project’s relevant tests for large arrays and floating point bounds; done means both search methods return correct results for the reported case. A pull request is already open against this issue.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I think I've spotted a bug in d3's binary search implementations that arises due to the use of unsigned bit shifts for the midpoint computation, which is a good approach when the numbers are actually unsigned integers, but not when they're floats:
https://observablehq.com/d/229d8bcf448308b9
If I've understood the problem correctly, the fix is simple, replacing
const mid = (lo + hi) >>> 1;
in bisector.left and bisector.right with
const mid = Math.floor(lo + (hi - lo) / 2)
- Lenguaje dominante
- JavaScript
- Estrellas
- 465
- Forks
- 193
- Merge medio
- 5 h 46 min
- PR fusionados (30 d)
- 1
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de d3/d3-array
-
d3.nice(start, stop, 1) returns [-1e308, 1e308] when the interval contains zero, so d3.bin gives NaN bin boundsPosiblemente ocupada @awais-ur-rehman la tomó hace 4 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
regression: in d3.bin, values next to a threshold go into the wrong binPosiblemente ocupada @Fil la tomó hace 2 días. Abierto
d3/d3-array#295 · 1 reacción · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
regression: d3.bin's last bin is twice as wide when the maximum is a thresholdPosiblemente ocupada @Fil la tomó hace 2 días. Abierto
d3/d3-array#294 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
d3/d3-array#280 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
groupSort should use ascendingDefined instead of ascendingPosiblemente ocupada @cpruijsen la tomó hace 58 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 10/100
Los mantenedores suelen responder en 1 día
Todos los issues de d3/d3-array
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
0. Needs triage bug feature: api
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
agent-os ai bug good first issue help wanted
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
area: documentation good first issue package: rule-data status: accepting prs
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
status: needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
mastra-ai/mastra#30109 · 2 comentarios ·
Los mantenedores suelen responder en 1 día