Andrew10
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору CurlyDevil Удивительное открытые, которое раньше прозевал: оказывается IVF для Windows тоже поддерживает учетверенную точность для действительных и комплексных чисел! Судя по всему, при этом точность, как и полагается, 32 знака. Вот немного модифицированный код для вычисления машинного эпсилон, который дает совпадение со значением, выдаваемым встроенной функцией epsilon() !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! implicit real*16(a-h,o-z) eps=1.q0 j=1 do while(.true.) eps = eps/2.q0 e = summ(1.q0, eps) write(6,'(i3,3x, g42.33, 3x, g42.33)') j, e, eps if (e .eq. 1.q0) exit j=j+1 end do ! ! Машинное эпсилон ! write(6,'(''macheps = '',g42.33)') epsilon(1.q0) stop end real*16 function summ(x,y) real*16 x,y summ = x + y return end !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Странное только поведение с результатом, выдаваемом на консоль. В величине e до опреденого момента выдаются значащие цифры, а когда первые 20 знаков заполняются нулями, то дальше скачком обнуляются и все остальные позиции, причем вычисления продолжаются и дальше, пока не получится правильное eps! Нужно посмотреть, как это выглядит в отладчике, такое впечатление, что что-то не то с преобразованием чисел при выводе. |