问题标签 [multiprecision]

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.

0 投票
2 回答
1099 浏览

c++ - C ++中的十六进制字符串算术

我想用表示为字符串的 64 位十六进制数字进行基本算术(加法、减法和比较)。例如

"ffffa"+"2" == "ffffc"

由于此类数字的二进制表示需要 256 位,因此我无法将字符串转换为基本整数类型。一种解决方案是使用gmp,或者boost/xint它们对于这个简单的功能来说太大了。

有没有可以帮助我的轻量级解决方案?

0 投票
1 回答
272 浏览

arbitrary-precision - 从 CAMPARY 输出值

我正在尝试使用CAMPARY库(CudA 多精度算术库)。我已经下载了代码并将其包含在我的项目中。由于它同时支持 cpu 和 gpu,我从 cpu 开始了解它是如何工作的,并确保它能够满足我的需求。但目的是将其与 CUDA 一起使用。

我能够实例化一个实例并分配一个值,但我不知道如何让事情恢复原状。考虑:

编译、链接、运行(VS 2017)。但是输出非常无用:

像这样打印每个双精度数可能很容易,但它并不能告诉您存储的 128 数字的值。如果无法输出结果,那么执行高精度计算的价值是有限的。

除了打印出值之外,最终我还需要将这些数字转换为整数(如果有打印方法,我愿意在浮点数中全部尝试,但我担心准确性和速度都会受到影响)。与MPIR(不支持 CUDA)不同,CAMPARY 没有任何关联的多精度 int 类型,只有浮点数。我可能可以拼凑出我需要的东西(主要是加/减/比较),但前提是我可以取出 CAMPARY 值的整数部分,我看不出有什么办法。

CAMPARY 似乎没有任何文档,因此可以想象这些功能在那里,而我只是忽略了它们。我宁愿在 CAMPARY 讨论论坛/邮件列表上询问,但似乎没有。这就是我在这里问的原因。

总结一下:

  1. 有什么方法可以multi_prec<2>从 CAMPARY 输出 128bit ( ) 值吗?
  2. 有没有办法从 CAMPARY multi_prec 中提取整数部分?也许我不理解的库中的(许多)数学函数之一计算了这个?
0 投票
0 回答
126 浏览

matlab - 如何在 Matlab 中使用带 normcdf 的多精度计算工具箱

我和这里有同样的问题https://comp.soft-sys.matlab.narkive.com/HV95Az6b/how-to-compute-the-normal-cumulative-probability-at-extremely-precision

我下载了包https://www.advanpix.com/documentation/users-manual/ 并且知道如何在一个简单的表达式中使用它

但是我不知道如何使用这个mp。在 normcdf 函数上,我尝试编辑以下代码中的最后一行表达式,但仍然可以解决。

在 0.5 之后添加 mp() 不起作用,也许我还应该编辑 erf 的源代码(或者,编写我自己的 erf)?

提前致谢!

0 投票
0 回答
51 浏览

c++ - VS 2019 社区中的 Boost Multiprecision bad_lexical_cast 链接器错误

我正在尝试将 Boost Multiprecision 库用于 ccp_dec_float 并且在尝试运行它时遇到了一些严重的问题。我一直收到一个链接器错误,上面写着:

所有这一切都在尝试从 boost 网站运行示例代码时:https ://www.boost.org/doc/libs/1_70_0/libs/multiprecision/doc/html/boost_multiprecision/tut/floats/cpp_dec_float.html 。

具体来说:

我已经完成了在 vs 2019 中构建库并链接包含和库文件夹的过程,似乎找不到任何特定于此错误的内容。有任何想法吗?

0 投票
1 回答
385 浏览

c++ - 使用 192/256 位整数对无符号 64 位整数向量的点积求和的最快方法?

我需要计算两个向量的点积:uint64_t a[N], b[N];( N<=60) 包含 64 位无符号整数。正是这个循环:

ans将溢出,因此结果必须保存在一个宽整数中,如 256 位。但是由于 N<=60 我们可以将结果保持在 160 (64*2 + 32) 位整数中。

缓慢的解决方案:

  1. 手动处理溢出:

这很慢,因为添加if会使程序减慢〜 2.2 倍。

  1. 使用类库boost::multiprecision::uint256_t或 GMP。

可能快速的解决方案:如果我们在 64 位机器上使用汇编编程,那么可以使用 3 个 64 位寄存器执行加法,方法是使用后add跟从低位到高位。adcadc

但我不想求助于 ASM,因为它很难维护,而且不便携。

我的目标是让它快速且可维护。

编辑:彼得在他的评论中指出,clang 支持我adc在 gcc 仍然使用分支时使用的想法(手动处理溢出)。

0 投票
1 回答
72 浏览

python - python mpmath nstr 不带零

如何让 pythonmpmath.nstr函数保留所有尾随零mpmath.mpf('0')?看起来strip_zeros可选参数不起作用mpmath.mpf('0'),如下例所示:

0 投票
0 回答
29 浏览

r - 如何表达极低的数字

我们如何正确计算以下内容?

这将使我们0进入logp=-600. 我们可以处理这个问题吗?

0 投票
1 回答
50 浏览

r - 尝试使用 as.binary 将大整数转换为二进制

我有需要转换为二进制的大整数,但我不断收到以下警告消息:

警告信息:

  1. h(num):模数 2 中可能完全丧失精度:
  2. In diff(x%%2^(num_digits:0)): 模数精度可能完全丧失

我发现这是因为将数字转换为二进制本质上只是除以二并确定是否有余数很多次,并且 R 具有它能够使用的最大位数而不会丢失信息结束。关于如何解决这个问题的任何建议?

示例代码:

library(binaryLogic)

as.binary(13256712356712312361)

警告信息:

  1. In h(num): 模数精度可能完全丧失
  2. In diff(x%%2^(num_digits:0)): 模数精度可能完全丧失
0 投票
1 回答
49 浏览

boost - 如何检查/转换 boost::multiprecision::cpp_dec_floa 是否可以“安全地”转换为 int、double、float?

问题:

我想检查 boost::multiprecision::cpp_dec_float<100> 值是否可以安全地转换为 float/double 或 (u)int8,16,32,... 而没有范围问题

背景:

cpp_dec_float 来自 CSV 导入(我无法更改它 - 它不是我的代码),其常量值“应该”始终适合(取决于列)到 int8、int16、...、double 或 float

某一些:

转换为浮点数/双精度时可以放松精度,但整数部分值应该适合

对于整数,如果小数部分 != 0 或整数部分不适合,则它不应该工作

我尝试使用 .extract_signed_long_long 和 extract_part 但如果值太大并且似乎没有可用的 convert_to 助手,这可能会失败

如何测试转换是否可以工作并且也可以做到?

更新

如何检查小数部分是否为 0 - 这种方式?

0 投票
2 回答
55 浏览

python - Is there a more elegant way to read a Textfile containing mpz values into a list of integers?

I have a Textfile containing numbers that looks as follows:

Does there exist a simple way to parse it directly into an integer list? It doesn't matter whether the target data type is a mpz integer or a plain python integer.

What I tried so far and works is pure parsing (note: the target array y_val3 needs to be initialized with zeros in advance, since it may be larger than the list in the Textfile):

Althought this approach works, I am not sure if this is a best practice or wether there exist a more elegant way than just plain parsing.

To facilitate things: Here is the original Textfile on GitHub. Note: This Textfile might grow in furure, which brings aspects such as performance and scalability into play.