// File: /workspace/github_cpp_makefile_star2_O3/ashlall[P]StreamStats/Test/BasicStats_test.cpp
// Function: test_SD()
void test_SD()
{
  BasicStats a; // tests with 10 items in the stream in ascending order
  for (int i=1;i<=10;i++)
    a.insert(i);
  assert(3.02765 <= a.SD() <= 3.0275);

  for (int i=100;i>=11;i--) // tests with 100 items in the stream in descending order
    a.insert(i);
  assert(29.01149<=a.SD()<=29.01149);

  a.insert(1000); // tests adding an outlier to the stream
  assert(98.79013<=a.SD()<=98.79013);

  for (int i=1;i<10;i++) // tests having 10 max values in the stream
    a.insert(1000);
  assert(275.6017<=a.SD()<=275.6017);

  BasicStats b; // tests with father apart integers
  for (int i=1;i<=50;i++)
    b.insert(i*3);
  assert(43.73214<=b.SD()<=43.73214);
}

// Assembly:
xorpd %xmm3, %xmm3
movsd 0x684(%rip), %xmm0      # 0x2008
movl $0xa, %eax
movapd %xmm0, %xmm1
xorpd %xmm4, %xmm4
addsd %xmm1, %xmm4
movapd %xmm1, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm2, %xmm3
addsd %xmm0, %xmm1
decq %rax
jne 0x1991
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movapd %xmm4, %xmm1
divsd 0x69a(%rip), %xmm1      # 0x2058
movsd 0x69a(%rip), %xmm0      # 0x2060
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
addsd %xmm3, %xmm0
divsd 0x68e(%rip), %xmm0      # 0x2068
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jae 0x19fd
movsd %xmm3, -0x10(%rbp)
movsd %xmm4, -0x8(%rbp)
callq 0x1050
movsd -0x8(%rbp), %xmm4
movsd -0x10(%rbp), %xmm3
movl $0x5a, %eax
leal 0xa(%rax), %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
addsd %xmm0, %xmm4
mulsd %xmm0, %xmm0
addsd %xmm0, %xmm3
decq %rax
jne 0x1a02
movapd %xmm4, %xmm1
divsd 0x5ef(%rip), %xmm1      # 0x2018
movsd 0x63f(%rip), %xmm0      # 0x2070
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
addsd %xmm3, %xmm0
divsd 0x5db(%rip), %xmm0      # 0x2020
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm0
jae 0x1a6c
movsd %xmm3, -0x10(%rbp)
movsd %xmm4, -0x8(%rbp)
callq 0x1050
xorpd %xmm2, %xmm2
movsd -0x8(%rbp), %xmm4
movsd -0x10(%rbp), %xmm3
addsd 0x604(%rip), %xmm4      # 0x2078
addsd 0x5ac(%rip), %xmm3      # 0x2028
movapd %xmm4, %xmm1
divsd 0x5f8(%rip), %xmm1      # 0x2080
movsd 0x5f8(%rip), %xmm0      # 0x2088
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
addsd %xmm3, %xmm0
divsd 0x574(%rip), %xmm0      # 0x2018
ucomisd %xmm2, %xmm0
jae 0x1ac3
movsd %xmm3, -0x10(%rbp)
movsd %xmm4, -0x8(%rbp)
callq 0x1050
movsd -0x8(%rbp), %xmm4
movsd -0x10(%rbp), %xmm3
movl $0x9, %eax
movsd 0x5a8(%rip), %xmm0      # 0x2078
movsd 0x550(%rip), %xmm1      # 0x2028
addsd %xmm0, %xmm4
addsd %xmm1, %xmm3
decq %rax
jne 0x1ad8
divsd 0x5a3(%rip), %xmm4      # 0x2090
movsd 0x5a3(%rip), %xmm0      # 0x2098
mulsd %xmm4, %xmm0
mulsd %xmm4, %xmm0
addsd %xmm3, %xmm0
divsd 0x597(%rip), %xmm0      # 0x20a0
xorpd %xmm2, %xmm2
ucomisd %xmm2, %xmm0
jae 0x1b1c
callq 0x1050
xorpd %xmm2, %xmm2
movq $-0x96, %rax
xorpd %xmm1, %xmm1
leal 0x99(%rax), %ecx
xorps %xmm0, %xmm0
cvtsi2sd %ecx, %xmm0
addsd %xmm0, %xmm1
mulsd %xmm0, %xmm0
addsd %xmm0, %xmm2
addq $0x3, %rax
jne 0x1b27
divsd 0x55a(%rip), %xmm1      # 0x20a8
movsd 0x55a(%rip), %xmm0      # 0x20b0
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
addsd %xmm2, %xmm0
divsd 0x54e(%rip), %xmm0      # 0x20b8
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0x10(%rsp), %rsp
popq %rbp
jb 0x1050
retq