logaddexp() of integer arrays gives float32, where NumPy gives float64
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 74/100
Línea de trabajo
Lee logaddexp() en src/blosc2/ndarray.py y compara el dtype del resultado entero con el comportamiento de NumPy descrito en el issue. Comprueba tanto la llamada directa como la forma blosc2.lazyexpr("logaddexp(a, b)", ...), incluidos los anchos de enteros indicados. Se considera terminado cuando ambas formas devuelven el dtype correspondiente y conservan la precisión demostrada para enteros más grandes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
blosc2.logaddexp() sets the result dtype to float32 whenever its operands' result type is an integer (logaddexp() in src/blosc2/ndarray.py: if np.issubdtype(dtype, np.integer): dtype = blosc2.float32). NumPy uses the float type that holds the operands: float64 for 32- and 64-bit integers, float32 for 16-bit ones and float16 for 8-bit ones. The string form, blosc2.lazyexpr("logaddexp(a, b)", ...), gives float32 too. Larger integers lose precision:
import numpy as np
import blosc2
x = np.array([2**24 + 1]) # int64
a = blosc2.asarray(x)
blosc2.logaddexp(a, a).dtype # float32 NumPy: float64
blosc2.logaddexp(a, a)[:] # [16777218.] NumPy: [16777217.69314718]
| operands | blosc2 | NumPy |
|---|---|---|
| int8 | float32 | float16 |
| int16 | float32 | float32 |
| int32, int64, uint32 | float32 | float64 |
The same on main and with #741. Found while checking #754, which does not change logaddexp().
Bool operands raise TypeError: logaddexp doesn't accept boolean arguments., where NumPy gives float16. That may be on purpose, since the docstring asks for floating-point operands, as the array API does.
A fix could take the dtype from NumPy on empty operands, as #754 does for hypot() and the other two-argument float functions. I can send a PR for it if you like.
AI disclosure: the analysis was done with Claude Code; I reviewed it.
- Lenguaje dominante
- Python
- Estrellas
- 214
- Forks
- 72
- Merge medio
- 3 d 9 h
- PR fusionados (30 d)
- 24
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 Blosc/python-blosc2
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Blosc/python-blosc2#764 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Blosc/python-blosc2#731 ·
Los mantenedores suelen responder en 2 días
-
documentation sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Blosc/python-blosc2#720 · 3 comentarios ·
Los mantenedores suelen responder en 2 días
-
sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Blosc/python-blosc2#717 ·
Los mantenedores suelen responder en 2 días
-
documentation sustain-2026
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Blosc/python-blosc2#714 ·
Los mantenedores suelen responder en 2 días
Todos los issues de Blosc/python-blosc2
Issues similares
-
[BUG]: Compliance rules never see Unity Catalog views as viewsPosiblemente ocupada @wagnercsantos la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
databrickslabs/ontos#1348 ·
Los mantenedores suelen responder en 3 días
-
`forum_pr_poster` action will always return `none` when checking for pre-existing feedback threads, even if a feedback thread already exists.Posiblemente ocupada @pgmzeta la tomó hoy. AbiertoE-Verified P-Major
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
goonstation/goonstation#28259 ·
Los mantenedores suelen responder en 2 días
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
woonstadrotterdam/monumenten#70 ·
Los mantenedores suelen responder en 15 días
-
binding:python bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
The Browser tab fails with a Wayland error when Open Terminal runs from a Wayland desktop sessionAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
open-webui/open-terminal#210 ·