#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 */
double acosh(int);
int cos(int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
int main() {
  double a, x, G, F, Y;
  char b;
  printf("Введите значение переменной а = ");
  scanf("%lf", &a);
  printf("Введите значение переменной x = ");
  scanf("%lf", &x);
  if (((15 * a * a + 29 * a * x + 12 * x * x) >= -0.00001 &&
       (15 * a * a + 29 * a * x + 12 * x * x) <= 0.00001) ||
      (cos(5 * a * a + 14 * a * x - 3 * x * x) >= -0.00001 &&
       cos(5 * a * a + 14 * a * x - 3 * x * x) <= 0.00001) ||
      ((9 * a * a + 42 * a * x + 40 * x * x + 1) <= 1))
    printf("Входные данные не подлежат области определения функции");
  else {
    printf("%s\n", "Вычислить функцию G,F,Y");
    printf("%s", "Выберите функцию: ");
    scanf("%s", &b);
    switch (b) {
    case 'G':
      G = (4 * a * a + 3 * a * x + 10 * x * x) /
          (15 * a * a + 29 * a * x + 12 * x * x);
      printf("%s%f\n", "G = ", G);
      break;
    case 'F':
      F = 1 / cos(5 * a * a + 14 * a * x - 3 * x * x);
      printf("%s%f\n", "F = ", F);
      break;
    case 'Y':
      Y = acosh(9 * a * a + 42 * a * x + 40 * x * x + 1);
      printf("%s%f\n", "Y = ", Y);
      break;
    default:
      printf("%s\n", "Ошибка");
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xf1a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf47(%rip),%rdi
lea    -0x10(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xf39(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf27(%rip),%rdi
lea    -0x18(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movsd  0xe81(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  0xe67(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xe45(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xe23(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     123f <main+0xff>
movsd  0xe29(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  0xe0f(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xded(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xdeb(%rip),%xmm0
ucomisd %xmm1,%xmm0
jae    139b <main+0x25b>
movsd  0xdf1(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  0xdd7(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xdb5(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <cos@plt>
cvtsi2sd %eax,%xmm0
movsd  0xd4f(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1337 <main+0x1f7>
movsd  0xd75(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  0xd5b(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd39(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <cos@plt>
cvtsi2sd %eax,%xmm1
movsd  0xcf3(%rip),%xmm0
ucomisd %xmm1,%xmm0
jae    139b <main+0x25b>
movsd  0xd19(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm2
movsd  0xcff(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xcdd(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xcbb(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0xcaf(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     13ae <main+0x26e>
lea    0xd47(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    160c <main+0x4cc>
lea    0xd9b(%rip),%rdi
lea    0xd98(%rip),%rsi
xor    %eax,%eax
mov    %al,-0x39(%rbp)
call   1030 <printf@plt>
mov    -0x39(%rbp),%al
lea    0xdac(%rip),%rdi
mov    %rdi,-0x48(%rbp)
lea    0xda4(%rip),%rsi
call   1030 <printf@plt>
mov    -0x48(%rbp),%rdi
mov    -0x39(%rbp),%al
lea    -0x31(%rbp),%rsi
call   1050 <scanf@plt>
movsbl -0x31(%rbp),%eax
mov    %eax,-0x38(%rbp)
sub    $0x46,%eax
je     14db <main+0x39b>
jmp    1405 <main+0x2c5>
mov    -0x38(%rbp),%eax
sub    $0x47,%eax
je     1427 <main+0x2e7>
jmp    1416 <main+0x2d6>
mov    -0x38(%rbp),%eax
sub    $0x59,%eax
je     1573 <main+0x433>
jmp    15f2 <main+0x4b2>
movsd  0xc39(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  0xbe7(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xc05(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xba3(%rip),%xmm2
mulsd  -0x10(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm3
movsd  0xb89(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
mulsd  -0x18(%rbp),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0xb67(%rip),%xmm1
mulsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
lea    0xcd9(%rip),%rdi
lea    0xcd8(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1607 <main+0x4c7>
movsd  0xb55(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  0xb3b(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xb19(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1060 <cos@plt>
mov    %eax,%ecx
mov    $0x1,%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
lea    0xc41(%rip),%rdi
lea    0xc45(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1607 <main+0x4c7>
movsd  0xadd(%rip),%xmm1
mulsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  0xac3(%rip),%xmm0
mulsd  -0x10(%rbp),%xmm0
mulsd  -0x18(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xaa1(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xa7f(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
call   1040 <acosh@plt>
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
lea    0xbc2(%rip),%rdi
lea    0xbcb(%rip),%rsi
mov    $0x1,%al
call   1030 <printf@plt>
jmp    1607 <main+0x4c7>
lea    0xb57(%rip),%rdi
lea    0xbb6(%rip),%rsi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    160c <main+0x4cc>
xor    %eax,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
sub    $0x18,%rsp
lea    0xf33(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf60(%rip),%rbx
lea    0x10(%rsp),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
lea    0xf4e(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x8(%rsp),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
movsd  0x10(%rsp),%xmm0
movsd  0xe5b(%rip),%xmm3
mulsd  %xmm0,%xmm3
movsd  0xe57(%rip),%xmm2
mulsd  %xmm0,%xmm2
movsd  0x8(%rsp),%xmm1
mulsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
movsd  0xe41(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm3,%xmm2
ucomisd 0xe35(%rip),%xmm2
jb     11f7 <main+0xa7>
movsd  0xe33(%rip),%xmm3
ucomisd %xmm2,%xmm3
jae    139b <main+0x24b>
movsd  0xe29(%rip),%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0xe21(%rip),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
movsd  0xe19(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
cvttsd2si %xmm2,%edi
call   1070 <cos@plt>
test   %eax,%eax
js     1289 <main+0x139>
movsd  0x10(%rsp),%xmm0
movsd  0xde2(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xdda(%rip),%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xdcc(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
call   1070 <cos@plt>
test   %eax,%eax
jle    139b <main+0x24b>
movsd  0x10(%rsp),%xmm0
movsd  0xda9(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xda1(%rip),%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xd93(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xd87(%rip),%xmm0
addsd  %xmm0,%xmm1
ucomisd %xmm1,%xmm0
jae    139b <main+0x24b>
lea    0xe8a(%rip),%rdi
call   1030 <puts@plt>
lea    0xea6(%rip),%rbx
lea    0xea2(%rip),%rsi
xor    %ebp,%ebp
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0x7(%rsp),%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
movsbl 0x7(%rsp),%eax
cmp    $0x46,%eax
je     13b2 <main+0x262>
cmp    $0x59,%eax
je     141b <main+0x2cb>
cmp    $0x47,%eax
jne    1486 <main+0x336>
movsd  0x10(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
movapd 0xd1a(%rip),%xmm0
mulpd  %xmm1,%xmm0
mulpd  %xmm1,%xmm0
mulpd  0xd1a(%rip),%xmm1
movsd  0x8(%rsp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm1
addpd  %xmm0,%xmm1
movapd 0xd10(%rip),%xmm0
mulpd  %xmm2,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
unpckhpd %xmm0,%xmm1
divsd  %xmm1,%xmm0
lea    0xe2e(%rip),%rdi
lea    0xe2d(%rip),%rsi
jmp    147a <main+0x32a>
lea    0xd67(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %rbp
ret
movsd  0x10(%rsp),%xmm0
movsd  0xc68(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xc60(%rip),%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xc52(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%edi
call   1070 <cos@plt>
lea    0x1(%rax),%ecx
cmp    $0x3,%ecx
cmovb  %eax,%ebp
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
lea    0xdab(%rip),%rdi
lea    0xdaf(%rip),%rsi
jmp    147a <main+0x32a>
movsd  0x10(%rsp),%xmm0
movsd  0xc17(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xc0f(%rip),%xmm0
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0xc01(%rip),%xmm1
mulsd  %xmm2,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
addsd  0xbf5(%rip),%xmm1
cvttsd2si %xmm1,%edi
call   1050 <acosh@plt>
lea    0xd4a(%rip),%rdi
lea    0xd53(%rip),%rsi
mov    $0x1,%al
call   1040 <printf@plt>
jmp    13a9 <main+0x259>
lea    0xd45(%rip),%rdi
call   1030 <puts@plt>
jmp    13a9 <main+0x259>

LLVM IR (-O0):
@.str = [59 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 \D0\BF\D0\B5\D1\80\D0\B5\D0\BC\D0\B5\D0\BD\D0\BD\D0\BE\D0\B9 \D0\B0 = \00"
@.str.1 = [4 x i8] c"%lf\00"
@.str.2 = [58 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 \D0\BF\D0\B5\D1\80\D0\B5\D0\BC\D0\B5\D0\BD\D0\BD\D0\BE\D0\B9 x = \00"
@.str.3 = [103 x i8] c"\D0\92\D1\85\D0\BE\D0\B4\D0\BD\D1\8B\D0\B5 \D0\B4\D0\B0\D0\BD\D0\BD\D1\8B\D0\B5 \D0\BD\D0\B5 \D0\BF\D0\BE\D0\B4\D0\BB\D0\B5\D0\B6\D0\B0\D1\82 \D0\BE\D0\B1\D0\BB\D0\B0\D1\81\D1\82\D0\B8 \D0\BE\D0\BF\D1\80\D0\B5\D0\B4\D0\B5\D0\BB\D0\B5\D0\BD\D0\B8\D1\8F \D1\84\D1\83\D0\BD\D0\BA\D1\86\D0\B8\D0\B8\00"
@.str.4 = [4 x i8] c"%s\0A\00"
@.str.5 = [40 x i8] c"\D0\92\D1\8B\D1\87\D0\B8\D1\81\D0\BB\D0\B8\D1\82\D1\8C \D1\84\D1\83\D0\BD\D0\BA\D1\86\D0\B8\D1\8E G,F,Y\00"
@.str.6 = [3 x i8] c"%s\00"
@.str.7 = [34 x i8] c"\D0\92\D1\8B\D0\B1\D0\B5\D1\80\D0\B8\D1\82\D0\B5 \D1\84\D1\83\D0\BD\D0\BA\D1\86\D0\B8\D1\8E: \00"
@.str.8 = [6 x i8] c"%s%f\0A\00"
@.str.9 = [5 x i8] c"G = \00"
@.str.10 = [5 x i8] c"F = \00"
@.str.11 = [5 x i8] c"Y = \00"
@.str.12 = [13 x i8] c"\D0\9E\D1\88\D0\B8\D0\B1\D0\BA\D0\B0\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca i8
store i32 0, i32* %1
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str, i64 0, i64 0))
%9 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %2)
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.2, i64 0, i64 0))
%11 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %3)
%12 = load double, double* %2
%13 = fmul double 1.500000e+01, %12
%14 = load double, double* %2
%15 = load double, double* %2
%16 = fmul double 2.900000e+01, %15
%17 = load double, double* %3
%18 = fmul double %16, %17
%19 = call double @llvm.fmuladd.f64(double %13, double %14, double %18)
%20 = load double, double* %3
%21 = fmul double 1.200000e+01, %20
%22 = load double, double* %3
%23 = call double @llvm.fmuladd.f64(double %21, double %22, double %19)
%24 = fcmp oge double %23, -1.000000e-05
br i1 %24, label %25, label %39
25: ; preds = %0
%26 = load double, double* %2
%27 = fmul double 1.500000e+01, %26
%28 = load double, double* %2
%29 = load double, double* %2
%30 = fmul double 2.900000e+01, %29
%31 = load double, double* %3
%32 = fmul double %30, %31
%33 = call double @llvm.fmuladd.f64(double %27, double %28, double %32)
%34 = load double, double* %3
%35 = fmul double 1.200000e+01, %34
%36 = load double, double* %3
%37 = call double @llvm.fmuladd.f64(double %35, double %36, double %33)
%38 = fcmp ole double %37, 1.000000e-05
br i1 %38, label %90, label %39
39: ; preds = %25, %0
%40 = load double, double* %2
%41 = fmul double 5.000000e+00, %40
%42 = load double, double* %2
%43 = load double, double* %2
%44 = fmul double 1.400000e+01, %43
%45 = load double, double* %3
%46 = fmul double %44, %45
%47 = call double @llvm.fmuladd.f64(double %41, double %42, double %46)
%48 = load double, double* %3
%49 = fmul double 3.000000e+00, %48
%50 = load double, double* %3
%51 = fneg double %49
%52 = call double @llvm.fmuladd.f64(double %51, double %50, double %47)
%53 = fptosi double %52 to i32
%54 = call i32 @cos(i32 %53)
%55 = sitofp i32 %54 to double
%56 = fcmp oge double %55, -1.000000e-05
br i1 %56, label %57, label %75
57: ; preds = %39
%58 = load double, double* %2
%59 = fmul double 5.000000e+00, %58
%60 = load double, double* %2
%61 = load double, double* %2
%62 = fmul double 1.400000e+01, %61
%63 = load double, double* %3
%64 = fmul double %62, %63
%65 = call double @llvm.fmuladd.f64(double %59, double %60, double %64)
%66 = load double, double* %3
%67 = fmul double 3.000000e+00, %66
%68 = load double, double* %3
%69 = fneg double %67
%70 = call double @llvm.fmuladd.f64(double %69, double %68, double %65)
%71 = fptosi double %70 to i32
%72 = call i32 @cos(i32 %71)
%73 = sitofp i32 %72 to double
%74 = fcmp ole double %73, 1.000000e-05
br i1 %74, label %90, label %75
75: ; preds = %57, %39
%76 = load double, double* %2
%77 = fmul double 9.000000e+00, %76
%78 = load double, double* %2
%79 = load double, double* %2
%80 = fmul double 4.200000e+01, %79
%81 = load double, double* %3
%82 = fmul double %80, %81
%83 = call double @llvm.fmuladd.f64(double %77, double %78, double %82)
%84 = load double, double* %3
%85 = fmul double 4.000000e+01, %84
%86 = load double, double* %3
%87 = call double @llvm.fmuladd.f64(double %85, double %86, double %83)
%88 = fadd double %87, 1.000000e+00
%89 = fcmp ole double %88, 1.000000e+00
br i1 %89, label %90, label %92
90: ; preds = %75, %57, %25
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([103 x i8], [103 x i8]* @.str.3, i64 0, i64 0))
br label %167
92: ; preds = %75
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i64 0, i64 0))
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.7, i64 0, i64 0))
%95 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i8* %7)
%96 = load i8, i8* %7
%97 = sext i8 %96 to i32
switch i32 %97, label %164 [
i32 71, label %98
i32 70, label %126
i32 89, label %146
]
98: ; preds = %92
%99 = load double, double* %2
%100 = fmul double 4.000000e+00, %99
%101 = load double, double* %2
%102 = load double, double* %2
%103 = fmul double 3.000000e+00, %102
%104 = load double, double* %3
%105 = fmul double %103, %104
%106 = call double @llvm.fmuladd.f64(double %100, double %101, double %105)
%107 = load double, double* %3
%108 = fmul double 1.000000e+01, %107
%109 = load double, double* %3
%110 = call double @llvm.fmuladd.f64(double %108, double %109, double %106)
%111 = load double, double* %2
%112 = fmul double 1.500000e+01, %111
%113 = load double, double* %2
%114 = load double, double* %2
%115 = fmul double 2.900000e+01, %114
%116 = load double, double* %3
%117 = fmul double %115, %116
%118 = call double @llvm.fmuladd.f64(double %112, double %113, double %117)
%119 = load double, double* %3
%120 = fmul double 1.200000e+01, %119
%121 = load double, double* %3
%122 = call double @llvm.fmuladd.f64(double %120, double %121, double %118)
%123 = fdiv double %110, %122
store double %123, double* %4
%124 = load double, double* %4
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), double %124)
br label %166
126: ; preds = %92
%127 = load double, double* %2
%128 = fmul double 5.000000e+00, %127
%129 = load double, double* %2
%130 = load double, double* %2
%131 = fmul double 1.400000e+01, %130
%132 = load double, double* %3
%133 = fmul double %131, %132
%134 = call double @llvm.fmuladd.f64(double %128, double %129, double %133)
%135 = load double, double* %3
%136 = fmul double 3.000000e+00, %135
%137 = load double, double* %3
%138 = fneg double %136
%139 = call double @llvm.fmuladd.f64(double %138, double %137, double %134)
%140 = fptosi double %139 to i32
%141 = call i32 @cos(i32 %140)
%142 = sdiv i32 1, %141
%143 = sitofp i32 %142 to double
store double %143, double* %5
%144 = load double, double* %5
%145 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), double %144)
br label %166
146: ; preds = %92
%147 = load double, double* %2
%148 = fmul double 9.000000e+00, %147
%149 = load double, double* %2
%150 = load double, double* %2
%151 = fmul double 4.200000e+01, %150
%152 = load double, double* %3
%153 = fmul double %151, %152
%154 = call double @llvm.fmuladd.f64(double %148, double %149, double %153)
%155 = load double, double* %3
%156 = fmul double 4.000000e+01, %155
%157 = load double, double* %3
%158 = call double @llvm.fmuladd.f64(double %156, double %157, double %154)
%159 = fadd double %158, 1.000000e+00
%160 = fptosi double %159 to i32
%161 = call double @acosh(i32 %160)
store double %161, double* %6
%162 = load double, double* %6
%163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), double %162)
br label %166
164: ; preds = %92
%165 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i64 0, i64 0))
br label %166
166: ; preds = %164, %146, %126, %98
br label %167
167: ; preds = %166, %90
ret i32 0
}

LLVM IR (-O2):
@.str = [59 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 \D0\BF\D0\B5\D1\80\D0\B5\D0\BC\D0\B5\D0\BD\D0\BD\D0\BE\D0\B9 \D0\B0 = \00"
@.str.1 = [4 x i8] c"%lf\00"
@.str.2 = [58 x i8] c"\D0\92\D0\B2\D0\B5\D0\B4\D0\B8\D1\82\D0\B5 \D0\B7\D0\BD\D0\B0\D1\87\D0\B5\D0\BD\D0\B8\D0\B5 \D0\BF\D0\B5\D1\80\D0\B5\D0\BC\D0\B5\D0\BD\D0\BD\D0\BE\D0\B9 x = \00"
@.str.3 = [103 x i8] c"\D0\92\D1\85\D0\BE\D0\B4\D0\BD\D1\8B\D0\B5 \D0\B4\D0\B0\D0\BD\D0\BD\D1\8B\D0\B5 \D0\BD\D0\B5 \D0\BF\D0\BE\D0\B4\D0\BB\D0\B5\D0\B6\D0\B0\D1\82 \D0\BE\D0\B1\D0\BB\D0\B0\D1\81\D1\82\D0\B8 \D0\BE\D0\BF\D1\80\D0\B5\D0\B4\D0\B5\D0\BB\D0\B5\D0\BD\D0\B8\D1\8F \D1\84\D1\83\D0\BD\D0\BA\D1\86\D0\B8\D0\B8\00"
@.str.5 = [40 x i8] c"\D0\92\D1\8B\D1\87\D0\B8\D1\81\D0\BB\D0\B8\D1\82\D1\8C \D1\84\D1\83\D0\BD\D0\BA\D1\86\D0\B8\D1\8E G,F,Y\00"
@.str.6 = [3 x i8] c"%s\00"
@.str.7 = [34 x i8] c"\D0\92\D1\8B\D0\B1\D0\B5\D1\80\D0\B8\D1\82\D0\B5 \D1\84\D1\83\D0\BD\D0\BA\D1\86\D0\B8\D1\8E: \00"
@.str.8 = [6 x i8] c"%s%f\0A\00"
@.str.9 = [5 x i8] c"G = \00"
@.str.10 = [5 x i8] c"F = \00"
@.str.11 = [5 x i8] c"Y = \00"
@.str.12 = [13 x i8] c"\D0\9E\D1\88\D0\B8\D0\B1\D0\BA\D0\B0\00"
define i32 @main() {
%1 = alloca double
%2 = alloca double
%3 = alloca i8
%4 = bitcast double* %1 to i8*
%5 = bitcast double* %2 to i8*
%6 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @.str, i64 0, i64 0))
%7 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %1)
%8 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.2, i64 0, i64 0))
%9 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), double* %2)
%10 = load double, double* %1
%11 = fmul double %10, 1.500000e+01
%12 = fmul double %10, 2.900000e+01
%13 = load double, double* %2
%14 = fmul double %12, %13
%15 = call double @llvm.fmuladd.f64(double %11, double %10, double %14)
%16 = fmul double %13, 1.200000e+01
%17 = call double @llvm.fmuladd.f64(double %16, double %13, double %15)
%18 = fcmp ult double %17, -1.000000e-05
%19 = fcmp ugt double %17, 1.000000e-05
%20 = or i1 %18, %19
br i1 %20, label %21, label %54
21: ; preds = %0
%22 = fmul double %10, 5.000000e+00
%23 = fmul double %10, 1.400000e+01
%24 = fmul double %23, %13
%25 = call double @llvm.fmuladd.f64(double %22, double %10, double %24)
%26 = fmul double %13, -3.000000e+00
%27 = call double @llvm.fmuladd.f64(double %26, double %13, double %25)
%28 = fptosi double %27 to i32
%29 = call i32 @cos(i32 %28)
%30 = icmp sgt i32 %29, -1
br i1 %30, label %31, label %43
31: ; preds = %21
%32 = load double, double* %1
%33 = fmul double %32, 5.000000e+00
%34 = fmul double %32, 1.400000e+01
%35 = load double, double* %2
%36 = fmul double %34, %35
%37 = call double @llvm.fmuladd.f64(double %33, double %32, double %36)
%38 = fmul double %35, -3.000000e+00
%39 = call double @llvm.fmuladd.f64(double %38, double %35, double %37)
%40 = fptosi double %39 to i32
%41 = call i32 @cos(i32 %40)
%42 = icmp slt i32 %41, 1
br i1 %42, label %54, label %43
43: ; preds = %31, %21
%44 = load double, double* %1
%45 = fmul double %44, 9.000000e+00
%46 = fmul double %44, 4.200000e+01
%47 = load double, double* %2
%48 = fmul double %46, %47
%49 = call double @llvm.fmuladd.f64(double %45, double %44, double %48)
%50 = fmul double %47, 4.000000e+01
%51 = call double @llvm.fmuladd.f64(double %50, double %47, double %49)
%52 = fadd double %51, 1.000000e+00
%53 = fcmp ugt double %52, 1.000000e+00
br i1 %53, label %56, label %54
54: ; preds = %0, %43, %31
%55 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([103 x i8], [103 x i8]* @.str.3, i64 0, i64 0))
br label %110
56: ; preds = %43
%57 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i64 0, i64 0))
%58 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.7, i64 0, i64 0))
%59 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.6, i64 0, i64 0), i8* %3)
%60 = load i8, i8* %3
%61 = sext i8 %60 to i32
switch i32 %61, label %108 [
i32 71, label %62
i32 70, label %79
i32 89, label %95
]
62: ; preds = %56
%63 = load double, double* %1
%64 = load double, double* %2
%65 = insertelement <2 x double> poison, double %63, i64 0
%66 = shufflevector <2 x double> %65, <2 x double> poison, <2 x i32> zeroinitializer
%67 = fmul <2 x double> %66, <double 4.000000e+00, double 1.500000e+01>
%68 = fmul <2 x double> %66, <double 3.000000e+00, double 2.900000e+01>
%69 = insertelement <2 x double> poison, double %64, i64 0
%70 = shufflevector <2 x double> %69, <2 x double> poison, <2 x i32> zeroinitializer
%71 = fmul <2 x double> %68, %70
%72 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %67, <2 x double> %66, <2 x double> %71)
%73 = fmul <2 x double> %70, <double 1.000000e+01, double 1.200000e+01>
%74 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %73, <2 x double> %70, <2 x double> %72)
%75 = extractelement <2 x double> %74, i64 0
%76 = extractelement <2 x double> %74, i64 1
%77 = fdiv double %75, %76
%78 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), double %77)
br label %110
79: ; preds = %56
%80 = load double, double* %1
%81 = fmul double %80, 5.000000e+00
%82 = fmul double %80, 1.400000e+01
%83 = load double, double* %2
%84 = fmul double %82, %83
%85 = call double @llvm.fmuladd.f64(double %81, double %80, double %84)
%86 = fmul double %83, -3.000000e+00
%87 = call double @llvm.fmuladd.f64(double %86, double %83, double %85)
%88 = fptosi double %87 to i32
%89 = call i32 @cos(i32 %88)
%90 = add i32 %89, 1
%91 = icmp ult i32 %90, 3
%92 = select i1 %91, i32 %89, i32 0
%93 = sitofp i32 %92 to double
%94 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), double %93)
br label %110
95: ; preds = %56
%96 = load double, double* %1
%97 = fmul double %96, 9.000000e+00
%98 = fmul double %96, 4.200000e+01
%99 = load double, double* %2
%100 = fmul double %98, %99
%101 = call double @llvm.fmuladd.f64(double %97, double %96, double %100)
%102 = fmul double %99, 4.000000e+01
%103 = call double @llvm.fmuladd.f64(double %102, double %99, double %101)
%104 = fadd double %103, 1.000000e+00
%105 = fptosi double %104 to i32
%106 = call double @acosh(i32 %105)
%107 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), double %106)
br label %110
108: ; preds = %56
%109 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i64 0, i64 0))
br label %110
110: ; preds = %62, %79, %95, %108, %54
ret i32 0
}