Skip to content
Snippets Groups Projects
Select Git revision
  • 0693e41b43ce776b34d9407871f76d37f9383214
  • master default protected
  • rust
  • extract-fix-master
  • extract-fix
  • extract-fix-1.0.0
6 results

ringdecision.mlw

Blame
  • polypaver.mlw 538 B
    
    module TestFloat
    
      use import floating_point.Double
    
      function Sqrt (X : in Float) return Float
    
    pre  1.0 <= X and X <= 2.0;
    	--# return R =>
    	--# 	R <= (1.0+4.0*PolyPaver.Floats.Eps_Rel)*PolyPaver.Exact.Sqrt(X);
    	is
    		R,S : Float;
    	begin
    		S := X;
    		R := PolyPaver.Floats.Add(PolyPaver.Floats.Multiply(0.5,X),0.5);
    		while R /= s loop
    			--# assert R in -0.25*X**2+X .. 0.25*X**2+1.0 ;
    			S := r;
    			R := PolyPaver.Floats.Multiply(0.5,
    				PolyPaver.Floats.Add(S,PolyPaver.Floats.Divide(X,S)));
    	   end loop;
    	   return R;
    	end Sqrt;