// File: /workspace/github_cpp_makefile_star2_O2/ArashPartow[P]exprtk-extras/exprtk_testgen.cpp
// Function: bool test_gen<double>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
inline bool test_gen(const std::string& expr_file)
{
   typedef exprtk::expression<T> expression_t;

   T x = T(0);
   T y = T(0);
   T z = T(0);
   T w = T(0);

   exprtk::polynomial<T, 1> poly01;
   exprtk::polynomial<T, 2> poly02;
   exprtk::polynomial<T, 3> poly03;
   exprtk::polynomial<T, 4> poly04;
   exprtk::polynomial<T, 5> poly05;
   exprtk::polynomial<T, 6> poly06;
   exprtk::polynomial<T, 7> poly07;
   exprtk::polynomial<T, 8> poly08;
   exprtk::polynomial<T, 9> poly09;
   exprtk::polynomial<T,10> poly10;
   exprtk::polynomial<T,11> poly11;
   exprtk::polynomial<T,12> poly12;

   exprtk::symbol_table<T> symbol_table;
   symbol_table.add_constants();
   symbol_table.add_variable("x",x);
   symbol_table.add_variable("y",y);
   symbol_table.add_variable("z",z);
   symbol_table.add_variable("w",w);
   symbol_table.add_function("poly01", poly01);
   symbol_table.add_function("poly02", poly02);
   symbol_table.add_function("poly03", poly03);
   symbol_table.add_function("poly04", poly04);
   symbol_table.add_function("poly05", poly05);
   symbol_table.add_function("poly06", poly06);
   symbol_table.add_function("poly07", poly07);
   symbol_table.add_function("poly08", poly08);
   symbol_table.add_function("poly09", poly09);
   symbol_table.add_function("poly10", poly10);
   symbol_table.add_function("poly11", poly11);
   symbol_table.add_function("poly12", poly12);

   expression_t expression;
   expression.register_symbol_table(symbol_table);

   exprtk::parser<T> parser;

   std::deque<std::string> expr_str_list;

   if (0 == load_expressions(expr_file,expr_str_list))
   {
      return true;
   }

   std::deque<exprtk::expression<T> > expression_list;

   bool load_success = true;

   for (std::size_t i = 0; i < expr_str_list.size(); ++i)
   {
      exprtk::expression<T> current_expression;

      current_expression.register_symbol_table(symbol_table);

      if (!parser.compile(expr_str_list[i],current_expression))
      {
         load_success = false;
         printf("test_gen() - Error: %s   Expression: %s\n",
                parser.error().c_str(),
                expr_str_list[i].c_str());
      }
      else
         expression_list.push_back(current_expression);
   }

   if (!load_success)
      return false;

   for (std::size_t i = 0; i < expression_list.size(); ++i)
   {
      T result = expression_list[i].value();

      printf("equal((%050.30f),(%s))\n",
             result,
             expr_str_list[i].c_str());
   }

   return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd48, %rsp            # imm = 0xD48
andq $0x0, 0x38(%rsp)
andq $0x0, 0x30(%rsp)
andq $0x0, 0x28(%rsp)
andq $0x0, 0x20(%rsp)
andw $0x0, 0x200(%rsp)
andq $0x0, 0x208(%rsp)
orq $-0x1, 0x210(%rsp)
movq %rdi, %rbx
andw $0x0, 0x1d8(%rsp)
movq $0x3, 0x218(%rsp)
andq $0x0, 0x1e0(%rsp)
leaq 0x253783(%rip), %rax    # 0x365b78
orq $-0x1, 0x1e8(%rsp)
movq %rax, 0x1f8(%rsp)
andw $0x0, 0x1b0(%rsp)
movq $0x4, 0x1f0(%rsp)
andq $0x0, 0x1b8(%rsp)
leaq 0x253865(%rip), %rax    # 0x365c90
orq $-0x1, 0x1c0(%rsp)
movq %rax, 0x1d0(%rsp)
andw $0x0, 0x188(%rsp)
movq $0x5, 0x1c8(%rsp)
andq $0x0, 0x190(%rsp)
leaq 0x25390f(%rip), %rax    # 0x365d70
orq $-0x1, 0x198(%rsp)
movq %rax, 0x1a8(%rsp)
andw $0x0, 0x160(%rsp)
movq $0x6, 0x1a0(%rsp)
andq $0x0, 0x168(%rsp)
leaq 0x2539b9(%rip), %rax    # 0x365e50
orq $-0x1, 0x170(%rsp)
movq %rax, 0x180(%rsp)
andw $0x0, 0x138(%rsp)
movq $0x7, 0x178(%rsp)
andq $0x0, 0x140(%rsp)
leaq 0x253a63(%rip), %rax    # 0x365f30
orq $-0x1, 0x148(%rsp)
movq %rax, 0x158(%rsp)
andw $0x0, 0x110(%rsp)
movq $0x8, 0x150(%rsp)
andq $0x0, 0x118(%rsp)
leaq 0x253b0d(%rip), %rax    # 0x366010
orq $-0x1, 0x120(%rsp)
movq %rax, 0x130(%rsp)
andw $0x0, 0xe8(%rsp)
movq $0x9, 0x128(%rsp)
andq $0x0, 0xf0(%rsp)
leaq 0x253bb7(%rip), %rax    # 0x3660f0
orq $-0x1, 0xf8(%rsp)
movq %rax, 0x108(%rsp)
andw $0x0, 0xc0(%rsp)
movq $0xa, 0x100(%rsp)
andq $0x0, 0xc8(%rsp)
leaq 0x253c61(%rip), %rax    # 0x3661d0
orq $-0x1, 0xd0(%rsp)
movq %rax, 0xe0(%rsp)
andw $0x0, 0x98(%rsp)
movq $0xb, 0xd8(%rsp)
andq $0x0, 0xa0(%rsp)
leaq 0x253d0b(%rip), %rax    # 0x3662b0
orq $-0x1, 0xa8(%rsp)
movq %rax, 0xb8(%rsp)
andw $0x0, 0x70(%rsp)
movq $0xc, 0xb0(%rsp)
andq $0x0, 0x78(%rsp)
leaq 0x253dbb(%rip), %rax    # 0x366390
orq $-0x1, 0x80(%rsp)
movq %rax, 0x90(%rsp)
andw $0x0, 0x48(%rsp)
movq $0xd, 0x88(%rsp)
andq $0x0, 0x50(%rsp)
leaq 0x253e6b(%rip), %rax    # 0x366470
orq $-0x1, 0x58(%rsp)
movq %rax, 0x68(%rsp)
movq $0xe, 0x60(%rsp)
leaq 0x253f30(%rip), %rax    # 0x366550
movq %rax, 0x40(%rsp)
leaq 0x8(%rsp), %r14
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0x112e2e
movq %r14, %rdi
callq 0x112e52
leaq 0x12ca15(%rip), %rsi    # 0x23f059
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x38(%rsp), %rdx
xorl %ecx, %ecx
callq 0x112e78
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12cbfe(%rip), %rsi    # 0x23f284
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x30(%rsp), %rdx
xorl %ecx, %ecx
callq 0x112e78
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12ca39(%rip), %rsi    # 0x23f101
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x28(%rsp), %rdx
xorl %ecx, %ecx
callq 0x112e78
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c972(%rip), %rsi    # 0x23f07c
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x20(%rsp), %rdx
xorl %ecx, %ecx
callq 0x112e78
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c9b7(%rip), %rsi    # 0x23f103
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x1f8(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c97b(%rip), %rsi    # 0x23f10a
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x1d0(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c93f(%rip), %rsi    # 0x23f111
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x1a8(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c903(%rip), %rsi    # 0x23f118
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c8c7(%rip), %rsi    # 0x23f11f
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x158(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c88b(%rip), %rsi    # 0x23f126
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x130(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c84f(%rip), %rsi    # 0x23f12d
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c813(%rip), %rsi    # 0x23f134
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c7d7(%rip), %rsi    # 0x23f13b
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0xb8(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c79b(%rip), %rsi    # 0x23f142
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c75f(%rip), %rsi    # 0x23f149
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x12c726(%rip), %rsi    # 0x23f150
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rdx
callq 0x11234e
leaq 0x8(%rsp), %rdi
leaq 0x420(%rsp), %rsi
leaq 0x40(%rsp), %rdx
callq 0x112ee4
leaq 0x420(%rsp), %rdi
callq 0x1105f8
leaq 0x240(%rsp), %rdi
callq 0x112f44
leaq 0x240(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x112fa4
leaq 0x280(%rsp), %rdi
pushq $0x7f
popq %rsi
callq 0x113000
leaq 0x420(%rsp), %rdi
leaq 0x280(%rsp), %rsi
callq 0x113110
leaq 0x280(%rsp), %rdi
callq 0x113728
leaq 0x280(%rsp), %rdi
callq 0x17447a
leaq 0x280(%rsp), %rsi
movq %rbx, %rdi
callq 0x11376f
testq %rax, %rax
je 0x112c5c
leaq 0x3d0(%rsp), %rdi
callq 0x1748b4
movb $0x1, %al
movl %eax, 0x14(%rsp)
leaq 0x290(%rsp), %r14
xorl %r15d, %r15d
leaq 0x280(%rsp), %r12
leaq 0x8(%rsp), %rbp
leaq 0x420(%rsp), %r13
movq %r12, %rdi
callq 0x11384e
cmpq %rax, %r15
jae 0x112bda
leaq 0x220(%rsp), %rbx
movq %rbx, %rdi
callq 0x112f44
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x112fa4
movq %r14, %rdi
movq %r15, %rsi
callq 0x238da8
movq %r13, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x11385e
testb %al, %al
je 0x112b70
leaq 0x3d0(%rsp), %rdi
leaq 0x220(%rsp), %rbx
movq %rbx, %rsi
callq 0x113d34
jmp 0x112bca
leaq 0x260(%rsp), %rdi
movq %r13, %rbx
movq %r13, %rsi
callq 0x113ce0
movq 0x260(%rsp), %r13
movq %r14, %rdi
movq %r15, %rsi
callq 0x238da8
movq (%rax), %rdx
movl $0x0, 0x14(%rsp)
leaq 0x12c5af(%rip), %rdi    # 0x23f157
movq %r13, %rsi
xorl %eax, %eax
callq 0x110080
leaq 0x260(%rsp), %rdi
callq 0x1105f8
movq %rbx, %r13
leaq 0x220(%rsp), %rbx
movq %rbx, %rdi
callq 0x113d5e
incq %r15
jmp 0x112b0d
testb $0x1, 0x14(%rsp)
je 0x112c49
leaq 0x3e0(%rsp), %rbx
xorl %r15d, %r15d
leaq 0x3d0(%rsp), %r12
leaq 0x12c585(%rip), %r13    # 0x23f180
movq %r12, %rdi
callq 0x113d74
cmpq %rax, %r15
jae 0x112c49
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2391ac
movq (%rax), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movsd %xmm0, 0x18(%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x238da8
movq (%rax), %rsi
movq %r13, %rdi
movsd 0x18(%rsp), %xmm0
movb $0x1, %al
callq 0x110080
incq %r15
jmp 0x112bfb
leaq 0x3d0(%rsp), %rdi
callq 0x113d84
movl 0x14(%rsp), %ebx
jmp 0x112c5e
movb $0x1, %bl
leaq 0x280(%rsp), %rdi
callq 0x113dd0
leaq 0x420(%rsp), %rdi
callq 0x113e1c
leaq 0x240(%rsp), %rdi
callq 0x113d5e
leaq 0x8(%rsp), %rdi
callq 0x113f56
andb $0x1, %bl
movl %ebx, %eax
addq $0xd48, %rsp            # imm = 0xD48
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x112ca8
movq %rax, %rbx
jmp 0x112d54
movq %rax, %rbx
jmp 0x112d61
movq %rax, %rbx
leaq 0x280(%rsp), %rdi
callq 0x113728
jmp 0x112d6e
jmp 0x112ccf
movq %rax, %rbx
jmp 0x112d6e
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
jmp 0x112d15
jmp 0x112d29
movq %rax, %rbx
leaq 0x420(%rsp), %rdi
callq 0x1105f8
jmp 0x112d7b
jmp 0x112d29
movq %rax, %rbx
jmp 0x112d7b
jmp 0x112d32
jmp 0x112d37
movq %rax, %rbx
jmp 0x112d47
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x113d5e
leaq 0x3d0(%rsp), %rdi
callq 0x113d84
leaq 0x280(%rsp), %rdi
callq 0x113dd0
leaq 0x420(%rsp), %rdi
callq 0x113e1c
leaq 0x240(%rsp), %rdi
callq 0x113d5e
leaq 0x8(%rsp), %rdi
callq 0x113f56
movq %rbx, %rdi
callq 0x110340