[Gimp-developer] script-fu error.
saulgoode at flashingtwelve.brickfilms.com
saulgoode at flashingtwelve.brickfilms.com
Wed Oct 1 13:32:47 PDT 2008
Quoting Kevin Cozens <kevin at ve3syb.ca>:
> Giovanni Rizzardi wrote:
>> I'm trying to update an old script (stegano.scm) that uses the functions
>> bit-or and bit-and. Both these function should be
>> ported from SIOD to TinyScheme but the interpreter raises an exception
>> complaining about an "unbound variable".
>
> Those two functions are unique to SIOD. TinyScheme tends to follow the R4RS
> and R5RS Scheme standards which do not currently define bit wise operations.
> The bitwise operation could be written in standard Scheme but they would be
> rather slow.
>
> Bit operations were proposed in SRFI-33 (http://srfi.schemers.org/srfi-33/)
> but that is currently in a withdrawn state awaiting revival. You could check
> to see if they have a reference implementation which you could use.
>
I don't know if they are reference implementations, but the following
two functions should work for reasonably-sized positive integers.
(define (bit-or x y)
(cond
((= x y) x)
((zero? x) y)
((zero? y) x)
(else
(+ (* (bit-or (quotient (trunc x) 2) (quotient (trunc y) 2)) 2)
(if (and (even? x) (even? y)) 0 1)))))
(define (bit-and x y)
(cond
((= x y) x)
((zero? x) 0)
((zero? y) 0)
(else
(+ (* (bit-and (quotient (trunc x) 2) (quotient (trunc y) 2)) 2)
(if (or (even? x) (even? y)) 0 1)))))
More information about the Gimp-developer
mailing list