// File: /workspace/github_cpp_makefile_star2_O1/mouda[P]LTE_random_access-simulate/specialfunctions.cpp
// Function: alglib_impl::dawsonintegral(double, alglib_impl::ae_state*)
double dawsonintegral(double x, ae_state *_state)
{
    double x2;
    double y;
    ae_int_t sg;
    double an;
    double ad;
    double bn;
    double bd;
    double cn;
    double cd;
    double result;


    sg = 1;
    if( ae_fp_less(x,0) )
    {
        sg = -1;
        x = -x;
    }
    if( ae_fp_less(x,3.25) )
    {
        x2 = x*x;
        an = 1.13681498971755972054E-11;
        an = an*x2+8.49262267667473811108E-10;
        an = an*x2+1.94434204175553054283E-8;
        an = an*x2+9.53151741254484363489E-7;
        an = an*x2+3.07828309874913200438E-6;
        an = an*x2+3.52513368520288738649E-4;
        an = an*x2+(-8.50149846724410912031E-4);
        an = an*x2+4.22618223005546594270E-2;
        an = an*x2+(-9.17480371773452345351E-2);
        an = an*x2+9.99999999999999994612E-1;
        ad = 2.40372073066762605484E-11;
        ad = ad*x2+1.48864681368493396752E-9;
        ad = ad*x2+5.21265281010541664570E-8;
        ad = ad*x2+1.27258478273186970203E-6;
        ad = ad*x2+2.32490249820789513991E-5;
        ad = ad*x2+3.25524741826057911661E-4;
        ad = ad*x2+3.48805814657162590916E-3;
        ad = ad*x2+2.79448531198828973716E-2;
        ad = ad*x2+1.58874241960120565368E-1;
        ad = ad*x2+5.74918629489320327824E-1;
        ad = ad*x2+1.00000000000000000539E0;
        y = x*an/ad;
        result = sg*y;
        return result;
    }
    x2 = 1.0/(x*x);
    if( ae_fp_less(x,6.25) )
    {
        bn = 5.08955156417900903354E-1;
        bn = bn*x2-2.44754418142697847934E-1;
        bn = bn*x2+9.41512335303534411857E-2;
        bn = bn*x2-2.18711255142039025206E-2;
        bn = bn*x2+3.66207612329569181322E-3;
        bn = bn*x2-4.23209114460388756528E-4;
        bn = bn*x2+3.59641304793896631888E-5;
        bn = bn*x2-2.14640351719968974225E-6;
        bn = bn*x2+9.10010780076391431042E-8;
        bn = bn*x2-2.40274520828250956942E-9;
        bn = bn*x2+3.59233385440928410398E-11;
        bd = 1.00000000000000000000E0;
        bd = bd*x2-6.31839869873368190192E-1;
        bd = bd*x2+2.36706788228248691528E-1;
        bd = bd*x2-5.31806367003223277662E-2;
        bd = bd*x2+8.48041718586295374409E-3;
        bd = bd*x2-9.47996768486665330168E-4;
        bd = bd*x2+7.81025592944552338085E-5;
        bd = bd*x2-4.55875153252442634831E-6;
        bd = bd*x2+1.89100358111421846170E-7;
        bd = bd*x2-4.91324691331920606875E-9;
        bd = bd*x2+7.18466403235734541950E-11;
        y = 1.0/x+x2*bn/(bd*x);
        result = sg*0.5*y;
        return result;
    }
    if( ae_fp_greater(x,1.0E9) )
    {
        result = sg*0.5/x;
        return result;
    }
    cn = -5.90592860534773254987E-1;
    cn = cn*x2+6.29235242724368800674E-1;
    cn = cn*x2-1.72858975380388136411E-1;
    cn = cn*x2+1.64837047825189632310E-2;
    cn = cn*x2-4.86827613020462700845E-4;
    cd = 1.00000000000000000000E0;
    cd = cd*x2-2.69820057197544900361E0;
    cd = cd*x2+1.73270799045947845857E0;
    cd = cd*x2-3.93708582281939493482E-1;
    cd = cd*x2+3.44278924041233391079E-2;
    cd = cd*x2-9.73655226040941223894E-4;
    y = 1.0/x+x2*cn/(cd*x);
    result = sg*0.5*y;
    return result;
}

// Assembly:
subq $0x28, %rsp
xorps %xmm1, %xmm1
movaps %xmm0, 0x10(%rsp)
callq 0x262fe
testb %al, %al
jne 0xd494
movsd 0x26d19(%rip), %xmm0    # 0x341a0
movsd %xmm0, 0x8(%rsp)
movaps 0x10(%rsp), %xmm0
jmp 0xd4b1
movaps 0x10(%rsp), %xmm1
xorps 0x26d40(%rip), %xmm1    # 0x341e0
movsd 0x26d28(%rip), %xmm0    # 0x341d0
movsd %xmm0, 0x8(%rsp)
movaps %xmm1, %xmm0
movaps %xmm0, 0x10(%rsp)
movsd 0x2803a(%rip), %xmm1    # 0x354f8
callq 0x262fe
movapd 0x10(%rsp), %xmm4
movapd %xmm4, %xmm0
mulsd %xmm4, %xmm0
testb %al, %al
je 0xd5e4
movsd 0x28127(%rip), %xmm1    # 0x35608
mulsd %xmm0, %xmm1
addsd 0x28123(%rip), %xmm1    # 0x35610
mulsd %xmm0, %xmm1
addsd 0x2811f(%rip), %xmm1    # 0x35618
mulsd %xmm0, %xmm1
addsd 0x2811b(%rip), %xmm1    # 0x35620
mulsd %xmm0, %xmm1
addsd 0x28117(%rip), %xmm1    # 0x35628
mulsd %xmm0, %xmm1
addsd 0x28113(%rip), %xmm1    # 0x35630
mulsd %xmm0, %xmm1
addsd 0x2810f(%rip), %xmm1    # 0x35638
mulsd %xmm0, %xmm1
addsd 0x2810b(%rip), %xmm1    # 0x35640
mulsd %xmm0, %xmm1
addsd 0x28107(%rip), %xmm1    # 0x35648
movsd 0x28107(%rip), %xmm2    # 0x35650
mulsd %xmm0, %xmm2
addsd 0x28103(%rip), %xmm2    # 0x35658
mulsd %xmm0, %xmm2
addsd 0x280ff(%rip), %xmm2    # 0x35660
mulsd %xmm0, %xmm2
addsd 0x280fb(%rip), %xmm2    # 0x35668
mulsd %xmm0, %xmm2
addsd 0x280f7(%rip), %xmm2    # 0x35670
mulsd %xmm0, %xmm2
addsd 0x280f3(%rip), %xmm2    # 0x35678
mulsd %xmm0, %xmm1
mulsd %xmm0, %xmm2
addsd 0x280eb(%rip), %xmm2    # 0x35680
movsd 0x26c03(%rip), %xmm3    # 0x341a0
mulsd %xmm0, %xmm2
addsd 0x280df(%rip), %xmm2    # 0x35688
addsd %xmm3, %xmm1
mulsd %xmm0, %xmm2
addsd 0x280d7(%rip), %xmm2    # 0x35690
mulsd %xmm0, %xmm2
addsd 0x280d3(%rip), %xmm2    # 0x35698
mulsd %xmm0, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm1, %xmm4
divsd %xmm2, %xmm4
movsd 0x8(%rsp), %xmm0
mulsd %xmm4, %xmm0
jmp 0xd811
movsd 0x26bb4(%rip), %xmm1    # 0x341a0
divsd %xmm0, %xmm1
movsd %xmm1, 0x20(%rsp)
movsd 0x27f02(%rip), %xmm1    # 0x35500
movapd %xmm4, %xmm0
callq 0x262fe
testb %al, %al
je 0xd734
movsd 0x27f49(%rip), %xmm2    # 0x35560
movsd 0x20(%rsp), %xmm4
mulsd %xmm4, %xmm2
addsd 0x27f3f(%rip), %xmm2    # 0x35568
mulsd %xmm4, %xmm2
addsd 0x27f3b(%rip), %xmm2    # 0x35570
mulsd %xmm4, %xmm2
addsd 0x27f37(%rip), %xmm2    # 0x35578
mulsd %xmm4, %xmm2
addsd 0x27f33(%rip), %xmm2    # 0x35580
mulsd %xmm4, %xmm2
addsd 0x27f2f(%rip), %xmm2    # 0x35588
mulsd %xmm4, %xmm2
addsd 0x27f2b(%rip), %xmm2    # 0x35590
mulsd %xmm4, %xmm2
addsd 0x27f27(%rip), %xmm2    # 0x35598
mulsd %xmm4, %xmm2
addsd 0x27f23(%rip), %xmm2    # 0x355a0
mulsd %xmm4, %xmm2
addsd 0x27f1f(%rip), %xmm2    # 0x355a8
mulsd %xmm4, %xmm2
addsd 0x27f1b(%rip), %xmm2    # 0x355b0
movsd 0x27f1b(%rip), %xmm1    # 0x355b8
addsd %xmm4, %xmm1
mulsd %xmm4, %xmm1
addsd 0x27f13(%rip), %xmm1    # 0x355c0
mulsd %xmm4, %xmm1
addsd 0x27f0f(%rip), %xmm1    # 0x355c8
mulsd %xmm4, %xmm1
addsd 0x27f0b(%rip), %xmm1    # 0x355d0
mulsd %xmm4, %xmm1
addsd 0x27f07(%rip), %xmm1    # 0x355d8
mulsd %xmm4, %xmm1
addsd 0x27f03(%rip), %xmm1    # 0x355e0
mulsd %xmm4, %xmm1
addsd 0x27eff(%rip), %xmm1    # 0x355e8
mulsd %xmm4, %xmm1
addsd 0x27efb(%rip), %xmm1    # 0x355f0
mulsd %xmm4, %xmm1
addsd 0x27ef7(%rip), %xmm1    # 0x355f8
mulsd %xmm4, %xmm1
addsd 0x27ef3(%rip), %xmm1    # 0x35600
movapd 0x10(%rsp), %xmm0
movsd 0x26a85(%rip), %xmm3    # 0x341a0
divsd %xmm0, %xmm3
mulsd %xmm4, %xmm2
mulsd %xmm0, %xmm1
divsd %xmm1, %xmm2
addsd %xmm3, %xmm2
jmp 0xd7ff
movsd 0x27dcc(%rip), %xmm1    # 0x35508
movaps 0x10(%rsp), %xmm0
callq 0x2633e
testb %al, %al
je 0xd763
movsd 0x8(%rsp), %xmm0
mulsd 0x26d10(%rip), %xmm0    # 0x34468
divsd 0x10(%rsp), %xmm0
jmp 0xd811
movsd 0x27da5(%rip), %xmm2    # 0x35510
movsd 0x20(%rsp), %xmm4
mulsd %xmm4, %xmm2
addsd 0x27d9b(%rip), %xmm2    # 0x35518
mulsd %xmm4, %xmm2
addsd 0x27d97(%rip), %xmm2    # 0x35520
mulsd %xmm4, %xmm2
addsd 0x27d93(%rip), %xmm2    # 0x35528
mulsd %xmm4, %xmm2
addsd 0x27d8f(%rip), %xmm2    # 0x35530
movsd 0x27d8f(%rip), %xmm1    # 0x35538
addsd %xmm4, %xmm1
mulsd %xmm4, %xmm1
addsd 0x27d87(%rip), %xmm1    # 0x35540
mulsd %xmm4, %xmm1
addsd 0x27d83(%rip), %xmm1    # 0x35548
mulsd %xmm4, %xmm1
addsd 0x27d7f(%rip), %xmm1    # 0x35550
mulsd %xmm4, %xmm1
addsd 0x27d7b(%rip), %xmm1    # 0x35558
movsd 0x269bb(%rip), %xmm0    # 0x341a0
movapd 0x10(%rsp), %xmm3
divsd %xmm3, %xmm0
mulsd %xmm4, %xmm2
mulsd %xmm3, %xmm1
divsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd 0x8(%rsp), %xmm0
mulsd 0x26c5b(%rip), %xmm0    # 0x34468
mulsd %xmm2, %xmm0
addq $0x28, %rsp
retq