标签: square-root

使用x86汇编Forth的平方根函数?

我对汇编知之甚少,但我很确定x86上有平方根说明吗?我试图让一个平方根函数在泡沫中运行良好,而且当我运行多次时,我发现的那个函数陷入了困境.

: sqrt-closer ( square guess -- square guess adjustment)
2dup / over - 2 /
;

: sqrt ( square -- root )
1 begin
sqrt-closer dup
while + repeat
drop nip ;
Run Code Online (Sandbox Code Playgroud)

assembly forth square-root

6
推荐指数
2
解决办法
3439
查看次数

以代数方式简化平方根

我想用代数方式简化整数的平方根,而不是用数字计算它,即√800应该是20√2,而不是28.2842712474619.

我找不到任何方法通过编程来解决这个问题:(

c c++ algorithm square-root

6
推荐指数
1
解决办法
2562
查看次数

使用位移找到整数平方根的最快方法是什么?

我一直在寻找计算数字(整数)的平方根(整数)的最快方法.我在维基百科中遇到了这个解决方案,它找到了一个数字的平方根(如果它是一个完美的正方形)或者它最近的下方完美正方形的平方根(如果给定的数字不是一个完美的正方形:

short isqrt(short num) {
    short res = 0;
    short bit = 1 << 14; // The second-to-top bit is set: 1L<<30 for long
    // "bit" starts at the highest power of four <= the argument.
    while (bit > num)
        bit >>= 2;
    while (bit != 0) {
        if (num >= res + bit) {
            num -= res + bit;
            res = (res >> 1) + bit;
        }
        else
            res >>= 1;
        bit >>= 2;
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

我尝试了很多测试运行来跟踪算法,但我似乎并不理解里面的部分 …

bit-shift square-root memory-efficient

6
推荐指数
1
解决办法
4162
查看次数

如何在Clojure中正确使用"iterate"和"partial"?

大多数参考iterate是针对运算符的,并且函数上的所有应用程序都是如此令人困惑,以至于我仍然无法iterate在代码中使用它,以及它是什么partial.

我正在编写一个编程作业,尝试使用牛顿的方法得到数字n的平方根.也就是说,将猜测作为初始近似值,通过计算近似值和n /近似值的平均值来保持计算新的近似值.继续,直到两个最近的近似值之间的差异小于epsilon.

我首先尝试做近似部分,我相信这是我需要使用迭代和部分.后来epsilon是我需要用"拿"的东西?

这是我没有epsilon的近似代码:

(defn sqrt [n guess]
  (iterate (partial sqrt n) (/ (+ n (/ n guess)) 2)))
Run Code Online (Sandbox Code Playgroud)

这段代码不能正常工作,当我进入时(sqrt 2 2),它给了我(3/2 user=> ClassCastException clojure.lang.Cons cannot be cast to java.lang.Number clojure.lang.Numbers.divide (Numbers.java:155).

我想这是我需要反复迭代的部分?有人可以给我一些提示吗?再次,这是一个家庭作业问题,所以请不要直接解决整个问题,我需要一些我可以学习的想法和解释.

functional-programming clojure square-root

6
推荐指数
1
解决办法
1019
查看次数

为什么我对CUDA数学库sqrt()函数的调用失败了?

我是Cuda的新手,我有以下功能:

__global__ void square(float *myArrayGPU)
{
   myArrayGPU[threadIdx.x] = sqrt(threadIdx.x);
}
Run Code Online (Sandbox Code Playgroud)

我想使用cuda数学库,我试过,#include "math.h"但我仍然得到错误

error: calling a __host__ function("__sqrt") from a __global__ function("square") is not allowed

知道我应该包含哪些库来使用sqrt

c c++ math cuda square-root

6
推荐指数
2
解决办法
1万
查看次数

一种计算任意大整数的整数平方根(isqrt)的有效算法

注意

对于Erlang或的解决方案C / C++,请转到下面的试验4.


维基百科文章

整数平方根

  • "整数平方根"的定义可以在这里找到

计算平方根的方法

  • 可以在这里找到做"魔术"的算法

[试验1:使用库功能]

isqrt(N) when erlang:is_integer(N), N >= 0 ->
    erlang:trunc(math:sqrt(N)).
Run Code Online (Sandbox Code Playgroud)

问题

此实现使用sqrt()C库中的函数,因此它不适用于任意大整数(请注意,返回的结果与输入不匹配.正确的答案应该是12345678901234567890):

Erlang R16B03 (erts-5.10.4) [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.4  (abort with ^G)
1> erlang:trunc(math:sqrt(12345678901234567890 * 12345678901234567890)).
12345678901234567168
2> 
Run Code Online (Sandbox Code Playgroud)

[试验2:+仅使用Bigint ]

isqrt2(N) when erlang:is_integer(N), N >= 0 ->
    isqrt2(N, 0, 3, 0).

isqrt2(N, I, _, Result) when I >= N ->
    Result;

isqrt2(N, …
Run Code Online (Sandbox Code Playgroud)

algorithm erlang biginteger bigint square-root

6
推荐指数
1
解决办法
4744
查看次数

整数ceil(sqrt(x))

回答给出了计算下面的代码floor(sqrt(x))只使用整数.是否可以使用/修改它来返回ceil(sqrt(x))?或者,计算这种价值的首选方法是什么?

编辑:谢谢大家到目前为止我道歉,我应该让它更明确:我希望有更多的"自然"方式来做这个使用floor(sqrt(x)),可能加一个.该floor版本使用牛顿的方法从上面接近根,我认为可能从下面接近它或类似的做法.

例如,答案甚至提供了如何舍入到最接近的整数:只输入4*x算法.

math integer square-root

6
推荐指数
1
解决办法
449
查看次数

位移平方根

我正在通过位移来研究快速平方根算法。我被维基百科的代码困住了。

short isqrt(short num) {
    short res = 0;
    short bit = 1 << 14; // The second-to-top bit is set: 1L<<30 for long

    // "bit" starts at the highest power of four <= the argument.
    while (bit > num)
        bit >>= 2;

    while (bit != 0) {
        if (num >= res + bit) {
            num -= res + bit;
            res = (res >> 1) + bit;
        }
        else
            res >>= 1;
        bit >>= 2;
    }
    return res;
}
Run Code Online (Sandbox Code Playgroud)

我知道它可以产生正确的结果,但它是如何做到的?我对这句话特别迷惑,res …

bit-shift square-root

5
推荐指数
0
解决办法
1万
查看次数

找到小于n的最大平方数的算法

如何有效地找到小于给定 int 的最大平方数(即 4、9、16)n?我有以下尝试:

int square = (int)Math.sqrt(number);
return square*square;
Run Code Online (Sandbox Code Playgroud)

但它显然效率低下,无法获得平方根,以便我们可以对其进行平方。

java algorithm math square-root

5
推荐指数
1
解决办法
6272
查看次数

快速整数平方根近似

我目前正在寻找一个非常快的整数平方根近似值,其中 floor(sqrt(x)) <= veryFastIntegerSquareRoot(x) <= x

平方根例程用于计算素数,如果仅sqrt(x)检查小于或等于 的值是否为 的除数,则计算速度会快得多x

我目前拥有的是来自 Wikipedia 的这个函数,稍微调整了一下以使用 64 位整数。

因为我没有其他函数可以比较(或者更准确地说,该函数对于我的目的来说太精确了,而且它可能需要更多的时间,而不是高于实际结果。)

c square-root

5
推荐指数
2
解决办法
6267
查看次数