programing

numpy의 내부 정밀도는 얼마입니까?float128?

linuxpc 2023. 8. 19. 09:53
반응형

numpy의 내부 정밀도는 얼마입니까?float128?

정도의 를 가지고 있습니까?numpy.float128내부로 매핑하시겠습니까?그런가요?__float128아니면 롱 더블?아니면 완전히 다른 것?

나 알고 : 하는 것이 안전한가요?__float128정확바만 16이배트 2까지 (위한 입니다.)(이것은 롱 더블에서 작동하는 Clib와 인터페이스하기 위한 것입니다.)

편집: 의견에 대한 응답으로 플랫폼은 '리눅스-3.0.0-14-generic-x86_64-with-Ubuntu-11.10-oneiric'입니다.자, 만약에numpy.float128플랫폼에 따라 다양한 정밀도를 가지고 있으며, 그것은 또한 나에게 유용한 지식입니다!

제가 관심을 가지고 있는 것은 정밀도이지, 원소의 크기가 아닙니다.

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

x86-32 및 x86-64에서는 80비트 부동 소수점 유형입니다.더 이국적인 시스템에서는 다른 것일 수 있습니다(Sparcit의 IIRC는 실제 128비트 IEEE float이고 PPC의 IIRC는 이중으로 되어 있습니다).(사용하는 OS와 컴파일러에 따라 달라질 수 있습니다. 예를 들어Windows의 MSVC는 확장 정밀도를 전혀 지원하지 않습니다.)

Numpy는 또한 다음과 같은 이름을 내보낼 것입니다.numpy.float96또는numpy.float128 중 이름을 , 유형과 동일한 유형을 참조합니다.longdouble또한, 이 이름들은 매우 오해의 소지가 있습니다.96비트 또는 128비트 IEEE 부동 소수점 형식을 나타내지 않습니다.대신, 기본 정렬에 사용되는 비트 수를 나타냅니다.long double경우 니다입합입니다. 예를 들어 x86-32의 경우,long double정렬을 유지하기 , 는 이 80비트를 합니다.float96x86-64에서는long double이지만, 64비트 정렬을 , 를 다시비 80트비이 64트비정렬을유다지이니위, numpy호합를출는고기하라고 부릅니다.float128별도의 정밀도는 없고, 패딩만 추가됩니다.

사항:를합니다.float96/float128 름이, 그사용을 사용합니다.numpy.longdouble아니면 당신이 진정으로 설득력 있는 이유가 없는 한 복식을 고수하는 것이 더 낫습니다.그것들은 더 빠르고 더 휴대성이 좋은 등이 될 것입니다.

ATM은 상당히 엉망이기 때문에 float128 대신 사용하는 것이 좋습니다.Python은 그것을 던질 것입니다.float64초기화 중에

numpy 안에는 더블 또는 롱 더블이 될 수 있습니다.플랫폼에 정의되어 있으며 플랫폼에 따라 다릅니다.당신의 소스 코드에 즉시 포함시킬 수 있을지 모르겠습니다.

알고리즘의 이 부분에서 성능이 필요하지 않으면 문자열로 내보내고 나중에 사용하는 것이 더 안전한 방법일 수 있습니다.

numpy 문서의 TLDR:

np.longdouble시스템 기본값에 패딩됩니다.np.float96그리고.np.float128특정 패딩을 원하는 사용자를 위해 제공됩니다.그 이름들에도 불구하고,np.float96그리고.np.float128와 같은 정도의 정밀도만 제공합니다.np.longdouble즉, 대부분의 x86 컴퓨터에서는 80비트가, 표준 Windows에서는 64비트가 빌드됩니다.

언급URL : https://stackoverflow.com/questions/9062562/what-is-the-internal-precision-of-numpy-float128

반응형