[rrd-developers] ROL and ROR for RPN
Tobias Oetiker
tobi at oetiker.ch
Tue May 6 09:29:04 CEST 2014
Hi Steve,
I like the patch ... would you make it into a pull request on
github (vs the master branch) and include the appropriate
documentation changes ...
cheers
tobi
Today Steve Shipway wrote:
> So, I have a patch (unified context diff) to add the RPN operators ROLL,
> INDEX, COPY and DEPTH.
>
> DEPTH: push the number of stack elements onto the stack
> 1,2,3,DEPTH ==> 1,2,3,3
> COPY: pop the top value form the stack. Copy that number of elements on the
> stack. So, DUP is the same as 1,COPY
> 1,2,3,2,COPY ==> 1,2,3,2,3
> INDEX: identify the item that far down the stack and copy it onto the top of
> the stack (1-based). So, DUP is the same as 1,INDEX
> 1,2,3,4,5,2,INDEX ==> 1,2,3,4,5,4
> ROLL: rotate the top n items by s steps (can be positive or negative) So
> EXCH is the same as 2,1,ROLL or 2,-1,ROLL
> 1,2,3,4,5,3,-1,ROLL ==> 1,2,4,5,3
>
> This should allow much more extensive stack manipulation. Stack underflow
> and overflow are handled.
>
> Thanks for the feedback from the group on making ROLL more generic, and
> adding DEPTH, INDEX and COPY. These functions may benefit from more
> extensive testing as properly debugging the RPN engine is awkward. More
> feedback always welcome.
>
> Steve
>
> Steve Shipway
> s.shipway at auckland.ac.nz
>
>
>
--
Tobi Oetiker, OETIKER+PARTNER AG, Aarweg 15 CH-4600 Olten, Switzerland
www.oetiker.ch tobi at oetiker.ch +41 62 775 9902
More information about the rrd-developers
mailing list