++pow
Computes a
raised to the power of b
, producing an atom.
Accepts
a
is an atom.
b
is an atom.
Produces
An atom.
Source
++ pow~/ %pow|= [a=@ b=@]?: =(b 0) 1|- ?: =(b 1) a=+ c=$(b (div b 2))=+ d=(mul c c)?~ (dis b 1) d (mul d a)
Examples
> (pow 2 6)64> (pow 6 2)36> (pow 7 (add 2 2))2.401> (pow 2 0)1> `@ux`(pow 0x1b 2)0x2d9
++sqt
Computes the square root of a
and its remainder.
Accepts
a
is an atom.
Produces
A cell of atoms.
Source
++ sqt~/ %sqt|= a=@ ^- [p=@ q=@]?~ a [0 0]=+ [q=(div (dec (xeb a)) 2) r=0]=- [-.b (sub a +.b)]^= b |-=+ s=(add r (bex q))=+ t=(mul s s)?: =(q 0)?:((lte t a) [s t] [r (mul r r)])?: (lte t a)$(r s, q (dec q))$(q (dec q))
Examples
> (sqt 4)[p=2 q=0]> (sqt 6)[p=2 q=2]> (sqt 2)[p=1 q=1]> (sqt 0b1101)[p=3 q=4]> `@ux`(sqt 0b1101)! exit