• +55 86 99818-0416
  • brenomachadodomonte@gmail.com

Calculando a Raiz Quadrada em C

Calculando a Raiz Quadrada em C

Neste post iremos aprender um grande truque matemático para quem busca performance. Praticamente em todas as linguagens de programação temos recursos para calcularmos a raiz quadrada de um número com uma simples função ou método, geralmente chamado de SQRT como o código em C abaixo:

#include <stdio.h>
#include <math.h>

int main ()
{

   printf("Raiz de 4: %f\n", sqrt(4.0));
   
   return(0);
}

Incluindo a biblioteca Math e utilizando a função sqrt resolvemos praticamente todos os problemas, porém, se você estiver em busca de performance isso passa de solução para problema. A função sqrt é uma das funções mais pesadas de todas as linguagens de programação por ser um calculo matemático complexo. A forma com que são implementadas estas funções é bem precisa porém perdemos em velocidade, então vamos a nossa alternativa:

#include <stdio.h>

float InvSqrt (float x) 
{
    float xhalf = 0.5f*x;
    int i = *(int*)&x;
    i = 0x5f375a86 - (i>>1);
    x = *(float*)&i;
    x = x*(1.5f - xhalf*x*x);
    x = x*(1.5f - xhalf*x*x);
    x = x*(1.5f - xhalf*x*x);
    x=1/x;
    return x;
}

int main(){
  printf("Raiz de 4: %f\n", InvSqrt(4.0f));
  printf("Raiz de 9: %f\n", InvSqrt(9.0f));
  printf("Raiz de 16: %f\n", InvSqrt(16.0f));
  printf("Raiz de 25: %f\n", InvSqrt(25.0f));
  printf("Raiz de 36: %f\n", InvSqrt(36.0f));

  return 0;
}

 

breno

Deixe sua mensagem