Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

vector_of_kll_floats_sketches.get_quantiles() returns wrong values with float32

Abierto
#63 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
numpy, python
Área
data

Línea de trabajo

Comienza con la reproducción de Python proporcionada usando vector_of_kll_floats_sketches.get_quantiles() y compara los arrays de rangos float32 y float64. Rastrea el manejo de los rangos float32 y añade una prueba de regresión que cubra rangos cercanos a 0 y 1; se considera terminado cuando float32 y float64 devuelven cuantiles equivalentes para el ejemplo.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

#!/usr/bin/env python3
"""
Minimal example: vector_of_kll_floats_sketches.get_quantiles() returns WRONG VALUES with float32
"""
import numpy as np
from datasketches import vector_of_kll_floats_sketches

# Create test data: 1000 samples between -100 and -10
np.random.seed(42)
test_data = np.random.uniform(-100, -10, size=(1000, 1)).astype(np.float32)

print("Test data: 1000 samples between -100 and -10")
print(f"True min: {test_data.min():.2f}, True max: {test_data.max():.2f}")

# Create sketch and add data
kll = vector_of_kll_floats_sketches(200, 1)
kll.update(test_data)

# Request p0.0001 (should be ~-100) and p0.9999 (should be ~-10)
ranks_list = [0.0001, 0.9999]
ranks_array32 = np.array(ranks_list, dtype=np.float32)
ranks_array64 = np.array(ranks_list, dtype=np.float64)


print("\n" + "="*60)
print("BUG: numpy array with dtype=np.float32 returns WRONG quantiles")
print("="*60)

quants_array = kll.get_quantiles(ranks_array32)
print(f"\nWith numpy array with dtype=np.float32: {ranks_array32}")
print(f"  p0.0001 = {quants_array[0][0]:.2f}  (expected: ~-100)")
print(f"  p0.9999 = {quants_array[0][1]:.2f}  (expected: ~-10)")
print(f"  ✗ WRONG: Both values near minimum!")

quants_array64 = kll.get_quantiles(ranks_array64)
print(f"\nWith numpy array with dtype=np.float64: {ranks_array64}")
print(f"  p0.0001 = {quants_array64[0][0]:.2f}  (expected: ~-100)")
print(f"  p0.9999 = {quants_array64[0][1]:.2f}  (expected: ~-10)")
print(f"  ✓ CORRECT")

Test data: 1000 samples between -100 and -10
True min: -99.58, True max: -10.03

============================================================
BUG: numpy array with dtype=np.float32 returns WRONG quantiles
============================================================

With numpy array with dtype=np.float32: [1.000e-04 9.999e-01]
  p0.0001 = -98.69  (expected: ~-100)
  p0.9999 = -99.50  (expected: ~-10)
  ✗ WRONG: Both values near minimum!

With numpy array with dtype=np.float64: [1.000e-04 9.999e-01]
  p0.0001 = -99.50  (expected: ~-100)
  p0.9999 = -10.28  (expected: ~-10)
  ✓ CORRECT
Lenguaje dominante
Jupyter Notebook
Estrellas
46
Forks
9
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de apache/datasketches-python

Todos los issues de apache/datasketches-python

Issues similares

Más issues de Data Engineering

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.