EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: calcPerform expressions: 'NOT' operator
From: "Jeff Hill" <[email protected]>
To: "'Andrew Johnson'" <[email protected]>
Cc: <[email protected]>, <[email protected]>
Date: Fri, 3 Mar 2006 14:47:02 -0700
> Summary: I am working on changes and enhancements to the calcPerform code

The ability to use real variable names in the expressions instead of A, B, C
etc might also be needed for client specified CA subscription update
filters. 

A quick look in the free software directory revealed Matjito which appears
to have that capability and many others including an X86 JIT compiler. 

Disclaimer: I havent looked at this close enough yet to hazard an opinion on
whether we would want to use it or not, and whether a JIT compiler would
noticably improve performance in this context isnt clear either. 

http://sourceforge.net/projects/matjito/

The Author did indicate earlier that he might sign a grant of license. 

Jeff

> -----Original Message-----
> From: Andrew Johnson [mailto:[email protected]] 
> Sent: Friday, March 03, 2006 1:56 PM
> To: Tech Talk
> Subject: calcPerform expressions: 'NOT' operator
> 
> 
> Summary: I am working on changes and enhancements to the calcPerform 
> code in R3.14, and am considering making a change that will alter the 
> behaviour of expressions that use the 'NOT' operator in 
> future versions 
> of EPICS.  Please respond if this change will adversely affect your 
> site, i.e. if you actually make heavy use of the 'NOT' operator (as 
> against the related '-', '~' or '!' operators).
> 
> The libCom calc subsystem is used by the calc and calcout records, 
> Channel Access security module, MEDM and probably some other client 
> tools to evalutate expressions.  It provides separate operators for 
> doing logical and bitwise operations, for example '&' is a 
> bitwise AND 
> while '&&' is a logical AND.  The operator 'AND' is also 
> supported as a 
> synonym for the bitwise operator, and has parallel operators 
> 'OR' and 'XOR'.
> 
> When it comes to the unary NOT operations however, the operator 'NOT' 
> does not match the bitwise '~' not operator, but instead performs a 
> NEGATE operation like the unary minus operator.  This obscure 
> behavior 
> is documented in the Record Reference manual.
> 
> The current 'NOT' operator dates back to a time when the expression 
> parser only supported the use of '-' as a binary subtraction 
> operator, 
> and for some reason the keyword 'NOT' was picked for the unary minus 
> operator.  However the ability to use '-' for unary minus was 
> added by 
> Janet in R3.12.0beta7 about 11 years ago, so I'm now 
> proposing to change 
> 'NOT' to be a synonym for the bitwise operator '~'.
> 
> Please reply if you object to this change because your site 
> uses 'NOT' 
> in a significant number of CALC expressions of a 3.14 
> database or Access 
> Security configuration file.
> 
> 
> To reward anyone who was interested enough to read to the 
> bottom of this 
> message, here's what I'm up to:  I've been significantly 
> improving the 
> error checking and reporting from the expression parser, and 
> have added 
> an assignment operator ':=' and expression terminator ';'.  A single 
> CALC record can now return multiple results, although it is still 
> subject to the 40 character limit for the expression string.
> 
> - Andrew
> -- 
> There is no S in exprexxo.
> 



References:
calcPerform expressions: 'NOT' operator Andrew Johnson

Navigate by Date:
Prev: RE: calcPerform expressions: 'NOT' operator Redman, Russell
Next: What is Matjito? Jeff Hill
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: calcPerform expressions: 'NOT' operator Andrew Johnson
Next: Re: calcPerform expressions: 'NOT' operator Tim Mooney
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  <20062007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·