Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h:
#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */#define DBL_MAX 1.7976931348623158e+308 /* max value */#define DBL_MIN 2.2250738585072014e-308 /* min positive value */#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */#define FLT_MAX 3.402823466e+38F /* max value */#define FLT_MIN 1.175494351e-38F /* min positive value */
Здравствуйте, Vain, Вы писали:
V>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h: V>
V>#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
V>#define DBL_MAX 1.7976931348623158e+308 /* max value */
V>#define DBL_MIN 2.2250738585072014e-308 /* min positive value */
V>#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */
V>#define FLT_MAX 3.402823466e+38F /* max value */
V>#define FLT_MIN 1.175494351e-38F /* min positive value */
V>
Здравствуйте, Programador, Вы писали:
V>>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h: V>>
V>>#define DBL_EPSILON 2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
V>>#define DBL_MAX 1.7976931348623158e+308 /* max value */
V>>#define DBL_MIN 2.2250738585072014e-308 /* min positive value */
V>>#define FLT_EPSILON 1.192092896e-07F /* smallest such that 1.0+FLT_EPSILON != 1.0 */
V>>#define FLT_MAX 3.402823466e+38F /* max value */
V>>#define FLT_MIN 1.175494351e-38F /* min positive value */
V>>
V>>Считал в калькуляторе windows P>А зачем?
меня интересует правильно ли я посчитал значения P>потом FLT_EPSILON это 32 разряда вида ??????0000000000001 а куда 1.1920928955078125e-07 округлится
Важнее здесь куда DBL_MAX округляется
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, oziro, Вы писали:
V>>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h:
O> А для чего это надо?
V>>
V>>#define DBL_EPSILON 2.2204460492503131e-016/* smallest such that 1.0+DBL_EPSILON != 1.0 */
V>>
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, Programador, Вы писали:
V>>>Почему, число то одно и тоже. P>>тип константы у флоат поменялся V>да, но он мне указал на DBL_EPSILON
Тогда я пас, я тебя не понимаю
PS Это все антинаучно и софистика. Если ты увеличил точность якобы для значения DBL_EPSILON — значит это уже другой тип, не дабл, и епсилон у него будет другой, соответственно порядок тоже другой — я так думаю.
Здравствуйте, oziro, Вы писали:
V>>>>Почему, число то одно и тоже. P>>>тип константы у флоат поменялся V>>да, но он мне указал на DBL_EPSILON
O>Тогда я пас, я тебя не понимаю
взаимно
O>PS Это все антинаучно и софистика. Если ты увеличил точность якобы для значения DBL_EPSILON — значит это уже другой тип, не дабл, и епсилон у него будет другой, соответственно порядок тоже другой — я так думаю.
Имхо, какой тип у флота должен судить компилятор, а не программер, дабы не быть себе злым буратиной
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Имхо константы должны быть представлены с максимальной точностью, чтобы дать возможность компилятору позаботиться об округлении.
Если ты не занимаешься кросс-компиляцией для платформы, где double — не IEEE-шное, а какое-то своё, то эти фокусы бесполезны.
1) Нет никаких причин компилятору хранить литерал в более широком формате, чем тип этого литерала. (В данном случае long double против double).
2) Для вещественных чисел MAX, MIN и EPSILON играют скорее справочную роль. В арифметике они всё равно не встретятся.
3) А если и встретятся, то погрешности вычислений, связанные с преобразованиями float (в переменной) <-> double (в подвыражении) <-> long double (внутри FPU), обусловленные и разными оптимизациями, и флагами FPU, напрочь перекроют якобы точный хвост дроби.
4) Наконец, разработчики компилятора могли проверить, что компилятор правильно парсит DBL_EPSILON и правильно считает формулы с ним (например, e+e = e*2). Всё-таки преобразование десятичной дроби в двоичную сопряжено с погрешностями, которые могут скомпенсироваться, а могут и усилиться.
Здравствуйте, Vain, Вы писали:
V>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h:
На мой вопрос так никто и не ответил
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, Vain, Вы писали:
V>>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h: V>На мой вопрос так никто и не ответил
Здравствуйте, Programador, Вы писали:
V>>>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h: V>>На мой вопрос так никто и не ответил
P>
P>посмотри чему х равно, мне почемуто кажется что 0 а не 2.000000000000000000000000000000000000000000000000
А почему имеено 2, да ещё с таким кол-вом нулей после запятой?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Vain, Вы писали:
V>Здравствуйте, Programador, Вы писали:
V>>>>Меня интересует, правильно ли я посчитал значения некоторых констант, которые можно найти во float.h: V>>>На мой вопрос так никто и не ответил
P>>
P>>посмотри чему х равно, мне почемуто кажется что 0 а не 2.000000000000000000000000000000000000000000000000 V>А почему имеено 2, да ещё с таким кол-вом нулей после запятой?
нули? для точности
Здравствуйте, Vain, Вы писали:
V>На мой вопрос так никто и не ответил
Ты тоже. Тебя спрашивали какой в этом смысл, ведь в double все равно не помещается больше 12 десятичных значащих цифр. А для тех констант которые ты привел увеличивать точность вообще не имеет смысла.
Здравствуйте, SWW, Вы писали:
V>>На мой вопрос так никто и не ответил SWW>Ты тоже. Тебя спрашивали какой в этом смысл, ведь в double все равно не помещается больше 12 десятичных значащих цифр. А для тех констант которые ты привел увеличивать точность вообще не имеет смысла.
Я не увеличиваю точность, мне интересно правильно ли я посчитал число-константу.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: Константы во float.h
От:
Аноним
Дата:
18.01.08 09:11
Оценка:
Здравствуйте, Vain, Вы писали:
V>Я не увеличиваю точность, мне интересно правильно ли я посчитал число-константу.
Можно алгоритм по которому вы рассчитали константы?
Можно узнать — вы понимаете что епсилон привязан к типу с которым он используется и для которого рассчитан?
Вы понимаете что дальнейшее увеличение точности не приведет ни к чему для конкретного типа double?
И кстати, если я правильно помню — не имеет смысла сравнивать с удвоеным епсилоном , можно свести с одному епсилону
Здравствуйте, Аноним, Вы писали:
V>>Я не увеличиваю точность, мне интересно правильно ли я посчитал число-константу. А>Можно алгоритм по которому вы рассчитали константы?
k=M*2^P А>Можно узнать — вы понимаете что епсилон привязан к типу с которым он используется и для которого рассчитан?
Насколько я понимаю, эпсилон привязан к мантиссе. А>Вы понимаете что дальнейшее увеличение точности не приведет ни к чему для конкретного типа double?
Для double — может и не приведёт, но для long double вполне может. А>И кстати, если я правильно помню — не имеет смысла сравнивать с удвоеным епсилоном , можно свести с одному епсилону
Где удвоенный эпсилон?
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]