void main() {
  float m, n;
  print("Ââåäèòå ÷èñëî");
  getid(n);
  m = n;
  while (abs(n * n - m) > 1e-6)
    n = (n + m / n) / 2;
  print("Êâàäðàòíûé êîðåíü èç ÷èñëà\n");
  print(n);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
lea    0xecd(%rip),%rdi
mov    $0x0,%al
call   1050 <print@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    $0x1,%al
call   1040 <getid@plt>
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x8(%rbp),%xmm0
movss  -0x8(%rbp),%xmm2
movss  -0x4(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%edi
call   1030 <abs@plt>
cvtsi2sd %eax,%xmm0
movsd  0xe67(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    11cc <main+0x9c>
movss  -0x8(%rbp),%xmm0
movss  -0x4(%rbp),%xmm1
divss  -0x8(%rbp),%xmm1
addss  %xmm1,%xmm0
movss  0xe4a(%rip),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x8(%rbp)
jmp    1160 <main+0x30>
lea    0xe53(%rip),%rdi
mov    $0x0,%al
call   1050 <print@plt>
movss  -0x8(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
mov    $0x1,%al
call   1050 <print@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
lea    0xee0(%rip),%rdi
xor    %eax,%eax
call   1040 <print@plt>
mov    $0x1,%al
call   1030 <getid@plt>
lea    0xee5(%rip),%rdi
xor    %eax,%eax
call   1040 <print@plt>
movsd  0xeb4(%rip),%xmm0
mov    $0x1,%al
pop    %rcx
jmp    1040 <print@plt>

LLVM IR (-O0):
@.str = [26 x i8] c"\C3\82\C3\A2\C3\A5\C3\A4\C3\A8\C3\B2\C3\A5 \C3\B7\C3\A8\C3\B1\C3\AB\C3\AE\00"
@.str.1 = [51 x i8] c"\C3\8A\C3\A2\C3\A0\C3\A4\C3\B0\C3\A0\C3\B2\C3\AD\C3\BB\C3\A9 \C3\AA\C3\AE\C3\B0\C3\A5\C3\AD\C3\BC \C3\A8\C3\A7 \C3\B7\C3\A8\C3\B1\C3\AB\C3\A0\0A\00"
define void @main() {
%1 = alloca float
%2 = alloca float
%3 = call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0))
%4 = load float, float* %2
%5 = fpext float %4 to double
%6 = call i32 (double, ...) bitcast (i32 (...)* @getid to i32 (double, ...)*)(double %5)
%7 = load float, float* %2
store float %7, float* %1
br label %8
8: ; preds = %18, %0
%9 = load float, float* %2
%10 = load float, float* %2
%11 = load float, float* %1
%12 = fneg float %11
%13 = call float @llvm.fmuladd.f32(float %9, float %10, float %12)
%14 = fptosi float %13 to i32
%15 = call i32 @abs(i32 %14)
%16 = sitofp i32 %15 to double
%17 = fcmp ogt double %16, 0x3EB0C6F7A0B5ED8D
br i1 %17, label %18, label %25
18: ; preds = %8
%19 = load float, float* %2
%20 = load float, float* %1
%21 = load float, float* %2
%22 = fdiv float %20, %21
%23 = fadd float %19, %22
%24 = fdiv float %23, 2.000000e+00
store float %24, float* %2
br label %8
25: ; preds = %8
%26 = call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0))
%27 = load float, float* %2
%28 = fpext float %27 to double
%29 = call i32 (double, ...) bitcast (i32 (...)* @print to i32 (double, ...)*)(double %28)
ret void
}

LLVM IR (-O2):
@.str = [26 x i8] c"\C3\82\C3\A2\C3\A5\C3\A4\C3\A8\C3\B2\C3\A5 \C3\B7\C3\A8\C3\B1\C3\AB\C3\AE\00"
@.str.1 = [51 x i8] c"\C3\8A\C3\A2\C3\A0\C3\A4\C3\B0\C3\A0\C3\B2\C3\AD\C3\BB\C3\A9 \C3\AA\C3\AE\C3\B0\C3\A5\C3\AD\C3\BC \C3\A8\C3\A7 \C3\B7\C3\A8\C3\B1\C3\AB\C3\A0\0A\00"
define void @main() {
%1 = tail call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 (double, ...) bitcast (i32 (...)* @getid to i32 (double, ...)*)(double undef)
%3 = tail call i32 (i8*, ...) bitcast (i32 (...)* @print to i32 (i8*, ...)*)(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.1, i64 0, i64 0))
%4 = tail call i32 (double, ...) bitcast (i32 (...)* @print to i32 (double, ...)*)(double 0x7FF8000000000000)
ret void
}