// File: /workspace/github_cpp_makefile_star2_O1/ashlall[P]StreamStats/ChiSquareExperiments/./../SourceCode/ChiSquare/Chi_Square_Distribution.cpp
// Function: pochisq(double, int)
double pochisq(double x, int df)
   {
        double a, s;
        double e, c, z;
 
        if (x <= 0.0 || df < 1) {
            return 1.0;
        }
        a = 0.5 * x;
        bool even = (df & 1) == 0;
        double y = 0;
        if (df > 1) {
            y = ex(-a);
        }
        s = (even ? y : (2.0 * poz(-sqrt(x))));
        if (df > 2) {
            x = 0.5 * (df - 1.0);
            z = (even ? 1.0 : 0.5);
            if (a > MAX_X) {
                e = (even ? 0.0 : LOG_SQRT_PI);
                c = log(a);
                while (z <= x) {
                    e = log(z) + e;
                    s += ex(c * z - a - e);
                    z += 1.0;
                }
                return s;
            } else {
                e = (even ? 1.0 : (I_SQRT_PI / sqrt(a)));
                c = 0.0;
                while (z <= x) {
                    e = e * (a / z);
                    c = c + e;
                    z += 1.0;
                }
                return c * y + s;
            }
        } else {
            return s;
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x38, %rsp
xorpd %xmm5, %xmm5
ucomisd %xmm0, %xmm5
setae %al
testl %edi, %edi
setle %cl
orb %al, %cl
je 0x4258
movsd 0x4db5(%rip), %xmm4     # 0x9008
jmp 0x443e
movl %edi, %ebx
movapd %xmm0, %xmm2
movsd 0x4dda(%rip), %xmm3     # 0x9040
mulsd %xmm0, %xmm3
cmpl $0x2, %edi
movapd %xmm3, -0x40(%rbp)
jl 0x42aa
movapd 0x4f54(%rip), %xmm0     # 0x91d0
xorpd %xmm3, %xmm0
xorl %eax, %eax
subl 0x8f50(%rip), %eax      # 0xd1d8
cvtsi2sd %eax, %xmm1
ucomisd %xmm0, %xmm1
ja 0x42aa
movsd %xmm2, -0x18(%rbp)
callq 0x2380
movsd -0x18(%rbp), %xmm2
movapd -0x40(%rbp), %xmm3
movapd %xmm0, %xmm5
movapd %xmm5, %xmm4
testb $0x1, %bl
je 0x42f3
movsd %xmm5, -0x10(%rbp)
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm2
jb 0x42cb
xorps %xmm0, %xmm0
sqrtsd %xmm2, %xmm0
jmp 0x42d4
movapd %xmm2, %xmm0
callq 0x2190
xorpd 0x4ef4(%rip), %xmm0     # 0x91d0
callq 0x4504
movapd %xmm0, %xmm4
addsd %xmm0, %xmm4
movapd -0x40(%rbp), %xmm3
movsd -0x10(%rbp), %xmm5
cmpl $0x3, %ebx
jl 0x443e
xorl %eax, %eax
testb $0x1, %bl
sete %al
cvtsi2sd %ebx, %xmm6
addsd 0x4d08(%rip), %xmm6     # 0x9018
mulsd 0x4d28(%rip), %xmm6     # 0x9040
leaq 0x4ec1(%rip), %rcx      # 0x91e0
movsd (%rcx,%rax,8), %xmm7
xorps %xmm0, %xmm0
cvtsi2sdl 0x8ea9(%rip), %xmm0 # 0xd1d8
ucomisd %xmm0, %xmm3
movsd %xmm6, -0x30(%rbp)
jbe 0x4379
movsd %xmm4, -0x20(%rbp)
movsd 0x8eb9(%rip), %xmm0     # 0xd200
movsd %xmm0, -0x10(%rbp)
movapd %xmm3, %xmm0
movsd %xmm7, -0x18(%rbp)
callq 0x21a0
movsd -0x18(%rbp), %xmm3
movsd %xmm0, -0x28(%rbp)
movsd -0x30(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jae 0x4390
movsd -0x20(%rbp), %xmm4
jmp 0x443e
testb $0x1, %bl
jne 0x4449
movsd 0x4c7d(%rip), %xmm8     # 0x9008
jmp 0x44a7
xorpd %xmm5, %xmm5
testb $0x1, %bl
movsd -0x20(%rbp), %xmm4
je 0x43a3
movsd -0x10(%rbp), %xmm5
movapd -0x40(%rbp), %xmm0
xorpd 0x4e20(%rip), %xmm0     # 0x91d0
movapd %xmm0, -0x40(%rbp)
movsd %xmm3, -0x18(%rbp)
movsd %xmm4, -0x20(%rbp)
movsd %xmm5, -0x10(%rbp)
movapd %xmm3, %xmm0
callq 0x21a0
movsd -0x18(%rbp), %xmm3
movapd %xmm0, %xmm5
addsd -0x10(%rbp), %xmm5
movsd -0x28(%rbp), %xmm0
mulsd %xmm3, %xmm0
addsd -0x40(%rbp), %xmm0
xorl %eax, %eax
subl 0x8de7(%rip), %eax      # 0xd1d8
xorps %xmm2, %xmm2
cvtsi2sd %eax, %xmm2
subsd %xmm5, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm2
ja 0x441e
movsd %xmm5, -0x10(%rbp)
callq 0x2380
movsd -0x10(%rbp), %xmm5
movsd -0x18(%rbp), %xmm3
movapd %xmm0, %xmm1
movsd -0x20(%rbp), %xmm4
addsd %xmm1, %xmm4
addsd 0x4bd9(%rip), %xmm3     # 0x9008
movsd -0x30(%rbp), %xmm0
ucomisd %xmm3, %xmm0
jae 0x43b5
movapd %xmm4, %xmm0
addq $0x38, %rsp
popq %rbx
popq %rbp
retq
movsd 0x8db6(%rip), %xmm8     # 0xd208
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
jb 0x4465
xorps %xmm0, %xmm0
sqrtsd %xmm3, %xmm0
jmp 0x44a2
movapd %xmm3, %xmm0
movsd %xmm4, -0x20(%rbp)
movsd %xmm5, -0x10(%rbp)
movsd %xmm7, -0x18(%rbp)
movsd %xmm8, -0x28(%rbp)
callq 0x2190
movsd -0x28(%rbp), %xmm8
movsd -0x18(%rbp), %xmm7
movsd -0x30(%rbp), %xmm6
movsd -0x10(%rbp), %xmm5
movsd -0x20(%rbp), %xmm4
movapd -0x40(%rbp), %xmm3
divsd %xmm0, %xmm8
xorpd %xmm0, %xmm0
ucomisd %xmm7, %xmm6
jb 0x44d5
movsd 0x4b4f(%rip), %xmm1     # 0x9008
movapd %xmm3, %xmm2
divsd %xmm7, %xmm2
mulsd %xmm2, %xmm8
addsd %xmm8, %xmm0
addsd %xmm1, %xmm7
ucomisd %xmm7, %xmm6
jae 0x44b9
mulsd %xmm5, %xmm0
addsd %xmm4, %xmm0
jmp 0x4442