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.

Helper functions and theorems for computing the rounded square root of a floating-point number.

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.
beta:radix
fexp:Z -> Z

forall m1 e1 : Z, (0 < m1)%Z -> mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (Zdigits beta m1 + e1 + 1)
beta:radix
fexp:Z -> Z

forall m1 e1 : Z, (0 < m1)%Z -> mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (Zdigits beta m1 + e1 + 1)
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z

mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (Zdigits beta m1 + e1 + 1)
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z

mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |})) = Z.div2 (mag beta (F2R {| Fnum := m1; Fexp := e1 |}) + 1)
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z

(0 < F2R {| Fnum := m1; Fexp := e1 |})%R
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:radix
fexp:Z -> Z

forall 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 |})) l
beta:radix
fexp:Z -> Z

forall 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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(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
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z

let '(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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z: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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z

(0 <= m')%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z

(0 <= m')%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z

(0 <= m1)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
(0 <= beta ^ (e1 - 2 * e))%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z

(0 <= beta ^ (e1 - 2 * e))%Z
apply Zpower_ge_0.
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * sqrt (bpow e)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR m' * (bpow e)²)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= (bpow e)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR (m1 * beta ^ (e1 - 2 * e)) * (bpow e * bpow e))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= (bpow e)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR m1 * bpow (e1 - 2 * e) * (bpow e * bpow e))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= (bpow e)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = sqrt (IZR m1 * bpow (e1 - 2 * e + (e + e)))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= (bpow e)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
(0 <= (bpow e)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z

(0 <= (bpow e)²)%R
apply Rle_0_sqr.
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R

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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf: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 |})) l
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z

m' = (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z

inbetween_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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z

inbetween (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z

inbetween (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z

(0 < bpow e)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
inbetween (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z

inbetween (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z

inbetween (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))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z

inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) SpecFloatCopy.loc_Exact
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
(* .. r = 0 *)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z

inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR q * IZR q)) SpecFloatCopy.loc_Exact
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z

inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR q)²) SpecFloatCopy.loc_Exact
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z

inbetween (IZR q) (IZR (q + 1)) (IZR q) SpecFloatCopy.loc_Exact
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z
(0 <= IZR q)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z

(0 <= IZR q)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r = 0%Z

(0 <= q)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

inbetween (IZR q) (IZR (q + 1)) (sqrt (IZR (q * q + r))) (SpecFloatCopy.loc_Inexact (if (r <=? q)%Z then Lt else Gt))
(* .. r <> 0 *)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR q < sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR q < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
(* ... bounds *)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR q <= sqrt (IZR (q * q)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR q <= sqrt (IZR q * IZR q))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR q <= sqrt (IZR q)²)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR q <= IZR q)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR q)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= q)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(sqrt (IZR (q * q)) < sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q * q))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q) < IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR q * IZR q)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q) < IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q) < IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q) < IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR (q * q) < IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(q * q < q * q + r)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(sqrt (IZR (q * q + r)) < IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(sqrt (IZR (q * q + r)) < sqrt (IZR ((q + 1) * (q + 1))))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q + 1) * IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR (q * q + r) < IZR ((q + 1) * (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(q * q + r < (q + 1) * (q + 1))%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(q ^ 2 + r < q ^ 2 + 2 * q + 1)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(sqrt (IZR ((q + 1) * (q + 1))) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(sqrt (IZR (q + 1) * IZR (q + 1)) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(sqrt (IZR (q + 1))² <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(IZR (q + 1) <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= q + 1)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (sqrt (IZR (q * q + r))) ((IZR q + IZR (q + 1)) / 2) = (if (r <=? q)%Z then Lt else Gt)
(* ... location *)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (2 * sqrt (IZR (q * q + r))) (IZR q + IZR (q + 1)) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (4 * IZR (q * q + r)) ((IZR q + IZR (q + 1)) * (IZR q + IZR (q + 1))) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

Rcompare (IZR (4 * (q * q + r))) (IZR ((q + (q + 1)) * (q + (q + 1)))) = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(4 * (q * q + r) ?= (q + (q + 1)) * (q + (q + 1)))%Z = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = (if (r <=? q)%Z then Lt else Gt)
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':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:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Hr'':(r <= q)%Z

(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Lt
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Hr'':(r > q)%Z
(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Gt
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Hr'':(r <= q)%Z

(4 * (q * q + r) < 4 * (q * q) + 4 * q + 1)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Hr'':(r > q)%Z
(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Gt
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Hr'':(r > q)%Z

(4 * (q * q + r) ?= 4 * (q * q) + 4 * q + 1)%Z = Gt
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
Hr'':(r > q)%Z

(4 * (q * q + r) > 4 * (q * q) + 4 * q + 1)%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q * q + r))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR m')%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR q + IZR (q + 1))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= IZR (q + (q + 1)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= q + (q + 1))%Z
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= 2 * sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= 2)%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z
(0 <= sqrt (IZR (q * q + r)))%R
beta:radix
fexp:Z -> Z
m1, e1, e:Z
Hm1:(0 < m1)%Z
He:(2 * e <= e1)%Z
m':=(m1 * beta ^ (e1 - 2 * e))%Z:Z
Hm':(0 <= m')%Z
Hf:sqrt (F2R {| Fnum := m1; Fexp := e1 |}) = (sqrt (IZR m') * bpow e)%R
q, r:Z
Hq:m' = (q * q + r)%Z
Hr:(0 <= r <= 2 * q)%Z
Hr':r <> 0%Z

(0 <= sqrt (IZR (q * q + r)))%R
apply 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:radix
fexp:Z -> Z

forall 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)) l
beta:radix
fexp:Z -> Z

forall 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)) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < F2R {| Fnum := m1; Fexp := e1 |})%R

let '(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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z

let '(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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z

let '(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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z

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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z

(2 * e <= e1)%Z
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z
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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z

(2 * e <= e1)%Z
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
H:(e <= Z.div2 e1)%Z

(2 * e <= e1)%Z
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
H:(e <= Z.div2 e1)%Z

(2 * e <= 2 * Z.div2 e1 + (if Z.odd e1 then 1 else 0))%Z
destruct Z.odd ; omega.
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z

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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z
m:Z
l:SpecFloatCopy.location

inbetween_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 |})) l
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z
m:Z
l:SpecFloatCopy.location

(e <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z
m:Z
l:SpecFloatCopy.location

(fexp (Z.div2 (Zdigits beta m1 + e1 + 1)) <= cexp beta fexp (sqrt (F2R {| Fnum := m1; Fexp := e1 |})))%Z
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z
m:Z
l:SpecFloatCopy.location

(fexp (Z.div2 (Zdigits beta m1 + e1 + 1)) <= fexp (mag beta (sqrt (F2R {| Fnum := m1; Fexp := e1 |}))))%Z
beta:radix
fexp:Z -> Z
m1, e1:Z
Hm1:(0 < m1)%Z
e:=Z.min (fexp (Z.div2 (Zdigits beta m1 + e1 + 1))) (Z.div2 e1):Z
He:(2 * e <= e1)%Z
m:Z
l:SpecFloatCopy.location

(fexp (Z.div2 (Zdigits beta m1 + e1 + 1)) <= fexp (Z.div2 (Zdigits beta m1 + e1 + 1)))%Z
apply Z.le_refl. Qed. End Fcalc_sqrt.