Commit aa554a31 by MARCHE Claude

### update proofs of my_cosine.why

parent eefb88cd
 ... ... @@ -11,16 +11,16 @@ use import floating_point.Single lemma MethodError: forall x:real. abs x <= 0x1p-5 -> abs (1.0 - 0.5 * (x * x) - cos x) <= 0x1p-24 (* this one is proved in Coq + interval tactics *) abs (1.0 - 0.5 * (x * x) - cos x) <= 0x1p-24 (* this one is proved in Coq + interval tactics *) (* computation in single precision *) lemma TotalErrorFullyExpanded: lemma TotalErrorFullyExpanded: forall x:single. abs (value x) <= 0x1p-5 -> (* total error as hypothesis, for Gappa *) abs (1.0 - 0.5 * (value x * value x) - cos (value x)) <= 0x1p-24 -> abs (1.0 - 0.5 * (value x * value x) - cos (value x)) <= 0x1p-24 -> forall x2 x2o2 cos_x: real. x2 = round NearestTiesToEven (value x * value x) -> x2o2 = round NearestTiesToEven (0.5 * x2) -> ... ... @@ -28,7 +28,7 @@ lemma TotalErrorFullyExpanded: abs (cos_x - cos (value x)) <= 0x1p-23 (* fully expanded version, proved by gappa *) lemma TotalErrorExpanded: lemma TotalErrorExpanded: forall x:single. abs (value x) <= 0x1p-5 -> let x2 = round NearestTiesToEven (value x * value x) in let x2o2 = round NearestTiesToEven (0.5 * x2) in ... ... @@ -40,13 +40,13 @@ lemma TotalErrorExpanded: function round_single (m:mode) (x:real) : single axiom RoundSingle: forall m:mode, x:real. axiom RoundSingle: forall m:mode, x:real [value (round_single m x)]. value (round_single m x) = round m x function cos_single (x:single) : single = let x2 = round_single NearestTiesToEven (value x * value x) in let x2o2 = round_single NearestTiesToEven (0.5 * value x2) in round_single NearestTiesToEven (1.0 - value x2o2) round_single NearestTiesToEven (1.0 - value x2o2) lemma TotalError: forall x:single. abs (value x) <= 0x1p-5 -> let cos_x = cos_single x in ... ... @@ -57,7 +57,7 @@ end (* Local Variables: compile-command: "../bin/whyide.byte my_cosine.why" compile-command: "../bin/why3ide.byte my_cosine.why" End: *) ... ...
 ... ...
 ... ... @@ -728,8 +728,10 @@ let (_ : GMenu.image_menu_item) = let refresh_provers = ref (fun () -> ()) let add_refresh_provers f msg = let add_refresh_provers f _msg = (* eprintf "[Info] recording '%s' for refresh provers@." msg; *) let rp = !refresh_provers in refresh_provers := (fun () -> rp (); f ()) ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!