복붙노트

[PYTHON] numpy.float128의 내부 정밀도는 무엇입니까?

PYTHON

numpy.float128의 내부 정밀도는 무엇입니까?

numpy.float128은 내부적으로 어떤 정밀도로 매핑됩니까? __float128 또는 long double입니까? (또는 완전히 다른 것!?)

아무도 모른다면 잠재적 인 의문의 여지가있다. C에서 __float128을 정밀도가 떨어지면서 (16 바이트) long double로 캐스팅하는 것이 안전 할까? (이것은 long double에서 작동하는 C lib와의 인터페이싱을위한 것입니다).

편집 : 의견에 대한 응답으로 플랫폼은 'Linux-3.0.0-14-generic-x86_64-with-Ubuntu-11.10-oneiric'입니다. 이제 numpy.float128이 플랫폼에 따라 다양한 정밀도를 가지면 저 또한 유용한 지식입니다!

그냥 명확히하기 위해 요소의 크기가 아니라 내가 관심있는 정밀도입니다.

해결법

  1. ==============================

    1.float128 대신 longdouble을 사용하는 것이 좋습니다. 왜냐하면 꽤 혼란 스럽기 때문에 ATM입니다. 파이썬은 초기화하는 동안 그것을 float64로 변환합니다.

    float128 대신 longdouble을 사용하는 것이 좋습니다. 왜냐하면 꽤 혼란 스럽기 때문에 ATM입니다. 파이썬은 초기화하는 동안 그것을 float64로 변환합니다.

    numpy 안에는 double 또는 long double을 사용할 수 있습니다. npy_common.h에 정의되어 있으며 플랫폼에 따라 다릅니다. 소스 코드에 바로 사용할 수 있는지 여부는 알 수 없습니다.

    알고리즘의이 부분에서 성능이 필요하지 않은 경우 더 안전한 방법은 문자열로 내보내고 나중에 strold를 사용하는 것입니다.

  2. ==============================

    2.numpy.longdouble는 C 컴파일러가 long double을 호출하는 모든 유형을 나타냅니다. 현재 이것은 numpy가 지원하는 유일한 확장 된 부동 소수점 유형입니다.

    numpy.longdouble는 C 컴파일러가 long double을 호출하는 모든 유형을 나타냅니다. 현재 이것은 numpy가 지원하는 유일한 확장 된 부동 소수점 유형입니다.

    x86-32 및 x86-64에서는 80 비트 부동 소수점 유형입니다. 더 이국적인 시스템에서는 뭔가 다른 것일 수 있습니다 (IIRC는 Sparc에서 실제 128 비트 IEEE 플로트이고 PPC에서는 더블 더블입니다). (또한 OS 및 컴파일러에 따라 다를 수 있습니다. 예를 들어 Windows의 MSVC는 확장 된 정밀도를 전혀 지원하지 않습니다.)

    Numpy는 numpy.float96 또는 numpy.float128과 같은 이름을 내보낼 것입니다. 이 이름들 중 어느 것이 내포되어지는지는 당신의 플랫폼 / 컴파일러에 달려 있지만, 무엇이든 항상 longdouble과 동일한 기본 유형을 참조하십시오. 또한이 이름들은 오해의 소지가 있습니다. 96 비트 또는 128 비트 IEEE 부동 소수점 형식을 나타내지는 않습니다. 대신 기본 long double 유형에서 사용하는 정렬 비트 수를 나타냅니다. 그래서 예. x86-32에서 long double은 80 비트이지만 32 비트 정렬을 유지하기 위해 최대 96 비트가 채워지고 numpy는이 float96을 호출합니다. x86-64에서 long double은 동일한 80 비트 유형이지만, 이제 64 비트 정렬을 유지하기 위해 128 비트까지 채워지고 numpy는이 float128을 호출합니다. 여분의 정밀도는 없으며 여분의 패딩 만 있습니다.

    권장 사항 : float96 / float128 이름은 무시하고 numpy.longdouble 만 사용하십시오. 아니면 정말 좋은 이유가없는 한 복식에 충실하십시오. 그들은 더 빨라지고 휴대하기 쉬울 것입니다.

  3. from https://stackoverflow.com/questions/9062562/what-is-the-internal-precision-of-numpy-float128 by cc-by-sa and MIT license