我在Haskell中创建了一个函数,它只将列表中的evens减半,我遇到了问题.当我运行编译器时,它抱怨你不能执行int的划分,并且我需要一个小数int类型声明.我已经尝试将类型声明更改为float,但这只是生成了另一个错误.我已经在下面包含了该函数的代码,并希望获得任何形式的帮助.
halfEvens :: [Int] -> [Int]
halfEvens [] = []
halfEvens (x:xs) | odd x = halfEvens xs
| otherwise = x/2:halfEvens xs
Run Code Online (Sandbox Code Playgroud)
谢谢你的阅读.
x86 和可能的其他体系结构提供了一种在单个操作 ( DIV)中获取商和余数的方法。因此,许多语言都有 DIVMOD 组合操作(例如DIVREMC#、DIVMODPython或C 中的divanddiv_t)。我如何在 Rust 中做到这一点?
有没有一种优化方法可以同时执行这两种操作
let res = (a / b, a % b);
Run Code Online (Sandbox Code Playgroud) 在我正在编写的软件中,我正在进行数百万乘法或除以2(或2的幂)的值.我真的希望这些值int能够访问bitshift运算符
int a = 1;
int b = a<<24
Run Code Online (Sandbox Code Playgroud)
但是,我不能,而且我必须坚持双打.
我的问题是:由于存在双精度(符号,指数,尾数)的标准表示,是否有一种方法可以与指数一起使用以2的幂来获得快速乘法/除法?
我甚至可以假设位数将被修复(该软件将在总是具有64位长的双倍的机器上工作)
PS:是的,该算法主要只执行这些操作.这是瓶颈(它已经是多线程的).
编辑:或者我完全错了,聪明的编译器已经为我优化了一些东西?
临时结果(用Qt测量时间,矫枉过正,但我不在乎):
#include <QtCore/QCoreApplication>
#include <QtCore/QElapsedTimer>
#include <QtCore/QDebug>
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
while(true)
{
QElapsedTimer timer;
timer.start();
int n=100000000;
volatile double d=12.4;
volatile double D;
for(unsigned int i=0; i<n; ++i)
{
//D = d*32; // 200 ms
//D = d*(1<<5); // 200 ms
D = ldexp (d,5); // 6000 ms
} …Run Code Online (Sandbox Code Playgroud) 我正在使用AndEngine向屏幕添加精灵,并使用movemodifier方法.
我有两个整数MaxDuration和MinDuration;
我想要做的是当用户获得某个增量的分数时.
例如..当用户达到40(整数变化)时用户达到20(整数变化).所以基本上按20计算,每次得分满足一个可被20整数变化整数的数字.我希望这是有道理的.
有没有什么方法或方法可以做到这一点?我有一个UpdateTime处理程序,几乎每秒都可以检查得分.
有任何想法吗?
我已经制作了一个程序来划分数字,然后返回数字,但问题是,当它返回数字时,它有一个像这样的小数:
2.0
Run Code Online (Sandbox Code Playgroud)
但我希望它能给我:
2
Run Code Online (Sandbox Code Playgroud)
所以我还能这样做吗?
提前致谢!
我从汇编中记得整数除法指令同时产生商和余数.因此,在python中,内置的divmod()函数比使用%和//运算符更好地表现性能(假设当然需要商和余数)?
q, r = divmod(n, d)
q, r = (n // d, n % d)
Run Code Online (Sandbox Code Playgroud) 我想实现的无符号一整数除法通过两个任意功率,围捕,高效.所以我想要的,数学上是ceiling(p/q)0.在C中,不利用受限域的strawman实现q可能类似于以下函数1:
/** q must be a power of 2, although this version works for any q */
uint64_t divide(uint64_t p, uint64_t q) {
uint64_t res = p / q;
return p % q == 0 ? res : res + 1;
}
Run Code Online (Sandbox Code Playgroud)
...当然,我实际上并不想在机器级别使用除法或mod,因为即使在现代硬件上也需要很多周期.我正在寻找使用轮班和/或其他一些廉价操作的力量减少 - 利用q2的力量这一事实.
You can assume we have an efficient lg(unsigned int x) function, which returns the base-2 log of x …
gcc SIGFPE为以下代码生成浮动代码:
#include <limits.h>
int x = -1;
int main()
{
return INT_MIN % x;
}
Run Code Online (Sandbox Code Playgroud)
但是,我在标准中找不到此代码调用未定义或实现定义的行为的语句.据我所知,它需要返回0.这是gcc中的错误还是我错过了标准的一些特殊例外?
我发现div和之间存在一种非常奇怪的不一致/.
*ghci> :t 1 `div` 0
1 `div` 0 :: Integral a => a
*ghci> :t 1 / 0
1 / 0 :: Fractional a => a
*ghci> 1 / 0
Infinity
*ghci> 1 `div` 0
*** Exception: divide by zero
Run Code Online (Sandbox Code Playgroud)
我很惊讶地注意到零除以零导致Infinity,而div正确导致异常.A NaN也可以接受/,但为什么Infinity呢?这样的结果没有数学上的理由.你知道原因吗?
我有一个叫做的类Time,我需要实现一个Frequency类.如何通过实例来实现划分ints或floats Time来获取实例Frequency?
我已经知道__div__,__truediv__,__floordiv__和其他的Python特殊方法,我已经使用他们在我的代码用数字或其他类的实例来划分的类的实例,但我不能找到一种方法,通过我的类的实例来划分的数字.
是否可以通过Python中的类实例来划分数字?