Encontrando o EPSILON

Pelo que foi dito anteriormente pelo Fred, só nos resta caçar o tal do EPSILON.

Eis uma idéia:

#include <float.h>
#include <stdio.h>

int main(void)
{
    /* Programa Epsilon
     * Objetivo:
     *      Determinar a precisão da máquina
     */

    int i;
    double eps, eps1;

    /* A variável eps irá conter a precisão da máquina */

    i = 0;
    eps = 1.0;
    eps1 = 0.0;
    do  {
        eps /= 2.0;
        eps1 = eps + 1.0;
        printf(""%3dª reduzida eps = %-10.10g \n"", ++i, eps);
    } while ( eps1 > 1.0);

    printf("A máquina pensa que '%10.10g' é igual a zero\n", eps);

    return 0;
}

Aqui, depois da

53ª reduzida eps = 1.110223025e-16 
A máquina pensa que '1.110223025e-16' é igual a zero

{}’s
MaRZ

Fonte: converti este código, originalmente em Fortran, do velho e empoeirado livro de cálculo numérico.

Anúncios

Um comentário sobre “Encontrando o EPSILON

  1. Muito bom… mas existe uma constante que deveria ser definida em float.h (não vi por lá, no gcc, mas essa deve ser uma constante que o compilador disponibiliza, nos dias de hoje): FLT_EPSILON (que tem grandeza de 1e-5).

    No seu caso é DBL_EPSILON (que tem grandeza de 1e-9).

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s