Код: Выделить всё
cdef double __test_func(double x, double y, double z):
return (x-y)/((2*x-y)*y)**(0.5*z)
def test_func(x, y, z):
return __test_func(x, y, z)
И, как я и подозревал, это не очень хорошая идея. Эта функция работает как-то так, как я написал. Но если бы я ввел аргументы оболочки Python,
Код: Выделить всё
ctypedef fused Numeric:
char
short
int
long
long long
float
double
long double
cdef double __test_func(double x, double y, double z):
return (x-y)/((2*x-y)*y)**(0.5*z)
def test_func(Numeric x, Numeric y, Numeric z):
return __test_func(x, y, z)
Итак, как мне обеспечить преобразование типов сделано правильно в файлах cython? В частности, как мне преобразовать его в плавающую запятую двойной точности (64-битная с плавающей запятой)? Я знаю, что в Python это синоним float, но, учитывая, что это cython, я не совсем уверен, какой будет точность float(x).
Подробнее здесь: https://stackoverflow.com/questions/792 ... -in-cython
Мобильная версия