[rrd-users] Simple RPN with EXP goes wrong

Tony Mountifield tony at mountifield.org
Tue Feb 16 13:12:47 CET 2016


In article <5820DC553954E44FA1A36C78323AD148A408569D at uxcn10-6.UoA.auckland.ac.nz>,
Steve Shipway <s.shipway at auckland.ac.nz> wrote:
> > Example: 3*x^2
> > I thought this would be in rpn: 3,x,2,EXP,*
> > However, rrdtool is complaining "ERROR: RPN final stack size != 1"
> 
> EXP is the reverse of the natural log, sometimes called 'antilog' ; IE, e^X, NOT X squared.  It also does not take a second argument as it always uses e (2.71828etc). Thus, your RPN above ens up with two items in the stack (3, and x(e^2))
> 
> If you want to raise X to the power of Y, then there is no single RPN function to do it.  Instead, you need to work through logarithms.
> 
> e^( log(x) + log(y) ) == x * y ( a long way to go about it )
> 
> e^( log(x) * y ) == x ^ y
> 
> Or, in RPN, 
> 
> x,LOG,y,*,EXP
> 
> I agree it would be helpful to have a new command (eg. 'x,y,POW') to do this in a single operation, but nobody has submitted it yet...

Of course if you just want the square, replace x^2 with x*x to give 3*x*x: 3,x,DUP,*,*

Cheers
Tony
-- 
Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org



More information about the rrd-users mailing list