void erd__rys_1_roots_weights(int nt, const double tval[restrict],
                              double rts[restrict], double wts[restrict]) {
  int jump1[34] = {1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6,
                   6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7};
  double e;
  int n;
  double t, x, f1, r1, w1;
  int tcase;
  for (n = 0; n < nt; ++n) {
    t = tval[n];
    if (t <= 3e-7) {
      r1 = .5 - t * .2;
      wts[n] *= 1. - t * .333333333333333;
      rts[n] = r1 / (r1 + 1.);
      goto L100;
    }
    tcase = (int)(((t + 1.0)) > (34.) ? (34.) : ((t + 1.0)));
    switch (jump1[tcase - 1]) {
    case 1:
      goto L1100;
    case 2:
      goto L1200;
    case 3:
      goto L1300;
    case 4:
      goto L1400;
    case 5:
      goto L1500;
    case 6:
      goto L1600;
    case 7:
      goto L1700;
    }
  L1100:
    f1 = ((((((((t * -8.36313918003957e-8 + 1.21222603512827e-6) * t -
                1.15662609053481e-5) *
                   t +
               9.25197374512647e-5) *
                  t -
              6.40994113129432e-4) *
                 t +
             .00378787044215009) *
                t -
            .0185185172458485) *
               t +
           .0714285713298222) *
              t -
          .199999999997023) *
             t +
         .333333333333318;
    w1 = (t + t) * f1 + exp(-t);
    r1 = f1 / (w1 - f1);
    wts[n] *= w1;
    rts[n] = r1 / (r1 + 1.);
    goto L100;
  L1200:
    x = t - 2.;
    f1 = ((((((((((x * -1.61702782425558e-10 + 1.96215250865776e-9) * x -
                  2.14234468198419e-8) *
                     x +
                 2.17216556336318e-7) *
                    x -
                1.98850171329371e-6) *
                   x +
               1.62429321438911e-5) *
                  x -
              1.16740298039895e-4) *
                 x +
             7.24888732052332e-4) *
                x -
            .00379490003707156) *
               x +
           .0161723488664661) *
              x -
          .0529428148329736) *
             x +
         .115702180856167;
    w1 = (t + t) * f1 + exp(-t);
    r1 = f1 / (w1 - f1);
    wts[n] *= w1;
    rts[n] = r1 / (r1 + 1.);
    goto L100;
  L1300:
    x = t - 4.;
    f1 = ((((((((((x * -2.62453564772299e-11 + 3.24031041623823e-10) * x -
                  3.614965656163e-9) *
                     x +
                 3.760256799971e-8) *
                    x -
                3.553558319675e-7) *
                   x +
               3.022556449731e-6) *
                  x -
              2.290098979647e-5) *
                 x +
             1.526537461148e-4) *
                x -
            8.81947375894379e-4) *
               x +
           .00433207949514611) *
              x -
          .0175257821619926) *
             x +
         .0528406320615584;
    w1 = (t + t) * f1 + exp(-t);
    r1 = f1 / (w1 - f1);
    wts[n] *= w1;
    rts[n] = r1 / (r1 + 1.);
    goto L100;
  L1400:
    e = exp(-t);
    x = 1. / t;
    w1 = ((((((x * .46897511375022 - .69955602298985) * x + .53689283271887) *
                 x -
             .32883030418398) *
                x +
            .24645596956002) *
               x -
           .49984072848436) *
              x -
          3.1501078774085e-6) *
             e +
         sqrt(x * .785398163397448);
    f1 = (w1 - e) / (t + t);
    r1 = f1 / (w1 - f1);
    wts[n] *= w1;
    rts[n] = r1 / (r1 + 1.);
    goto L100;
  L1500:
    e = exp(-t);
    x = 1. / t;
    w1 = (((x * -.18784686463512 + .22991849164985) * x - .49893752514047) * x -
          2.1916512131607e-5) *
             e +
         sqrt(x * .785398163397448);
    f1 = (w1 - e) / (t + t);
    r1 = f1 / (w1 - f1);
    wts[n] *= w1;
    rts[n] = r1 / (r1 + 1.);
    goto L100;
  L1600:
    e = exp(-t);
    x = 1. / t;
    w1 = ((x * .1962326414943 - .4969524146449) * x - 6.0156581186481e-5) * e +
         sqrt(x * .785398163397448);
    f1 = (w1 - e) / (t + t);
    r1 = f1 / (w1 - f1);
    wts[n] *= w1;
    rts[n] = r1 / (r1 + 1.);
    goto L100;
  L1700:
    wts[n] *= sqrt(.785398163397448 / t);
    rts[n] = .5 / t;
  L100:;
  }
}


x86 assembly (clang, -O0):
<erd__rys_1_roots_weights>:
push   %rbp
mov    %rsp,%rbp
sub    $0x160,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
lea    -0xb0(%rbp),%rdi
lea    0x1098(%rip),%rsi
mov    $0x88,%edx
call   1030 <memcpy@plt>
movl   $0x0,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1e38 <erd__rys_1_roots_weights+0xd08>
mov    -0x10(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xe65(%rip),%xmm0
ucomisd -0xc8(%rbp),%xmm0
ff
jb     1265 <erd__rys_1_roots_weights+0x135>
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xff0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe3c(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xfa9(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf5(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xdcc(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  0xda3(%rip),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  0xd8b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    129c <erd__rys_1_roots_weights+0x16c>
movsd  0xd79(%rip),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    12b4 <erd__rys_1_roots_weights+0x184>
movsd  0xd6c(%rip),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
cvttsd2si %xmm0,%eax
mov    %eax,-0xec(%rbp)
mov    -0xec(%rbp),%eax
add    $0xffffffff,%eax
cltq
mov    -0xb0(%rbp,%rax,4),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x100(%rbp)
sub    $0x6,%eax
ja     1327 <erd__rys_1_roots_weights+0x1f7>
mov    -0x100(%rbp),%rax
lea    0xed5(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    132c <erd__rys_1_roots_weights+0x1fc>
jmp    14f5 <erd__rys_1_roots_weights+0x3c5>
jmp    170a <erd__rys_1_roots_weights+0x5da>
jmp    191f <erd__rys_1_roots_weights+0x7ef>
jmp    1ae9 <erd__rys_1_roots_weights+0x9b9>
jmp    1c6b <erd__rys_1_roots_weights+0xb3b>
jmp    1dd5 <erd__rys_1_roots_weights+0xca5>
jmp    132c <erd__rys_1_roots_weights+0x1fc>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  0xe6c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe68(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xe40(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xe20(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xe00(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xde0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xdc0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xda0(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xd80(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xd60(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movsd  -0x110(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xb3c(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  0xc5b(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0xc2f(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc2b(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xc03(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xbe3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xbc3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xba3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xb83(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xb63(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xb43(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xb23(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xb03(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0xae3(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movsd  -0x120(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x927(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  0x9de(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0x9b2(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x9ae(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x986(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x966(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x946(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x926(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x906(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x8e6(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x8c6(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x8a6(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x886(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x866(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movsd  -0x130(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x712(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x6bd(%rip),%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0x715(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x711(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x6e9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x6c9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x6a9(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x689(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x669(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  0x605(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  -0x140(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
addsd  -0xc8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x548(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x4f3(%rip),%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0x513(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x50f(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x4e7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x4c7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0x483(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  -0x150(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x148(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
addsd  -0xc8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x3c6(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x371(%rip),%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0x371(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x36d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x345(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  0x319(%rip),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
movsd  -0x160(%rbp),%xmm2
ff
movaps %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm1
ff
addsd  -0xc8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0x25c(%rip),%xmm1
addsd  -0xe0(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e1f <erd__rys_1_roots_weights+0xcef>
movsd  0x243(%rip),%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
call   1050 <sqrt@plt>
mov    -0x20(%rbp),%rax
movslq -0xbc(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  0x211(%rip),%xmm0
divsd  -0xc8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movslq -0xbc(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1e24 <erd__rys_1_roots_weights+0xcf4>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    116c <erd__rys_1_roots_weights+0x3c>
add    $0x160,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<erd__rys_1_roots_weights>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
test   %edi,%edi
jle    161c <erd__rys_1_roots_weights+0x4fc>
mov    %rcx,%r13
mov    %rdx,%r14
mov    %rsi,%r15
mov    %edi,%r12d
xor    %ebx,%ebx
movsd  0xeb4(%rip),%xmm2
movsd  0xecc(%rip),%xmm3
lea    0x1085(%rip),%rbp
nopl   0x0(%rax,%rax,1)
movsd  (%r15,%rbx,8),%xmm4
ucomisd %xmm4,%xmm2
jae    1250 <erd__rys_1_roots_weights+0x130>
movapd %xmm4,%xmm0
addsd  %xmm3,%xmm0
movsd  0xea8(%rip),%xmm1
minsd  %xmm0,%xmm1
cvttsd2si %xmm1,%eax
cltq
lea    0x106f(%rip),%rcx
mov    -0x4(%rcx,%rax,4),%eax
add    $0xfffffffe,%eax
cmp    $0x5,%eax
ja     127c <erd__rys_1_roots_weights+0x15c>
movslq 0x0(%rbp,%rax,4),%rax
add    %rbp,%rax
jmp    *%rax
movapd %xmm4,%xmm0
addsd  0xf59(%rip),%xmm0
movapd %xmm0,%xmm1
mulsd  0xf55(%rip),%xmm1
addsd  0xf55(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf51(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf4d(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf49(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf45(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf41(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf3d(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf39(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf35(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf31(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xf2d(%rip),%xmm1
jmp    1392 <erd__rys_1_roots_weights+0x272>
nopl   0x0(%rax,%rax,1)
movapd %xmm4,%xmm5
mulsd  0xdac(%rip),%xmm5
mulsd  0xdb4(%rip),%xmm4
addsd  %xmm3,%xmm4
mulsd  0x0(%r13,%rbx,8),%xmm4
addsd  0xd99(%rip),%xmm5
jmp    159d <erd__rys_1_roots_weights+0x47d>
movapd %xmm4,%xmm0
mulsd  0xef0(%rip),%xmm0
addsd  0xef0(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xeec(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xee8(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xee4(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xee0(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xedc(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xed8(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xed4(%rip),%xmm0
mulsd  %xmm4,%xmm0
addsd  0xed0(%rip),%xmm0
movapd %xmm0,(%rsp)
jmp    1397 <erd__rys_1_roots_weights+0x277>
movapd %xmm4,%xmm0
addsd  0xda2(%rip),%xmm0
movapd %xmm0,%xmm1
mulsd  0xd9e(%rip),%xmm1
addsd  0xd9e(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd9a(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd96(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd92(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd8e(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd8a(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd86(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd82(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd7e(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd7a(%rip),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xd76(%rip),%xmm1
movapd %xmm1,(%rsp)
movapd %xmm4,%xmm0
addsd  %xmm4,%xmm0
movapd %xmm0,0x10(%rsp)
xorpd  0xe23(%rip),%xmm4
movapd %xmm4,%xmm0
call   1030 <exp@plt>
movapd (%rsp),%xmm5
movsd  0xc5d(%rip),%xmm3
movsd  0xc35(%rip),%xmm2
movapd 0x10(%rsp),%xmm1
mulsd  %xmm5,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
subsd  %xmm5,%xmm0
mulsd  0x0(%r13,%rbx,8),%xmm1
divsd  %xmm0,%xmm5
movsd  %xmm1,0x0(%r13,%rbx,8)
jmp    15a4 <erd__rys_1_roots_weights+0x484>
movapd %xmm4,%xmm0
xorpd  0xdcc(%rip),%xmm0
movapd %xmm4,(%rsp)
call   1030 <exp@plt>
movapd (%rsp),%xmm1
movsd  0xc05(%rip),%xmm3
movapd %xmm0,%xmm6
movapd %xmm3,%xmm0
divsd  %xmm1,%xmm0
movapd %xmm0,%xmm4
mulsd  0xc3d(%rip),%xmm4
addsd  0xc3d(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xc39(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xc35(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xc31(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xc2d(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xc29(%rip),%xmm4
jmp    1528 <erd__rys_1_roots_weights+0x408>
movapd %xmm4,%xmm0
xorpd  0xd48(%rip),%xmm0
movapd %xmm4,(%rsp)
call   1030 <exp@plt>
movapd (%rsp),%xmm1
movsd  0xb81(%rip),%xmm3
movapd %xmm0,%xmm6
movapd %xmm3,%xmm0
divsd  %xmm1,%xmm0
movapd %xmm0,%xmm4
mulsd  0xb99(%rip),%xmm4
addsd  0xb99(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xb95(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xb91(%rip),%xmm4
jmp    1528 <erd__rys_1_roots_weights+0x408>
movapd %xmm4,%xmm0
xorpd  0xceb(%rip),%xmm0
movapd %xmm4,(%rsp)
call   1030 <exp@plt>
movapd (%rsp),%xmm1
movsd  0xb24(%rip),%xmm3
movapd %xmm0,%xmm6
movapd %xmm3,%xmm0
divsd  %xmm1,%xmm0
movapd %xmm0,%xmm4
mulsd  0xb1c(%rip),%xmm4
addsd  0xb1c(%rip),%xmm4
mulsd  %xmm0,%xmm4
addsd  0xb18(%rip),%xmm4
mulsd  0xb18(%rip),%xmm0
ucomisd 0xc90(%rip),%xmm0
jb     1540 <erd__rys_1_roots_weights+0x420>
sqrtsd %xmm0,%xmm0
jmp    156a <erd__rys_1_roots_weights+0x44a>
movsd  %xmm4,0x10(%rsp)
movsd  %xmm6,0x20(%rsp)
call   1040 <sqrt@plt>
movsd  0x20(%rsp),%xmm6
movsd  0x10(%rsp),%xmm4
movapd (%rsp),%xmm1
movsd  0xab6(%rip),%xmm3
movsd  0xa8e(%rip),%xmm2
mulsd  %xmm6,%xmm4
addsd  %xmm0,%xmm4
movapd %xmm4,%xmm5
subsd  %xmm6,%xmm5
addsd  %xmm1,%xmm1
divsd  %xmm1,%xmm5
movapd %xmm4,%xmm0
subsd  %xmm5,%xmm0
mulsd  0x0(%r13,%rbx,8),%xmm4
divsd  %xmm0,%xmm5
movsd  %xmm4,0x0(%r13,%rbx,8)
movapd %xmm5,%xmm0
addsd  %xmm3,%xmm0
divsd  %xmm0,%xmm5
movsd  %xmm5,(%r14,%rbx,8)
add    $0x1,%rbx
cmp    %rbx,%r12
jne    1160 <erd__rys_1_roots_weights+0x40>
jmp    161c <erd__rys_1_roots_weights+0x4fc>
movsd  0xa7b(%rip),%xmm0
divsd  %xmm4,%xmm0
ucomisd 0xbef(%rip),%xmm0
jb     15e1 <erd__rys_1_roots_weights+0x4c1>
sqrtsd %xmm0,%xmm0
jmp    1600 <erd__rys_1_roots_weights+0x4e0>
movapd %xmm4,(%rsp)
call   1040 <sqrt@plt>
movapd (%rsp),%xmm4
movsd  0xa28(%rip),%xmm3
movsd  0xa00(%rip),%xmm2
mulsd  0x0(%r13,%rbx,8),%xmm0
movsd  %xmm0,0x0(%r13,%rbx,8)
movsd  0x9fa(%rip),%xmm5
divsd  %xmm4,%xmm5
jmp    15b0 <erd__rys_1_roots_weights+0x490>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.erd__rys_1_roots_weights.jump1 = [34 x i32] [i32 1, i32 2, i32 2, i32 3, i32 3, i32 4, i32 4, i32 4, i32 4, i32 4, i32 5, i32 5, i32 5, i32 5, i32 5, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 7]
define void @erd__rys_1_roots_weights(i32 %0, double* noalias %1, double* noalias %2, double* noalias %3) {
%5 = alloca i32
%6 = alloca double*
%7 = alloca double*
%8 = alloca double*
%9 = alloca [34 x i32]
%10 = alloca double
%11 = alloca i32
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca i32
store i32 %0, i32* %5
store double* %1, double** %6
store double* %2, double** %7
store double* %3, double** %8
%18 = bitcast [34 x i32]* %9 to i8*
store i32 0, i32* %11
br label %19
19: ; preds = %382, %4
%20 = load i32, i32* %11
%21 = load i32, i32* %5
%22 = icmp slt i32 %20, %21
br i1 %22, label %23, label %385
23: ; preds = %19
%24 = load double*, double** %6
%25 = load i32, i32* %11
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds double, double* %24, i64 %26
%28 = load double, double* %27
store double %28, double* %12
%29 = load double, double* %12
%30 = fcmp ole double %29, 3.000000e-07
br i1 %30, label %31, label %52
31: ; preds = %23
%32 = load double, double* %12
%33 = fneg double %32
%34 = call double @llvm.fmuladd.f64(double %33, double 2.000000e-01, double 5.000000e-01)
store double %34, double* %15
%35 = load double, double* %12
%36 = fneg double %35
%37 = call double @llvm.fmuladd.f64(double %36, double 0x3FD555555555554F, double 1.000000e+00)
%38 = load double*, double** %8
%39 = load i32, i32* %11
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds double, double* %38, i64 %40
%42 = load double, double* %41
%43 = fmul double %42, %37
store double %43, double* %41
%44 = load double, double* %15
%45 = load double, double* %15
%46 = fadd double %45, 1.000000e+00
%47 = fdiv double %44, %46
%48 = load double*, double** %7
%49 = load i32, i32* %11
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds double, double* %48, i64 %50
store double %47, double* %51
br label %381
52: ; preds = %23
%53 = load double, double* %12
%54 = fadd double %53, 1.000000e+00
%55 = fcmp ogt double %54, 3.400000e+01
br i1 %55, label %56, label %57
56: ; preds = %52
br label %60
57: ; preds = %52
%58 = load double, double* %12
%59 = fadd double %58, 1.000000e+00
br label %60
60: ; preds = %57, %56
%61 = phi double [ 3.400000e+01, %56 ], [ %59, %57 ]
%62 = fptosi double %61 to i32
store i32 %62, i32* %17
%63 = load i32, i32* %17
%64 = sub nsw i32 %63, 1
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [34 x i32], [34 x i32]* %9, i64 0, i64 %65
%67 = load i32, i32* %66
switch i32 %67, label %75 [
i32 1, label %68
i32 2, label %69
i32 3, label %70
i32 4, label %71
i32 5, label %72
i32 6, label %73
i32 7, label %74
]
68: ; preds = %60
br label %76
69: ; preds = %60
br label %123
70: ; preds = %60
br label %176
71: ; preds = %60
br label %229
72: ; preds = %60
br label %279
73: ; preds = %60
br label %323
74: ; preds = %60
br label %365
75: ; preds = %60
br label %76
76: ; preds = %75, %68
%77 = load double, double* %12
%78 = call double @llvm.fmuladd.f64(double %77, double 0xBE76731B00F2E07F, double 0x3EB456789F017AD7)
%79 = load double, double* %12
%80 = call double @llvm.fmuladd.f64(double %78, double %79, double 0xBEE84196CB5ECA91)
%81 = load double, double* %12
%82 = call double @llvm.fmuladd.f64(double %80, double %81, double 0x3F1840E4FC817BA3)
%83 = load double, double* %12
%84 = call double @llvm.fmuladd.f64(double %82, double %83, double 0xBF45010C605C6322)
%85 = load double, double* %12
%86 = call double @llvm.fmuladd.f64(double %84, double %85, double 0x3F6F07BD7574E5B9)
%87 = load double, double* %12
%88 = call double @llvm.fmuladd.f64(double %86, double %87, double 0xBF92F684A7C3EC5A)
%89 = load double, double* %12
%90 = call double @llvm.fmuladd.f64(double %88, double %89, double 0x3FB2492491DC9122)
%91 = load double, double* %12
%92 = call double @llvm.fmuladd.f64(double %90, double %91, double 0xBFC999999997F6A0)
%93 = load double, double* %12
%94 = call double @llvm.fmuladd.f64(double %92, double %93, double 0x3FD5555555555441)
store double %94, double* %14
%95 = load double, double* %12
%96 = load double, double* %12
%97 = fadd double %95, %96
%98 = load double, double* %14
%99 = load double, double* %12
%100 = fneg double %99
%101 = call double @exp(double %100)
%102 = call double @llvm.fmuladd.f64(double %97, double %98, double %101)
store double %102, double* %16
%103 = load double, double* %14
%104 = load double, double* %16
%105 = load double, double* %14
%106 = fsub double %104, %105
%107 = fdiv double %103, %106
store double %107, double* %15
%108 = load double, double* %16
%109 = load double*, double** %8
%110 = load i32, i32* %11
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds double, double* %109, i64 %111
%113 = load double, double* %112
%114 = fmul double %113, %108
store double %114, double* %112
%115 = load double, double* %15
%116 = load double, double* %15
%117 = fadd double %116, 1.000000e+00
%118 = fdiv double %115, %117
%119 = load double*, double** %7
%120 = load i32, i32* %11
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds double, double* %119, i64 %121
store double %118, double* %122
br label %381
123: ; preds = %69
%124 = load double, double* %12
%125 = fsub double %124, 2.000000e+00
store double %125, double* %13
%126 = load double, double* %13
%127 = call double @llvm.fmuladd.f64(double %126, double 0xBDE639692E6D26F8, double 0x3E20DAD1A9D197FF)
%128 = load double, double* %13
%129 = call double @llvm.fmuladd.f64(double %127, double %128, double 0xBE5700D50C75966B)
%130 = load double, double* %13
%131 = call double @llvm.fmuladd.f64(double %129, double %130, double 0x3E8D278109166491)
%132 = load double, double* %13
%133 = call double @llvm.fmuladd.f64(double %131, double %132, double 0xBEC0AE4660B81F04)
%134 = load double, double* %13
%135 = call double @llvm.fmuladd.f64(double %133, double %134, double 0x3EF1082DCC2EA1D8)
%136 = load double, double* %13
%137 = call double @llvm.fmuladd.f64(double %135, double %136, double 0xBF1E9A4F0C7FE5E0)
%138 = load double, double* %13
%139 = call double @llvm.fmuladd.f64(double %137, double %138, double 0x3F47C0CEB2DE1FA1)
%140 = load double, double* %13
%141 = call double @llvm.fmuladd.f64(double %139, double %140, double 0xBF6F167B71A03F85)
%142 = load double, double* %13
%143 = call double @llvm.fmuladd.f64(double %141, double %142, double 0x3F908F7BF5EC8499)
%144 = load double, double* %13
%145 = call double @llvm.fmuladd.f64(double %143, double %144, double 0xBFAB1B52148817A2)
%146 = load double, double* %13
%147 = call double @llvm.fmuladd.f64(double %145, double %146, double 0x3FBD9EA87ADA65B7)
store double %147, double* %14
%148 = load double, double* %12
%149 = load double, double* %12
%150 = fadd double %148, %149
%151 = load double, double* %14
%152 = load double, double* %12
%153 = fneg double %152
%154 = call double @exp(double %153)
%155 = call double @llvm.fmuladd.f64(double %150, double %151, double %154)
store double %155, double* %16
%156 = load double, double* %14
%157 = load double, double* %16
%158 = load double, double* %14
%159 = fsub double %157, %158
%160 = fdiv double %156, %159
store double %160, double* %15
%161 = load double, double* %16
%162 = load double*, double** %8
%163 = load i32, i32* %11
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double, double* %162, i64 %164
%166 = load double, double* %165
%167 = fmul double %166, %161
store double %167, double* %165
%168 = load double, double* %15
%169 = load double, double* %15
%170 = fadd double %169, 1.000000e+00
%171 = fdiv double %168, %170
%172 = load double*, double** %7
%173 = load i32, i32* %11
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds double, double* %172, i64 %174
store double %171, double* %175
br label %381
176: ; preds = %70
%177 = load double, double* %12
%178 = fsub double %177, 4.000000e+00
store double %178, double* %13
%179 = load double, double* %13
%180 = call double @llvm.fmuladd.f64(double %179, double 0xBDBCDB693E0F0946, double 0x3DF6446A140C5AE4)
%181 = load double, double* %13
%182 = call double @llvm.fmuladd.f64(double %180, double %181, double 0xBE2F0D64BF6CFA0D)
%183 = load double, double* %13
%184 = call double @llvm.fmuladd.f64(double %182, double %183, double 0x3E64300EBE769D26)
%185 = load double, double* %13
%186 = call double @llvm.fmuladd.f64(double %184, double %185, double 0xBE97D8F77A1BB26E)
%187 = load double, double* %13
%188 = call double @llvm.fmuladd.f64(double %186, double %187, double 0x3EC95AE3FB25B7F4)
%189 = load double, double* %13
%190 = call double @llvm.fmuladd.f64(double %188, double %189, double 0xBEF803700919CC3E)
%191 = load double, double* %13
%192 = call double @llvm.fmuladd.f64(double %190, double %191, double 0x3F240235B1C0EA5B)
%193 = load double, double* %13
%194 = call double @llvm.fmuladd.f64(double %192, double %193, double 0xBF4CE64F9170F27F)
%195 = load double, double* %13
%196 = call double @llvm.fmuladd.f64(double %194, double %195, double 0x3F71BE83BC15CF63)
%197 = load double, double* %13
%198 = call double @llvm.fmuladd.f64(double %196, double %197, double 0xBF91F24754E3EB97)
%199 = load double, double* %13
%200 = call double @llvm.fmuladd.f64(double %198, double %199, double 0x3FAB0DED65356EFD)
store double %200, double* %14
%201 = load double, double* %12
%202 = load double, double* %12
%203 = fadd double %201, %202
%204 = load double, double* %14
%205 = load double, double* %12
%206 = fneg double %205
%207 = call double @exp(double %206)
%208 = call double @llvm.fmuladd.f64(double %203, double %204, double %207)
store double %208, double* %16
%209 = load double, double* %14
%210 = load double, double* %16
%211 = load double, double* %14
%212 = fsub double %210, %211
%213 = fdiv double %209, %212
store double %213, double* %15
%214 = load double, double* %16
%215 = load double*, double** %8
%216 = load i32, i32* %11
%217 = sext i32 %216 to i64
%218 = getelementptr inbounds double, double* %215, i64 %217
%219 = load double, double* %218
%220 = fmul double %219, %214
store double %220, double* %218
%221 = load double, double* %15
%222 = load double, double* %15
%223 = fadd double %222, 1.000000e+00
%224 = fdiv double %221, %223
%225 = load double*, double** %7
%226 = load i32, i32* %11
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds double, double* %225, i64 %227
store double %224, double* %228
br label %381
229: ; preds = %71
%230 = load double, double* %12
%231 = fneg double %230
%232 = call double @exp(double %231)
store double %232, double* %10
%233 = load double, double* %12
%234 = fdiv double 1.000000e+00, %233
store double %234, double* %13
%235 = load double, double* %13
%236 = call double @llvm.fmuladd.f64(double %235, double 0x3FDE03B0320C7C1B, double 0xBFE662C3500EC265)
%237 = load double, double* %13
%238 = call double @llvm.fmuladd.f64(double %236, double %237, double 0x3FE12E39E0BF7FC2)
%239 = load double, double* %13
%240 = call double @llvm.fmuladd.f64(double %238, double %239, double 0xBFD50B8E4299D9ED)
%241 = load double, double* %13
%242 = call double @llvm.fmuladd.f64(double %240, double %241, double 0x3FCF8BDE84950663)
%243 = load double, double* %13
%244 = call double @llvm.fmuladd.f64(double %242, double %243, double 0xBFDFFD63F7832524)
%245 = load double, double* %13
%246 = call double @llvm.fmuladd.f64(double %244, double %245, double 0xBECA6CCE1EB6FD83)
%247 = load double, double* %10
%248 = load double, double* %13
%249 = fmul double %248, 0x3FE921FB54442D15
%250 = call double @sqrt(double %249)
%251 = call double @llvm.fmuladd.f64(double %246, double %247, double %250)
store double %251, double* %16
%252 = load double, double* %16
%253 = load double, double* %10
%254 = fsub double %252, %253
%255 = load double, double* %12
%256 = load double, double* %12
%257 = fadd double %255, %256
%258 = fdiv double %254, %257
store double %258, double* %14
%259 = load double, double* %14
%260 = load double, double* %16
%261 = load double, double* %14
%262 = fsub double %260, %261
%263 = fdiv double %259, %262
store double %263, double* %15
%264 = load double, double* %16
%265 = load double*, double** %8
%266 = load i32, i32* %11
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds double, double* %265, i64 %267
%269 = load double, double* %268
%270 = fmul double %269, %264
store double %270, double* %268
%271 = load double, double* %15
%272 = load double, double* %15
%273 = fadd double %272, 1.000000e+00
%274 = fdiv double %271, %273
%275 = load double*, double** %7
%276 = load i32, i32* %11
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds double, double* %275, i64 %277
store double %274, double* %278
br label %381
279: ; preds = %72
%280 = load double, double* %12
%281 = fneg double %280
%282 = call double @exp(double %281)
store double %282, double* %10
%283 = load double, double* %12
%284 = fdiv double 1.000000e+00, %283
store double %284, double* %13
%285 = load double, double* %13
%286 = call double @llvm.fmuladd.f64(double %285, double 0xBFC80B5DB621CA13, double 0x3FCD6DF81930DD58)
%287 = load double, double* %13
%288 = call double @llvm.fmuladd.f64(double %286, double %287, double 0xBFDFEE97A84E6E89)
%289 = load double, double* %13
%290 = call double @llvm.fmuladd.f64(double %288, double %289, double 0xBEF6FB2B3EDD2A8F)
%291 = load double, double* %10
%292 = load double, double* %13
%293 = fmul double %292, 0x3FE921FB54442D15
%294 = call double @sqrt(double %293)
%295 = call double @llvm.fmuladd.f64(double %290, double %291, double %294)
store double %295, double* %16
%296 = load double, double* %16
%297 = load double, double* %10
%298 = fsub double %296, %297
%299 = load double, double* %12
%300 = load double, double* %12
%301 = fadd double %299, %300
%302 = fdiv double %298, %301
store double %302, double* %14
%303 = load double, double* %14
%304 = load double, double* %16
%305 = load double, double* %14
%306 = fsub double %304, %305
%307 = fdiv double %303, %306
store double %307, double* %15
%308 = load double, double* %16
%309 = load double*, double** %8
%310 = load i32, i32* %11
%311 = sext i32 %310 to i64
%312 = getelementptr inbounds double, double* %309, i64 %311
%313 = load double, double* %312
%314 = fmul double %313, %308
store double %314, double* %312
%315 = load double, double* %15
%316 = load double, double* %15
%317 = fadd double %316, 1.000000e+00
%318 = fdiv double %315, %317
%319 = load double*, double** %7
%320 = load i32, i32* %11
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds double, double* %319, i64 %321
store double %318, double* %322
br label %381
323: ; preds = %73
%324 = load double, double* %12
%325 = fneg double %324
%326 = call double @exp(double %325)
store double %326, double* %10
%327 = load double, double* %12
%328 = fdiv double 1.000000e+00, %327
store double %328, double* %13
%329 = load double, double* %13
%330 = call double @llvm.fmuladd.f64(double %329, double 0x3FC91E26B4D0174D, double 0xBFDFCE1180245B5F)
%331 = load double, double* %13
%332 = call double @llvm.fmuladd.f64(double %330, double %331, double 0xBF0F8A146403A8CF)
%333 = load double, double* %10
%334 = load double, double* %13
%335 = fmul double %334, 0x3FE921FB54442D15
%336 = call double @sqrt(double %335)
%337 = call double @llvm.fmuladd.f64(double %332, double %333, double %336)
store double %337, double* %16
%338 = load double, double* %16
%339 = load double, double* %10
%340 = fsub double %338, %339
%341 = load double, double* %12
%342 = load double, double* %12
%343 = fadd double %341, %342
%344 = fdiv double %340, %343
store double %344, double* %14
%345 = load double, double* %14
%346 = load double, double* %16
%347 = load double, double* %14
%348 = fsub double %346, %347
%349 = fdiv double %345, %348
store double %349, double* %15
%350 = load double, double* %16
%351 = load double*, double** %8
%352 = load i32, i32* %11
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds double, double* %351, i64 %353
%355 = load double, double* %354
%356 = fmul double %355, %350
store double %356, double* %354
%357 = load double, double* %15
%358 = load double, double* %15
%359 = fadd double %358, 1.000000e+00
%360 = fdiv double %357, %359
%361 = load double*, double** %7
%362 = load i32, i32* %11
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds double, double* %361, i64 %363
store double %360, double* %364
br label %381
365: ; preds = %74
%366 = load double, double* %12
%367 = fdiv double 0x3FE921FB54442D15, %366
%368 = call double @sqrt(double %367)
%369 = load double*, double** %8
%370 = load i32, i32* %11
%371 = sext i32 %370 to i64
%372 = getelementptr inbounds double, double* %369, i64 %371
%373 = load double, double* %372
%374 = fmul double %373, %368
store double %374, double* %372
%375 = load double, double* %12
%376 = fdiv double 5.000000e-01, %375
%377 = load double*, double** %7
%378 = load i32, i32* %11
%379 = sext i32 %378 to i64
%380 = getelementptr inbounds double, double* %377, i64 %379
store double %376, double* %380
br label %381
381: ; preds = %365, %323, %279, %229, %176, %123, %76, %31
br label %382
382: ; preds = %381
%383 = load i32, i32* %11
%384 = add nsw i32 %383, 1
store i32 %384, i32* %11
br label %19
385: ; preds = %19
ret void
}

LLVM IR (-O2):
@__const.erd__rys_1_roots_weights.jump1 = [34 x i32] [i32 1, i32 2, i32 2, i32 3, i32 3, i32 4, i32 4, i32 4, i32 4, i32 4, i32 5, i32 5, i32 5, i32 5, i32 5, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 7]
define void @erd__rys_1_roots_weights(i32 %0, double* noalias nocapture %1, double* noalias nocapture writeonly %2, double* noalias nocapture %3) {
%5 = icmp sgt i32 %0, 0
br i1 %5, label %6, label %174
6: ; preds = %4
%7 = zext i32 %0 to i64
br label %8
8: ; preds = %6, %169
%9 = phi i64 [ 0, %6 ], [ %172, %169 ]
%10 = getelementptr inbounds double, double* %1, i64 %9
%11 = load double, double* %10
%12 = fcmp ugt double %11, 3.000000e-07
br i1 %12, label %22, label %13
13: ; preds = %8
%14 = fneg double %11
%15 = tail call double @llvm.fmuladd.f64(double %14, double 2.000000e-01, double 5.000000e-01)
%16 = tail call double @llvm.fmuladd.f64(double %14, double 0x3FD555555555554F, double 1.000000e+00)
%17 = getelementptr inbounds double, double* %3, i64 %9
%18 = load double, double* %17
%19 = fmul double %16, %18
store double %19, double* %17
%20 = fadd double %15, 1.000000e+00
%21 = fdiv double %15, %20
br label %169
22: ; preds = %8
%23 = fadd double %11, 1.000000e+00
%24 = fcmp ogt double %23, 3.400000e+01
%25 = select i1 %24, double 3.400000e+01, double %23
%26 = fptosi double %25 to i32
%27 = add nsw i32 %26, -1
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [34 x i32], [34 x i32]* @__const.erd__rys_1_roots_weights.jump1, i64 0, i64 %28
%30 = load i32, i32* %29
switch i32 %30, label %31 [
i32 7, label %162
i32 2, label %52
i32 3, label %76
i32 4, label %100
i32 5, label %123
i32 6, label %143
]
31: ; preds = %22
%32 = tail call double @llvm.fmuladd.f64(double %11, double 0xBE76731B00F2E07F, double 0x3EB456789F017AD7)
%33 = tail call double @llvm.fmuladd.f64(double %32, double %11, double 0xBEE84196CB5ECA91)
%34 = tail call double @llvm.fmuladd.f64(double %33, double %11, double 0x3F1840E4FC817BA3)
%35 = tail call double @llvm.fmuladd.f64(double %34, double %11, double 0xBF45010C605C6322)
%36 = tail call double @llvm.fmuladd.f64(double %35, double %11, double 0x3F6F07BD7574E5B9)
%37 = tail call double @llvm.fmuladd.f64(double %36, double %11, double 0xBF92F684A7C3EC5A)
%38 = tail call double @llvm.fmuladd.f64(double %37, double %11, double 0x3FB2492491DC9122)
%39 = tail call double @llvm.fmuladd.f64(double %38, double %11, double 0xBFC999999997F6A0)
%40 = tail call double @llvm.fmuladd.f64(double %39, double %11, double 0x3FD5555555555441)
%41 = fadd double %11, %11
%42 = fneg double %11
%43 = tail call double @exp(double %42)
%44 = tail call double @llvm.fmuladd.f64(double %41, double %40, double %43)
%45 = fsub double %44, %40
%46 = fdiv double %40, %45
%47 = getelementptr inbounds double, double* %3, i64 %9
%48 = load double, double* %47
%49 = fmul double %48, %44
store double %49, double* %47
%50 = fadd double %46, 1.000000e+00
%51 = fdiv double %46, %50
br label %169
52: ; preds = %22
%53 = fadd double %11, -2.000000e+00
%54 = tail call double @llvm.fmuladd.f64(double %53, double 0xBDE639692E6D26F8, double 0x3E20DAD1A9D197FF)
%55 = tail call double @llvm.fmuladd.f64(double %54, double %53, double 0xBE5700D50C75966B)
%56 = tail call double @llvm.fmuladd.f64(double %55, double %53, double 0x3E8D278109166491)
%57 = tail call double @llvm.fmuladd.f64(double %56, double %53, double 0xBEC0AE4660B81F04)
%58 = tail call double @llvm.fmuladd.f64(double %57, double %53, double 0x3EF1082DCC2EA1D8)
%59 = tail call double @llvm.fmuladd.f64(double %58, double %53, double 0xBF1E9A4F0C7FE5E0)
%60 = tail call double @llvm.fmuladd.f64(double %59, double %53, double 0x3F47C0CEB2DE1FA1)
%61 = tail call double @llvm.fmuladd.f64(double %60, double %53, double 0xBF6F167B71A03F85)
%62 = tail call double @llvm.fmuladd.f64(double %61, double %53, double 0x3F908F7BF5EC8499)
%63 = tail call double @llvm.fmuladd.f64(double %62, double %53, double 0xBFAB1B52148817A2)
%64 = tail call double @llvm.fmuladd.f64(double %63, double %53, double 0x3FBD9EA87ADA65B7)
%65 = fadd double %11, %11
%66 = fneg double %11
%67 = tail call double @exp(double %66)
%68 = tail call double @llvm.fmuladd.f64(double %65, double %64, double %67)
%69 = fsub double %68, %64
%70 = fdiv double %64, %69
%71 = getelementptr inbounds double, double* %3, i64 %9
%72 = load double, double* %71
%73 = fmul double %72, %68
store double %73, double* %71
%74 = fadd double %70, 1.000000e+00
%75 = fdiv double %70, %74
br label %169
76: ; preds = %22
%77 = fadd double %11, -4.000000e+00
%78 = tail call double @llvm.fmuladd.f64(double %77, double 0xBDBCDB693E0F0946, double 0x3DF6446A140C5AE4)
%79 = tail call double @llvm.fmuladd.f64(double %78, double %77, double 0xBE2F0D64BF6CFA0D)
%80 = tail call double @llvm.fmuladd.f64(double %79, double %77, double 0x3E64300EBE769D26)
%81 = tail call double @llvm.fmuladd.f64(double %80, double %77, double 0xBE97D8F77A1BB26E)
%82 = tail call double @llvm.fmuladd.f64(double %81, double %77, double 0x3EC95AE3FB25B7F4)
%83 = tail call double @llvm.fmuladd.f64(double %82, double %77, double 0xBEF803700919CC3E)
%84 = tail call double @llvm.fmuladd.f64(double %83, double %77, double 0x3F240235B1C0EA5B)
%85 = tail call double @llvm.fmuladd.f64(double %84, double %77, double 0xBF4CE64F9170F27F)
%86 = tail call double @llvm.fmuladd.f64(double %85, double %77, double 0x3F71BE83BC15CF63)
%87 = tail call double @llvm.fmuladd.f64(double %86, double %77, double 0xBF91F24754E3EB97)
%88 = tail call double @llvm.fmuladd.f64(double %87, double %77, double 0x3FAB0DED65356EFD)
%89 = fadd double %11, %11
%90 = fneg double %11
%91 = tail call double @exp(double %90)
%92 = tail call double @llvm.fmuladd.f64(double %89, double %88, double %91)
%93 = fsub double %92, %88
%94 = fdiv double %88, %93
%95 = getelementptr inbounds double, double* %3, i64 %9
%96 = load double, double* %95
%97 = fmul double %96, %92
store double %97, double* %95
%98 = fadd double %94, 1.000000e+00
%99 = fdiv double %94, %98
br label %169
100: ; preds = %22
%101 = fneg double %11
%102 = tail call double @exp(double %101)
%103 = fdiv double 1.000000e+00, %11
%104 = tail call double @llvm.fmuladd.f64(double %103, double 0x3FDE03B0320C7C1B, double 0xBFE662C3500EC265)
%105 = tail call double @llvm.fmuladd.f64(double %104, double %103, double 0x3FE12E39E0BF7FC2)
%106 = tail call double @llvm.fmuladd.f64(double %105, double %103, double 0xBFD50B8E4299D9ED)
%107 = tail call double @llvm.fmuladd.f64(double %106, double %103, double 0x3FCF8BDE84950663)
%108 = tail call double @llvm.fmuladd.f64(double %107, double %103, double 0xBFDFFD63F7832524)
%109 = tail call double @llvm.fmuladd.f64(double %108, double %103, double 0xBECA6CCE1EB6FD83)
%110 = fmul double %103, 0x3FE921FB54442D15
%111 = tail call double @sqrt(double %110)
%112 = tail call double @llvm.fmuladd.f64(double %109, double %102, double %111)
%113 = fsub double %112, %102
%114 = fadd double %11, %11
%115 = fdiv double %113, %114
%116 = fsub double %112, %115
%117 = fdiv double %115, %116
%118 = getelementptr inbounds double, double* %3, i64 %9
%119 = load double, double* %118
%120 = fmul double %119, %112
store double %120, double* %118
%121 = fadd double %117, 1.000000e+00
%122 = fdiv double %117, %121
br label %169
123: ; preds = %22
%124 = fneg double %11
%125 = tail call double @exp(double %124)
%126 = fdiv double 1.000000e+00, %11
%127 = tail call double @llvm.fmuladd.f64(double %126, double 0xBFC80B5DB621CA13, double 0x3FCD6DF81930DD58)
%128 = tail call double @llvm.fmuladd.f64(double %127, double %126, double 0xBFDFEE97A84E6E89)
%129 = tail call double @llvm.fmuladd.f64(double %128, double %126, double 0xBEF6FB2B3EDD2A8F)
%130 = fmul double %126, 0x3FE921FB54442D15
%131 = tail call double @sqrt(double %130)
%132 = tail call double @llvm.fmuladd.f64(double %129, double %125, double %131)
%133 = fsub double %132, %125
%134 = fadd double %11, %11
%135 = fdiv double %133, %134
%136 = fsub double %132, %135
%137 = fdiv double %135, %136
%138 = getelementptr inbounds double, double* %3, i64 %9
%139 = load double, double* %138
%140 = fmul double %139, %132
store double %140, double* %138
%141 = fadd double %137, 1.000000e+00
%142 = fdiv double %137, %141
br label %169
143: ; preds = %22
%144 = fneg double %11
%145 = tail call double @exp(double %144)
%146 = fdiv double 1.000000e+00, %11
%147 = tail call double @llvm.fmuladd.f64(double %146, double 0x3FC91E26B4D0174D, double 0xBFDFCE1180245B5F)
%148 = tail call double @llvm.fmuladd.f64(double %147, double %146, double 0xBF0F8A146403A8CF)
%149 = fmul double %146, 0x3FE921FB54442D15
%150 = tail call double @sqrt(double %149)
%151 = tail call double @llvm.fmuladd.f64(double %148, double %145, double %150)
%152 = fsub double %151, %145
%153 = fadd double %11, %11
%154 = fdiv double %152, %153
%155 = fsub double %151, %154
%156 = fdiv double %154, %155
%157 = getelementptr inbounds double, double* %3, i64 %9
%158 = load double, double* %157
%159 = fmul double %158, %151
store double %159, double* %157
%160 = fadd double %156, 1.000000e+00
%161 = fdiv double %156, %160
br label %169
162: ; preds = %22
%163 = fdiv double 0x3FE921FB54442D15, %11
%164 = tail call double @sqrt(double %163)
%165 = getelementptr inbounds double, double* %3, i64 %9
%166 = load double, double* %165
%167 = fmul double %164, %166
store double %167, double* %165
%168 = fdiv double 5.000000e-01, %11
br label %169
169: ; preds = %13, %31, %52, %76, %100, %123, %143, %162
%170 = phi double [ %21, %13 ], [ %51, %31 ], [ %75, %52 ], [ %99, %76 ], [ %122, %100 ], [ %142, %123 ], [ %161, %143 ], [ %168, %162 ]
%171 = getelementptr inbounds double, double* %2, i64 %9
store double %170, double* %171
%172 = add nuw nsw i64 %9, 1
%173 = icmp eq i64 %172, %7
br i1 %173, label %174, label %8
174: ; preds = %169, %4
ret void
}