[ store-exponent ] [ drop f ] if* ; inline
: pow-until ( base x -- base^x )
- [ 1 ] 2dip
- [ dup zero? ] [
+ [ 1 ] 2dip [
dup odd? [ [ [ * ] keep ] [ 1 - ] bi* ] when
[ sq ] [ 2/ ] bi*
- ] until 2drop ; inline
+ ] until-zero drop ; inline
: (pow) ( base x -- base^x )
integer>fixnum-strict
BV{ } clone :> accum
seq [ zero? not ] find [ drop seq length ] unless :> i
seq i tail-slice be>
- [ dup zero? ] [ 58 /mod ch>base58 accum push ] until drop
+ [ 58 /mod ch>base58 accum push ] until-zero
i alphabet first '[ _ accum push ] times
accum reverse! B{ } like ;
base58 alphabet first '[ _ = not ] find
[ drop base58 length ] unless :> i
0 base58 [ [ 58 * ] dip base58>ch + ] i each-from
- [ dup zero? ] [ 256 /mod accum push ] until drop
+ [ 256 /mod accum push ] until-zero
i [ 0 accum push ] times
accum reverse! B{ } like ;
! including (1000, 1000) itself?
: sum-digits ( n -- x )
- 0 swap [ dup zero? ] [ 10 /mod swap [ + ] dip ] until drop ;
+ 0 swap [ 10 /mod swap [ + ] dip ] until-zero ;
TUPLE: point x y ;
C: <point> point