double smally0_bar(x)
double x;
{
  static double p[14] = {
      -0.2692670958801060448840356941e+14, 0.6467231173109037044444917683e+14,
      -0.5563036156275660297303897296e+13, 0.1698403391975239335187832821e+12,
      -0.2606282788256139370857687880e+10, 0.2352841334491277505699488812e+08,
      -0.1365184412186963659690851354e+06, 0.5371538422626582142170627457e+03,
      -0.1478903875146718839145348490e+01, 0.2887840299886172125955719069e-02,
      -0.3977426824263991024666116123e-05, 0.3738169731655229006655176866e-08,
      -0.2194460874896856106887900645e-11, 0.6208996973821484304384239393e-15};
  static double q[6] = {
      0.3648393301278364629844168660e+15, 0.1698390180526960997295118328e+13,
      0.3587111679107612117789088586e+10, 0.4337760840406994515845890005e+07,
      0.3037977771964348276793136205e+04, 0.1000000000000000000000000000e+01};
  double xsq = x * x;
  return POLYNOM13(xsq, p) / POLYNOM5(xsq, q);
}


x86 assembly (clang, -O0):
<smally0_bar>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x10(%rbp),%xmm0
lea    0x2ef8(%rip),%rdi
mov    $0x1,%al
call   1040 <POLYNOM13@plt>
mov    %eax,-0x14(%rbp)
movsd  -0x10(%rbp),%xmm0
lea    0x2f52(%rip),%rdi
mov    $0x1,%al
call   1030 <POLYNOM5@plt>
mov    %eax,%ecx
mov    -0x14(%rbp),%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<smally0_bar>:
push   %rbx
sub    $0x10,%rsp
mulsd  %xmm0,%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x2f0a(%rip),%rdi
mov    $0x1,%al
call   1040 <POLYNOM13@plt>
mov    %eax,%ebx
lea    0x2f6a(%rip),%rdi
movsd  0x8(%rsp),%xmm0
mov    $0x1,%al
call   1030 <POLYNOM5@plt>
mov    %eax,%ecx
mov    %ebx,%eax
cltd
idiv   %ecx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
add    $0x10,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@smally0_bar.p = internal global [14 x double] [double 0xC2B87D5CF5C02A9B, double 0x42CD68D91571C92F, double 0xC2943CFB2D05CEA4, double 0x4243C5A2F47EC310, double 0xC1E36B170488324B, double 0x4176703DD584C342, double 0xC100AA33879DAAFA, double 0x4080C93B11A6F6E1, double 0xBFF7A9971C1AECDA, double 0x3F67A83D749C51BB, double 0xBED0AEBAC2AE984B, double 0x3E300E293CF7EE78, double 0xBD834D7C911CA758, double 0x3CC65EC9F5C73134]
@smally0_bar.q = internal global [6 x double] [double 0x42F4BD1C6AC1FDC7, double 0x4278B6FF182AEF60, double 0x41EAB9DF5FE3718F, double 0x41508C1835C93A6B, double 0x40A7BBF49E86E3A5, double 1.000000e+00]
define double @smally0_bar(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
store double %6, double* %3
%7 = load double, double* %3
%8 = call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM13 to i32 (double, double*, ...)*)(double %7, double* getelementptr inbounds ([14 x double], [14 x double]* @smally0_bar.p, i64 0, i64 0))
%9 = load double, double* %3
%10 = call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM5 to i32 (double, double*, ...)*)(double %9, double* getelementptr inbounds ([6 x double], [6 x double]* @smally0_bar.q, i64 0, i64 0))
%11 = sdiv i32 %8, %10
%12 = sitofp i32 %11 to double
ret double %12
}

LLVM IR (-O2):
@smally0_bar.p = internal global [14 x double] [double 0xC2B87D5CF5C02A9B, double 0x42CD68D91571C92F, double 0xC2943CFB2D05CEA4, double 0x4243C5A2F47EC310, double 0xC1E36B170488324B, double 0x4176703DD584C342, double 0xC100AA33879DAAFA, double 0x4080C93B11A6F6E1, double 0xBFF7A9971C1AECDA, double 0x3F67A83D749C51BB, double 0xBED0AEBAC2AE984B, double 0x3E300E293CF7EE78, double 0xBD834D7C911CA758, double 0x3CC65EC9F5C73134]
@smally0_bar.q = internal global [6 x double] [double 0x42F4BD1C6AC1FDC7, double 0x4278B6FF182AEF60, double 0x41EAB9DF5FE3718F, double 0x41508C1835C93A6B, double 0x40A7BBF49E86E3A5, double 1.000000e+00]
define double @smally0_bar(double %0) {
%2 = fmul double %0, %0
%3 = tail call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM13 to i32 (double, double*, ...)*)(double %2, double* getelementptr inbounds ([14 x double], [14 x double]* @smally0_bar.p, i64 0, i64 0))
%4 = tail call i32 (double, double*, ...) bitcast (i32 (...)* @POLYNOM5 to i32 (double, double*, ...)*)(double %2, double* getelementptr inbounds ([6 x double], [6 x double]* @smally0_bar.q, i64 0, i64 0))
%5 = sdiv i32 %3, %4
%6 = sitofp i32 %5 to double
ret double %6
}