#python #numpy #floating-point
#python #numpy #с плавающей запятой
Вопрос:
IEEE определяет диапазон float64 от -2.23e-308
до 1.8e 308
. Но какова степень детализации, подразумеваемая этим диапазоном? То есть, какое максимальное количество ненулевых приращений мы можем сделать от минимального до максимального? Это эквивалентно рисованию максимально плоской (ненулевой наклон) возможной линии между этими точками; сколько выборок будет содержать эту строку и каков будет размер приращения?
Например, некоторая числовая система «альфа» имеет диапазон от -3 до 3, а «степень детализации» 1, что означает, что такая строка равна [-3,-2,-1,0,1,2,3]
. Пренебрегайте любыми соображениями о памяти; у нас есть йоттабайт оперативной памяти.
Комментарии:
1. Допускаете ли вы субнормальные значения (также известные как денормальные)? Потому что это добавляет большую степень детализации в диапазоне «около нуля», который вообще не применяется.
2. @ShadowRanger Да, тогда действительно наклон строки в этом регионе будет меньше. Предпочтительнее обрабатывать их отдельно, с общим количеством приращений и размером в каждом «регионе».
3. @OverLordGoldDragon Вопрос неясен. В формате IEEE-754
binary64
для обычных (не ненормальных) кодировок каждая бинада содержит 2 ** 52 дискретных числа. Поскольку двоичный формат с плавающей запятой является полулогарифмическим, приращение является постоянным внутри бинады, но отличается между бинадами. Поэтому вопрос «каким будет размер приращения?» не применим.4. @njuffa Тогда ответ будет «варьироваться между бинадами, но постоянным внутри». Затем линия имеет кусочный наклон, и мы должны иметь возможность описать количество точек в пределах каждого наклона (размер приращения), нет? Более простой задачей должно быть нахождение общего количества точек во всей строке.
5. Повторите более простую задачу: просто умножьте количество двоичных файлов на количество кодировок в двоичном коде, затем добавьте количество ненормальных кодировок.