// File: aisthesis[P]realnumber/tst/real_number_test.cpp
// Function: arithmetic_operators::multiplication::test_method()
BOOST_AUTO_TEST_CASE(multiplication) {
		BOOST_CHECK(one_rn * two_rn == two_rn);
		BOOST_CHECK(big_num_rn * zero_rn == zero_rn);
		BOOST_CHECK(two_rn * two_rn == RealNumber("4.0"));
		BOOST_CHECK(big_num_rn * small_num_rn < big_num_rn);
		BOOST_CHECK(two_rn < two_rn * RealNumber("1.01"));
		BOOST_CHECK(two_rn * very_small_num_rn > very_small_num_rn);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4e0, %rsp            # imm = 0x4E0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x380(%rbp)
movq 0x12f47(%rip), %rax     # 0x24298
movq %rax, -0x3b0(%rbp)
leaq 0xaca5(%rip), %rsi      # 0x1c004
leaq -0x18(%rbp), %rdi
movq %rdi, -0x3a8(%rbp)
movl $0x18, %edx
callq 0x15d80
leaq -0x28(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x15db0
movq -0x3b0(%rbp), %rdi
movq -0x3a8(%rbp), %rsi
movq -0x3a0(%rbp), %rcx
movl $0xc5, %edx
callq 0x3470
movq -0x380(%rbp), %rdx
movq %rdx, %rsi
addq $0x108, %rsi            # imm = 0x108
addq $0x110, %rdx            # imm = 0x110
movq %rdx, -0x390(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x398(%rbp)
callq 0x19fb0
movq -0x398(%rbp), %rdi
movq -0x390(%rbp), %rsi
callq 0x19ce0
movb %al, -0x381(%rbp)
jmp 0x113ed
movb -0x381(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x40(%rbp), %rdi
callq 0x162c0
jmp 0x11404
callq 0x16040
movq %rax, -0x3b8(%rbp)
jmp 0x11412
leaq 0xb3f8(%rip), %rsi      # 0x1c811
leaq -0x88(%rbp), %rdi
movl $0x19, %edx
callq 0x15d80
jmp 0x1142c
movq -0x3b8(%rbp), %rsi
leaq -0x78(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0x16300
jmp 0x11445
leaq 0xabb8(%rip), %rsi      # 0x1c004
leaq -0x98(%rbp), %rdi
movl $0x18, %edx
callq 0x15d80
jmp 0x1145f
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x40(%rbp), %rdi
leaq -0x78(%rbp), %rsi
leaq -0x98(%rbp), %rdx
movl $0xc5, %ecx
movl $0x1, %r8d
callq 0x3460
jmp 0x11490
leaq -0x78(%rbp), %rdi
callq 0x16340
leaq -0x40(%rbp), %rdi
callq 0x16360
leaq -0x48(%rbp), %rdi
callq 0x19730
callq 0x16070
testb $0x1, %al
jne 0x1134a
jmp 0x114ba
movq 0x12dd7(%rip), %rax     # 0x24298
movq %rax, -0x3e8(%rbp)
leaq 0xab35(%rip), %rsi      # 0x1c004
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
movl $0x18, %edx
callq 0x15d80
leaq -0xb8(%rbp), %rdi
movq %rdi, -0x3d8(%rbp)
callq 0x15db0
movq -0x3e8(%rbp), %rdi
movq -0x3e0(%rbp), %rsi
movq -0x3d8(%rbp), %rcx
movl $0xc6, %edx
callq 0x3470
movq -0x380(%rbp), %rdx
movq %rdx, %rsi
addq $0x118, %rsi            # imm = 0x118
addq $0x100, %rdx            # imm = 0x100
movq %rdx, -0x3c8(%rbp)
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x19fb0
movq -0x3d0(%rbp), %rdi
movq -0x3c8(%rbp), %rsi
callq 0x19ce0
movb %al, -0x3b9(%rbp)
jmp 0x11566
movb -0x3b9(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0xd0(%rbp), %rdi
callq 0x162c0
jmp 0x11580
callq 0x16040
movq %rax, -0x3f0(%rbp)
jmp 0x1158e
leaq 0xb296(%rip), %rsi      # 0x1c82b
leaq -0x108(%rbp), %rdi
movl $0x1f, %edx
callq 0x15d80
jmp 0x115a8
movq -0x3f0(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
leaq -0x108(%rbp), %rdx
callq 0x16300
jmp 0x115c4
leaq 0xaa39(%rip), %rsi      # 0x1c004
leaq -0x118(%rbp), %rdi
movl $0x18, %edx
callq 0x15d80
jmp 0x115de
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0xd0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
leaq -0x118(%rbp), %rdx
movl $0xc6, %ecx
movl $0x1, %r8d
callq 0x3460
jmp 0x11615
leaq -0xf8(%rbp), %rdi
callq 0x16340
leaq -0xd0(%rbp), %rdi
callq 0x16360
leaq -0xd8(%rbp), %rdi
callq 0x19730
callq 0x16070
testb $0x1, %al
jne 0x114ba
jmp 0x11648
movq 0x12c49(%rip), %rax     # 0x24298
movq %rax, -0x410(%rbp)
leaq 0xa9a7(%rip), %rsi      # 0x1c004
leaq -0x128(%rbp), %rdi
movq %rdi, -0x408(%rbp)
movl $0x18, %edx
callq 0x15d80
leaq -0x138(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0x15db0
movq -0x410(%rbp), %rdi
movq -0x408(%rbp), %rsi
movq -0x400(%rbp), %rcx
movl $0xc7, %edx
callq 0x3470
movq -0x380(%rbp), %rdx
addq $0x110, %rdx            # imm = 0x110
leaq -0x158(%rbp), %rdi
movq %rdx, %rsi
callq 0x19fb0
leaq -0x181(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x3430
movq -0x3f8(%rbp), %rdx
leaq 0xb166(%rip), %rsi      # 0x1c84b
leaq -0x180(%rbp), %rdi
callq 0x16160
jmp 0x116f3
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x19420
jmp 0x11708
leaq -0x158(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x19ce0
movb %al, -0x411(%rbp)
jmp 0x11723
movb -0x411(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x150(%rbp), %rdi
callq 0x162c0
jmp 0x1173d
callq 0x16040
movq %rax, -0x420(%rbp)
jmp 0x1174b
leaq 0xb0fd(%rip), %rsi      # 0x1c84f
leaq -0x1b8(%rbp), %rdi
movl $0x24, %edx
callq 0x15d80
jmp 0x11765
movq -0x420(%rbp), %rsi
leaq -0x1a8(%rbp), %rdi
leaq -0x1b8(%rbp), %rdx
callq 0x16300
jmp 0x11781
leaq 0xa87c(%rip), %rsi      # 0x1c004
leaq -0x1c8(%rbp), %rdi
movl $0x18, %edx
callq 0x15d80
jmp 0x1179b
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x150(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x1c8(%rbp), %rdx
movl $0xc7, %ecx
movl $0x1, %r8d
callq 0x3460
jmp 0x117d2
leaq -0x1a8(%rbp), %rdi
callq 0x16340
leaq -0x150(%rbp), %rdi
callq 0x16360
leaq -0x160(%rbp), %rdi
callq 0x19730
leaq -0x180(%rbp), %rdi
callq 0x3110
leaq -0x181(%rbp), %rdi
callq 0x3270
leaq -0x158(%rbp), %rdi
callq 0x19730
callq 0x16070
testb $0x1, %al
jne 0x11648
jmp 0x11829
movq 0x12a68(%rip), %rax     # 0x24298
movq %rax, -0x450(%rbp)
leaq 0xa7c6(%rip), %rsi      # 0x1c004
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x448(%rbp)
movl $0x18, %edx
callq 0x15d80
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x15db0
movq -0x450(%rbp), %rdi
movq -0x448(%rbp), %rsi
movq -0x440(%rbp), %rcx
movl $0xc8, %edx
callq 0x3470
movq -0x380(%rbp), %rdx
movq %rdx, %rsi
addq $0x118, %rsi            # imm = 0x118
movq %rsi, -0x430(%rbp)
addq $0x120, %rdx            # imm = 0x120
leaq -0x208(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0x19fb0
movq -0x438(%rbp), %rdi
movq -0x430(%rbp), %rsi
callq 0x19b50
movb %al, -0x421(%rbp)
jmp 0x118d5
movb -0x421(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x200(%rbp), %rdi
callq 0x162c0
jmp 0x118ef
callq 0x16040
movq %rax, -0x458(%rbp)
jmp 0x118fd
leaq 0xaf70(%rip), %rsi      # 0x1c874
leaq -0x238(%rbp), %rdi
movl $0x26, %edx
callq 0x15d80
jmp 0x11917
movq -0x458(%rbp), %rsi
leaq -0x228(%rbp), %rdi
leaq -0x238(%rbp), %rdx
callq 0x16300
jmp 0x11933
leaq 0xa6ca(%rip), %rsi      # 0x1c004
leaq -0x248(%rbp), %rdi
movl $0x18, %edx
callq 0x15d80
jmp 0x1194d
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x200(%rbp), %rdi
leaq -0x228(%rbp), %rsi
leaq -0x248(%rbp), %rdx
movl $0xc8, %ecx
movl $0x1, %r8d
callq 0x3460
jmp 0x11984
leaq -0x228(%rbp), %rdi
callq 0x16340
leaq -0x200(%rbp), %rdi
callq 0x16360
leaq -0x208(%rbp), %rdi
callq 0x19730
callq 0x16070
testb $0x1, %al
jne 0x11829
jmp 0x119b7
movq 0x128da(%rip), %rax     # 0x24298
movq %rax, -0x488(%rbp)
leaq 0xa638(%rip), %rsi      # 0x1c004
leaq -0x258(%rbp), %rdi
movq %rdi, -0x480(%rbp)
movl $0x18, %edx
callq 0x15d80
leaq -0x268(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x15db0
movq -0x488(%rbp), %rdi
movq -0x480(%rbp), %rsi
movq -0x478(%rbp), %rcx
movl $0xc9, %edx
callq 0x3470
movq -0x380(%rbp), %rax
addq $0x110, %rax            # imm = 0x110
movq %rax, -0x470(%rbp)
movq %rax, -0x468(%rbp)
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x3430
movq -0x460(%rbp), %rdx
leaq 0xae49(%rip), %rsi      # 0x1c89b
leaq -0x2b0(%rbp), %rdi
callq 0x16160
jmp 0x11a60
leaq -0x290(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x19420
jmp 0x11a75
movq -0x470(%rbp), %rsi
leaq -0x288(%rbp), %rdi
leaq -0x290(%rbp), %rdx
callq 0x19fb0
jmp 0x11a91
movq -0x468(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x19b50
movb %al, -0x489(%rbp)
jmp 0x11aac
movb -0x489(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x280(%rbp), %rdi
callq 0x162c0
jmp 0x11ac6
callq 0x16040
movq %rax, -0x498(%rbp)
jmp 0x11ad4
leaq 0xadc5(%rip), %rsi      # 0x1c8a0
leaq -0x2e8(%rbp), %rdi
movl $0x24, %edx
callq 0x15d80
jmp 0x11aee
movq -0x498(%rbp), %rsi
leaq -0x2d8(%rbp), %rdi
leaq -0x2e8(%rbp), %rdx
callq 0x16300
jmp 0x11b0a
leaq 0xa4f3(%rip), %rsi      # 0x1c004
leaq -0x2f8(%rbp), %rdi
movl $0x18, %edx
callq 0x15d80
jmp 0x11b24
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x280(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
leaq -0x2f8(%rbp), %rdx
movl $0xc9, %ecx
movl $0x1, %r8d
callq 0x3460
jmp 0x11b5b
leaq -0x2d8(%rbp), %rdi
callq 0x16340
leaq -0x280(%rbp), %rdi
callq 0x16360
leaq -0x288(%rbp), %rdi
callq 0x19730
leaq -0x290(%rbp), %rdi
callq 0x19730
leaq -0x2b0(%rbp), %rdi
callq 0x3110
leaq -0x2b1(%rbp), %rdi
callq 0x3270
callq 0x16070
testb $0x1, %al
jne 0x119b7
jmp 0x11bb2
movq 0x126df(%rip), %rax     # 0x24298
movq %rax, -0x4c8(%rbp)
leaq 0xa43d(%rip), %rsi      # 0x1c004
leaq -0x308(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
movl $0x18, %edx
callq 0x15d80
leaq -0x318(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x15db0
movq -0x4c8(%rbp), %rdi
movq -0x4c0(%rbp), %rsi
movq -0x4b8(%rbp), %rcx
movl $0xca, %edx
callq 0x3470
movq -0x380(%rbp), %rdx
movq %rdx, %rsi
addq $0x110, %rsi            # imm = 0x110
addq $0x128, %rdx            # imm = 0x128
movq %rdx, -0x4a8(%rbp)
leaq -0x338(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x19fb0
movq -0x4b0(%rbp), %rdi
movq -0x4a8(%rbp), %rsi
callq 0x19a30
movb %al, -0x499(%rbp)
jmp 0x11c5e
movb -0x499(%rbp), %al
movzbl %al, %esi
andl $0x1, %esi
leaq -0x330(%rbp), %rdi
callq 0x162c0
jmp 0x11c78
callq 0x16040
movq %rax, -0x4d0(%rbp)
jmp 0x11c86
leaq 0xac38(%rip), %rsi      # 0x1c8c5
leaq -0x368(%rbp), %rdi
movl $0x2e, %edx
callq 0x15d80
jmp 0x11ca0
movq -0x4d0(%rbp), %rsi
leaq -0x358(%rbp), %rdi
leaq -0x368(%rbp), %rdx
callq 0x16300
jmp 0x11cbc
leaq 0xa341(%rip), %rsi      # 0x1c004
leaq -0x378(%rbp), %rdi
movl $0x18, %edx
callq 0x15d80
jmp 0x11cd6
movq %rsp, %rax
movq $0x0, (%rax)
xorl %r9d, %r9d
movb %r9b, %al
leaq -0x330(%rbp), %rdi
leaq -0x358(%rbp), %rsi
leaq -0x378(%rbp), %rdx
movl $0xca, %ecx
movl $0x1, %r8d
callq 0x3460
jmp 0x11d0d
leaq -0x358(%rbp), %rdi
callq 0x16340
leaq -0x330(%rbp), %rdi
callq 0x16360
leaq -0x338(%rbp), %rdi
callq 0x19730
callq 0x16070
testb $0x1, %al
jne 0x11bb2
addq $0x4e0, %rsp            # imm = 0x4E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11d81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11d78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x16340
leaq -0x40(%rbp), %rdi
callq 0x16360
leaq -0x48(%rbp), %rdi
callq 0x19730
jmp 0x11fad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11dcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11dc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x16340
leaq -0xd0(%rbp), %rdi
callq 0x16360
leaq -0xd8(%rbp), %rdi
callq 0x19730
jmp 0x11fad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11e54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11e48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11e3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11e30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x16340
leaq -0x150(%rbp), %rdi
callq 0x16360
leaq -0x160(%rbp), %rdi
callq 0x19730
leaq -0x180(%rbp), %rdi
callq 0x3110
leaq -0x181(%rbp), %rdi
callq 0x3270
leaq -0x158(%rbp), %rdi
callq 0x19730
jmp 0x11fad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11eb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11ea5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x16340
leaq -0x200(%rbp), %rdi
callq 0x16360
leaq -0x208(%rbp), %rdi
callq 0x19730
jmp 0x11fad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11f53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11f47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11f3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11f2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11f23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x16340
leaq -0x280(%rbp), %rdi
callq 0x16360
leaq -0x288(%rbp), %rdi
callq 0x19730
leaq -0x290(%rbp), %rdi
callq 0x19730
leaq -0x2b0(%rbp), %rdi
callq 0x3110
leaq -0x2b1(%rbp), %rdi
callq 0x3270
jmp 0x11fad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11fa1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x11f95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x16340
leaq -0x330(%rbp), %rdi
callq 0x16360
leaq -0x338(%rbp), %rdi
callq 0x19730
movq -0x50(%rbp), %rdi
callq 0x3420
nopw %cs:(%rax,%rax)