#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*/ fprintf(int /*<<< orphan*/, char *, double, double, double,
                           double);
double pow(double, double);
double sqrt(double);
int /*<<< orphan*/ stdout;
int main(void) {
  double sign = 1.0;
  double xi = 0.;
  double et = -10.0;
  double qq = 0.01;
  double r2 = pow(xi, 2.0) + pow(et, 2.0) + pow(qq, 2.0);
  double r = sqrt(r2);
  double re = r + et;
  double ir = 1.0 / r;
  double ir3 = 1.0 / pow(r, 3.0);
  double ire2 = 1.0 / pow(re, 2.0);
  double ire3 = 1.0 / pow(re, 3.0);
  double ir3e2 = 1.0 / (pow(r, 3.0) * pow(re, 2.0));
  double ir5e3 = 1.0 / (pow(r, 5.0) * pow(re, 3.0));
  double cd = 1.0 / sqrt(2.0);
  double sd = 1.0 / sqrt(2.0);
  double sd2 = sd * sd;
  double yy = et * cd + qq * sd;
  double cc = qq * cd - et * sd;
  double val, val1, val2, val3, val4, val5, val6, val7;
  val1 = -2.0 * yy * sd2 * (ir * ire3) - cd * (ir * ire2);
  val6 = 2.0 * (yy * cd + sign * cc * sd) * cd * (ir * ire3);
  val2 = yy * (yy * cd + sign * cc * sd) * (3.0 * r + et) * (ir3 * ire3);
  val3 = -2.0 * yy * (r + re) * (ir3 * ire2);
  val4 = yy * yy * yy * (8.0 * r2 + 9.0 * et * r + 3.0 * et * et) * ir5e3;
  val5 = -2.0 * sd2 * cd * ire3;
  val7 = yy * yy * (3.0 * r + et) * cd * (ir3 * ire3);
  val = val1 + val2 + val3 + val4 + val5 + val6 + val7;
  fprintf(stdout, "%.3e %.3e %.3e %.3e\n", val1, val2, val3, val4);
  fprintf(stdout, "%.3e %.3e %.3e %.3e\n", val5, val6, val7, val);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
movl   $0x0,-0x4(%rbp)
movsd  0xede(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xee1(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xecc(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  0xea2(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  0xe88(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  0xe5f(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1050 <sqrt@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe28(%rip),%xmm0
divsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xde9(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xe01(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  0xde3(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xddb(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  0xd9d(%rip),%xmm1
call   1040 <pow@plt>
movaps %xmm0,%xmm1
movsd  0xdb5(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xd77(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  0xd7d(%rip),%xmm1
call   1040 <pow@plt>
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
movsd  0xd6c(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xd5e(%rip),%xmm1
call   1040 <pow@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  0xd14(%rip),%xmm1
call   1040 <pow@plt>
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm0,%xmm1
movsd  0xd23(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xd0a(%rip),%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xd02(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xce9(%rip),%xmm0
call   1050 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xce1(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xc3f(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  -0x48(%rbp),%xmm2
mulsd  -0x60(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm3
mulsd  -0x58(%rbp),%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0xbd4(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x78(%rbp),%xmm3
movsd  -0x10(%rbp),%xmm2
mulsd  -0x98(%rbp),%xmm2
ff
mulsd  -0x80(%rbp),%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  0xb50(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xb2e(%rip),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm1
addsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0x30(%rbp),%xmm2
movsd  0xaed(%rip),%xmm1
mulsd  -0x20(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  0xad3(%rip),%xmm3
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  0xab3(%rip),%xmm1
mulsd  -0x20(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0xa90(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0x38(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  0xa4c(%rip),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x29be(%rip),%rax
mov    (%rax),%edi
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm3
ff
lea    0x9fd(%rip),%rsi
call   1030 <fprintf@plt>
mov    0x2989(%rip),%rax
mov    (%rax),%edi
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm3
ff
lea    0x9c8(%rip),%rsi
call   1030 <fprintf@plt>
xor    %eax,%eax
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
push   %rax
mov    0x2ec5(%rip),%rbx
mov    (%rbx),%edi
lea    0xf1c(%rip),%r14
movsd  0xed4(%rip),%xmm0
movsd  0xed4(%rip),%xmm1
movsd  0xed4(%rip),%xmm2
movsd  0xed4(%rip),%xmm3
mov    %r14,%rsi
call   1030 <fprintf@plt>
mov    (%rbx),%edi
movsd  0xeca(%rip),%xmm0
movsd  0xeca(%rip),%xmm1
movsd  0xeca(%rip),%xmm2
movsd  0xeca(%rip),%xmm3
mov    %r14,%rsi
call   1030 <fprintf@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@stdout = global i32 0
@.str = [21 x i8] c"%.3e %.3e %.3e %.3e\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%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 double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
store i32 0, i32* %1
store double 1.000000e+00, double* %2
store double 0.000000e+00, double* %3
store double -1.000000e+01, double* %4
store double 1.000000e-02, double* %5
%28 = load double, double* %3
%29 = call double @pow(double %28, double 2.000000e+00)
%30 = load double, double* %4
%31 = call double @pow(double %30, double 2.000000e+00)
%32 = fadd double %29, %31
%33 = load double, double* %5
%34 = call double @pow(double %33, double 2.000000e+00)
%35 = fadd double %32, %34
store double %35, double* %6
%36 = load double, double* %6
%37 = call double @sqrt(double %36)
store double %37, double* %7
%38 = load double, double* %7
%39 = load double, double* %4
%40 = fadd double %38, %39
store double %40, double* %8
%41 = load double, double* %7
%42 = fdiv double 1.000000e+00, %41
store double %42, double* %9
%43 = load double, double* %7
%44 = call double @pow(double %43, double 3.000000e+00)
%45 = fdiv double 1.000000e+00, %44
store double %45, double* %10
%46 = load double, double* %8
%47 = call double @pow(double %46, double 2.000000e+00)
%48 = fdiv double 1.000000e+00, %47
store double %48, double* %11
%49 = load double, double* %8
%50 = call double @pow(double %49, double 3.000000e+00)
%51 = fdiv double 1.000000e+00, %50
store double %51, double* %12
%52 = load double, double* %7
%53 = call double @pow(double %52, double 3.000000e+00)
%54 = load double, double* %8
%55 = call double @pow(double %54, double 2.000000e+00)
%56 = fmul double %53, %55
%57 = fdiv double 1.000000e+00, %56
store double %57, double* %13
%58 = load double, double* %7
%59 = call double @pow(double %58, double 5.000000e+00)
%60 = load double, double* %8
%61 = call double @pow(double %60, double 3.000000e+00)
%62 = fmul double %59, %61
%63 = fdiv double 1.000000e+00, %62
store double %63, double* %14
%64 = call double @sqrt(double 2.000000e+00)
%65 = fdiv double 1.000000e+00, %64
store double %65, double* %15
%66 = call double @sqrt(double 2.000000e+00)
%67 = fdiv double 1.000000e+00, %66
store double %67, double* %16
%68 = load double, double* %16
%69 = load double, double* %16
%70 = fmul double %68, %69
store double %70, double* %17
%71 = load double, double* %4
%72 = load double, double* %15
%73 = load double, double* %5
%74 = load double, double* %16
%75 = fmul double %73, %74
%76 = call double @llvm.fmuladd.f64(double %71, double %72, double %75)
store double %76, double* %18
%77 = load double, double* %5
%78 = load double, double* %15
%79 = load double, double* %4
%80 = load double, double* %16
%81 = fmul double %79, %80
%82 = fneg double %81
%83 = call double @llvm.fmuladd.f64(double %77, double %78, double %82)
store double %83, double* %19
%84 = load double, double* %18
%85 = fmul double -2.000000e+00, %84
%86 = load double, double* %17
%87 = fmul double %85, %86
%88 = load double, double* %9
%89 = load double, double* %12
%90 = fmul double %88, %89
%91 = load double, double* %15
%92 = load double, double* %9
%93 = load double, double* %11
%94 = fmul double %92, %93
%95 = fmul double %91, %94
%96 = fneg double %95
%97 = call double @llvm.fmuladd.f64(double %87, double %90, double %96)
store double %97, double* %21
%98 = load double, double* %18
%99 = load double, double* %15
%100 = load double, double* %2
%101 = load double, double* %19
%102 = fmul double %100, %101
%103 = load double, double* %16
%104 = fmul double %102, %103
%105 = call double @llvm.fmuladd.f64(double %98, double %99, double %104)
%106 = fmul double 2.000000e+00, %105
%107 = load double, double* %15
%108 = fmul double %106, %107
%109 = load double, double* %9
%110 = load double, double* %12
%111 = fmul double %109, %110
%112 = fmul double %108, %111
store double %112, double* %26
%113 = load double, double* %18
%114 = load double, double* %18
%115 = load double, double* %15
%116 = load double, double* %2
%117 = load double, double* %19
%118 = fmul double %116, %117
%119 = load double, double* %16
%120 = fmul double %118, %119
%121 = call double @llvm.fmuladd.f64(double %114, double %115, double %120)
%122 = fmul double %113, %121
%123 = load double, double* %7
%124 = load double, double* %4
%125 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %123, double %124)
%126 = fmul double %122, %125
%127 = load double, double* %10
%128 = load double, double* %12
%129 = fmul double %127, %128
%130 = fmul double %126, %129
store double %130, double* %22
%131 = load double, double* %18
%132 = fmul double -2.000000e+00, %131
%133 = load double, double* %7
%134 = load double, double* %8
%135 = fadd double %133, %134
%136 = fmul double %132, %135
%137 = load double, double* %10
%138 = load double, double* %11
%139 = fmul double %137, %138
%140 = fmul double %136, %139
store double %140, double* %23
%141 = load double, double* %18
%142 = load double, double* %18
%143 = fmul double %141, %142
%144 = load double, double* %18
%145 = fmul double %143, %144
%146 = load double, double* %6
%147 = load double, double* %4
%148 = fmul double 9.000000e+00, %147
%149 = load double, double* %7
%150 = fmul double %148, %149
%151 = call double @llvm.fmuladd.f64(double 8.000000e+00, double %146, double %150)
%152 = load double, double* %4
%153 = fmul double 3.000000e+00, %152
%154 = load double, double* %4
%155 = call double @llvm.fmuladd.f64(double %153, double %154, double %151)
%156 = fmul double %145, %155
%157 = load double, double* %14
%158 = fmul double %156, %157
store double %158, double* %24
%159 = load double, double* %17
%160 = fmul double -2.000000e+00, %159
%161 = load double, double* %15
%162 = fmul double %160, %161
%163 = load double, double* %12
%164 = fmul double %162, %163
store double %164, double* %25
%165 = load double, double* %18
%166 = load double, double* %18
%167 = fmul double %165, %166
%168 = load double, double* %7
%169 = load double, double* %4
%170 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %168, double %169)
%171 = fmul double %167, %170
%172 = load double, double* %15
%173 = fmul double %171, %172
%174 = load double, double* %10
%175 = load double, double* %12
%176 = fmul double %174, %175
%177 = fmul double %173, %176
store double %177, double* %27
%178 = load double, double* %21
%179 = load double, double* %22
%180 = fadd double %178, %179
%181 = load double, double* %23
%182 = fadd double %180, %181
%183 = load double, double* %24
%184 = fadd double %182, %183
%185 = load double, double* %25
%186 = fadd double %184, %185
%187 = load double, double* %26
%188 = fadd double %186, %187
%189 = load double, double* %27
%190 = fadd double %188, %189
store double %190, double* %20
%191 = load i32, i32* @stdout
%192 = load double, double* %21
%193 = load double, double* %22
%194 = load double, double* %23
%195 = load double, double* %24
%196 = call i32 @fprintf(i32 %191, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), double %192, double %193, double %194, double %195)
%197 = load i32, i32* @stdout
%198 = load double, double* %25
%199 = load double, double* %26
%200 = load double, double* %27
%201 = load double, double* %20
%202 = call i32 @fprintf(i32 %197, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), double %198, double %199, double %200, double %201)
ret i32 0
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [21 x i8] c"%.3e %.3e %.3e %.3e\0A\00"
define i32 @main() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), double 0x433413BB98B670E8, double 0xC2A48F1673CE0893, double 0x41F50D66DD0E9276, double 0xC3340975B2B3BBB1)
%3 = load i32, i32* @stdout
%4 = tail call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0), double 0xC33418E200C2767D, double 0x42A4945B7D1AB6C9, double 0x43340E98277A4166, double 0x4135944800000000)
ret i32 0
}