// File: hirakuni45[P]input_class/./input.hpp
// Function: float utils::basic_input<utils::def_chainp>::real_<float>()
T real_() noexcept
		{
			struct real_t {
				uint32_t	a;
				uint32_t	b;
				uint32_t	c;
				bool		sign;
				bool		p;
				bool		ovf;

				real_t() : a(0), b(0), c(1), sign(false), p(false), ovf(false) { }

				void set_sign(bool sig = true) {
					sign = sig;
				}

				void add(char ch)
				{
					if(c >= (0xffff'ffff / 10)) {
						if(!p) ovf = true;
					} else {
						a *= 10;
						a += static_cast<uint32_t>(ch - '0');
						c *= 10;
					}
				}

				void point() {
					b = a;
					a = 0;
					c = 1;
					p = true;
				}

				T get() const {
					if(p) {
						T tmp = static_cast<T>(b) + static_cast<T>(a) / static_cast<T>(c);
						if(sign) return -tmp;
						return tmp;
					} else {
						T tmp = static_cast<T>(a);
						if(sign) return -tmp;
						else return tmp;
					}				
				}
			};

			real_t	base;
			real_t	exp;
			bool expf = false;
			char ch;
			while((ch = inp_()) != 0) {
				if(ch == '+') {
					if(expf) {
						if(exp.a != 0) break; 
						exp.set_sign(false);
					} else {
						if(base.a != 0) break;
						base.set_sign(false);
					}
				} else if(ch == '-') {
					if(expf) {
						if(exp.a != 0) break; 
						exp.set_sign();
					} else {
						if(base.a != 0) break;
						base.set_sign();
					}
				} else if(ch >= '0' && ch <= '9') {
					if(expf) {
						exp.add(ch);
					} else { 
						base.add(ch);
					}
				} else if(ch == '.') {
					if(expf) {
						if(exp.p) break;
						exp.point();
					} else {
						if(base.p) break;
						base.point();
					}
				} else if(ch == 'e' || ch == 'E') {
					if(expf) break;
					expf = true;
				} else {
					break;
				}
			}

			if(base.ovf || exp.ovf) {
				ovf_ = true;
			}

			if(expf) {
				return base.get() * pow(static_cast<T>(10), exp.get());
			} else {
				return base.get();
			}
		}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x58(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x28(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x17ea0
jmp 0x17c4f
leaq 0x38(%rsp), %rdi
callq 0x17ea0
jmp 0x17c5b
movb $0x0, 0x37(%rsp)
movq 0x28(%rsp), %rdi
addq $0x8, %rdi
callq 0x17120
movb %al, 0x27(%rsp)
jmp 0x17c74
movb 0x27(%rsp), %al
movb %al, 0x36(%rsp)
movsbl %al, %eax
cmpl $0x0, %eax
je 0x17de1
movsbl 0x36(%rsp), %eax
cmpl $0x2b, %eax
jne 0x17cd6
testb $0x1, 0x37(%rsp)
je 0x17cb5
cmpl $0x0, 0x38(%rsp)
je 0x17ca5
jmp 0x17de1
leaq 0x38(%rsp), %rdi
xorl %esi, %esi
callq 0x17ed0
jmp 0x17cb3
jmp 0x17cd1
cmpl $0x0, 0x48(%rsp)
je 0x17cc1
jmp 0x17de1
leaq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x17ed0
jmp 0x17ccf
jmp 0x17cd1
jmp 0x17ddc
movsbl 0x36(%rsp), %eax
cmpl $0x2d, %eax
jne 0x17d2a
testb $0x1, 0x37(%rsp)
je 0x17d06
cmpl $0x0, 0x38(%rsp)
je 0x17cf3
jmp 0x17de1
leaq 0x38(%rsp), %rdi
movl $0x1, %esi
callq 0x17ed0
jmp 0x17d04
jmp 0x17d25
cmpl $0x0, 0x48(%rsp)
je 0x17d12
jmp 0x17de1
leaq 0x48(%rsp), %rdi
movl $0x1, %esi
callq 0x17ed0
jmp 0x17d23
jmp 0x17d25
jmp 0x17dda
movsbl 0x36(%rsp), %eax
cmpl $0x30, %eax
jl 0x17d6d
movsbl 0x36(%rsp), %eax
cmpl $0x39, %eax
jg 0x17d6d
testb $0x1, 0x37(%rsp)
je 0x17d58
movsbl 0x36(%rsp), %esi
leaq 0x38(%rsp), %rdi
callq 0x17ef0
jmp 0x17d56
jmp 0x17d6b
movsbl 0x36(%rsp), %esi
leaq 0x48(%rsp), %rdi
callq 0x17ef0
jmp 0x17d69
jmp 0x17d6b
jmp 0x17dd8
movsbl 0x36(%rsp), %eax
cmpl $0x2e, %eax
jne 0x17dae
testb $0x1, 0x37(%rsp)
je 0x17d95
testb $0x1, 0x45(%rsp)
je 0x17d87
jmp 0x17de1
leaq 0x38(%rsp), %rdi
callq 0x17f50
jmp 0x17d93
jmp 0x17dac
testb $0x1, 0x55(%rsp)
je 0x17d9e
jmp 0x17de1
leaq 0x48(%rsp), %rdi
callq 0x17f50
jmp 0x17daa
jmp 0x17dac
jmp 0x17dd6
movsbl 0x36(%rsp), %eax
cmpl $0x65, %eax
je 0x17dc2
movsbl 0x36(%rsp), %eax
cmpl $0x45, %eax
jne 0x17dd2
testb $0x1, 0x37(%rsp)
je 0x17dcb
jmp 0x17de1
movb $0x1, 0x37(%rsp)
jmp 0x17dd4
jmp 0x17de1
jmp 0x17dd6
jmp 0x17dd8
jmp 0x17dda
jmp 0x17ddc
jmp 0x17c60
testb $0x1, 0x56(%rsp)
jne 0x17def
testb $0x1, 0x46(%rsp)
je 0x17df8
movq 0x28(%rsp), %rax
movb $0x1, 0x1b(%rax)
testb $0x1, 0x37(%rsp)
je 0x17e63
leaq 0x48(%rsp), %rdi
callq 0x17f80
movss %xmm0, 0x20(%rsp)
jmp 0x17e11
movss 0x20(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
leaq 0x38(%rsp), %rdi
callq 0x17f80
movss %xmm0, 0x1c(%rsp)
jmp 0x17e33
movss 0x1c(%rsp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x34f3(%rip), %xmm0     # 0x1b338
callq 0x5590
movaps %xmm0, %xmm1
movsd 0x10(%rsp), %xmm0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x64(%rsp)
jmp 0x17e81
leaq 0x48(%rsp), %rdi
callq 0x17f80
movss %xmm0, 0xc(%rsp)
jmp 0x17e75
movss 0xc(%rsp), %xmm0
movss %xmm0, 0x64(%rsp)
movss 0x64(%rsp), %xmm0
addq $0x68, %rsp
retq
movq %rax, %rdi
callq 0xb250
nopw %cs:(%rax,%rax)
nop