zsh-workers
 help / color / mirror / code / Atom feed
From: Peter Stephenson <p.stephenson@samsung.com>
To: zsh-workers@zsh.org
Subject: Re: Math expression evaluation error?
Date: Thu, 15 Jan 2015 14:58:45 +0000	[thread overview]
Message-ID: <20150115145845.0e1e7901@pwslap01u.europe.root.pri> (raw)
In-Reply-To: <20150114153842.7b48aa93@pwslap01u.europe.root.pri>

On Wed, 14 Jan 2015 15:38:42 +0000
Peter Stephenson <p.stephenson@samsung.com> wrote:
> I wouldn't have thought so --- I would guess when forcing floating
> point calculations people would expect this to happen everywhere,
> despite what the documentation for the option says.

This notes the change of behaviour.

pws

diff --git a/README b/README
index 4d2b6c1..d2b8b69 100644
--- a/README
+++ b/README
@@ -38,10 +38,12 @@ details, see the documentation.
 Incompatibilites between 5.0.7 and 5.0.8
 ----------------------------------------
 
-A couple of arithmetic operations have changed: the new behaviour
-is intended to be more consistent, but is not compatible with the old.
+Various arithmetic operations have changed, in particular with respect
+to the choice of integer or floating point operations.  The new
+behaviour is intended to be more consistent, but is not compatible with
+the old.
 
-Previously, the modulus operation, `%', implicitly converted the
+1) Previously, the modulus operation, `%', implicitly converted the
 operation to integer and output an integer result, even if one
 or both of the arguments were floating point.  Now, the C math
 library fmod() operator is used to implement the operation where
@@ -57,7 +59,8 @@ New behaviour:
 % print $(( 5.5 % 2 ))
 1.5
 
-Previously, assignments to variables assigned the correct type to
+
+2) Previously, assignments to variables assigned the correct type to
 variables declared as floating point or integer, but this type was
 not propagated to the value of the expression, as a C programmer
 would naturally expect.  Now, the type of the variable is propagated
@@ -81,6 +84,44 @@ New behaviour:
 % print $var
 2
 
+
+3) Previously, the FORCE_FLOAT option only forced the use of floating
+point in arithmetic expressions for integers constants, i.e. numbers
+typed directly into the expression, but not for variables.  Hence
+an operation involving only integer variables (or string variables
+containing integers) was not forced to be performed with floating point
+arithmetic.  Now, operations involving variables are also forced to
+floating point.  For example:
+
+Old behaviour:
+
+% unsetopt FORCE_FLOAT
+% print $(( 1 / 2 ))
+0
+% integer i=1 j=2
+% print $(( i / j ))
+0
+% setopt FORCE_FLOAT
+% print $(( 1 / 2 ))
+0.5
+% print $(( i / j ))
+0
+
+New behaviour:
+
+% unsetopt FORCE_FLOAT
+% print $(( 1 / 2 ))
+0
+% integer i=1 j=2
+% print $(( i / j ))
+0
+% setopt FORCE_FLOAT
+% print $(( 1 / 2 ))
+0.5
+% print $(( i / j ))
+0.5
+
+
 Incompatibilities between 5.0.2 and 5.0.5
 -----------------------------------------
 


      reply	other threads:[~2015-01-15 14:59 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-09 19:46 jdh
2015-01-09 20:15 ` Peter Stephenson
2015-01-09 21:40   ` jdh
2015-01-09 22:19     ` Ray Andrews
2015-01-09 23:06       ` Lawrence Velázquez
2015-01-09 23:52         ` Ray Andrews
2015-01-10  0:25           ` Bart Schaefer
2015-01-10  7:27             ` Ray Andrews
2015-01-10 16:53               ` Bart Schaefer
2015-01-10 18:48                 ` Ray Andrews
2015-01-10 19:14                   ` Bart Schaefer
2015-01-10 22:21                     ` Ray Andrews
2015-01-11  1:51                       ` Bart Schaefer
2015-01-11  5:10                         ` Ray Andrews
2015-01-12  9:17                           ` Vincent Lefevre
2015-01-12 16:18                             ` ZyX
2015-01-13 16:00                               ` Vincent Lefevre
2015-01-13 23:03                                 ` ZyX
2015-01-14 14:47                                   ` Vincent Lefevre
2015-01-14 21:37                                     ` ZyX
2015-01-15 13:34                                       ` Vincent Lefevre
2015-01-15 13:41                                         ` Vincent Lefevre
2015-01-15 18:32                                         ` ZyX
2015-01-15 21:57                                           ` Bart Schaefer
2015-01-09 22:40     ` Peter Stephenson
2015-01-12 10:55       ` Peter Stephenson
2015-01-14 15:02       ` Vincent Lefevre
2015-01-14 15:38         ` Peter Stephenson
2015-01-15 14:58           ` Peter Stephenson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150115145845.0e1e7901@pwslap01u.europe.root.pri \
    --to=p.stephenson@samsung.com \
    --cc=zsh-workers@zsh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

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 NNTP newsgroup(s).