double Q1(x)
double x;
{
  static double p[9] = {
      0.4687499999999999999999995275e-01, 0.3302394516691663879252493748e+00,
      0.8456888491208195767613862428e+00, 0.1008551084218946085420665147e+01,
      0.5973407972399900690521296181e+00, 0.1737697433393258207540273097e+00,
      0.2303862814819568573893610740e-01, 0.1171224207976250587945594946e-02,
      0.1486418220337492918307904804e-04};
  static double q[10] = {
      0.9999999999999999999999999999e+00, 0.7049380763213049609070823421e+01,
      0.1807129960468949760845562209e+02, 0.2159171174362827330505421695e+02,
      0.1283239297740546866114600499e+02, 0.3758349275324260869598403931e+01,
      0.5055985453754739528620657666e+00, 0.2665604326323907148063400439e-01,
      0.3821140353404633025596424652e-03, 0.3206696590241261037875154062e-06};
  double zsq = 64.0 / (x * x);
  return (8.0 / x) * POLYNOM8(zsq, p) / POLYNOM9(zsq, q);
}


x86 assembly (clang, -O0):
<Q1>:
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):
<Q1>:
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):
@Q1.p = internal global [9 x double] [double 4.687500e-02, double 0x3FD522A4A731279B, double 0x3FEB0FE20FB21B05, double 0x3FF0230676310D2B, double 0x3FE31D6A7296CB5D, double 0x3FC63E1642569EB4, double 0x3F97977029C3CB61, double 0x3F5330786AD9C496, double 0x3EEF2C25A57092AF]
@Q1.q = internal global [10 x double] [double 1.000000e+00, double 0x401C3290DEEC34CE, double 0x40321240B0DE5BEF, double 0x4035977A6BBB8AE6, double 0x4029AA2F698EC0CC, double 0x400E11196CC3B439, double 0x3FE02DDD00295EE3, double 0x3F9B4BB8C839B9D3, double 0x3F390ACF48FE458E, double 0x3E9585101338F70B]
define double @Q1(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]* @Q1.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]* @Q1.q, i64 0, i64 0))
%16 = sitofp i32 %15 to double
%17 = fdiv double %13, %16
ret double %17
}

LLVM IR (-O2):
@Q1.p = internal global [9 x double] [double 4.687500e-02, double 0x3FD522A4A731279B, double 0x3FEB0FE20FB21B05, double 0x3FF0230676310D2B, double 0x3FE31D6A7296CB5D, double 0x3FC63E1642569EB4, double 0x3F97977029C3CB61, double 0x3F5330786AD9C496, double 0x3EEF2C25A57092AF]
@Q1.q = internal global [10 x double] [double 1.000000e+00, double 0x401C3290DEEC34CE, double 0x40321240B0DE5BEF, double 0x4035977A6BBB8AE6, double 0x4029AA2F698EC0CC, double 0x400E11196CC3B439, double 0x3FE02DDD00295EE3, double 0x3F9B4BB8C839B9D3, double 0x3F390ACF48FE458E, double 0x3E9585101338F70B]
define double @Q1(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]* @Q1.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]* @Q1.q, i64 0, i64 0))
%9 = sitofp i32 %8 to double
%10 = fdiv double %7, %9
ret double %10
}