Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
This file is part of the Flocq formalization of floating-point
arithmetic in Coq: http://flocq.gforge.inria.fr/
Copyright (C) 2010-2018 Sylvie Boldo
Copyright (C) 2010-2018 Guillaume Melquiond
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
COPYING file for more details.
Copyright (C) 2010-2018 Guillaume Melquiond
Require Import Raux Defs Digits Generic_fmt Float_prop Bracket. Set Implicit Arguments. Set Strongly Strict Implicit. Section Fcalc_sqrt. Variable beta : radix. Notation bpow e := (bpow beta e). Variable fexp : Z -> Z.
Computes a mantissa of precision p, the corresponding exponent,
and the position with respect to the real square root of the
input floating-point number.
The algorithm performs the following steps:
Complexity is fine as long as p1 <= 2p-1.
- Shift the mantissa so that it has at least 2p-1 digits; shift it one digit more if the new exponent is not even.
- Compute the square root s (at least p digits) of the new mantissa, and its remainder r.
- Compute the position according to the remainder:
- - r == 0 => Eq,
- - r <= s => Lo,
- - r >= s => Up.
beta:radixfexp:Z -> Zforall m1 e1 : Z, (0 < m1)%Z -> mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (Zdigits beta m1 + e1 + 1)beta:radixfexp:Z -> Zforall m1 e1 : Z, (0 < m1)%Z -> mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (Zdigits beta m1 + e1 + 1)beta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Zmag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (Zdigits beta m1 + e1 + 1)beta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Zmag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (mag beta (F2R {| Fnum := m1; Fexp := e1 |}) + 1)now apply F2R_gt_0. Qed. Definition Fsqrt_core m1 e1 e := let d1 := Zdigits beta m1 in let m1' := (m1 * Zpower beta (e1 - 2 * e))%Z in let (q, r) := Z.sqrtrem m1' in let l := if Zeq_bool r 0 then loc_Exact else loc_Inexact (if Zle_bool r q then Lt else Gt) in (q, l).beta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Z(0 < F2R {| Fnum := m1; Fexp := e1 |})%Rbeta:radixfexp:Z -> Zforall m1 e1 e : Z, (0 < m1)%Z -> (2 * e <= e1)%Z -> let '(m, l) := Fsqrt_core m1 e1 e in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zforall m1 e1 e : Z, (0 < m1)%Z -> (2 * e <= e1)%Z -> let '(m, l) := Fsqrt_core m1 e1 e in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zlet '(m, l) := Fsqrt_core m1 e1 e in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zlet '(m, l) := let (q, r) := Z.sqrtrem (m1 * beta ^ (e1 - 2 * e)) in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:Zlet '(m, l) := let (q, r) := Z.sqrtrem m' in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:Z(0 <= m')%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zlet '(m, l) := let (q, r) := Z.sqrtrem m' in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:Z(0 <= m')%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:Z(0 <= m1)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:Z(0 <= beta ^ (e1 - 2 * e))%Zapply Zpower_ge_0.beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:Z(0 <= beta ^ (e1 - 2 * e))%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zlet '(m, l) := let (q, r) := Z.sqrtrem m' in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rlet '(m, l) := let (q, r) := Z.sqrtrem m' in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * sqrt (bpow e)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR m' * (bpow e)²)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= (bpow e)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR (m1 * beta ^ (e1 - 2 * e)) * (bpow e * bpow e))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= (bpow e)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR m1 * bpow (e1 - 2 * e) * (bpow e * bpow e))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= (bpow e)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Zsqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR m1 * bpow (e1 - 2 * e + (e + e)))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= (bpow e)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= (bpow e)²)%Rapply Rle_0_sqr.beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%Z(0 <= (bpow e)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rlet '(m, l) := let (q, r) := Z.sqrtrem m' in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R(let (s, r) := Z.sqrtrem m' in m' = (s * s + r)%Z /\ (0 <= r <= 2 * s)%Z) -> let '(m, l) := let (q, r) := Z.sqrtrem m' in (q, if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt)) in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:Zm' = (q * q + r)%Z /\ (0 <= r <= 2 * q)%Z -> inbetween_float beta q e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween_float beta q e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween_float beta q e (sqrt (IZR m') * bpow e) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween (IZR (Fnum {| Fnum := q; Fexp := e |}) * bpow (Fexp {| Fnum := q; Fexp := e |})) (IZR (Fnum {| Fnum := q + 1; Fexp := e |}) * bpow (Fexp {| Fnum := q + 1; Fexp := e |})) (sqrt (IZR m') * bpow e) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween (IZR q * bpow (Fexp {| Fnum := q; Fexp := e |})) (IZR (q + 1) * bpow (Fexp {| Fnum := q + 1; Fexp := e |})) (sqrt (IZR m') * bpow e) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Z(0 < bpow e)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR m')) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR m')) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (if Zeq_bool r 0 then SpecFloatCopy.loc_Exact else SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))(* .. r = 0 *)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) SpecFloatCopy.loc_Exactbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR q * IZR q)) SpecFloatCopy.loc_Exactbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR q)²) SpecFloatCopy.loc_Exactbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Zinbetween (IZR q) (IZR (q + 1)) (IZR q) SpecFloatCopy.loc_Exactbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Z(0 <= IZR q)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Z(0 <= IZR q)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r = 0%Z(0 <= q)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))(* .. r <> 0 *)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Zinbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR q < sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)(* ... bounds *)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR q < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR q <= sqrt (IZR (q * q)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR q <= sqrt (IZR q * IZR q))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR q <= sqrt (IZR q)²)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR q <= IZR q)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= q)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q) < IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q * IZR q)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q) < IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q) < IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q) < IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q) < IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(q * q < q * q + r)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q * q + r)) < sqrt (IZR ((q + 1) * (q + 1))))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q + 1) * IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(q * q + r < (q + 1) * (q + 1))%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(q ^ 2 + r < q ^ 2 + 2 * q + 1)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q + 1) * IZR (q + 1)) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(sqrt (IZR (q + 1))² <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(IZR (q + 1) <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= q + 1)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)(* ... location *)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (2 * sqrt (IZR (q * q + r))) (IZR q + IZR (q + 1)) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (2 * sqrt (IZR (q * q + r)) * (2 * sqrt (IZR (q * q + r)))) ((IZR q + IZR (q + 1)) * (IZR q + IZR (q + 1))) = Rcompare (Rabs (2 * sqrt (IZR (q * q + r)))) (Rabs (IZR q + IZR (q + 1))) -> Rcompare (2 * sqrt (IZR (q * q + r))) (IZR q + IZR (q + 1)) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (2 * sqrt (IZR (q * q + r)) * (2 * sqrt (IZR (q * q + r)))) ((IZR q + IZR (q + 1)) * (IZR q + IZR (q + 1))) = Rcompare (2 * sqrt (IZR (q * q + r))) (IZR q + IZR (q + 1)) -> Rcompare (2 * sqrt (IZR (q * q + r))) (IZR q + IZR (q + 1)) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (2 * sqrt (IZR (q * q + r)) * (2 * sqrt (IZR (q * q + r)))) ((IZR q + IZR (q + 1)) * (IZR q + IZR (q + 1))) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (4 * (sqrt (IZR (q * q + r)))²) ((IZR q + IZR (q + 1)) * (IZR q + IZR (q + 1))) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (4 * IZR (q * q + r)) ((IZR q + IZR (q + 1)) * (IZR q + IZR (q + 1))) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZRcompare (IZR (4 * (q * q + r))) (IZR ((q + (q + 1)) * (q + (q + 1)))) = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(4 * (q * q + r) ?= (q + (q + 1)) * (q + (q + 1)))%Z = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(if (r <=? q)%Z then (r <= q)%Z else (r > q)%Z) -> (4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = (if (r <=? q)%Z then Lt else Gt)beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZHr'':(r <= q)%Z(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Ltbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZHr'':(r > q)%Z(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Gtbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZHr'':(r <= q)%Z(4 * (q * q + r) < 4 * (q * q) + 4 * q + 1)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZHr'':(r > q)%Z(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Gtbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZHr'':(r > q)%Z(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Gtbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%ZHr'':(r > q)%Z(4 * (q * q + r) > 4 * (q * q) + 4 * q + 1)%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q * q + r))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR m')%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR q + IZR (q + 1))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= IZR (q + (q + 1)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= q + (q + 1))%Zbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2 * sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= 2)%Rbeta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= sqrt (IZR (q * q + r)))%Rapply sqrt_ge_0. Qed. Definition Fsqrt (x : float beta) := let (m1, e1) := x in let e' := (Zdigits beta m1 + e1 + 1)%Z in let e := Z.min (fexp (Z.div2 e')) (Z.div2 e1) in let '(m, l) := Fsqrt_core m1 e1 e in (m, e, l).beta:radixfexp:Z -> Zm1, e1, e:ZHm1:(0 < m1)%ZHe:(2 * e <= e1)%Zm':=(m1 * beta ^ (e1 - 2 * e))%Z:ZHm':(0 <= m')%ZHf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%Rq, r:ZHq:m' = (q * q + r)%ZHr:(0 <= r <= 2 * q)%ZHr':r <> 0%Z(0 <= sqrt (IZR (q * q + r)))%Rbeta:radixfexp:Z -> Zforall x : float beta, (0 < F2R x)%R -> let '(m, e, l) := Fsqrt x in (e <= cexp beta fexp (sqrt (F2R x)))%Z /\ inbetween_float beta m e (sqrt (F2R x)) lbeta:radixfexp:Z -> Zforall x : float beta, (0 < F2R x)%R -> let '(m, e, l) := Fsqrt x in (e <= cexp beta fexp (sqrt (F2R x)))%Z /\ inbetween_float beta m e (sqrt (F2R x)) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < F2R {| Fnum := m1; Fexp := e1 |})%Rlet '(m, e, l) := Fsqrt {| Fnum := m1; Fexp := e1 |} in (e <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Zlet '(m, e, l) := Fsqrt {| Fnum := m1; Fexp := e1 |} in (e <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Zlet '(m, e, l) := let '(m, l) := Fsqrt_core m1 e1 (Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1)) in (m, Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1), l) in (e <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Zlet '(m, e0, l) := let '(m, l) := Fsqrt_core m1 e1 e in (m, e, l) in (e0 <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e0 (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z(2 * e <= e1)%Zbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zlet '(m, e0, l) := let '(m, l) := Fsqrt_core m1 e1 e in (m, e, l) in (e0 <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e0 (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z(2 * e <= e1)%Zbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZH:(e <= Z.div2 e1)%Z(2 * e <= e1)%Zdestruct Z.odd ; omega.beta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZH:(e <= Z.div2 e1)%Z(2 * e <= 2 * Z.div2 e1 + (if Z.odd e1 then 1 else 0))%Zbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zlet '(m, e0, l) := let '(m, l) := Fsqrt_core m1 e1 e in (m, e, l) in (e0 <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e0 (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Z(let '(m, l) := Fsqrt_core m1 e1 e in inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) l) -> let '(m, e0, l) := let '(m, l) := Fsqrt_core m1 e1 e in (m, e, l) in (e0 <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e0 (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zm:Zl:SpecFloatCopy.locationinbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) l -> (e <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z /\ inbetween_float beta m e (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) lbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zm:Zl:SpecFloatCopy.location(e <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Zbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zm:Zl:SpecFloatCopy.location(fexp (Z.div2 (Zdigits beta m1 + e1 + 1)) <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Zbeta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zm:Zl:SpecFloatCopy.location(fexp (Z.div2 (Zdigits beta m1 + e1 + 1)) <= fexp (mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |}))))%Zapply Z.le_refl. Qed. End Fcalc_sqrt.beta:radixfexp:Z -> Zm1, e1:ZHm1:(0 < m1)%Ze:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):ZHe:(2 * e <= e1)%Zm:Zl:SpecFloatCopy.location(fexp (Z.div2 (Zdigits beta m1 + e1 + 1)) <= fexp (Z.div2 (Zdigits beta m1 + e1 + 1)))%Z