在ios中计算任何数字的平方根的最佳方法 , Objective C和Swift
我正在要求如何计算ios,Objective C中任何给定数字的平方根.我已经插入了使用日志进行操作的方式.逻辑是.例如:找到5 的平方根 X = √5 然后 log10X = log10(√5) 这意味着 log10X = log10(5)/2; 然后应从2中获取log10(5)和divide的值,然后将其获得该值的antilog来搜索X. 所以我的答案是在目标C中,如下(作为前:我正在搜索5的平方根) double getlogvalue = log10(5)/2; // in here the get the value of 5 in log10 and divide it from two. //then get the antilog value for the getlogvalue double getangilogvalue = pow(10,getlogvalue); //this will give the square
2 2023-06-02
编程技术问答社区
C/C++中的快速反平方双数
最近,我正在介绍一个节目,其中热点肯定是这个 double d = somevalue(); double d2=d*d; double c = 1.0/d2 // HOT SPOT 之后不使用该值D2,因为我只需要值c.一段时间以前 我需要非常准确的精度,我检查了我的程序没有使用GCC -FFAST -MATH选项给出正确的结果. (G ++ -4.5) 解决方案 做快速根源的技巧,类似的技巧通过牺牲精度来获得其性能. (嗯,大多数.) 您确定需要double精度吗?您可以很容易地牺牲精度: double d = somevalue(); float c = 1.0f / ((float) d * (float) d); 在这种情况下,1.0f绝对是必不可少的,如果您使用1.0,则可以获得double precision. 您是否尝试在编译器上启用"草率"数学?在GCC上,您可以使用-ffast-math,其他编译器也有类似的选项.草率的数
0 2023-05-23
编程技术问答社区
python中的平方根
任何Python库是否提供了实现以下链接中描述的"快速反平方根"算法的函数? http://en.wikipedia.org/wiki/wastia/fast_invers_inverse_square_square_root 也许是numpy/scipy? 解决方案 您已经可以执行逆平方根,只需做x**-1/2,因此您不需要做一个复杂的功能就可以做到这一点,无论如何,它可能会更快地这样做,而且它更容易 就像Interjay所说的那样,如果您真的担心这样的速度,您可能应该使用更快的语言来获得更快的方式 我发现的唯一库是 mpmath 祝你好运! 其他解决方案 您可以在Python中执行此操作,但不能以非常直接的方式(即,很多功能调用),因此x**-.5可能会更快. 所以这可能是一个有趣的练习,但根本不实用.
12 2023-05-23
编程技术问答社区
为什么**0.5似乎比sqrt()更有效?
我尝试测量以下两种方法的速度: > system.time(expr = replicate(10000, 1:10000 ** (1/2))) ## user system elapsed ## 0.027 0.001 0.028 > system.time(expr = replicate(10000, sqrt(1:10000))) ## user system elapsed ## 3.722 0.665 4.494 如果sqrt()函数无法与** 0.5竞争,为什么我们需要这样的功能? (系统是OS X Yusemite,R版本为3.1.2) 解决方案 您忘记了重要的括号.以下是纠正以下时间的时间: system.time(expr = replicate(10000, (1:10000) ** (1/2))) #user system elapsed #4.76 0.32 5.12 sys
2 2023-05-23
编程技术问答社区
python中的x根有短暂的障碍吗?
在数学中,如果我想将3计算为2的功率,则不需要符号,但是我写了2个小:3².在Python中,此操作似乎由**语法表示. >>> 3**2 9 如果我想去另一个方向并计算9的第二根,那么在数学中,我需要使用一个符号:2√9 = 3 python中是否有一个短手符号,类似于**实现这一目标的**?还是我需要使用math模块? 解决方案 x的第一个根是x^(1/n),因此您可以做9**(1/2)以找到9的第二根.通常,您可以计算x的第n个根,为: x**(1/n) 注意:在Python 2中,您必须执行1/float(n)或1.0/n,以便结果是float而不是int.有关更多详细信息,请参见为什么Python给出"错误的" "平方根的答案? 其他解决方案 您也可以使用一些对数: x的词根: exp(log(x)/n) 例如: >>> from math import exp, log >>> x = 8 >>> n = 3 >
2 2023-05-12
编程技术问答社区
有效值计算 直流偏移
我需要在MCU(微控制器,资源约束)中实现正弦波的RMS计算. MCU缺少FPU(浮点单元),因此我更喜欢留在整数领域.捕获是离散的10位ADC. 寻找解决方案,我在这里找到了这个很棒的解决方案,撰写了Edgar Bonet: https://stackoverflow.com/a/28812301/8264292 似乎完全适合我的需求.但是我有一些问题. 输入是主电源230 VAC,50 Hz.它是由硬件变化并抵消了将成为0-1V(峰值到峰值)的正弦波,我可以通过ADC获得0-1023读数来捕获.硬件经过校准,以使260 VRM(即-368:+368峰值至峰值)输入变为0-1V峰值输出.如果我也想留在整数领域,我该如何"恢复"原始波RMS值?单位可能会有所不同,MV也可以很好. 我的第一个猜测是从输入样本(DC偏移)中减去512,然后在Edgar Bonet答案中进行此"魔术"转变.但是我意识到这是错误的,因为直流偏移尚未固定.相反,从0V开始是有偏见的. IE. 1
8 2023-03-27
编程技术问答社区
元整数平方根中的无限递推
美好的一天, 我的一个朋友正在询问将整数平方根函数转换为元功能.这是原始功能: unsigned isqrt(unsigned value) { unsigned sq = 1, dlt = 3; while(sq>1) - 1; } 我使用constexpr写了一个元版,但他说他由于某种原因无法使用新功能: constexpr std::size_t isqrt_impl (std::size_t sq, std::size_t dlt, std::size_t value){ return sq > 1) - 1; } constexpr std::size_t
0 2023-03-26
编程技术问答社区
如何用C语言打印出负数的平方根并显示i
我试图弄清楚如何显示一个数字的平方根,如果恰好是负面的(如用户输入的那样),如果是的,则使用显示的" i"也正确显示.当我执行正常sqrt函数时,结果总是像-1.#ind.当我尝试使用双重复杂变量时,正数字或负数会清除. 以下是我的代码;评论是我的目标.用户输入了4个数字变量,可以是任何整数,正或负数. // Display the square root of each number. Remember that the user can enter negative numbers and // will need to find the negative root with the "i" displayed. printf("\nThe square root of %d is %.4f", num1, sqrt(num1)); printf("\nThe square root of %d is %.4f", num2, sqrt(num2)); prin
12 2023-03-23
编程技术问答社区
uint64_t与int64_t的平方值
我注意到,计算uint64_t平方根的整数部分比int64_t的整数要复杂得多.拜托,有人对此有解释吗?为什么要处理一个额外的位置似乎更困难? 以下内容: int64_t sqrt_int(int64_t a) { return sqrt(a); } 用clang 5.0和-mfpmath=sse -msse3 -Wall -O3编译到 sqrt_int(long): # @sqrt_int(long) cvtsi2sd xmm0, rdi sqrtsd xmm0, xmm0 cvttsd2si rax, xmm0 ret 但以下内容: uint64_t sqrt_int(uint64_t a) { return sqrt(a); } 编译到: .LCPI0_0: .lon
126 2023-03-22
编程技术问答社区
在Matlab R2014b中用平方根函数和幂的错误
我正在使用SQRT()函数进行一系列计算.我和我的同事注意到,使用相同的输入时,我们会获得不同的结果.有人以前遇到过这个问题吗? 这是一个例子: input1 = 4; input2 = 8; result = sqrt(input1^2 + input2^2) 结果随后显示与我的同事结果不同的值.我们已经联系了有关此问题的Mathworks,但尚未收到答复. 解决方案 我和我的团队一年前遇到了同样的问题. Mathworks解释说,SQRT()函数在添加时具有问题.为了克服此问题并达到相同的结果,请在SQRT()函数外部的每个术语中保持平方: input1 = 4^2; input2 = 8^2; result = sqrt(input1 + input2) 这为我的团队和I. Mathworks解决了问题,但没有澄清问题的原因,但告诉我们他们正在更新其文档(目前还没有看到任何内容).
6 2023-03-21
编程技术问答社区
解决一个简单数学方程的程序
我很难理解Java的语法以及如何使用Java求解数学方程.以下只是简单方程的一个示例.我希望程序能够简单地输出计算结果.如果有人能提供帮助,我将非常感谢! 2.6^22 + 3.9^15 解决方案 另请参阅 import java.awt.*; import java.awt.event.*; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import javax.swing.*; class EvaluateString { public static void main(String[] args) { Runnable r = new Runnable() { @Override public void run(
0 2023-03-20
编程技术问答社区
四舍五入 ** 0.5 和 math.sqrt
在Python中,要么是 n**0.5 # or math.sqrt(n) 认识到一个数字是一个完美的正方形?具体来说,我应该担心当我使用 时 int(n**0.5) # instead of int(n**0.5 + 0.000000001) 由于精确错误,我可能意外最终要比实际的平方根少吗? 解决方案 是的,您应该担心: In [11]: int((100000000000000000000000000000000000**2) ** 0.5) Out[11]: 99999999999999996863366107917975552L In [12]: int(math.sqrt(100000000000000000000000000000000000**2)) Out[12]: 99999999999999996863366107917975552L 显然添加0.000000001在这里也无济于事... @dsm指出,您可以使用 D
4 2023-03-20
编程技术问答社区
整数ceil(sqrt(x))
答案提供以下用于使用Integers计算floor(sqrt(x))的代码.是否可以使用/修改它返回ceil(sqrt(x))?另外,计算此值的首选方法是什么? 编辑:到目前为止,谢谢大家,我很抱歉,我应该更明确地说:我希望有更多的"自然"方法可以使用floor(sqrt(x)),可能是加一个. floor版本使用牛顿的方法从上方接近根,我认为也许从下面接近它或类似方法会解决问题. 例如,答案甚至提供了如何四舍五入到最近的整数:仅输入4*x到算法. 解决方案 如果x是一个精确的正方形,则平方根的天花板和地板相等;否则,天花板比平方根多.因此您可以使用(在Python), result = floorsqrt(x) if result * result != x: result += 1 修改您链接到的代码不是一个好主意,因为该代码使用Newton-Raphson方法的某些属性来计算平方根.关于该方法已经发展了很多理论,并且该代码使用了该理论.我显示的
10 2023-03-20
编程技术问答社区
BigInteger的第N个根
我正在使用一个biginteger对象.使用正常的int或longs,我可以使用Math.pow(数字,1/nth root)获取第n个根.但是,这将无法与BigInteger一起使用.有什么办法可以做到吗? 我实际上不需要根,只是要知道它是否是完美的力量. 我正在用它来弄清楚给定的biginteger是否是一个完美的方形/立方体/等. 解决方案 牛顿的方法与整数非常有效;在这里,我们计算最大的数字 s ,假设这两个 k 和 n 是正: function iroot(k, n) k1 := k - 1 s := n + 1 u := n while u
0 2023-03-20
编程技术问答社区
在Swift中找到平方根的最简单方法?
我一直在试图弄清楚如何在Swift中找到一个数字的平方根.我正在寻找最简单的方法来完成所需的少量代码.我现在这可能很容易完成,但无法找到一种方法. 解决方案 在Swift 3中,FloatingPoint协议似乎具有squareRoot()方法. Float和Double都符合FloatingPoint协议.所以: let x = 4.0 let y = x.squareRoot() 大约很简单. 基础生成的代码应为单个X86机器指令,不跳到函数的地址然后返回,因为这转化为中间代码中内置的LLVM.因此,这应该比调用C库的sqrt函数更快,这确实是一个函数,而不仅仅是汇编代码的宏. 在Swift 3中,您做不是需要导入任何事情以使这项工作. 其他解决方案 请注意,SQRT()将需要至少导入一个: uikit 可可 您只能导入达尔文而不是完整的可可 基金会 其他解决方案 首先导入import UIKit let resul
12 2023-03-20
编程技术问答社区
**(1/2)、math.sqrt和cmath.sqrt之间的区别?
x**(1/2),math.sqrt()和cmath.sqrt()有什么区别? 为什么cmath.sqrt()单独获得二次权利的复杂根?我应该专门将其用于正方形吗?他们在背景上做什么? 解决方案 如果您分别查看CMATH和数学的文档,您会发现: cmath "提供对复数数字的访问权限" > 数学如果您需要支持复数,则来自CMATH模块的同名." (**)操作员地图对于pow函数,pow将其参数转换为float的重要区别. 因此,您可能会看到相同参数的三个函数的不同结果,如在这里.请注意,如果表达式具有真实的解决方案,则math.sqrt返回的值与cmath.sqrt返回的值的实际部分之间将没有区别.但是,如果没有真正的解决方案,您将获得错误的错误. 编辑:正如@jermenkoo指出的那样,由于(**)在python 2和3之间返回的值会有差异,这是由于运算符的工作方式差异.但是,如果您直接使用0.5而不是1/2,那不应引起问题. 其他解决方案
10 2023-03-19
编程技术问答社区
用整数运算计算第N个根
有几种方法可以仅使用整数算术找到整数正方形.例如这个.它使阅读有趣,也是一个非常有趣的理论,尤其是对于我这一代人不再有用的那一代. 最主要的是它不能使用浮点算术,因此将纽顿方法排除在外.我唯一知道的根源是二项式扩展,但这也需要浮点算术. 只有使用整数算术计算积分n根的哪些技术/算法? 编辑:感谢到目前为止的所有答案.他们似乎都更加聪明地试验和改进.没有更好的方法吗? edit2:好的,因此,如果没有试用/改进,纽顿方法或二进制搜索似乎没有明智的方法可以做到这一点.谁能在理论上提供两个的比较?我在两者之间运行了许多基准,并发现它们非常相似. 解决方案 您可以仅使用整数算术使用牛顿的方法,该步骤与浮点算术相同,除非您必须用具有不同语言的相应整数运算符替换浮点运算符, 假设您想找到a > 0的整数,它应该是最大的整数r,以便r^k
2 2023-03-19
编程技术问答社区
计算机是如何计算平方根的?
计算机如何计算平方根? 我的意思是那里发生了什么!它如何处理!! 它是否使用一些数学方法,例如牛顿的方法? 三角功能呢?以及几乎所有这些数学功能. 如果每种语言都有自己的方式,那么请让我们谈谈C ++. 解决方案 大多数现代的非安装CPU(例如,X86和较大的手臂核)具有直接计算方形根的硬件说明.备份这些说明的硬件实现各不相同,但通常是逐数数字算法的变体(尽管并非总是在第二个基础中;也可以使用第四或16个基础).这些通常是CPU上最慢的基本算术操作之一.诸如16-64个周期之类的时间并不罕见,这些说明通常不会管道. 在CPU上缺乏直接硬件平方根指令(Itanium,ppc,其他),典型的方法是生成初始估计值(具有产生估算的指令或使用查找表),然后完善该估计值使用迭代方法(通常是牛顿或Goldschmidt).如果您有兴趣,您可能会追踪一些彼得·马克斯坦(Peter Markstein)或罗杰·戈尔弗(Roger Golliver)的著作. 更复杂的数学函数(例如TRI
2 2023-03-19
编程技术问答社区