Raiz quadrada

Peter V5

Folding Member
Aqui está uma função escrita em C para se calcular um raiz quadrada:

#include <stdio.h>
#include <stdlib.h>

float quad(float radicando)
{
float x = radicando / 10; /* aproximacao da raiz */
float dx;
double dif;
double mintolerancia = 0.00001;
int i;

if(radicando < 0)
return -1.0;
if(!radicando)
return 0.0;
for(i = 1; i < 20; i++)
{
dx = (radicando - x * x) / (2.0 * x);
x += dx;
dif = radicando - x * x;
x = (x >=0 ) ? x : 0 - x; /* valor absoluto de x */
if(x <= mintolerancia) break;
}
return x;
}

main()
{
float x;
scanf("%f", &x);
printf("R: %f", quad(x));
getchar();
getchar();
}

Atenção, não fui eu que fiz este código, encontrei numa pesquina no google, nã me lembro quem fez, mas acho que é importante que cá esteja para todos verem.
 
tipo.. qualquer implementação da clib em qualquer SO a face da terra tem a função sqrt() que está bem mais optimizada que essa, portanto qual é o objectivo?
só se for pela piada de a fazermos nós mesmos, mas para isso tinha-se lançado o desafio e não postado logo o código..
 
talvez pelo interesse que alguém possa ter em saber como calcular a raiz quadrada sem usar as funções pré-definidas?
é muito giro usar apenas um sqrt() mas eu pelo menos tenho muitas vezes curiosidade em saber como funcionam determinadas coisas que se usam...
 
Back
Topo