\myheading{Solving the $x^y=19487171$ equation}

Find x,y for $x^y=19487171$.
The correct result x=11, y=7.
It's like \url{http://reference.wolfram.com/language/ref/Surd.html}.

The non-standard function \verb|bvmul_no_overflow| is used here. it behaves like bvmul, but high part is forced to be zero.
This is not like most programming languages and CPUs do multiplication
(the result there is modulo $2^n$, where $n$ is width of CPU register).
However, thus it's simpler for me to write this all without adding additional \verb|zero_extend| function.

\lstinputlisting[style=customsmt]{equations/surd/surd.smt}

\begin{lstlisting}[caption=The solution]
(model
        (define-fun x () (_ BitVec 32) (_ bv11 32)) ; 0xb
        (define-fun y () (_ BitVec 4) (_ bv7 4)) ; 0x7
        (define-fun out () (_ BitVec 32) (_ bv19487171 32)) ; 0x12959c3
)
\end{lstlisting}

It is important to note that MK85 has no idea about Newton's method of finding square/cubic/etc roots...

