Executando um notebook Jupyter no VSCode, estou tendo um comportamento bizarro com a diretiva de divisão desprotegida do Cython. Iniciando a sessão com %load_ext cython
, execute:
%%cython
import math
cimport cython
@cython.cdivision(True)
def simpleTest(int d):
cdef double c = 1/math.exp(math.log(math.sqrt(2/d)))
return c
Agora execute simpleTest(x)
e para qualquer valor x
>= 3 eu recebo:
ValueError: erro de domínio matemático
Mas rodando sem a @cython.cdivision(True)
diretiva funciona bem para todos x
> 0, como deveria. Porque é que a directiva quebra este cálculo? Existe uma abordagem melhor?