小编crb*_*bah的帖子

matlab和c ++中的精度差异

我试图对用C++和Matlab编写的算法进行等价测试.该算法包含某种循环,运行时间超过1000次.它具有算术运算和一些数学函数.

我手动将初始输入馈送到两个平台(如a = 1.767,b = 6.65,...),当我检查这些输入的十六进制表示时,它们是相同的.所以输入没问题.并通过一个带有16位十进制数字的文本文件将c ++的输出输出到matlab.(我使用"setprecision(32)"声明)

但问题出在这里; 虽然在两个代码的第614步之后,所有的结果都完全相同,在615的步骤中我得到了关于2.xxx..xxe-19的差异?在此步骤之后,错误变得越来越大,并且在运行结束时它大约是5.xx..xxe-14.

0x3ff1 3e42 a211 6cca ---> [C++函数] ---> 0x3ff4 7619 7005 5a42

0x3ff1 3e42 a211 6cca ---> [MATLAB函数] ---> ans

ans - 0x3ff4 7619 7005 5a42

= 2.xxx..xxe-19

我搜索了matlab如何表现数字并发现了非常有趣的东西,比如"非规范化的尾数".虽然realmin是关于e-308的,但通过对尾数进行非规范化,matlab具有关于e-324的最小实数.进一步的matlab比"c ++"拥有更多的"pi"或"exp(1)"数字.

另一方面,matlab帮助说无论它显示什么格式,matlab都在内部使用双精度.

所以,如果有人解释这些差异的确切原因,我真的很感激?我们如何在matlab和c ++上进行等价测试?

c++ floating-point precision matlab

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

为什么在使用赋值时不为堆栈变量调用析构函数?

这个愚蠢的代码剪断已经花了我 2 个小时,我不明白为什么第一个元素的析构函数,大小为 7 的元素没有被调用?分配给 的内存会发生什么new uint16_t[7]

#include <iostream>

using namespace std;

struct Node
{
    Node(uint16_t n) : p(new uint16_t[n]) {
        cout<<"Constructed with size= "<<n<<", memory addr: "<<(p)<<endl;
        for(uint16_t i=0; i<n; i++) p[i] = n;
    }

    ~Node() {
        cout<<"Destructor for p[0] = "<< *p <<" with memory addr: "<<p<<endl;
        delete[] p;
    }

    uint16_t *p;
};

int main()
{
    {
        Node nd1(7);
        {
            nd1 = Node(3);
            cout << "1st place holder" << endl;
        }
        cout << "2nd place holder" …
Run Code Online (Sandbox Code Playgroud)

c++ destructor

3
推荐指数
1
解决办法
68
查看次数

如果scrum团队成员意识到他误解了他的日常工作,会怎么做?

多年来,我一直参与由瀑布或V模型框架管理的项目.有一段时间我正在阅读敏捷方法论,主要是scrum,并获得关于冲刺,每日会议,燃尽图等的意见.然而,我读到的所有文章都描述了一切顺利时的方法.

上周,我在接受采访时无法回答一个坏的问题:

如果您发现在每日早晨会议中误解了您的日常工作,该怎么办?或者,您发现自己处于一种您不了解日常工作要求的情况,您会做什么?

我只能说; 我不知道,但那天我不会燃烧.也许和scrum大师交谈并要求再次聚集团队?

在这种情况下,scrum开发人员团队成员应该做些什么?

编辑:

Scrum主管有许多失败场景(激励团队成员,与客户沟通,冲刺失败等),但我找不到scrum团队成员的失败案例.

agile project-management scrum

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