// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk-extras/exprtk_vectornorm.cpp
// Function: void norm_of_vector<double>()
void norm_of_vector()
{
   typedef exprtk::symbol_table<T> symbol_table_t;
   typedef exprtk::expression<T>   expression_t;
   typedef exprtk::parser<T>       parser_t;

   T x[] = { T(1), T(2), T(3), T(4), T(5) };

   std::vector<T> y;

   y.push_back(T(5)); y.push_back(T(6));
   y.push_back(T(7)); y.push_back(T(8));
   y.push_back(T(9)); y.push_back(T(0));

   symbol_table_t symbol_table;
   symbol_table.add_vector("x", x);
   symbol_table.add_vector("y", y);

   norm<T> norm_;

   symbol_table.add_function("norm",norm_);

   const std::string vector_norm_program[] =
      {
         " norm(x)          ",
         " norm(x,1)        ",
         " norm(x,2)        ",
         " norm(x,3)        ",
         " norm(x,4)        ",
         " norm(x,5)        ",
         " norm(2x+1)       ",
         " norm(2x+1,1)     ",
         " norm(2x+1,2)     ",
         " norm(2x+1,3)     ",
         " norm(2x+1,4)     ",
         " norm(2x+1,5)     ",
         " norm(2x+y/3-4)   ",
         " norm(2x+y/3-4,1) ",
         " norm(2x+y/3-4,2) ",
         " norm(2x+y/3-4,3) ",
         " norm(2x+y/3-4,4) ",
         " norm(2x+y/3-4,5) "
      };

   const std::size_t vecnorm_program_size = sizeof(vector_norm_program) / sizeof(std::string);

   parser_t parser;

   for (std::size_t i = 0; i < vecnorm_program_size; ++i)
   {
      expression_t expression;
      expression.register_symbol_table(symbol_table);

      parser.compile(vector_norm_program[i], expression);

      printf("%s = %15.8f\n",
             vector_norm_program[i].c_str(),
             expression.value());
   }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd58, %rsp            # imm = 0xD58
xorps %xmm0, %xmm0
movaps 0x1adcd7(%rip), %xmm1   # 0x2c7010
movaps %xmm1, 0x30(%rsp)
movaps 0x1adcdb(%rip), %xmm1   # 0x2c7020
movaps %xmm1, 0x40(%rsp)
movabsq $0x4014000000000000, %rax # imm = 0x4014000000000000
movq %rax, 0x50(%rsp)
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movq %rax, 0x430(%rsp)
movq 0x18(%rsp), %rsi
testq %rsi, %rsi
je 0x119387
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x119399
leaq 0x10(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x11b9f2
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0x430(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x1193c5
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x1193d7
leaq 0x10(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x11b9f2
movabsq $0x401c000000000000, %rax # imm = 0x401C000000000000
movq %rax, 0x430(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x119403
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x119415
leaq 0x10(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x11b9f2
movabsq $0x4020000000000000, %rax # imm = 0x4020000000000000
movq %rax, 0x430(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x119441
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x119453
leaq 0x10(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x11b9f2
movabsq $0x4022000000000000, %rax # imm = 0x4022000000000000
movq %rax, 0x430(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x11947f
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x119491
leaq 0x10(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x11b9f2
movq $0x0, 0x430(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0x1194bb
movq $0x0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x18(%rsp)
jmp 0x1194cd
leaq 0x10(%rsp), %rdi
leaq 0x430(%rsp), %rdx
callq 0x11b9f2
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
callq 0x119ef0
leaq 0x440(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1b24b2(%rip), %rsi    # 0x2cb9a1
leaq 0x1b24ac(%rip), %rdx    # 0x2cb9a2
leaq 0x430(%rsp), %rdi
callq 0x119e60
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x1196f1
movq 0x8(%rax), %rbx
testq %rbx, %rbx
je 0x1196f1
movq 0x438(%rsp), %rax
testq %rax, %rax
je 0x1196f1
movq 0x430(%rsp), %rcx
movb (%rcx), %dl
andb $-0x21, %dl
addb $-0x41, %dl
cmpb $0x19, %dl
ja 0x1196f1
cmpq $0x1, %rax
je 0x119599
leaq -0x1(%rax), %rsi
movl $0x1, %edi
xorl %edx, %edx
movb (%rcx,%rdi), %r8b
cmpb $0x5f, %r8b
je 0x119589
leal -0x30(%r8), %r9d
cmpb $0xa, %r9b
jb 0x119589
movl %r8d, %r9d
andb $-0x21, %r9b
addb $-0x41, %r9b
cmpb $0x1a, %r9b
jb 0x119589
cmpq %rsi, %rdi
jae 0x119594
cmpb $0x2e, %r8b
jne 0x119594
incq %rdi
cmpq %rax, %rdi
setae %dl
jne 0x119559
testb $0x1, %dl
je 0x1195ba
leaq 0x1f0(%rbx), %rdi
leaq 0x430(%rsp), %rsi
callq 0x11c7ac
addq $0x1f8, %rbx            # imm = 0x1F8
cmpq %rax, %rbx
sete %dl
testb $0x1, %dl
je 0x1196f1
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x1196c9
movq 0x8(%rax), %rbx
testq %rbx, %rbx
je 0x1196c9
cmpq $0x0, 0x438(%rsp)
je 0x119606
leaq 0x430(%rsp), %rsi
movq %rbx, %rdi
callq 0x11c836
addq $0x8, %rbx
cmpq %rax, %rbx
jne 0x1196f1
cmpq $0x0, 0x438(%rsp)
je 0x11963e
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rbx
leaq 0x188(%rbx), %rdi
leaq 0x430(%rsp), %rsi
callq 0x11ca76
addq $0x190, %rbx            # imm = 0x190
cmpq %rax, %rbx
jne 0x1196f1
cmpq $0x0, 0x438(%rsp)
je 0x119672
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rbx
leaq 0x150(%rbx), %rdi
leaq 0x430(%rsp), %rsi
callq 0x11ccb6
addq $0x158, %rbx            # imm = 0x158
cmpq %rax, %rbx
jne 0x1196f1
cmpq $0x0, 0x438(%rsp)
je 0x1196a0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rbx
leaq 0x38(%rbx), %rdi
leaq 0x430(%rsp), %rsi
callq 0x11cef6
addq $0x40, %rbx
cmpq %rax, %rbx
jne 0x1196f1
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rbx
leaq 0x1f0(%rbx), %rdi
leaq 0x430(%rsp), %rsi
callq 0x11c7ac
addq $0x1f8, %rbx            # imm = 0x1F8
cmpq %rax, %rbx
jne 0x1196f1
movq 0x8(%rsp), %rax
movl $0x150, %edi            # imm = 0x150
addq 0x8(%rax), %rdi
leaq 0x430(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movl $0x5, %ecx
xorl %r8d, %r8d
callq 0x11d136
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0x11970e
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x116090
leaq 0x430(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1b2575(%rip), %rsi    # 0x2cbc95
leaq 0x1b256f(%rip), %rdx    # 0x2cbc96
callq 0x119e60
leaq 0x8(%rsp), %rdi
leaq 0x430(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x119f38
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0x119760
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x116090
leaq 0x58(%rsp), %rdi
callq 0x11a050
leaq 0x430(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1b22cd(%rip), %rsi    # 0x2cba49
leaq 0x1b22ca(%rip), %rdx    # 0x2cba4d
callq 0x119e60
leaq 0x8(%rsp), %rbx
leaq 0x430(%rsp), %rsi
leaq 0x58(%rsp), %rdx
movq %rbx, %rdi
callq 0x11a10c
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0x1197bf
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x116090
leaq 0xb0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b227c(%rip), %rsi    # 0x2cba4e
leaq 0x1b2287(%rip), %rdx    # 0x2cba60
leaq 0xa0(%rsp), %r12
movq %r12, %rdi
callq 0x119e60
leaq 0xc0(%rsp), %r15
leaq 0xd0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b225d(%rip), %rsi    # 0x2cba61
leaq 0x1b2268(%rip), %rdx    # 0x2cba73
movq %r15, %rdi
callq 0x119e60
leaq 0xe0(%rsp), %r15
leaq 0xf0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2246(%rip), %rsi    # 0x2cba74
leaq 0x1b2251(%rip), %rdx    # 0x2cba86
movq %r15, %rdi
callq 0x119e60
leaq 0x100(%rsp), %r15
leaq 0x110(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b222f(%rip), %rsi    # 0x2cba87
leaq 0x1b223a(%rip), %rdx    # 0x2cba99
movq %r15, %rdi
callq 0x119e60
leaq 0x120(%rsp), %r15
leaq 0x130(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2218(%rip), %rsi    # 0x2cba9a
leaq 0x1b2223(%rip), %rdx    # 0x2cbaac
movq %r15, %rdi
callq 0x119e60
leaq 0x140(%rsp), %r15
leaq 0x150(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2201(%rip), %rsi    # 0x2cbaad
leaq 0x1b220c(%rip), %rdx    # 0x2cbabf
movq %r15, %rdi
callq 0x119e60
leaq 0x160(%rsp), %r15
leaq 0x170(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b21ea(%rip), %rsi    # 0x2cbac0
leaq 0x1b21f5(%rip), %rdx    # 0x2cbad2
movq %r15, %rdi
callq 0x119e60
leaq 0x180(%rsp), %r15
leaq 0x190(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b21d3(%rip), %rsi    # 0x2cbad3
leaq 0x1b21de(%rip), %rdx    # 0x2cbae5
movq %r15, %rdi
callq 0x119e60
leaq 0x1a0(%rsp), %r15
leaq 0x1b0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b21bc(%rip), %rsi    # 0x2cbae6
leaq 0x1b21c7(%rip), %rdx    # 0x2cbaf8
movq %r15, %rdi
callq 0x119e60
leaq 0x1c0(%rsp), %r15
leaq 0x1d0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b21a5(%rip), %rsi    # 0x2cbaf9
leaq 0x1b21b0(%rip), %rdx    # 0x2cbb0b
movq %r15, %rdi
callq 0x119e60
leaq 0x1e0(%rsp), %r15
leaq 0x1f0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b218e(%rip), %rsi    # 0x2cbb0c
leaq 0x1b2199(%rip), %rdx    # 0x2cbb1e
movq %r15, %rdi
callq 0x119e60
leaq 0x200(%rsp), %r15
leaq 0x210(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2177(%rip), %rsi    # 0x2cbb1f
leaq 0x1b2182(%rip), %rdx    # 0x2cbb31
movq %r15, %rdi
callq 0x119e60
leaq 0x220(%rsp), %r15
leaq 0x230(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2160(%rip), %rsi    # 0x2cbb32
leaq 0x1b216b(%rip), %rdx    # 0x2cbb44
movq %r15, %rdi
callq 0x119e60
leaq 0x240(%rsp), %r15
leaq 0x250(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2149(%rip), %rsi    # 0x2cbb45
leaq 0x1b2154(%rip), %rdx    # 0x2cbb57
movq %r15, %rdi
callq 0x119e60
leaq 0x260(%rsp), %r15
leaq 0x270(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2132(%rip), %rsi    # 0x2cbb58
leaq 0x1b213d(%rip), %rdx    # 0x2cbb6a
movq %r15, %rdi
callq 0x119e60
leaq 0x280(%rsp), %r15
leaq 0x290(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b211b(%rip), %rsi    # 0x2cbb6b
leaq 0x1b2126(%rip), %rdx    # 0x2cbb7d
movq %r15, %rdi
callq 0x119e60
leaq 0x2a0(%rsp), %r15
leaq 0x2b0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1b2104(%rip), %rsi    # 0x2cbb7e
leaq 0x1b210f(%rip), %rdx    # 0x2cbb90
movq %r15, %rdi
callq 0x119e60
leaq 0x2c0(%rsp), %r15
leaq 0x2d0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1b20ed(%rip), %rsi    # 0x2cbb91
leaq 0x1b20f8(%rip), %rdx    # 0x2cbba3
movq %r15, %rdi
callq 0x119e60
leaq 0x2e0(%rsp), %rdi
movl $0x7f, %esi
callq 0x11a296
leaq 0x430(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
callq 0x11a396
leaq 0x3e0(%rsp), %rdi
callq 0x12001e
leaq 0x3b0(%rsp), %rdi
callq 0x12001e
leaq 0x380(%rsp), %rdi
callq 0x12001e
leaq 0x350(%rsp), %rdi
callq 0x12001e
leaq 0x320(%rsp), %rdi
callq 0x12001e
leaq 0x2f0(%rsp), %rdi
callq 0x12001e
xorl %r12d, %r12d
leaq 0x2e0(%rsp), %r15
leaq 0x1b206a(%rip), %r13    # 0x2cbba4
movq %r15, %rdi
callq 0x11abba
movq 0x2e8(%rsp), %rcx
movq 0x2f0(%rsp), %rax
subq %rcx, %rax
je 0x119ba4
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %rdi
adcq $0x0, %rdi
cmpq %rbx, %rcx
je 0x119bb4
movq 0x8(%rsp), %rdx
cmpq (%rcx), %rdx
je 0x119bb4
addq $0x8, %rcx
movl $0x1, %esi
subq %rdi, %rsi
xorl %edi, %edi
cmpq %rdi, %rsi
je 0x119ba4
decq %rdi
cmpq %rbx, %rcx
je 0x119b9c
leaq 0x8(%rcx), %r8
cmpq (%rcx), %rdx
movq %r8, %rcx
jne 0x119b83
negq %rdi
cmpq %rax, %rdi
jb 0x119bb4
leaq 0x2e8(%rsp), %rdi
movq %rbx, %rsi
callq 0x19571c
movq %r12, %rax
shlq $0x5, %rax
leaq (%rsp,%rax), %rbp
addq $0xa0, %rbp
leaq 0x430(%rsp), %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x11ac54
movq (%rbp), %rbp
movq 0x2e0(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movq %r13, %rdi
movq %rbp, %rsi
movb $0x1, %al
callq 0x116050
movq %r15, %rdi
callq 0x11b626
incq %r12
cmpq $0x12, %r12
jne 0x119b3a
leaq 0x430(%rsp), %rdi
callq 0x11b674
movq $-0x240, %rbx           # imm = 0xFDC0
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x119c39
movq (%r14), %rsi
incq %rsi
callq 0x116090
addq $-0x20, %r14
addq $0x20, %rbx
jne 0x119c25
leaq 0x2b7e4e(%rip), %rax    # 0x3d1a98
leaq 0x88(%rsp), %rcx
movq %rax, -0x30(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x119c6f
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x116090
leaq 0x8(%rsp), %rdi
callq 0x11b95c
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x119c90
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x116090
addq $0xd58, %rsp            # imm = 0xD58
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x119d7e
jmp 0x119da9
jmp 0x119da9
jmp 0x119da9
jmp 0x119da9
jmp 0x119da9
jmp 0x119da9
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
callq 0x11ab72
jmp 0x119dd3
movq %rax, %rbx
jmp 0x119dd3
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
jmp 0x119d02
movq %rax, %rbx
cmpq %r15, %r12
je 0x119dff
addq $-0x10, %r15
leaq 0xa0(%rsp), %r14
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x119d2e
movq (%r15), %rsi
incq %rsi
callq 0x116090
leaq -0x20(%r15), %rax
addq $-0x10, %r15
cmpq %r14, %r15
movq %rax, %r15
jne 0x119d1a
jmp 0x119dff
movq %rax, %rbx
movq %r12, %r15
jmp 0x119d05
movq %rax, %rbx
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0x119dff
movq 0x440(%rsp), %rsi
incq %rsi
callq 0x116090
jmp 0x119dff
movq %rax, %rbx
jmp 0x119dff
jmp 0x119da1
movq %rax, %rbx
movq 0x430(%rsp), %rdi
cmpq %r14, %rdi
je 0x119e2b
movq 0x440(%rsp), %rsi
jmp 0x119e23
jmp 0x119da1
movq %rax, %rbx
jmp 0x119e2b
movq %rax, %rbx
jmp 0x119e35
movq %rax, %rbx
jmp 0x119dc6
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
callq 0x11b626
leaq 0x430(%rsp), %rdi
callq 0x11b674
xorl %r15d, %r15d
movq 0x2c0(%rsp,%r15), %rdi
leaq (%r14,%r15), %rax
cmpq %rdi, %rax
je 0x119df2
movq (%rax), %rsi
incq %rsi
callq 0x116090
addq $-0x20, %r15
cmpq $-0x240, %r15           # imm = 0xFDC0
jne 0x119dd6
leaq 0x2b7c92(%rip), %rax    # 0x3d1a98
leaq 0x88(%rsp), %rcx
movq %rax, -0x30(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x119e2b
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x116090
leaq 0x8(%rsp), %rdi
callq 0x11b95c
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x119e4c
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x116090
movq %rbx, %rdi
callq 0x1162e0