// File: /workspace/github_cpp_makefile_star2_O3/ArashPartow[P]exprtk-extras/exprtk_vectornorm.cpp
// Function: norm<double>::operator()(unsigned long const&, exprtk::type_store<double>::parameter_list)
inline T operator()(const std::size_t& ps_index, parameter_list_t parameters)
   {
      unsigned int l = 2;

      // Determine the l-power
      if (
           (2 == ps_index) ||
           (3 == ps_index)
         )
      {
         if (!scalar_t(parameters[1]).to_uint(l))
            return std::numeric_limits<T>::quiet_NaN();
      }

      const vector_t vec(parameters[0]);

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

      // Determine the range over the vector
      if (
           (1 == ps_index) ||
           (3 == ps_index)
         )
      {
         if (!scalar_t(parameters[(1 == ps_index) ? 1 : 2]).to_uint(r0))
            return std::numeric_limits<T>::quiet_NaN();

         if (!scalar_t(parameters[(1 == ps_index) ? 2 : 3]).to_uint(r1))
            return std::numeric_limits<T>::quiet_NaN();
      }

      switch (l)
      {
         #define norm_def(N) case  N : return norm_impl<N>(vec,r0,r1);
         norm_def( 1) norm_def( 2) norm_def( 3) norm_def( 4)
         norm_def( 5) norm_def( 6) norm_def( 7) norm_def( 8)
         norm_def( 9) norm_def(10) norm_def(11) norm_def(12)
         norm_def(13) norm_def(14) norm_def(15) norm_def(16)
         norm_def(17) norm_def(18) norm_def(19) norm_def(20)
         norm_def(21) norm_def(22) norm_def(23) norm_def(24)
         norm_def(25) norm_def(26) norm_def(27) norm_def(28)
         norm_def(29) norm_def(30) norm_def(31) norm_def(32)
         default : return norm_impl(vec,l,r0,r1);
      }
   }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq (%rsi), %rax
movq %rax, %rcx
andq $-0x2, %rcx
movl $0x2, %r13d
cmpq $0x2, %rcx
jne 0x11b990
movq (%rbx), %rax
movq 0x18(%rax), %r12
movsd (%r12), %xmm0
movsd 0x187770(%rip), %xmm2   # 0x2a30c0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x11befc
movsd 0x187762(%rip), %xmm1   # 0x2a30c8
callq 0x114410
movsd 0x18774d(%rip), %xmm2   # 0x2a30c0
ucomisd 0x18779d(%rip), %xmm0   # 0x2a3118
jne 0x11befc
jp 0x11befc
cvttsd2si (%r12), %r13
movq (%r14), %rax
movq (%rbx), %rcx
movq %rcx, (%rsp)
movq (%rcx), %r12
movq %r12, 0x8(%rsp)
movq %rax, %rdx
orq $0x2, %rdx
cmpq $0x3, %rdx
jne 0x11ba27
leaq 0x30(%rcx), %rdx
addq $0x18, %rcx
cmpq $0x1, %rax
cmovneq %rdx, %rcx
movq (%rcx), %rbp
movsd (%rbp), %xmm0
movsd 0x1876f4(%rip), %xmm2   # 0x2a30c0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x11befc
movsd 0x1876e6(%rip), %xmm1   # 0x2a30c8
callq 0x114410
ucomisd 0x187729(%rip), %xmm0   # 0x2a3118
jne 0x11ba1a
jp 0x11ba1a
cmpq $0x1, (%r14)
movl $0x30, %eax
movl $0x48, %ecx
cmoveq %rax, %rcx
movq (%rbx), %rax
movq (%rax,%rcx), %rbx
movsd (%rbx), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
jbe 0x11ba7e
movsd 0x18769e(%rip), %xmm2   # 0x2a30c0
jmp 0x11befc
movq 0x8(%rcx), %rbx
decq %rbx
xorl %r14d, %r14d
leal -0x1(%r13), %eax
cmpl $0x1f, %eax
ja 0x11be8c
leaq 0x187823(%rip), %rcx    # 0x2a3268
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorpd %xmm2, %xmm2
cmpq %rbx, %r14
ja 0x11befc
movapd 0x1875dd(%rip), %xmm0   # 0x2a3040
movsd (%r12,%r14,8), %xmm1
andpd %xmm0, %xmm1
addsd %xmm1, %xmm2
incq %r14
cmpq %rbx, %r14
jbe 0x11ba63
jmp 0x11befc
movsd (%rbp), %xmm1
movaps %xmm1, 0x10(%rsp)
movsd 0x187638(%rip), %xmm1   # 0x2a30c8
callq 0x114410
ucomisd 0x18767b(%rip), %xmm0   # 0x2a3118
movsd 0x18761b(%rip), %xmm2   # 0x2a30c0
jne 0x11befc
jp 0x11befc
movapd 0x10(%rsp), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
subsd 0x187609(%rip), %xmm0   # 0x2a30d0
sarq $0x3f, %rcx
cvttsd2si %xmm0, %r14
andq %rcx, %r14
orq %rax, %r14
movsd (%rbx), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0x1875e2(%rip), %xmm0   # 0x2a30d0
cvttsd2si %xmm0, %rbx
andq %rcx, %rbx
orq %rax, %rbx
jmp 0x11ba31
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c658
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c222
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c15e
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c038
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bb8d
movapd 0x1874d9(%rip), %xmm1   # 0x2a3040
movsd (%r12,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11bb67
movsd 0x18756b(%rip), %xmm1   # 0x2a3100
jmp 0x11bef3
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c09a
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bbeb
movapd 0x18747f(%rip), %xmm1   # 0x2a3040
movsd (%r12,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11bbc1
movsd 0x1874e5(%rip), %xmm1   # 0x2a30d8
jmp 0x11bef3
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c594
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c532
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bc57
movapd 0x18740b(%rip), %xmm1   # 0x2a3040
movsd (%r12,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11bc35
movsd 0x1874b1(%rip), %xmm1   # 0x2a3110
jmp 0x11bef3
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c1c0
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bc9a
movsd (%r12,%r14,8), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %r14
jmp 0x11bc7e
movsd 0x187466(%rip), %xmm1   # 0x2a3108
jmp 0x11bef3
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bccb
movsd (%r12,%r14,8), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %r14
jmp 0x11bcab
movsd 0x187415(%rip), %xmm1   # 0x2a30e8
jmp 0x11bef3
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bcf8
movsd (%r12,%r14,8), %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm0
incq %r14
jmp 0x11bce0
ucomisd %xmm1, %xmm0
jb 0x11bf84
xorps %xmm2, %xmm2
sqrtsd %xmm0, %xmm2
jmp 0x11befc
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c7e0
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c284
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c3aa
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bd87
movapd 0x1872df(%rip), %xmm1   # 0x2a3040
movsd (%r12,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11bd61
movsd 0x187369(%rip), %xmm1   # 0x2a30f8
jmp 0x11bef3
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c40c
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c0fc
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bdfb
movapd 0x18726f(%rip), %xmm1   # 0x2a3040
movsd (%r12,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11bdd1
movsd 0x1872ed(%rip), %xmm1   # 0x2a30f0
jmp 0x11bef3
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c2e6
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11bfd6
jmp 0x11bef8
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11be6f
movapd 0x1871fb(%rip), %xmm1   # 0x2a3040
movsd (%r12,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm2, %xmm2
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11be45
movsd 0x187269(%rip), %xmm1   # 0x2a30e0
jmp 0x11bef3
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c77e
jmp 0x11bef8
movl %r13d, %eax
xorps %xmm2, %xmm2
cvtsi2sd %rax, %xmm2
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11bee7
movsd %xmm2, 0x20(%rsp)
movsd %xmm0, 0x10(%rsp)
movsd (%r12,%r14,8), %xmm0
andpd 0x187186(%rip), %xmm0   # 0x2a3040
movapd %xmm2, %xmm1
callq 0x114180
movsd 0x20(%rsp), %xmm2
movsd 0x10(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
movsd 0x10(%rsp), %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11bea6
movsd 0x1871d9(%rip), %xmm1   # 0x2a30c8
divsd %xmm2, %xmm1
callq 0x114180
movapd %xmm0, %xmm2
movapd %xmm2, %xmm0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c46e
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c348
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c4d0
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c6ba
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c71c
jmp 0x11bef8
movq %rsp, %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11c5f6
jmp 0x11bef8
callq 0x114230
jmp 0x11bef8