From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 631 invoked from network); 16 Jun 2008 14:33:43 -0000 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.2.4 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 16 Jun 2008 14:33:43 -0000 Received-SPF: none (ns1.primenet.com.au: domain at sunsite.dk does not designate permitted sender hosts) Received: (qmail 5760 invoked from network); 16 Jun 2008 14:33:39 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 16 Jun 2008 14:33:39 -0000 Received: (qmail 29534 invoked by alias); 16 Jun 2008 14:33:36 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 25162 Received: (qmail 29522 invoked from network); 16 Jun 2008 14:33:35 -0000 Received: from bifrost.dotsrc.org (130.225.254.106) by sunsite.dk with SMTP; 16 Jun 2008 14:33:35 -0000 Received: from prunille.vinc17.org (vinc17.pck.nerim.net [213.41.242.187]) by bifrost.dotsrc.org (Postfix) with ESMTP id A1F428028AC3 for ; Mon, 16 Jun 2008 16:33:29 +0200 (CEST) Received: by prunille.vinc17.org (Postfix, from userid 501) id D2C19234B1F4; Mon, 16 Jun 2008 16:33:28 +0200 (CEST) Date: Mon, 16 Jun 2008 16:33:28 +0200 From: Vincent Lefevre To: Zsh hackers list Cc: Peter Stephenson Subject: Re: arithmetic operator precedence Message-ID: <20080616143328.GY10734@prunille.vinc17.org> Mail-Followup-To: Zsh hackers list , Peter Stephenson References: <20080612095723.GF5113@sc.homeunix.net> <20080616080726.GP10734@prunille.vinc17.org> <20080616144211.276fb0e3@pws-pc> <20080616135934.GD5091@sc.homeunix.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20080616135934.GD5091@sc.homeunix.net> X-Mailer-Info: http://www.vinc17.org/mutt/ User-Agent: Mutt/1.5.18-vl-r22984 (2008-06-11) X-Virus-Scanned: ClamAV 0.92.1/7488/Mon Jun 16 08:06:58 2008 on bifrost X-Virus-Status: Clean On 2008-06-16 14:59:34 +0100, Stephane Chazelas wrote: > It's at least consistent with other shells and bc at the moment: > > ~$ bash -c 'echo $((-2**2))' > 4 > ~$ zsh -c 'echo $((-2**2))' > 4 > ~$ ksh93 -c 'echo $((-2**2))' > 4 > ~$ echo '-2 ^ 2' | bc > 4 That are almost the only ones. > bc is one place where POSIX specifies the precedence of > unary-minus vs power: > http://www.opengroup.org/onlinepubs/009695399/utilities/bc.html > minus has higher precedence than ^ which I have to say is more > intuitive to me. Most users find the other way more intuitive, as with conventional math writing 2 -2 = -4 (and that's also the reason why ** is right-associative, whereas most operations are left-associative). > Having said that: > > ~$ perl -le 'print -2 ** 2' > -4 > ~$ python -c 'print -2 ** 2' > -4 > ~$ ruby -e 'print -2 ** 2' > -4% > ~$ gawk 'BEGIN {print -2 ** 2}' > -4 and: vin:~> calc -- '-2 ^ 2' -4 vin:~> qalc '-2 ^ 2' -(2^2) = -4 vin:~> wcalc '-2 ^ 2' = -4 vin:~> echo '-2 ^ 2' | gp -q -4 vin:~> echo '-2 ^ 2;' | maple -q -4 vin:~> echo '-2 ^ 2; quit' | mupad -S >> -2 ^ 2; quit -4 -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)