Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #197058
| Path | csiph.com!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail |
|---|---|
| From | Martin Ruppert <ruppert@hs-worms.de> |
| Newsgroups | comp.lang.python |
| Subject | Division-Bug in decimal and mpmath |
| Date | Sat, 14 Dec 2024 07:39:35 -0000 (UTC) |
| Organization | A noiseless patient Spider |
| Lines | 55 |
| Message-ID | <vjjcnl$3tdnk$1@dont-email.me> (permalink) |
| Reply-To | ruppert@hs-worms.de |
| Injection-Date | Sat, 14 Dec 2024 08:39:35 +0100 (CET) |
| Injection-Info | dont-email.me; posting-host="1e9732918c36f47788273ed53a25e352"; logging-data="4110068"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX194S6L8xhsQ7s6uglAfc7GL" |
| User-Agent | tin/2.6.2-20221225 ("Pittyvaich") (Linux/4.19.0-6-amd64 (x86_64)) |
| Cancel-Lock | sha1:MjkRp6ohI726n5VTfJjcL1Ocz9o= |
| Xref | csiph.com comp.lang.python:197058 |
Show key headers only | View raw
Hi,
the division 0.4/7 provides a wrong result. It should give a periodic
decimal fraction with at most six digits, but it doesn't.
Below is the comparison of the result of decimal, mpmath, dc and calc.
0.0571428571428571460292086417861615440675190516880580357142857 decimal: 0.4/7
0.0571428571428571460292086417861615440675190516880580357142857 mpmath: 0.4/7
0.0571428571428571428571428571428571428571428571428571428571428 dc: 0.4/7
0.0571428571428571428571428571428571428571428571428571428571429 calc: 0.4/7
0.05714285714285715 builtin: 0.4/7
Both decimal and mpmath give an identical result, which is not a
periodic decimal fraction with at most six digits.
calc and dc provide as well an identical result, which *is* a periodic
decimal fraction with six digits, so I think that's right.
Below ist the python-script, with which the computation was done.
Best regards
Martin Ruppert
#!/usr/bin/env python3
from decimal import Decimal as dec
from mpmath import *
from os import popen
import decimal
z=.4
nen=7
decimal.getcontext().prec=60
print(dec(z)/dec(nen),end=' ');print(f"decimal: {z}/{nen}")
mp.dps=60
a=fdiv(z,nen);print(a,end=' ');print(f"mpmath: {z}/{nen}")
f=popen(f"dc -e'61k{z} {nen}/f'")
for i in f:i=i.rstrip()
f.close()
print(f"0{i}",end=' ');print(f"dc: {z}/{nen}")
f=popen(f"calc 'config(\"display\",61);{z}/{nen}'")
j=0
for i in f:
if j>0:i=i.rstrip();print(i,end=' ');print(f"calc: {z}/{nen}")
j+=1
f.close()
print(f"{z/nen}",end=' ');print(f"builtin: {z}/{nen}")
--
ruppert@hs-worms.de
Back to comp.lang.python | Previous | Next — Next in thread | Find similar
Division-Bug in decimal and mpmath Martin Ruppert <ruppert@hs-worms.de> - 2024-12-14 07:39 +0000
Re: Division-Bug in decimal and mpmath Mark Bourne <nntp.mbourne@spamgourmet.com> - 2024-12-14 12:08 +0000
Re: Division-Bug in decimal and mpmath 2QdxY4RzWzUUiLuE@potatochowder.com - 2024-12-14 14:21 -0500
Re: Division-Bug in decimal and mpmath Mark Bourne <nntp.mbourne@spamgourmet.com> - 2024-12-15 11:59 +0000
Re: Division-Bug in decimal and mpmath Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2024-12-15 21:29 +0000
csiph-web