// File: /workspace/github_cpp_makefile_star2_O2/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 $0x308, %rsp            # imm = 0x308
movq %rdi, %rbx
pushq $0x1
popq %r14
leaq 0x1e0(%rsp), %r15
movq %r14, (%r15)
fld1
fld %st(0)
fstpt 0x1f0(%rsp)
fldz
fld %st(0)
fstpt 0x200(%rsp)
fld %st(1)
fstpt 0x210(%rsp)
pushq $0x4
popq %rax
leaq 0x1a0(%rsp), %r13
movq %rax, (%r13)
fld %st(1)
fstpt 0x1b0(%rsp)
fld %st(0)
fstpt 0x1c0(%rsp)
fld %st(1)
fstpt 0x1d0(%rsp)
pushq $0x8
popq %rax
leaq 0x160(%rsp), %r12
movq %rax, (%r12)
fld %st(1)
fstpt 0x170(%rsp)
fld %st(0)
fstpt 0x180(%rsp)
fld %st(1)
fstpt 0x190(%rsp)
pushq $0xc
popq %rax
leaq 0xa0(%rsp), %rcx
movq %rax, (%rcx)
fld %st(1)
fstpt 0xb0(%rsp)
fstpt 0xc0(%rsp)
fstpt 0xd0(%rsp)
leaq 0xd794(%rip), %rsi      # 0x12122
callq 0x4280
movq %rax, %rbp
leaq 0x20(%rsp), %rdi
movq %r15, %rsi
callq 0x505e
fldt 0x20(%rsp)
fstpt (%rsp)
movq %rbp, %rdi
callq 0x4150
leaq 0xd8bb(%rip), %r15      # 0x12274
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0xd76a(%rip), %rsi      # 0x12135
movq %rbx, %rdi
callq 0x4280
movq %rax, %rbp
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x505e
fldt 0x20(%rsp)
fstpt (%rsp)
movq %rbp, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0xd744(%rip), %rsi      # 0x12148
movq %rbx, %rdi
callq 0x4280
movq %rax, %r13
leaq 0x20(%rsp), %rdi
movq %r12, %rsi
callq 0x505e
fldt 0x20(%rsp)
fstpt (%rsp)
movq %r13, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0xd71e(%rip), %rsi      # 0x1215b
movq %rbx, %rdi
callq 0x4280
movq %rax, %r12
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x505e
fldt 0x20(%rsp)
fstpt (%rsp)
movq %r12, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
movq %r14, (%r13)
fld1
fld %st(0)
fstpt 0x30(%rsp)
fldz
fld %st(0)
fstpt 0x40(%rsp)
fld %st(1)
fstpt 0x50(%rsp)
leaq 0x120(%rsp), %r13
pushq $0x4
popq %rax
movq %rax, (%r13)
fld %st(1)
fstpt 0x130(%rsp)
fld %st(0)
fstpt 0x140(%rsp)
fld %st(1)
fstpt 0x150(%rsp)
leaq 0xe0(%rsp), %r12
pushq $0x8
popq %rax
movq %rax, (%r12)
fld %st(1)
fstpt 0xf0(%rsp)
fld %st(0)
fstpt 0x100(%rsp)
fld %st(1)
fstpt 0x110(%rsp)
leaq 0x60(%rsp), %rcx
pushq $0xc
popq %rax
movq %rax, (%rcx)
fld %st(1)
fstpt 0x70(%rsp)
fstpt 0x80(%rsp)
fstpt 0x90(%rsp)
leaq 0xd664(%rip), %rsi      # 0x1216f
movq %rbx, %rdi
callq 0x4280
movq %rax, %rbp
leaq 0x20(%rsp), %rdi
callq 0x5078
fstpt (%rsp)
movq %rbp, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0xd646(%rip), %rsi      # 0x12183
movq %rbx, %rdi
callq 0x4280
movq %rax, %rbp
movq %r13, %rdi
callq 0x5078
fstpt (%rsp)
movq %rbp, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0xd62a(%rip), %rsi      # 0x12197
movq %rbx, %rdi
callq 0x4280
movq %rax, %r13
movq %r12, %rdi
callq 0x5078
fstpt (%rsp)
movq %r13, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0xd60e(%rip), %rsi      # 0x121ab
movq %rbx, %rdi
callq 0x4280
movq %rax, %r12
leaq 0x60(%rsp), %rdi
callq 0x5078
fstpt (%rsp)
movq %r12, %rdi
callq 0x4150
movq %rax, %rdi
movq %r15, %rsi
callq 0x4280
leaq 0x2d0(%rsp), %rbp
movq %r14, (%rbp)
movq %r14, 0x8(%rbp)
movq %r14, 0x10(%rbp)
andq $0x0, 0x18(%rbp)
movq %r14, 0x20(%rbp)
movq %r14, 0x28(%rbp)
leaq 0x298(%rsp), %r13
pushq $0x4
popq %rax
movq %rax, (%r13)
movq %r14, 0x8(%r13)
movq %r14, 0x10(%r13)
andq $0x0, 0x18(%r13)
movq %r14, 0x30(%rbp)
movq %r14, 0x20(%r13)
movq %r14, 0x28(%r13)
movq %r14, 0x30(%r13)
leaq 0x260(%rsp), %r12
pushq $0x8
popq %rax
movq %rax, (%r12)
movq %r14, 0x8(%r12)
movq %r14, 0x10(%r12)
andq $0x0, 0x18(%r12)
movq %r14, 0x20(%r12)
movq %r14, 0x28(%r12)
leaq 0x228(%rsp), %r15
pushq $0xc
popq %rax
movq %rax, (%r15)
movq %r14, 0x8(%r15)
movq %r14, 0x10(%r15)
andq $0x0, 0x18(%r15)
movq %r14, 0x30(%r12)
movq %r14, 0x20(%r15)
movq %r14, 0x28(%r15)
movq %r14, 0x30(%r15)
leaq 0xd54f(%rip), %rsi      # 0x121c0
movq %rbx, %rdi
callq 0x4280
movq %rax, %r14
movq %rbp, %rdi
callq 0x50b2
leaq 0x10(%rsp), %rbp
movq %rax, (%rbp)
movq %rdx, 0x8(%rbp)
movq %r14, %rdi
movq %rbp, %rsi
callq 0x5089
movq %rax, %rdi
leaq 0xd5ce(%rip), %rsi      # 0x12274
callq 0x4280
leaq 0xd51f(%rip), %rsi      # 0x121d1
movq %rbx, %rdi
callq 0x4280
movq %rax, %r14
movq %r13, %rdi
callq 0x50b2
movq %rax, (%rbp)
movq %rdx, 0x8(%rbp)
leaq 0x10(%rsp), %r13
movq %r14, %rdi
movq %r13, %rsi
callq 0x5089
movq %rax, %rdi
leaq 0xd58d(%rip), %rbp      # 0x12274
movq %rbp, %rsi
callq 0x4280
leaq 0xd4ec(%rip), %rsi      # 0x121e2
movq %rbx, %rdi
callq 0x4280
movq %rax, %r14
movq %r12, %rdi
callq 0x50b2
movq %rax, (%r13)
movq %rdx, 0x8(%r13)
leaq 0x10(%rsp), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x5089
movq %rax, %rdi
movq %rbp, %rsi
callq 0x4280
leaq 0xd4c0(%rip), %rsi      # 0x121f3
movq %rbx, %rdi
callq 0x4280
movq %rax, %rbx
movq %r15, %rdi
callq 0x50b2
movq %rax, (%r12)
movq %rdx, 0x8(%r12)
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x5089
movq %rax, %rdi
movq %rbp, %rsi
callq 0x4280
movb $0x1, %al
addq $0x308, %rsp            # imm = 0x308
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop