// File: /workspace/github_cpp_makefile_star2_O2/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 %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
movl $0x2, 0x14(%rsp)
movq (%rsi), %rax
movq %rax, %rcx
andq $-0x2, %rcx
cmpq $0x2, %rcx
jne 0x113364
movq (%r14), %rax
movq 0x18(%rax), %rax
movq %rsp, %rdi
movq %rax, (%rdi)
leaq 0x14(%rsp), %rsi
callq 0x113718
testb %al, %al
je 0x113433
movq (%r15), %rax
movq (%r14), %rcx
movq %rcx, (%rsp)
movq (%rcx), %rdx
andq $0x0, 0x20(%rsp)
movq %rdx, 0x8(%rsp)
movq 0x8(%rcx), %rdx
decq %rdx
movq %rdx, 0x18(%rsp)
movq %rax, %rdx
orq $0x2, %rdx
cmpq $0x3, %rdx
jne 0x1133f6
leaq 0x30(%rcx), %rdx
addq $0x18, %rcx
cmpq $0x1, %rax
cmovneq %rdx, %rcx
movq (%rcx), %rax
leaq 0x28(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x20(%rsp), %rsi
callq 0x113754
movsd 0x123cd1(%rip), %xmm0   # 0x237090
testb %al, %al
je 0x11343b
cmpq $0x1, (%r15)
pushq $0x30
popq %rax
pushq $0x48
popq %rcx
cmoveq %rax, %rcx
movq (%r14), %rax
movq (%rax,%rcx), %rax
leaq 0x28(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x18(%rsp), %rsi
callq 0x113754
movsd 0x123c9e(%rip), %xmm0   # 0x237090
testb %al, %al
je 0x11343b
movl 0x14(%rsp), %edx
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %r8
leal -0x1(%rdx), %eax
cmpl $0x1f, %eax
ja 0x113659
leaq 0x123e21(%rip), %rdx    # 0x237238
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x1137b0
jmp 0x11343b
movsd 0x123c55(%rip), %xmm0   # 0x237090
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x1140f6
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113c7e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113bae
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113a76
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11387a
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113ade
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x1139c6
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x114026
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113fbe
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11380a
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113c16
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11384a
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11394a
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x1137d8
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x114296
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113ce6
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113e1e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x1138be
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113e86
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113b46
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113902
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113d4e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113a0e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11397e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11422e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x1142fe
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113eee
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113db6
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x113f56
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11415e
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x1141c6
jmp 0x11343b
movq %rsp, %rsi
movq %rbx, %rdi
movq %rcx, %rdx
movq %r8, %rcx
callq 0x11408e
jmp 0x11343b
nop