{"id":13178,"date":"2023-02-10T20:44:27","date_gmt":"2023-02-10T11:44:27","guid":{"rendered":"https:\/\/www.btc-embedded.jp\/?p=13178"},"modified":"2023-04-28T21:25:39","modified_gmt":"2023-04-28T12:25:39","slug":"why-back-to-back-testing-is-still-needed-for-floating-point","status":"publish","type":"post","link":"https:\/\/www.btc-embedded.jp\/ja\/why-back-to-back-testing-is-still-needed-for-floating-point\/","title":{"rendered":"Why Back-to-back testing is still needed for floating-point"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"13178\" class=\"elementor elementor-13178\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3b5f0493 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3b5f0493\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-559a247a\" data-id=\"559a247a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-83aaa38 elementor-widget elementor-widget-heading\" data-id=\"83aaa38\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Introduction<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d83c847 elementor-widget elementor-widget-text-editor\" data-id=\"d83c847\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p><span data-contrast=\"auto\">When I started working at BTC Embedded Systems in 2014, floating-point was a rare topic in customer meetings and many control units supported fixed-point only. But since then, floating-point became more and more important and has fully arrived in the projects today.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">Back-to-back testing can be used for various use cases but the most common one is to compare a Simulink model vs. auto-generated production code. In the past, this made a lot of sense since the model was usually using floating-point and the code was implemented with fixed-point. The Back-to-back test verified, if the translation from model to code does still lead to the same behavior.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">This raises the question, if a floating-point Back-to-back test is still needed, since both model and code use floating-point data types now.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c099a8 elementor-widget elementor-widget-heading\" data-id=\"7c099a8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">How does floating-point work? <\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1ff07f elementor-widget elementor-widget-text-editor\" data-id=\"a1ff07f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span data-contrast=\"auto\">Fixed-point is not a real datatype, it could be described as a ways to implement integer datatypes with a user-defined precision. Please, also read the article What you should know about fixed-point from my colleague Markus Gros for more information.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">However, this is different for floating-point variables. The available bits are split into 3 different sections to represent the sign, the exponent, and the mantissa (see below).<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-acf3998 elementor-widget elementor-widget-image\" data-id=\"acf3998\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"800\" height=\"600\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2023\/04\/2023_02_Blog_Featured-Image-1.webp\" class=\"attachment-large size-large wp-image-13164\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ff17c0 elementor-widget elementor-widget-text-editor\" data-id=\"4ff17c0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span data-contrast=\"auto\">For the value 1 with a 32-bit floating-point variable (single precision), it looks like this:<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><ul><li><span data-contrast=\"auto\">Value: 1<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><li><span data-contrast=\"auto\">Actually stored in floating-point: 1<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><li><span data-contrast=\"auto\">Binary: 0 01111111 00000000000000000000000<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><li><span data-contrast=\"auto\">IEEE 754 (Value): + | 2^0 | 1.0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><li><span data-contrast=\"auto\">IEEE 754 (Encoded): 0 | 127 | 0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><li><span data-contrast=\"auto\">Po2: 1 * 2^0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d5c18be elementor-widget elementor-widget-text-editor\" data-id=\"d5c18be\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span data-contrast=\"auto\">For the value 0.1 we get the following result:<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Value: 0.1<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Actually stored in floating-point: 0.100000001490116119384765625<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Binary: 0 01111011 10011001100110011001101<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">IEEE 754 (Value): + | 2^-4 | 1.600000023841858<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"5\" data-aria-level=\"1\"><span data-contrast=\"auto\">IEEE 754 (Encoded): 0 | 123 | 5033165<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"3\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"6\" data-aria-level=\"1\"><span data-contrast=\"auto\">Po2: 3602879701896397 * 2^-55<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f3da238 elementor-widget elementor-widget-text-editor\" data-id=\"f3da238\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span data-contrast=\"auto\">Based on the concept of mantissa and exponent, the above example shows that it can be a problem to represent several exact values like 0.1. If you want to know more about floating-point variables, please check out my article <a href=\"https:\/\/www.btc-embedded.com\/what-you-should-know-about-floating-point\/\" target=\"_blank\" rel=\"noopener\">What you should know about floating-point<\/a>.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">If you want to check out more values, please, have a look at the following website: <\/span><a href=\"https:\/\/www.h-schmidt.net\/FloatConverter\/IEEE754.html\" target=\"_blank\" rel=\"noopener\"><span data-contrast=\"none\">https:\/\/www.h-schmidt.net\/FloatConverter\/IEEE754.html<\/span><\/a><span data-contrast=\"auto\"> and try 0.2 or 16,777,217<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2cb1475 elementor-widget elementor-widget-heading\" data-id=\"2cb1475\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">What influences a floating-point value? <\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-732d3d4 elementor-widget elementor-widget-text-editor\" data-id=\"732d3d4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span data-contrast=\"auto\">In addition to the fact that specific values might not be representable with floating-point data types, there are additional influences on how a value is handled in a calculation like<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Rounding methods<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Optimization<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><ul><li data-leveltext=\"%1.\" data-font=\"Calibri\" data-listid=\"4\" data-list-defn-props=\"{&quot;335552541&quot;:0,&quot;335559684&quot;:-1,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769242&quot;:[65533,0],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;%1.&quot;,&quot;469777815&quot;:&quot;multilevel&quot;}\" aria-setsize=\"-1\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Precision (depending on the CPU)<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true,&quot;335559685&quot;:1200}\">\u00a0<\/span><\/li><\/ul><div>\u00a0<\/div><p><span data-contrast=\"auto\">Each compiler with floating-point support provides settings to define how the code should be handled. The available options might be different for each compiler as well.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p><p><span data-contrast=\"auto\">In addition, floating-point variables cannot be considered for all operations. If you want to make a comparison like x == 0.1 you will never catch the true case. At least for these situations you will still need to go with fixed-point variables.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffe7789 elementor-widget elementor-widget-heading\" data-id=\"ffe7789\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">How to ensure that no deviant behavior occurs between model and code? <\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-24084d2 elementor-widget elementor-widget-text-editor\" data-id=\"24084d2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span class=\"TextRun SCXW21642111 BCX9\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">This brings us back to the initial question if a <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">f<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">loating-<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">p<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">oint <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">B<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">ack-to-<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">b<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">ack <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">t<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">est is still needed? As we have seen in the previous text, floating-point <\/span><span class=\"NormalTextRun SpellingErrorV2Themed SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">arithmetics<\/span> <span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">have a lot of influence factors that might lead to a <\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">different <\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">results<\/span> <span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">on <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">m<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">odel and <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">c<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">ode<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\"> level<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\"> (and even differences when the same code is compiled with different compilers)<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">. To ensure equal structural behavior between model and code, a Back-to-<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">b<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">ack <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">t<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">est is the best option. Since the compiler for floating-point has &#8211; in contrast to fixed-point data types &#8211; a huge influence on the result, I even suggest <\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">to run<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\"> a Back-to-<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">b<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">ack <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">T<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">est between Model and Processor (MIL vs. PIL) to ensure that the target compiler also handles the code equal to the model<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\"> and host compiler<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">. The good thing about Back-to-<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">b<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">ack <\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">t<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">esting is that it can be fully <\/span><span class=\"NormalTextRun ContextualSpellingAndGrammarErrorV2Themed SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\">automized, and<\/span><span class=\"NormalTextRun SCXW21642111 BCX9\" data-ccp-parastyle=\"Normal (Web)\"> does only require user interaction if a deviation is detected.<\/span><\/span><span class=\"EOP SCXW21642111 BCX9\" data-ccp-props=\"{&quot;134233117&quot;:true,&quot;134233118&quot;:true}\">\u00a0<\/span><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27e953f elementor-widget elementor-widget-heading\" data-id=\"27e953f\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h3>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6cdaf06 elementor-widget elementor-widget-text-editor\" data-id=\"6cdaf06\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Floating-point definitely brings several advantages for some use cases and you get rid of the annoying issue of finding the right scaling for fixed-point data types. However, you have to keep in mind that the compiler settings play a big role in floating-point and can be found with a floating-point Back-to-back test.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Introduction When I started working at BTC Embedded Systems in 2014, floating-point was a rare topic in custom [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":13179,"comment_status":"open","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[55,56,54],"product":[],"use_cases":[],"class_list":["post-13178","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-ci-cd","tag-cloud","tag-jenkins"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/13178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/comments?post=13178"}],"version-history":[{"count":1,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/13178\/revisions"}],"predecessor-version":[{"id":13183,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/13178\/revisions\/13183"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/media\/13179"}],"wp:attachment":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/media?parent=13178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/categories?post=13178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/tags?post=13178"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/product?post=13178"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/use_cases?post=13178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}