|
|
|
strictfp
|
|||
|---|---|---|---|
|
#18+
avp.mkУ меня не получилось смоделировать случай чтобы метод с модификатором strictfp считал не так как точно такойже метод без этого модификатора. И не должно. У вас там вроде бы нигде большая (или маленькая) экспонента не получается. Поэтому и разницы никакой. Да и не факт, что ваша JVM использует extended expontent value set. Может в VM есть флаг который определяет ограничивать точность всех расчётов или нет? (и по умолчанию он установлен) Точность (количество значимых битов в мантисе) фиксировано и одинаково как для strictfp, так и для не strictfp методов. strictfp может влиять только на диапазон (range) представляемых значений, но не на точность. Читайте JLS 4.2.3, 15.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 09:55:02 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
avp.mkУ меня не получилось смоделировать случай чтобы метод с модификатором strictfp считал не так как точно такойже метод без этого модификатораstrictfp может влиять на точность тогда, когда, например, складываются-вычитаются числа, отличающиеся (по порядкам) настолько, что требуется денормализация одного из них. В этом случае у 80-битного формата интела есть запасные разряды, а у 64-битного double - нет. P.S. Я что-то не понимаю - приближённые вычисления уже совсем не изучают? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 15:32:22 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovstrictfp может влиять на точность тогда, когда, например, складываются-вычитаются числа, отличающиеся (по порядкам) настолько, что требуется денормализация одного из них. В этом случае у 80-битного формата интела есть запасные разряды, а у 64-битного double - нет. AMD.. (ну наверное это не важно) [offtop] Basil A. SidorovP.S. Я что-то не понимаю - приближённые вычисления уже совсем не изучают? Не знаю. Думаю врятли в институтах что-то кроме паинта изучают (сделал такой вывод исходя из того насколько тупые студенты приходят к нам на практику). Я изучаю гидравлику, сопромат, детали машин и всякое такое г.. [offtop] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 18:56:05 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
avp.mkAMD.. (ну наверное это не важно)8087 делала AMD или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 19:36:14 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovavp.mkУ меня не получилось смоделировать случай чтобы метод с модификатором strictfp считал не так как точно такойже метод без этого модификатораstrictfp может влиять на точность тогда, когда, например, складываются-вычитаются числа, отличающиеся (по порядкам) настолько, что требуется денормализация одного из них. В этом случае у 80-битного формата интела есть запасные разряды, а у 64-битного double - нет. P.S. Я что-то не понимаю - приближённые вычисления уже совсем не изучают? Я по старинке считал что JVM использует FPU если есть. Если нет - эмулирует программно на всяких мобилках и прочих стриральных машинках. Архитектурно FPU состоит из 8 штук 80-битных регистров с которыми он и выполняет операции как стековая машина (LIFO). Насколько я понимаю загрузить в него 32-х битный или 64-х битное число невозможно. Любые числа кастятся в 80 битные. Потом над ними выполняются операции. Результат операции можно извлечь обратно и снова закастить в float или double с отсечением точности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 20:30:42 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovstrictfp может влиять на точность тогда, когда, например, складываются-вычитаются числа, отличающиеся (по порядкам) настолько, что требуется денормализация одного из них. В этом случае у 80-битного формата интела есть запасные разряды, а у 64-битного double - нет. Что ж не влияет? Просветите хоть вы)) Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2013, 21:25:59 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
avp.mk Код: java 1. 2. 3. А с каких пор (строгий) ноль стал на что-то влиять? У 80-битного extended 16 запасных двоичных разрядов, а не ~2000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:08:14 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
maytonАрхитектурно FPU состоит ...Почитайте лучше про денормализацию, почему её использует и как это влияет на конечный результат при разной точности промежуточных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:10:56 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovmaytonАрхитектурно FPU состоит ...Почитайте лучше про денормализацию, почему её использует и как это влияет на конечный результат при разной точности промежуточных. Я много чего знаю про денормализацию. Из теории проектирования БД. Но у вас очевидно есть другой смысл этого термина. Дайте сссылку на пруф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:13:11 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
maytonЯ много чего знаю про денормализацию. Из теории проектирования БД. Но у вас очевидно есть другой смысл этого терминаСпросите у гугла про IEEE 754 . Если вкратце, то представление вещественных чисел неоднозначно: 1.0e1 и 0.1e2 - одно и то же число. При нормализации "в терминах IEEE 754" порядок выбирается таким образом, чтобы старший бит мантиссы был единичным. Этот "нормализованный бит" не хранится в (бинарном) представлении числа явным образом, что позволяет увеличить точность на один разряд. Если отказаться от денормализации, то в процессе масшабирования, которое необходимо при сложении-вычитании, рано или поздно возникнет ситуация, когда масштабируемое число превратится в ноль. С денормализованными числами мы теряем точность, но получаем запас в несколько порядков на масштабирование. Аналогичным образом, денормализация может потребоваться при делении "достаточного малого" числа на "достаточно большое" и при перемножении "достаточно малых" чисел. Интеловский extended - денормализованный, что, собственно, и позволяет сопроцессору не терять скорость при вычислениях - все затраты по (де)нормализации приходятся на загрузку/сохранение double/float. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 16:37:58 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovА с каких пор (строгий) ноль стал на что-то влиять? Как же всё-таки увидеть разницу, о мудрейший? TestStrictFp.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 17:17:15 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
avp.mkКак же всё-таки увидеть разницу, о мудрейший?Использовать числа, содержащие единицы во всех (бинарных) разрядах мантиссы масштабируемого числа. P.S. Возьмите лист бумаги, карандаш или ручку и поскладывайте в столбик. Будет более продуктивно, чем перебирать несколько более 2^52 вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 19:44:11 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorovнесколько более менее 2^52 вариантов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.09.2013, 19:45:02 |
|
||
|
strictfp
|
|||
|---|---|---|---|
|
#18+
avp.mk, Я повторю. strictfp не может влиять на точность вычислений. Не может. Единственное, на что он может влиять - так это на возможность получить какое-то значение вместо NaN/0. Все. Больше значащих бит strictfp дать не может по определению. Мантисса всегда имеет одну и ту же длину. Если я правильно помню, при передаче параметров в/из методов они тоже приводятся к набору чисел со стандартной экспонентой. Так что разницу нужно искать на коде вроде: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. И не факт еще, что разница будет. Она может быть, но ее может и не быть. Т.е. на каких-то архитектурах все вычисления автоматически будут strictfp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2013, 12:34:28 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38387182&tid=2128654]: |
0ms |
get settings: |
13ms |
get forum list: |
26ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
62ms |
get topic data: |
19ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
3ms |
| others: | 282ms |
| total: | 490ms |

| 0 / 0 |
