<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=Sqrt</id>
	<title>Sqrt - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=Sqrt"/>
	<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Sqrt&amp;action=history"/>
	<updated>2026-04-15T15:39:05Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Sqrt&amp;diff=202&amp;oldid=prev</id>
		<title>MegaManx3: Criou página com &#039;int &#039;&#039;&#039;Sqrt&#039;&#039;&#039; (int &#039;&#039;number&#039;&#039;)   fixed &#039;&#039;&#039;FixedSqrt&#039;&#039;&#039; (fixed &#039;&#039;number&#039;&#039;)   == Uso ==  Retorna a raiz quadrada de um número inteiro ou de ponto fixo.  === Parâmetros ===  * &#039;&#039;number&#039;&#039;: Valor do qual obter a raiz quadrada.  === Valor de retorno ===  Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.  == Cálculo manual == Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, pa...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Sqrt&amp;diff=202&amp;oldid=prev"/>
		<updated>2026-03-06T18:47:40Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;int &amp;#039;&amp;#039;&amp;#039;Sqrt&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;number&amp;#039;&amp;#039;)   fixed &amp;#039;&amp;#039;&amp;#039;FixedSqrt&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;number&amp;#039;&amp;#039;)   == Uso ==  Retorna a raiz quadrada de um número inteiro ou de ponto fixo.  === Parâmetros ===  * &amp;#039;&amp;#039;number&amp;#039;&amp;#039;: Valor do qual obter a raiz quadrada.  === Valor de retorno ===  Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.  == Cálculo manual == Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, pa...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;int &amp;#039;&amp;#039;&amp;#039;Sqrt&amp;#039;&amp;#039;&amp;#039; (int &amp;#039;&amp;#039;number&amp;#039;&amp;#039;) &lt;br /&gt;
&lt;br /&gt;
fixed &amp;#039;&amp;#039;&amp;#039;FixedSqrt&amp;#039;&amp;#039;&amp;#039; (fixed &amp;#039;&amp;#039;number&amp;#039;&amp;#039;) &lt;br /&gt;
&lt;br /&gt;
== Uso ==&lt;br /&gt;
&lt;br /&gt;
Retorna a raiz quadrada de um número inteiro ou de ponto fixo.&lt;br /&gt;
&lt;br /&gt;
=== Parâmetros ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;number&amp;#039;&amp;#039;: Valor do qual obter a raiz quadrada.&lt;br /&gt;
&lt;br /&gt;
=== Valor de retorno ===&lt;br /&gt;
&lt;br /&gt;
Ou a raiz quadrada arredondada do número como inteiro, ou como ponto fixo.&lt;br /&gt;
&lt;br /&gt;
== Cálculo manual ==&lt;br /&gt;
Em versões antigas do ZDoom, a função não é embutida no ACS, então aqui estão várias que funcionam bem. Note que, para a distância entre dois objetos, a função [[distance]] pode ser mais rápida.&lt;br /&gt;
&lt;br /&gt;
Esta versão usa o método de Newton, em que a solução converge quadraticamente a partir do chute inicial. Esta função foi comparada com as duas seguintes e é pelo menos 5 a 10 vezes mais rápida em uso normal.&lt;br /&gt;
 function int sqrt(int number)&lt;br /&gt;
 {&lt;br /&gt;
 	if(number &amp;lt;= 3) { return number &amp;gt; 0; }&lt;br /&gt;
 &lt;br /&gt;
 	int oldAns = number &amp;gt;&amp;gt; 1,                     // chute inicial&lt;br /&gt;
 	    newAns = (oldAns + number / oldAns) &amp;gt;&amp;gt; 1; // primeira iteração&lt;br /&gt;
 &lt;br /&gt;
 	// método iterativo principal&lt;br /&gt;
 	while(newAns &amp;lt; oldAns)&lt;br /&gt;
 	{&lt;br /&gt;
 		oldAns = newAns;&lt;br /&gt;
 		newAns = (oldAns + number / oldAns) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return oldAns;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Esta é uma versão mais simples, porém mais lenta, de uma função de raiz quadrada. Ela arredonda a raiz para cima ou para baixo.&lt;br /&gt;
&lt;br /&gt;
 function int sqrt (int x)&lt;br /&gt;
 {&lt;br /&gt;
 	int r;&lt;br /&gt;
 	x = x + 1 &amp;gt;&amp;gt; 1;&lt;br /&gt;
 	while (x &amp;gt; r)&lt;br /&gt;
 		x -= r++;&lt;br /&gt;
 	return r;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Se você precisar de uma função que arredonde para baixo, esta funcionará. Baseada em [http://snippets.dzone.com/posts/show/2715 este algoritmo].&lt;br /&gt;
 function int isqrt (int n)&lt;br /&gt;
 {&lt;br /&gt;
 	int a;&lt;br /&gt;
 	for (a=0;n&amp;gt;=(2*a)+1;n-=(2*a++)+1);&lt;br /&gt;
 	return a;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Esta fórmula baseada em amostragem processa valores fixos e retorna um resultado fixo cuja precisão é definida pelo inteiro &amp;#039;&amp;#039;samples&amp;#039;&amp;#039;, e retorna zero se o número de entrada for negativo.&lt;br /&gt;
 function int sqrt(int number) &lt;br /&gt;
 { &lt;br /&gt;
   int samples=15; // Amostras para precisão&lt;br /&gt;
 &lt;br /&gt;
   if (number == 1.0) return 1.0; &lt;br /&gt;
   if (number &amp;lt;= 0) return 0;&lt;br /&gt;
   int val = samples&amp;lt;&amp;lt;17 + samples&amp;lt;&amp;lt;19; //x*10 = x&amp;lt;&amp;lt;1 + x&amp;lt;&amp;lt;3&lt;br /&gt;
   for (int i=0; i&amp;lt;samples; i++) &lt;br /&gt;
     val = (val + FixedDiv(number, val)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 &lt;br /&gt;
   return val; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Este é o mesmo de cima, mas otimizado para 15 amostras&lt;br /&gt;
 function int sqrt(int number) &lt;br /&gt;
 {&lt;br /&gt;
   if (number == 1.0) return 1.0; &lt;br /&gt;
   if (number &amp;lt;= 0) return 0;&lt;br /&gt;
   int val = 150.0;&lt;br /&gt;
   for (int i=0; i&amp;lt;15; i++) &lt;br /&gt;
     val = (val + FixedDiv(number, val)) &amp;gt;&amp;gt; 1;&lt;br /&gt;
 &lt;br /&gt;
   return val; &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[category:Sample ACS functions]]&lt;br /&gt;
[[category:ACS Math functions]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
</feed>