#include <perms.h>

                                                                //      1  %realfn sqrt(%real x)
#line 1 "regression-bugs-tmp/sqrt.imp"
float SQRT( float X )
#line 1 "regression-bugs-tmp/sqrt.imp"
{
  __label__ _imp_endofblock;
                                                                //      2    %constreal c1 = 0.70710680,  { 1/sqrt(2)}
_imp_current_line = 2; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 2 "regression-bugs-tmp/sqrt.imp"
const float C1 = 0.70710680;
#line 2 "regression-bugs-tmp/sqrt.imp"
const float C2 = 0.590162067;
#line 2 "regression-bugs-tmp/sqrt.imp"
const float C3 = 1.4142135;
                                                                //      3               c2 = 0.590162067,
                                                                //      4               c3 = 1.4142135    { sqrt(2)  }
                                                                //      5    %real s
_imp_current_line = 5; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 5 "regression-bugs-tmp/sqrt.imp"
float S;
                                                                //      6    %integer e
_imp_current_line = 6; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 6 "regression-bugs-tmp/sqrt.imp"
int E;
                                                                //      7    !%if x > 0.0 %then UNPK(x, e)
                                                                //      8    s = c2 * (x+c1)
_imp_current_line = 8; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 8 "regression-bugs-tmp/sqrt.imp"
S = ((C2) * ((float)((((float)(X)) + (C1)))));
                                                                //      9    s = s +         x/s;
_imp_current_line = 9; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 9 "regression-bugs-tmp/sqrt.imp"
S = ((S) + (((double)((double)((float)(X)) / (double)((float)(S))))));
                                                                //     10    s = 0.25 *  s + x/s;
_imp_current_line = 10; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 10 "regression-bugs-tmp/sqrt.imp"
S = ((((0.25) * ((double)(S)))) + (((double)((double)((float)(X)) / (double)((float)(S))))));
                                                                //     11    s = 0.5  * (s + x/s);
_imp_current_line = 11; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 11 "regression-bugs-tmp/sqrt.imp"
S = ((0.5) * ((double)(((S) + (((double)((double)((float)(X)) / (double)((float)(S)))))))));
                                                                //     12    !%if ODD(e) %then s = c3*s {%and PACK(s, e DIV 2)} %else s = 0.0
                                                                //     13    %result = s
_imp_current_line = 13; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 13 "regression-bugs-tmp/sqrt.imp"
return S;
                                                                //     14  %end { sqrt }
_imp_current_line = 14; _imp_current_file = "regression-bugs-tmp/sqrt.imp";
#line 14 "regression-bugs-tmp/sqrt.imp"
_imp_endofblock: ;
} // End of block SQRT at level 1
                                                                //     15  
                                                                //     16  %endoffile
#line 16 "regression-bugs-tmp/sqrt.imp"
// End of file
