问题标签 [numerics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C ++,链接顺序是否标准化?
在我的 linux 机器上,我有 2 个库:
它们都包含一个实现
我的主程序调用 foo:
我使用 g++ 以两种方式编译了程序
当我运行程序时,a1 显然使用了 libfoo1.a 中的 foo() 实现,而 a2 显然使用了 libfoo2。也就是说,g++ 链接了它首先看到的任何 foo() 。
我的问题(最后)是,这种“贪婪”链接策略实际上是在 C++ 标准中指定的吗?或者不同的编译器/平台会以实现定义的方式表现不同吗?
PS:把这个问题放在实际的上下文中,我真的很喜欢这个 g++ 示例的工作方式。在我的实际应用程序中,我有一个旧版 libfoo2,它实现了许多(很多!)功能,但我想在 libfoo1 中为其中的少数提供新的实现。一方面,我可以在 libfoo1 中编写一个全新的接口,实现我的少数,然后将其余部分委托给 libfoo2。但是,如果我可以依靠链接器为我完成它(即使对于像 icc 这样的非 g++ 编译器),我宁愿避免编写所有委托代码。
PPS:把它放在真正的实际上下文中,libfoo2 是 blas,而 libfoo1 是它的一些例程的自制 OpenMP 实现。我还没准备好为 MKL 掏腰包。ATLAS 不会对我要调用的函数进行多线程处理。它非常擅长多线程 GEMM,但我需要一些来自 LAPACK 的更奇特的例程也很快(zsptrf / zsptrs / zspr)。看来,我对这些例程的缓存无知 OpenMP 实现比它的缓存调整顺序实现做得更好。
对不起,帖子的长度。
c++ - std::valarray 的未来会是什么样子?
直到最近,我还没有跟上 C++11 的讨论。当我尝试更熟悉它和正在解决的问题时,我遇到了这个似乎提倡弃用或删除的网站,std::valarray
因为大多数人都在使用Blitz++。我想我可能是少数仍在使用的人之一std::valarray
(是的,我知道这门课有一个肮脏的过去,一个玷污的现在和一个可疑的未来)。但是,它可以满足我的需要,也许更重要的是,它是标准的一部分(现在无论如何)。
除了上面的一个站点之外,我几乎找不到关于std::valarray
新标准中实际发生的事情的信息,并希望 SO 上的某个人能够提供一些见解和/或参考资料,其中谷歌、维基百科和到目前为止,甚至C++ 标准委员会网站也让我失望了。谢谢。
licensing - 公共领域或无二进制属性 FFT Lib?
我正在寻找一个 FFT 库来翻译成 D 编程语言,以便包含在我正在研究的库中或(更好)标准库中。我需要一个相当简单且性能良好的 FFT,而不是一个具有极快性能和零简单性/可读性的超级优化的 FFT。但是,它必须满足以下要求:
要么用纯 D 编写,要么简单到可以合理地翻译成纯 D。例如,没有任何内联汇编程序或预处理器滥用的可读 C 代码将起作用。(我知道你可以从 D 调用 C,但我有我不想这样做的理由。)
根据免费/开源、非 Copyleft(即不是 GPL)的条款获得许可,并且不需要对仅二进制分发(即不是 BSD)的归属。可接受的许可证包括 Boost、zlib 和公共领域。
代码必须足够可读,以便我可以明智地修改它,给它一个漂亮的 D 接口。我不想要 70 年代的超级优化但不可读的 Fortran 代码,不管它工作得多么好。我也不想要从超级优化的 Fortran 代码翻译的 C 代码,看起来像 Fortran 代码。
请不要推荐 FFTW,不管它有多好(我理解它非常好),因为它是 GPL 许可的,并且是为了性能而不是简单而编写的。
matlab - matlab cell2mat( ... ) 函数与具有一堆稀疏矩阵的单元格数组意外溢出内存
我对使用 Matlab 和 cell2mat() 函数的内存有奇怪的行为......
我想做的是:
但是,唉,由“DOH”指示的行使用了一些荒谬的内存量,超过了将稀疏矩阵的大小加起来应该得到的内存......就像它制作了一个太大的中间结构。
以下工作正常,但双索引不适用于 par-for 所以我只能使用一个核心:
我的怀疑是,在后一种情况下,每个单元元素的大小更易于管理......就像一个 20,000x1 稀疏矩阵,但在前者中,那些“外部”元素现在是 20,000 x 5,000 并且不知何故不适合 Matlab 想要的地方将它们作为临时变量,尽管它们非常稀疏,但内存使用会失控。
关于内存使用和上述内容有什么要遵循的规则吗?或者如何更改我的 parfor 使用,以便在第二种情况下运行?“parfor”是一种新事物,因此网络上关于它的内容比其他核心功能要少……它比运行 8 个 matlab 副本效率更高!
c# - 在 .NET 中使用十进制或十六进制基数
早上好,下午或晚上,
预警:我知道这听起来像是我试图进行过早的优化,但我向你保证我不是。也就是说,如果您想尽您的能力而不向我指出有关“过早优化”的链接,请回答这个问题。
使用以 10 为基数和以 16 为基数的常量,是否可以注意到大量重复操作的性能差异?我看到人们在写
很多而不是
这表明他们要么来自 C/C++ 背景,要么他们可能认为运算执行得更快(而且我不仅在谈论按位运算)。C# 编译器不是将所有常量都转换为相同的基数吗?或者在编写代码时使用基数 16 比基数 10 有什么优势吗?
非常感谢,
c - 取 C 中两个有符号数的平均值
假设我们有 x 和 y 并且两者都是 C 中的有符号整数,我们如何找到两者之间最准确的平均值?
我更喜欢不利用任何机器/编译器/工具链特定工作的解决方案。
我想出的最好的是:(a / 2) + (b / 2) + !!(a % 2) * !!(b %2)
有没有更准确的解决方案?快点?更简单?
如果我们先验地知道一个比另一个大怎么办?
谢谢。
D
编者注:请注意,当输入值接近 Cint
类型的最大绝对界限时,OP 期望答案不会出现整数溢出。这在原始问题中没有说明,但在给出答案时很重要。
java - 用于数字运算的 Java 资源?
使用 Java 学习“数字运算”的最佳资源是什么?我指的是诸如十进制数字处理的正确方法、最佳实践、API、性能方面的著名习语和使用 Java 进行数字处理编码时的常见缺陷(及其解决方案)。
wolfram-mathematica - Mathematica 的库函数能力
我正在尝试将 CUSP 用作 Mathematica 的外部线性求解器,以利用 GPU 的强大功能。这是CUSP 项目网页。我正在寻求一些建议,我们如何将 CUSP 与 Mathematica 集成。我相信在座的许多人都会有兴趣讨论这个问题。我认为编写一个输入矩阵然后将其提供给 CUSP 程序不是要走的路。使用 MathematicaLibrarayFunctionLoad
将是一种将输入矩阵动态流水线到基于 GPU 的求解器的更好方法。直接从 Mathematica 提供矩阵和右侧矩阵的方法是什么?
这是一些 CUSP 代码片段。
这个问题让我们有机会讨论 Mathematica 8 的编译能力。也可以调用 MMA 的 mathlink 接口的话题。我希望这里的人们发现这个问题值得思考并且足够有趣。
BR
visual-studio - Visual Studio 2010 - .Net Framework 4 控制台应用程序
基本上,我已将 System.Numerics 引用添加到我的项目中,并将其添加到我的 using 语句中,如下所示:
但是,我收到以下错误:
希望这是一个简单的!
谢谢
c - C 只输入小数
我试图在一个简单的 C 应用程序中将输入限制为仅数字,但是我收到了警告。我怀疑这与以下部分有关。第一版是正确的做事方式吗?谢谢。
或者
我的其余代码是
为了澄清,我必须根据我正在做的练习以给出的方式进行检查。谢谢。