问题标签 [arbitrary-precision]
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.
python - 在python中打印格式化的任意精度小数
Python 的任意精度小数很可爱,但我似乎无法找到一种以格式良好的方式打印它们的方法。例如,如果我计算以下表达式:
它以 2 结尾,就像它应该的那样。但是,如果我尝试将其格式化为显示两位小数,它会被四舍五入为 2^70,因为浮点数不是很精确。
有没有办法以我想要的格式打印而不会丢失精度?
(并且不使用任何非标准模块,例如 NumPy)
delphi - Delphi - NX 库中的任意长整数?
只是为Delphi寻找一些带有一些基本算术(至少add,mul,div)的任意大整数的实现。
我已经找到的所有解决方案要么非常缓慢(FGInt、BigInt、MyBigInt、UBigInts)、i386 CPU 特定(sdpbigInt),要么在 C 中实现(MPIR/GMP)。到目前为止,MPIR 的 Delphi GMP 包装器获得了最好的结果,但我更喜欢纯 Delphi/Asm 库(如果想研究算法或做一些调整,MPIR 需要安装 C 编译器和 C 知识)。
我已经阅读了 Marcel Martin 编写的关于 NX 多精度库的正面评论,但不幸的是,它不再可以从官方网站http://www.ellipsa.eu下载。由于代码是作为包括源代码的免费软件分发的,所以从其他站点获取它没有问题。有人可以提供一些备用下载链接吗?
预先感谢。
performance - 长整数例程可以从 SSE 中受益吗?
我仍在研究 C++ 中任意长整数的例程。到目前为止,我已经为 64 位 Intel CPU 实现了加法/减法和乘法。
一切正常,但我想知道是否可以通过使用 SSE 来加快速度。我浏览了 SSE 文档和处理器指令列表,但找不到任何我认为可以使用的东西,原因如下:
SSE 有一些整数指令,但大多数指令处理浮点数。它看起来不像是为使用整数而设计的(例如,是否有整数比较少?)
SSE 的思想是 SIMD(同一指令,多数据),因此它提供了 2 或 4 个独立操作的指令。另一方面,我想要一个 128 位整数加法(128 位输入和输出)。这似乎不存在。(然而?也许在 AVX2 中?)
整数加法和减法既不处理输入也不处理输出进位。所以手工操作非常麻烦(因此很慢)。
我的问题是:我的评估是正确的还是我忽略了什么?长整数例程可以从 SSE 中受益吗?特别是,他们可以帮助我编写更快的 add、sub 或 mul 例程吗?
php - MySQL Decimal 数据类型应该如何在 php 中使用?
希望只是一个快速的问题。我的数据库中有一个DECIMAL
列。该值是一个非常小的小数 - 将所有行的该值相加等于 1。
现在我想在我的 php 应用程序中使用这个值,显示它,对其执行计算并将其保存回数据库。
由于 php 只有integer
和float
类型,在 php 中使用该值的最佳方法是什么,以免在计算或显示中失去任何精度?
- 将值保留为字符串并使用 BC Math 进行计算
- 将数字转换为
float
- 我知道 php 浮点数精确到一个好数字(取决于操作系统) - 使用记住指数的函数将值转换为整数
- 还有什么?
谢谢
math - 有哪些选项可以表示超过 2^81 位的数字?
我遇到了一个有趣的数学问题,需要我对超过 2 81位的数字进行一些算术运算。我知道不可能用一个每个数字都有一个存储单元的系统来表示这么大的数字,但我想知道是否有任何方法可以解决这个问题。
我最初的想法是使用一个非常大的基数而不是基数 10(十进制)。经过一番思考,我相信(但无法验证)最佳基数将是位数的平方根(因此对于具有 2 81位数字的数字,您将使用基数 2 40 ish),这是一种改进,但是不能很好地扩展,仍然不是很实用。
那么我有什么选择呢?我知道许多任意精度库,但是有没有支持这种算术的规模?
谢谢o7
编辑:在思考了更多之后,我意识到我可能完全错误地认为“最佳基数将是位数的平方根”,但是 a)这就是我问的原因,b)我太累了,不记得我最初的假设推理。
编辑 2:以 10 为基数的 1000,000 = 以 16 为基数的 F4240 = 以 8 为基数的 364110。在以 16 为基数的情况下,您需要 20 位来存储以 8 为基数的数字,您需要 21,因此看起来通过增加基数可以降低总数需要的位数。(同样这可能是错误的)
c# - C# 中是否支持任意精度算术?
C# 是否支持任意精度算术(我认为这也称为 bignums)?
如果不支持,哪些库支持它?
algorithm - 袖珍计算器如何简化分数并将不精确的数字保留为分数?
有人可以解释一下计算器(例如卡西欧袖珍计算器)如何管理诸如“500/12”之类的方程式并能够返回“125/3”作为结果,或者有人可以说出一些这样做的算法吗?
我所说的不精确数字是指不能用固定的小数位数表示的数字,例如 0.333 循环。
Windows 计算器能够证明这一点,如果执行“1/3”,您将得到“0.3333333333333333”作为答案,但如果将其乘以 3,您将返回“1”。
floating-point - 作为两个双精度数之和的双精度浮点数
在一段时间内关注双双运算的论文和源代码,我仍然无法找出 dd_real (定义为struct dd_real { double x[2];...}
)数字是如何被分成两个双精度数的。假设我用字符串初始化它,anddd_real pi = "3.14159265358979323846264338327950";
会是什么?我需要理解它,然后编写一个有希望的小型 Python 函数来完成它。pi.x[0]
pi.xi[1]
我不只是想调用 QD 库的原因是我更愿意在 Python 中重新实现正确的拆分,以便将我的 35 位精度常量(以字符串形式给出)double2
发送到 CUDA 代码的位置GQD 库将其视为双双实数——似乎是唯一一个处理 CUDA 中扩展精度计算的库。不幸的是,在 Python 方面也排除了 mpmath。
math - 求解没有分数的十进制指数的算法
如果不能使用分数,例如在无限精度计算中,有人可以解释解决诸如 2^2.2 之类的问题所涉及的步骤吗?
ruby - Ruby 中的平方根比 BigDecimal.sqrt 更精确?
我认为 Ruby 的 BigDecimal 类的目的是它以速度为代价实现无限任意精确。错误的:
首先,sqrt
应该在没有参数的情况下工作,至少在文档中是这样。其次,如果该参数是精度,则 4 应该足以进行此操作(或者至少我不应该知道 11 位精度是可以的)。
我最不想做的就是重新发明轮子,并创建一些我自己的“任意精确平方库”。
问题:
- 是否可以将参数设置为 BigDecimal 实例,这样就不会发生上述情况?(意思是:它以低精度返回正确的结果)
- 是否有关于 BigDecimal 对象的详细信息(值后面的数字是什么)?
系统:Debian,32 位,ruby 1.9.3p125