#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 */
double sqrt(double);
void safeEucldNormOne(double *a, double *d) {
  if (a[0] > 0.0) {
    if (a[0] < 1.0) {
      if (a[0] < 2.5e-3) {
        d[0] = 1.0 + 0.5 * a[0] * a[0] * (1.0 - 0.25 * a[0] * a[0]);
      } else if (a[0] < 9.0e-3) {
        d[0] = 1.0 + 0.5 * a[0] * a[0] *
                         (1.0 + (0.5 * a[0] * a[0] - 1.0) * 0.25 * a[0] * a[0]);
      } else {
        d[0] = sqrt(1.0 + a[0] * a[0]);
      }
    } else {
      if (a[0] > 350.0) {
        d[0] = 1.0 / a[0];
        d[0] = a[0] + 0.5 * d[0] * (1.0 - 0.25 * d[0] * d[0]);
      } else if (a[0] > 110.0) {
        d[0] = 1.0 / a[0];
        d[0] =
            a[0] +
            0.5 * d[0] * (1.0 + (0.5 * d[0] * d[0] - 1.0) * 0.25 * d[0] * d[0]);
      } else {
        d[0] = sqrt(1.0 + a[0] * a[0]);
      }
    }
  } else {
    if (a[0] > -1.0) {
      if (a[0] > -2.5e-3) {
        d[0] = 1.0 + 0.5 * a[0] * a[0] * (1.0 - 0.25 * a[0] * a[0]);
      } else if (a[0] > -9.0e-3) {
        d[0] = 1.0 + 0.5 * a[0] * a[0] *
                         (1.0 + (0.5 * a[0] * a[0] - 1.0) * 0.25 * a[0] * a[0]);
      } else {
        d[0] = sqrt(1.0 + a[0] * a[0]);
      }
    } else {
      if (a[0] < -350.0) {
        d[0] = 1.0 / a[0];
        d[0] = -a[0] - 0.5 * d[0] * (1.0 - 0.25 * d[0] * d[0]);
      } else if (a[0] < -110.0) {
        d[0] = 1.0 / a[0];
        d[0] =
            -a[0] -
            0.5 * d[0] * (1.0 + (0.5 * d[0] * d[0] - 1.0) * 0.25 * d[0] * d[0]);
      } else {
        d[0] = sqrt(1.0 + a[0] * a[0]);
      }
    }
  }
  return;
}


x86 assembly (clang, -O0):
<safeEucldNormOne>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1438 <safeEucldNormOne+0x328>
mov    -0x8(%rbp),%rax
movsd  0xed7(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    12ab <safeEucldNormOne+0x19b>
mov    -0x8(%rbp),%rax
movsd  0xef9(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    11d5 <safeEucldNormOne+0xc5>
mov    -0x8(%rbp),%rax
movsd  0xebb(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xe9b(%rip),%xmm1
mulsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xe64(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xe54(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    12a6 <safeEucldNormOne+0x196>
mov    -0x8(%rbp),%rax
movsd  0xe77(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    1274 <safeEucldNormOne+0x164>
mov    -0x8(%rbp),%rax
movsd  0xe31(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xe19(%rip),%xmm1
mulsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xdd9(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  0xded(%rip),%xmm2
mulsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
mulsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xdc5(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdb5(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    12a1 <safeEucldNormOne+0x191>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xd88(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    12a6 <safeEucldNormOne+0x196>
jmp    1433 <safeEucldNormOne+0x323>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd85(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1349 <safeEucldNormOne+0x239>
mov    -0x8(%rbp),%rax
movsd  0xd47(%rip),%xmm0
divsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0xd37(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0xd1f(%rip),%xmm2
mulsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
movsd  0xce8(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    142e <safeEucldNormOne+0x31e>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xcef(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    13fc <safeEucldNormOne+0x2ec>
mov    -0x8(%rbp),%rax
movsd  0xca9(%rip),%xmm0
divsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0xc99(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0xc89(%rip),%xmm2
mulsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm3
mulsd  %xmm3,%xmm2
movsd  0xc49(%rip),%xmm3
addsd  %xmm3,%xmm2
movsd  0xc5d(%rip),%xmm3
mulsd  %xmm3,%xmm2
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm3
mulsd  %xmm3,%xmm2
movsd  0xc35(%rip),%xmm3
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1429 <safeEucldNormOne+0x319>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xc00(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    142e <safeEucldNormOne+0x31e>
jmp    1433 <safeEucldNormOne+0x323>
jmp    179b <safeEucldNormOne+0x68b>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xbb8(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    15ba <safeEucldNormOne+0x4aa>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xbce(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    14e0 <safeEucldNormOne+0x3d0>
mov    -0x8(%rbp),%rax
movsd  0xbb0(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xb90(%rip),%xmm1
mulsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xb59(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb49(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    15b5 <safeEucldNormOne+0x4a5>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xb48(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1583 <safeEucldNormOne+0x473>
mov    -0x8(%rbp),%rax
movsd  0xb22(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mulsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0xb0a(%rip),%xmm1
mulsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xaca(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  0xade(%rip),%xmm2
mulsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
mulsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xab6(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0xaa6(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    15b0 <safeEucldNormOne+0x4a0>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xa79(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    15b5 <safeEucldNormOne+0x4a5>
jmp    1796 <safeEucldNormOne+0x686>
mov    -0x8(%rbp),%rax
movsd  0xa42(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    1682 <safeEucldNormOne+0x572>
mov    -0x8(%rbp),%rax
movsd  0xa3c(%rip),%xmm0
divsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mov    -0x10(%rbp),%rax
movsd  0xa15(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x9fd(%rip),%xmm2
mulsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
movsd  0x9c6(%rip),%xmm3
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1791 <safeEucldNormOne+0x681>
mov    -0x8(%rbp),%rax
movsd  0x982(%rip),%xmm0
ucomisd (%rax),%xmm0
jbe    175f <safeEucldNormOne+0x64f>
mov    -0x8(%rbp),%rax
movsd  0x974(%rip),%xmm0
divsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x94d(%rip),%xmm0
mulsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x93d(%rip),%xmm2
mulsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm3
mulsd  %xmm3,%xmm2
movsd  0x8fd(%rip),%xmm3
addsd  %xmm3,%xmm2
movsd  0x911(%rip),%xmm3
mulsd  %xmm3,%xmm2
mov    -0x10(%rbp),%rax
mulsd  (%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm3
mulsd  %xmm3,%xmm2
movsd  0x8e9(%rip),%xmm3
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    178c <safeEucldNormOne+0x67c>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x89d(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1030 <sqrt@plt>
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1791 <safeEucldNormOne+0x681>
jmp    1796 <safeEucldNormOne+0x686>
jmp    179b <safeEucldNormOne+0x68b>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<safeEucldNormOne>:
push   %rbx
mov    %rsi,%rbx
movsd  (%rdi),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    115f <safeEucldNormOne+0x4f>
movsd  0xeee(%rip),%xmm2
ucomisd %xmm1,%xmm2
jbe    1194 <safeEucldNormOne+0x84>
movsd  0xf28(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    120a <safeEucldNormOne+0xfa>
movsd  0xed6(%rip),%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm1,%xmm3
movsd  0xed6(%rip),%xmm0
jmp    1240 <safeEucldNormOne+0x130>
ucomisd 0xe99(%rip),%xmm1
jbe    11c7 <safeEucldNormOne+0xb7>
ucomisd 0xecf(%rip),%xmm1
jbe    1259 <safeEucldNormOne+0x149>
movsd  0xea1(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xea1(%rip),%xmm0
jmp    128b <safeEucldNormOne+0x17b>
ucomisd 0xeb4(%rip),%xmm1
jbe    12ac <safeEucldNormOne+0x19c>
movapd %xmm2,%xmm3
divsd  %xmm1,%xmm3
movsd  %xmm3,(%rbx)
movsd  0xe6a(%rip),%xmm1
mulsd  %xmm3,%xmm1
movsd  0xe6e(%rip),%xmm0
jmp    12ea <safeEucldNormOne+0x1da>
movsd  0xe39(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1303 <safeEucldNormOne+0x1f3>
movsd  0xe37(%rip),%xmm2
movapd %xmm2,%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rbx)
movsd  0xe3b(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm1
mulsd  0xe33(%rip),%xmm0
jmp    1359 <safeEucldNormOne+0x249>
movsd  0xe56(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1367 <safeEucldNormOne+0x257>
movsd  0xdfc(%rip),%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm1,%xmm3
movsd  0xdcc(%rip),%xmm0
addsd  %xmm3,%xmm0
mulsd  0xde8(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
jmp    138f <safeEucldNormOne+0x27f>
ucomisd 0xde7(%rip),%xmm1
jbe    1367 <safeEucldNormOne+0x257>
movsd  0xdb1(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm2
movsd  0xd81(%rip),%xmm0
addsd  %xmm2,%xmm0
mulsd  0xd9d(%rip),%xmm0
mulsd  %xmm1,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xd7d(%rip),%xmm1
addsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
jmp    138f <safeEucldNormOne+0x27f>
ucomisd 0xda4(%rip),%xmm1
jbe    1367 <safeEucldNormOne+0x257>
movapd %xmm2,%xmm3
divsd  %xmm1,%xmm3
movsd  %xmm3,(%rbx)
movsd  0xd52(%rip),%xmm1
mulsd  %xmm3,%xmm1
movapd %xmm1,%xmm0
mulsd  %xmm3,%xmm0
addsd  0xd1e(%rip),%xmm0
mulsd  0xd3e(%rip),%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
addsd  (%rdi),%xmm0
jmp    138f <safeEucldNormOne+0x27f>
movsd  0xd05(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1367 <safeEucldNormOne+0x257>
movsd  0xcff(%rip),%xmm2
movapd %xmm2,%xmm3
divsd  %xmm1,%xmm3
movsd  %xmm3,(%rbx)
movsd  0xcf3(%rip),%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm3,%xmm1
addsd  0xcbf(%rip),%xmm1
mulsd  0xcdf(%rip),%xmm1
mulsd  %xmm3,%xmm1
mulsd  %xmm3,%xmm1
xorpd  0xd17(%rip),%xmm0
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
subsd  (%rdi),%xmm0
jmp    138f <safeEucldNormOne+0x27f>
mulsd  %xmm1,%xmm1
addsd  0xca5(%rip),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jb     1386 <safeEucldNormOne+0x276>
xorps  %xmm0,%xmm0
sqrtsd %xmm1,%xmm0
jmp    138f <safeEucldNormOne+0x27f>
movapd %xmm1,%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,(%rbx)
pop    %rbx
ret

LLVM IR (-O0):
define void @safeEucldNormOne(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
store double* %0, double** %3
store double* %1, double** %4
%5 = load double*, double** %3
%6 = getelementptr inbounds double, double* %5, i64 0
%7 = load double, double* %6
%8 = fcmp ogt double %7, 0.000000e+00
br i1 %8, label %9, label %171
9: ; preds = %2
%10 = load double*, double** %3
%11 = getelementptr inbounds double, double* %10, i64 0
%12 = load double, double* %11
%13 = fcmp olt double %12, 1.000000e+00
br i1 %13, label %14, label %87
14: ; preds = %9
%15 = load double*, double** %3
%16 = getelementptr inbounds double, double* %15, i64 0
%17 = load double, double* %16
%18 = fcmp olt double %17, 2.500000e-03
br i1 %18, label %19, label %40
19: ; preds = %14
%20 = load double*, double** %3
%21 = getelementptr inbounds double, double* %20, i64 0
%22 = load double, double* %21
%23 = fmul double 5.000000e-01, %22
%24 = load double*, double** %3
%25 = getelementptr inbounds double, double* %24, i64 0
%26 = load double, double* %25
%27 = fmul double %23, %26
%28 = load double*, double** %3
%29 = getelementptr inbounds double, double* %28, i64 0
%30 = load double, double* %29
%31 = fmul double 2.500000e-01, %30
%32 = load double*, double** %3
%33 = getelementptr inbounds double, double* %32, i64 0
%34 = load double, double* %33
%35 = fneg double %31
%36 = call double @llvm.fmuladd.f64(double %35, double %34, double 1.000000e+00)
%37 = call double @llvm.fmuladd.f64(double %27, double %36, double 1.000000e+00)
%38 = load double*, double** %4
%39 = getelementptr inbounds double, double* %38, i64 0
store double %37, double* %39
br label %86
40: ; preds = %14
%41 = load double*, double** %3
%42 = getelementptr inbounds double, double* %41, i64 0
%43 = load double, double* %42
%44 = fcmp olt double %43, 0x3F826E978D4FDF3B
br i1 %44, label %45, label %74
45: ; preds = %40
%46 = load double*, double** %3
%47 = getelementptr inbounds double, double* %46, i64 0
%48 = load double, double* %47
%49 = fmul double 5.000000e-01, %48
%50 = load double*, double** %3
%51 = getelementptr inbounds double, double* %50, i64 0
%52 = load double, double* %51
%53 = fmul double %49, %52
%54 = load double*, double** %3
%55 = getelementptr inbounds double, double* %54, i64 0
%56 = load double, double* %55
%57 = fmul double 5.000000e-01, %56
%58 = load double*, double** %3
%59 = getelementptr inbounds double, double* %58, i64 0
%60 = load double, double* %59
%61 = call double @llvm.fmuladd.f64(double %57, double %60, double -1.000000e+00)
%62 = fmul double %61, 2.500000e-01
%63 = load double*, double** %3
%64 = getelementptr inbounds double, double* %63, i64 0
%65 = load double, double* %64
%66 = fmul double %62, %65
%67 = load double*, double** %3
%68 = getelementptr inbounds double, double* %67, i64 0
%69 = load double, double* %68
%70 = call double @llvm.fmuladd.f64(double %66, double %69, double 1.000000e+00)
%71 = call double @llvm.fmuladd.f64(double %53, double %70, double 1.000000e+00)
%72 = load double*, double** %4
%73 = getelementptr inbounds double, double* %72, i64 0
store double %71, double* %73
br label %85
74: ; preds = %40
%75 = load double*, double** %3
%76 = getelementptr inbounds double, double* %75, i64 0
%77 = load double, double* %76
%78 = load double*, double** %3
%79 = getelementptr inbounds double, double* %78, i64 0
%80 = load double, double* %79
%81 = call double @llvm.fmuladd.f64(double %77, double %80, double 1.000000e+00)
%82 = call double @sqrt(double %81)
%83 = load double*, double** %4
%84 = getelementptr inbounds double, double* %83, i64 0
store double %82, double* %84
br label %85
85: ; preds = %74, %45
br label %86
86: ; preds = %85, %19
br label %170
87: ; preds = %9
%88 = load double*, double** %3
%89 = getelementptr inbounds double, double* %88, i64 0
%90 = load double, double* %89
%91 = fcmp ogt double %90, 3.500000e+02
br i1 %91, label %92, label %118
92: ; preds = %87
%93 = load double*, double** %3
%94 = getelementptr inbounds double, double* %93, i64 0
%95 = load double, double* %94
%96 = fdiv double 1.000000e+00, %95
%97 = load double*, double** %4
%98 = getelementptr inbounds double, double* %97, i64 0
store double %96, double* %98
%99 = load double*, double** %3
%100 = getelementptr inbounds double, double* %99, i64 0
%101 = load double, double* %100
%102 = load double*, double** %4
%103 = getelementptr inbounds double, double* %102, i64 0
%104 = load double, double* %103
%105 = fmul double 5.000000e-01, %104
%106 = load double*, double** %4
%107 = getelementptr inbounds double, double* %106, i64 0
%108 = load double, double* %107
%109 = fmul double 2.500000e-01, %108
%110 = load double*, double** %4
%111 = getelementptr inbounds double, double* %110, i64 0
%112 = load double, double* %111
%113 = fneg double %109
%114 = call double @llvm.fmuladd.f64(double %113, double %112, double 1.000000e+00)
%115 = call double @llvm.fmuladd.f64(double %105, double %114, double %101)
%116 = load double*, double** %4
%117 = getelementptr inbounds double, double* %116, i64 0
store double %115, double* %117
br label %169
118: ; preds = %87
%119 = load double*, double** %3
%120 = getelementptr inbounds double, double* %119, i64 0
%121 = load double, double* %120
%122 = fcmp ogt double %121, 1.100000e+02
br i1 %122, label %123, label %157
123: ; preds = %118
%124 = load double*, double** %3
%125 = getelementptr inbounds double, double* %124, i64 0
%126 = load double, double* %125
%127 = fdiv double 1.000000e+00, %126
%128 = load double*, double** %4
%129 = getelementptr inbounds double, double* %128, i64 0
store double %127, double* %129
%130 = load double*, double** %3
%131 = getelementptr inbounds double, double* %130, i64 0
%132 = load double, double* %131
%133 = load double*, double** %4
%134 = getelementptr inbounds double, double* %133, i64 0
%135 = load double, double* %134
%136 = fmul double 5.000000e-01, %135
%137 = load double*, double** %4
%138 = getelementptr inbounds double, double* %137, i64 0
%139 = load double, double* %138
%140 = fmul double 5.000000e-01, %139
%141 = load double*, double** %4
%142 = getelementptr inbounds double, double* %141, i64 0
%143 = load double, double* %142
%144 = call double @llvm.fmuladd.f64(double %140, double %143, double -1.000000e+00)
%145 = fmul double %144, 2.500000e-01
%146 = load double*, double** %4
%147 = getelementptr inbounds double, double* %146, i64 0
%148 = load double, double* %147
%149 = fmul double %145, %148
%150 = load double*, double** %4
%151 = getelementptr inbounds double, double* %150, i64 0
%152 = load double, double* %151
%153 = call double @llvm.fmuladd.f64(double %149, double %152, double 1.000000e+00)
%154 = call double @llvm.fmuladd.f64(double %136, double %153, double %132)
%155 = load double*, double** %4
%156 = getelementptr inbounds double, double* %155, i64 0
store double %154, double* %156
br label %168
157: ; preds = %118
%158 = load double*, double** %3
%159 = getelementptr inbounds double, double* %158, i64 0
%160 = load double, double* %159
%161 = load double*, double** %3
%162 = getelementptr inbounds double, double* %161, i64 0
%163 = load double, double* %162
%164 = call double @llvm.fmuladd.f64(double %160, double %163, double 1.000000e+00)
%165 = call double @sqrt(double %164)
%166 = load double*, double** %4
%167 = getelementptr inbounds double, double* %166, i64 0
store double %165, double* %167
br label %168
168: ; preds = %157, %123
br label %169
169: ; preds = %168, %92
br label %170
170: ; preds = %169, %86
br label %337
171: ; preds = %2
%172 = load double*, double** %3
%173 = getelementptr inbounds double, double* %172, i64 0
%174 = load double, double* %173
%175 = fcmp ogt double %174, -1.000000e+00
br i1 %175, label %176, label %249
176: ; preds = %171
%177 = load double*, double** %3
%178 = getelementptr inbounds double, double* %177, i64 0
%179 = load double, double* %178
%180 = fcmp ogt double %179, -2.500000e-03
br i1 %180, label %181, label %202
181: ; preds = %176
%182 = load double*, double** %3
%183 = getelementptr inbounds double, double* %182, i64 0
%184 = load double, double* %183
%185 = fmul double 5.000000e-01, %184
%186 = load double*, double** %3
%187 = getelementptr inbounds double, double* %186, i64 0
%188 = load double, double* %187
%189 = fmul double %185, %188
%190 = load double*, double** %3
%191 = getelementptr inbounds double, double* %190, i64 0
%192 = load double, double* %191
%193 = fmul double 2.500000e-01, %192
%194 = load double*, double** %3
%195 = getelementptr inbounds double, double* %194, i64 0
%196 = load double, double* %195
%197 = fneg double %193
%198 = call double @llvm.fmuladd.f64(double %197, double %196, double 1.000000e+00)
%199 = call double @llvm.fmuladd.f64(double %189, double %198, double 1.000000e+00)
%200 = load double*, double** %4
%201 = getelementptr inbounds double, double* %200, i64 0
store double %199, double* %201
br label %248
202: ; preds = %176
%203 = load double*, double** %3
%204 = getelementptr inbounds double, double* %203, i64 0
%205 = load double, double* %204
%206 = fcmp ogt double %205, 0xBF826E978D4FDF3B
br i1 %206, label %207, label %236
207: ; preds = %202
%208 = load double*, double** %3
%209 = getelementptr inbounds double, double* %208, i64 0
%210 = load double, double* %209
%211 = fmul double 5.000000e-01, %210
%212 = load double*, double** %3
%213 = getelementptr inbounds double, double* %212, i64 0
%214 = load double, double* %213
%215 = fmul double %211, %214
%216 = load double*, double** %3
%217 = getelementptr inbounds double, double* %216, i64 0
%218 = load double, double* %217
%219 = fmul double 5.000000e-01, %218
%220 = load double*, double** %3
%221 = getelementptr inbounds double, double* %220, i64 0
%222 = load double, double* %221
%223 = call double @llvm.fmuladd.f64(double %219, double %222, double -1.000000e+00)
%224 = fmul double %223, 2.500000e-01
%225 = load double*, double** %3
%226 = getelementptr inbounds double, double* %225, i64 0
%227 = load double, double* %226
%228 = fmul double %224, %227
%229 = load double*, double** %3
%230 = getelementptr inbounds double, double* %229, i64 0
%231 = load double, double* %230
%232 = call double @llvm.fmuladd.f64(double %228, double %231, double 1.000000e+00)
%233 = call double @llvm.fmuladd.f64(double %215, double %232, double 1.000000e+00)
%234 = load double*, double** %4
%235 = getelementptr inbounds double, double* %234, i64 0
store double %233, double* %235
br label %247
236: ; preds = %202
%237 = load double*, double** %3
%238 = getelementptr inbounds double, double* %237, i64 0
%239 = load double, double* %238
%240 = load double*, double** %3
%241 = getelementptr inbounds double, double* %240, i64 0
%242 = load double, double* %241
%243 = call double @llvm.fmuladd.f64(double %239, double %242, double 1.000000e+00)
%244 = call double @sqrt(double %243)
%245 = load double*, double** %4
%246 = getelementptr inbounds double, double* %245, i64 0
store double %244, double* %246
br label %247
247: ; preds = %236, %207
br label %248
248: ; preds = %247, %181
br label %336
249: ; preds = %171
%250 = load double*, double** %3
%251 = getelementptr inbounds double, double* %250, i64 0
%252 = load double, double* %251
%253 = fcmp olt double %252, -3.500000e+02
br i1 %253, label %254, label %282
254: ; preds = %249
%255 = load double*, double** %3
%256 = getelementptr inbounds double, double* %255, i64 0
%257 = load double, double* %256
%258 = fdiv double 1.000000e+00, %257
%259 = load double*, double** %4
%260 = getelementptr inbounds double, double* %259, i64 0
store double %258, double* %260
%261 = load double*, double** %3
%262 = getelementptr inbounds double, double* %261, i64 0
%263 = load double, double* %262
%264 = fneg double %263
%265 = load double*, double** %4
%266 = getelementptr inbounds double, double* %265, i64 0
%267 = load double, double* %266
%268 = fmul double 5.000000e-01, %267
%269 = load double*, double** %4
%270 = getelementptr inbounds double, double* %269, i64 0
%271 = load double, double* %270
%272 = fmul double 2.500000e-01, %271
%273 = load double*, double** %4
%274 = getelementptr inbounds double, double* %273, i64 0
%275 = load double, double* %274
%276 = fneg double %272
%277 = call double @llvm.fmuladd.f64(double %276, double %275, double 1.000000e+00)
%278 = fneg double %268
%279 = call double @llvm.fmuladd.f64(double %278, double %277, double %264)
%280 = load double*, double** %4
%281 = getelementptr inbounds double, double* %280, i64 0
store double %279, double* %281
br label %335
282: ; preds = %249
%283 = load double*, double** %3
%284 = getelementptr inbounds double, double* %283, i64 0
%285 = load double, double* %284
%286 = fcmp olt double %285, -1.100000e+02
br i1 %286, label %287, label %323
287: ; preds = %282
%288 = load double*, double** %3
%289 = getelementptr inbounds double, double* %288, i64 0
%290 = load double, double* %289
%291 = fdiv double 1.000000e+00, %290
%292 = load double*, double** %4
%293 = getelementptr inbounds double, double* %292, i64 0
store double %291, double* %293
%294 = load double*, double** %3
%295 = getelementptr inbounds double, double* %294, i64 0
%296 = load double, double* %295
%297 = fneg double %296
%298 = load double*, double** %4
%299 = getelementptr inbounds double, double* %298, i64 0
%300 = load double, double* %299
%301 = fmul double 5.000000e-01, %300
%302 = load double*, double** %4
%303 = getelementptr inbounds double, double* %302, i64 0
%304 = load double, double* %303
%305 = fmul double 5.000000e-01, %304
%306 = load double*, double** %4
%307 = getelementptr inbounds double, double* %306, i64 0
%308 = load double, double* %307
%309 = call double @llvm.fmuladd.f64(double %305, double %308, double -1.000000e+00)
%310 = fmul double %309, 2.500000e-01
%311 = load double*, double** %4
%312 = getelementptr inbounds double, double* %311, i64 0
%313 = load double, double* %312
%314 = fmul double %310, %313
%315 = load double*, double** %4
%316 = getelementptr inbounds double, double* %315, i64 0
%317 = load double, double* %316
%318 = call double @llvm.fmuladd.f64(double %314, double %317, double 1.000000e+00)
%319 = fneg double %301
%320 = call double @llvm.fmuladd.f64(double %319, double %318, double %297)
%321 = load double*, double** %4
%322 = getelementptr inbounds double, double* %321, i64 0
store double %320, double* %322
br label %334
323: ; preds = %282
%324 = load double*, double** %3
%325 = getelementptr inbounds double, double* %324, i64 0
%326 = load double, double* %325
%327 = load double*, double** %3
%328 = getelementptr inbounds double, double* %327, i64 0
%329 = load double, double* %328
%330 = call double @llvm.fmuladd.f64(double %326, double %329, double 1.000000e+00)
%331 = call double @sqrt(double %330)
%332 = load double*, double** %4
%333 = getelementptr inbounds double, double* %332, i64 0
store double %331, double* %333
br label %334
334: ; preds = %323, %287
br label %335
335: ; preds = %334, %254
br label %336
336: ; preds = %335, %248
br label %337
337: ; preds = %336, %170
ret void
}

LLVM IR (-O2):
define void @safeEucldNormOne(double* nocapture %0, double* nocapture writeonly %1) {
%3 = load double, double* %0
%4 = fcmp ogt double %3, 0.000000e+00
br i1 %4, label %5, label %51
5: ; preds = %2
%6 = fcmp olt double %3, 1.000000e+00
br i1 %6, label %7, label %28
7: ; preds = %5
%8 = fcmp olt double %3, 2.500000e-03
br i1 %8, label %9, label %15
9: ; preds = %7
%10 = fmul double %3, 5.000000e-01
%11 = fmul double %3, %10
%12 = fmul double %3, -2.500000e-01
%13 = tail call double @llvm.fmuladd.f64(double %12, double %3, double 1.000000e+00)
%14 = tail call double @llvm.fmuladd.f64(double %11, double %13, double 1.000000e+00)
br label %100
15: ; preds = %7
%16 = fcmp olt double %3, 0x3F826E978D4FDF3B
br i1 %16, label %17, label %25
17: ; preds = %15
%18 = fmul double %3, 5.000000e-01
%19 = fmul double %3, %18
%20 = tail call double @llvm.fmuladd.f64(double %18, double %3, double -1.000000e+00)
%21 = fmul double %20, 2.500000e-01
%22 = fmul double %3, %21
%23 = tail call double @llvm.fmuladd.f64(double %22, double %3, double 1.000000e+00)
%24 = tail call double @llvm.fmuladd.f64(double %19, double %23, double 1.000000e+00)
br label %100
25: ; preds = %15
%26 = tail call double @llvm.fmuladd.f64(double %3, double %3, double 1.000000e+00)
%27 = tail call double @sqrt(double %26)
br label %100
28: ; preds = %5
%29 = fcmp ogt double %3, 3.500000e+02
br i1 %29, label %30, label %37
30: ; preds = %28
%31 = fdiv double 1.000000e+00, %3
store double %31, double* %1
%32 = load double, double* %0
%33 = fmul double %31, 5.000000e-01
%34 = fmul double %31, -2.500000e-01
%35 = tail call double @llvm.fmuladd.f64(double %34, double %31, double 1.000000e+00)
%36 = tail call double @llvm.fmuladd.f64(double %33, double %35, double %32)
br label %100
37: ; preds = %28
%38 = fcmp ogt double %3, 1.100000e+02
br i1 %38, label %39, label %48
39: ; preds = %37
%40 = fdiv double 1.000000e+00, %3
store double %40, double* %1
%41 = load double, double* %0
%42 = fmul double %40, 5.000000e-01
%43 = tail call double @llvm.fmuladd.f64(double %42, double %40, double -1.000000e+00)
%44 = fmul double %43, 2.500000e-01
%45 = fmul double %40, %44
%46 = tail call double @llvm.fmuladd.f64(double %45, double %40, double 1.000000e+00)
%47 = tail call double @llvm.fmuladd.f64(double %42, double %46, double %41)
br label %100
48: ; preds = %37
%49 = tail call double @llvm.fmuladd.f64(double %3, double %3, double 1.000000e+00)
%50 = tail call double @sqrt(double %49)
br label %100
51: ; preds = %2
%52 = fcmp ogt double %3, -1.000000e+00
br i1 %52, label %53, label %74
53: ; preds = %51
%54 = fcmp ogt double %3, -2.500000e-03
br i1 %54, label %55, label %61
55: ; preds = %53
%56 = fmul double %3, 5.000000e-01
%57 = fmul double %3, %56
%58 = fmul double %3, -2.500000e-01
%59 = tail call double @llvm.fmuladd.f64(double %58, double %3, double 1.000000e+00)
%60 = tail call double @llvm.fmuladd.f64(double %57, double %59, double 1.000000e+00)
br label %100
61: ; preds = %53
%62 = fcmp ogt double %3, 0xBF826E978D4FDF3B
br i1 %62, label %63, label %71
63: ; preds = %61
%64 = fmul double %3, 5.000000e-01
%65 = fmul double %3, %64
%66 = tail call double @llvm.fmuladd.f64(double %64, double %3, double -1.000000e+00)
%67 = fmul double %66, 2.500000e-01
%68 = fmul double %3, %67
%69 = tail call double @llvm.fmuladd.f64(double %68, double %3, double 1.000000e+00)
%70 = tail call double @llvm.fmuladd.f64(double %65, double %69, double 1.000000e+00)
br label %100
71: ; preds = %61
%72 = tail call double @llvm.fmuladd.f64(double %3, double %3, double 1.000000e+00)
%73 = tail call double @sqrt(double %72)
br label %100
74: ; preds = %51
%75 = fcmp olt double %3, -3.500000e+02
br i1 %75, label %76, label %84
76: ; preds = %74
%77 = fdiv double 1.000000e+00, %3
store double %77, double* %1
%78 = load double, double* %0
%79 = fneg double %78
%80 = fmul double %77, -2.500000e-01
%81 = tail call double @llvm.fmuladd.f64(double %80, double %77, double 1.000000e+00)
%82 = fmul double %77, -5.000000e-01
%83 = tail call double @llvm.fmuladd.f64(double %82, double %81, double %79)
br label %100
84: ; preds = %74
%85 = fcmp olt double %3, -1.100000e+02
br i1 %85, label %86, label %97
86: ; preds = %84
%87 = fdiv double 1.000000e+00, %3
store double %87, double* %1
%88 = load double, double* %0
%89 = fneg double %88
%90 = fmul double %87, 5.000000e-01
%91 = tail call double @llvm.fmuladd.f64(double %90, double %87, double -1.000000e+00)
%92 = fmul double %91, 2.500000e-01
%93 = fmul double %87, %92
%94 = tail call double @llvm.fmuladd.f64(double %93, double %87, double 1.000000e+00)
%95 = fneg double %90
%96 = tail call double @llvm.fmuladd.f64(double %95, double %94, double %89)
br label %100
97: ; preds = %84
%98 = tail call double @llvm.fmuladd.f64(double %3, double %3, double 1.000000e+00)
%99 = tail call double @sqrt(double %98)
br label %100
100: ; preds = %63, %71, %55, %86, %97, %76, %17, %25, %9, %39, %48, %30
%101 = phi double [ %70, %63 ], [ %73, %71 ], [ %60, %55 ], [ %96, %86 ], [ %99, %97 ], [ %83, %76 ], [ %24, %17 ], [ %27, %25 ], [ %14, %9 ], [ %47, %39 ], [ %50, %48 ], [ %36, %30 ]
store double %101, double* %1
ret void
}