{"id":324883,"date":"2021-06-14T15:00:22","date_gmt":"2021-06-14T15:00:22","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=324883"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=324883","title":{"rendered":"\u041a\u043e\u0440\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u043d\u0443\u0436\u043d\u044b, \u043a\u043e\u0440\u043d\u0438 \u0440\u0430\u0437\u043d\u044b\u0435 \u0432\u0430\u0436\u043d\u044b"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f<\/h4>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u043e\u0442\u043a\u043b\u0438\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"https:\/\/habr.com\/ru\/post\/515018\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C\/C++<\/a> \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043d\u044f \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u0441 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u043e\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435; \u043a\u043e\u043f\u0438\u043b\u043a\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c <a href=\"https:\/\/habr.com\/ru\/post\/515018\/#comment_22024188\" rel=\"noopener noreferrer nofollow\">sqrxi32 \u043e\u0442 @Sdima1357<\/a> \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 1, \u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u00ab_i32\u00bb. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_i32\u00bb \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u00ab\u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e\u00bb \u2014 \u043d\u0430 \u0432\u0441\u0451\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 [ 0 .. 0xFFFFFFFF ], \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p> <em>\u041f\u0440\u0438\u043c\u0435\u0440 1: \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043d\u044f \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u0441 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e.<\/em><\/p>\n<pre><code class=\"cpp\">uint16_t sqrxi32( uint32_t y ) { \tif ( y == 1 ) \t\treturn 1;  \tuint32_t xh = y &gt; 0x10000ul ? 0x10000ul : y; \tuint32_t xl = 0; \tuint32_t xc;  \tfor ( int k = 0; k &lt; 16; k++ ) \t{ \t\txc = ( xh + xl ) &gt;&gt; 1ul; \t\tif ( xc * xc - xc &gt;= y ) \t\t{ \t\t\txh = xc; \t\t} \t\telse \t\t{ \t\t\txl = xc; \t\t} \t} \treturn ( xh + xl ) &gt;&gt; 1ul; }<\/code><\/pre>\n<p>\u0414\u0440\u0443\u0433\u043e\u0435 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_i32\u00bb \u2014 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u00ab_i32\u00bb \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_evn\u00bb, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0443\u043b\u044e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<h4>\u041e \u0447\u0451\u043c \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442<\/h4>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u0437\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u0434\u043e\u043f\u0443\u0441\u043a\u0438<\/h4>\n<p>\u0414\u043b\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u2014 3 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 3 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u041e\u0434\u043d\u0443 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0430 (\u0444\u0430\u0439\u043b main.c)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0432 \u043c\u043e\u043d\u043e-\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b<\/p>\n<\/li>\n<li>\n<p>\u0415\u0434\u0438\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443: CubeIDE (\u043e\u043d\u0430 \u0436\u0435 Eclipce CDT)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 RELEASE \u0432 \u0441\u0440\u0435\u0434\u0435 CubeIDE<\/p>\n<\/li>\n<li>\n<p>\u0415\u0434\u0438\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430: \u00abISO C11 + gnu extensions\u00bb (-std=gnu11)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>CubeMX \u2014 default settings, +48MHz, +USART1, +HAL;<\/p>\n<\/li>\n<li>\n<p>Runtime lib: Reduced C ( &#8212;spec=nano.specs  );<\/p>\n<\/li>\n<li>\n<p>Use float with printf from new lib nano ( -u _printf_float );<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1: \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/101\/cc3\/a6e\/101cc3a6e1fcf2d279c9158329211028.png\" width=\"1364\" height=\"219\"><figcaption><\/figcaption><\/figure>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2: \u041e\u0431\u0449\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f4e\/18d\/6f6\/f4e18d6f675b54fdc1d1191a47f8feff.png\" width=\"1369\" height=\"223\"><figcaption><\/figcaption><\/figure>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 3: \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fb6\/18c\/aeb\/fb618caeb6d1d66924916656d17d33ee.png\" width=\"1369\" height=\"360\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/515018\/\" rel=\"noopener noreferrer nofollow\">\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043a \u043d\u0435\u0439.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 FPU \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abM4\u00bb \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f sqrt_fps, \u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 (float), \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u0430\u044f \u0434\u0430\u043b\u0435\u0435 \u00ab_fps\u00bb (Float Point Short) \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 2.<\/p>\n<p> <em>\u041f\u0440\u0438\u043c\u0435\u0440 2: \u041a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u0440\u0435\u043d\u044c \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e float<\/em><\/p>\n<pre><code class=\"cpp\">uint16_t sqrt_fps( uint32_t number ) { \tif ( number &lt; 2 ) \t\treturn (uint16_t) number;  \tfloat f_rslt = sqrtf( number ); \tuint32_t rslt = (uint32_t) f_rslt;  \tif ( !( f_rslt - (float) rslt &lt; .5 ) ) \t\trslt++;  \treturn (uint16_t) rslt; }<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u00ab_fps\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043c\u0435\u043d\u0435\u0435 22-\u0445 \u0431\u0438\u0442, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u044f\u0434\u043a\u0443 1+E5 \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 1.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 1: \u041e\u0448\u0438\u0431\u043a\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#171;_fps&#187; \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0430\u0445 1+E6+<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/28a\/350\/734\/28a350734ed22b1b6ebae9b3dc11021a.png\" width=\"1030\" height=\"659\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<br \/>[0 .. 1+E5].<\/p>\n<p> <em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4: \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e93\/047\/e5d\/e93047e5da7403b56662331291b10bd7.png\" width=\"1365\" height=\"335\"><figcaption><\/figcaption><\/figure>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u2014 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<h4>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/h4>\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abx86\u00bb \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abARM Cortex\u00bb \u0431\u0435\u0437\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2: \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c9f\/d30\/c3b\/c9fd30c3b4bd77ad45ef38c476fe3074.png\" width=\"1365\" height=\"672\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u043e \u043e\u0441\u0438 Y \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 (\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4), \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u041d\u0430 \u043e\u0441\u0438 X \u2014 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0427\u0435\u043c \u043d\u0438\u0436\u0435 \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0430 \u043d\u0430 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2), \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u0440\u0435\u043c\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c\u0438, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438: -O0, -Os, -O3.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438: -O0, -Os, -O3.<\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 100% \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 ( -O0 ). \u042d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (&nbsp;\u2011O0&nbsp;) \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430&nbsp;\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u00abM4\u00bb.<\/p>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 x86<\/h4>\n<p>\u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 3) \u043f\u043e \u043e\u0441\u0438 Y \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e \u0446\u0438\u043a\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041d\u0430 \u043e\u0441\u0438 X \u2014 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4).<\/p>\n<p>\u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0438, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0426\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043e\u0441\u0438 X \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u043b\u0435\u0433\u0435\u043d\u0434\u0430.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 3: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 x86<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ff\/bb3\/3f7\/6ffbb33f7458e5f8868f5197823decc4.png\" width=\"1412\" height=\"964\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00abx86\u00bb \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0417\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435.<\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (&nbsp;\u2011O0&nbsp;) \u043b\u0443\u0447\u0448\u0435 \u043d\u0430 39% \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fpu\u00bb (&nbsp;\u2011Os&nbsp;) \u0438 \u043d\u0430 16% \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fps\u00bb (&nbsp;\u2011O3&nbsp;). \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043b\u044e\u0431\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abx86\u00bb \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u043b\u0430\u0445.<\/p>\n<p>\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 -O3 \u0438 -Os.<\/p>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 M4<\/h4>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00abM4\u00bb \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 4).<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 4: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 M4<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a5e\/58f\/e9d\/a5e58fe9d5accfeca299dcebeb93118b.png\" width=\"1411\" height=\"963\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u00abM4\u00bb \u0434\u0430\u0451\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fps\u00bb, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u2014 float.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 FPU \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u00abM4\u00bb \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 5.<\/p>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fps\u00bb \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c 1+E5 (\u0441\u043c. \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 1) \u0431\u0435\u0437 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0433\u043e, \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c FPU \u043d\u0430 \u00abM4\u00bb \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 5: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 M4 \u0431\u0435\u0437 FPU<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2e5\/5f1\/5c6\/2e55f15c6d00e451fafe9847fea33a25.png\" width=\"1409\" height=\"958\"><figcaption><\/figcaption><\/figure>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 M0<\/h4>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abM0\u00bb \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abM4\u00bb&nbsp;\u0431\u0435\u0437&nbsp;FPU (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 5), \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0438 \u0434\u043b\u044f \u00abM4\u00bb, \u0438 \u0434\u043b\u044f \u00abM0\u00bb \u2014 48 MHz. \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u00abM0\u00bb \u0445\u0443\u0436\u0435 \u0432 \u0434\u0432\u0430 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0437\u0430, \u0447\u0435\u043c \u00abM4\u00bb, \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0447\u0438\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 M0<\/em><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bff\/8cd\/dc4\/bff8cddc40434e3092ae8afae1a900e1.png\" width=\"1413\" height=\"955\"><figcaption><\/figcaption><\/figure>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_fps\u00bb \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u00abM0\u00bb \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u0435\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_fpu\u00bb.<\/p>\n<p>\u0426\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439.<\/p>\n<p>\u041f\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0435 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6) \u0441\u043d\u043e\u0432\u0430 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430.<\/p>\n<p>\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (&nbsp;\u2011O0&nbsp;) \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_evn\u00bb \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_i32\u00bb. \u0418 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_evn\u00bb \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u00ab_i32\u00bb, \u0435\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441  \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438. \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0443 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u00abM4\u00bb \u0438 \u00abx86\u00bb \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043d\u0435\u0442.<\/p>\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h4>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d.<\/p>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u0443\u0445\u0443\u0434\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0447\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 \u0432\u044b\u0448\u0435 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 3 \u0438 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6).<\/p>\n<p>\u0426\u0435\u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0435\u0437\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<p>\u041e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0435\u0442. \u0417\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 1. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b x86<\/h4>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0435 CubeIDE (Eclipse CDT) \u043f\u0440\u043e\u0435\u043a\u0442 C \u0448\u0442\u0430\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 3<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0444\u0430\u0439\u043b sqrt_cmp.h \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 6<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<ol>\n<li>\n<p>\u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 IDE;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 4<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041c\u0435\u043d\u044f\u044f \u0432\u0438\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 ( -O0, -O3, -Os ) \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<\/li>\n<\/ol>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 3: \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b x86 \u2014 main.c<\/em><\/p>\n<pre><code class=\"cpp\">#include \"sqrt_cmp.h\"  int main( void ) { \tmain_Of_SqrtComp(); \treturn 0; } <\/code><\/pre>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 4 \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 x86 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430<\/em><\/p>\n<pre><code class=\"bash\">gcc main.c -o main -I. -Wall -lm -std=gnu11 -O3 &amp;&amp; .\/main<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abx86\u00bb \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b main.c \u0438 sqrt_cmp.h \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0438 \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432\u044b\u0431\u0440\u0430\u043d \u0440\u0430\u0431\u043e\u0447\u0438\u043c (pwd).<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 7: \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <\/em>\u00abx86\u00bb <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f69\/e34\/f8f\/f69e34f8f54b3ef5e4d8989892eaf16d.png\" width=\"1010\" height=\"648\"><figcaption><\/figcaption><\/figure>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 2. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b STM32<\/h4>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0435 CubeIDE \u043f\u0440\u043e\u0435\u043a\u0442 STM32 \u0448\u0442\u0430\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c (CubeMX)<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b sqrt_cmp.h \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 STM32 \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 6<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c sqrt_cmp.h \u0432 \u0444\u0430\u0439\u043b main.c \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 5<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 IDE<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u043d\u044f\u044f \u0432\u0438\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 ( -O0, -O3, -Os ) \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/li>\n<\/ol>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 5: \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f STM32 (\u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043c\u0438 &lt; &#8230; &gt;) \u2014 main.c<\/em><\/p>\n<pre><code class=\"cpp\">&lt; \u2026 &gt; \/* Private includes ----------------------------------------------------------*\/ \/* USER CODE BEGIN Includes *\/ #include \"sqrt_cmp.h\" \/* USER CODE END Includes *\/ &lt; \u2026 &gt; \/**   * @brief  The application entry point.   * @retval int   *\/ int main(void) { &lt; \u2026 &gt;   \/* Infinite loop *\/   \/* USER CODE BEGIN WHILE *\/   main_Of_SqrtComp();   while (1)   {     \/* USER CODE END WHILE *\/     \/* USER CODE BEGIN 3 *\/   }   \/* USER CODE END 3 *\/ <\/code><\/pre>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 3. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/h4>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u0442\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0432\u044b\u0448\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (\u0422\u0430\u0431\u043b\u0438\u0446\u0430 3), \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u00absqrt_cmp.h\u00bb.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 6: \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 sqrt_cmp.h<\/em><\/p>\n<pre><code class=\"cpp\">\/******************************************************************************  * File: sqrt_cmp.h Created on 5 \u0430\u0432\u0433. 2020 \u0433.  * CC0 1.0 Universal (CC0 1.0)  * Creative Commons Public Domain Dedication  * No Copyright  *  * TAB Size .EQ 4  ********************************************************************************\/  #ifndef __SQRT_CMP_H #define __SQRT_CMP_H  #include\t&lt;math.h&gt; #include\t&lt;stdio.h&gt; #include\t&lt;stdint.h&gt;  #ifdef __cplusplus extern \"C\" { #endif  \/******************************************************************************  * Interface of the entry point for all sqrt tests  ******************************************************************************\/  void main_Of_SqrtComp();  \/******************************************************************************  * test case selection: TEST_SET  * select one of the test suite via a comment.  ******************************************************************************\/  #define TEST_SET\t\t\tTEST_ALL \/\/#define TEST_SET\t\t\tTEST_ROUNDING \/\/#define TEST_SET\t\t\tTEST_PERFORMANCE  \/******************************************************************************  * Interfaces of test functions.  * See implementation of them at the end of this file.  ******************************************************************************\/  typedef uint16_t (*sqrt_func)( uint32_t number );  uint16_t sqrt_fpu( uint32_t number );\t\/\/ floating point function from article uint16_t sqrt_evn( uint32_t number );\t\/\/ integer function from article  uint16_t sqrxi32( uint32_t y );\t\t\t\/\/ integer function from comment by  uint16_t sqrt_fps( uint32_t number );\t\/\/ optimized floating point function for Cortex M4  \t\t\t\t\t\t\t\t\t\t\/\/ &lt;-- insert interface of your function here  \/******************************************************************************  * Set to variable named as 'round_test_func' below  * to the alias of one of the functions above.  * The NULL will select last function in comp_list[]  ******************************************************************************\/  sqrt_func round_test_func = sqrt_fps;\t\/\/ specific instance for the rounding test \/\/sqrt_func round_test_func = sqrxi32;\t\/\/ specific instance for the rounding test \/\/sqrt_func round_test_func = sqrt_evn;\t\/\/ specific instance for the rounding test  \/\/sqrt_func round_test_func = NULL;\t\t\/\/ last function in comp_list[]  \/******************************************************************************  * The array of test functions for competing routines is called comp_list[].  * Adding a new function to the test:  - copy the implementation of the new function to the end of this file;  - declare the function interface at the beginning of this file;  - add the alias and declaration of the new function to  end of array named comp_list[].  ******************************************************************************\/  \/\/ @formatter:off  typedef struct { \tsqrt_func\tfsqrt; \tchar *\t\talias; } SCompFunc;  SCompFunc comp_list[] =\t\/\/ competition list { \t{ sqrt_fpu, \"_fpu\" }, \t{ sqrt_fps, \"_fps\" }, \t{ sqrt_evn, \"_evn\" }, \t{ sqrxi32,  \"_i32\" } \t\t\t\t\t\t\t\/\/ &lt;-- insert your function name &amp; alias here };  \/* @formatter:on *\/  \/******************************************************************************  * Platform-independent definitions  ******************************************************************************\/  #define PUT_FORMAT_MSG(f_, ...) { \\ \t\t\t\tsprintf( (char *)s_buf, (char *)f_, ##__VA_ARGS__ ); \\ \t\t\t\tPUT_MSG( (char *)s_buf ); }  #define MS_PER_SEC\t1000 #define US_PER_SEC\t( MS_PER_SEC * MS_PER_SEC )  #define ARRAY_SIZE(a) (sizeof a \/ sizeof *a)\t\/\/ size of static array at runtime  #define SIRV(f) if ( f ) ;\t\t\t\t\t\t\/\/ suppress Ignore Return Value warning  \/******************************************************************************  * Platform-specific defines  ******************************************************************************\/  #if defined( USE_HAL_DRIVER )\t\/\/ STM32 ARM Cortex platform  #\tinclude\t&lt;string.h&gt; #\tinclude \"main.h\"  \t\/\/***************************************************************************** \t\/\/ Platform-specific defines for the helper functions  #\tdefine SCALE_RATE\t\t1\t\/\/ must be .GE than 1  #\tdefine X_CLOCK\t\t\tHAL_GetTick() #\tdefine X_DELAY( ms )\tHAL_Delay( ms )  \t\/\/***************************************************************************** \t\/\/ Platform-specific defines for the terminal output  #\tdefine USART_HANDLE\t\thuart1\t\/\/ set valid USART handler alias here defined by the config of MCU #\tdefine USART_TIMEOUT\t150\t\t\/\/ max timeout for HAL_UART_Transmit  extern UART_HandleTypeDef USART_HANDLE; extern HAL_StatusTypeDef HAL_UART_Transmit ( UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout );  #\tdefine PUT_MSG( msg ) \\ \t\tHAL_UART_Transmit( &amp;USART_HANDLE, (uint8_t *)msg, strlen( (char *)msg ), USART_TIMEOUT )  #\tdefine CPU_CLOCK_MHz\t( SystemCoreClock \/ US_PER_SEC )\t\/\/ CPU CLK in MHz  #\tif defined( STM32F0 ) #\t\tdefine\tCPU_ID ( \"STM32 ARM Cortex M0\" ) #\telif defined ( STM32F3 ) #\t\tdefine\tCPU_ID ( \"STM32 ARM Cortex M4\" ) #\telse #\t\tdefine\tCPU_ID ( \"Maybe STM32 ARM Cortex\" ) #\tendif  #\tdefine PUT_SYS_INFO\tPUT_FORMAT_MSG( \" %s @ \"fdU()\" MHz\\n\", CPU_ID, CPU_CLOCK_MHz )  #else\t\/\/ #if defined( USE_HAL_DRIVER\t)  #\t\tinclude &lt;time.h&gt; #\t\tinclude &lt;stdlib.h&gt;  \t\/\/***************************************************************************** \t\/\/ Platform-specific defines for the helper functions  #\tdefine SCALE_RATE\t\t100\t\t\/\/ must be .GE than 1  #\tdefine X_CLOCK\t\t\t(uint32_t) x_clock() #\tdefine X_DELAY( ms )\tx_delay( ms )  uint32_t x_clock() { \tuint64_t result = (uint64_t) clock(); \tresult *= MS_PER_SEC; \tresult \/= CLOCKS_PER_SEC; \treturn (uint32_t) result; }  void x_delay( uint32_t ms ) { \tuint64_t tm = x_clock(); \twhile ( ( x_clock() - tm ) &lt; ms ) \t\t; }  \t\/\/***************************************************************************** \t\/\/ Platform-specific defines for the terminal output  #\tdefine PUT_MSG( msg ) \\ \t\tprintf( \"%s\", (char *)msg ), fflush ( stdout );  #\tif defined( __unix__ )\t\t\/\/ anybody other platform for gcc  #\t\tdefine PUT_SYS_INFO\tSIRV( system( \"cat \/proc\/cpuinfo | grep 'model name' | head -1 | sed s\/'model name\\t:'\/''\/\" ) )  #\telse  #\t\tdefine PUT_SYS_INFO\tPUT_MSG( \"Undefined System &amp; CPU\" )  #\tendif\t\/\/ #\tif defined( __unix__ )  \/\/ anybody other platform for gcc  #endif\t\t\/\/ #if defined( USE_HAL_DRIVER\t)  #if  ( __WORDSIZE == 64 )  #\tdefine fdI(s)\t\"%\" #s \"d\" #\tdefine fdU(s)\t\"%\" #s \"u\" #\tdefine fdX(s)\t\"%\" #s \"x\"  #else\t\/\/ let's say __WORDSIZE == 32  #\tdefine fdI(s)\t\"%\" #s \"ld\" #\tdefine fdU(s)\t\"%\" #s \"lu\" #\tdefine fdX(s)\t\"%\" #s \"lx\"  #endif\t\/\/ #if ( __WORDSIZE == 64 )  #if defined ( DEBUG ) || defined ( _DEBUG ) \/\/ chk build mode of CubeIDE  #\tdefine\tBUILD_MODE\t\"DEBUG\"  #else \/\/ Maybe Release  #\tdefine\tBUILD_MODE\t\"RELEASE\"  #endif\t\/\/ #if defined ( DEBUG ) || defined ( _DEBUG )  \/******************************************************************************  * the helper data with testing ranges  ******************************************************************************\/  \/\/ @formatter:off  typedef struct { \tuint32_t\tstart; \tuint32_t\tstop; \tuint32_t\trepeat; } STestRange;  STestRange\ttest_rngs[] = { \t{ 0, 1000, 100 * SCALE_RATE }, \t{ 0, 10000, 10 * SCALE_RATE }, \t{ 0, 100000, 1 * SCALE_RATE } };  uint32_t test_results[ARRAY_SIZE( test_rngs )][ARRAY_SIZE( comp_list ) + 1];  #define MSG_BUFF_SIZE\t512  uint8_t s_buf[MSG_BUFF_SIZE];\t\/\/ buffer for a terminal output  \/* @formatter:on *\/  \/******************************************************************************  * Test sets definitions. Do not change it.  ******************************************************************************\/  #define TEST_ROUNDING\t\t1 #define TEST_PERFORMANCE\t2 #define TEST_ALL\t\t\t( TEST_ROUNDING | TEST_PERFORMANCE )  #ifndef TEST_SET #\tdefine\tTEST_SET\tTEST_ALL #endif  #define HI_ROUND_TEST_RANGE_END\t\t0x007FFFFFUL #define HI_ROUND_TEST_RANGE_START\t( HI_ROUND_TEST_RANGE_END &gt;&gt; 4 )  \/******************************************************************************  * Interface of helper functions  ******************************************************************************\/  void main_Header(); void testRounding(); void testPerformance();  \/******************************************************************************  * Implementation of the entry point for all sqrt tests  ******************************************************************************\/  void main_Of_SqrtComp() {  \tX_DELAY( MS_PER_SEC \/ 2 );\t\/\/ suppress the output of a previous instance \t\t\t\t\t\t\t\t\/\/ while the new instance is loading into the MCU  \tuint32_t start_time = X_CLOCK;  \tmain_Header();  \t\/\/ checking normal and extended ranges for rounding \tif ( TEST_SET &amp; TEST_ROUNDING ) \t\ttestRounding();  \t\/\/ checking normal ranges on execution time \tif ( TEST_SET &amp; TEST_PERFORMANCE ) \t\ttestPerformance();  \tuint32_t test_time = X_CLOCK - start_time;  \tuint32_t test_m = ( test_time \/ MS_PER_SEC ) \/ 60; \tuint32_t test_s = ( test_time \/ MS_PER_SEC ) % 60; \tuint32_t test_ms = test_time % MS_PER_SEC;  \tPUT_FORMAT_MSG( \"\\ndone, spent time: \"fdU()\" m, \"fdU()\".\"fdU()\" s\\n\", test_m, test_s, test_ms ); }  \/******************************************************************************  * Implementation of the helper functions  ******************************************************************************\/  void main_Header() {  \tPUT_MSG( \"\\n\\n**********************************************************\\n\" ); \tPUT_SYS_INFO; \tPUT_FORMAT_MSG( \"*********** %s, built at %s\\n\", BUILD_MODE, __TIME__ ); }  void testPerformance() { \tuint32_t i_func, i_rpt, i_rng; \tuint32_t number, first, second, diff; \tuint64_t temp;  \tPUT_MSG( \"----------+ Performance test\" );  \tfor ( i_rng = 0; i_rng &lt; ARRAY_SIZE( test_rngs ); i_rng++ ) \t{ \t\tPUT_MSG( \"\\n\" ); \t\tPUT_FORMAT_MSG( \"test range:[\"fdU()\"..\"fdU()\"], repeat=\"fdU()\"\\n\", test_rngs[i_rng].start, test_rngs[i_rng].stop, \t\t\t\ttest_rngs[i_rng].repeat );  \t\ttest_results[i_rng][0] = test_rngs[i_rng].stop;  \t\tfor ( i_func = 0; i_func &lt; ARRAY_SIZE( comp_list ); i_func++ ) \t\t{ \t\t\tPUT_FORMAT_MSG( \"%s ... \", comp_list[i_func].alias );  \t\t\tfirst = X_CLOCK;  \t\t\tfor ( i_rpt = 0; i_rpt &lt; test_rngs[i_rng].repeat; i_rpt++ ) \t\t\t\tfor ( number = test_rngs[i_rng].start; number &lt; test_rngs[i_rng].stop; number++ ) \t\t\t\t\tcomp_list[i_func].fsqrt( number );  \t\t\tsecond = X_CLOCK;  \t\t\tdiff = second - first;  \t\t\ttemp = ( test_rngs[i_rng].stop - test_rngs[i_rng].start ) * test_rngs[i_rng].repeat; \t\t\ttest_results[i_rng][i_func + 1] = (uint32_t) ( temp \/ diff );  \t\t\tif ( i_func &lt; ARRAY_SIZE( comp_list ) - 1 ) \t\t\t\tPUT_MSG( \", \" ); \t\t} \t}  \t\/\/ small report \tPUT_FORMAT_MSG( \"\\n----------+ Report: sqrt`s calls per ms\\n%10s\", \"range\" );  \tfor ( i_func = 0; i_func &lt; ARRAY_SIZE( comp_list ); i_func++ ) \t\tPUT_FORMAT_MSG( \"%10s\", comp_list[i_func].alias );  \tfor ( i_rng = 0; i_rng &lt; ARRAY_SIZE( test_rngs ); i_rng++ ) \t{ \t\tPUT_MSG( \"\\n\" ); \t\tfor ( i_func = 0; i_func &lt; ARRAY_SIZE( comp_list ) + 1; i_func++ ) \t\t\tPUT_FORMAT_MSG( fdU( 10 ), test_results[i_rng][i_func] ); \t}  \tPUT_FORMAT_MSG( \"\\n----------+\\n%10s\", \"average\" );  \tfor ( i_func = 0; i_func &lt; ARRAY_SIZE( comp_list ); i_func++ ) \t{ \t\ttemp = 0;  \t\tfor ( i_rng = 0; i_rng &lt; ARRAY_SIZE( test_rngs ); i_rng++ ) \t\t\ttemp += test_results[i_rng][i_func + 1];  \t\ttemp \/= ARRAY_SIZE( test_rngs );  \t\tPUT_FORMAT_MSG( fdU( 10 ), (uint32_t)temp ); \t} }  void testRoundingFunction( uint32_t start, uint32_t finish, sqrt_func psqrt, char *fname );  void testRounding() { \tuint16_t i_rng; \tuint16_t f_rng;  \tPUT_MSG( \"----------+ Rounding test\\n\" );  \t\/\/ checking the existence for the test function \tfor ( f_rng = 0; f_rng &lt; ARRAY_SIZE( comp_list ); f_rng++ ) \t\tif ( comp_list[f_rng].fsqrt == round_test_func ) \t\t\tbreak;  \tif ( !( f_rng &lt; ARRAY_SIZE( comp_list ) ) ) \t{ \t\tf_rng = ARRAY_SIZE( comp_list ) - 1; \t\tPUT_FORMAT_MSG( \"Value of 'round_test_func' not found.\\n\" ); \t}  \tPUT_FORMAT_MSG( \"Function '%s' is tested for rounding.\\n\", comp_list[f_rng].alias );  \t\/\/ checking standard ranges \tfor ( i_rng = 0; i_rng &lt; ARRAY_SIZE( test_rngs ); i_rng++ ) \t\ttestRoundingFunction( test_rngs[i_rng].start, test_rngs[i_rng].stop, comp_list[f_rng].fsqrt, comp_list[f_rng].alias );  \t\/\/ checking extended range \ttestRoundingFunction( HI_ROUND_TEST_RANGE_START, HI_ROUND_TEST_RANGE_END, comp_list[f_rng].fsqrt, comp_list[f_rng].alias ); }  void turn_the_fan( uint32_t ms );  void testRoundingFunction( uint32_t start, uint32_t finish, sqrt_func psqrt, char *fname ) { \tuint32_t rf, ri; \tuint32_t n, c = 0;  \tPUT_FORMAT_MSG( \"test range:[\"fdU( 10 )\"..\"fdU( 10 )\"] ... \", start, finish );  \tfor ( n = start; n &lt; finish; n++ ) \t{ \t\trf = sqrt_fpu( n ); \t\tri = ( *psqrt )( n ); \t\tif ( rf != ri ) \t\t{ \t\t\tif ( c++ &gt; 3 ) \t\t\t{ \t\t\t\tPUT_FORMAT_MSG( \"\\b\\n(!)too many mistakes in '%s', \", fname ); \t\t\t\tbreak; \t\t\t} \t\t\telse \t\t\t{ \t\t\t\tdouble d = sqrt( (double) n ); \t\t\t\tPUT_FORMAT_MSG( \"\\b\\n%s(\"fdU( 10 )\")=\"fdU()\" != \"fdU(), fname, n, ri, rf ); \t\t\t\tPUT_FORMAT_MSG( \" (real value is %.6lf)\", d ); \t\t\t} \t\t} \t\tturn_the_fan( MS_PER_SEC ); \t}  \tif ( !c ) \t{ \t\tPUT_FORMAT_MSG( \"\\b done.\\n\" ); \t} \telse \t{ \t\tPUT_FORMAT_MSG( \"test failed.\\n\" ); \t} }  void turn_the_fan( uint32_t ms ) { \tstatic char ca[] = \"|\/-\\\\\"; \tstatic uint32_t cs = ARRAY_SIZE(ca) - 1; \tstatic uint32_t cn = 0;  \tstatic uint32_t at = 0;  \tuint32_t ct = X_CLOCK; \tif ( ct - at &gt; ms ) \t{ \t\tat = ct; \t\tPUT_FORMAT_MSG( \"\\b%c\", ca[cn++ % cs] ); \t} }  \/******************************************************************************  * Implementation of the sqrt functions  ******************************************************************************\/  \/\/ floating point arg &amp; result with double uint16_t sqrt_fpu( uint32_t number ) { \tif ( number &lt; 2 ) \t\treturn (uint16_t) number;  \tdouble f_rslt = sqrt( number ); \tuint32_t rslt = (uint32_t) f_rslt;  \tif ( !( f_rslt - (double) rslt &lt; .5 ) ) \t\trslt++;  \treturn (uint16_t) rslt; }  \/\/ floating point arg &amp; result with float uint16_t sqrt_fps( uint32_t number ) { \tif ( number &lt; 2 ) \t\treturn (uint16_t) number;  \tfloat f_rslt = sqrtf( number ); \tuint32_t rslt = (uint32_t) f_rslt;  \tif ( !( f_rslt - (float) rslt &lt; .5 ) ) \t\trslt++;  \treturn (uint16_t) rslt; }  \/\/ unsigned integer arg &amp; result  \/\/ @formatter:off uint16_t sqrt_evn ( uint32_t number ) { \tif ( number &lt; 2 ) \t\treturn ( uint16_t ) number;  \tuint32_t temp; \tuint32_t div; \tuint32_t rslt;  \tif ( number &amp; 0xFFFF0000L ) \t\tif ( number &amp; 0xFF000000L ) \t\t\tif ( number &amp; 0xF0000000L ) \t\t\t\tif ( number &amp; 0xE0000000L ) \t\t\t\t\tdiv = 43771; \t\t\t\telse \t\t\t\t\tdiv = 22250; \t\t\telse \t\t\t\tif ( number &amp; 0x0C000000L ) \t\t\t\t\tdiv = 11310; \t\t\t\telse \t\t\t\t\tdiv = 5749; \t\telse \t\t\tif ( number &amp; 0x00F00000L ) \t\t\t\tif ( number &amp; 0x00C00000L ) \t\t\t\t\tdiv = 2923; \t\t\t\telse \t\t\t\t\tdiv = 1486; \t\t\telse \t\t\t\tif ( number &amp; 0x000C0000L ) \t\t\t\t\tdiv = 755; \t\t\t\telse \t\t\t\t\tdiv = 384; \telse \t\tif ( number &amp; 0xFF00L ) \t\t\tif ( number &amp; 0xF000L ) \t\t\t\tif ( number &amp; 0xC000L ) \t\t\t\t\tdiv = 195; \t\t\t\telse \t\t\t\t\tdiv = 99; \t\t\telse \t\t\t\tif ( number &amp; 0x0C00L ) \t\t\t\t\tdiv = 50; \t\t\t\telse \t\t\t\t\tdiv = 25; \t\telse \t\t\tif ( number &amp; 0xF0L ) \t\t\t\tif ( number &amp; 0x80L ) \t\t\t\t\tdiv = 13; \t\t\t\telse \t\t\t\t\tdiv = 7; \t\t\telse \t\t\t\tdiv = 3;  \trslt = number;  \twhile ( 1 ) \t{ \t\ttemp = number \/ div; \t\ttemp += div;  \t\tdiv = temp &gt;&gt; 1; \t\tdiv += temp &amp; 1;  \t\tif ( rslt &gt; div ) \t\t\trslt = div; \t\telse \t\t{ \t\t\tif ( number \/ rslt == rslt - 1 &amp;&amp; number % rslt == 0 ) \t\t\t\trslt--;  \t\t\treturn ( uint16_t ) rslt; \t\t} \t} } \/* @formatter:on *\/  \/\/ unsigned integer arg &amp; result uint16_t sqrxi32( uint32_t y ) {  \tif ( y == 1 ) \t\treturn 1;  \tuint32_t xh = y &gt; 0x10000ul ? 0x10000ul : y; \tuint32_t xl = 0; \tuint32_t xc;  \tfor ( int k = 0; k &lt; 16; k++ ) \t{ \t\txc = ( xh + xl ) &gt;&gt; 1ul; \t\tif ( xc * xc - xc &gt;= y ) \t\t{ \t\t\txh = xc; \t\t} \t\telse \t\t{ \t\t\txl = xc; \t\t} \t} \treturn ( xh + xl ) &gt;&gt; 1ul; }  \/\/ &lt;-- insert implementation of your function sqrt here  #ifdef __cplusplus } #endif  #endif \/\/ __SQRT_CMP_H <\/code><\/pre>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/562572\/\"> https:\/\/habr.com\/ru\/post\/562572\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f<\/h4>\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0432\u0441\u0435\u0433\u043e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u043c, \u043a\u0442\u043e \u043e\u0442\u043a\u043b\u0438\u043a\u043d\u0443\u043b\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e <a href=\"https:\/\/habr.com\/ru\/post\/515018\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043e\u0434\u0430 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 C\/C++<\/a> \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043d\u044f \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u0441 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043d\u043e\u043c\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044e \u0431\u044b\u043b\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0430 \u043e\u043f\u0435\u0447\u0430\u0442\u043a\u0430 \u0432 \u0442\u0435\u043a\u0441\u0442\u0435; \u043a\u043e\u043f\u0438\u043b\u043a\u0430 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c.<\/p>\n<p>\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u0435\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c <a href=\"https:\/\/habr.com\/ru\/post\/515018\/#comment_22024188\" rel=\"noopener noreferrer nofollow\">sqrxi32 \u043e\u0442 @Sdima1357<\/a> \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 1, \u0434\u0430\u043b\u0435\u0435 \u0434\u043b\u044f \u043a\u0440\u0430\u0442\u043a\u043e\u0441\u0442\u0438 \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u044b\u0439 \u043a\u0430\u043a \u00ab_i32\u00bb. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_i32\u00bb \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u2014 \u00ab\u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435 \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e\u00bb \u2014 \u043d\u0430 \u0432\u0441\u0451\u043c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 [ 0 .. 0xFFFFFFFF ], \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p> <em>\u041f\u0440\u0438\u043c\u0435\u0440 1: \u0412\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u0440\u043d\u044f \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u0441 \u043e\u043a\u0440\u0443\u0433\u043b\u0435\u043d\u0438\u0435\u043c \u0434\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0433\u043e \u0446\u0435\u043b\u043e\u0433\u043e.<\/em><\/p>\n<pre><code class=\"cpp\">uint16_t sqrxi32( uint32_t y ) { \tif ( y == 1 ) \t\treturn 1;  \tuint32_t xh = y &gt; 0x10000ul ? 0x10000ul : y; \tuint32_t xl = 0; \tuint32_t xc;  \tfor ( int k = 0; k &lt; 16; k++ ) \t{ \t\txc = ( xh + xl ) &gt;&gt; 1ul; \t\tif ( xc * xc - xc &gt;= y ) \t\t{ \t\t\txh = xc; \t\t} \t\telse \t\t{ \t\t\txl = xc; \t\t} \t} \treturn ( xh + xl ) &gt;&gt; 1ul; }<\/code><\/pre>\n<p>\u0414\u0440\u0443\u0433\u043e\u0435 \u0445\u043e\u0440\u043e\u0448\u0435\u0435 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_i32\u00bb \u2014 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u043e\u0441\u0442\u044c \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0412\u0440\u0435\u043c\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u00ab_i32\u00bb \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_evn\u00bb, \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0434\u0443\u043b\u044e \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430.<\/p>\n<h4>\u041e \u0447\u0451\u043c \u044d\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442<\/h4>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438 \u0438 \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u043d\u0430 \u0438\u0442\u043e\u0433\u043e\u0432\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043e\u0434\u043d\u043e\u043c\u0443 \u0438 \u0442\u043e\u043c\u0443 \u0436\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443.<\/p>\n<p>\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430\u043c\u0438.<\/p>\n<p>\u0410\u043d\u0430\u043b\u0438\u0437 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0439 \u0437\u0430 \u0440\u0430\u043c\u043a\u0430\u043c\u0438 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<h4>\u0423\u0441\u043b\u043e\u0432\u0438\u044f \u0438 \u0434\u043e\u043f\u0443\u0441\u043a\u0438<\/h4>\n<p>\u0414\u043b\u044f \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432 \u2014 3 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u2014 3 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f<\/p>\n<\/li>\n<\/ul>\n<p>\u0414\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 \u0434\u0432\u043e\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c:<\/p>\n<ul>\n<li>\n<p>\u041e\u0434\u043d\u0443 \u0435\u0434\u0438\u043d\u0438\u0446\u0443 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0430 (\u0444\u0430\u0439\u043b main.c)<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044e \u0432 \u043c\u043e\u043d\u043e-\u043f\u043e\u0442\u043e\u0447\u043d\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b<\/p>\n<\/li>\n<li>\n<p>\u0415\u0434\u0438\u043d\u0443\u044e \u0441\u0431\u043e\u0440\u043e\u0447\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443: CubeIDE (\u043e\u043d\u0430 \u0436\u0435 Eclipce CDT)<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0441\u0431\u043e\u0440\u043a\u0438 RELEASE \u0432 \u0441\u0440\u0435\u0434\u0435 CubeIDE<\/p>\n<\/li>\n<li>\n<p>\u0415\u0434\u0438\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430: \u00abISO C11 + gnu extensions\u00bb (-std=gnu11)<\/p>\n<\/li>\n<li>\n<p>\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430\u043c:<\/p>\n<ul>\n<li>\n<p>CubeMX \u2014 default settings, +48MHz, +USART1, +HAL;<\/p>\n<\/li>\n<li>\n<p>Runtime lib: Reduced C ( &#8212;spec=nano.specs  );<\/p>\n<\/li>\n<li>\n<p>Use float with printf from new lib nano ( -u _printf_float );<\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 1: \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u0434\u0430<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 2: \u041e\u0431\u0449\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p><em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 3: \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0422\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 <a href=\"https:\/\/habr.com\/ru\/post\/515018\/\" rel=\"noopener noreferrer nofollow\">\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0435\u0432 \u043a \u043d\u0435\u0439.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 FPU \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abM4\u00bb \u0432 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f sqrt_fps, \u0440\u0435\u0448\u0430\u044e\u0449\u0430\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 (float), \u0438\u043c\u0435\u043d\u0443\u0435\u043c\u0430\u044f \u0434\u0430\u043b\u0435\u0435 \u00ab_fps\u00bb (Float Point Short) \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 2.<\/p>\n<p> <em>\u041f\u0440\u0438\u043c\u0435\u0440 2: \u041a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u0440\u0435\u043d\u044c \u0438\u0437 \u0446\u0435\u043b\u043e\u0433\u043e \u0441 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e float<\/em><\/p>\n<pre><code class=\"cpp\">uint16_t sqrt_fps( uint32_t number ) { \tif ( number &lt; 2 ) \t\treturn (uint16_t) number;  \tfloat f_rslt = sqrtf( number ); \tuint32_t rslt = (uint32_t) f_rslt;  \tif ( !( f_rslt - (float) rslt &lt; .5 ) ) \t\trslt++;  \treturn (uint16_t) rslt; }<\/code><\/pre>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u00ab_fps\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u043c \u043c\u0435\u043d\u0435\u0435 22-\u0445 \u0431\u0438\u0442, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u0440\u044f\u0434\u043a\u0443 1+E5 \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 1.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 1: \u041e\u0448\u0438\u0431\u043a\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 &#171;_fps&#187; \u043d\u0430 \u043f\u043e\u0440\u044f\u0434\u043a\u0430\u0445 1+E6+<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u0432\u0441\u0435\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439<br \/>[0 .. 1+E5].<\/p>\n<p> <em>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4: \u0421\u043f\u0438\u0441\u043e\u043a \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u0430 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u2014 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0446\u0438\u043a\u043b\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443.<\/p>\n<h4>\u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/h4>\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u043c\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abx86\u00bb \u0432\u044b\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abARM Cortex\u00bb \u0431\u0435\u0437\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043b\u0435\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2: \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041d\u0430 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u043e \u043e\u0441\u0438 Y \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u043d\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 (\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4), \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0435 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0430\u0445. \u041d\u0430 \u043e\u0441\u0438 X \u2014 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0427\u0435\u043c \u043d\u0438\u0436\u0435 \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0430 \u043d\u0430 \u043b\u0435\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2), \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0413\u0440\u0430\u0444\u0438\u043a \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0442\u0440\u0435\u043c\u044f \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c\u0438, \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438: -O0, -Os, -O3.<\/p>\n<p>\u041f\u0440\u0430\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 2) \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0441\u0431\u043e\u0440\u043a\u0438: -O0, -Os, -O3.<\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c 100% \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0434\u0432\u043e\u0438\u0447\u043d\u044b\u0439 \u043a\u043e\u0434, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 ( -O0 ). \u042d\u0442\u043e \u0431\u0430\u0437\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u0432\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 (&nbsp;\u2011O0&nbsp;) \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0430, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e-\u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c \u043d\u0430\u0438\u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043d\u0430&nbsp;\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u00abM4\u00bb.<\/p>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 x86<\/h4>\n<p>\u041d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 3) \u043f\u043e \u043e\u0441\u0438 Y \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e \u0446\u0438\u043a\u043b\u0438\u0447\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0437\u0430 \u043e\u0434\u043d\u0443 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041d\u0430 \u043e\u0441\u0438 X \u2014 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 (\u0422\u0430\u0431\u043b\u0438\u0446\u0430 4).<\/p>\n<p>\u0427\u0435\u043c \u0432\u044b\u0448\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0438, \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0426\u0432\u0435\u0442\u043e\u043c \u043d\u0430 \u043e\u0441\u0438 X \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0442\u0440\u0430\u0436\u0430\u0435\u0442 \u043b\u0435\u0433\u0435\u043d\u0434\u0430.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 3: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 x86<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00abx86\u00bb \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u043f\u0435\u0440\u0435\u0434 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u043c\u0438.<\/p>\n<p>\u0417\u0430\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0447\u0430\u0441\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u043e\u043c \u043a\u043e\u043d\u0442\u0443\u0440\u0435.<\/p>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (&nbsp;\u2011O0&nbsp;) \u043b\u0443\u0447\u0448\u0435 \u043d\u0430 39% \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fpu\u00bb (&nbsp;\u2011Os&nbsp;) \u0438 \u043d\u0430 16% \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fps\u00bb (&nbsp;\u2011O3&nbsp;). \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u043b\u044e\u0431\u0430\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abx86\u00bb \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0438\u0441\u043b\u0430\u0445.<\/p>\n<p>\u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f, \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 -O3 \u0438 -Os.<\/p>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 M4<\/h4>\n<p>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u00abM4\u00bb \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 4).<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 4: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 M4<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041c\u043e\u0434\u0443\u043b\u044c \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u00abM4\u00bb \u0434\u0430\u0451\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u043f\u0440\u0438\u0440\u043e\u0441\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fps\u00bb, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043d\u0430 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u2014 float.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043f\u0440\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u043c\u043e\u0434\u0443\u043b\u0435 FPU \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u00abM4\u00bb \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 5.<\/p>\n<p>\u041d\u0430\u0431\u043b\u044e\u0434\u0430\u044f \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_fps\u00bb \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u043c 1+E5 (\u0441\u043c. \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 1) \u0431\u0435\u0437 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u0433\u043e, \u0432\u043a\u043b\u044e\u0447\u0435\u043d \u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c FPU \u043d\u0430 \u00abM4\u00bb \u0438\u043b\u0438 \u043d\u0435\u0442.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 5: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 M4 \u0431\u0435\u0437 FPU<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h4>\u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 M0<\/h4>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abM0\u00bb \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abM4\u00bb&nbsp;\u0431\u0435\u0437&nbsp;FPU (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 5), \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u2014 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6.<\/p>\n<p>\u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0442\u0430\u043a\u0442\u043e\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u043e\u0442\u0430 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e\u0439 \u0438 \u0434\u043b\u044f \u00abM4\u00bb, \u0438 \u0434\u043b\u044f \u00abM0\u00bb \u2014 48 MHz. \u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u00abM0\u00bb \u0445\u0443\u0436\u0435 \u0432 \u0434\u0432\u0430 \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u0440\u0430\u0437\u0430, \u0447\u0435\u043c \u00abM4\u00bb, \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0440\u0430\u0432\u0435\u043d\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0447\u0438\u0445 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a.<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6: \u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 M0<\/em><\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_fps\u00bb \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 \u00abM0\u00bb \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u043e \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u0435\u0442 \u0432 \u0434\u0432\u0430 \u0440\u0430\u0437\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_fpu\u00bb.<\/p>\n<p>\u0426\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u044e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439.<\/p>\n<p>\u041f\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u043e\u043c\u0443 \u0441\u0442\u0435\u0447\u0435\u043d\u0438\u044e \u043e\u0431\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u0441\u0442\u0432 \u0432 \u0437\u0430\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0433\u0440\u0430\u0444\u0438\u043a\u0435 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6) \u0441\u043d\u043e\u0432\u0430 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430.<\/p>\n<p>\u041f\u0440\u0438 \u0441\u0431\u043e\u0440\u043a\u0435 \u0431\u0435\u0437 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 (&nbsp;\u2011O0&nbsp;) \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_evn\u00bb \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u00ab_i32\u00bb. \u0418 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u00ab_evn\u00bb \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u00ab_i32\u00bb, \u0435\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0430 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0441  \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439.<\/p>\n<p>\u0421\u043d\u043e\u0432\u0430 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438. \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0443 \u0446\u0435\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u00abM4\u00bb \u0438 \u00abx86\u00bb \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0430 \u043d\u0435\u0442.<\/p>\n<h4>\u0412\u043c\u0435\u0441\u0442\u043e \u0437\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f<\/h4>\n<p>\u041f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u0447\u0438\u043d.<\/p>\n<p>\u041e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0430 \u0443\u0445\u0443\u0434\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u0447\u0442\u043e \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u044e\u0442 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u0445 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u0445 \u0432\u044b\u0448\u0435 (\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 3 \u0438 \u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 6).<\/p>\n<p>\u0426\u0435\u043d\u0430 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0431\u0435\u0437\u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<p>\u041e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u0430, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043d\u0435\u0442. \u0417\u0430\u0434\u0430\u0447\u0430 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0443\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435.<\/p>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 1. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b x86<\/h4>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0435 CubeIDE (Eclipse CDT) \u043f\u0440\u043e\u0435\u043a\u0442 C \u0448\u0442\u0430\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c<\/p>\n<\/li>\n<li>\n<p>\u041d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 3<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0444\u0430\u0439\u043b sqrt_cmp.h \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 6<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b:<\/p>\n<ol>\n<li>\n<p>\u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 IDE;<\/p>\n<\/li>\n<li>\n<p>\u0438\u043b\u0438 \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 4<\/p>\n<\/li>\n<\/ol>\n<\/li>\n<li>\n<p>\u041c\u0435\u043d\u044f\u044f \u0432\u0438\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 ( -O0, -O3, -Os ) \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<\/li>\n<\/ol>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 3: \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b x86 \u2014 main.c<\/em><\/p>\n<pre><code class=\"cpp\">#include \"sqrt_cmp.h\"  int main( void ) { \tmain_Of_SqrtComp(); \treturn 0; } <\/code><\/pre>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 4 \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 x86 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430<\/em><\/p>\n<pre><code class=\"bash\">gcc main.c -o main -I. -Wall -lm -std=gnu11 -O3 &amp;&amp; .\/main<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u00abx86\u00bb \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442, \u0447\u0442\u043e \u0444\u0430\u0439\u043b\u044b main.c \u0438 sqrt_cmp.h \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435, \u0438 \u044d\u0442\u043e\u0442 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432\u044b\u0431\u0440\u0430\u043d \u0440\u0430\u0431\u043e\u0447\u0438\u043c (pwd).<\/p>\n<p><em>\u0418\u043b\u043b\u044e\u0441\u0442\u0440\u0430\u0446\u0438\u044f 7: \u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0435\u0441\u0442\u0430 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 <\/em>\u00abx86\u00bb <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 2. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b STM32<\/h4>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0432 \u0441\u0440\u0435\u0434\u0435 CubeIDE \u043f\u0440\u043e\u0435\u043a\u0442 STM32 \u0448\u0442\u0430\u0442\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c (CubeMX)<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0444\u0430\u0439\u043b sqrt_cmp.h \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 STM32 \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 6<\/p>\n<\/li>\n<li>\n<p>\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c sqrt_cmp.h \u0432 \u0444\u0430\u0439\u043b main.c \u2014 \u041f\u0440\u0438\u043c\u0435\u0440 5<\/p>\n<\/li>\n<li>\n<p>\u041e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0438\u0442\u044c \u0441\u0431\u043e\u0440\u043a\u0443 \u0438 \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0448\u0442\u0430\u0442\u043d\u044b\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 IDE<\/p>\n<\/li>\n<li>\n<p>\u041c\u0435\u043d\u044f\u044f \u0432\u0438\u0434 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 ( -O0, -O3, -Os ) \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442<\/p>\n<\/li>\n<\/ol>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 5: \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f STM32 (\u0441 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u043c\u0438 &lt; &#8230; &gt;) \u2014 main.c<\/em><\/p>\n<pre><code class=\"cpp\">&lt; \u2026 &gt; \/* Private includes ----------------------------------------------------------*\/ \/* USER CODE BEGIN Includes *\/ #include \"sqrt_cmp.h\" \/* USER CODE END Includes *\/ &lt; \u2026 &gt; \/**   * @brief  The application entry point.   * @retval int   *\/ int main(void) { &lt; \u2026 &gt;   \/* Infinite loop *\/   \/* USER CODE BEGIN WHILE *\/   main_Of_SqrtComp();   while (1)   {     \/* USER CODE END WHILE *\/     \/* USER CODE BEGIN 3 *\/   }   \/* USER CODE END 3 *\/ <\/code><\/pre>\n<h4>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 3. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432 \u0438 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c<\/h4>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u0442\u0435\u0441\u0442\u0430 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0442 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0445 \u0432\u044b\u0448\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c (\u0422\u0430\u0431\u043b\u0438\u0446\u0430 3), \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043e\u0441\u043c\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u00absqrt_cmp.h\u00bb.<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0440 6: \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 sqrt_cmp.h<\/em><\/p>\n<pre><code class=\"cpp\">\/******************************************************************************  * File: sqrt_cmp.h Created on 5 \u0430\u0432\u0433. 2020 \u0433.  * CC0 1.0 Universal (CC0 1.0)  * Creative Commons Public Domain Dedication  * No Copyright  *  * TAB Size .EQ 4<\/code><\/pre>\n<\/p>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-324883","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/324883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=324883"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/324883\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=324883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=324883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=324883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}