Python 3

0.1 + 0.2 의 계산 결과가 0.3 이 되게 하기

어떤 프로그램 언어를 쓰든 0.1 + 0.2 ≠ 0.3 이 되는 것이 당연(?)합니다. 또한 1.0/(0.1 + 0.2 - 0.3) ≠ ∞ 이 되는 것도 당연(?)합니다. >>> 0.1 + 0.2 - 0.3 5.551115123125783e-17 >>> 0.1 + 0.2 - 0.3 > 1.0E-17 True >>> 0.1 + 0.2 - 0.3 > 1.0/10E17 True 0.1 + 0.2 - 0.3 이 1.0E-17 즉 0.000000000000000001 보다 크다고 합니다. 이래 가지고서는 부동소수점수의 계산 결과를 어디 까지 믿을 수 있는지 의문입니다. (보통으로는 배정밀도 부동소수점수는 유효수자 개수가 14개~15개 정도입니다.) 다행히 Python 의 fractions 모듈과 decimal 모..

Python 3.10.1 릴리즈 출시

지난 2021년 12월 6일에 Python 3.10.1 이 출시되었다. 설치하자 마자 인터프리터 쉘로 간단히 테스트해 보았다. Python 3.10.1 (tags/v3.10.1:2cd268a, Dec 6 2021, 19:10:37) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello~") Hello~ >>> for i in range(11): ... print(2**i) ... 1 2 4 8 16 32 64 128 256 512 1024 >>> import math >>> math.factorial(10) 3628800 >>> math..

감마함수(gamma function)의 값을 (유효수자 15자리 까지 정밀하게) 계산하는 Python 언어 소스

Lanczos 알고리즘은 Stirlng 공식에 의한 알고리즘 보다 정밀하며, 십진수로 유효숫자 약 15자리 까지는 정확하게 계산해 준다. 단지 exp 함수를 이용하는 부분에서는 exp 함수의 구현에 따라 오차가 더 있을 수 있다. #!/usr/bin/env python # -*- encoding:utf-8 -*- # Filename: testLanczos-01.py # # An approximation for the gamma function by using the Lanczos algorithm # # Execute: python testLanczos-01.py # or # Execute: ./testLanczos-01.py # # See: http://en.wikipedia.org/wiki/Lancz..