标签: modulo

你如何计算浮点数的div和mod?

在Perl中,%运算符似乎采用整数.例如:

sub foo {
    my $n1 = shift;
    my $n2 = shift;
    print "perl's mod=" . $n1 % $n2, "\n";
    my $res = $n1 / $n2;
    my $t = int($res);
    print "my div=$t", "\n";
    $res = $res - $t;
    $res = $res * $n2;
    print "my mod=" . $res . "\n\n";
}   

foo( 3044.952963, 7.1 );
foo( 3044.952963, -7.1 );
foo( -3044.952963, 7.1 );
foo( -3044.952963, -7.1 );
Run Code Online (Sandbox Code Playgroud)

perl's mod=6
my div=428
my mod=6.15296300000033

perl's mod=-1
my …
Run Code Online (Sandbox Code Playgroud)

math floating-point perl division modulo

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

高效(循环)算法计算模25?

我有一个代码,我在其中计算x%25.x总是取正值但其动态范围很大.

我发现这个计算轴%25的特殊代码片段需要大周期.我需要优化它.

由于表可能存在大的内存大小,因此排除了预先计算的查找表.

作为第二种方法,我在下面编码了一个片段(C代码) -

mod(a, b)
{   
    int r = a;  
    while(r >= b)
    {      
        r = r - b;
    }   
    return r;
}
Run Code Online (Sandbox Code Playgroud)

1.)如何针对周期进一步优化此代码(将其压缩到最大值)?

2.)是否有任何完全不同的优化方式来实现x%25(我知道它不是一个常见的操作,但仍然,寻找人们可能在他们的经验中使用的聪明输入,这可能会让我感到麻烦.).

谢谢.

-广告

编辑:

我认为在C中使用本机模运算符%,内部使用除法运算(/),这在我正在使用的处理器上是昂贵的.(没有div指令).因此,尝试查看自定义实现是否可以使用%运算符击败固有计算.

-广告

c optimization modulo

10
推荐指数
7
解决办法
1万
查看次数

Cube root modulo P - 我该怎么做?

我试图在Python中计算数百个数字模P的立方根,并且失败了.

我找到了Tonelli-Shanks算法的代码,据说这个算法从平方根到立方根都很容易修改,但这让我望而却步.我搜索过网络和数学图书馆以及一些书都无济于事.代码会很精彩,算法也会用简单的英语解释.

这是用于查找平方根的Python(2.6?)代码:

def modular_sqrt(a, p):
    """ Find a quadratic residue (mod p) of 'a'. p
        must be an odd prime.

        Solve the congruence of the form:
            x^2 = a (mod p)
        And returns x. Note that p - x is also a root.

        0 is returned is no square root exists for
        these a and p.

        The Tonelli-Shanks algorithm is used (except
        for some simple cases in which the solution
        is known from an identity). This algorithm
        runs in …
Run Code Online (Sandbox Code Playgroud)

python algorithm rsa modulo public-key-encryption

10
推荐指数
1
解决办法
5786
查看次数

使用模运算符保持容器的索引

假设我有一个向量v,其中包含m个元素,以及一个名为i的向量的随机访问索引.

当我增加索引时,如果它超出范围,我想索引第一个(第零个)元素.类似地,当我递减索引时,如果索引<0,我想索引到最后一个元素.目前我只是在容器中移动一个元素,所以想出了这个函数:

unsigned int GetIndexModM(int index,unsigned int m) {return (index + m) % m;}
Run Code Online (Sandbox Code Playgroud)

呼叫站点可能如下所示:

std::vector<Whatever> v = ... // initialise with 5 elements
unsigned int i = 0;
unsigned int j = GetIndexModM(static_cast<int>(i) - 1,v.size()); // get preceeding index
Run Code Online (Sandbox Code Playgroud)

如果从索引中减去> m的值,则此函数将失败:

unsigned int j = GetIndexModM(static_cast<int>(i) - 17,v.size()); // oops: returns -2
Run Code Online (Sandbox Code Playgroud)

我的问题:什么是一个函数最优雅的实现,它接受任何整数并将其作为索引返回?

c++ math modulo

10
推荐指数
1
解决办法
2317
查看次数

为什么在java src中的Integer类的toString方法中使用负int进行mod操作

当我读到java版本1.7.0_09的源代码时,我发现Integer类的toString方法的实现使用了负int来计算mod操作,有什么意义吗?代码如下:

public static String toString(int i, int radix) {

    if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX)
        radix = 10;

    /* Use the faster version */
    if (radix == 10) {
        return toString(i);
    }

    char buf[] = new char[33];
    boolean negative = (i < 0);
    int charPos = 32;

    if (!negative) {     
        i = -i;                //***** change i to negative
    }

    while (i <= -radix) {
        buf[charPos--] = digits[-(i % radix)];   //***** change back to positive after 
                                                 //***** mod operation …
Run Code Online (Sandbox Code Playgroud)

java tostring modulo

10
推荐指数
1
解决办法
421
查看次数

PHP模数十进制

我怎么能用十进制值进行模运算,因为PHP只能用整数模数?

示例案例:

 echo 1.92 % 1000; // (int) 1, expected result should be 1.92
Run Code Online (Sandbox Code Playgroud)

有没有正确的库?

有关此模数算术问题的更多信息:https://bugs.php.net/bug.php?id = 34399

php decimal modulo

10
推荐指数
2
解决办法
4355
查看次数

iOS目标-C:在浮点数上使用modulo从英尺得到"英寸"

我正在尝试制作一个简单的物镜-C高度转换器.输入是一个脚的(浮点)变量,我想转换为(int)feet和(float)inches:

float totalHeight = 5.122222;
float myFeet = (int) totalHeight; //returns 5 feet
float myInches = (totalHeight % 12)*12; //should return 0.1222ft, which becomes 1.46in
Run Code Online (Sandbox Code Playgroud)

但是,我不断从xcode获得错误,我意识到模运算符只适用于(int)和(long).有人可以推荐一种替代方法吗?谢谢!

c objective-c modulo ios

10
推荐指数
1
解决办法
7425
查看次数

如何以交替顺序在 R 中使用矢量化函数?

假设我有一个x包含n元素的向量。我想使用任何矢量化函数,比如说cumprod,在 的每个备用数上x,即每 1、3、5 等等,以及 2、4、6 等等。我正在添加一个 reprex 并尝试了代码。该代码有效,但似乎我不必要地走了很长的路,并且可以缩短代码。是真的吗?

x <- 5:14

cumprod((x * (seq_along(x) %% 2)) + (seq_along(x)-1) %% 2) * seq_along(x) %% 2 +
  cumprod((x * ((seq_along(x)-1) %% 2)) + seq_along(x) %% 2) * (seq_along(x)-1) %% 2
#>  [1]     5     6    35    48   315   480  3465  5760 45045 80640
Run Code Online (Sandbox Code Playgroud)

这里cumprod只是一个示例函数。我可能还必须以交替顺序使用其他功能。

r sequence modulo

10
推荐指数
4
解决办法
566
查看次数

Objective-C中的模运算符返回错误的结果

当我在Objective-C中进行模运算时,我得到的结果让我有点吓坏了.-1%3现在是-1,这不是正确的答案:根据我的理解,它应该是2. -2%3出现-2,这也是不对的:它应该是1.

除了%运算符之外,我还应该使用另一种方法来获得正确的结果吗?

math objective-c modulo

9
推荐指数
1
解决办法
7554
查看次数

模数运算符使用前导零给出不同的结果

为什么:

int test() {
    return 00101 % 10;
}
Run Code Online (Sandbox Code Playgroud)

返回5,同时:

int test() {
    return 101 % 10;
}
Run Code Online (Sandbox Code Playgroud)

回来了1?我想不出一个解释.

c++ modulo

9
推荐指数
2
解决办法
453
查看次数