#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, float *);
main() {
  float a1, a2, a3, b1, b2, A, B, C;
  {
    printf("A=(1+a1/a2)/(1+a3/a2)+b1/b2+(a1*b1)/(a2+b2)\n");
    printf("B=10^3*b1+10^4*b2+a1/a2+a3\n");
    printf("C=1/2+2/a1+3/b1-4/a2-5/b2\n");
  }
a1:
  printf("a1=");
  scanf("%f", &a1);
  {
    if (a1 == 0)
      printf(
          "При а1=0 выражения не имеют смысл, число должно не равняться 0\n");
    if (a1 == 0)
      goto a1;
  }
a2:
  printf("a2=");
  scanf("%f", &a2);
  {
    if (a2 == 0)
      printf(
          "При a2=0 выражения не имеют смысл, число должно не равняться 0\n");
    if (a2 == 0)
      goto a2;
  }
a3:
  printf("a3=");
  scanf("%f", &a3);
  {
    if (a3 == 0)
      printf(
          "При a3=0 выражения не имеют смысл, число должно не равняться 0\n");
    if (a3 == 0)
      goto a3;
  }
b1:
  printf("b1=");
  scanf("%f", &b1);
  {
    if (b1 == 0)
      printf(
          "При b1=0 выражения не имеют смысл, число должно не равняться 0\n");
    if (b1 == 0)
      goto b1;
  }
b2:
  printf("b2=");
  scanf("%f", &b2);
  {
    if (b2 == 0)
      printf(
          "При b2=0 выражения не имеют смысл, число должно не равняться 0\n");
    if (b2 == 0)
      goto b2;
  }
  A = (1 + a1 / a2) / (1 + a3 / a2) + b1 / b2 + (a1 * b1) / (a2 + b2);
  B = 1000 * b1 + 10000 * b2 + a1 / a2 + a3;
  C = 1 / 2 + 2 / a1 + 3 / b1 - 4 / a2 - 5 / b2;
  printf("A=%f\n", A);
  printf("B=%f\n", B);
  printf("C=%f\n", C);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xee6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf05(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf13(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf16(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1040 <scanf@plt>
movss  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    119c <main+0x7c>
jp     119c <main+0x7c>
lea    0xef2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    11b8 <main+0x98>
jp     11b8 <main+0x98>
jmp    1159 <main+0x39>
jmp    11bd <main+0x9d>
lea    0xf32(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xeb2(%rip),%rdi
lea    -0xc(%rbp),%rsi
call   1040 <scanf@plt>
movss  -0xc(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1200 <main+0xe0>
jp     1200 <main+0xe0>
lea    0xf01(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0xc(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    121c <main+0xfc>
jp     121c <main+0xfc>
jmp    11bd <main+0x9d>
jmp    1221 <main+0x101>
lea    0xf40(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe4e(%rip),%rdi
lea    -0x10(%rbp),%rsi
call   1040 <scanf@plt>
movss  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1264 <main+0x144>
jp     1264 <main+0x144>
lea    0xf0f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1280 <main+0x160>
jp     1280 <main+0x160>
jmp    1221 <main+0x101>
jmp    1285 <main+0x165>
lea    0xf4e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdea(%rip),%rdi
lea    -0x14(%rbp),%rsi
call   1040 <scanf@plt>
movss  -0x14(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    12c8 <main+0x1a8>
jp     12c8 <main+0x1a8>
lea    0xf1d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x14(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    12e4 <main+0x1c4>
jp     12e4 <main+0x1c4>
jmp    1285 <main+0x165>
jmp    12e9 <main+0x1c9>
lea    0xf5c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd86(%rip),%rdi
lea    -0x18(%rbp),%rsi
call   1040 <scanf@plt>
movss  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    132c <main+0x20c>
jp     132c <main+0x20c>
lea    0xf2b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1348 <main+0x228>
jp     1348 <main+0x228>
jmp    12e9 <main+0x1c9>
movss  -0x8(%rbp),%xmm1
divss  -0xc(%rbp),%xmm1
movss  0xcbe(%rip),%xmm0
addss  %xmm1,%xmm0
movss  -0x10(%rbp),%xmm2
divss  -0xc(%rbp),%xmm2
movss  0xca8(%rip),%xmm1
addss  %xmm2,%xmm1
divss  %xmm1,%xmm0
movss  -0x14(%rbp),%xmm1
divss  -0x18(%rbp),%xmm1
addss  %xmm1,%xmm0
movss  -0x8(%rbp),%xmm1
mulss  -0x14(%rbp),%xmm1
movss  -0xc(%rbp),%xmm2
addss  -0x18(%rbp),%xmm2
divss  %xmm2,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x14(%rbp),%xmm0
movss  0xc60(%rip),%xmm1
mulss  -0x18(%rbp),%xmm1
movss  0xc4f(%rip),%xmm2
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  -0x8(%rbp),%xmm1
divss  -0xc(%rbp),%xmm1
addss  %xmm1,%xmm0
addss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  0xc23(%rip),%xmm1
divss  -0x8(%rbp),%xmm1
xorps  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  0xc0b(%rip),%xmm1
divss  -0x14(%rbp),%xmm1
addss  %xmm1,%xmm0
movss  0xbf6(%rip),%xmm1
divss  -0xc(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  0xbe1(%rip),%xmm1
divss  -0x18(%rbp),%xmm1
subss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x1c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe81(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movss  -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe70(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xe5f(%rip),%rdi
mov    $0x1,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x48,%rsp
lea    0xf1f(%rip),%rdi
call   1030 <puts@plt>
lea    0xf3f(%rip),%rdi
call   1030 <puts@plt>
lea    0xf4e(%rip),%rdi
call   1030 <puts@plt>
lea    0xed2(%rip),%r14
lea    0xecf(%rip),%r15
lea    0x18(%rsp),%rbx
lea    0x10fd(%rip),%r12
jmp    1187 <main+0x57>
nopl   0x0(%rax,%rax,1)
ucomiss %xmm1,%xmm0
jne    11bf <main+0x8f>
jp     11bf <main+0x8f>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1050 <scanf@plt>
xorps  %xmm1,%xmm1
movss  0x18(%rsp),%xmm0
ucomiss %xmm1,%xmm0
jne    1180 <main+0x50>
jp     1180 <main+0x50>
mov    %r12,%rdi
call   1030 <puts@plt>
xorps  %xmm1,%xmm1
movss  0x18(%rsp),%xmm0
jmp    1180 <main+0x50>
lea    0xe79(%rip),%r14
lea    0xe6f(%rip),%r15
lea    0x14(%rsp),%rbx
lea    0x1030(%rip),%r12
jmp    11e7 <main+0xb7>
nopl   0x0(%rax,%rax,1)
ucomiss %xmm1,%xmm0
jne    121f <main+0xef>
jp     121f <main+0xef>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1050 <scanf@plt>
xorps  %xmm1,%xmm1
movss  0x14(%rsp),%xmm0
ucomiss %xmm1,%xmm0
jne    11e0 <main+0xb0>
jp     11e0 <main+0xb0>
mov    %r12,%rdi
call   1030 <puts@plt>
xorps  %xmm1,%xmm1
movss  0x14(%rsp),%xmm0
jmp    11e0 <main+0xb0>
lea    0xe1d(%rip),%r14
lea    0xe0f(%rip),%r15
lea    0x10(%rsp),%rbx
lea    0xf63(%rip),%r12
jmp    1247 <main+0x117>
nopl   0x0(%rax,%rax,1)
ucomiss %xmm1,%xmm0
jne    127f <main+0x14f>
jp     127f <main+0x14f>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1050 <scanf@plt>
xorps  %xmm1,%xmm1
movss  0x10(%rsp),%xmm0
ucomiss %xmm1,%xmm0
jne    1240 <main+0x110>
jp     1240 <main+0x110>
mov    %r12,%rdi
call   1030 <puts@plt>
xorps  %xmm1,%xmm1
movss  0x10(%rsp),%xmm0
jmp    1240 <main+0x110>
lea    0xdc1(%rip),%r14
lea    0xdaf(%rip),%r15
lea    0xc(%rsp),%rbx
lea    0xe96(%rip),%r12
jmp    12a7 <main+0x177>
nopl   0x0(%rax,%rax,1)
ucomiss %xmm1,%xmm0
jne    12df <main+0x1af>
jp     12df <main+0x1af>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1050 <scanf@plt>
xorps  %xmm1,%xmm1
movss  0xc(%rsp),%xmm0
ucomiss %xmm1,%xmm0
jne    12a0 <main+0x170>
jp     12a0 <main+0x170>
mov    %r12,%rdi
call   1030 <puts@plt>
xorps  %xmm1,%xmm1
movss  0xc(%rsp),%xmm0
jmp    12a0 <main+0x170>
lea    0xd65(%rip),%r14
lea    0xd4f(%rip),%r15
lea    0x1c(%rsp),%rbx
lea    0xdc9(%rip),%r12
jmp    1307 <main+0x1d7>
nopl   0x0(%rax,%rax,1)
ucomiss %xmm1,%xmm0
jne    133f <main+0x20f>
jp     133f <main+0x20f>
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    %r15,%rdi
mov    %rbx,%rsi
call   1050 <scanf@plt>
xorps  %xmm1,%xmm1
movss  0x1c(%rsp),%xmm0
ucomiss %xmm1,%xmm0
jne    1300 <main+0x1d0>
jp     1300 <main+0x1d0>
mov    %r12,%rdi
call   1030 <puts@plt>
xorps  %xmm1,%xmm1
movss  0x1c(%rsp),%xmm0
jmp    1300 <main+0x1d0>
movss  0x18(%rsp),%xmm2
movss  0x14(%rsp),%xmm1
movss  0x10(%rsp),%xmm8
movaps %xmm2,%xmm4
unpcklps %xmm8,%xmm4
movaps %xmm1,%xmm5
shufps $0x0,%xmm1,%xmm5
divps  %xmm5,%xmm4
movaps 0xc96(%rip),%xmm6
addps  %xmm4,%xmm6
movaps %xmm6,%xmm5
shufps $0x55,%xmm6,%xmm5
divss  %xmm5,%xmm6
movss  0xc(%rsp),%xmm3
movaps %xmm2,%xmm7
mulss  %xmm3,%xmm7
movaps %xmm0,%xmm5
addss  %xmm1,%xmm5
unpcklps %xmm3,%xmm7
unpcklps %xmm0,%xmm5
divps  %xmm5,%xmm7
movaps %xmm7,%xmm5
shufps $0x55,%xmm7,%xmm5
addss  %xmm6,%xmm5
addss  %xmm7,%xmm5
movss  0xc84(%rip),%xmm6
mulss  %xmm0,%xmm6
unpcklps %xmm3,%xmm2
mulss  0xc79(%rip),%xmm3
addss  %xmm6,%xmm3
addss  %xmm4,%xmm3
addss  %xmm8,%xmm3
movaps %xmm3,0x30(%rsp)
movaps 0xc3c(%rip),%xmm3
divps  %xmm2,%xmm3
xorps  %xmm2,%xmm2
addss  %xmm3,%xmm2
shufps $0x55,%xmm3,%xmm3
addss  %xmm2,%xmm3
unpcklps %xmm0,%xmm1
movaps 0xc30(%rip),%xmm0
divps  %xmm1,%xmm0
subss  %xmm0,%xmm3
shufps $0x55,%xmm0,%xmm0
subss  %xmm0,%xmm3
movaps %xmm3,0x20(%rsp)
xorps  %xmm0,%xmm0
cvtss2sd %xmm5,%xmm0
lea    0xc3d(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x30(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc2c(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
movaps 0x20(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
lea    0xc1b(%rip),%rdi
mov    $0x1,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [45 x i8] c"A=(1+a1/a2)/(1+a3/a2)+b1/b2+(a1*b1)/(a2+b2)\0A\00"
@.str.1 = [28 x i8] c"B=10^3*b1+10^4*b2+a1/a2+a3\0A\00"
@.str.2 = [27 x i8] c"C=1/2+2/a1+3/b1-4/a2-5/b2\0A\00"
@.str.3 = [4 x i8] c"a1=\00"
@.str.4 = [3 x i8] c"%f\00"
@.str.5 = [111 x i8] c"\D0\9F\D1\80\D0\B8 \D0\B01=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\0A\00"
@.str.6 = [4 x i8] c"a2=\00"
@.str.7 = [110 x i8] c"\D0\9F\D1\80\D0\B8 a2=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\0A\00"
@.str.8 = [4 x i8] c"a3=\00"
@.str.9 = [110 x i8] c"\D0\9F\D1\80\D0\B8 a3=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\0A\00"
@.str.10 = [4 x i8] c"b1=\00"
@.str.11 = [110 x i8] c"\D0\9F\D1\80\D0\B8 b1=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\0A\00"
@.str.12 = [4 x i8] c"b2=\00"
@.str.13 = [110 x i8] c"\D0\9F\D1\80\D0\B8 b2=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\0A\00"
@.str.14 = [6 x i8] c"A=%f\0A\00"
@.str.15 = [6 x i8] c"B=%f\0A\00"
@.str.16 = [6 x i8] c"C=%f\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
store i32 0, i32* %1
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.1, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
br label %13
13: ; preds = %23, %0
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%15 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %2)
%16 = load float, float* %2
%17 = fcmp oeq float %16, 0.000000e+00
br i1 %17, label %18, label %20
18: ; preds = %13
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([111 x i8], [111 x i8]* @.str.5, i64 0, i64 0))
br label %20
20: ; preds = %18, %13
%21 = load float, float* %2
%22 = fcmp oeq float %21, 0.000000e+00
br i1 %22, label %23, label %24
23: ; preds = %20
br label %13
24: ; preds = %20
br label %25
25: ; preds = %35, %24
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%27 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %3)
%28 = load float, float* %3
%29 = fcmp oeq float %28, 0.000000e+00
br i1 %29, label %30, label %32
30: ; preds = %25
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.7, i64 0, i64 0))
br label %32
32: ; preds = %30, %25
%33 = load float, float* %3
%34 = fcmp oeq float %33, 0.000000e+00
br i1 %34, label %35, label %36
35: ; preds = %32
br label %25
36: ; preds = %32
br label %37
37: ; preds = %47, %36
%38 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%39 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %4)
%40 = load float, float* %4
%41 = fcmp oeq float %40, 0.000000e+00
br i1 %41, label %42, label %44
42: ; preds = %37
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.9, i64 0, i64 0))
br label %44
44: ; preds = %42, %37
%45 = load float, float* %4
%46 = fcmp oeq float %45, 0.000000e+00
br i1 %46, label %47, label %48
47: ; preds = %44
br label %37
48: ; preds = %44
br label %49
49: ; preds = %59, %48
%50 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%51 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %5)
%52 = load float, float* %5
%53 = fcmp oeq float %52, 0.000000e+00
br i1 %53, label %54, label %56
54: ; preds = %49
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.11, i64 0, i64 0))
br label %56
56: ; preds = %54, %49
%57 = load float, float* %5
%58 = fcmp oeq float %57, 0.000000e+00
br i1 %58, label %59, label %60
59: ; preds = %56
br label %49
60: ; preds = %56
br label %61
61: ; preds = %71, %60
%62 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
%63 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %6)
%64 = load float, float* %6
%65 = fcmp oeq float %64, 0.000000e+00
br i1 %65, label %66, label %68
66: ; preds = %61
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([110 x i8], [110 x i8]* @.str.13, i64 0, i64 0))
br label %68
68: ; preds = %66, %61
%69 = load float, float* %6
%70 = fcmp oeq float %69, 0.000000e+00
br i1 %70, label %71, label %72
71: ; preds = %68
br label %61
72: ; preds = %68
%73 = load float, float* %2
%74 = load float, float* %3
%75 = fdiv float %73, %74
%76 = fadd float 1.000000e+00, %75
%77 = load float, float* %4
%78 = load float, float* %3
%79 = fdiv float %77, %78
%80 = fadd float 1.000000e+00, %79
%81 = fdiv float %76, %80
%82 = load float, float* %5
%83 = load float, float* %6
%84 = fdiv float %82, %83
%85 = fadd float %81, %84
%86 = load float, float* %2
%87 = load float, float* %5
%88 = fmul float %86, %87
%89 = load float, float* %3
%90 = load float, float* %6
%91 = fadd float %89, %90
%92 = fdiv float %88, %91
%93 = fadd float %85, %92
store float %93, float* %7
%94 = load float, float* %5
%95 = load float, float* %6
%96 = fmul float 1.000000e+04, %95
%97 = call float @llvm.fmuladd.f32(float 1.000000e+03, float %94, float %96)
%98 = load float, float* %2
%99 = load float, float* %3
%100 = fdiv float %98, %99
%101 = fadd float %97, %100
%102 = load float, float* %4
%103 = fadd float %101, %102
store float %103, float* %8
%104 = load float, float* %2
%105 = fdiv float 2.000000e+00, %104
%106 = fadd float 0.000000e+00, %105
%107 = load float, float* %5
%108 = fdiv float 3.000000e+00, %107
%109 = fadd float %106, %108
%110 = load float, float* %3
%111 = fdiv float 4.000000e+00, %110
%112 = fsub float %109, %111
%113 = load float, float* %6
%114 = fdiv float 5.000000e+00, %113
%115 = fsub float %112, %114
store float %115, float* %9
%116 = load float, float* %7
%117 = fpext float %116 to double
%118 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), double %117)
%119 = load float, float* %8
%120 = fpext float %119 to double
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), double %120)
%122 = load float, float* %9
%123 = fpext float %122 to double
%124 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0), double %123)
ret i32 0
}

LLVM IR (-O2):
@.str.3 = [4 x i8] c"a1=\00"
@.str.4 = [3 x i8] c"%f\00"
@.str.6 = [4 x i8] c"a2=\00"
@.str.8 = [4 x i8] c"a3=\00"
@.str.10 = [4 x i8] c"b1=\00"
@.str.12 = [4 x i8] c"b2=\00"
@.str.14 = [6 x i8] c"A=%f\0A\00"
@.str.15 = [6 x i8] c"B=%f\0A\00"
@.str.16 = [6 x i8] c"C=%f\0A\00"
@str = [44 x i8] c"A=(1+a1/a2)/(1+a3/a2)+b1/b2+(a1*b1)/(a2+b2)\00"
@str.17 = [27 x i8] c"B=10^3*b1+10^4*b2+a1/a2+a3\00"
@str.18 = [26 x i8] c"C=1/2+2/a1+3/b1-4/a2-5/b2\00"
@str.19 = [109 x i8] c"\D0\9F\D1\80\D0\B8 b2=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\00"
@str.20 = [109 x i8] c"\D0\9F\D1\80\D0\B8 b1=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\00"
@str.21 = [109 x i8] c"\D0\9F\D1\80\D0\B8 a3=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\00"
@str.22 = [109 x i8] c"\D0\9F\D1\80\D0\B8 a2=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\00"
@str.23 = [110 x i8] c"\D0\9F\D1\80\D0\B8 \D0\B01=0 \D0\B2\D1\8B\D1\80\D0\B0\D0\B6\D0\B5\D0\BD\D0\B8\D1\8F \D0\BD\D0\B5 \D0\B8\D0\BC\D0\B5\D1\8E\D1\82 \D1\81\D0\BC\D1\8B\D1\81\D0\BB, \D1\87\D0\B8\D1\81\D0\BB\D0\BE \D0\B4\D0\BE\D0\BB\D0\B6\D0\BD\D0\BE \D0\BD\D0\B5 \D1\80\D0\B0\D0\B2\D0\BD\D1\8F\D1\82\D1\8C\D1\81\D1\8F 0\00"
define i32 @main() {
%1 = alloca float
%2 = alloca float
%3 = alloca float
%4 = alloca float
%5 = alloca float
%6 = bitcast float* %1 to i8*
%7 = bitcast float* %2 to i8*
%8 = bitcast float* %3 to i8*
%9 = bitcast float* %4 to i8*
%10 = bitcast float* %5 to i8*
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.17, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @str.18, i64 0, i64 0))
br label %14
14: ; preds = %22, %0
%15 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%16 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %1)
%17 = load float, float* %1
%18 = fcmp oeq float %17, 0.000000e+00
br i1 %18, label %19, label %22
19: ; preds = %14
%20 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([110 x i8], [110 x i8]* @str.23, i64 0, i64 0))
%21 = load float, float* %1
br label %22
22: ; preds = %19, %14
%23 = phi float [ %21, %19 ], [ %17, %14 ]
%24 = fcmp oeq float %23, 0.000000e+00
br i1 %24, label %14, label %25
25: ; preds = %22, %33
%26 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%27 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %2)
%28 = load float, float* %2
%29 = fcmp oeq float %28, 0.000000e+00
br i1 %29, label %30, label %33
30: ; preds = %25
%31 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([109 x i8], [109 x i8]* @str.22, i64 0, i64 0))
%32 = load float, float* %2
br label %33
33: ; preds = %30, %25
%34 = phi float [ %32, %30 ], [ %28, %25 ]
%35 = fcmp oeq float %34, 0.000000e+00
br i1 %35, label %25, label %36
36: ; preds = %33, %44
%37 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%38 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %3)
%39 = load float, float* %3
%40 = fcmp oeq float %39, 0.000000e+00
br i1 %40, label %41, label %44
41: ; preds = %36
%42 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([109 x i8], [109 x i8]* @str.21, i64 0, i64 0))
%43 = load float, float* %3
br label %44
44: ; preds = %41, %36
%45 = phi float [ %43, %41 ], [ %39, %36 ]
%46 = fcmp oeq float %45, 0.000000e+00
br i1 %46, label %36, label %47
47: ; preds = %44, %55
%48 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%49 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %4)
%50 = load float, float* %4
%51 = fcmp oeq float %50, 0.000000e+00
br i1 %51, label %52, label %55
52: ; preds = %47
%53 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([109 x i8], [109 x i8]* @str.20, i64 0, i64 0))
%54 = load float, float* %4
br label %55
55: ; preds = %52, %47
%56 = phi float [ %54, %52 ], [ %50, %47 ]
%57 = fcmp oeq float %56, 0.000000e+00
br i1 %57, label %47, label %58
58: ; preds = %55, %66
%59 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
%60 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), float* %5)
%61 = load float, float* %5
%62 = fcmp oeq float %61, 0.000000e+00
br i1 %62, label %63, label %66
63: ; preds = %58
%64 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([109 x i8], [109 x i8]* @str.19, i64 0, i64 0))
%65 = load float, float* %5
br label %66
66: ; preds = %63, %58
%67 = phi float [ %65, %63 ], [ %61, %58 ]
%68 = fcmp oeq float %67, 0.000000e+00
br i1 %68, label %58, label %69
69: ; preds = %66
%70 = load float, float* %1
%71 = load float, float* %2
%72 = load float, float* %3
%73 = insertelement <2 x float> poison, float %70, i64 0
%74 = insertelement <2 x float> %73, float %72, i64 1
%75 = insertelement <2 x float> poison, float %71, i64 0
%76 = shufflevector <2 x float> %75, <2 x float> poison, <2 x i32> zeroinitializer
%77 = fdiv <2 x float> %74, %76
%78 = fadd <2 x float> %77, <float 1.000000e+00, float 1.000000e+00>
%79 = extractelement <2 x float> %78, i64 0
%80 = extractelement <2 x float> %78, i64 1
%81 = fdiv float %79, %80
%82 = load float, float* %4
%83 = fmul float %70, %82
%84 = fadd float %67, %71
%85 = insertelement <2 x float> poison, float %83, i64 0
%86 = insertelement <2 x float> %85, float %82, i64 1
%87 = insertelement <2 x float> poison, float %84, i64 0
%88 = insertelement <2 x float> %87, float %67, i64 1
%89 = fdiv <2 x float> %86, %88
%90 = extractelement <2 x float> %89, i64 1
%91 = fadd float %90, %81
%92 = extractelement <2 x float> %89, i64 0
%93 = fadd float %92, %91
%94 = fmul float %67, 1.000000e+04
%95 = call float @llvm.fmuladd.f32(float %82, float 1.000000e+03, float %94)
%96 = extractelement <2 x float> %77, i64 0
%97 = fadd float %96, %95
%98 = fadd float %72, %97
%99 = insertelement <2 x float> %73, float %82, i64 1
%100 = fdiv <2 x float> <float 2.000000e+00, float 3.000000e+00>, %99
%101 = extractelement <2 x float> %100, i64 0
%102 = fadd float %101, 0.000000e+00
%103 = extractelement <2 x float> %100, i64 1
%104 = fadd float %102, %103
%105 = insertelement <2 x float> %75, float %67, i64 1
%106 = fdiv <2 x float> <float 4.000000e+00, float 5.000000e+00>, %105
%107 = extractelement <2 x float> %106, i64 0
%108 = fsub float %104, %107
%109 = extractelement <2 x float> %106, i64 1
%110 = fsub float %108, %109
%111 = fpext float %93 to double
%112 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.14, i64 0, i64 0), double %111)
%113 = fpext float %98 to double
%114 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.15, i64 0, i64 0), double %113)
%115 = fpext float %110 to double
%116 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0), double %115)
ret i32 0
}