// File: /workspace/github_cpp_makefile_star2_O1/ef-gy[P]libefgy/src/test-case/e.cpp
// Function: testE(std::ostream&)
bool testE(std::ostream &log) {
  e<longDouble> eD1(1, 1, 0, 1);
  e<longDouble> eD2(1, 1, 0, 4);
  e<longDouble> eD3(1, 1, 0, 8);
  e<longDouble> eD4(1, 1, 0, 12);

  log << "e<longDouble,1> = " << (long double)longDouble(eD1) << "\n";
  log << "e<longDouble,4> = " << (long double)longDouble(eD2) << "\n";
  log << "e<longDouble,8> = " << (long double)longDouble(eD3) << "\n";
  log << "e<longDouble,12> = " << (long double)longDouble(eD4) << "\n";

  e<long double> eDL1(1, 1, 0, 1);
  e<long double> eDL2(1, 1, 0, 4);
  e<long double> eDL3(1, 1, 0, 8);
  e<long double> eDL4(1, 1, 0, 12);

  log << "e<long double,1> = " << (long double)eDL1 << "\n";
  log << "e<long double,4> = " << (long double)eDL2 << "\n";
  log << "e<long double,8> = " << (long double)eDL3 << "\n";
  log << "e<long double,12> = " << (long double)eDL4 << "\n";

  e<fraction> eQ1(fraction(1), fraction(1), fraction(0), 1);
  e<fraction> eQ2(fraction(1), fraction(1), fraction(0), 4);
  e<fraction> eQ3(fraction(1), fraction(1), fraction(0), 8);
  e<fraction> eQ4(fraction(1), fraction(1), fraction(0), 12);

  log << "e<fraction,1> = " << fraction(eQ1) << "\n";
  log << "e<fraction,4> = " << fraction(eQ2) << "\n";
  log << "e<fraction,8> = " << fraction(eQ3) << "\n";
  log << "e<fraction,12> = " << fraction(eQ4) << "\n";

  return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
movq %rdi, %rbx
movl $0x1, %r12d
leaq 0x250(%rsp), %r14
movq %r12, -0x10(%r14)
fld1
fld %st(0)
fstpt 0x250(%rsp)
leaq 0x260(%rsp), %rbp
fldz
fld %st(0)
fstpt 0x260(%rsp)
leaq 0x270(%rsp), %r15
fld %st(1)
fstpt 0x270(%rsp)
movl $0x4, %eax
leaq 0x210(%rsp), %r13
movq %rax, -0x10(%r13)
fld %st(1)
fstpt 0x210(%rsp)
fld %st(0)
fstpt 0x220(%rsp)
fld %st(1)
fstpt 0x230(%rsp)
movl $0x8, %eax
leaq 0x190(%rsp), %rcx
movq %rax, -0x10(%rcx)
fld %st(1)
fstpt 0x190(%rsp)
fld %st(0)
fstpt 0x1a0(%rsp)
fld %st(1)
fstpt 0x1b0(%rsp)
movl $0xc, %eax
leaq 0x150(%rsp), %rcx
movq %rax, -0x10(%rcx)
fld %st(1)
fstpt 0x150(%rsp)
fstpt 0x160(%rsp)
fstpt 0x170(%rsp)
leaq 0xf598(%rip), %rsi      # 0x14122
movl $0x12, %edx
callq 0x42c0
fldz
fstpt 0x80(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x240(%rsp), %rsi
leaq 0x80(%rsp), %r9
movq %r14, %rdx
movq %r15, %rcx
movq %rbp, %r8
callq 0x10eac
fldt 0x40(%rsp)
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
leaq 0xf69e(%rip), %r14      # 0x14274
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x42c0
leaq 0xf548(%rip), %rsi      # 0x14135
movl $0x12, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0x80(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x200(%rsp), %rsi
leaq 0x80(%rsp), %r9
movq %r13, %rdx
leaq 0x230(%rsp), %rcx
leaq 0x220(%rsp), %r8
callq 0x10eac
fldt 0x40(%rsp)
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
movq %r14, %r13
callq 0x42c0
leaq 0xf4ef(%rip), %rsi      # 0x14148
movl $0x12, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0x80(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x80(%rsp), %r9
leaq 0x190(%rsp), %rdx
leaq 0x1b0(%rsp), %rcx
leaq 0x1a0(%rsp), %r8
callq 0x10eac
fldt 0x40(%rsp)
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x42c0
leaq 0xf494(%rip), %rsi      # 0x1415b
movl $0x13, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0x80(%rsp)
leaq 0x40(%rsp), %r15
leaq 0x140(%rsp), %rsi
leaq 0x80(%rsp), %r14
movq %r15, %rdi
leaq 0x150(%rsp), %rdx
leaq 0x170(%rsp), %rcx
leaq 0x160(%rsp), %r8
movq %r14, %r9
callq 0x10eac
fldt 0x40(%rsp)
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x42c0
movq %r12, (%r14)
leaq 0x90(%rsp), %r14
fld1
fld %st(0)
fstpt 0x90(%rsp)
leaq 0xa0(%rsp), %r13
fldz
fld %st(0)
fstpt 0xa0(%rsp)
leaq 0xb0(%rsp), %rbp
fld %st(1)
fstpt 0xb0(%rsp)
movl $0x4, %eax
movq %rax, (%r15)
fld %st(1)
fstpt 0x50(%rsp)
fld %st(0)
fstpt 0x60(%rsp)
fld %st(1)
fstpt 0x70(%rsp)
leaq 0x1d0(%rsp), %r15
movl $0x8, %eax
movq %rax, -0x10(%r15)
fld %st(1)
fstpt 0x1d0(%rsp)
fld %st(0)
fstpt 0x1e0(%rsp)
fld %st(1)
fstpt 0x1f0(%rsp)
leaq 0x110(%rsp), %rcx
movl $0xc, %eax
movq %rax, -0x10(%rcx)
fld %st(1)
fstpt 0x110(%rsp)
fstpt 0x120(%rsp)
fstpt 0x130(%rsp)
leaq 0xf38c(%rip), %rsi      # 0x1416f
movl $0x13, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0xc0(%rsp)
leaq 0x80(%rsp), %rdi
leaq 0xc0(%rsp), %r8
movq %r14, %rsi
movq %rbp, %rdx
movq %r13, %rcx
callq 0x11030
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
leaq 0xf443(%rip), %r14      # 0x14274
movq %r14, %rsi
callq 0x42c0
leaq 0xf343(%rip), %rsi      # 0x14183
movl $0x13, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0xc0(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0xc0(%rsp), %r8
leaq 0x50(%rsp), %rsi
leaq 0x70(%rsp), %rdx
leaq 0x60(%rsp), %rcx
callq 0x11030
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x42c0
leaq 0xf2fe(%rip), %rsi      # 0x14197
movl $0x13, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0xc0(%rsp)
leaq 0x1c0(%rsp), %rdi
leaq 0xc0(%rsp), %r8
movq %r15, %rsi
leaq 0x1f0(%rsp), %rdx
leaq 0x1e0(%rsp), %rcx
callq 0x11030
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x42c0
leaq 0xf2b2(%rip), %rsi      # 0x141ab
movl $0x14, %edx
movq %rbx, %rdi
callq 0x42c0
fldz
fstpt 0xc0(%rsp)
leaq 0x100(%rsp), %rdi
leaq 0xc0(%rsp), %rbp
leaq 0x110(%rsp), %rsi
leaq 0x130(%rsp), %rdx
leaq 0x120(%rsp), %rcx
movq %rbp, %r8
callq 0x11030
fstpt (%rsp)
movq %rbx, %rdi
callq 0x4120
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x42c0
movq %r12, (%rbp)
movl $0x8, %eax
leaq (%rax,%rbp), %rcx
movq %rcx, 0x20(%rsp)
movq %r12, 0x8(%rbp)
movq %r12, 0x10(%rbp)
leaq 0xd8(%rsp), %rdx
xorl %ecx, %ecx
movq %rcx, (%rdx)
movq %r12, 0x8(%rdx)
leaq 0xe8(%rsp), %r13
movq %r12, (%r13)
movq %r12, 0x8(%r13)
leaq 0x2f0(%rsp), %r15
movl $0x4, %ecx
movq %rcx, (%r15)
leaq (%r15,%rax), %rcx
movq %rcx, 0x28(%rsp)
movq %r12, 0x8(%r15)
movq %r12, 0x10(%r15)
leaq 0x308(%rsp), %rdx
movl $0x0, %ecx
movq %rcx, (%rdx)
movq %r12, 0x8(%rdx)
leaq 0x318(%rsp), %rdx
movq %r12, (%rdx)
movq %r12, 0x8(%rdx)
leaq 0x2b8(%rsp), %rsi
movq %rax, (%rsi)
addq %rsi, %rax
movq %rax, 0x30(%rsp)
movl $0x8, %edx
movq %r12, 0x8(%rsi)
movq %r12, 0x10(%rsi)
leaq 0x2d0(%rsp), %rax
movq %rcx, (%rax)
xorl %ecx, %ecx
movq %r12, 0x8(%rax)
leaq 0x2e0(%rsp), %rax
movq %r12, (%rax)
movq %r12, 0x8(%rax)
leaq 0x280(%rsp), %rsi
movl $0xc, %eax
movq %rax, (%rsi)
addq %rsi, %rdx
movq %rdx, 0x38(%rsp)
movq %r12, 0x8(%rsi)
movq %r12, 0x10(%rsi)
leaq 0x298(%rsp), %rax
movq %rcx, (%rax)
movq %r12, 0x8(%rax)
leaq 0x2a8(%rsp), %rax
movq %r12, (%rax)
movq %r12, 0x8(%rax)
leaq 0xf162(%rip), %rsi      # 0x141c0
movl $0x10, %edx
movq %rbx, %rdi
callq 0x42c0
leaq 0x10(%rsp), %r14
xorl %eax, %eax
movq %rax, (%r14)
movq %r12, 0x8(%r14)
movq %rbp, %rdi
movq 0x20(%rsp), %rsi
movq %r13, %rdx
leaq 0xd8(%rsp), %rcx
movq %r14, %r8
callq 0x11174
movq %rax, (%r14)
movq %rdx, 0x8(%r14)
leaq 0x10(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x55ea
movl $0x1, %edx
movq %rax, %rdi
leaq 0xf1ba(%rip), %r13      # 0x14274
movq %r13, %rsi
callq 0x42c0
leaq 0xf108(%rip), %rsi      # 0x141d1
movl $0x10, %edx
movq %rbx, %rdi
callq 0x42c0
xorl %eax, %eax
movq %rax, (%r14)
xorl %ebp, %ebp
movq %r12, 0x8(%r14)
leaq 0x10(%rsp), %r14
movq %r15, %rdi
movq 0x28(%rsp), %rsi
leaq 0x318(%rsp), %rdx
leaq 0x308(%rsp), %rcx
movq %r14, %r8
callq 0x11174
movq %rax, (%r14)
movq %rdx, 0x8(%r14)
leaq 0x10(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x55ea
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x42c0
leaq 0xf0ae(%rip), %rsi      # 0x141e2
movl $0x10, %edx
movq %rbx, %rdi
callq 0x42c0
movq %rbp, (%r14)
movq %r12, 0x8(%r14)
leaq 0x10(%rsp), %r14
leaq 0x2b8(%rsp), %rdi
movq 0x30(%rsp), %rsi
leaq 0x2e0(%rsp), %rdx
leaq 0x2d0(%rsp), %rcx
movq %r14, %r8
callq 0x11174
movq %rax, (%r14)
movq %rdx, 0x8(%r14)
leaq 0x10(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x55ea
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x42c0
leaq 0xf053(%rip), %rsi      # 0x141f3
movl $0x11, %edx
movq %rbx, %rdi
callq 0x42c0
movq %rbp, (%r14)
movq %r12, 0x8(%r14)
leaq 0x10(%rsp), %r14
leaq 0x280(%rsp), %rdi
movq 0x38(%rsp), %rsi
leaq 0x2a8(%rsp), %rdx
leaq 0x298(%rsp), %rcx
movq %r14, %r8
callq 0x11174
movq %rax, (%r14)
movq %rdx, 0x8(%r14)
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x55ea
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x42c0
movb $0x1, %al
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq