рдореИрдВ рдкрд╛рдардХреЛрдВ рдХреЛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЯреНрд░рд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдиреБрд╡рд╛рдж рдкреБрд╕реНрддрдХ рдореЗрдВ рдорд┐рд▓реА рдереА рдЬрд┐рд╕рдореЗрдВ рдЙрди рджреВрд░рд┐рдпреЛрдВ рдореЗрдВ рдРрд╕реЗ рдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ рдЕрднреА рддрдХ рди рдХреЗрд╡рд▓ рдмрд╛рдЗрдЯ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕реНрдЯреИрдХ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд░рд╛рд╡рдирд╛ рд╣реИ, рдФрд░ рдорд╣рд╛рди рджрд┐рдХреНрдЬрд╕реНрддреНрд░ рдиреЗ рдЕрднреА рддрдХ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд╢рд╛рдк рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реИ GOTO (sic, рдЕрдкрд░рдХреЗрд╕ рдореЗрдВ)ред
рдореБрдЭреЗ рдЗрд╕рдХреА рд╕рд░рд▓рддрд╛ рдФрд░ рдХреГрдкрд╛ рд╕реЗ рдпрд╣ рдЯреНрд░рд┐рдХ рдЗрддрдиреА рдкрд╕рдВрдж рдЖрдИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд╕рд╣рд╕реНрд░рд╛рдмреНрджреА рдореЗрдВ рдореИрдВ рдЫрд╛рддреНрд░реЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдореЗрдВ рдкреНрд░рд╕рдиреНрди рдерд╛ред
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ 2030 рдореЗрдВ рдЪрдВрджреНрд░рдорд╛ рд╕реЗ рд▓реМрдЯрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдЖрдкрдХреЛ рдЕрдЪрд╛рдирдХ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЖрдкрдХрд╛ рдСрди-рдмреЛрд░реНрдб рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдЧреБрдгрди рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реИрдВрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдПрдХ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛ред
рдЗрд╕ рдХрд╣рд╛рдиреА рдореЗрдВ рдХреБрдЫ рдЦрд╛рд╕ рд╢рд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдкреЗрдВрдЯрд┐рдпрдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╛рд░ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реБрдИрдВ, рдФрд░ рдЬрдм рдЖрдкрдХреЛ рдЪрдВрджреНрд░рдорд╛ рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛, рддрдм рддрдХ рдЖрдк рдкреВрд░реНрдг рдЖрдпрд╛рдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рдереЗред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбреНрд░рд┐рд▓ рдХрд┐рдП рдЧрдП рдереЗ рдпрд╛ рдирд╣реАрдВред
рд▓реЗрдХрд┐рди рдмрд╛рдд рд╣реИред рдЖрдкрдХреЛ рддреНрд╡рд░рд┐рдд рд░реВрдк рд╕реЗ рдЧреБрдгрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░реЗ рдФрд░ рдПрдХ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрди рдореЗрдВ рдлрд┐рдЯ рд╣реЛред
рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рд╕реНрдХреВрд▓ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ, рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдмрд╣реБрд╕реНрддрд░реАрдп рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдПрдХ рдХреЙрд▓рдо рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдЧреБрдгрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЧреБрдгрди рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЕрдЧрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдХрдо рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0 рдФрд░ 1), рдЧреБрдгрди рддрд╛рд▓рд┐рдХрд╛ рдХрдо рдФрд░ рдХреЙрд▓рдо рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЙрдирдХреА рдЧрдгрдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛ред
рдпрджрд┐, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдо рд▓рдВрдмреА рд╕рдВрдЦреНрдпрд╛ рд▓реЗрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 0 рд╕реЗ 65535 рддрдХ), рддреЛ 16-рдмрд┐рдЯ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХреЗ рд▓рд┐рдП
рдкрд░рд┐рдгрд╛рдо рд╕реАрдзреЗ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреЙрд▓рдо рдЧрд╛рдпрдм рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╢рд╛рд╕реНрддреНрд░реАрдп рдкрд╛рдЗрдерд╛рдЧреЛрд░рд╕ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 17GB (4 * 65536 * 65536) рд╣реИ, рдЕрдЧрд░ рд╣рдо рд╡рд┐рдХрд░реНрдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдорд░реВрдкрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдзрд╛ рд▓рдЧрднрдЧ 8.5GB рд╣реИред
рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдмреАрдЬрдЧрдгрд┐рдд рдХреЛ рдпрд╛рдж рд░рдЦреЗрдВред
(1)(2)(1) рд╕реЗ рдШрдЯрд╛рдПрдБ
( 1)рдФрд░ рдЖрдЧреЗ
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡рд░реНрдЧ рд╕рд░рдгреА рдореЗрдВ рд╡рд░реНрдЧреЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реЛрдиреЗ, рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ
a * b = (sqr [a + b] - sqr [a - b]) / 4
(*)8 * рдЯреЗрдмрд▓ (65535 + 65535) рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 8.4MB рд╣реИ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
8 рдмрд╛рдЗрдЯреНрд╕ рдХреА рддрд╛рд▓рд┐рдХрд╛ рддрддреНрд╡ рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрддрдо рдП рдФрд░ рдмреА рдореЗрдВ, рдЙрдирдХреЗ 4 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдпреЛрдЧ рдХрд╛ рд╡рд░реНрдЧ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ - 2 рдмрд┐рдЯ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред
рдЖрдЧреЗ, рдореИрдВ рдХреБрдЫ рд╕реБрдзрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдБрдЧрд╛, рдЬреЛ рдкреБрд╕реНрддрдХ рдореЗрдВ рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЦреБрдж рдЗрд╕рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ рдЬрдм рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣ рдиреЛрдЯ рд▓рд┐рдЦ рд░рд╣рд╛ рдерд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдо рд╡рд░реНрдЧ рдХреЗ рджреЛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рд╣рдореЗрд╢рд╛ 00 рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╖рдо рд╡рд░реНрдЧ рд╣рдореЗрд╢рд╛ 01 рд╣реЛрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓рд┐рдП, рдЙрдирдХреЗ рдпреЛрдЧ рдФрд░ рдЕрдВрддрд░ рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╛рдирддрд╛ рд╣реЛрддреА рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╕реВрддреНрд░
(*) рдореЗрдВ, рдХреЛрд╖реНрдардХ рдореЗрдВ рдШрдЯрд╛рд╡
рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣рд╛рдЗрдлрд╝рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ,
рджреЛ рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗред рдЗрд╕рд▓рд┐рдП, рд╡рд░реНрдЧреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА
рдЖрдк рджрд╛рдИрдВ рдУрд░ рджреЛ рдмрд┐рдЯреНрд╕ рдХреЛ рдПрдбрд╡рд╛рдВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдзреА рдореЗрдореЛрд░реА рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ
a * b = sqr4 [a + b] - sqr4 [a - b]
(**)рдЬрд╣рд╛рдВ sqr4 рд╡рд░реНрдЧреЛрдВ рдХреА рд╕рдВрд╢реЛрдзрд┐рдд рддрд╛рд▓рд┐рдХрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рд▓рдЧрднрдЧ 4.2 рдПрдордмреА рд╣реИред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реБрдЖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╛рда рд╢рд╛рдорд┐рд▓ рд╣реИред
function create_multiplier(N)
рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдбрд┐рдЬрд┐рдЯ рдЖрдХрд╛рд░ рд╣реЛрдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ рдЙрди рддрдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдмрд╛рдЗрдЯ рдЖрдХрд╛рд░ рдХрд╛ рд╣реИред 1-рдмрд╛рдЗрдЯ рдЕрдВрдХреЛрдВ рдХреЗ рд╕рд╛рде, рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЖрдХрд╛рд░ рдХреЗрд╡рд▓ 1022 рдмрд╛рдЗрдЯреНрд╕ рд╣реИ, рдЬреЛ рдЗрд╕ рдЪрд╛рд▓ рдХреЛ 8-рдмрд┐рдЯ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЧреБрдгрди рдирд╣реАрдВ рд╣реИред
рдореИрдВ рдЗрд╕ рдиреЛрдЯ рдХреЗ рд╕рднреА рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрдзрд╛рд░реЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ред