akaGM
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору han84 да всё там работает... я всё-таки остаюсь при своём мнении, что у тебя с точностью что-то не то... вот прогони на gfortran и intel'е (и вообще на всём что есть под рукой, я даже С-код не поленился): Код: real*4 s, seps real*8 d, deps d = 1.1d0 deps = 1.d0 do while (d .ne. 1.0d0) d = 1.0d0 + deps deps = deps / 2.0d0 enddo s = 1.1e0 seps = 1.e0 do while (s .ne. 1.0e0) s = 1.0e0 + seps seps = seps / 2.0e0 enddo print *, 'double epsilon: ', deps print *, 'single epsilon: ', seps end //////////////////////////////////////////////////// #include <stdio.h> float s, seps; double d, deps; void main() { d = 1.1e0; deps = 1.e0; while (d != 1.0e0) { d = 1.0e0 + deps; deps = deps / 2.0e0; } s = 1.1e0; seps = 1.e0; while (s != 1.0e0) { s = 1.0e0 + seps; seps = seps / 2.0e0; } printf("double epsilon: %E\n", deps); printf("single epsilon: %E\n", seps); } | интелы работает с даблами, они лукавят -- держат экспоненту, а потом просто обрезают мантиссу, а gfortran честно в IEEE и фигачит... все остальные компиляторы (g77/Visual C/Lachey Fortran и др.) работают так же как ГФортран, можешь проверить... Цитата: Насчет кто писал так китаец какой-то где-то в 95 вроде. | я имел ввиду дикое смешение стилей 66/77/90... а так, халтурщики они, особенно в науке... Цитата: ссылочку где можно почитать | http://gcc.gnu.org/onlinedocs/gfortran/RAN.html#RAN | Всего записей: 24613 | Зарегистр. 06-12-2002 | Отправлено: 19:37 05-02-2008 | Исправлено: akaGM, 14:45 06-02-2008 |
|