Research-Stack/0-Core-Formalism/lean/Semantics/debug_eval.lean

16 lines
515 B
Text

import Semantics.FixedPoint
open Semantics
namespace CoarseGraining
def coarseGrainFactor (loopIter : Nat) (maxLoops : Nat) : Q16_16 :=
if maxLoops = 0 then Q16_16.one
else if loopIter >= maxLoops then Q16_16.ofFloat 0.5 -- Minimum 50% precision
else
let ratio := Q16_16.ofNat loopIter / Q16_16.ofNat maxLoops
let factor := Q16_16.one - (ratio * Q16_16.ofFloat 0.5) -- Linear decay to 50%
Q16_16.max (Q16_16.ofFloat 0.5) factor
end CoarseGraining
#eval CoarseGraining.coarseGrainFactor 5 10