unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#19025: 24.4; precision error when adding two floats
@ 2014-11-12  0:36 Kevin W. Currey
  2014-11-12  1:38 ` Alexis
  2014-11-12  2:06 ` Stefan Monnier
  0 siblings, 2 replies; 5+ messages in thread
From: Kevin W. Currey @ 2014-11-12  0:36 UTC (permalink / raw)
  To: 19025

[-- Attachment #1: Type: text/plain, Size: 3368 bytes --]

(message "%s" (+ 379.744 57.93))

The above prints 437.67400000000004.  Same if I use 57.930, but if I use 57.931 (below) I get the correct answer 437.675.
 
(message "%s" (+ 379.744 57.931))

I was able to work around by using format:
 
(message "%s" (format "%f" (+ 379.744 57.93)))

which prints 437.674000.
 
FYI, I can replicate the issue with Emacs 21.3.1.
 
Thanks,
-Kevin
 
 
In GNU Emacs 24.4.1 (x86_64-unknown-cygwin)
 of 2014-10-21 on desktop-new
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure
 --srcdir=/home/kbrown/src/cygemacs/emacs-24.4-1.x86_64/src/emacs-24.4
 --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin
 --libexecdir=/usr/libexec --datadir=/usr/share --localstatedir=/var
 --sysconfdir=/etc --libdir=/usr/lib --datarootdir=/usr/share
 --docdir=/usr/share/doc/emacs --htmldir=/usr/share/doc/emacs/html -C
 --with-w32 --without-file-notification --enable-checking 'CFLAGS=-ggdb
 -O2 -pipe -Wimplicit-function-declaration -Og -g3
 -fdebug-prefix-map=/home/kbrown/src/cygemacs/emacs-24.4-1.x86_64/build=/usr/src/debug/emacs-24.4-1
 -fdebug-prefix-map=/home/kbrown/src/cygemacs/emacs-24.4-1.x86_64/src/emacs-24.4=/usr/src/debug/emacs-24.4-1'
 CPPFLAGS= LDFLAGS='
 
 
Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
 
 
Major mode: Fundamental
 
 
Minor modes in effect:
  shell-dirtrack-mode: t
  display-time-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t

Recent messages:
Load-path shadows:
None found.
 
 
Features:
(pp shadow sort gnus-util mail-extr emacsbug message format-spec rfc822
mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mail-utils info find-func grep tabify sh-script smie
executable shell pcomplete compile comint ansi-color ring dabbrev
cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs arc-mode archive-mode dired-aux ispell apropos
dired help-fns help-mode easymenu mule-util server edmacro kmacro
cl-loaddefs cl-lib time jka-compr time-date tooltip electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel w32-common-fns disp-table
w32-win w32-vars tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment lisp-mode prog-mode register page menu-bar
rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax
facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak
czech european ethiopic indian cyrillic chinese case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer nadvice loaddefs button
faces cus-face macroexp files text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind w32 multi-tty emacs)
 
 
Memory information:
((conses 16 145217 10616)
 (symbols 48 23227 0)
 (miscs 40 133 446)
 (strings 32 31064 5702)
 (string-bytes 1 930985)
 (vectors 16 15771)
 (vector-slots 8 452262 7494)
 (floats 8 82 775)
 (intervals 56 640 31)
 (buffers 960 24))

 		 	   		  

[-- Attachment #2: Type: text/html, Size: 4016 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#19025: 24.4; precision error when adding two floats
  2014-11-12  0:36 bug#19025: 24.4; precision error when adding two floats Kevin W. Currey
@ 2014-11-12  1:38 ` Alexis
  2014-11-12  2:28   ` Jay Belanger
  2014-11-12  2:06 ` Stefan Monnier
  1 sibling, 1 reply; 5+ messages in thread
From: Alexis @ 2014-11-12  1:38 UTC (permalink / raw)
  To: 19025


Kevin W. Currey writes:

> (message "%s" (+ 379.744 57.93))
>
> The above prints 437.67400000000004.  Same if I use 57.930, but if I use 57.931 (below) I get the correct answer 437.675.
>  
> (message "%s" (+ 379.744 57.931))
>
> I was able to work around by using format:
>  
> (message "%s" (format "%f" (+ 379.744 57.93)))
>
> which prints 437.674000.
>  
> FYI, I can replicate the issue with Emacs 21.3.1.

Isn't this an artifact of the nature of floating-point arithmetic, rather than
an issue with Emacs per se? For example, in Python:

    Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
    [GCC 4.7.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 379.744 + 57.93
    437.67400000000004
    >>>


Alexis.





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#19025: 24.4; precision error when adding two floats
  2014-11-12  0:36 bug#19025: 24.4; precision error when adding two floats Kevin W. Currey
  2014-11-12  1:38 ` Alexis
@ 2014-11-12  2:06 ` Stefan Monnier
  1 sibling, 0 replies; 5+ messages in thread
From: Stefan Monnier @ 2014-11-12  2:06 UTC (permalink / raw)
  To: Kevin W. Currey; +Cc: 19025-done

tags 19025 notabug
thanks

> (message "%s" (+ 379.744 57.93))
> The above prints 437.67400000000004.

That's the difference between floating-point numbers and real or
rational numbers.

> (message "%s" (format "%f" (+ 379.744 57.93)))

You can cut the middle man: (message "%f" (+ 379.744 57.93))

But note that this prints something "incorrect":

     M-: (message "%f" (+ 379.744 57.93))
     => 437.674000.
     M-: (equal (+ 379.744 57.93) 437.674000)
     => nil

It's just that %f rounds differently.



        Stefan





^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#19025: 24.4; precision error when adding two floats
  2014-11-12  1:38 ` Alexis
@ 2014-11-12  2:28   ` Jay Belanger
  2014-11-12  2:42     ` Alexis
  0 siblings, 1 reply; 5+ messages in thread
From: Jay Belanger @ 2014-11-12  2:28 UTC (permalink / raw)
  To: 19025


>> (message "%s" (+ 379.744 57.93))
>>
>> The above prints 437.67400000000004.  Same if I use 57.930, but if I
>> use 57.931 (below) I get the correct answer 437.675.
>>  
>> (message "%s" (+ 379.744 57.931))
>>
>> I was able to work around by using format:
>>  
>> (message "%s" (format "%f" (+ 379.744 57.93)))
>>
>> which prints 437.674000.
>>  
>> FYI, I can replicate the issue with Emacs 21.3.1.
>
> Isn't this an artifact of the nature of floating-point arithmetic, rather than
> an issue with Emacs per se?

Yes, although it probably wouldn't be a bad idea to point out this issue
in the Elisp documentation.






^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#19025: 24.4; precision error when adding two floats
  2014-11-12  2:28   ` Jay Belanger
@ 2014-11-12  2:42     ` Alexis
  0 siblings, 0 replies; 5+ messages in thread
From: Alexis @ 2014-11-12  2:42 UTC (permalink / raw)
  To: 19025


Jay Belanger writes:

>> Isn't this an artifact of the nature of floating-point arithmetic,
>> rather than an issue with Emacs per se?
>
> Yes, although it probably wouldn't be a bad idea to point out this
> issue in the Elisp documentation.

*nod* And perhaps mention Calc functions, which can work with a
specified precision?

(Assuming we can't simply link to e.g. http://floating-point-gui.de/ :-) )


Alexis.





^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-11-12  2:42 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-12  0:36 bug#19025: 24.4; precision error when adding two floats Kevin W. Currey
2014-11-12  1:38 ` Alexis
2014-11-12  2:28   ` Jay Belanger
2014-11-12  2:42     ` Alexis
2014-11-12  2:06 ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).