首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

pow(x,0.5f)的快速实现比快速sqrt(x)快吗?

根据提供的信息,pow(x, 0.5f) 的实现比快速sqrt(x)快。这是因为pow(x, 0.5f) 是直接计算x的平方根,而sqrt(x) 是间接计算x的平方根,涉及到的计算量更小,因此速度更快。此外,由于sqrt(x) 是更通用的函数,其实现通常比pow(x, 0.5f) 更优化,因此也更快速。

以下是pow(x, 0.5f) 的实现代码:

代码语言:arduino
复制
float x = 2.0f;
float result = x * x * 0.5f;

以下是sqrt(x) 的实现代码:

代码语言:arduino
复制
float x = 2.0f;
float result = sqrt(x);

对于更具体的场景,如果需要更快的平方根计算,可以考虑使用专门的平方根算法,例如快速平方根算法、二分平方根算法等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个Sqrt函数引发血案

我们平时经常会有一些数据运算操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现?就拿最常用sqrt函数来说吧,系统怎么来实现这个经常调用函数呢?...比如求sqrt(16)结果,你先试(0+16)/2=8,8*8=64,6416大,然后就向左移,试(0+8)/2=4,4*4=16刚好,你得到了正确结果sqrt(16)=4。...这次真的是质变了,结果竟然系统还要好。。。哥真的是震惊了!!!哥吐血了!!!一个函数引发了血案!!!血案,血案。。。 到现在你是不是还不明白那个“鬼函数”,到底为什么速度那么?...它作用是将一个数开平方并取倒,经测试这段代码(float)(1.0/sqrt(x))4倍: float Q_rsqrt( float number ) { long i; float x2,...编译,实验,这个函数不仅工作很好,而且标准sqrt()函数4倍!要知道,编译器自带函数,可是经过严格仔细汇编优化啊!

1.1K50

一个 Sqrt 函数引发血案

我们平时经常会有一些数据运算操作,需要调用sqrt,exp,abs等函数,那么时候你有没有想过:这个些函数系统是如何实现?就拿最常用sqrt函数来说吧,系统怎么来实现这个经常调用函数呢?...比如求sqrt(16)结果,你先试(0+16)/2=8,88=64,6416大,然后就向左移,试(0+8)/2=4,44=16 刚好,你得到了正确结果 sqrt(16)=4。...到现在你是不是还不明白那个“鬼函数”,到底为什么速度那么?不急,先看看下面的故事吧: Quake-III Arena (雷神之锤3)是 90 年代经典游戏之一。...它作用是将一个数开平方并取倒,经测试这段代码(float)(1.0/sqrt(x))4倍: float Q_rsqrt( float number ) 2{ long i; float...编译,实验,这个函数不仅工作很好,而且标准sqrt()函数4倍!要知道,编译器自带函数,可是经过严格仔细汇编优化啊!

72540

【像训练CNN一样快速训练RNN】全新RNN实现优化后LSTM10倍

项目已经开源:https://github.com/taolei87/sru 先看论文摘要,有个大概了解: 标题非常直接,也是很多人都想实现——《像训练CNN一样快速训练RNN》: ?...我们所提出循环单元,运行速度与卷积层一样cuDNN优化LSTM5-10倍。我们展示了这种循环单元在广泛应用中有效性,包括分类、问答、语言建模、翻译和语音识别。...我们开源了在PyTorch和CNTK中实现。 简单循环单元SRU,简化状态计算,速度与CNN一样 近来深度学习取得许多进展都源于模型容量增加和计算力相应提升。...因此,SRU中所有矩阵乘法(即gemm)和元素方面的操作可以在不同维度和步骤中实现并行化。 SRU实现:增加highway连接和变分dropout 那么,SRU是怎么实现呢?...然后,作者将 和步骤t神经门之间连接全部丢弃,以这种方法来加速循环计算。相比之下,现有的RNN在实现时是要使用先前输出状态

2.4K50

深度:震惊世间惊人代码(附完整代码)

long i; float x2, y; const float threehalfs = 1.5F; x2 = number * 0.5F; y = number;...函数返回1/sqrt(x),这个函数在图像处理中比sqrt(x)更有用。 注意到这个正数只用了一次叠代!(其实就是根本没用叠代,直接运算)。...编译、实验,这个团数不仅工作很好,而且标准sqrt()函数4倍!...囊括世界万物一段代码 这是一段使用Processing语言代码,这短短几行代码永无休止就在做一件事——“穷举”。那么它又有什么特殊之处?...:,主要核心代码是:|:&,可以看出这是一个函数本身递归调用,通过&实现在后台开启新进程运行,通过管道实现进程呈几何形式增长,最后再通过:来调用函数引爆炸弹。

61010

大厂面试题:求根号2简单?高级算法你肯定不会

这里再补充一点,实际上x初始值可以取任意正数,但是会影响到性能,我尝试取1亿,最终需要30次迭代,不过还是二分。...实际我目前没有找到牛顿迭代又好又算法了,但是我找到一个相关故事,以及它引出以牺牲精度换取速度求\frac{1}{\sqrt{x}}神奇算法,当然它也可以用来求\sqrt2。...这里说不严格是因为我只做\sqrt2测试,而且用是java实现,而且像是CarmackMethod实现,可能因为java和c运行机制不同,性能会受很大影响,下面这个结果 仅供娱乐,看看就好。...上面说了3个解法,那你是不是也很好奇目前各种编程语言库函数里对sqrt是如何实现?...我也很好奇,于是我们帮你们翻了jdk源码,发现它根本就不需要自己实现sqrt,毕竟sqrt在计算机领域是有个比较常用计算,所以主流CPU架构都提供了对sqrt硬件支持,只需要一条汇编指令就可以了,

1.6K10

CUDA优化冷知识24|函数和指令使用选择和优化

例如sqrt()函数,有double sqrt(double)版本,也有float sqrt(float)版本。...我们这里简单举几个例子就好: 计算x1/6次方,可以先计算一次x平方根倒数,再计算一次立方根倒数,这样就得到1/6次方值,而无需使用昂贵pow之类函数。...再例如:x2/3次方,可以先求一个立方根,然后再求一次平方,这样就快速得到了2/3次方。...注意这个快速替换表格里公式,很多都使用了特殊GPU上专用函数,例如rsqrt, rcbrt(二次方和三次方根倒数),而不是标准C库(libm),在CPU上我们能见到sqrt、cbrt(二次方和三次方根...因为特殊rsqrtf()这种,可能在实现上具有更好精度和性能。例如我们之前章节知道过,SFU这种喜欢提供平方根倒数这种快速接近,可能有助于性能提升。

85820

牛顿迭代法(Newtons Method)

f(x)=0中精确解意义是,当取得解时候,函数值为零(即f(x)精确解是函数零点)。因此,x1x0更加接近精确解。只要不断以此方法更新x,就可以取得无限接近精确解。...牛顿迭代法是已知实现求方根最快方法之一,只需要迭代几次后就能得到相当精确结果。 首先设xm次方根为a。 下面程序使用牛顿法求解平方根。...也c++标准库sqrt()函数要快好几倍。此段代码有一个奇怪句子: i = 0x5f3759df - ( i >> 1 ); // what the fuck? ...以雷神之锤III程序为蓝本可以写出sqrt()更强大求平方根函数: 1 int sqrt(float x) { 2 if(x == 0) return 0; 3 float...result = x; 4 float xhalf = 0.5f*result; 5 int i = *(int*)&result; 6 i = 0x5f375a86

1.9K50

贪心算法求快速平方根倒数算法中“魔术数字”【含matlab源代码】

一、快速平方根倒数算法简介及实现 1.1 算法简介 在计算平方根倒数时,传统计算方法是先计算a平方根sqrt(a),再计算它倒数1/sqrt(a)。...而快速平方根倒数算法则将输入32位浮点数a作为一个整数i,用“魔术数字”0x5f3759df减去i右移一位值产生近似的估值y,再使用牛顿迭代法迭代一次,就得到了相当精度计算结果。...; x2 = number * 0.5F; y = number; i = * ( long * ) &y; // evil floating...但通过指针将32位浮点数转化为32位整数运算(以及其逆运算)很难在matlab中实现,但很容易通过c/c++实现。.../sqrt(as); 再调用FastInvSqrtFloat函数计算出R作为魔术数字时近似结果es,用es与rs平均均方误差作为值。

1.2K30

使用程序计算近似Π值

但是你有没有想过这个PI是怎么来,是直接存储?还是计算来。虽然不知道具体是怎么实现,但是我们可以使用一些简单数学知识,来计算出近似的Π值。...A计算主要是矩形面积累加,假如我们把圆拆成n个矩形,每个矩形宽都为1/n,那么第i个矩形面积应该为: dS = dx * y 因为是半圆,因此y计算公式如下: y = \sqrt{R^2 -...(x-R)^2} 其中x应该为i/n*R(因为是把R分成n份,第i个矩形x=i/n*R)。...最后,n个矩形相加公式为: A = \sum_{i=1}^n\frac{\sqrt{R^2 - (\frac{i}{n}R-R)^2}}{n} 下面我们就可以根据公式用程序求出Π近似值。...= pow(pow(r, 2) - pow(i*r/n-r, 2), 0.5) # 使用公式计算y,其中x=i/n dS = dx * y # 单个小矩形面积 A += dS # 对矩形面积进行累加

1.7K20
领券