\ primitives to get 2log
\ Hanno Schwalm
only forth also definitions
code log2	\ ( u -- 2log(n)
		r0	d# 31 #		mov
   begin	top	top	1 #lsl	s mov
   cc while     r0	1		s decr
   ge repeat	top	r0		mov c;

code 16log2	\ ( u -- xlog(2) calculates log2 plus 5 bits for precision
		\ xlog2(x) / 32 = log2(x)
		r0	d# 31 16 * #	mov
   begin	top	top	1 #lsl	s mov
   cc while     r0	d# 16		s decr
   ge repeat	top	top	1 #lsl	s mov
		r0	d# 8		cs incr
		top	top	1 #lsl	s mov
		r0	4		cs incr
		top	top	1 #lsl	s mov
		r0	2		cs incr
		top	top	1 #lsl	s mov
		r0	1		cs incr
		top	r0		mov c;

code dBU	\ ( u -- dBU ) converts to dbU
		r0	d# 31 8 * #	mov
   begin	top	top	1 #lsl	s mov
   cc while     r0	8		s decr
   ge repeat	top	top	1 #lsl	s mov
		r0	4		cs incr
		top	top	1 #lsl	s mov
		r0	2		cs incr
		top	top	1 #lsl	s mov
		r0	1		cs incr
		top	r0	1 #asl	mov
		top	top top 1 #asl	add
		top	top	3 #asr	mov c;
