Переглядаючи реалізацію іншого програміста функції для обчислення нормального CDF розподілу , я запропонував або замінити всю реалізацію на вбудовані функції Python, або використовувати SciPy, загальну наукову бібліотеку.
Інший програміст зазначив, що ні в жодних документах, math.erfc()
ні scipy.stats.norm.cdf()
в їх документації не передбачено жодних гарантій точності. Тому я повинен бути більш обережним щодо заміни алгоритму наближення (який був узятий із шанованого джерела та який мав задокументовані межі помилок ).
Якщо чесно, думка сумніватися у точності та точності вбудованої або бібліотечної функції ніколи не спадала мені на думку. Зрештою, я закликав такі функції, як sin()
і sqrt()
роками, без особливих роздумів - навіщо слід math.erf()
чи scipy.stats.norm.cdf()
бути інакшим?
Але зараз я стурбований. Мої запитання:
- Загалом, якщо в документації не зазначається особлива згадка, чи мається на увазі, що ці види функцій є абсолютно точними до останнього десяткового знаку, в межах точності, пропонованої плаваючою точкою подвійної точності IEEE?
- Це правда для Python's
math.erf()
або SciPyscipy.stats.norm.cdf()
зокрема? Як ти можеш це сказати? Ця довідкова сторінка
sin()
говорить ...Ці функції можуть втратити точність, коли їх аргумент є близьким до кратного pi або далекий від 0,0.
Чому такі застереження повинні існувати, коли функція синуса періодична і симетрична? Здається, що абонент кладе на себе тягар, щоб канонізувати вхід для отримання оптимальної точності.
З іншого боку, документація Mozilla
Math.sin()
нічого не говорить про точність або точність. Чи означає це, що вона є абсолютно точною, або це "загальновідомі відомості", якіMath.sin()
були б точними лише за певних обставин у JavaScript, як і скрізь?