// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk/./exprtk.hpp
// Function: exprtk::rtl::vecops::count<double>::operator()(unsigned long const&, exprtk::type_store<double>::parameter_list)
inline T operator() (const std::size_t& ps_index, parameter_list_t parameters) exprtk_override
      {
         std::size_t cnt = 0;

         if (2 == ps_index)
         {
            for (std::size_t i = 0; i < parameters.size(); ++i)
            {
               if (scalar_t(parameters[i])() != T(0)) ++cnt;
            }
         }
         else
         {
            const vector_t vec(parameters[0]);

            std::size_t r0 = 0;
            std::size_t r1 = vec.size() - 1;

            if (
                 (1 == ps_index) &&
                 !helper::load_vector_range<T>::process(parameters, r0, r1, 1, 2, 0)
               )
            {
               return std::numeric_limits<T>::quiet_NaN();
            }

            for (std::size_t i = r0; i <= r1; ++i)
            {
               if (vec[i] != T(0)) ++cnt;
            }
         }

         return T(cnt);
      }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %rbx
movq (%rsi), %rcx
cmpq $0x2, %rcx
jne 0x3796ef
movq (%rbx), %rax
movq 0x8(%rbx), %rdx
subq %rax, %rdx
je 0x37983f
sarq $0x3, %rdx
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rdx, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
xorl %edx, %edx
xorpd %xmm0, %xmm0
movq (%rax), %rsi
movsd (%rsi), %xmm1
cmpneqsd %xmm0, %xmm1
movq %xmm1, %rsi
subq %rsi, %rdx
addq $0x18, %rax
decq %rcx
jne 0x3796cd
jmp 0x379841
movq (%rbx), %rax
movq (%rax), %r14
cmpq $0x1, %rcx
jne 0x379813
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movabsq $-0x5555555555555555, %rdx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rdx
movsd 0xfae8(%rip), %xmm1     # 0x389208
cmpq $0x3, %rdx
jb 0x379862
movq 0x18(%rax), %r12
movsd (%r12), %xmm0
xorpd %xmm2, %xmm2
ucomisd %xmm0, %xmm2
ja 0x379862
movsd 0xf8d6(%rip), %xmm1     # 0x389020
callq 0x11e460
ucomisd 0xfa99(%rip), %xmm0     # 0x3891f0
jne 0x379872
jp 0x379872
movq (%rbx), %rax
movq 0x30(%rax), %r15
movsd (%r15), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x379872
movsd (%r12), %xmm1
movaps %xmm1, (%rsp)
movsd 0xf891(%rip), %xmm1     # 0x389020
callq 0x11e460
ucomisd 0xfa54(%rip), %xmm0     # 0x3891f0
jne 0x379872
jp 0x379872
movapd (%rsp), %xmm0
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
subsd 0xfabf(%rip), %xmm0     # 0x389280
cvttsd2si %xmm0, %rax
andq %rdx, %rax
orq %rcx, %rax
movsd (%r15), %xmm0
cvttsd2si %xmm0, %rdx
movq %rdx, %rsi
subsd 0xfa9f(%rip), %xmm0     # 0x389280
cvttsd2si %xmm0, %rcx
sarq $0x3f, %rsi
andq %rsi, %rcx
orq %rdx, %rcx
cmpq %rcx, %rax
movsd 0xfa0d(%rip), %xmm1     # 0x389208
ja 0x379862
movq (%rbx), %rdx
movq 0x8(%rdx), %rdx
decq %rdx
cmpq %rax, %rdx
jb 0x379862
cmpq %rcx, %rdx
jae 0x37981c
jmp 0x379862
movq 0x8(%rax), %rcx
decq %rcx
xorl %eax, %eax
xorl %edx, %edx
xorpd %xmm0, %xmm0
movsd (%r14,%rax,8), %xmm1
cmpneqsd %xmm0, %xmm1
movq %xmm1, %rsi
subq %rsi, %rdx
incq %rax
cmpq %rcx, %rax
jbe 0x379822
jmp 0x379841
xorl %edx, %edx
movq %rdx, %xmm0
punpckldq 0xfa52(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0xfa5a(%rip), %xmm0     # 0x3892b0
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, %xmm0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movsd 0xf98e(%rip), %xmm1     # 0x389208
jmp 0x379862