// File: /workspace/github_cpp_makefile_star2_O1/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, %r12
movq %rsi, %r13
movq %rdi, %r15
movq (%rsi), %rax
andq $-0x2, %rax
movl $0x2, %ebp
cmpq $0x2, %rax
jne 0x11e2da
movq (%r12), %rax
movq 0x18(%rax), %rbx
movsd (%rbx), %xmm0
movl $0x2, %ebp
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x11e2d0
movsd 0x1a8e02(%rip), %xmm1   # 0x2c70b8
callq 0x116410
ucomisd 0x1a8e45(%rip), %xmm0   # 0x2c7108
jne 0x11e2d0
jp 0x11e2d0
cvttsd2si (%rbx), %rbp
movb $0x1, %al
jmp 0x11e2d2
xorl %eax, %eax
testb %al, %al
je 0x11e3b3
movq (%r12), %rax
movq %rax, 0x8(%rsp)
movq (%rax), %rcx
movq %rcx, 0x10(%rsp)
movq 0x8(%rax), %rbx
decq %rbx
movq (%r13), %rcx
movq %rcx, %rdx
orq $0x2, %rdx
cmpq $0x3, %rdx
jne 0x11e3ae
leaq 0x30(%rax), %rdx
addq $0x18, %rax
cmpq $0x1, %rcx
cmovneq %rdx, %rax
movq (%rax), %r14
movsd (%r14), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x11e36a
movsd 0x1a8d87(%rip), %xmm1   # 0x2c70b8
callq 0x116410
ucomisd 0x1a8dca(%rip), %xmm0   # 0x2c7108
jne 0x11e36a
jp 0x11e36a
movsd (%r14), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
subsd 0x1a8d69(%rip), %xmm0   # 0x2c70c0
cvttsd2si %xmm0, %r14
sarq $0x3f, %rcx
andq %rcx, %r14
orq %rax, %r14
movb $0x1, %al
jmp 0x11e36f
xorl %r14d, %r14d
xorl %eax, %eax
movsd 0x1a8d39(%rip), %xmm2   # 0x2c70b0
testb %al, %al
je 0x11e8ba
cmpq $0x1, (%r13)
movl $0x30, %eax
movl $0x48, %ecx
cmoveq %rax, %rcx
movq (%r12), %rax
movq (%rax,%rcx), %r12
movsd (%r12), %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
jbe 0x11e3c0
xorl %eax, %eax
jmp 0x11e40c
xorl %r14d, %r14d
jmp 0x11e414
movsd 0x1a8cf5(%rip), %xmm2   # 0x2c70b0
jmp 0x11e8ba
movsd 0x1a8cf0(%rip), %xmm1   # 0x2c70b8
callq 0x116410
ucomisd 0x1a8d33(%rip), %xmm0   # 0x2c7108
jne 0x11e402
jp 0x11e402
movsd (%r12), %xmm0
cvttsd2si %xmm0, %rax
movq %rax, %rcx
subsd 0x1a8cd1(%rip), %xmm0   # 0x2c70c0
cvttsd2si %xmm0, %rbx
sarq $0x3f, %rcx
andq %rcx, %rbx
orq %rax, %rbx
movb $0x1, %al
jmp 0x11e404
xorl %eax, %eax
movsd 0x1a8ca4(%rip), %xmm2   # 0x2c70b0
testb %al, %al
je 0x11e8ba
leal -0x1(%rbp), %eax
cmpl $0x1f, %eax
ja 0x11e849
leaq 0x1a8e31(%rip), %rcx    # 0x2c7258
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
xorpd %xmm2, %xmm2
cmpq %rbx, %r14
ja 0x11e8ba
movq 0x10(%rsp), %rax
movapd 0x1a8bf6(%rip), %xmm0   # 0x2c7040
movsd (%rax,%r14,8), %xmm1
andpd %xmm0, %xmm1
addsd %xmm1, %xmm2
incq %r14
cmpq %rbx, %r14
jbe 0x11e44a
jmp 0x11e8ba
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11f022
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ebec
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11eb28
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ea02
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e501
movq 0x10(%rsp), %rax
movapd 0x1a8b65(%rip), %xmm1   # 0x2c7040
movsd (%rax,%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 0x11e4db
movsd 0x1a8be7(%rip), %xmm1   # 0x2c70f0
jmp 0x11e8b1
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ea64
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e566
movq 0x10(%rsp), %rax
movapd 0x1a8b04(%rip), %xmm1   # 0x2c7040
movsd (%rax,%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 0x11e53c
movsd 0x1a8b5a(%rip), %xmm1   # 0x2c70c8
jmp 0x11e8b1
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ef5e
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11eefc
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e5db
movq 0x10(%rsp), %rax
movapd 0x1a8a87(%rip), %xmm1   # 0x2c7040
movsd (%rax,%r14,8), %xmm2
movapd %xmm2, %xmm3
andpd %xmm1, %xmm3
mulsd %xmm2, %xmm2
mulsd %xmm3, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11e5b9
movsd 0x1a8b1d(%rip), %xmm1   # 0x2c7100
jmp 0x11e8b1
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11eb8a
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e628
movq 0x10(%rsp), %rax
movsd (%rax,%r14,8), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11e60e
movsd 0x1a8ac8(%rip), %xmm1   # 0x2c70f8
jmp 0x11e8b1
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e661
movq 0x10(%rsp), %rax
movsd (%rax,%r14,8), %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm1
addsd %xmm1, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11e643
movsd 0x1a8a6f(%rip), %xmm1   # 0x2c70d8
jmp 0x11e8b1
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e696
movq 0x10(%rsp), %rax
movsd (%rax,%r14,8), %xmm2
mulsd %xmm2, %xmm2
addsd %xmm2, %xmm0
incq %r14
cmpq %rbx, %r14
jbe 0x11e680
ucomisd %xmm1, %xmm0
jb 0x11e94e
xorps %xmm2, %xmm2
sqrtsd %xmm0, %xmm2
jmp 0x11e8ba
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11f1aa
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ec4e
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ed74
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e730
movq 0x10(%rsp), %rax
movapd 0x1a8936(%rip), %xmm1   # 0x2c7040
movsd (%rax,%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 0x11e70a
movsd 0x1a89b0(%rip), %xmm1   # 0x2c70e8
jmp 0x11e8b1
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11edd6
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11eac6
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e7ad
movq 0x10(%rsp), %rax
movapd 0x1a88bd(%rip), %xmm1   # 0x2c7040
movsd (%rax,%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 0x11e783
movsd 0x1a892b(%rip), %xmm1   # 0x2c70e0
jmp 0x11e8b1
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ecb0
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11e9a0
jmp 0x11e8b6
xorpd %xmm0, %xmm0
cmpq %rbx, %r14
ja 0x11e82a
movq 0x10(%rsp), %rax
movapd 0x1a8840(%rip), %xmm1   # 0x2c7040
movsd (%rax,%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 0x11e800
movsd 0x1a889e(%rip), %xmm1   # 0x2c70d0
jmp 0x11e8b1
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11f148
jmp 0x11e8b6
xorpd %xmm2, %xmm2
movl %ebp, %r15d
cmpq %rbx, %r14
ja 0x11e899
xorps %xmm0, %xmm0
cvtsi2sd %r15, %xmm0
movsd %xmm0, 0x18(%rsp)
movsd %xmm2, 0x20(%rsp)
movq 0x10(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
andpd 0x1a87c4(%rip), %xmm0   # 0x2c7040
movsd 0x18(%rsp), %xmm1
callq 0x116180
movsd 0x20(%rsp), %xmm2
addsd %xmm0, %xmm2
incq %r14
cmpq %rbx, %r14
jbe 0x11e863
xorps %xmm0, %xmm0
cvtsi2sd %r15, %xmm0
movsd 0x1a880f(%rip), %xmm1   # 0x2c70b8
divsd %xmm0, %xmm1
movapd %xmm2, %xmm0
callq 0x116180
movapd %xmm0, %xmm2
movapd %xmm2, %xmm0
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ee38
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ed12
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11ee9a
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11f084
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11f0e6
jmp 0x11e8b6
leaq 0x8(%rsp), %rsi
movq %r15, %rdi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x11efc0
jmp 0x11e8b6
callq 0x116230
jmp 0x11e8b6