#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
double M_PI;
double atof(char *);
double *calloc(int, int);
double exp(double);
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
scalar_t__ fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fscanf(int /*<<< orphan*/ *, char *, double *, double *);
double pow(double, double);
int /*<<< orphan*/ printf(char *, double, double);
int /*<<< orphan*/ strcpy(char *, char *);
int /*<<< orphan*/ usage(char *);
int main(int argc, char **argv) {
  int i, N;
  FILE *fp_fit;
  char linebuf[256];
  double r, r_min, r_max, r_inc;
  double first_derivative, second_derivative, integrand;
  double *r_input, *fit_input;
  double temperature;
  char fit_file[256];
  double B, B_classical, B_quantum_first, B_quantum_second, B_quantum_ideal;
  if (argc != 3)
    usage(argv[0]);
  temperature = atof(argv[1]);
  strcpy(fit_file, argv[2]);
  fp_fit = fopen(fit_file, "r");
  for (N = 0; fgets(linebuf, 256, fp_fit); N++)
    ;
  fclose(fp_fit);
  r_input = calloc(N, sizeof(double));
  fit_input = calloc(N, sizeof(double));
  fp_fit = fopen(fit_file, "r");
  for (i = 0; i < N; i++)
    fscanf(fp_fit, "%lg %lg\n", &r_input[i], &fit_input[i]);
  fclose(fp_fit);
  r_min = r_input[0];
  r_max = r_input[N - 1];
  r_inc = r_input[1] - r_input[0];
  for (; r_min < r_max; r_min += r_inc) {
    B_classical = 0;
    for (r = r_min, i = (int)((r_min - r_input[0]) / r_inc); r < r_max;
         r += r_inc, i++) {
      integrand = (exp(-fit_input[i] / temperature) - 1.0) * pow(r, 2) * r_inc;
      B_classical += integrand;
    }
    B_classical *= -2.0 * M_PI;
    B_classical *= 1.0e-24 * 6.0221415e23;
    B_quantum_first = 0;
    for (r = r_min, i = (int)((r_min - r_input[0]) / r_inc); r < r_max;
         r += r_inc, i++) {
      first_derivative =
          1.3806503e-23 * (fit_input[i + 1] - fit_input[i]) / r_inc;
      integrand = exp(-fit_input[i] / temperature) *
                  pow(first_derivative * r, 2) * r_inc;
      B_quantum_first += integrand;
    }
    B_quantum_first *= (6.626068e-34 * 6.626068e-34 / 3.348e-27) /
                       (24.0 * M_PI * pow(1.3806503e-23 * temperature, 3));
    B_quantum_first *= 1.0e-4 * 6.0221415e23;
    B_quantum_second = 0;
    for (r = r_min, i = (int)((r_min - r_input[0]) / r_inc);
         r < (r_max - r_inc); r += r_inc, i++) {
      first_derivative =
          1.3806503e-23 * (fit_input[i + 1] - fit_input[i]) / r_inc;
      second_derivative =
          1.3806503e-23 *
          ((fit_input[i + 2] - fit_input[i + 1]) / r_inc - first_derivative) /
          r_inc;
      integrand =
          pow(second_derivative, 2) + 2.0 * pow((first_derivative / r), 2);
      integrand += (10.0 / (9.0 * 1.3806503e-23 * temperature)) *
                   pow(first_derivative, 3) / r;
      integrand -= (5.0 / (36.0 * pow(1.3806503e-23 * temperature, 2))) *
                   pow(first_derivative, 4) / r;
      integrand *= exp(-fit_input[i] / temperature) * pow(r, 2) * r_inc;
      B_quantum_second += integrand;
    }
    B_quantum_second *=
        pow(6.626068e-34 * 6.626068e-34 / 3.348e-27, 2) /
        (960.0 * M_PI * M_PI * M_PI * pow(1.3806503e-23 * temperature, 4));
    B_quantum_second *= -1.0e11 * 6.0221415e23;
    B_quantum_ideal =
        -6.0221415e23 *
        pow((6.626068e-34 * 6.626068e-34 /
             (2.0 * M_PI * 3.348e-27 * 1.3806503e-23 * temperature)),
            (3.0 / 2.0)) *
        pow(2.0, (-5.0 / 2.0));
    B_quantum_ideal *= 1.0e6;
    B = B_classical + B_quantum_first + B_quantum_second + B_quantum_ideal;
    printf("%f %f\n", r_min, B);
  }
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2f0,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x3,-0x8(%rbp)
je     11df <main+0x2f>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
call   10b0 <usage@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1040 <atof@plt>
movsd  %xmm0,-0x170(%rbp)
ff
lea    -0x270(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rsi
call   1030 <strcpy@plt>
lea    -0x270(%rbp),%rdi
lea    0xe9a(%rip),%rsi
call   10c0 <fopen@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x18(%rbp)
lea    -0x120(%rbp),%rdi
mov    -0x20(%rbp),%rdx
mov    $0x100,%esi
call   1080 <fgets@plt>
cmp    $0x0,%rax
je     1258 <main+0xa8>
jmp    124a <main+0x9a>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1226 <main+0x76>
mov    -0x20(%rbp),%rdi
call   1050 <fclose@plt>
mov    -0x18(%rbp),%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,-0x160(%rbp)
mov    -0x18(%rbp),%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,-0x168(%rbp)
lea    -0x270(%rbp),%rdi
lea    0xe19(%rip),%rsi
call   10c0 <fopen@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    12f5 <main+0x145>
mov    -0x20(%rbp),%rdi
mov    -0x160(%rbp),%rdx
movslq -0x14(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rdx
mov    -0x168(%rbp),%rcx
movslq -0x14(%rbp),%rax
shl    $0x3,%rax
add    %rax,%rcx
lea    0xdd0(%rip),%rsi
call   1070 <fscanf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    12a7 <main+0xf7>
mov    -0x20(%rbp),%rdi
call   1050 <fclose@plt>
mov    -0x160(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x160(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x160(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x160(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1b07 <main+0x957>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x160(%rbp),%rax
subsd  (%rax),%xmm0
divsd  -0x140(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x14(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1478 <main+0x2c8>
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x170(%rbp),%xmm0
ff
call   10a0 <exp@plt>
movsd  0xcae(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  0xc2a(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2a0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    13a4 <main+0x1f4>
movsd  0xb88(%rip),%xmm0
mov    0x2b61(%rip),%rax
mulsd  (%rax),%xmm0
mulsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x280(%rbp)
ff
movsd  0xb5d(%rip),%xmm0
mulsd  -0x280(%rbp),%xmm0
ff
movsd  %xmm0,-0x280(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x288(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x160(%rbp),%rax
subsd  (%rax),%xmm0
divsd  -0x140(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x14(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1601 <main+0x451>
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm1
movsd  0xaf1(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x170(%rbp),%xmm0
ff
call   10a0 <exp@plt>
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  0xaa1(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2a8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x288(%rbp),%xmm0
ff
movsd  %xmm0,-0x288(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    14f0 <main+0x340>
movsd  0xa27(%rip),%xmm0
mov    0x29d8(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  0xa04(%rip),%xmm0
mulsd  -0x170(%rbp),%xmm0
ff
movsd  0x9ec(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2b0(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
movsd  0x9cb(%rip),%xmm0
divsd  %xmm1,%xmm0
mulsd  -0x288(%rbp),%xmm0
ff
movsd  %xmm0,-0x288(%rbp)
ff
movsd  0x9a7(%rip),%xmm0
mulsd  -0x288(%rbp),%xmm0
ff
movsd  %xmm0,-0x288(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x160(%rbp),%rax
subsd  (%rax),%xmm0
divsd  -0x140(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0x14(%rbp)
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0x140(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1951 <main+0x7a1>
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm1
movsd  0x923(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x168(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm1
divsd  -0x140(%rbp),%xmm1
ff
subsd  -0x148(%rbp),%xmm1
ff
movsd  0x8cd(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  0x8c1(%rip),%xmm1
call   10d0 <pow@plt>
movsd  %xmm0,-0x2d0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
divsd  -0x128(%rbp),%xmm0
ff
movsd  0x89c(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2d0(%rbp),%xmm1
ff
addsd  %xmm0,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0x8d7(%rip),%xmm1
mulsd  -0x170(%rbp),%xmm1
ff
movsd  0x8bf(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x82b(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2c8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
divsd  -0x128(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  0x7ff(%rip),%xmm0
mulsd  -0x170(%rbp),%xmm0
ff
movsd  0x807(%rip),%xmm1
call   10d0 <pow@plt>
movsd  0x84a(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x836(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x2c0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  0x80a(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2c0(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
divsd  -0x128(%rbp),%xmm1
ff
movsd  -0x158(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x168(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x170(%rbp),%xmm0
ff
call   10a0 <exp@plt>
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  0x759(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2b8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    16b6 <main+0x506>
movsd  0x6bf(%rip),%xmm0
movsd  0x6df(%rip),%xmm1
call   10d0 <pow@plt>
movsd  %xmm0,-0x2e0(%rbp)
ff
movsd  0x70a(%rip),%xmm0
mov    0x266b(%rip),%rax
mulsd  (%rax),%xmm0
mov    0x2660(%rip),%rax
mulsd  (%rax),%xmm0
mov    0x2655(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x2e8(%rbp)
ff
movsd  0x681(%rip),%xmm0
mulsd  -0x170(%rbp),%xmm0
ff
movsd  0x6c1(%rip),%xmm1
call   10d0 <pow@plt>
movsd  -0x2e8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x2e0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mulsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm0,-0x290(%rbp)
ff
movsd  0x681(%rip),%xmm0
mulsd  -0x290(%rbp),%xmm0
ff
movsd  %xmm0,-0x290(%rbp)
ff
movsd  0x639(%rip),%xmm1
mov    0x25da(%rip),%rax
mulsd  (%rax),%xmm1
movsd  0x64e(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  0x602(%rip),%xmm0
mulsd  %xmm0,%xmm1
mulsd  -0x170(%rbp),%xmm1
ff
movsd  0x626(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  0x612(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  0x5fa(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2d8(%rbp)
ff
movsd  0x5d6(%rip),%xmm0
movsd  0x5d6(%rip),%xmm1
call   10d0 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x2d8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x298(%rbp)
ff
movsd  0x5a2(%rip),%xmm0
mulsd  -0x298(%rbp),%xmm0
ff
movsd  %xmm0,-0x298(%rbp)
ff
movsd  -0x280(%rbp),%xmm0
ff
addsd  -0x288(%rbp),%xmm0
ff
addsd  -0x290(%rbp),%xmm0
ff
addsd  -0x298(%rbp),%xmm0
ff
movsd  %xmm0,-0x278(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x278(%rbp),%xmm1
ff
lea    0x5d6(%rip),%rdi
call   1060 <printf@plt>
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
jmp    134d <main+0x19d>
xor    %eax,%eax
add    $0x2f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2d8,%rsp
mov    %rsi,%rbx
cmp    $0x3,%edi
je     11d1 <main+0x21>
mov    (%rbx),%rdi
call   10b0 <usage@plt>
mov    0x8(%rbx),%rdi
call   1040 <atof@plt>
movaps %xmm0,0x40(%rsp)
mov    0x10(%rbx),%rsi
lea    0xd0(%rsp),%rbx
mov    %rbx,%rdi
call   1030 <strcpy@plt>
lea    0xed6(%rip),%rsi
mov    %rbx,%rdi
call   10c0 <fopen@plt>
mov    %rax,%rbp
mov    $0xffffffffffffffff,%r12
lea    0x1d0(%rsp),%r14
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %r14,%rdi
mov    $0x100,%esi
mov    %rbp,%rdx
call   1080 <fgets@plt>
add    $0x1,%r12
test   %rax,%rax
jne    1220 <main+0x70>
mov    %rbp,%rdi
call   1050 <fclose@plt>
mov    %r12d,%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,0x70(%rsp)
mov    %r12d,%edi
mov    $0x8,%esi
call   1090 <calloc@plt>
mov    %rax,0x30(%rsp)
lea    0xe64(%rip),%rsi
lea    0xd0(%rsp),%rdi
call   10c0 <fopen@plt>
mov    %rax,%r15
test   %r12d,%r12d
je     12bf <main+0x10f>
lea    0xe4a(%rip),%r13
mov    %r12,%rbx
mov    0x70(%rsp),%rbp
mov    0x30(%rsp),%r14
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r15,%rdi
mov    %r13,%rsi
mov    %rbp,%rdx
mov    %r14,%rcx
call   1070 <fscanf@plt>
add    $0x8,%r14
add    $0x8,%rbp
add    $0xffffffffffffffff,%rbx
jne    12a0 <main+0xf0>
mov    %r15,%rdi
call   1050 <fclose@plt>
mov    0x70(%rsp),%rax
movsd  (%rax),%xmm0
movsd  -0x8(%rax,%r12,8),%xmm4
ucomisd %xmm0,%xmm4
jbe    184f <main+0x69f>
mov    %rax,%r12
movsd  0x8(%rax),%xmm5
subsd  %xmm0,%xmm5
movsd  0xd0b(%rip),%xmm1
movapd 0x40(%rsp),%xmm3
mulsd  %xmm3,%xmm1
movapd %xmm4,%xmm2
subsd  %xmm5,%xmm2
movsd  %xmm2,0x80(%rsp)
movsd  %xmm1,0x78(%rsp)
mulsd  %xmm1,%xmm1
movapd %xmm3,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  0xd66(%rip),%xmm2
movapd 0xd6e(%rip),%xmm1
divpd  %xmm2,%xmm1
movapd %xmm1,0xa0(%rsp)
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
movapd %xmm1,0x90(%rsp)
mov    0x30(%rsp),%rax
lea    0x8(%rax),%r14
mov    0x2c88(%rip),%r13
lea    0xd74(%rip),%r15
movapd %xmm0,%xmm6
movsd  %xmm4,0x38(%rsp)
movapd %xmm5,0x60(%rsp)
nopw   0x0(%rax,%rax,1)
ucomisd %xmm6,%xmm4
movsd  %xmm6,0x18(%rsp)
jbe    1510 <main+0x360>
movapd %xmm6,%xmm1
subsd  %xmm0,%xmm1
divsd  %xmm5,%xmm1
cvttsd2si %xmm1,%eax
cltq
mov    0x30(%rsp),%rcx
lea    (%rcx,%rax,8),%rbx
xorpd  %xmm5,%xmm5
movapd %xmm6,%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm1,(%rsp)
movsd  %xmm5,0x28(%rsp)
movsd  (%rbx),%xmm0
xorpd  0xcd9(%rip),%xmm0
divsd  %xmm3,%xmm0
call   10a0 <exp@plt>
movsd  0x28(%rsp),%xmm5
movapd 0x60(%rsp),%xmm4
movsd  0x38(%rsp),%xmm2
movapd 0x40(%rsp),%xmm3
addsd  0xc08(%rip),%xmm0
movapd %xmm4,%xmm1
movsd  (%rsp),%xmm6
addsd  %xmm6,%xmm1
mulsd  %xmm6,%xmm6
mulsd  %xmm0,%xmm6
mulsd  %xmm4,%xmm6
addsd  %xmm6,%xmm5
add    $0x8,%rbx
ucomisd %xmm1,%xmm2
ja     13c0 <main+0x210>
movsd  0x18(%rsp),%xmm1
ucomisd %xmm1,%xmm2
movsd  0x0(%r13),%xmm2
movapd %xmm2,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm5
jbe    1540 <main+0x390>
movsd  %xmm5,0x28(%rsp)
movapd %xmm1,%xmm0
subsd  (%r12),%xmm0
divsd  %xmm4,%xmm0
cvttsd2si %xmm0,%eax
cltq
lea    (%r14,%rax,8),%rbx
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
movsd  %xmm1,0x50(%rsp)
movsd  -0x8(%rbx),%xmm0
movsd  (%rbx),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xb75(%rip),%xmm1
divsd  %xmm4,%xmm1
movsd  %xmm1,0x20(%rsp)
xorpd  0xc13(%rip),%xmm0
divsd  %xmm3,%xmm0
call   10a0 <exp@plt>
movsd  0x50(%rsp),%xmm1
movapd 0x60(%rsp),%xmm4
movapd 0x40(%rsp),%xmm3
movsd  0x20(%rsp),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm2,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm4,%xmm2
movsd  (%rsp),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm0,(%rsp)
addsd  %xmm4,%xmm1
add    $0x8,%rbx
movsd  0x38(%rsp),%xmm0
ucomisd %xmm1,%xmm0
ja     1470 <main+0x2c0>
movsd  0x0(%r13),%xmm2
movsd  0xb22(%rip),%xmm1
movsd  0x28(%rsp),%xmm5
jmp    1551 <main+0x3a1>
cs nopw 0x0(%rax,%rax,1)
movsd  0x0(%r13),%xmm2
movapd %xmm2,%xmm5
addsd  %xmm2,%xmm5
xorpd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
mulsd  %xmm1,%xmm5
movsd  0xae9(%rip),%xmm1
jmp    1551 <main+0x3a1>
nopl   0x0(%rax)
movsd  0xad8(%rip),%xmm1
xorpd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
mulsd  0xab7(%rip),%xmm5
movsd  %xmm5,0x28(%rsp)
mulsd  0xab1(%rip),%xmm2
movsd  %xmm2,0x50(%rsp)
movsd  0x78(%rsp),%xmm0
call   10d0 <pow@plt>
mulsd  0x50(%rsp),%xmm0
movsd  0xaa2(%rip),%xmm1
divsd  %xmm0,%xmm1
mulsd  (%rsp),%xmm1
mulsd  0xa99(%rip),%xmm1
movsd  %xmm1,0x88(%rsp)
xorpd  %xmm2,%xmm2
movsd  0x80(%rsp),%xmm4
ucomisd 0x18(%rsp),%xmm4
movapd 0x60(%rsp),%xmm3
movapd 0x90(%rsp),%xmm5
movapd 0xaf6(%rip),%xmm6
jbe    174f <main+0x59f>
movsd  0x18(%rsp),%xmm1
movapd %xmm1,%xmm0
subsd  (%r12),%xmm0
divsd  %xmm3,%xmm0
cvttsd2si %xmm0,%eax
cltq
mov    0x30(%rsp),%rcx
lea    (%rcx,%rax,8),%rbx
xorpd  %xmm2,%xmm2
movapd %xmm1,%xmm7
nopl   0x0(%rax,%rax,1)
movapd %xmm7,0x50(%rsp)
movsd  %xmm2,0x20(%rsp)
lea    0x8(%rbx),%rbp
movsd  0x8(%rbx),%xmm0
movsd  0x10(%rbx),%xmm1
movapd %xmm1,%xmm2
subpd  %xmm0,%xmm1
subsd  (%rbx),%xmm0
unpcklpd %xmm0,%xmm2
mulpd  %xmm6,%xmm2
movsd  %xmm1,%xmm2
divpd  %xmm5,%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm2,%xmm1
subsd  %xmm1,%xmm2
mulsd  0x9b6(%rip),%xmm2
divsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm2
movapd %xmm1,%xmm0
movapd %xmm1,0xb0(%rsp)
divsd  %xmm7,%xmm0
mulsd  %xmm0,%xmm0
addsd  %xmm0,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm0,(%rsp)
movapd %xmm1,%xmm0
movsd  0x9a0(%rip),%xmm1
call   10d0 <pow@plt>
movapd %xmm0,0xc0(%rsp)
movapd 0xb0(%rsp),%xmm0
movsd  0x999(%rip),%xmm1
call   10d0 <pow@plt>
movapd 0xc0(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
mulpd  0xa0(%rsp),%xmm1
movapd 0x50(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
divpd  %xmm0,%xmm1
movapd (%rsp),%xmm0
addsd  %xmm1,%xmm0
unpckhpd %xmm1,%xmm1
subsd  %xmm1,%xmm0
movapd %xmm0,(%rsp)
movsd  (%rbx),%xmm0
xorpd  0x9c6(%rip),%xmm0
divsd  0x40(%rsp),%xmm0
call   10a0 <exp@plt>
movapd 0x9c3(%rip),%xmm6
movapd 0x90(%rsp),%xmm5
movsd  0x80(%rsp),%xmm4
movsd  0x20(%rsp),%xmm2
movapd 0x60(%rsp),%xmm3
movapd %xmm3,%xmm1
movapd 0x50(%rsp),%xmm7
addsd  %xmm7,%xmm1
mulsd  %xmm7,%xmm7
mulsd  %xmm0,%xmm7
mulsd  %xmm3,%xmm7
mulsd  (%rsp),%xmm7
addsd  %xmm7,%xmm2
ucomisd %xmm1,%xmm4
mov    %rbp,%rbx
movapd %xmm1,%xmm7
ja     1600 <main+0x450>
movsd  %xmm2,0x20(%rsp)
movsd  0x0(%r13),%xmm0
movapd %xmm0,%xmm1
mulsd  0x8d9(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0x78(%rsp),%xmm0
movsd  0x8b6(%rip),%xmm1
call   10d0 <pow@plt>
mulsd  (%rsp),%xmm0
movsd  0x8b4(%rip),%xmm1
divsd  %xmm0,%xmm1
mulsd  0x20(%rsp),%xmm1
mulsd  0x8aa(%rip),%xmm1
movsd  %xmm1,(%rsp)
movsd  0x0(%r13),%xmm1
addsd  %xmm1,%xmm1
mulsd  0x89b(%rip),%xmm1
mulsd  0x83b(%rip),%xmm1
mulsd  0x40(%rsp),%xmm1
movsd  0x88d(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  0x889(%rip),%xmm1
call   10d0 <pow@plt>
mulsd  0x884(%rip),%xmm0
mulsd  0x884(%rip),%xmm0
mulsd  0x884(%rip),%xmm0
movsd  0x88(%rsp),%xmm1
subsd  0x28(%rsp),%xmm1
addsd  (%rsp),%xmm1
addsd  %xmm0,%xmm1
mov    %r15,%rdi
movsd  0x18(%rsp),%xmm0
call   1060 <printf@plt>
movsd  0x18(%rsp),%xmm6
movapd 0x60(%rsp),%xmm5
addsd  %xmm5,%xmm6
movsd  0x38(%rsp),%xmm4
ucomisd %xmm6,%xmm4
jbe    184f <main+0x69f>
movsd  (%r12),%xmm0
movapd 0x40(%rsp),%xmm3
jmp    1380 <main+0x1d0>
xor    %eax,%eax
add    $0x2d8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [2 x i8] c"r\00"
@.str.1 = [9 x i8] c"%lg %lg\0A\00"
@M_PI = global double 0.000000e+00
@.str.2 = [7 x i8] c"%f %f\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32*
%9 = alloca [256 x i8]
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double*
%18 = alloca double*
%19 = alloca double
%20 = alloca [256 x i8]
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%26 = load i32, i32* %4
%27 = icmp ne i32 %26, 3
br i1 %27, label %28, label %33
28: ; preds = %2
%29 = load i8**, i8*** %5
%30 = getelementptr inbounds i8*, i8** %29, i64 0
%31 = load i8*, i8** %30
%32 = call i32 @usage(i8* %31)
br label %33
33: ; preds = %28, %2
%34 = load i8**, i8*** %5
%35 = getelementptr inbounds i8*, i8** %34, i64 1
%36 = load i8*, i8** %35
%37 = call double @atof(i8* %36)
store double %37, double* %19
%38 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%39 = load i8**, i8*** %5
%40 = getelementptr inbounds i8*, i8** %39, i64 2
%41 = load i8*, i8** %40
%42 = call i32 @strcpy(i8* %38, i8* %41)
%43 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%44 = call i32* @fopen(i8* %43, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32* %44, i32** %8
store i32 0, i32* %7
br label %45
45: ; preds = %51, %33
%46 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%47 = load i32*, i32** %8
%48 = call i64 @fgets(i8* %46, i32 256, i32* %47)
%49 = icmp ne i64 %48, 0
br i1 %49, label %50, label %54
50: ; preds = %45
br label %51
51: ; preds = %50
%52 = load i32, i32* %7
%53 = add nsw i32 %52, 1
store i32 %53, i32* %7
br label %45
54: ; preds = %45
%55 = load i32*, i32** %8
%56 = call i32 @fclose(i32* %55)
%57 = load i32, i32* %7
%58 = call double* @calloc(i32 %57, i32 8)
store double* %58, double** %17
%59 = load i32, i32* %7
%60 = call double* @calloc(i32 %59, i32 8)
store double* %60, double** %18
%61 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%62 = call i32* @fopen(i8* %61, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32* %62, i32** %8
store i32 0, i32* %6
br label %63
63: ; preds = %78, %54
%64 = load i32, i32* %6
%65 = load i32, i32* %7
%66 = icmp slt i32 %64, %65
br i1 %66, label %67, label %81
67: ; preds = %63
%68 = load i32*, i32** %8
%69 = load double*, double** %17
%70 = load i32, i32* %6
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds double, double* %69, i64 %71
%73 = load double*, double** %18
%74 = load i32, i32* %6
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds double, double* %73, i64 %75
%77 = call i32 @fscanf(i32* %68, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), double* %72, double* %76)
br label %78
78: ; preds = %67
%79 = load i32, i32* %6
%80 = add nsw i32 %79, 1
store i32 %80, i32* %6
br label %63
81: ; preds = %63
%82 = load i32*, i32** %8
%83 = call i32 @fclose(i32* %82)
%84 = load double*, double** %17
%85 = getelementptr inbounds double, double* %84, i64 0
%86 = load double, double* %85
store double %86, double* %11
%87 = load double*, double** %17
%88 = load i32, i32* %7
%89 = sub nsw i32 %88, 1
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds double, double* %87, i64 %90
%92 = load double, double* %91
store double %92, double* %12
%93 = load double*, double** %17
%94 = getelementptr inbounds double, double* %93, i64 1
%95 = load double, double* %94
%96 = load double*, double** %17
%97 = getelementptr inbounds double, double* %96, i64 0
%98 = load double, double* %97
%99 = fsub double %95, %98
store double %99, double* %13
br label %100
100: ; preds = %361, %81
%101 = load double, double* %11
%102 = load double, double* %12
%103 = fcmp olt double %101, %102
br i1 %103, label %104, label %365
104: ; preds = %100
store double 0.000000e+00, double* %22
%105 = load double, double* %11
store double %105, double* %10
%106 = load double, double* %11
%107 = load double*, double** %17
%108 = getelementptr inbounds double, double* %107, i64 0
%109 = load double, double* %108
%110 = fsub double %106, %109
%111 = load double, double* %13
%112 = fdiv double %110, %111
%113 = fptosi double %112 to i32
store i32 %113, i32* %6
br label %114
114: ; preds = %137, %104
%115 = load double, double* %10
%116 = load double, double* %12
%117 = fcmp olt double %115, %116
br i1 %117, label %118, label %143
118: ; preds = %114
%119 = load double*, double** %18
%120 = load i32, i32* %6
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds double, double* %119, i64 %121
%123 = load double, double* %122
%124 = fneg double %123
%125 = load double, double* %19
%126 = fdiv double %124, %125
%127 = call double @exp(double %126)
%128 = fsub double %127, 1.000000e+00
%129 = load double, double* %10
%130 = call double @pow(double %129, double 2.000000e+00)
%131 = fmul double %128, %130
%132 = load double, double* %13
%133 = fmul double %131, %132
store double %133, double* %16
%134 = load double, double* %16
%135 = load double, double* %22
%136 = fadd double %135, %134
store double %136, double* %22
br label %137
137: ; preds = %118
%138 = load double, double* %13
%139 = load double, double* %10
%140 = fadd double %139, %138
store double %140, double* %10
%141 = load i32, i32* %6
%142 = add nsw i32 %141, 1
store i32 %142, i32* %6
br label %114
143: ; preds = %114
%144 = load double, double* @M_PI
%145 = fmul double -2.000000e+00, %144
%146 = load double, double* %22
%147 = fmul double %146, %145
store double %147, double* %22
%148 = load double, double* %22
%149 = fmul double %148, 0x3FE345569BEE07B0
store double %149, double* %22
store double 0.000000e+00, double* %23
%150 = load double, double* %11
store double %150, double* %10
%151 = load double, double* %11
%152 = load double*, double** %17
%153 = getelementptr inbounds double, double* %152, i64 0
%154 = load double, double* %153
%155 = fsub double %151, %154
%156 = load double, double* %13
%157 = fdiv double %155, %156
%158 = fptosi double %157 to i32
store i32 %158, i32* %6
br label %159
159: ; preds = %198, %143
%160 = load double, double* %10
%161 = load double, double* %12
%162 = fcmp olt double %160, %161
br i1 %162, label %163, label %204
163: ; preds = %159
%164 = load double*, double** %18
%165 = load i32, i32* %6
%166 = add nsw i32 %165, 1
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %164, i64 %167
%169 = load double, double* %168
%170 = load double*, double** %18
%171 = load i32, i32* %6
%172 = sext i32 %171 to i64
%173 = getelementptr inbounds double, double* %170, i64 %172
%174 = load double, double* %173
%175 = fsub double %169, %174
%176 = fmul double 0x3B30B0E7DD0A406E, %175
%177 = load double, double* %13
%178 = fdiv double %176, %177
store double %178, double* %14
%179 = load double*, double** %18
%180 = load i32, i32* %6
%181 = sext i32 %180 to i64
%182 = getelementptr inbounds double, double* %179, i64 %181
%183 = load double, double* %182
%184 = fneg double %183
%185 = load double, double* %19
%186 = fdiv double %184, %185
%187 = call double @exp(double %186)
%188 = load double, double* %14
%189 = load double, double* %10
%190 = fmul double %188, %189
%191 = call double @pow(double %190, double 2.000000e+00)
%192 = fmul double %187, %191
%193 = load double, double* %13
%194 = fmul double %192, %193
store double %194, double* %16
%195 = load double, double* %16
%196 = load double, double* %23
%197 = fadd double %196, %195
store double %197, double* %23
br label %198
198: ; preds = %163
%199 = load double, double* %13
%200 = load double, double* %10
%201 = fadd double %200, %199
store double %201, double* %10
%202 = load i32, i32* %6
%203 = add nsw i32 %202, 1
store i32 %203, i32* %6
br label %159
204: ; preds = %159
%205 = load double, double* @M_PI
%206 = fmul double 2.400000e+01, %205
%207 = load double, double* %19
%208 = fmul double 0x3B30B0E7DD0A406E, %207
%209 = call double @pow(double %208, double 3.000000e+00)
%210 = fmul double %206, %209
%211 = fdiv double 0x37A6D8EB94C8BF7D, %210
%212 = load double, double* %23
%213 = fmul double %212, %211
store double %213, double* %23
%214 = load double, double* %23
%215 = fmul double %214, 0x440A1DEB8F01930C
store double %215, double* %23
store double 0.000000e+00, double* %24
%216 = load double, double* %11
store double %216, double* %10
%217 = load double, double* %11
%218 = load double*, double** %17
%219 = getelementptr inbounds double, double* %218, i64 0
%220 = load double, double* %219
%221 = fsub double %217, %220
%222 = load double, double* %13
%223 = fdiv double %221, %222
%224 = fptosi double %223 to i32
store i32 %224, i32* %6
br label %225
225: ; preds = %315, %204
%226 = load double, double* %10
%227 = load double, double* %12
%228 = load double, double* %13
%229 = fsub double %227, %228
%230 = fcmp olt double %226, %229
br i1 %230, label %231, label %321
231: ; preds = %225
%232 = load double*, double** %18
%233 = load i32, i32* %6
%234 = add nsw i32 %233, 1
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds double, double* %232, i64 %235
%237 = load double, double* %236
%238 = load double*, double** %18
%239 = load i32, i32* %6
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds double, double* %238, i64 %240
%242 = load double, double* %241
%243 = fsub double %237, %242
%244 = fmul double 0x3B30B0E7DD0A406E, %243
%245 = load double, double* %13
%246 = fdiv double %244, %245
store double %246, double* %14
%247 = load double*, double** %18
%248 = load i32, i32* %6
%249 = add nsw i32 %248, 2
%250 = sext i32 %249 to i64
%251 = getelementptr inbounds double, double* %247, i64 %250
%252 = load double, double* %251
%253 = load double*, double** %18
%254 = load i32, i32* %6
%255 = add nsw i32 %254, 1
%256 = sext i32 %255 to i64
%257 = getelementptr inbounds double, double* %253, i64 %256
%258 = load double, double* %257
%259 = fsub double %252, %258
%260 = load double, double* %13
%261 = fdiv double %259, %260
%262 = load double, double* %14
%263 = fsub double %261, %262
%264 = fmul double 0x3B30B0E7DD0A406E, %263
%265 = load double, double* %13
%266 = fdiv double %264, %265
store double %266, double* %15
%267 = load double, double* %15
%268 = call double @pow(double %267, double 2.000000e+00)
%269 = load double, double* %14
%270 = load double, double* %10
%271 = fdiv double %269, %270
%272 = call double @pow(double %271, double 2.000000e+00)
%273 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %272, double %268)
store double %273, double* %16
%274 = load double, double* %19
%275 = fmul double 0x3B62C704D8AB887C, %274
%276 = fdiv double 1.000000e+01, %275
%277 = load double, double* %14
%278 = call double @pow(double %277, double 3.000000e+00)
%279 = fmul double %276, %278
%280 = load double, double* %10
%281 = fdiv double %279, %280
%282 = load double, double* %16
%283 = fadd double %282, %281
store double %283, double* %16
%284 = load double, double* %19
%285 = fmul double 0x3B30B0E7DD0A406E, %284
%286 = call double @pow(double %285, double 2.000000e+00)
%287 = fmul double 3.600000e+01, %286
%288 = fdiv double 5.000000e+00, %287
%289 = load double, double* %14
%290 = call double @pow(double %289, double 4.000000e+00)
%291 = fmul double %288, %290
%292 = load double, double* %10
%293 = fdiv double %291, %292
%294 = load double, double* %16
%295 = fsub double %294, %293
store double %295, double* %16
%296 = load double*, double** %18
%297 = load i32, i32* %6
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds double, double* %296, i64 %298
%300 = load double, double* %299
%301 = fneg double %300
%302 = load double, double* %19
%303 = fdiv double %301, %302
%304 = call double @exp(double %303)
%305 = load double, double* %10
%306 = call double @pow(double %305, double 2.000000e+00)
%307 = fmul double %304, %306
%308 = load double, double* %13
%309 = fmul double %307, %308
%310 = load double, double* %16
%311 = fmul double %310, %309
store double %311, double* %16
%312 = load double, double* %16
%313 = load double, double* %24
%314 = fadd double %313, %312
store double %314, double* %24
br label %315
315: ; preds = %231
%316 = load double, double* %13
%317 = load double, double* %10
%318 = fadd double %317, %316
store double %318, double* %10
%319 = load i32, i32* %6
%320 = add nsw i32 %319, 1
store i32 %320, i32* %6
br label %225
321: ; preds = %225
%322 = call double @pow(double 0x37A6D8EB94C8BF7D, double 2.000000e+00)
%323 = load double, double* @M_PI
%324 = fmul double 9.600000e+02, %323
%325 = load double, double* @M_PI
%326 = fmul double %324, %325
%327 = load double, double* @M_PI
%328 = fmul double %326, %327
%329 = load double, double* %19
%330 = fmul double 0x3B30B0E7DD0A406E, %329
%331 = call double @pow(double %330, double 4.000000e+00)
%332 = fmul double %328, %331
%333 = fdiv double %322, %332
%334 = load double, double* %24
%335 = fmul double %334, %333
store double %335, double* %24
%336 = load double, double* %24
%337 = fmul double %336, 0xC727324A3D09052B
store double %337, double* %24
%338 = load double, double* @M_PI
%339 = fmul double 2.000000e+00, %338
%340 = fmul double %339, 3.348000e-27
%341 = fmul double %340, 0x3B30B0E7DD0A406E
%342 = load double, double* %19
%343 = fmul double %341, %342
%344 = fdiv double 0x3227AC64884C3B77, %343
%345 = call double @pow(double %344, double 1.500000e+00)
%346 = fmul double 0xC4DFE1860C116C00, %345
%347 = call double @pow(double 2.000000e+00, double -2.500000e+00)
%348 = fmul double %346, %347
store double %348, double* %25
%349 = load double, double* %25
%350 = fmul double %349, 1.000000e+06
store double %350, double* %25
%351 = load double, double* %22
%352 = load double, double* %23
%353 = fadd double %351, %352
%354 = load double, double* %24
%355 = fadd double %353, %354
%356 = load double, double* %25
%357 = fadd double %355, %356
store double %357, double* %21
%358 = load double, double* %11
%359 = load double, double* %21
%360 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), double %358, double %359)
br label %361
361: ; preds = %321
%362 = load double, double* %13
%363 = load double, double* %11
%364 = fadd double %363, %362
store double %364, double* %11
br label %100
365: ; preds = %100
ret i32 0
}

LLVM IR (-O2):
@.str = [2 x i8] c"r\00"
@.str.1 = [9 x i8] c"%lg %lg\0A\00"
@M_PI = global double 0.000000e+00
@.str.2 = [7 x i8] c"%f %f\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [256 x i8]
%4 = alloca [256 x i8]
%5 = getelementptr inbounds [256 x i8], [256 x i8]* %3, i64 0, i64 0
%6 = getelementptr inbounds [256 x i8], [256 x i8]* %4, i64 0, i64 0
%7 = icmp eq i32 %0, 3
br i1 %7, label %11, label %8
8: ; preds = %2
%9 = load i8*, i8** %1
%10 = tail call i32 @usage(i8* %9)
br label %11
11: ; preds = %8, %2
%12 = getelementptr inbounds i8*, i8** %1, i64 1
%13 = load i8*, i8** %12
%14 = tail call double @atof(i8* %13)
%15 = getelementptr inbounds i8*, i8** %1, i64 2
%16 = load i8*, i8** %15
%17 = call i32 @strcpy(i8* %6, i8* %16)
%18 = call i32* @fopen(i8* %6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %19
19: ; preds = %19, %11
%20 = phi i32 [ 0, %11 ], [ %23, %19 ]
%21 = call i64 @fgets(i8* %5, i32 256, i32* %18)
%22 = icmp eq i64 %21, 0
%23 = add nuw nsw i32 %20, 1
br i1 %22, label %24, label %19
24: ; preds = %19
%25 = call i32 @fclose(i32* %18)
%26 = call double* @calloc(i32 %20, i32 8)
%27 = call double* @calloc(i32 %20, i32 8)
%28 = call i32* @fopen(i8* %6, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%29 = icmp eq i32 %20, 0
br i1 %29, label %39, label %30
30: ; preds = %24
%31 = zext i32 %20 to i64
br label %32
32: ; preds = %30, %32
%33 = phi i64 [ 0, %30 ], [ %37, %32 ]
%34 = getelementptr inbounds double, double* %26, i64 %33
%35 = getelementptr inbounds double, double* %27, i64 %33
%36 = call i32 @fscanf(i32* %28, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), double* %34, double* %35)
%37 = add nuw nsw i64 %33, 1
%38 = icmp eq i64 %37, %31
br i1 %38, label %39, label %32
39: ; preds = %32, %24
%40 = call i32 @fclose(i32* %28)
%41 = load double, double* %26
%42 = add nsw i32 %20, -1
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds double, double* %26, i64 %43
%45 = load double, double* %44
%46 = getelementptr inbounds double, double* %26, i64 1
%47 = load double, double* %46
%48 = fsub double %47, %41
%49 = fcmp olt double %41, %45
br i1 %49, label %50, label %223
50: ; preds = %39
%51 = fmul double %14, 0x3B30B0E7DD0A406E
%52 = fsub double %45, %48
%53 = fmul double %51, %51
%54 = insertelement <2 x double> poison, double %14, i64 0
%55 = insertelement <2 x double> %54, double %53, i64 1
%56 = fmul <2 x double> %55, <double 0x3B62C704D8AB887C, double 3.600000e+01>
%57 = fdiv <2 x double> <double 1.000000e+01, double 5.000000e+00>, %56
%58 = insertelement <2 x double> poison, double %48, i64 0
%59 = shufflevector <2 x double> %58, <2 x double> poison, <2 x i32> zeroinitializer
br label %60
60: ; preds = %221, %50
%61 = phi double [ %41, %50 ], [ %222, %221 ]
%62 = phi double [ %41, %50 ], [ %219, %221 ]
%63 = fcmp olt double %62, %45
br i1 %63, label %68, label %64
64: ; preds = %60
%65 = load double, double* @M_PI
%66 = fmul double %65, 2.000000e+00
%67 = fmul double %66, 0.000000e+00
br label %124
68: ; preds = %60
%69 = fsub double %62, %61
%70 = fdiv double %69, %48
%71 = fptosi double %70 to i32
%72 = sext i32 %71 to i64
br label %73
73: ; preds = %68, %73
%74 = phi i64 [ %72, %68 ], [ %88, %73 ]
%75 = phi double [ 0.000000e+00, %68 ], [ %86, %73 ]
%76 = phi double [ %62, %68 ], [ %87, %73 ]
%77 = getelementptr inbounds double, double* %27, i64 %74
%78 = load double, double* %77
%79 = fneg double %78
%80 = fdiv double %79, %14
%81 = call double @exp(double %80)
%82 = fadd double %81, -1.000000e+00
%83 = fmul double %76, %76
%84 = fmul double %83, %82
%85 = fmul double %48, %84
%86 = fadd double %75, %85
%87 = fadd double %48, %76
%88 = add i64 %74, 1
%89 = fcmp olt double %87, %45
br i1 %89, label %73, label %90
90: ; preds = %73
%91 = load double, double* @M_PI
%92 = fmul double %91, 2.000000e+00
%93 = fmul double %86, %92
br i1 %63, label %94, label %124
94: ; preds = %90
%95 = load double, double* %26
%96 = fsub double %62, %95
%97 = fdiv double %96, %48
%98 = fptosi double %97 to i32
%99 = sext i32 %98 to i64
br label %100
100: ; preds = %94, %100
%101 = phi i64 [ %99, %94 ], [ %104, %100 ]
%102 = phi double [ 0.000000e+00, %94 ], [ %119, %100 ]
%103 = phi double [ %62, %94 ], [ %120, %100 ]
%104 = add i64 %101, 1
%105 = getelementptr inbounds double, double* %27, i64 %104
%106 = load double, double* %105
%107 = getelementptr inbounds double, double* %27, i64 %101
%108 = load double, double* %107
%109 = fsub double %106, %108
%110 = fmul double %109, 0x3B30B0E7DD0A406E
%111 = fdiv double %110, %48
%112 = fneg double %108
%113 = fdiv double %112, %14
%114 = call double @exp(double %113)
%115 = fmul double %103, %111
%116 = fmul double %115, %115
%117 = fmul double %114, %116
%118 = fmul double %48, %117
%119 = fadd double %102, %118
%120 = fadd double %48, %103
%121 = fcmp olt double %120, %45
br i1 %121, label %100, label %122
122: ; preds = %100
%123 = load double, double* @M_PI
br label %124
124: ; preds = %64, %122, %90
%125 = phi double [ %93, %90 ], [ %93, %122 ], [ %67, %64 ]
%126 = phi double [ %91, %90 ], [ %123, %122 ], [ %65, %64 ]
%127 = phi double [ 0.000000e+00, %90 ], [ %119, %122 ], [ 0.000000e+00, %64 ]
%128 = fmul double %125, 0x3FE345569BEE07B0
%129 = fmul double %126, 2.400000e+01
%130 = call double @pow(double %51, double 3.000000e+00)
%131 = fmul double %129, %130
%132 = fdiv double 0x37A6D8EB94C8BF7D, %131
%133 = fmul double %127, %132
%134 = fmul double %133, 0x440A1DEB8F01930C
%135 = fcmp olt double %62, %52
br i1 %135, label %136, label %194
136: ; preds = %124
%137 = load double, double* %26
%138 = fsub double %62, %137
%139 = fdiv double %138, %48
%140 = fptosi double %139 to i32
%141 = sext i32 %140 to i64
br label %142
142: ; preds = %136, %142
%143 = phi i64 [ %141, %136 ], [ %146, %142 ]
%144 = phi double [ 0.000000e+00, %136 ], [ %191, %142 ]
%145 = phi double [ %62, %136 ], [ %192, %142 ]
%146 = add i64 %143, 1
%147 = getelementptr inbounds double, double* %27, i64 %146
%148 = load double, double* %147
%149 = getelementptr inbounds double, double* %27, i64 %143
%150 = load double, double* %149
%151 = fsub double %148, %150
%152 = add nsw i64 %143, 2
%153 = getelementptr inbounds double, double* %27, i64 %152
%154 = load double, double* %153
%155 = insertelement <2 x double> poison, double %154, i64 0
%156 = insertelement <2 x double> %155, double %151, i64 1
%157 = insertelement <2 x double> <double poison, double 0x3B30B0E7DD0A406E>, double %148, i64 0
%158 = fsub <2 x double> %156, %157
%159 = fmul <2 x double> %156, %157
%160 = shufflevector <2 x double> %158, <2 x double> %159, <2 x i32> <i32 0, i32 3>
%161 = fdiv <2 x double> %160, %59
%162 = extractelement <2 x double> %161, i64 0
%163 = extractelement <2 x double> %161, i64 1
%164 = fsub double %162, %163
%165 = fmul double %164, 0x3B30B0E7DD0A406E
%166 = fdiv double %165, %48
%167 = fmul double %166, %166
%168 = fdiv double %163, %145
%169 = fmul double %168, %168
%170 = call double @llvm.fmuladd.f64(double %169, double 2.000000e+00, double %167)
%171 = call double @pow(double %163, double 3.000000e+00)
%172 = call double @pow(double %163, double 4.000000e+00)
%173 = insertelement <2 x double> poison, double %171, i64 0
%174 = insertelement <2 x double> %173, double %172, i64 1
%175 = fmul <2 x double> %57, %174
%176 = insertelement <2 x double> poison, double %145, i64 0
%177 = shufflevector <2 x double> %176, <2 x double> poison, <2 x i32> zeroinitializer
%178 = fdiv <2 x double> %175, %177
%179 = extractelement <2 x double> %178, i64 0
%180 = fadd double %179, %170
%181 = extractelement <2 x double> %178, i64 1
%182 = fsub double %180, %181
%183 = load double, double* %149
%184 = fneg double %183
%185 = fdiv double %184, %14
%186 = call double @exp(double %185)
%187 = fmul double %145, %145
%188 = fmul double %187, %186
%189 = fmul double %48, %188
%190 = fmul double %189, %182
%191 = fadd double %144, %190
%192 = fadd double %48, %145
%193 = fcmp olt double %192, %52
br i1 %193, label %142, label %194
194: ; preds = %142, %124
%195 = phi double [ 0.000000e+00, %124 ], [ %191, %142 ]
%196 = load double, double* @M_PI
%197 = fmul double %196, 9.600000e+02
%198 = fmul double %196, %197
%199 = fmul double %196, %198
%200 = call double @pow(double %51, double 4.000000e+00)
%201 = fmul double %200, %199
%202 = fdiv double 0x2F6050025FB2F15D, %201
%203 = fmul double %195, %202
%204 = fmul double %203, 0x4727324A3D09052B
%205 = load double, double* @M_PI
%206 = fmul double %205, 2.000000e+00
%207 = fmul double %206, 3.348000e-27
%208 = fmul double %207, 0x3B30B0E7DD0A406E
%209 = fmul double %14, %208
%210 = fdiv double 0x3227AC64884C3B77, %209
%211 = call double @pow(double %210, double 1.500000e+00)
%212 = fmul double %211, 0x44DFE1860C116C00
%213 = fmul double %212, 0x3FC6A09E667F3BCD
%214 = fmul double %213, 1.000000e+06
%215 = fsub double %134, %128
%216 = fsub double %215, %204
%217 = fsub double %216, %214
%218 = call i32 @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), double %62, double %217)
%219 = fadd double %48, %62
%220 = fcmp olt double %219, %45
br i1 %220, label %221, label %223
221: ; preds = %194
%222 = load double, double* %26
br label %60
223: ; preds = %194, %39
ret i32 0
}