小编Rip*_*pi2的帖子

正弦结果取决于使用的C++编译器

我使用以下两个C++编译器:

  • cl.exe:用于x86的Microsoft(R)C/C++优化编译器版本19.00.24210
  • g ++:g ++(Ubuntu 5.2.1-22ubuntu2)5.2.1 20151010

使用内置正弦函数时,我得到不同的结果.这并不重要,但有时结果对我来说太重要了.以下是具有"硬编码"值的示例:

printf("%f\n", sin(5451939907183506432.0));
Run Code Online (Sandbox Code Playgroud)

cl.exe的结果:

0.528463
Run Code Online (Sandbox Code Playgroud)

使用g ++的结果:

0.522491
Run Code Online (Sandbox Code Playgroud)

我知道g ++的结果更准确,我可以使用额外的库来获得相同的结果,但这不是我的观点.我真的明白这里发生了什么:为什么cl.exe错了?

有趣的是,如果我在param上应用(2*pi)的模数,那么我得到的结果与g ++相同...

[编辑]仅仅因为我的例子看起来很疯狂:这是伪随机数生成器的一部分.知道正弦结果是否准确并不重要:我们只需要它给出一些结果.

c++ precision trigonometry

37
推荐指数
3
解决办法
3013
查看次数

Visual Studio:关闭窗口不起作用的快捷方式

我更改了快捷方式以关闭一个窗口到Ctrl+ W并关闭所有窗口到Ctrl+ Shift+ W.关闭所有窗口工作正常,但Ctrl+W选择当前光标下的单词但不关闭窗口.

当我右键单击一个标签时,它表示Ctrl+ W是关闭它的快捷方式(还有Ctrl+ S保存和Ctrl+ Shift+ W关闭全部).为什么只有关闭窗口快捷方式不起作用?

shortcut visual-studio

16
推荐指数
2
解决办法
5032
查看次数

矩阵逆精度

我有一个大世界,大约5,000,000 x 1,000,000单位.相机可以靠近某个物体或足够远,以便看到整个世界.
我通过unprojecting(Z来自深度缓冲区)获得世界坐标中的鼠标位置.问题是它涉及矩阵逆.当使用大数字和小数字(例如,从原点平移并缩放以查看更多世界)时,计算变得不稳定.

试图看到这个逆矩阵的准确性,我看一下行列式.理想情况下,由于转换矩阵的性质,它永远不会为零.我知道,'det'一个小值本身并不意味着它,它可能是由于矩阵中的值很小.但它也可能是数字出错的标志.

我也知道我可以通过反转每个变换并乘以它们来计算逆.它提供更准确吗?

如何判断我的矩阵是否退化,是否存在数值问题?

opengl math matrix

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

语言标准中的 goto 语句

现在大多数人不在goto他们的代码中使用语句。好的。在 SO 中,有许多线程在goto使用,所有线程都“允许”它退出深度循环。

展示一些:

GOTO 仍然被视为有害吗?

使用 goto 有什么问题?

在支持循环和函数的语言中是否存在“goto”的合法用例?

C 或 C++ 中良好的 goto 示例

我查看了cppreference.com,其中显示:

当无法使用其他语句将控制转移到所需位置时使用。

敲响我警钟的是“否则不可能”

goto任何机构都可以举出一些无法避免的例子吗?

注意:我将此问题标记为“C++”,只是因为我对 C++ 示例更感兴趣。任何其他语言对我都有好处。

c++ language-agnostic goto

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

创建与半径为 r [几何] 的两条线相切的圆

我想在两条线之间放置一个圆但是,我只想使用一条线来创建圆。所以我的方法是选择第 1 行上的点。对于第 1 行上的每个点:我想创建半径增加的圆,这些圆与线上的点 1 相切。增加半径,直到圆也与另一条线相交。之后以较小的步长减小半径,直到圆与两条线相切。继续第 1 行的下一个点。

不知何故,我无法找到一个干净清晰的代码来做到这一点。线上的点可以使用 line.arbitrary_point 来完成。如何创建一个半径为 R 的圆到点 p1 以便它以最佳方式相切?

谢谢!

geometry lines sympy

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