double Q0(x)
double x;
{
  static double p[9] = {
      -0.1562499999999999999999995808e-01, -0.1111285583113679178917024959e+00,
      -0.2877685516355036842789761274e+00, -0.3477683453166454475665803194e+00,
      -0.2093031978191084473537206358e+00, -0.6209520943730206312601003832e-01,
      -0.8434508346572023650653353729e-02, -0.4414848186188819989871882393e-03,
      -0.5768946278415631134804064871e-05};
  static double q[10] = {
      0.9999999999999999999999999999e+00, 0.7121383005365046745065850254e+01,
      0.1848194194302368046679068851e+02, 0.2242327522435983712994071530e+02,
      0.1359286169255959339963319677e+02, 0.4089489268101204780080944780e+01,
      0.5722140925672174525430730669e+00, 0.3219814230905924725810683346e-01,
      0.5299687475496044642364124073e-03, 0.9423249021001925212258428217e-06};
  double zsq = 64.0 / (x * x);
  return (8.0 / x) * POLYNOM8(zsq, p) / POLYNOM9(zsq, q);
}


x86 assembly (clang, -O0):
<Q0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm1
mulsd  -0x8(%rbp),%xmm1
movsd  0xec9(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xeb0(%rip),%xmm0
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x10(%rbp),%xmm0
lea    0x2eda(%rip),%rdi
mov    $0x1,%al
call   1040 <POLYNOM8@plt>
movsd  -0x20(%rbp),%xmm0
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x10(%rbp),%xmm0
lea    0x2f05(%rip),%rdi
mov    $0x1,%al
call   1030 <POLYNOM9@plt>
movsd  -0x18(%rbp),%xmm0
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Q0>:
sub    $0x18,%rsp
movsd  0xedc(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
mulsd  %xmm0,%xmm0
movsd  0xebe(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
lea    0x2eed(%rip),%rdi
movapd %xmm1,%xmm0
mov    $0x1,%al
call   1040 <POLYNOM8@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x2f18(%rip),%rdi
movsd  0x10(%rsp),%xmm0
mov    $0x1,%al
call   1030 <POLYNOM9@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x8(%rsp),%xmm0
divsd  %xmm1,%xmm0
add    $0x18,%rsp
ret

LLVM IR (-O0):
@Q0.p = internal global [9 x double] [double -1.562500e-02, double 0xBFBC72EBD3995510, double 0xBFD26ACCC985DFA7, double 0xBFD641D6296E048A, double 0xBFCACA727ACA67B0, double 0xBFAFCAF17B8AFFCF, double 0xBF81461C8C0D098D, double 0xBF3CEEE2DB8EDBA6, double 0xBED8325BE0D72C14]
@Q0.q = internal global [10 x double] [double 1.000000e+00, double 0x401C7C4BD3995510, double 0x40327B608C13DB7F, double 0x40366C5BC3DDD523, double 0x402B2F8B91593077, double 0x40105BA3131F59C1, double 0x3FE24F93EDBC5E56, double 0x3FA07C46606B31AE, double 0x3F415DB33824F342, double 0x3EAF9E825FBEBB52]
define double @Q0(double %0) {
%2 = alloca double
%3 = alloca double
store double %0, double* %2
%4 = load double, double* %2
%5 = load double, double* %2
%6 = fmul double %4, %5
%7 = fdiv double 6.400000e+01, %6
store double %7, double* %3
%8 = load double, double* %2
%9 = fdiv double 8.000000e+00, %8
%10 = load double, double* %3
%11 = call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM8 to i32 (double, double*, ...)*)(double %10, double* getelementptr inbounds ([9 x double], [9 x double]* @Q0.p, i64 0, i64 0))
%12 = sitofp i32 %11 to double
%13 = fmul double %9, %12
%14 = load double, double* %3
%15 = call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM9 to i32 (double, double*, ...)*)(double %14, double* getelementptr inbounds ([10 x double], [10 x double]* @Q0.q, i64 0, i64 0))
%16 = sitofp i32 %15 to double
%17 = fdiv double %13, %16
ret double %17
}

LLVM IR (-O2):
@Q0.p = internal global [9 x double] [double -1.562500e-02, double 0xBFBC72EBD3995510, double 0xBFD26ACCC985DFA7, double 0xBFD641D6296E048A, double 0xBFCACA727ACA67B0, double 0xBFAFCAF17B8AFFCF, double 0xBF81461C8C0D098D, double 0xBF3CEEE2DB8EDBA6, double 0xBED8325BE0D72C14]
@Q0.q = internal global [10 x double] [double 1.000000e+00, double 0x401C7C4BD3995510, double 0x40327B608C13DB7F, double 0x40366C5BC3DDD523, double 0x402B2F8B91593077, double 0x40105BA3131F59C1, double 0x3FE24F93EDBC5E56, double 0x3FA07C46606B31AE, double 0x3F415DB33824F342, double 0x3EAF9E825FBEBB52]
define double @Q0(double %0) {
%2 = fmul double %0, %0
%3 = fdiv double 6.400000e+01, %2
%4 = fdiv double 8.000000e+00, %0
%5 = tail call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM8 to i32 (double, double*, ...)*)(double %3, double* getelementptr inbounds ([9 x double], [9 x double]* @Q0.p, i64 0, i64 0))
%6 = sitofp i32 %5 to double
%7 = fmul double %4, %6
%8 = tail call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM9 to i32 (double, double*, ...)*)(double %3, double* getelementptr inbounds ([10 x double], [10 x double]* @Q0.q, i64 0, i64 0))
%9 = sitofp i32 %8 to double
%10 = fdiv double %7, %9
ret double %10
}