// File: /workspace/github_cpp_makefile_star2_O2/Mariotti94[P]BigFloat/BigFloat.cc
// Function: BigFloat::Exp[abi:cxx11]() const
std::string BigFloat::Exp() const
{
    std::stringstream out;
    if(error) {
        out << "nan";
        return out.str();
    }

    int check = BigFloat::CompareNum(*this, BigFloat(1));
    if(check == 0) {
        out << sign;
        out << "1e+0";
    }
    if(check == 1) {
        out << sign;
        int i = number.size() - 1;
        out << number[i];
        i--;
        if(i > 0) {
            out << '.';
            for(; (i >= (int)number.size() - 6) && (i >= 0); --i) {
                out << number[i];
            }
        }
        out << "e+" << Ints() - 1;
    }
    if(check == 2) {
        int exp = 0;
        int count = number.size() - 1;
        while(number[count] == '0' && count > 0) {
            count--;
            exp++;
        }
        if(count == 0)
            if(number[count] == '0')
                out << "+0";
            else
                out << sign << number[count] << "e-" << exp;
        else {
            out << sign << number[count] << '.';
            for(int i = count - 1; (i >= (int)count - 5) && (i >= 0); --i) {
                out << number[i];
            }
            out << "e-" << exp;
        }
    }
    return out.str();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x90(%rsp), %rdi
callq 0x20b0
cmpb $0x1, 0x5c(%r14)
jne 0x698e
leaq 0xa0(%rsp), %rdi
leaq 0x270e(%rip), %rsi      # 0x9082
callq 0x2120
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21c0
jmp 0x6bea
leaq 0x10(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x2556
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x2edc
movl %eax, %ebp
leaq 0x10(%rsp), %rdi
callq 0x253c
cmpl $0x2, %ebp
je 0x6a81
cmpl $0x1, %ebp
je 0x69f2
testl %ebp, %ebp
jne 0x6bda
leaq 0xa0(%rsp), %r15
movsbl (%r14), %esi
movq %r15, %rdi
callq 0x2150
leaq 0x26a6(%rip), %rsi      # 0x908b
movq %r15, %rdi
callq 0x2120
jmp 0x6bda
leaq 0xa0(%rsp), %r15
movsbl (%r14), %esi
movq %r15, %rdi
callq 0x2150
leaq 0x8(%r14), %r12
movq %r12, %rdi
callq 0x298e
movq %rax, %r13
decl %eax
movslq %eax, %rsi
leaq 0x18(%r14), %rbp
movq %rbp, %rdi
callq 0x895c
movsbl (%rax), %esi
movq %r15, %rdi
callq 0x2150
addl $-0x2, %r13d
testl %r13d, %r13d
jle 0x6afd
pushq $0x2e
popq %rsi
movq %r15, %rdi
callq 0x2150
movq %r12, %rdi
callq 0x298e
testl %r13d, %r13d
js 0x6afd
addl $-0x6, %eax
cmpl %eax, %r13d
jl 0x6afd
movl %r13d, %esi
movq %rbp, %rdi
callq 0x895c
movsbl (%rax), %esi
movq %r15, %rdi
callq 0x2150
decl %r13d
jmp 0x6a49
movq %rbx, (%rsp)
leaq 0x8(%r14), %rdi
callq 0x298e
leaq 0x18(%r14), %r12
movq %rax, 0x8(%rsp)
leal -0x1(%rax), %r13d
movslq %r13d, %rbp
xorl %r15d, %r15d
leal (%r15,%r13), %ebx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x895c
decl %r15d
decq %rbp
testl %ebx, %ebx
jle 0x6abf
cmpb $0x30, (%rax)
je 0x6aa1
incq %rbp
movq 0x8(%rsp), %rax
addl %r15d, %eax
jne 0x6b27
movq %r12, %rdi
movq %rbp, %rsi
callq 0x895c
cmpb $0x30, (%rax)
leaq 0xa0(%rsp), %rdi
movq (%rsp), %rbx
jne 0x6b98
leaq 0x259a(%rip), %rsi      # 0x908d
callq 0x2120
jmp 0x6bda
leaq 0x258c(%rip), %rsi      # 0x9090
movq %r15, %rdi
callq 0x2120
movq %rax, %r15
movq %r14, %rdi
callq 0x26bc
leal -0x1(%rax), %esi
movq %r15, %rdi
callq 0x21f0
jmp 0x6bda
leaq 0xa0(%rsp), %r13
movsbl (%r14), %esi
movq %r13, %rdi
callq 0x2150
movq (%rsp), %rbx
movq %rax, %r14
movq %r12, %rdi
movq %rbp, %rsi
callq 0x895c
movsbl (%rax), %esi
movq %r14, %rdi
callq 0x2150
pushq $0x2e
popq %rsi
movq %rax, %rdi
callq 0x2150
movq 0x8(%rsp), %rax
leal (%rax,%r15), %ebp
decl %ebp
leal (%rax,%r15), %r14d
addl $-0x5, %r14d
cmpl %r14d, %ebp
jl 0x6bbd
testl %ebp, %ebp
js 0x6bbd
movl %ebp, %esi
movq %r12, %rdi
callq 0x895c
movsbl (%rax), %esi
movq %r13, %rdi
callq 0x2150
decl %ebp
jmp 0x6b76
movsbl (%r14), %esi
callq 0x2150
movq %rax, %r14
movq %r12, %rdi
movq %rbp, %rsi
callq 0x895c
movsbl (%rax), %esi
movq %r14, %rdi
callq 0x2150
movq %rax, %r13
leaq 0x24cf(%rip), %rsi      # 0x9093
movq %r13, %rdi
callq 0x2120
notl %r15d
movq %rax, %rdi
movl %r15d, %esi
callq 0x21f0
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21c0
leaq 0x90(%rsp), %rdi
callq 0x20d0
movq %rbx, %rax
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6c27
jmp 0x6c27
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x253c
jmp 0x6c2a
jmp 0x6c27
jmp 0x6c27
jmp 0x6c27
jmp 0x6c27
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x20d0
movq %rbx, %rdi
callq 0x2200
nop