CINXE.COM
Reed–Solomon error correction - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Reed–Solomon error correction - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"1f48e3bb-5160-450c-ad41-269abc6a050a","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Reed–Solomon_error_correction","wgTitle":"Reed–Solomon error correction","wgCurRevisionId":1282397588,"wgRevisionId":1282397588,"wgArticleId":45600,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description matches Wikidata","Wikipedia articles needing page number citations from March 2025","All articles with specifically marked weasel-worded phrases","Articles with specifically marked weasel-worded phrases from March 2025","All articles with unsourced statements","Articles with unsourced statements from March 2017","Articles with unsourced statements from March 2025","Articles needing additional references from March 2025","All articles needing additional references","Wikipedia articles needing clarification from March 2025","Error detection and correction","Coding theory"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Reed–Solomon_error_correction","wgRelevantArticleId":45600,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":80000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1061598","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGELevelingUpEnabledForUser":false}; RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.math.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","mediawiki.page.media","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.math.styles%7Cext.pygments%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.21"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Reed–Solomon error correction - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Reed–Solomon_error_correction rootpage-Reed–Solomon_error_correction skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="Main menu" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages"><span>Special pages</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Reed%E2%80%93Solomon+error+correction" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Reed%E2%80%93Solomon+error+correction" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Reed%E2%80%93Solomon+error+correction" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Reed%E2%80%93Solomon+error+correction" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Applications" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Applications"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Applications</span> </div> </a> <button aria-controls="toc-Applications-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Applications subsection</span> </button> <ul id="toc-Applications-sublist" class="vector-toc-list"> <li id="toc-Data_storage" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Data_storage"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Data storage</span> </div> </a> <ul id="toc-Data_storage-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bar_code" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Bar_code"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Bar code</span> </div> </a> <ul id="toc-Bar_code-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Data_transmission" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Data_transmission"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Data transmission</span> </div> </a> <ul id="toc-Data_transmission-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Space_transmission" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Space_transmission"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.4</span> <span>Space transmission</span> </div> </a> <ul id="toc-Space_transmission-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Constructions_(encoding)" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Constructions_(encoding)"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Constructions (encoding)</span> </div> </a> <button aria-controls="toc-Constructions_(encoding)-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Constructions (encoding) subsection</span> </button> <ul id="toc-Constructions_(encoding)-sublist" class="vector-toc-list"> <li id="toc-Reed_&_Solomon's_original_view:_The_codeword_as_a_sequence_of_values" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Reed_&_Solomon's_original_view:_The_codeword_as_a_sequence_of_values"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Reed & Solomon's original view: The codeword as a sequence of values</span> </div> </a> <ul id="toc-Reed_&_Solomon's_original_view:_The_codeword_as_a_sequence_of_values-sublist" class="vector-toc-list"> <li id="toc-Simple_encoding_procedure:_The_message_as_a_sequence_of_coefficients" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Simple_encoding_procedure:_The_message_as_a_sequence_of_coefficients"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.1</span> <span>Simple encoding procedure: The message as a sequence of coefficients</span> </div> </a> <ul id="toc-Simple_encoding_procedure:_The_message_as_a_sequence_of_coefficients-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Systematic_encoding_procedure:_The_message_as_an_initial_sequence_of_values" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Systematic_encoding_procedure:_The_message_as_an_initial_sequence_of_values"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.2</span> <span>Systematic encoding procedure: The message as an initial sequence of values</span> </div> </a> <ul id="toc-Systematic_encoding_procedure:_The_message_as_an_initial_sequence_of_values-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Discrete_Fourier_transform_and_its_inverse" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Discrete_Fourier_transform_and_its_inverse"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1.3</span> <span>Discrete Fourier transform and its inverse</span> </div> </a> <ul id="toc-Discrete_Fourier_transform_and_its_inverse-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-The_BCH_view:_The_codeword_as_a_sequence_of_coefficients" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#The_BCH_view:_The_codeword_as_a_sequence_of_coefficients"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>The BCH view: The codeword as a sequence of coefficients</span> </div> </a> <ul id="toc-The_BCH_view:_The_codeword_as_a_sequence_of_coefficients-sublist" class="vector-toc-list"> <li id="toc-Systematic_encoding_procedure" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Systematic_encoding_procedure"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2.1</span> <span>Systematic encoding procedure</span> </div> </a> <ul id="toc-Systematic_encoding_procedure-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Properties" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Properties"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Properties</span> </div> </a> <button aria-controls="toc-Properties-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Properties subsection</span> </button> <ul id="toc-Properties-sublist" class="vector-toc-list"> <li id="toc-Remarks" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Remarks"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Remarks</span> </div> </a> <ul id="toc-Remarks-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-BCH_view_decoders" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#BCH_view_decoders"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>BCH view decoders</span> </div> </a> <button aria-controls="toc-BCH_view_decoders-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle BCH view decoders subsection</span> </button> <ul id="toc-BCH_view_decoders-sublist" class="vector-toc-list"> <li id="toc-Peterson–Gorenstein–Zierler_decoder" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Peterson–Gorenstein–Zierler_decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Peterson–Gorenstein–Zierler decoder</span> </div> </a> <ul id="toc-Peterson–Gorenstein–Zierler_decoder-sublist" class="vector-toc-list"> <li id="toc-Formulation" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Formulation"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.1</span> <span>Formulation</span> </div> </a> <ul id="toc-Formulation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Syndrome_decoding" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Syndrome_decoding"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.2</span> <span>Syndrome decoding</span> </div> </a> <ul id="toc-Syndrome_decoding-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Error_locators_and_error_values" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Error_locators_and_error_values"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.3</span> <span>Error locators and error values</span> </div> </a> <ul id="toc-Error_locators_and_error_values-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Error_locator_polynomial" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Error_locator_polynomial"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.4</span> <span>Error locator polynomial</span> </div> </a> <ul id="toc-Error_locator_polynomial-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Find_the_roots_of_the_error_locator_polynomial" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Find_the_roots_of_the_error_locator_polynomial"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.5</span> <span>Find the roots of the error locator polynomial</span> </div> </a> <ul id="toc-Find_the_roots_of_the_error_locator_polynomial-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Calculate_the_error_values" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Calculate_the_error_values"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.6</span> <span>Calculate the error values</span> </div> </a> <ul id="toc-Calculate_the_error_values-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Calculate_the_error_locations" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Calculate_the_error_locations"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.7</span> <span>Calculate the error locations</span> </div> </a> <ul id="toc-Calculate_the_error_locations-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Fix_the_errors" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Fix_the_errors"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.8</span> <span>Fix the errors</span> </div> </a> <ul id="toc-Fix_the_errors-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Example" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Example"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1.9</span> <span>Example</span> </div> </a> <ul id="toc-Example-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Berlekamp–Massey_decoder" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Berlekamp–Massey_decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Berlekamp–Massey decoder</span> </div> </a> <ul id="toc-Berlekamp–Massey_decoder-sublist" class="vector-toc-list"> <li id="toc-Example_2" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Example_2"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2.1</span> <span>Example</span> </div> </a> <ul id="toc-Example_2-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Euclidean_decoder" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Euclidean_decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3</span> <span>Euclidean decoder</span> </div> </a> <ul id="toc-Euclidean_decoder-sublist" class="vector-toc-list"> <li id="toc-Example_3" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Example_3"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3.1</span> <span>Example</span> </div> </a> <ul id="toc-Example_3-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Decoder_using_discrete_Fourier_transform" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Decoder_using_discrete_Fourier_transform"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.4</span> <span>Decoder using discrete Fourier transform</span> </div> </a> <ul id="toc-Decoder_using_discrete_Fourier_transform-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Decoding_beyond_the_error-correction_bound" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Decoding_beyond_the_error-correction_bound"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.5</span> <span>Decoding beyond the error-correction bound</span> </div> </a> <ul id="toc-Decoding_beyond_the_error-correction_bound-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Soft-decoding" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Soft-decoding"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.6</span> <span>Soft-decoding</span> </div> </a> <ul id="toc-Soft-decoding-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-MATLAB_example" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#MATLAB_example"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.7</span> <span>MATLAB example</span> </div> </a> <ul id="toc-MATLAB_example-sublist" class="vector-toc-list"> <li id="toc-Encoder" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Encoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.7.1</span> <span>Encoder</span> </div> </a> <ul id="toc-Encoder-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Decoder" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.7.2</span> <span>Decoder</span> </div> </a> <ul id="toc-Decoder-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Reed_Solomon_original_view_decoders" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Reed_Solomon_original_view_decoders"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Reed Solomon original view decoders</span> </div> </a> <button aria-controls="toc-Reed_Solomon_original_view_decoders-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Reed Solomon original view decoders subsection</span> </button> <ul id="toc-Reed_Solomon_original_view_decoders-sublist" class="vector-toc-list"> <li id="toc-Theoretical_decoder" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Theoretical_decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.1</span> <span>Theoretical decoder</span> </div> </a> <ul id="toc-Theoretical_decoder-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Berlekamp_Welch_decoder" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Berlekamp_Welch_decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.2</span> <span>Berlekamp Welch decoder</span> </div> </a> <ul id="toc-Berlekamp_Welch_decoder-sublist" class="vector-toc-list"> <li id="toc-Example_4" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Example_4"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.2.1</span> <span>Example</span> </div> </a> <ul id="toc-Example_4-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Gao_decoder" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Gao_decoder"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.3</span> <span>Gao decoder</span> </div> </a> <ul id="toc-Gao_decoder-sublist" class="vector-toc-list"> <li id="toc-Example_5" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Example_5"> <div class="vector-toc-text"> <span class="vector-toc-numb">6.3.1</span> <span>Example</span> </div> </a> <ul id="toc-Example_5-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Notes" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#Notes"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Notes</span> </div> </a> <ul id="toc-Notes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>External links</span> </div> </a> <button aria-controls="toc-External_links-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle External links subsection</span> </button> <ul id="toc-External_links-sublist" class="vector-toc-list"> <li id="toc-Information_and_tutorials" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Information_and_tutorials"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.1</span> <span>Information and tutorials</span> </div> </a> <ul id="toc-Information_and_tutorials-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Implementations" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">10.2</span> <span>Implementations</span> </div> </a> <ul id="toc-Implementations-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="Table of Contents" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Reed–Solomon error correction</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 21 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-21" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">21 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Reed-Solomon" title="Reed-Solomon – Catalan" lang="ca" hreflang="ca" data-title="Reed-Solomon" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Reedovy%E2%80%93Solomonovy_k%C3%B3dy" title="Reedovy–Solomonovy kódy – Czech" lang="cs" hreflang="cs" data-title="Reedovy–Solomonovy kódy" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Reed-Solomon-fejlkorrektion" title="Reed-Solomon-fejlkorrektion – Danish" lang="da" hreflang="da" data-title="Reed-Solomon-fejlkorrektion" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Reed-Solomon-Code" title="Reed-Solomon-Code – German" lang="de" hreflang="de" data-title="Reed-Solomon-Code" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Reed-Solomon" title="Reed-Solomon – Spanish" lang="es" hreflang="es" data-title="Reed-Solomon" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%AA%D8%B5%D8%AD%DB%8C%D8%AD_%D8%AE%D8%B7%D8%A7%DB%8C_%D8%B1%DB%8C%D8%AF-%D8%B3%D8%A7%D9%84%D8%A7%D9%85%D9%88%D9%86" title="تصحیح خطای رید-سالامون – Persian" lang="fa" hreflang="fa" data-title="تصحیح خطای رید-سالامون" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Code_de_Reed-Solomon" title="Code de Reed-Solomon – French" lang="fr" hreflang="fr" data-title="Code de Reed-Solomon" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%93%9C_%EC%86%94%EB%A1%9C%EB%AA%AC_%EB%B6%80%ED%98%B8" title="리드 솔로몬 부호 – Korean" lang="ko" hreflang="ko" data-title="리드 솔로몬 부호" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Codice_Reed-Solomon" title="Codice Reed-Solomon – Italian" lang="it" hreflang="it" data-title="Codice Reed-Solomon" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%A7%D7%95%D7%93_%D7%A8%D7%99%D7%93-%D7%A1%D7%95%D7%9C%D7%95%D7%9E%D7%95%D7%9F" title="קוד ריד-סולומון – Hebrew" lang="he" hreflang="he" data-title="קוד ריד-סולומון" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/%D0%A0%D0%B8%D0%B9%D0%B4-%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D1%8B_%D0%BA%D0%BE%D0%B4" title="Рийд-Соломоны код – Mongolian" lang="mn" hreflang="mn" data-title="Рийд-Соломоны код" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Reed-Solomoncode" title="Reed-Solomoncode – Dutch" lang="nl" hreflang="nl" data-title="Reed-Solomoncode" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%AA%E3%83%BC%E3%83%89%E3%83%BB%E3%82%BD%E3%83%AD%E3%83%A2%E3%83%B3%E7%AC%A6%E5%8F%B7" title="リード・ソロモン符号 – Japanese" lang="ja" hreflang="ja" data-title="リード・ソロモン符号" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Kodowanie_korekcyjne_Reeda-Solomona" title="Kodowanie korekcyjne Reeda-Solomona – Polish" lang="pl" hreflang="pl" data-title="Kodowanie korekcyjne Reeda-Solomona" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/C%C3%B3digo_Reed%E2%80%93Solomon" title="Código Reed–Solomon – Portuguese" lang="pt" hreflang="pt" data-title="Código Reed–Solomon" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%A0%D0%B8%D0%B4%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0" title="Код Рида — Соломона – Russian" lang="ru" hreflang="ru" data-title="Код Рида — Соломона" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction" title="Reed–Solomon error correction – Simple English" lang="en-simple" hreflang="en-simple" data-title="Reed–Solomon error correction" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Reed%E2%80%93Solomon-koodit" title="Reed–Solomon-koodit – Finnish" lang="fi" hreflang="fi" data-title="Reed–Solomon-koodit" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%B4_%D0%A0%D1%96%D0%B4%D0%B0_%E2%80%94_%D0%A1%D0%BE%D0%BB%D0%BE%D0%BC%D0%BE%D0%BD%D0%B0" title="Код Ріда — Соломона – Ukrainian" lang="uk" hreflang="uk" data-title="Код Ріда — Соломона" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/K%E1%BB%B9_thu%E1%BA%ADt_s%E1%BB%ADa_l%E1%BB%97i_Reed%E2%80%93Solomon" title="Kỹ thuật sửa lỗi Reed–Solomon – Vietnamese" lang="vi" hreflang="vi" data-title="Kỹ thuật sửa lỗi Reed–Solomon" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E9%87%8C%E5%BE%B7-%E6%89%80%E7%BD%97%E9%97%A8%E7%A0%81" title="里德-所罗门码 – Chinese" lang="zh" hreflang="zh" data-title="里德-所罗门码" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1061598#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Reed%E2%80%93Solomon_error_correction" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Reed%E2%80%93Solomon_error_correction" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Reed%E2%80%93Solomon_error_correction"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Reed%E2%80%93Solomon_error_correction"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Reed%E2%80%93Solomon_error_correction" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Reed%E2%80%93Solomon_error_correction" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&oldid=1282397588" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Reed%E2%80%93Solomon_error_correction&id=1282397588&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FReed%25E2%2580%2593Solomon_error_correction"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FReed%25E2%2580%2593Solomon_error_correction"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Reed%E2%80%93Solomon_error_correction&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Category:Reed-Solomon_error_correction" hreflang="en"><span>Wikimedia Commons</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1061598" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Error-correcting codes</div> <style data-mw-deduplicate="TemplateStyles:r1257001546">.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme) div:not(.notheme){background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table tr{display:table-row!important}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}</style><table class="infobox"><tbody><tr><th colspan="2" class="infobox-above">Reed–Solomon codes</th></tr><tr><th scope="row" class="infobox-label">Named after</th><td class="infobox-data"><a href="/wiki/Irving_S._Reed" title="Irving S. Reed">Irving S. Reed</a> and <a href="/wiki/Gustave_Solomon" title="Gustave Solomon">Gustave Solomon</a></td></tr><tr><th colspan="2" class="infobox-header" style="background:#ccf;">Classification</th></tr><tr><th scope="row" class="infobox-label">Hierarchy</th><td class="infobox-data"><a href="/wiki/Linear_block_code" class="mw-redirect" title="Linear block code">Linear block code</a><br /><a href="/wiki/Polynomial_code" title="Polynomial code">Polynomial code</a><br />Reed–Solomon code</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Block_code#The_block_length_n" title="Block code">Block length</a></th><td class="infobox-data"><i>n</i></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Block_code#The_message_length_k" title="Block code">Message length</a></th><td class="infobox-data"><i>k</i></td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Block_code#The_distance_d" title="Block code">Distance</a></th><td class="infobox-data"><i>n</i> − <i>k</i> + 1</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Block_code#The_alphabet_Σ" title="Block code">Alphabet size</a></th><td class="infobox-data"><i>q</i> = <i>p</i><sup><i>m</i></sup> ≥ <i>n</i>  (<i>p</i> prime)<br />Often <i>n</i> = <i>q</i> − 1.</td></tr><tr><th scope="row" class="infobox-label"><a href="/wiki/Block_code#Popular_notation" title="Block code">Notation</a></th><td class="infobox-data">[<i>n</i>, <i>k</i>, <i>n</i> − <i>k</i> + 1]<sub><i>q</i></sub>-code</td></tr><tr><th colspan="2" class="infobox-header" style="background:#ccf;">Algorithms</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="/wiki/Berlekamp%E2%80%93Massey_algorithm" title="Berlekamp–Massey algorithm">Berlekamp–Massey</a><br /><a href="/wiki/Euclidean_algorithm" title="Euclidean algorithm">Euclidean</a><br /><i>et al.</i></td></tr><tr><th colspan="2" class="infobox-header" style="background:#ccf;">Properties</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="/wiki/Maximum_distance_separable_code" class="mw-redirect" title="Maximum distance separable code">Maximum-distance separable code</a></td></tr><tr><td colspan="2" class="infobox-navbar"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Infobox_code" title="Template:Infobox code"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Infobox_code" title="Template talk:Infobox code"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Infobox_code" title="Special:EditPage/Template:Infobox code"><abbr title="Edit this template">e</abbr></a></li></ul></div></td></tr></tbody></table> <p>In <a href="/wiki/Information_theory" title="Information theory">information theory</a> and <a href="/wiki/Coding_theory" title="Coding theory">coding theory</a>, <b>Reed–Solomon codes</b> are a group of <a href="/wiki/Error-correcting_code" class="mw-redirect" title="Error-correcting code">error-correcting codes</a> that were introduced by <a href="/wiki/Irving_S._Reed" title="Irving S. Reed">Irving S. Reed</a> and <a href="/wiki/Gustave_Solomon" title="Gustave Solomon">Gustave Solomon</a> in 1960.<sup id="cite_ref-ReedSolomon_1-0" class="reference"><a href="#cite_note-ReedSolomon-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> They have many applications, including consumer technologies such as <a href="/wiki/MiniDisc" title="MiniDisc">MiniDiscs</a>, <a href="/wiki/CD" class="mw-redirect" title="CD">CDs</a>, <a href="/wiki/DVD" title="DVD">DVDs</a>, <a href="/wiki/Blu-ray" title="Blu-ray">Blu-ray</a> discs, <a href="/wiki/QR_code" title="QR code">QR codes</a>, <a href="/wiki/Data_Matrix" title="Data Matrix">Data Matrix</a>, <a href="/wiki/Data_transmission" class="mw-redirect" title="Data transmission">data transmission</a> technologies such as <a href="/wiki/DSL" class="mw-redirect" title="DSL">DSL</a> and <a href="/wiki/WiMAX" title="WiMAX">WiMAX</a>, <a href="/wiki/Broadcasting" title="Broadcasting">broadcast</a> systems such as satellite communications, <a href="/wiki/Digital_Video_Broadcasting" class="mw-redirect" title="Digital Video Broadcasting">DVB</a> and <a href="/wiki/ATSC_Standards" class="mw-redirect" title="ATSC Standards">ATSC</a>, and storage systems such as <a href="/wiki/RAID_6" class="mw-redirect" title="RAID 6">RAID 6</a>. </p><p>Reed–Solomon codes operate on a block of data treated as a set of <a href="/wiki/Finite_field" title="Finite field">finite-field</a> elements called symbols. Reed–Solomon codes are able to detect and correct multiple symbol errors. By adding <span class="texhtml"><i>t</i> = <i>n</i> − <i>k</i></span> check symbols to the data, a Reed–Solomon code can detect (but not correct) any combination of up to <span class="texhtml mvar" style="font-style:italic;">t</span> erroneous symbols, <i>or</i> locate and correct up to <span class="texhtml">⌊<i>t</i>/2⌋</span> erroneous symbols at unknown locations. As an <a href="/wiki/Erasure_code" title="Erasure code">erasure code</a>, it can correct up to <span class="texhtml mvar" style="font-style:italic;">t</span> erasures at locations that are known and provided to the algorithm, or it can detect and correct combinations of errors and erasures. Reed–Solomon codes are also suitable as multiple-<a href="/wiki/Burst_error" title="Burst error">burst</a> bit-error correcting codes, since a sequence of <span class="texhtml"><i>b</i> + 1</span> consecutive bit errors can affect at most two symbols of size <span class="texhtml mvar" style="font-style:italic;">b</span>. The choice of <span class="texhtml mvar" style="font-style:italic;">t</span> is up to the designer of the code and may be selected within wide limits. </p><p>There are two basic types of Reed–Solomon codes –  original view and <a href="/wiki/BCH_code" title="BCH code">BCH</a> view –  with BCH view being the most common, as BCH view decoders are faster and require less working storage than original view decoders. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Reed–Solomon codes were developed in 1960 by <a href="/wiki/Irving_S._Reed" title="Irving S. Reed">Irving S. Reed</a> and <a href="/wiki/Gustave_Solomon" title="Gustave Solomon">Gustave Solomon</a>, who were then staff members of <a href="/wiki/MIT_Lincoln_Laboratory" title="MIT Lincoln Laboratory">MIT Lincoln Laboratory</a>. Their seminal article was titled "Polynomial Codes over Certain Finite Fields".<sup id="cite_ref-ReedSolomon_1-1" class="reference"><a href="#cite_note-ReedSolomon-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The original encoding scheme described in the Reed and Solomon article used a variable polynomial based on the message to be encoded where only a fixed set of values (evaluation points) to be encoded are known to encoder and decoder. The original theoretical decoder generated potential polynomials based on subsets of <i>k</i> (unencoded message length) out of <i>n</i> (encoded message length) values of a received message, choosing the most popular polynomial as the correct one, which was impractical for all but the simplest of cases. This was initially resolved by changing the original scheme to a <a href="/wiki/BCH_code" title="BCH code">BCH-code</a>-like scheme based on a fixed polynomial known to both encoder and decoder, but later, practical decoders based on the original scheme were developed, although slower than the BCH schemes. The result of this is that there are two main types of Reed–Solomon codes: ones that use the original encoding scheme and ones that use the BCH encoding scheme. </p><p>Also in 1960, a practical fixed polynomial decoder for <a href="/wiki/BCH_codes" class="mw-redirect" title="BCH codes">BCH codes</a> developed by <a href="/wiki/Daniel_Gorenstein" title="Daniel Gorenstein">Daniel Gorenstein</a> and Neal Zierler was described in an <a href="/wiki/MIT_Lincoln_Laboratory" title="MIT Lincoln Laboratory">MIT Lincoln Laboratory</a> report by Zierler in January 1960 and later in an article in June 1961.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> The Gorenstein–Zierler decoder and the related work on BCH codes are described in a book "Error-Correcting Codes" by <a href="/wiki/W._Wesley_Peterson" title="W. Wesley Peterson">W. Wesley Peterson</a> (1961).<sup id="cite_ref-Peterson61_3-0" class="reference"><a href="#cite_note-Peterson61-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources"><span title="This citation requires a reference to the specific page or range of pages in which the material appears. (March 2025)">page needed</span></a></i>]</sup> By 1963 (or possibly earlier), J.J. Stone (and others)<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Manual_of_Style/Words_to_watch#Unsupported_attributions" title="Wikipedia:Manual of Style/Words to watch"><span title="The material near this tag possibly uses too-vague attribution or weasel words. (March 2025)">who?</span></a></i>]</sup> recognized that Reed–Solomon codes could use the BCH scheme of using a fixed generator polynomial, making such codes a special class of BCH codes,<sup id="cite_ref-Peterson96_4-0" class="reference"><a href="#cite_note-Peterson96-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> but Reed–Solomon codes based on the original encoding scheme are not a class of BCH codes, and depending on the set of evaluation points, they are not even <a href="/wiki/Cyclic_code" title="Cyclic code">cyclic codes</a>. </p><p>In 1969, an improved BCH scheme decoder was developed by <a href="/wiki/Elwyn_Berlekamp" title="Elwyn Berlekamp">Elwyn Berlekamp</a> and <a href="/wiki/James_Massey" title="James Massey">James Massey</a> and has since been known as the <a href="/wiki/Berlekamp%E2%80%93Massey_algorithm" title="Berlekamp–Massey algorithm">Berlekamp–Massey decoding algorithm</a>. </p><p>In 1975, another improved BCH scheme decoder was developed by Yasuo Sugiyama, based on the <a href="/wiki/Extended_Euclidean_algorithm" title="Extended Euclidean algorithm">extended Euclidean algorithm</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> </p> <figure typeof="mw:File/Thumb"><a href="/wiki/File:DVB-vs-DVB-X2.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/c/c3/DVB-vs-DVB-X2.png/500px-DVB-vs-DVB-X2.png" decoding="async" width="350" height="196" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/c/c3/DVB-vs-DVB-X2.png/960px-DVB-vs-DVB-X2.png 1.5x" data-file-width="1969" data-file-height="1101" /></a><figcaption></figcaption></figure> <p>In 1977, Reed–Solomon codes were implemented in the <a href="/wiki/Voyager_program" title="Voyager program">Voyager program</a> in the form of <a href="/wiki/Concatenated_error_correction_code" title="Concatenated error correction code">concatenated error correction codes</a>. The first commercial application in mass-produced consumer products appeared in 1982 with the <a href="/wiki/Compact_disc" title="Compact disc">compact disc</a>, where two <a href="/wiki/Forward_error_correction#Interleaving" class="mw-redirect" title="Forward error correction">interleaved</a> Reed–Solomon codes are used. Today, Reed–Solomon codes are widely implemented in <a href="/wiki/Data_storage_device" class="mw-redirect" title="Data storage device">digital storage</a> devices and <a href="/wiki/Data_transmission" class="mw-redirect" title="Data transmission">digital communication</a> standards, though they are being slowly replaced by <a href="/wiki/BCH_code" title="BCH code">Bose–Chaudhuri–Hocquenghem (BCH) codes</a>. For example, Reed–Solomon codes are used in the <a href="/wiki/Digital_Video_Broadcasting" class="mw-redirect" title="Digital Video Broadcasting">Digital Video Broadcasting</a> (DVB) standard <a href="/wiki/DVB-S" title="DVB-S">DVB-S</a>, in conjunction with a <a href="/wiki/Convolutional_coding" class="mw-redirect" title="Convolutional coding">convolutional</a> <a href="/wiki/Inner_code" class="mw-redirect" title="Inner code">inner code</a>, but BCH codes are used with <a href="/wiki/Low-density_parity-check_code" title="Low-density parity-check code">LDPC</a> in its successor, <a href="/wiki/DVB-S2" title="DVB-S2">DVB-S2</a>. </p><p>In 1986, an original scheme decoder known as the <a href="/wiki/Berlekamp%E2%80%93Welch_algorithm" title="Berlekamp–Welch algorithm">Berlekamp–Welch algorithm</a> was developed. </p><p>In 1996, variations of original scheme decoders called list decoders or soft decoders were developed by Madhu Sudan and others, and work continues on these types of decoders (see <a href="/wiki/Guruswami%E2%80%93Sudan_list_decoding_algorithm" title="Guruswami–Sudan list decoding algorithm">Guruswami–Sudan list decoding algorithm</a>). </p><p>In 2002, another original scheme decoder was developed by Shuhong Gao, based on the <a href="/wiki/Extended_Euclidean_algorithm" title="Extended Euclidean algorithm">extended Euclidean algorithm</a>.<sup id="cite_ref-gao_6-0" class="reference"><a href="#cite_note-gao-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=2" title="Edit section: Applications"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Data_storage">Data storage</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=3" title="Edit section: Data storage"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Reed–Solomon coding is very widely used in mass storage systems to correct the burst errors associated with media defects. </p><p>Reed–Solomon coding is a key component of the <a href="/wiki/Compact_disc" title="Compact disc">compact disc</a>. It was the first use of strong error correction coding in a mass-produced consumer product, and <a href="/wiki/Digital_audio_tape" class="mw-redirect" title="Digital audio tape">DAT</a> and <a href="/wiki/DVD" title="DVD">DVD</a> use similar schemes. In the CD, two layers of Reed–Solomon coding separated by a 28-way <a href="/wiki/Convolution" title="Convolution">convolutional</a> <a href="/wiki/Interleaver" class="mw-redirect" title="Interleaver">interleaver</a> yields a scheme called Cross-Interleaved Reed–Solomon Coding (<a href="/wiki/Cross-interleaved_Reed%E2%80%93Solomon_coding" title="Cross-interleaved Reed–Solomon coding">CIRC</a>). The first element of a CIRC decoder is a relatively weak inner (32,28) Reed–Solomon code, shortened from a (255,251) code with 8-bit symbols. This code can correct up to 2 byte errors per 32-byte block. More importantly, it flags as erasures any uncorrectable blocks, i.e., blocks with more than 2 byte errors. The decoded 28-byte blocks, with erasure indications, are then spread by the deinterleaver to different blocks of the (28,24) outer code. Thanks to the deinterleaving, an erased 28-byte block from the inner code becomes a single erased byte in each of 28 outer code blocks. The outer code easily corrects this, since it can handle up to 4 such erasures per block. </p><p>The result is a CIRC that can completely correct error bursts up to 4000 bits, or about 2.5 mm on the disc surface. This code is so strong that most CD playback errors are almost certainly caused by tracking errors that cause the laser to jump track, not by uncorrectable error bursts.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p><p>DVDs use a similar scheme, but with much larger blocks, a (208,192) inner code, and a (182,172) outer code. </p><p>Reed–Solomon error correction is also used in <a href="/wiki/Parchive" title="Parchive">parchive</a> files which are commonly posted accompanying multimedia files on <a href="/wiki/USENET" class="mw-redirect" title="USENET">USENET</a>. The distributed online storage service <a href="/wiki/Wuala" title="Wuala">Wuala</a> (discontinued in 2015) also used Reed–Solomon when breaking up files. </p> <div class="mw-heading mw-heading3"><h3 id="Bar_code">Bar code</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=4" title="Edit section: Bar code"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Almost all two-dimensional bar codes such as <a href="/wiki/PDF-417" class="mw-redirect" title="PDF-417">PDF-417</a>, <a href="/wiki/MaxiCode" title="MaxiCode">MaxiCode</a>, <a href="/wiki/Datamatrix" class="mw-redirect" title="Datamatrix">Datamatrix</a>, <a href="/wiki/QR_Code" class="mw-redirect" title="QR Code">QR Code</a>, <a href="/wiki/Aztec_Code" title="Aztec Code">Aztec Code</a> and <a href="/wiki/Han_Xin_code" title="Han Xin code">Han Xin code</a> use Reed–Solomon error correction to allow correct reading even if a portion of the bar code is damaged. When the bar code scanner cannot recognize a bar code symbol, it will treat it as an erasure. </p><p>Reed–Solomon coding is less common in one-dimensional bar codes, but is used by the <a href="/wiki/PostBar" title="PostBar">PostBar</a> symbology. </p> <div class="mw-heading mw-heading3"><h3 id="Data_transmission">Data transmission</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=5" title="Edit section: Data transmission"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Specialized forms of Reed–Solomon codes, specifically <a href="/wiki/Cauchy_matrix" title="Cauchy matrix">Cauchy</a>-RS and <a href="/wiki/Vandermonde_matrix" title="Vandermonde matrix">Vandermonde</a>-RS, can be used to overcome the unreliable nature of data transmission over <a href="/wiki/Binary_erasure_channel" title="Binary erasure channel">erasure channels</a>. The encoding process assumes a code of RS(<i>N</i>, <i>K</i>) which results in <i>N</i> codewords of length <i>N</i> symbols each storing <i>K</i> symbols of data, being generated, that are then sent over an erasure channel. </p><p>Any combination of <i>K</i> codewords received at the other end is enough to reconstruct all of the <i>N</i> codewords. The code rate is generally set to 1/2 unless the channel's erasure likelihood can be adequately modelled and is seen to be less. In conclusion, <i>N</i> is usually 2<i>K</i>, meaning that at least half of all the codewords sent must be received in order to reconstruct all of the codewords sent. </p><p>Reed–Solomon codes are also used in <a href="/wiki/XDSL" class="mw-redirect" title="XDSL">xDSL</a> systems and <a href="/wiki/CCSDS" class="mw-redirect" title="CCSDS">CCSDS</a>'s <a href="/wiki/Space_Communications_Protocol_Specifications" title="Space Communications Protocol Specifications">Space Communications Protocol Specifications</a> as a form of <a href="/wiki/Forward_error_correction" class="mw-redirect" title="Forward error correction">forward error correction</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Space_transmission">Space transmission</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=6" title="Edit section: Space transmission"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/File:DeepSpaceFEC.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/0/03/DeepSpaceFEC.png/500px-DeepSpaceFEC.png" decoding="async" width="350" height="199" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/03/DeepSpaceFEC.png/960px-DeepSpaceFEC.png 1.5x" data-file-width="1276" data-file-height="724" /></a><figcaption> Deep-space concatenated coding system.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Notation: RS(255, 223) + <a href="/wiki/Convolutional_codes" class="mw-redirect" title="Convolutional codes">CC</a> ("constraint length" = 7, code rate = 1/2).</figcaption></figure> <p>One significant application of Reed–Solomon coding was to encode the digital pictures sent back by the <a href="/wiki/Voyager_program" title="Voyager program">Voyager program</a>. </p><p>Voyager introduced Reed–Solomon coding <a href="/wiki/Concatenated_code" class="mw-redirect" title="Concatenated code">concatenated</a> with <a href="/wiki/Convolutional_code" title="Convolutional code">convolutional codes</a>, a practice that has since become very widespread in deep space and satellite (e.g., direct digital broadcasting) communications. </p><p><a href="/wiki/Viterbi_decoder" title="Viterbi decoder">Viterbi decoders</a> tend to produce errors in short bursts. Correcting these burst errors is a job best done by short or simplified Reed–Solomon codes. </p><p>Modern versions of concatenated Reed–Solomon/Viterbi-decoded convolutional coding were and are used on the <a href="/wiki/Mars_Pathfinder" title="Mars Pathfinder">Mars Pathfinder</a>, <a href="/wiki/Galileo_probe" class="mw-redirect" title="Galileo probe">Galileo</a>, <a href="/wiki/Mars_Exploration_Rover" title="Mars Exploration Rover">Mars Exploration Rover</a> and <a href="/wiki/Cassini_probe" class="mw-redirect" title="Cassini probe">Cassini</a> missions, where they perform within about 1–1.5 <a href="/wiki/Decibel" title="Decibel">dB</a> of the ultimate limit, the <a href="/wiki/Channel_capacity" title="Channel capacity">Shannon capacity</a>. </p><p>These concatenated codes are now being replaced by more powerful <a href="/wiki/Turbo_code" title="Turbo code">turbo codes</a>: </p> <table class="wikitable"> <caption>Channel coding schemes used by NASA missions<sup id="cite_ref-Andrews,_2007_9-0" class="reference"><a href="#cite_note-Andrews,_2007-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> </caption> <tbody><tr> <th>Years</th> <th>Code</th> <th>Mission(s) </th></tr> <tr> <td>1958–present</td> <td>Uncoded</td> <td>Explorer, Mariner, many others </td></tr> <tr> <td>1968–1978</td> <td><a href="/wiki/Convolutional_codes" class="mw-redirect" title="Convolutional codes">convolutional codes</a> (CC) (25, 1/2)</td> <td>Pioneer, Venus </td></tr> <tr> <td>1969–1975</td> <td><a href="/wiki/Reed-Muller_code" class="mw-redirect" title="Reed-Muller code">Reed-Muller code</a> (32, 6)</td> <td>Mariner, Viking </td></tr> <tr> <td>1977–present</td> <td><a href="/wiki/Binary_Golay_code" title="Binary Golay code">Binary Golay code</a></td> <td>Voyager </td></tr> <tr> <td>1977–present</td> <td>RS(255, 223) + CC(7, 1/2)</td> <td>Voyager, Galileo, many others </td></tr> <tr> <td>1989–2003</td> <td>RS(255, 223) + CC(7, 1/3)</td> <td>Voyager </td></tr> <tr> <td>1989–2003</td> <td>RS(255, 223) + CC(14, 1/4)</td> <td>Galileo </td></tr> <tr> <td>1996–present</td> <td>RS + CC (15, 1/6)</td> <td>Cassini, Mars Pathfinder, others </td></tr> <tr> <td>2004–present</td> <td><a href="/wiki/Turbo_codes" class="mw-redirect" title="Turbo codes">Turbo codes</a><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>nb 1<span class="cite-bracket">]</span></a></sup> </td> <td>Messenger, Stereo, MRO, others </td></tr> <tr> <td>est. 2009</td> <td><a href="/wiki/LDPC_codes" class="mw-redirect" title="LDPC codes">LDPC codes</a></td> <td>Constellation, MSL </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Constructions_(encoding)"><span id="Constructions_.28encoding.29"></span>Constructions (encoding)</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=7" title="Edit section: Constructions (encoding)"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The Reed–Solomon code is actually a family of codes, where every code is characterised by three parameters: an <a href="/wiki/Block_code#The_alphabet_.CE.A3" title="Block code">alphabet</a> size <span class="texhtml mvar" style="font-style:italic;">q</span>, a <a href="/wiki/Block_code#The_block_length_n" title="Block code">block length</a> <span class="texhtml mvar" style="font-style:italic;">n</span>, and a <a href="/wiki/Block_code#The_message_length_k" title="Block code">message length</a> <span class="texhtml mvar" style="font-style:italic;">k</span><i>,</i> with <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k<n\leq q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo><</mo> <mi>n</mi> <mo>≤<!-- ≤ --></mo> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k<n\leq q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/78b4f2248f86608e267c8d6e9bf9f38beb064fc8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:9.872ex; height:2.509ex;" alt="{\displaystyle k<n\leq q}" /></span>. The set of alphabet symbols is interpreted as the <a href="/wiki/Finite_field" title="Finite field">finite field</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span> of order <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/06809d64fa7c817ffc7e323f85997f783dbdf71d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.07ex; height:2.009ex;" alt="{\displaystyle q}" /></span>, and thus, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/06809d64fa7c817ffc7e323f85997f783dbdf71d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.07ex; height:2.009ex;" alt="{\displaystyle q}" /></span> must be a <a href="/wiki/Prime_power" title="Prime power">prime power</a>. In the most useful parameterizations of the Reed–Solomon code, the block length is usually some constant multiple of the message length, that is, the <a href="/wiki/Block_code#The_rate_R" title="Block code">rate</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R={\frac {k}{n}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>R</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mi>k</mi> <mi>n</mi> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R={\frac {k}{n}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a8fb6f00490d6179856cc45e37f1bd60677f7ecf" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.838ex; width:7.093ex; height:5.343ex;" alt="{\displaystyle R={\frac {k}{n}}}" /></span> is some constant, and furthermore, the block length is either equal to the alphabet size or one less than it, i.e., <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n=q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>=</mo> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n=q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b88eedc2745402e0d99d3886e05ea683816aecf3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:5.563ex; height:2.009ex;" alt="{\displaystyle n=q}" /></span> or <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n=q-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>=</mo> <mi>q</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n=q-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b1989c9f290cfc2e56144b9fe0790657d730f0ee" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:9.566ex; height:2.509ex;" alt="{\displaystyle n=q-1}" /></span>.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (March 2017)">citation needed</span></a></i>]</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Reed_&_Solomon's_original_view:_The_codeword_as_a_sequence_of_values"><span id="Reed_.26_Solomon.27s_original_view:_The_codeword_as_a_sequence_of_values"></span>Reed & Solomon's original view: The codeword as a sequence of values</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=8" title="Edit section: Reed & Solomon's original view: The codeword as a sequence of values"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>There are different encoding procedures for the Reed–Solomon code, and thus, there are different ways to describe the set of all codewords. In the original view of Reed and Solomon, every codeword of the Reed–Solomon code is a sequence of function values of a polynomial of degree less than <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}" /></span>.<sup id="cite_ref-ReedSolomon_1-2" class="reference"><a href="#cite_note-ReedSolomon-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> In order to obtain a codeword of the Reed–Solomon code, the message symbols (each within the q-sized alphabet) are treated as the coefficients of a polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/81eac1e205430d1f40810df36a0edffdc367af36" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:1.259ex; height:2.009ex;" alt="{\displaystyle p}" /></span> of degree less than <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}" /></span>, over the finite field <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span> with <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/06809d64fa7c817ffc7e323f85997f783dbdf71d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:1.07ex; height:2.009ex;" alt="{\displaystyle q}" /></span> elements. In turn, the polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/81eac1e205430d1f40810df36a0edffdc367af36" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:1.259ex; height:2.009ex;" alt="{\displaystyle p}" /></span> is evaluated at <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n\leq q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>≤<!-- ≤ --></mo> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n\leq q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8a2267f3d1b2d1d38418583aa96e623c684ad359" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:5.563ex; height:2.343ex;" alt="{\displaystyle n\leq q}" /></span> distinct points <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{1},\dots ,a_{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{1},\dots ,a_{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/852381be25b656d697c7a4a9634d3dc4c182d833" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:9.911ex; height:2.009ex;" alt="{\displaystyle a_{1},\dots ,a_{n}}" /></span> of the field <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>, and the sequence of values is the corresponding codeword. Common choices for a set of evaluation points include <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \{0,1,2,\dots ,n-1\}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo fence="false" stretchy="false">{</mo> <mn>0</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> <mo fence="false" stretchy="false">}</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \{0,1,2,\dots ,n-1\}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a274c78335c05b113ff9a19b66526a9da869fbfd" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:18.456ex; height:2.843ex;" alt="{\displaystyle \{0,1,2,\dots ,n-1\}}" /></span>, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \{0,1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-2}\}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo fence="false" stretchy="false">{</mo> <mn>0</mn> <mo>,</mo> <mn>1</mn> <mo>,</mo> <mi>α<!-- α --></mi> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msup> <mo fence="false" stretchy="false">}</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \{0,1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-2}\}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/cb99dd9adcb2aa9fc800c86b8be528af7c2a657a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:21.766ex; height:3.176ex;" alt="{\displaystyle \{0,1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-2}\}}" /></span>, or for <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n<q}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo><</mo> <mi>q</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n<q}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/145a4cb4ddb9a99b2a6263ed1420f60d130f7d35" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:5.563ex; height:2.176ex;" alt="{\displaystyle n<q}" /></span>, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \{1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-1}\}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo fence="false" stretchy="false">{</mo> <mn>1</mn> <mo>,</mo> <mi>α<!-- α --></mi> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo fence="false" stretchy="false">}</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \{1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-1}\}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8f9ba4dc7845fca2e4dcf9711e11994e1ae019ef" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:19.57ex; height:3.176ex;" alt="{\displaystyle \{1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-1}\}}" /></span>, ... , where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }" /></span> is a <a href="/wiki/Primitive_element_(finite_field)" title="Primitive element (finite field)">primitive element</a> of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>. </p><p>Formally, the set <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {C} }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">C</mi> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbf {C} }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/11de80478fce9090e43eed19100b37cc841661e8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.931ex; height:2.176ex;" alt="{\displaystyle \mathbf {C} }" /></span> of codewords of the Reed–Solomon code is defined as follows: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {C} ={\Bigl \{}\;{\bigl (}p(a_{1}),p(a_{2}),\dots ,p(a_{n}){\bigr )}\;{\Big |}\;p{\text{ is a polynomial over }}F{\text{ of degree }}<k\;{\Bigr \}}\,.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">C</mi> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-OPEN"> <mo maxsize="1.623em" minsize="1.623em">{</mo> </mrow> </mrow> <mspace width="thickmathspace"></mspace> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-OPEN"> <mo maxsize="1.2em" minsize="1.2em">(</mo> </mrow> </mrow> <mi>p</mi> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mo>,</mo> <mi>p</mi> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>p</mi> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-CLOSE"> <mo maxsize="1.2em" minsize="1.2em">)</mo> </mrow> </mrow> <mspace width="thickmathspace"></mspace> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mo maxsize="1.623em" minsize="1.623em">|</mo> </mrow> </mrow> <mspace width="thickmathspace"></mspace> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mtext> is a polynomial over </mtext> </mrow> <mi>F</mi> <mrow class="MJX-TeXAtom-ORD"> <mtext> of degree </mtext> </mrow> <mo><</mo> <mi>k</mi> <mspace width="thickmathspace"></mspace> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-CLOSE"> <mo maxsize="1.623em" minsize="1.623em">}</mo> </mrow> </mrow> <mspace width="thinmathspace"></mspace> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbf {C} ={\Bigl \{}\;{\bigl (}p(a_{1}),p(a_{2}),\dots ,p(a_{n}){\bigr )}\;{\Big |}\;p{\text{ is a polynomial over }}F{\text{ of degree }}<k\;{\Bigr \}}\,.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2e97b14d102072e8872be43fd3bfd4d25fdd33dd" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.838ex; width:75.125ex; height:4.843ex;" alt="{\displaystyle \mathbf {C} ={\Bigl \{}\;{\bigl (}p(a_{1}),p(a_{2}),\dots ,p(a_{n}){\bigr )}\;{\Big |}\;p{\text{ is a polynomial over }}F{\text{ of degree }}<k\;{\Bigr \}}\,.}" /></span> Since any two <i>distinct</i> polynomials of degree less than <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}" /></span> agree in at most <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/21363ebd7038c93aae93127e7d910fc1b2e2c745" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.214ex; height:2.343ex;" alt="{\displaystyle k-1}" /></span> points, this means that any two codewords of the Reed–Solomon code disagree in at least <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-(k-1)=n-k+1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>−<!-- − --></mo> <mo stretchy="false">(</mo> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> <mo>=</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n-(k-1)=n-k+1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/bce2721e0474c79220d2f7a13884fa48998ea3cb" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:23.806ex; height:2.843ex;" alt="{\displaystyle n-(k-1)=n-k+1}" /></span> positions. Furthermore, there are two polynomials that do agree in <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/21363ebd7038c93aae93127e7d910fc1b2e2c745" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.214ex; height:2.343ex;" alt="{\displaystyle k-1}" /></span> points but are not equal, and thus, the <a href="/wiki/Block_code#The_distance_d" title="Block code">distance</a> of the Reed–Solomon code is exactly <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle d=n-k+1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>d</mi> <mo>=</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle d=n-k+1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0990fa9c410b95fed78e55519575a44021a19f19" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:13.764ex; height:2.343ex;" alt="{\displaystyle d=n-k+1}" /></span>. Then the relative distance is <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \delta =d/n=1-k/n+1/n=1-R+1/n\sim 1-R}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>δ<!-- δ --></mi> <mo>=</mo> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mi>n</mi> <mo>+</mo> <mn>1</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mi>n</mi> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mi>R</mi> <mo>+</mo> <mn>1</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mi>n</mi> <mo>∼<!-- ∼ --></mo> <mn>1</mn> <mo>−<!-- − --></mo> <mi>R</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \delta =d/n=1-k/n+1/n=1-R+1/n\sim 1-R}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/96b5b8c599a4e0dc72caf6470946e2d77b6df940" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:49.641ex; height:2.843ex;" alt="{\displaystyle \delta =d/n=1-k/n+1/n=1-R+1/n\sim 1-R}" /></span>, where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R=k/n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>R</mi> <mo>=</mo> <mi>k</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R=k/n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/413a3d4d51a7ee9b5b884497ab1dda55a18d0e99" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:8.631ex; height:2.843ex;" alt="{\displaystyle R=k/n}" /></span> is the rate. This trade-off between the relative distance and the rate is asymptotically optimal since, by the <a href="/wiki/Singleton_bound" title="Singleton bound">Singleton bound</a>, <i>every</i> code satisfies <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \delta +R\leq 1+1/n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>δ<!-- δ --></mi> <mo>+</mo> <mi>R</mi> <mo>≤<!-- ≤ --></mo> <mn>1</mn> <mo>+</mo> <mn>1</mn> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \delta +R\leq 1+1/n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9e1b7f3a86afa445a98c5433e0a86d1a34eb7ea5" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:16.474ex; height:2.843ex;" alt="{\displaystyle \delta +R\leq 1+1/n}" /></span>. Being a code that achieves this optimal trade-off, the Reed–Solomon code belongs to the class of <a href="/wiki/Maximum_distance_separable_code" class="mw-redirect" title="Maximum distance separable code">maximum distance separable codes</a>. </p><p>While the number of different polynomials of degree less than <i>k</i> and the number of different messages are both equal to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle q^{k}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle q^{k}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/fc9b1525f5a653e19f9fd37fd2701a768e171632" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.168ex; height:3.009ex;" alt="{\displaystyle q^{k}}" /></span>, and thus every message can be uniquely mapped to such a polynomial, there are different ways of doing this encoding. The original construction of Reed & Solomon interprets the message <i>x</i> as the <i>coefficients</i> of the polynomial <i>p</i>, whereas subsequent constructions interpret the message as the <i>values</i> of the polynomial at the first <i>k</i> points <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{1},\dots ,a_{k}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{1},\dots ,a_{k}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2ed5c6512d08d64873d79d51a42e6b057007d1f7" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:9.781ex; height:2.009ex;" alt="{\displaystyle a_{1},\dots ,a_{k}}" /></span> and obtain the polynomial <i>p</i> by interpolating these values with a polynomial of degree less than <i>k</i>. The latter encoding procedure, while being slightly less efficient, has the advantage that it gives rise to a <a href="/wiki/Systematic_code" title="Systematic code">systematic code</a>, that is, the original message is always contained as a subsequence of the codeword.<sup id="cite_ref-ReedSolomon_1-3" class="reference"><a href="#cite_note-ReedSolomon-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Simple_encoding_procedure:_The_message_as_a_sequence_of_coefficients">Simple encoding procedure: The message as a sequence of coefficients</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=9" title="Edit section: Simple encoding procedure: The message as a sequence of coefficients"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In the original construction of Reed and Solomon, the message <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle m=(m_{0},\dots ,m_{k-1})\in F^{k}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>m</mi> <mo>=</mo> <mo stretchy="false">(</mo> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mo>∈<!-- ∈ --></mo> <msup> <mi>F</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle m=(m_{0},\dots ,m_{k-1})\in F^{k}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c266019141a2b79dd9c25d79e6869f674b6f7566" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:26.195ex; height:3.176ex;" alt="{\displaystyle m=(m_{0},\dots ,m_{k-1})\in F^{k}}" /></span> is mapped to the polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a9fdc3d9c861e438bc344ab483c1e5a896fc002d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:2.934ex; height:2.009ex;" alt="{\displaystyle p_{m}}" /></span> with <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}(a)=\sum _{i=0}^{k-1}m_{i}a^{i}\,.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>a</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <msup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> <mspace width="thinmathspace"></mspace> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}(a)=\sum _{i=0}^{k-1}m_{i}a^{i}\,.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3c3706dcbcbba5e9f62ef04d68d781950dde1f7c" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; margin-left: -0.089ex; width:18.717ex; height:7.343ex;" alt="{\displaystyle p_{m}(a)=\sum _{i=0}^{k-1}m_{i}a^{i}\,.}" /></span> The codeword of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle m}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>m</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle m}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0a07d98bb302f3856cbabc47b2b9016692e3f7bc" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.04ex; height:1.676ex;" alt="{\displaystyle m}" /></span> is obtained by evaluating <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a9fdc3d9c861e438bc344ab483c1e5a896fc002d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:2.934ex; height:2.009ex;" alt="{\displaystyle p_{m}}" /></span> at <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}" /></span> different points <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{0},\dots ,a_{n-1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{0},\dots ,a_{n-1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/af329d1870192111e428e736710c7c169c650285" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:12.011ex; height:2.009ex;" alt="{\displaystyle a_{0},\dots ,a_{n-1}}" /></span> of the field <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>.<sup id="cite_ref-ReedSolomon_1-4" class="reference"><a href="#cite_note-ReedSolomon-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Thus the classical encoding function <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C:F^{k}\to F^{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo>:</mo> <msup> <mi>F</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msup> <mo stretchy="false">→<!-- → --></mo> <msup> <mi>F</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C:F^{k}\to F^{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b0fe838801ac0e5736ce60f7e3c342c268de876c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:13.254ex; height:2.676ex;" alt="{\displaystyle C:F^{k}\to F^{n}}" /></span> for the Reed–Solomon code is defined as follows: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/afa4e3e90d19297cee876396a0015fcce94282f6" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.838ex; width:21.769ex; height:12.843ex;" alt="{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}" /></span> This function <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4fc55753007cd3c18576f7933f6f089196732029" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.766ex; height:2.176ex;" alt="{\displaystyle C}" /></span> is a <a href="/wiki/Linear_mapping" class="mw-redirect" title="Linear mapping">linear mapping</a>, that is, it satisfies <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)=Am}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>A</mi> <mi>m</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)=Am}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/da15dbc41d01f3e82ce39b503b51800292d081e9" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:12.498ex; height:2.843ex;" alt="{\displaystyle C(m)=Am}" /></span> for the following <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n\times k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>×<!-- × --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n\times k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/861eac296135ef99f3b1b36f807616a9d69717f3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.446ex; height:2.176ex;" alt="{\displaystyle n\times k}" /></span>-matrix <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>A</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle A}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7daff47fa58cdfd29dc333def748ff5fa4c923e3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.743ex; height:2.176ex;" alt="{\displaystyle A}" /></span> with elements from <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)=Am={\begin{bmatrix}1&a_{0}&a_{0}^{2}&\dots &a_{0}^{k-1}\\1&a_{1}&a_{1}^{2}&\dots &a_{1}^{k-1}\\\vdots &\vdots &\vdots &\ddots &\vdots \\1&a_{n-1}&a_{n-1}^{2}&\dots &a_{n-1}^{k-1}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>A</mi> <mi>m</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <msubsup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msubsup> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msubsup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msubsup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msubsup> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msubsup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋱<!-- ⋱ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msubsup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msubsup> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msubsup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)=Am={\begin{bmatrix}1&a_{0}&a_{0}^{2}&\dots &a_{0}^{k-1}\\1&a_{1}&a_{1}^{2}&\dots &a_{1}^{k-1}\\\vdots &\vdots &\vdots &\ddots &\vdots \\1&a_{n-1}&a_{n-1}^{2}&\dots &a_{n-1}^{k-1}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7f3aac5d70733eec9747e1f03adffe25d355f979" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -7.086ex; margin-bottom: -0.252ex; width:55.608ex; height:15.843ex;" alt="{\displaystyle C(m)=Am={\begin{bmatrix}1&a_{0}&a_{0}^{2}&\dots &a_{0}^{k-1}\\1&a_{1}&a_{1}^{2}&\dots &a_{1}^{k-1}\\\vdots &\vdots &\vdots &\ddots &\vdots \\1&a_{n-1}&a_{n-1}^{2}&\dots &a_{n-1}^{k-1}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}" /></span> </p><p>This matrix is a <a href="/wiki/Vandermonde_matrix" title="Vandermonde matrix">Vandermonde matrix</a> over <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>. In other words, the Reed–Solomon code is a <a href="/wiki/Linear_code" title="Linear code">linear code</a>, and in the classical encoding procedure, its <a href="/wiki/Linear_code#Properties" title="Linear code">generator matrix</a> is <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle A}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>A</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle A}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7daff47fa58cdfd29dc333def748ff5fa4c923e3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.743ex; height:2.176ex;" alt="{\displaystyle A}" /></span>. </p> <div class="mw-heading mw-heading4"><h4 id="Systematic_encoding_procedure:_The_message_as_an_initial_sequence_of_values">Systematic encoding procedure: The message as an initial sequence of values</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=10" title="Edit section: Systematic encoding procedure: The message as an initial sequence of values"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>There are alternative encoding procedures that produce a <a href="/wiki/Systematic_code" title="Systematic code">systematic</a> Reed–Solomon code. One method uses <a href="/wiki/Lagrange_interpolation" class="mw-redirect" title="Lagrange interpolation">Lagrange interpolation</a> to compute polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a9fdc3d9c861e438bc344ab483c1e5a896fc002d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:2.934ex; height:2.009ex;" alt="{\displaystyle p_{m}}" /></span> such that <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}(a_{i})=m_{i}{\text{ for all }}i\in \{0,\dots ,k-1\}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo stretchy="false">)</mo> <mo>=</mo> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mrow class="MJX-TeXAtom-ORD"> <mtext> for all </mtext> </mrow> <mi>i</mi> <mo>∈<!-- ∈ --></mo> <mo fence="false" stretchy="false">{</mo> <mn>0</mn> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> <mo fence="false" stretchy="false">}</mo> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}(a_{i})=m_{i}{\text{ for all }}i\in \{0,\dots ,k-1\}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/32126b3ed2a8a1e10359eb8d63c7978136556631" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:37.865ex; height:2.843ex;" alt="{\displaystyle p_{m}(a_{i})=m_{i}{\text{ for all }}i\in \{0,\dots ,k-1\}.}" /></span> Then <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a9fdc3d9c861e438bc344ab483c1e5a896fc002d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:2.934ex; height:2.009ex;" alt="{\displaystyle p_{m}}" /></span> is evaluated at the other points <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{k},\dots ,a_{n-1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{k},\dots ,a_{n-1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/59e7379a678a38cf8bccf72f89ef8e1ee357341c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:12.046ex; height:2.009ex;" alt="{\displaystyle a_{k},\dots ,a_{n-1}}" /></span>. </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/afa4e3e90d19297cee876396a0015fcce94282f6" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.838ex; width:21.769ex; height:12.843ex;" alt="{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}" /></span> </p><p>This function <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4fc55753007cd3c18576f7933f6f089196732029" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.766ex; height:2.176ex;" alt="{\displaystyle C}" /></span> is a linear mapping. To generate the corresponding systematic encoding matrix G, multiply the Vandermonde matrix A by the inverse of A's left square submatrix. </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle G=(A{\text{'s left square submatrix}})^{-1}\cdot A={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>G</mi> <mo>=</mo> <mo stretchy="false">(</mo> <mi>A</mi> <mrow class="MJX-TeXAtom-ORD"> <mtext>'s left square submatrix</mtext> </mrow> <msup> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo>⋅<!-- ⋅ --></mo> <mi>A</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G=(A{\text{'s left square submatrix}})^{-1}\cdot A={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/339a849ad0936341b27b39e1f03ecbed5cbd4171" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -8.338ex; width:81.786ex; height:17.843ex;" alt="{\displaystyle G=(A{\text{'s left square submatrix}})^{-1}\cdot A={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}}" /></span> </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)=Gm}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>G</mi> <mi>m</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)=Gm}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ff3a4737c628699d66b491532c2f8f6a370b5609" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:12.582ex; height:2.843ex;" alt="{\displaystyle C(m)=Gm}" /></span> for the following <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n\times k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>×<!-- × --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n\times k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/861eac296135ef99f3b1b36f807616a9d69717f3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.446ex; height:2.176ex;" alt="{\displaystyle n\times k}" /></span>-matrix <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle G}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>G</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f5f3c8921a3b352de45446a6789b104458c9f90b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.827ex; height:2.176ex;" alt="{\displaystyle G}" /></span> with elements from <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)=Gm={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>G</mi> <mi>m</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)=Gm={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/fa3eccc8781538855fd755ccc527960c162e89f9" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -8.338ex; width:65.783ex; height:17.843ex;" alt="{\displaystyle C(m)=Gm={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}" /></span> </p> <div class="mw-heading mw-heading4"><h4 id="Discrete_Fourier_transform_and_its_inverse">Discrete Fourier transform and its inverse</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=11" title="Edit section: Discrete Fourier transform and its inverse"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A <a href="/wiki/Discrete_Fourier_transform_(general)" class="mw-redirect" title="Discrete Fourier transform (general)">discrete Fourier transform</a> is essentially the same as the encoding procedure; it uses the generator polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p_{m}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p_{m}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a9fdc3d9c861e438bc344ab483c1e5a896fc002d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:2.934ex; height:2.009ex;" alt="{\displaystyle p_{m}}" /></span> to map a set of evaluation points into the message values as shown above: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>p</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msub> <mo stretchy="false">(</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/afa4e3e90d19297cee876396a0015fcce94282f6" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.838ex; width:21.769ex; height:12.843ex;" alt="{\displaystyle C(m)={\begin{bmatrix}p_{m}(a_{0})\\p_{m}(a_{1})\\\cdots \\p_{m}(a_{n-1})\end{bmatrix}}}" /></span> </p><p>The inverse Fourier transform could be used to convert an error free set of <i>n</i> < <i>q</i> message values back into the encoding polynomial of <i>k</i> coefficients, with the constraint that in order for this to work, the set of evaluation points used to encode the message must be a set of increasing powers of <i>α</i>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{i}=\alpha ^{i}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{i}=\alpha ^{i}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/468962ee2e67a642a59cb13ec59b7bdeb8577aaf" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:7.415ex; height:3.009ex;" alt="{\displaystyle a_{i}=\alpha ^{i}}" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{0},\dots ,a_{n-1}=\{1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-1}\}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mo fence="false" stretchy="false">{</mo> <mn>1</mn> <mo>,</mo> <mi>α<!-- α --></mi> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo fence="false" stretchy="false">}</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{0},\dots ,a_{n-1}=\{1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-1}\}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/449d57e1ff3576a7392ca848ce4f2c6dc3b19f0b" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:34.679ex; height:3.176ex;" alt="{\displaystyle a_{0},\dots ,a_{n-1}=\{1,\alpha ,\alpha ^{2},\dots ,\alpha ^{n-1}\}}" /></span> </p><p>However, Lagrange interpolation performs the same conversion without the constraint on the set of evaluation points or the requirement of an error free set of message values and is used for systematic encoding, and in one of the steps of the <a href="#Gao_decoder">Gao decoder</a>. </p> <div class="mw-heading mw-heading3"><h3 id="The_BCH_view:_The_codeword_as_a_sequence_of_coefficients">The BCH view: The codeword as a sequence of coefficients</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=12" title="Edit section: The BCH view: The codeword as a sequence of coefficients"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In this view, the message is interpreted as the coefficients of a polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span>. The sender computes a related polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> of degree <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/fbd0b0f32b28f51962943ee9ede4fb34198a2521" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.398ex; height:2.343ex;" alt="{\displaystyle n-1}" /></span> where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n\leq q-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>≤<!-- ≤ --></mo> <mi>q</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n\leq q-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1ac1dd7d24f9e6244c03477e6147963fcbaa3870" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:9.566ex; height:2.509ex;" alt="{\displaystyle n\leq q-1}" /></span> and sends the polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span>. The polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> is constructed by multiplying the message polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span>, which has degree <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/21363ebd7038c93aae93127e7d910fc1b2e2c745" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.214ex; height:2.343ex;" alt="{\displaystyle k-1}" /></span>, with a <a href="/wiki/Generator_polynomial" class="mw-redirect" title="Generator polynomial">generator polynomial</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c6ca91363022bd5e4dcb17e5ef29f78b8ef00b59" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.255ex; height:2.843ex;" alt="{\displaystyle g(x)}" /></span> of degree <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n-k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b98e1d6a69bccd09a4b9b69bdf03a08c1706c8c1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.446ex; height:2.343ex;" alt="{\displaystyle n-k}" /></span> that is known to both the sender and the receiver. The generator polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c6ca91363022bd5e4dcb17e5ef29f78b8ef00b59" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.255ex; height:2.843ex;" alt="{\displaystyle g(x)}" /></span> is defined as the polynomial whose roots are sequential powers of the Galois field primitive <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)=\left(x-\alpha ^{i}\right)\left(x-\alpha ^{i+1}\right)\cdots \left(x-\alpha ^{i+n-k-1}\right)=g_{0}+g_{1}x+\cdots +g_{n-k-1}x^{n-k-1}+x^{n-k}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow> <mo>(</mo> <mrow> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> </mrow> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <mrow> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> </msup> </mrow> <mo>)</mo> </mrow> <mo>⋯<!-- ⋯ --></mo> <mrow> <mo>(</mo> <mrow> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>+</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> </mrow> <mo>)</mo> </mrow> <mo>=</mo> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo>+</mo> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mi>x</mi> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo>+</mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)=\left(x-\alpha ^{i}\right)\left(x-\alpha ^{i+1}\right)\cdots \left(x-\alpha ^{i+n-k-1}\right)=g_{0}+g_{1}x+\cdots +g_{n-k-1}x^{n-k-1}+x^{n-k}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/266ba2246aba3426245ca8f4d37cc02674fdb737" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:86.47ex; height:3.343ex;" alt="{\displaystyle g(x)=\left(x-\alpha ^{i}\right)\left(x-\alpha ^{i+1}\right)\cdots \left(x-\alpha ^{i+n-k-1}\right)=g_{0}+g_{1}x+\cdots +g_{n-k-1}x^{n-k-1}+x^{n-k}}" /></span> </p><p>For a "narrow sense code", <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle i=1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle i=1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9fb857369fbc28dab4b5d76bb835e6f196b1d1cf" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.063ex; height:2.176ex;" alt="{\displaystyle i=1}" /></span>. </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {C} =\left\{\left(s_{1},s_{2},\dots ,s_{n}\right)\;{\Big |}\;s(a)=\sum _{i=1}^{n}s_{i}a^{i}{\text{ is a polynomial that has at least the roots }}\alpha ^{1},\alpha ^{2},\dots ,\alpha ^{n-k}\right\}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">C</mi> </mrow> <mo>=</mo> <mrow> <mo>{</mo> <mrow> <mrow> <mo>(</mo> <mrow> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo>,</mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mrow> <mo>)</mo> </mrow> <mspace width="thickmathspace"></mspace> <mrow class="MJX-TeXAtom-ORD"> <mrow class="MJX-TeXAtom-ORD"> <mo maxsize="1.623em" minsize="1.623em">|</mo> </mrow> </mrow> <mspace width="thickmathspace"></mspace> <mi>s</mi> <mo stretchy="false">(</mo> <mi>a</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </munderover> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <msup> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> <mrow class="MJX-TeXAtom-ORD"> <mtext> is a polynomial that has at least the roots </mtext> </mrow> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msup> </mrow> <mo>}</mo> </mrow> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbf {C} =\left\{\left(s_{1},s_{2},\dots ,s_{n}\right)\;{\Big |}\;s(a)=\sum _{i=1}^{n}s_{i}a^{i}{\text{ is a polynomial that has at least the roots }}\alpha ^{1},\alpha ^{2},\dots ,\alpha ^{n-k}\right\}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/928e31a56ac14f355c33f34d783930bd035adb9f" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:100.141ex; height:7.509ex;" alt="{\displaystyle \mathbf {C} =\left\{\left(s_{1},s_{2},\dots ,s_{n}\right)\;{\Big |}\;s(a)=\sum _{i=1}^{n}s_{i}a^{i}{\text{ is a polynomial that has at least the roots }}\alpha ^{1},\alpha ^{2},\dots ,\alpha ^{n-k}\right\}.}" /></span> </p> <div class="mw-heading mw-heading4"><h4 id="Systematic_encoding_procedure">Systematic encoding procedure</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=13" title="Edit section: Systematic encoding procedure"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The encoding procedure for the BCH view of Reed–Solomon codes can be modified to yield a <a href="/wiki/Systematic_code" title="Systematic code">systematic encoding procedure</a>, in which each codeword contains the message as a prefix, and simply appends error correcting symbols as a suffix. Here, instead of sending <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)=p(x)g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)=p(x)g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3158d120df065bf2602fba044f9a93c886f6107c" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:15.891ex; height:2.843ex;" alt="{\displaystyle s(x)=p(x)g(x)}" /></span>, the encoder constructs the transmitted polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> such that the coefficients of the <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}" /></span> largest monomials are equal to the corresponding coefficients of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span>, and the lower-order coefficients of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> are chosen exactly in such a way that <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> becomes divisible by <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c6ca91363022bd5e4dcb17e5ef29f78b8ef00b59" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.255ex; height:2.843ex;" alt="{\displaystyle g(x)}" /></span>. Then the coefficients of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span> are a subsequence of the coefficients of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span>. To get a code that is overall systematic, we construct the message polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span> by interpreting the message as the sequence of its coefficients. </p><p>Formally, the construction is done by multiplying <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span> by <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x^{t}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x^{t}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8d2e395e2fd6847edf44e51eb4462b3d3047e4b4" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.156ex; height:2.509ex;" alt="{\displaystyle x^{t}}" /></span> to make room for the <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle t=n-k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>t</mi> <mo>=</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle t=n-k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/20fd706000b382bebb1e22ada342754bce266745" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:9.384ex; height:2.343ex;" alt="{\displaystyle t=n-k}" /></span> check symbols, dividing that product by <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c6ca91363022bd5e4dcb17e5ef29f78b8ef00b59" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.255ex; height:2.843ex;" alt="{\displaystyle g(x)}" /></span> to find the remainder, and then compensating for that remainder by subtracting it. The <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle t}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>t</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle t}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/65658b7b223af9e1acc877d848888ecdb4466560" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:0.84ex; height:2.009ex;" alt="{\displaystyle t}" /></span> check symbols are created by computing the remainder <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s_{r}(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s_{r}(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3ad749cfd068bb4ac474dd6f7b3ddc581b408bee" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.203ex; height:2.843ex;" alt="{\displaystyle s_{r}(x)}" /></span>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s_{r}(x)=p(x)\cdot x^{t}\ {\bmod {\ }}g(x).}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>⋅<!-- ⋅ --></mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> <mtext> </mtext> <mrow class="MJX-TeXAtom-ORD"> <mo lspace="thickmathspace" rspace="thickmathspace">mod</mo> <mrow class="MJX-TeXAtom-ORD"> <mtext> </mtext> </mrow> </mrow> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s_{r}(x)=p(x)\cdot x^{t}\ {\bmod {\ }}g(x).}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2f70be24efb641f4fef51128617c0af7b1c126cc" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:28.189ex; height:3.009ex;" alt="{\displaystyle s_{r}(x)=p(x)\cdot x^{t}\ {\bmod {\ }}g(x).}" /></span> </p><p>The remainder has degree at most <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle t-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>t</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle t-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a215d9553945bb84b3b5a79cc796fb7d6e0629f0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:4.842ex; height:2.343ex;" alt="{\displaystyle t-1}" /></span>, whereas the coefficients of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x^{t-1},x^{t-2},\dots ,x^{1},x^{0}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo>,</mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msup> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> <mo>,</mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x^{t-1},x^{t-2},\dots ,x^{1},x^{0}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c5194c2d2b72bec9b6928529797f8cc2bd16f549" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:20.526ex; height:3.009ex;" alt="{\displaystyle x^{t-1},x^{t-2},\dots ,x^{1},x^{0}}" /></span> in the polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)\cdot x^{t}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>⋅<!-- ⋅ --></mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)\cdot x^{t}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/3e3a47cb5feaf5a7a7ff88c74fcb7b73add115ba" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:8.233ex; height:3.009ex;" alt="{\displaystyle p(x)\cdot x^{t}}" /></span> are zero. Therefore, the following definition of the codeword <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> has the property that the first <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}" /></span> coefficients are identical to the coefficients of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8cb7afced134ef75572e5314a5d278c2d644f438" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; margin-left: -0.089ex; width:4.398ex; height:2.843ex;" alt="{\displaystyle p(x)}" /></span>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)=p(x)\cdot x^{t}-s_{r}(x)\,.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>⋅<!-- ⋅ --></mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> <mo>−<!-- − --></mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mspace width="thinmathspace"></mspace> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)=p(x)\cdot x^{t}-s_{r}(x)\,.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/80b56eaeb0c6ba929f35c7b5a5faa50f684e1383" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:24.549ex; height:3.009ex;" alt="{\displaystyle s(x)=p(x)\cdot x^{t}-s_{r}(x)\,.}" /></span> </p><p>As a result, the codewords <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> are indeed elements of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {C} }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="bold">C</mi> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathbf {C} }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/11de80478fce9090e43eed19100b37cc841661e8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.931ex; height:2.176ex;" alt="{\displaystyle \mathbf {C} }" /></span>, that is, they are divisible by the generator polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c6ca91363022bd5e4dcb17e5ef29f78b8ef00b59" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.255ex; height:2.843ex;" alt="{\displaystyle g(x)}" /></span>:<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)\equiv p(x)\cdot x^{t}-s_{r}(x)\equiv s_{r}(x)-s_{r}(x)\equiv 0\mod g(x)\,.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>≡<!-- ≡ --></mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>⋅<!-- ⋅ --></mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> <mo>−<!-- − --></mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>≡<!-- ≡ --></mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>−<!-- − --></mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>≡<!-- ≡ --></mo> <mn>0</mn> <mspace width="1em"></mspace> <mi>mod</mi> <mspace width="thinmathspace"></mspace> <mspace width="thinmathspace"></mspace> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mspace width="thinmathspace"></mspace> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)\equiv p(x)\cdot x^{t}-s_{r}(x)\equiv s_{r}(x)-s_{r}(x)\equiv 0\mod g(x)\,.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/27311fb25410046b604d40686d04de6da05304c5" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:57.672ex; height:3.009ex;" alt="{\displaystyle s(x)\equiv p(x)\cdot x^{t}-s_{r}(x)\equiv s_{r}(x)-s_{r}(x)\equiv 0\mod g(x)\,.}" /></span> </p><p>This function <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:1.676ex;" alt="{\displaystyle s}" /></span> is a linear mapping. To generate the corresponding systematic encoding matrix G, set G's left square submatrix to the identity matrix and then encode each row: </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle G={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>G</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a30b871e5959a092f5e5921e0530bbd808abd466" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -8.338ex; width:45.946ex; height:17.843ex;" alt="{\displaystyle G={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}}" /></span> Ignoring leading zeroes, the last row = <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c6ca91363022bd5e4dcb17e5ef29f78b8ef00b59" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.255ex; height:2.843ex;" alt="{\displaystyle g(x)}" /></span>. </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)=Gm}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>G</mi> <mi>m</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)=Gm}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ff3a4737c628699d66b491532c2f8f6a370b5609" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:12.582ex; height:2.843ex;" alt="{\displaystyle C(m)=Gm}" /></span> for the following <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n\times k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>×<!-- × --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n\times k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/861eac296135ef99f3b1b36f807616a9d69717f3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.446ex; height:2.176ex;" alt="{\displaystyle n\times k}" /></span>-matrix <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle G}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>G</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle G}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f5f3c8921a3b352de45446a6789b104458c9f90b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.827ex; height:2.176ex;" alt="{\displaystyle G}" /></span> with elements from <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C(m)=Gm={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo stretchy="false">(</mo> <mi>m</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>G</mi> <mi>m</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd></mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>0</mn> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <mn>1</mn> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>…<!-- … --></mo> </mtd> <mtd> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>,</mo> <mi>n</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>m</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C(m)=Gm={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/fa3eccc8781538855fd755ccc527960c162e89f9" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -8.338ex; width:65.783ex; height:17.843ex;" alt="{\displaystyle C(m)=Gm={\begin{bmatrix}1&0&0&\dots &0&g_{1,k+1}&\dots &g_{1,n}\\0&1&0&\dots &0&g_{2,k+1}&\dots &g_{2,n}\\0&0&1&\dots &0&g_{3,k+1}&\dots &g_{3,n}\\\vdots &\vdots &\vdots &&\vdots &\vdots &&\vdots \\0&\dots &0&\dots &1&g_{k,k+1}&\dots &g_{k,n}\end{bmatrix}}{\begin{bmatrix}m_{0}\\m_{1}\\\vdots \\m_{k-1}\end{bmatrix}}}" /></span> </p> <div class="mw-heading mw-heading2"><h2 id="Properties">Properties</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=14" title="Edit section: Properties"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The Reed–Solomon code is a [<i>n</i>, <i>k</i>, <i>n</i> − <i>k</i> + 1] code; in other words, it is a <a href="/wiki/Linear_code" title="Linear code">linear block code</a> of length <i>n</i> (over <i>F</i>) with <a href="/wiki/Dimension_(vector_space)" title="Dimension (vector space)">dimension</a> <i>k</i> and minimum <a href="/wiki/Hamming_distance" title="Hamming distance">Hamming distance</a> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle d_{\min }=n-k+1.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="false" scriptlevel="0"> <msub> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mo movablelimits="true" form="prefix">min</mo> </mrow> </msub> <mo>=</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>+</mo> <mn>1.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\textstyle d_{\min }=n-k+1.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/979adaf88ea43ef25b999ba6ef10ca71ed1704d6" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:17.376ex; height:2.509ex;" alt="{\textstyle d_{\min }=n-k+1.}" /></span> The Reed–Solomon code is optimal in the sense that the minimum distance has the maximum value possible for a linear code of size (<i>n</i>, <i>k</i>); this is known as the <a href="/wiki/Singleton_bound" title="Singleton bound">Singleton bound</a>. Such a code is also called a <a href="/wiki/MDS_code" class="mw-redirect" title="MDS code">maximum distance separable (MDS) code</a>. </p><p>The error-correcting ability of a Reed–Solomon code is determined by its minimum distance, or equivalently, by <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n-k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b98e1d6a69bccd09a4b9b69bdf03a08c1706c8c1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.446ex; height:2.343ex;" alt="{\displaystyle n-k}" /></span>, the measure of redundancy in the block. If the locations of the error symbols are not known in advance, then a Reed–Solomon code can correct up to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (n-k)/2}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <mn>2</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (n-k)/2}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f4e64a932c23c9c478ad0948a57c3496ade18057" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:9.581ex; height:2.843ex;" alt="{\displaystyle (n-k)/2}" /></span> erroneous symbols, i.e., it can correct half as many errors as there are redundant symbols added to the block. Sometimes error locations are known in advance (e.g., "side information" in <a href="/wiki/Demodulator" class="mw-redirect" title="Demodulator">demodulator</a> <a href="/wiki/Signal-to-noise_ratio" title="Signal-to-noise ratio">signal-to-noise ratios</a>)—these are called <a href="/wiki/Erasure_channel" class="mw-redirect" title="Erasure channel">erasures</a>. A Reed–Solomon code (like any <a href="/wiki/Maximum_distance_separable_code" class="mw-redirect" title="Maximum distance separable code">MDS code</a>) is able to correct twice as many erasures as errors, and any combination of errors and erasures can be corrected as long as the relation <span class="texhtml">2<i>E</i> + <i>S</i> ≤ <i>n</i> − <i>k</i></span> is satisfied, where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle E}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>E</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle E}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4232c9de2ee3eec0a9c0a19b15ab92daa6223f9b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.776ex; height:2.176ex;" alt="{\displaystyle E}" /></span> is the number of errors and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>S</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4611d85173cd3b508e67077d4a1252c9c05abca2" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.499ex; height:2.176ex;" alt="{\displaystyle S}" /></span> is the number of erasures in the block. </p> <figure class="mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/File:RS_BER.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6e/RS_BER.png/500px-RS_BER.png" decoding="async" width="400" height="299" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/6/6e/RS_BER.png 1.5x" data-file-width="561" data-file-height="420" /></a><figcaption> Theoretical BER performance of the Reed-Solomon code (N=255, K=233, QPSK, AWGN). Step-like characteristic.</figcaption></figure> <p>The theoretical error bound can be described via the following formula for the <a href="/wiki/Additive_white_Gaussian_noise" title="Additive white Gaussian noise">AWGN</a> channel for <a href="/wiki/Frequency-shift_keying" title="Frequency-shift keying">FSK</a>:<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle P_{b}\approx {\frac {2^{m-1}}{2^{m}-1}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>b</mi> </mrow> </msub> <mo>≈<!-- ≈ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mrow> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msup> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </mfrac> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> </mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>ℓ<!-- ℓ --></mi> <mo>=</mo> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </munderover> <mi>ℓ<!-- ℓ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mrow class="MJX-TeXAtom-OPEN"> <mo maxsize="2.047em" minsize="2.047em">(</mo> </mrow> <mfrac linethickness="0"> <mi>n</mi> <mi>ℓ<!-- ℓ --></mi> </mfrac> <mrow class="MJX-TeXAtom-CLOSE"> <mo maxsize="2.047em" minsize="2.047em">)</mo> </mrow> </mrow> </mrow> <msubsup> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ℓ<!-- ℓ --></mi> </mrow> </msubsup> <mo stretchy="false">(</mo> <mn>1</mn> <mo>−<!-- − --></mo> <msub> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> </msub> <msup> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>ℓ<!-- ℓ --></mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle P_{b}\approx {\frac {2^{m-1}}{2^{m}-1}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d138500c9968956444a24117bfa4f0ecb2f1ad1d" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:40.884ex; height:7.009ex;" alt="{\displaystyle P_{b}\approx {\frac {2^{m-1}}{2^{m}-1}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }}" /></span> and for other modulation schemes: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle P_{b}\approx {\frac {1}{m}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>b</mi> </mrow> </msub> <mo>≈<!-- ≈ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mi>m</mi> </mfrac> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> </mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>ℓ<!-- ℓ --></mi> <mo>=</mo> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </munderover> <mi>ℓ<!-- ℓ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mrow class="MJX-TeXAtom-OPEN"> <mo maxsize="2.047em" minsize="2.047em">(</mo> </mrow> <mfrac linethickness="0"> <mi>n</mi> <mi>ℓ<!-- ℓ --></mi> </mfrac> <mrow class="MJX-TeXAtom-CLOSE"> <mo maxsize="2.047em" minsize="2.047em">)</mo> </mrow> </mrow> </mrow> <msubsup> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ℓ<!-- ℓ --></mi> </mrow> </msubsup> <mo stretchy="false">(</mo> <mn>1</mn> <mo>−<!-- − --></mo> <msub> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> </msub> <msup> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>ℓ<!-- ℓ --></mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle P_{b}\approx {\frac {1}{m}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/67dc74149ab7efda5baeb04b3bbca256b2df9af7" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:36.084ex; height:7.009ex;" alt="{\displaystyle P_{b}\approx {\frac {1}{m}}{\frac {1}{n}}\sum _{\ell =t+1}^{n}\ell {n \choose \ell }P_{s}^{\ell }(1-P_{s})^{n-\ell }}" /></span> where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle t={\frac {1}{2}}(d_{\min }-1)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="false" scriptlevel="0"> <mi>t</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>2</mn> </mfrac> </mrow> <mo stretchy="false">(</mo> <msub> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mo movablelimits="true" form="prefix">min</mo> </mrow> </msub> <mo>−<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\textstyle t={\frac {1}{2}}(d_{\min }-1)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6b707cd148c70fde8e2c23b39be4d1112958b83a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.171ex; width:15.59ex; height:3.509ex;" alt="{\textstyle t={\frac {1}{2}}(d_{\min }-1)}" /></span>, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle P_{s}=1-(1-s)^{h}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>P</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>s</mi> </mrow> </msub> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mo stretchy="false">(</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mi>s</mi> <msup> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>h</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle P_{s}=1-(1-s)^{h}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ea7a171226c887215c77db3da1337d66315a50a1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.679ex; height:3.176ex;" alt="{\displaystyle P_{s}=1-(1-s)^{h}}" /></span>, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle h={\frac {m}{\log _{2}M}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>h</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mi>m</mi> <mrow> <msub> <mi>log</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>⁡<!-- --></mo> <mi>M</mi> </mrow> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle h={\frac {m}{\log _{2}M}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f9f2a22c2938cc361136cfe8cea8764fda1e15c3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:12.129ex; height:5.343ex;" alt="{\displaystyle h={\frac {m}{\log _{2}M}}}" /></span>, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/01d131dfd7673938b947072a13a9744fe997e632" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:1.676ex;" alt="{\displaystyle s}" /></span> is the symbol error rate in uncoded AWGN case and <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle M}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>M</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle M}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f82cade9898ced02fdd08712e5f0c0151758a0dd" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.442ex; height:2.176ex;" alt="{\displaystyle M}" /></span> is the modulation order. </p><p>For practical uses of Reed–Solomon codes, it is common to use a finite field <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span> with <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{m}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2^{m}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/667d0154f26e56e3f7979803f08afac16b4dcb16" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.837ex; height:2.343ex;" alt="{\displaystyle 2^{m}}" /></span> elements. In this case, each symbol can be represented as an <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle m}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>m</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle m}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0a07d98bb302f3856cbabc47b2b9016692e3f7bc" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.04ex; height:1.676ex;" alt="{\displaystyle m}" /></span>-bit value. The sender sends the data points as encoded blocks, and the number of symbols in the encoded block is <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n=2^{m}-1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>=</mo> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mi>m</mi> </mrow> </msup> <mo>−<!-- − --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n=2^{m}-1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6d67dc75750941f57f3231fdb1e7815a8b6976de" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:11.334ex; height:2.509ex;" alt="{\displaystyle n=2^{m}-1}" /></span>. Thus a Reed–Solomon code operating on 8-bit symbols has <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n=2^{8}-1=255}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>=</mo> <msup> <mn>2</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>8</mn> </mrow> </msup> <mo>−<!-- − --></mo> <mn>1</mn> <mo>=</mo> <mn>255</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n=2^{8}-1=255}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d0dd1e854fc9e10a4e1079fcaa5dd042ffb58d95" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:17.299ex; height:2.843ex;" alt="{\displaystyle n=2^{8}-1=255}" /></span> symbols per block. (This is a very popular value because of the prevalence of <a href="/wiki/Byte-oriented" class="mw-redirect" title="Byte-oriented">byte-oriented</a> computer systems.) The number <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c3c9a2c7b599b37105512c5d570edc034056dd40" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.211ex; height:2.176ex;" alt="{\displaystyle k}" /></span>, with <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k<n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo><</mo> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k<n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/48ab7000a6f47e3a09a79dcbe31b89272b0c1f1f" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.704ex; height:2.176ex;" alt="{\displaystyle k<n}" /></span>, of <i>data</i> symbols in the block is a design parameter. A commonly used code encodes <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k=223}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>k</mi> <mo>=</mo> <mn>223</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle k=223}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9da7a76696da59aca7f65ee03fe3051c788bc5d0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:7.797ex; height:2.176ex;" alt="{\displaystyle k=223}" /></span> eight-bit data symbols plus 32 eight-bit parity symbols in an <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n=255}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>=</mo> <mn>255</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n=255}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1bf778dbae8ef593cc3b7fc9918d600345f9761b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:7.981ex; height:2.176ex;" alt="{\displaystyle n=255}" /></span>-symbol block; this is denoted as a <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (n,k)=(255,223)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <mi>n</mi> <mo>,</mo> <mi>k</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mo stretchy="false">(</mo> <mn>255</mn> <mo>,</mo> <mn>223</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (n,k)=(255,223)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d9082ff9055fc9735bf92b4a88b823c4ba9b10e7" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:18.366ex; height:2.843ex;" alt="{\displaystyle (n,k)=(255,223)}" /></span> code, and is capable of correcting up to 16 symbol errors per block. </p><p>The Reed–Solomon code properties discussed above make them especially well-suited to applications where errors occur in <a href="/wiki/Burst_error" title="Burst error">bursts</a>. This is because it does not matter to the code how many bits in a symbol are in error — if multiple bits in a symbol are corrupted it only counts as a single error. Conversely, if a data stream is not characterized by error bursts or drop-outs but by random single bit errors, a Reed–Solomon code is usually a poor choice compared to a binary code. </p><p>The Reed–Solomon code, like the <a href="/wiki/Convolutional_code" title="Convolutional code">convolutional code</a>, is a transparent code. This means that if the channel symbols have been <a href="/wiki/Bitwise_NOT" class="mw-redirect" title="Bitwise NOT">inverted</a> somewhere along the line, the decoders will still operate. The result will be the inversion of the original data. However, the Reed–Solomon code loses its transparency when the code is shortened (<i>see 'Remarks' at the end of this section</i>). The "missing" bits in a shortened code need to be filled by either zeros or ones, depending on whether the data is complemented or not. (To put it another way, if the symbols are inverted, then the zero-fill needs to be inverted to a one-fill.) For this reason it is mandatory that the sense of the data (i.e., true or complemented) be resolved before Reed–Solomon decoding. </p><p>Whether the Reed–Solomon code is <a href="/wiki/Cyclic_code" title="Cyclic code">cyclic</a> or not depends on subtle details of the construction. In the original view of Reed and Solomon, where the codewords are the values of a polynomial, one can choose the sequence of evaluation points in such a way as to make the code cyclic. In particular, if <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }" /></span> is a <a href="/wiki/Primitive_root_modulo_n" title="Primitive root modulo n">primitive root</a> of the field <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span>, then by definition all non-zero elements of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span> take the form <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha ^{i}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha ^{i}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c114e2fb3c65eea83541fc81d81ab6df7fca4da2" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.287ex; height:2.676ex;" alt="{\displaystyle \alpha ^{i}}" /></span> for <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle i\in \{1,\dots ,q-1\}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>i</mi> <mo>∈<!-- ∈ --></mo> <mo fence="false" stretchy="false">{</mo> <mn>1</mn> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>q</mi> <mo>−<!-- − --></mo> <mn>1</mn> <mo fence="false" stretchy="false">}</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle i\in \{1,\dots ,q-1\}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1c3ac37485000c4839f665d057ac2f49eb9d4778" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.381ex; height:2.843ex;" alt="{\displaystyle i\in \{1,\dots ,q-1\}}" /></span>, where <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle q=|F|}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>q</mi> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">|</mo> </mrow> <mi>F</mi> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">|</mo> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle q=|F|}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ed759e55114f652058cc4898f9f22171f13bc77d" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:7.202ex; height:2.843ex;" alt="{\displaystyle q=|F|}" /></span>. Each polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/81eac1e205430d1f40810df36a0edffdc367af36" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:1.259ex; height:2.009ex;" alt="{\displaystyle p}" /></span> over <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle F}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>F</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle F}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/545fd099af8541605f7ee55f08225526be88ce57" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.741ex; height:2.176ex;" alt="{\displaystyle F}" /></span> gives rise to a codeword <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (p(\alpha ^{1}),\dots ,p(\alpha ^{q-1}))}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <mi>p</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>p</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>q</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (p(\alpha ^{1}),\dots ,p(\alpha ^{q-1}))}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/51e92405b72f105b8406ba31290677ddcd45f0da" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:20.063ex; height:3.176ex;" alt="{\displaystyle (p(\alpha ^{1}),\dots ,p(\alpha ^{q-1}))}" /></span>. Since the function <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a\mapsto p(\alpha a)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>a</mi> <mo stretchy="false">↦<!-- ↦ --></mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>α<!-- α --></mi> <mi>a</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a\mapsto p(\alpha a)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/acdc3864f3db55ce6427a6b03b3e368ff1031a42" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:10.54ex; height:2.843ex;" alt="{\displaystyle a\mapsto p(\alpha a)}" /></span> is also a polynomial of the same degree, this function gives rise to a codeword <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (p(\alpha ^{2}),\dots ,p(\alpha ^{q}))}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <mi>p</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>p</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>q</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (p(\alpha ^{2}),\dots ,p(\alpha ^{q}))}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a8a1192568a26a471b9beb731e9917109339bdf3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.963ex; height:3.176ex;" alt="{\displaystyle (p(\alpha ^{2}),\dots ,p(\alpha ^{q}))}" /></span>; since <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha ^{q}=\alpha ^{1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>q</mi> </mrow> </msup> <mo>=</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha ^{q}=\alpha ^{1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/eabe1e3718440d8a01f878c6a9d10c5580c6efb1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:8.116ex; height:2.676ex;" alt="{\displaystyle \alpha ^{q}=\alpha ^{1}}" /></span> holds, this codeword is the <a href="/wiki/Circular_shift" title="Circular shift">cyclic left-shift</a> of the original codeword derived from <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle p}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>p</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle p}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/81eac1e205430d1f40810df36a0edffdc367af36" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.089ex; width:1.259ex; height:2.009ex;" alt="{\displaystyle p}" /></span>. So choosing a sequence of primitive root powers as the evaluation points makes the original view Reed–Solomon code <a href="/wiki/Cyclic_code" title="Cyclic code">cyclic</a>. Reed–Solomon codes in the BCH view are always cyclic because <a href="/wiki/BCH_code#Properties" title="BCH code">BCH codes are cyclic</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Remarks">Remarks</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=15" title="Edit section: Remarks"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Designers are not required to use the "natural" sizes of Reed–Solomon code blocks. A technique known as "shortening" can produce a smaller code of any desired size from a larger code. For example, the widely used (255,223) code can be converted to a (160,128) code by padding the unused portion of the source block with 95 binary zeroes and not transmitting them. At the decoder, the same portion of the block is loaded locally with binary zeroes. </p><p>The QR code, Ver 3 (29×29) uses interleaved blocks. The message has 26 data bytes and is encoded using two Reed-Solomon code blocks. Each block is a (255,233) Reed Solomon code shortened to a (35,13) code. </p><p>The Delsarte–Goethals–Seidel<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> theorem illustrates an example of an application of shortened Reed–Solomon codes. In parallel to shortening, a technique known as <a href="/wiki/Punctured_code" title="Punctured code">puncturing</a> allows omitting some of the encoded parity symbols. </p> <div class="mw-heading mw-heading2"><h2 id="BCH_view_decoders">BCH view decoders</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=16" title="Edit section: BCH view decoders"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The decoders described in this section use the BCH view of a codeword as a sequence of coefficients. They use a fixed generator polynomial known to both encoder and decoder. </p> <div class="mw-heading mw-heading3"><h3 id="Peterson–Gorenstein–Zierler_decoder"><span id="Peterson.E2.80.93Gorenstein.E2.80.93Zierler_decoder"></span>Peterson–Gorenstein–Zierler decoder</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=17" title="Edit section: Peterson–Gorenstein–Zierler decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="/wiki/BCH_code#Peterson–Gorenstein–Zierler_algorithm" title="BCH code">Peterson–Gorenstein–Zierler algorithm</a></div> <p>Daniel Gorenstein and Neal Zierler developed a decoder that was described in a MIT Lincoln Laboratory report by Zierler in January 1960 and later in a paper in June 1961.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> The Gorenstein–Zierler decoder and the related work on BCH codes are described in the book <i>Error Correcting Codes</i> by <a href="/wiki/W._Wesley_Peterson" title="W. Wesley Peterson">W. Wesley Peterson</a> (1961).<sup id="cite_ref-Peterson61_3-1" class="reference"><a href="#cite_note-Peterson61-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources"><span title="This citation requires a reference to the specific page or range of pages in which the material appears. (March 2025)">page needed</span></a></i>]</sup> </p> <div class="mw-heading mw-heading4"><h4 id="Formulation">Formulation</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=18" title="Edit section: Formulation"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The transmitted message, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (c_{0},\ldots ,c_{i},\ldots ,c_{n-1})}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (c_{0},\ldots ,c_{i},\ldots ,c_{n-1})}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/52d0cf7091b1fc0ac3a6dad4068f6a0755eebfb0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:20.359ex; height:2.843ex;" alt="{\displaystyle (c_{0},\ldots ,c_{i},\ldots ,c_{n-1})}" /></span>, is viewed as the coefficients of a polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)=\sum _{i=0}^{n-1}c_{i}x^{i}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)=\sum _{i=0}^{n-1}c_{i}x^{i}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2a3b03897ae82c02194a62a6c00e368ecea6bdb1" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:15.653ex; height:7.343ex;" alt="{\displaystyle s(x)=\sum _{i=0}^{n-1}c_{i}x^{i}.}" /></span> </p><p>As a result of the Reed–Solomon encoding procedure, <i>s</i>(<i>x</i>) is divisible by the generator polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)=\prod _{j=1}^{n-k}(x-\alpha ^{j}),}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∏<!-- ∏ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </munderover> <mo stretchy="false">(</mo> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)=\prod _{j=1}^{n-k}(x-\alpha ^{j}),}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f53edd89685a7f34edd0881e2549f5e0b337e308" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.338ex; width:19.498ex; height:7.676ex;" alt="{\displaystyle g(x)=\prod _{j=1}^{n-k}(x-\alpha ^{j}),}" /></span> where <i>α</i> is a primitive element. </p><p>Since <i>s</i>(<i>x</i>) is a multiple of the generator <i>g</i>(<i>x</i>), it follows that it "inherits" all its roots: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x){\bmod {(}}x-\alpha ^{j})=g(x){\bmod {(}}x-\alpha ^{j})=0.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mo lspace="thickmathspace" rspace="thickmathspace">mod</mo> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">(</mo> </mrow> </mrow> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mo lspace="thickmathspace" rspace="thickmathspace">mod</mo> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">(</mo> </mrow> </mrow> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x){\bmod {(}}x-\alpha ^{j})=g(x){\bmod {(}}x-\alpha ^{j})=0.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5a8e945f31eb85d59f21d2ffe6b86e61a0a7a7f6" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:44.606ex; height:3.176ex;" alt="{\displaystyle s(x){\bmod {(}}x-\alpha ^{j})=g(x){\bmod {(}}x-\alpha ^{j})=0.}" /></span> Therefore, <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(\alpha ^{j})=0,\ j=1,2,\ldots ,n-k.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0</mn> <mo>,</mo> <mtext> </mtext> <mi>j</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(\alpha ^{j})=0,\ j=1,2,\ldots ,n-k.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f0db288d8ceb5602b9fb41d89f3191217a76c5e8" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:29.859ex; height:3.176ex;" alt="{\displaystyle s(\alpha ^{j})=0,\ j=1,2,\ldots ,n-k.}" /></span> </p><p>The transmitted polynomial is corrupted in transit by an error polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle e(x)=\sum _{i=0}^{n-1}e_{i}x^{i}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>e</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </munderover> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle e(x)=\sum _{i=0}^{n-1}e_{i}x^{i}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e8573e9892c332f594fa357c2c1775cf5697b2ff" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:15.076ex; height:7.343ex;" alt="{\displaystyle e(x)=\sum _{i=0}^{n-1}e_{i}x^{i}}" /></span> to produce the received polynomial <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle r(x)=s(x)+e(x).}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>r</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>+</mo> <mi>e</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle r(x)=s(x)+e(x).}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/eac987597bc2bbf6acc21a72ffb4fd2768b4c1af" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:19.225ex; height:2.843ex;" alt="{\displaystyle r(x)=s(x)+e(x).}" /></span> </p><p>Coefficient <i>e<sub>i</sub></i> will be zero if there is no error at that power of <i>x</i>, and nonzero if there is an error. If there are <i>ν</i> errors at distinct powers <i>i<sub>k</sub></i> of <i>x</i>, then <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle e(x)=\sum _{k=1}^{\nu }e_{i_{k}}x^{i_{k}}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>e</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msup> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle e(x)=\sum _{k=1}^{\nu }e_{i_{k}}x^{i_{k}}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/ebcda0ebd0b139ff4a100adca8e64822d3057049" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:17.442ex; height:6.843ex;" alt="{\displaystyle e(x)=\sum _{k=1}^{\nu }e_{i_{k}}x^{i_{k}}.}" /></span> </p><p>The goal of the decoder is to find the number of errors (<i>ν</i>), the positions of the errors (<i>i<sub>k</sub></i>), and the error values at those positions (<i>e<sub>i<sub>k</sub></sub></i>). From those, <i>e</i>(<i>x</i>) can be calculated and subtracted from <i>r</i>(<i>x</i>) to get the originally sent message <i>s</i>(<i>x</i>). </p> <div class="mw-heading mw-heading4"><h4 id="Syndrome_decoding">Syndrome decoding</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=19" title="Edit section: Syndrome decoding"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The decoder starts by evaluating the polynomial as received at points <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha ^{1}\dots \alpha ^{n-k}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> <mo>…<!-- … --></mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha ^{1}\dots \alpha ^{n-k}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e7884967ff259386ada548014852496717a4e5dc" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:10.88ex; height:2.676ex;" alt="{\displaystyle \alpha ^{1}\dots \alpha ^{n-k}}" /></span>. We call the results of that evaluation the "syndromes" <i>S</i><sub><i>j</i></sub>. They are defined as <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}S_{j}&=r(\alpha ^{j})=s(\alpha ^{j})+e(\alpha ^{j})=0+e(\alpha ^{j})\\&=e(\alpha ^{j})\\&=\sum _{k=1}^{\nu }e_{i_{k}}{(\alpha ^{j})}^{i_{k}},\quad j=1,2,\ldots ,n-k.\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> </mtd> <mtd> <mi></mi> <mo>=</mo> <mi>r</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mi>s</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>+</mo> <mi>e</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0</mn> <mo>+</mo> <mi>e</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd></mtd> <mtd> <mi></mi> <mo>=</mo> <mi>e</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd></mtd> <mtd> <mi></mi> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msub> <msup> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> </mrow> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msup> <mo>,</mo> <mspace width="1em"></mspace> <mi>j</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mn>2</mn> <mo>,</mo> <mo>…<!-- … --></mo> <mo>,</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo>.</mo> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}S_{j}&=r(\alpha ^{j})=s(\alpha ^{j})+e(\alpha ^{j})=0+e(\alpha ^{j})\\&=e(\alpha ^{j})\\&=\sum _{k=1}^{\nu }e_{i_{k}}{(\alpha ^{j})}^{i_{k}},\quad j=1,2,\ldots ,n-k.\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/88184eeecbf1579025f134339c6271b827158ad2" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -6.338ex; width:40.579ex; height:13.843ex;" alt="{\displaystyle {\begin{aligned}S_{j}&=r(\alpha ^{j})=s(\alpha ^{j})+e(\alpha ^{j})=0+e(\alpha ^{j})\\&=e(\alpha ^{j})\\&=\sum _{k=1}^{\nu }e_{i_{k}}{(\alpha ^{j})}^{i_{k}},\quad j=1,2,\ldots ,n-k.\end{aligned}}}" /></span> Note that <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(\alpha ^{j})=0}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(\alpha ^{j})=0}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5747e401d1b507dbd824712b93bb6f8d720de55a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:9.558ex; height:3.176ex;" alt="{\displaystyle s(\alpha ^{j})=0}" /></span> because <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/10f51eec88706f1a26ac7430dc71d92c15e71a6e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.229ex; height:2.843ex;" alt="{\displaystyle s(x)}" /></span> has roots at <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha ^{j}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha ^{j}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/27b185f9f9058e5b7f59374f9a0e2069f9d0c237" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.397ex; height:2.676ex;" alt="{\displaystyle \alpha ^{j}}" /></span>, as shown in the previous section. </p><p>The advantage of looking at the syndromes is that the message polynomial drops out. In other words, the syndromes only relate to the error and are unaffected by the actual contents of the message being transmitted. If the syndromes are all zero, the algorithm stops here and reports that the message was not corrupted in transit. </p> <div class="mw-heading mw-heading4"><h4 id="Error_locators_and_error_values">Error locators and error values</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=20" title="Edit section: Error locators and error values"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>For convenience, define the <b>error locators</b> <i>X<sub>k</sub></i> and <b>error values</b> <i>Y<sub>k</sub></i> as <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle X_{k}=\alpha ^{i_{k}},\quad Y_{k}=e_{i_{k}}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msup> <mo>,</mo> <mspace width="1em"></mspace> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msub> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle X_{k}=\alpha ^{i_{k}},\quad Y_{k}=e_{i_{k}}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/230f97657fa0c9d19ba8c53d3ba51bd2b3d1f27e" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:21.542ex; height:3.343ex;" alt="{\displaystyle X_{k}=\alpha ^{i_{k}},\quad Y_{k}=e_{i_{k}}.}" /></span> </p><p>Then the syndromes can be written in terms of these error locators and error values as <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S_{j}=\sum _{k=1}^{\nu }Y_{k}X_{k}^{j}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> <mo>=</mo> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msubsup> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S_{j}=\sum _{k=1}^{\nu }Y_{k}X_{k}^{j}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8f1b0d46a3a80a9f47d39ceb3cf0d17329a7eb0d" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:15.274ex; height:6.843ex;" alt="{\displaystyle S_{j}=\sum _{k=1}^{\nu }Y_{k}X_{k}^{j}.}" /></span> </p><p>This definition of the syndrome values is equivalent to the previous since <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {(\alpha ^{j})}^{i_{k}}=\alpha ^{j\cdot i_{k}}={(\alpha ^{i_{k}})}^{j}=X_{k}^{j}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> </mrow> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msup> <mo>=</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>⋅<!-- ⋅ --></mo> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msup> <mo>=</mo> <msup> <mrow class="MJX-TeXAtom-ORD"> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <msub> <mi>i</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mrow> </msup> <mo stretchy="false">)</mo> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo>=</mo> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msubsup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {(\alpha ^{j})}^{i_{k}}=\alpha ^{j\cdot i_{k}}={(\alpha ^{i_{k}})}^{j}=X_{k}^{j}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/07e0654db0632ff5ba8d86f4f796d3fbd1c22cf0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:28.322ex; height:3.676ex;" alt="{\displaystyle {(\alpha ^{j})}^{i_{k}}=\alpha ^{j\cdot i_{k}}={(\alpha ^{i_{k}})}^{j}=X_{k}^{j}}" /></span>. </p><p>The syndromes give a system of <span class="texhtml"><i>n</i> − <i>k</i> ≥ 2<i>ν</i></span> equations in 2<i>ν</i> unknowns, but that system of equations is nonlinear in the <i>X<sub>k</sub></i> and does not have an obvious solution. However, if the <i>X<sub>k</sub></i> were known (see below), then the syndrome equations provide a linear system of equations <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}X_{1}^{1}&X_{2}^{1}&\cdots &X_{\nu }^{1}\\X_{1}^{2}&X_{2}^{2}&\cdots &X_{\nu }^{2}\\\vdots &\vdots &\ddots &\vdots \\X_{1}^{n-k}&X_{2}^{n-k}&\cdots &X_{\nu }^{n-k}\\\end{bmatrix}}{\begin{bmatrix}Y_{1}\\Y_{2}\\\vdots \\Y_{\nu }\end{bmatrix}}={\begin{bmatrix}S_{1}\\S_{2}\\\vdots \\S_{n-k}\end{bmatrix}},}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msubsup> </mtd> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msubsup> </mtd> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msubsup> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msubsup> </mtd> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msubsup> </mtd> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msubsup> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋱<!-- ⋱ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msubsup> </mtd> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msubsup> </mtd> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> <mtd> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msubsup> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}X_{1}^{1}&X_{2}^{1}&\cdots &X_{\nu }^{1}\\X_{1}^{2}&X_{2}^{2}&\cdots &X_{\nu }^{2}\\\vdots &\vdots &\ddots &\vdots \\X_{1}^{n-k}&X_{2}^{n-k}&\cdots &X_{\nu }^{n-k}\\\end{bmatrix}}{\begin{bmatrix}Y_{1}\\Y_{2}\\\vdots \\Y_{\nu }\end{bmatrix}}={\begin{bmatrix}S_{1}\\S_{2}\\\vdots \\S_{n-k}\end{bmatrix}},}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6eb581cb88e71f26ef96c64ca0b75b420dc24574" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -7.005ex; width:48.532ex; height:15.176ex;" alt="{\displaystyle {\begin{bmatrix}X_{1}^{1}&X_{2}^{1}&\cdots &X_{\nu }^{1}\\X_{1}^{2}&X_{2}^{2}&\cdots &X_{\nu }^{2}\\\vdots &\vdots &\ddots &\vdots \\X_{1}^{n-k}&X_{2}^{n-k}&\cdots &X_{\nu }^{n-k}\\\end{bmatrix}}{\begin{bmatrix}Y_{1}\\Y_{2}\\\vdots \\Y_{\nu }\end{bmatrix}}={\begin{bmatrix}S_{1}\\S_{2}\\\vdots \\S_{n-k}\end{bmatrix}},}" /></span> which can easily be solved for the <i>Y<sub>k</sub></i> error values. </p><p>Consequently, the problem is finding the <i>X<sub>k</sub></i>, because then the leftmost matrix would be known, and both sides of the equation could be multiplied by its inverse, yielding Y<i><sub>k</sub></i> </p><p>In the variant of this algorithm where the locations of the errors are already known (when it is being used as an <a href="/wiki/Erasure_code" title="Erasure code">erasure code</a>), this is the end. The error locations (<i>X<sub>k</sub></i>) are already known by some other method (for example, in an FM transmission, the sections where the bitstream was unclear or overcome with interference are probabilistically determinable from frequency analysis). In this scenario, up to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n-k}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n-k}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b98e1d6a69bccd09a4b9b69bdf03a08c1706c8c1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.505ex; width:5.446ex; height:2.343ex;" alt="{\displaystyle n-k}" /></span> errors can be corrected. </p><p>The rest of the algorithm serves to locate the errors and will require syndrome values up to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2\nu }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>2</mn> <mi>ν<!-- ν --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 2\nu }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/db2654d0632cb4b4cd30cfddb80a75ba7d743216" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:2.395ex; height:2.176ex;" alt="{\displaystyle 2\nu }" /></span>, instead of just the <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \nu }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>ν<!-- ν --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \nu }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c15bbbb971240cf328aba572178f091684585468" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.232ex; height:1.676ex;" alt="{\displaystyle \nu }" /></span> used thus far. This is why twice as many error-correcting symbols need to be added as can be corrected without knowing their locations. </p> <div class="mw-heading mw-heading4"><h4 id="Error_locator_polynomial">Error locator polynomial</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=21" title="Edit section: Error locator polynomial"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>There is a linear recurrence relation that gives rise to a system of linear equations. Solving those equations identifies those error locations <i>X<sub>k</sub></i>. </p><p>Define the <b>error locator polynomial</b> <span class="texhtml">Λ(<i>x</i>)</span> as <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda (x)=\prod _{k=1}^{\nu }(1-xX_{k})=1+\Lambda _{1}x^{1}+\Lambda _{2}x^{2}+\cdots +\Lambda _{\nu }x^{\nu }.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∏<!-- ∏ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <mo stretchy="false">(</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mi>x</mi> <msub> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo stretchy="false">)</mo> <mo>=</mo> <mn>1</mn> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msup> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Lambda (x)=\prod _{k=1}^{\nu }(1-xX_{k})=1+\Lambda _{1}x^{1}+\Lambda _{2}x^{2}+\cdots +\Lambda _{\nu }x^{\nu }.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/bc71e84c5b681a0b93fda798dda52d6815f16179" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:55.219ex; height:6.843ex;" alt="{\displaystyle \Lambda (x)=\prod _{k=1}^{\nu }(1-xX_{k})=1+\Lambda _{1}x^{1}+\Lambda _{2}x^{2}+\cdots +\Lambda _{\nu }x^{\nu }.}" /></span> </p><p>The zeros of <span class="texhtml">Λ(<i>x</i>)</span> are the reciprocals <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle X_{k}^{-1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle X_{k}^{-1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6d660f988c86d5e177544cf19b5a1d46bb526202" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:4.33ex; height:3.343ex;" alt="{\displaystyle X_{k}^{-1}}" /></span>. This follows from the above product notation construction, since if <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle x=X_{k}^{-1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>x</mi> <mo>=</mo> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle x=X_{k}^{-1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/12ff650063a65b2edc9a81c3c4ce5710446c3ee8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:8.758ex; height:3.343ex;" alt="{\displaystyle x=X_{k}^{-1}}" /></span>, then one of the multiplied terms will be zero, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle (1-X_{k}^{-1}\cdot X_{k})=1-1=0}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo stretchy="false">(</mo> <mn>1</mn> <mo>−<!-- − --></mo> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo>⋅<!-- ⋅ --></mo> <msub> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <mo stretchy="false">)</mo> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mn>1</mn> <mo>=</mo> <mn>0</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle (1-X_{k}^{-1}\cdot X_{k})=1-1=0}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e88006aa912ddfb3855c42cc6c1bd8a5cf8dd974" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:27.359ex; height:3.343ex;" alt="{\displaystyle (1-X_{k}^{-1}\cdot X_{k})=1-1=0}" /></span>, making the whole polynomial evaluate to zero: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda (X_{k}^{-1})=0.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Lambda (X_{k}^{-1})=0.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/57d5a1e8df5a2ee5051b52ebec33a7916cdb2862" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:12.66ex; height:3.343ex;" alt="{\displaystyle \Lambda (X_{k}^{-1})=0.}" /></span> </p><p>Let <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle j}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>j</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle j}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2f461e54f5c093e92a55547b9764291390f0b5d0" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; margin-left: -0.027ex; width:0.985ex; height:2.509ex;" alt="{\displaystyle j}" /></span> be any integer such that <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 1\leq j\leq \nu }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mn>1</mn> <mo>≤<!-- ≤ --></mo> <mi>j</mi> <mo>≤<!-- ≤ --></mo> <mi>ν<!-- ν --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle 1\leq j\leq \nu }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8fd9b9bdc56251f66bea3a5914cb6867abbd458a" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:9.55ex; height:2.509ex;" alt="{\displaystyle 1\leq j\leq \nu }" /></span>. Multiply both sides by <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle Y_{k}X_{k}^{j+\nu }}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle Y_{k}X_{k}^{j+\nu }}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1ec8abe7c475b5a73359c3993aae262022f5e70b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:7.496ex; height:3.509ex;" alt="{\displaystyle Y_{k}X_{k}^{j+\nu }}" /></span>, and it will still be zero: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}&Y_{k}X_{k}^{j+\nu }\Lambda (X_{k}^{-1})=0,\\&Y_{k}X_{k}^{j+\nu }(1+\Lambda _{1}X_{k}^{-1}+\Lambda _{2}X_{k}^{-2}+\cdots +\Lambda _{\nu }X_{k}^{-\nu })=0,\\&Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu }X_{k}^{-1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu }X_{k}^{-2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j+\nu }X_{k}^{-\nu }=0,\\&Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j}=0.\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd></mtd> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0</mn> <mo>,</mo> </mtd> </mtr> <mtr> <mtd></mtd> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mo stretchy="false">(</mo> <mn>1</mn> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msubsup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0</mn> <mo>,</mo> </mtd> </mtr> <mtr> <mtd></mtd> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msubsup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mo>=</mo> <mn>0</mn> <mo>,</mo> </mtd> </mtr> <mtr> <mtd></mtd> <mtd> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msubsup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msubsup> <mo>=</mo> <mn>0.</mn> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}&Y_{k}X_{k}^{j+\nu }\Lambda (X_{k}^{-1})=0,\\&Y_{k}X_{k}^{j+\nu }(1+\Lambda _{1}X_{k}^{-1}+\Lambda _{2}X_{k}^{-2}+\cdots +\Lambda _{\nu }X_{k}^{-\nu })=0,\\&Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu }X_{k}^{-1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu }X_{k}^{-2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j+\nu }X_{k}^{-\nu }=0,\\&Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j}=0.\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/fb0c988668bad414b19c38b117012d629303ef50" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -6.475ex; margin-bottom: -0.197ex; width:70.816ex; height:14.509ex;" alt="{\displaystyle {\begin{aligned}&Y_{k}X_{k}^{j+\nu }\Lambda (X_{k}^{-1})=0,\\&Y_{k}X_{k}^{j+\nu }(1+\Lambda _{1}X_{k}^{-1}+\Lambda _{2}X_{k}^{-2}+\cdots +\Lambda _{\nu }X_{k}^{-\nu })=0,\\&Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu }X_{k}^{-1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu }X_{k}^{-2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j+\nu }X_{k}^{-\nu }=0,\\&Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j}=0.\end{aligned}}}" /></span> </p><p>Sum for <i>k</i> = 1 to <i>ν</i>, and it will still be zero: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \sum _{k=1}^{\nu }(Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j})=0.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <mo stretchy="false">(</mo> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msubsup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msubsup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>0.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \sum _{k=1}^{\nu }(Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j})=0.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e2b47e3add4cdc8e2cdaaf76db3efebf0f5ccf59" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:64.348ex; height:6.843ex;" alt="{\displaystyle \sum _{k=1}^{\nu }(Y_{k}X_{k}^{j+\nu }+\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}+\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}+\cdots +\Lambda _{\nu }Y_{k}X_{k}^{j})=0.}" /></span> </p><p>Collect each term into its own sum: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu }\right)+\left(\sum _{k=1}^{\nu }\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}\right)+\left(\sum _{k=1}^{\nu }\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}\right)+\cdots +\left(\sum _{k=1}^{\nu }\Lambda _{\nu }Y_{k}X_{k}^{j}\right)=0.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>=</mo> <mn>0.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu }\right)+\left(\sum _{k=1}^{\nu }\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}\right)+\left(\sum _{k=1}^{\nu }\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}\right)+\cdots +\left(\sum _{k=1}^{\nu }\Lambda _{\nu }Y_{k}X_{k}^{j}\right)=0.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/58c5bcd1abf51b3916c7fe0a8439db419a284df0" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:88.878ex; height:7.509ex;" alt="{\displaystyle \left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu }\right)+\left(\sum _{k=1}^{\nu }\Lambda _{1}Y_{k}X_{k}^{j+\nu -1}\right)+\left(\sum _{k=1}^{\nu }\Lambda _{2}Y_{k}X_{k}^{j+\nu -2}\right)+\cdots +\left(\sum _{k=1}^{\nu }\Lambda _{\nu }Y_{k}X_{k}^{j}\right)=0.}" /></span> </p><p>Extract the constant values of <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Λ<!-- Λ --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Lambda }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0ac0a4a98a414e3480335f9ba652d12571ec6733" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.613ex; height:2.176ex;" alt="{\displaystyle \Lambda }" /></span> that are unaffected by the summation: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu }\right)+\Lambda _{1}\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu -1}\right)+\Lambda _{2}\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu -2}\right)+\cdots +\Lambda _{\nu }\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j}\right)=0.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑<!-- ∑ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </munderover> <msub> <mi>Y</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msubsup> </mrow> <mo>)</mo> </mrow> <mo>=</mo> <mn>0.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu }\right)+\Lambda _{1}\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu -1}\right)+\Lambda _{2}\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu -2}\right)+\cdots +\Lambda _{\nu }\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j}\right)=0.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6946837d89e53f1a059c998262f7e68feefea948" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.171ex; width:90.039ex; height:7.509ex;" alt="{\displaystyle \left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu }\right)+\Lambda _{1}\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu -1}\right)+\Lambda _{2}\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j+\nu -2}\right)+\cdots +\Lambda _{\nu }\left(\sum _{k=1}^{\nu }Y_{k}X_{k}^{j}\right)=0.}" /></span> </p><p>These summations are now equivalent to the syndrome values, which we know and can substitute in. This therefore reduces to <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S_{j+\nu }+\Lambda _{1}S_{j+\nu -1}+\cdots +\Lambda _{\nu -1}S_{j+1}+\Lambda _{\nu }S_{j}=0.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mn>0.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S_{j+\nu }+\Lambda _{1}S_{j+\nu -1}+\cdots +\Lambda _{\nu -1}S_{j+1}+\Lambda _{\nu }S_{j}=0.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b47e0311e202381d7255be57a2e79802a3fbaddc" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:47.033ex; height:2.843ex;" alt="{\displaystyle S_{j+\nu }+\Lambda _{1}S_{j+\nu -1}+\cdots +\Lambda _{\nu -1}S_{j+1}+\Lambda _{\nu }S_{j}=0.}" /></span> </p><p>Subtracting <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S_{j+\nu }}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S_{j+\nu }}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/659264950ad95b0cbeba252514ccc41acdc47bc5" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:4.484ex; height:2.843ex;" alt="{\displaystyle S_{j+\nu }}" /></span> from both sides yields <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S_{j}\Lambda _{\nu }+S_{j+1}\Lambda _{\nu -1}+\cdots +S_{j+\nu -1}\Lambda _{1}=-S_{j+\nu }.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> <mo>+</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mo>−<!-- − --></mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msub> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S_{j}\Lambda _{\nu }+S_{j+1}\Lambda _{\nu -1}+\cdots +S_{j+\nu -1}\Lambda _{1}=-S_{j+\nu }.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f9f847ca88038b86ea92885098d3e34edefc5054" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:44.838ex; height:2.843ex;" alt="{\displaystyle S_{j}\Lambda _{\nu }+S_{j+1}\Lambda _{\nu -1}+\cdots +S_{j+\nu -1}\Lambda _{1}=-S_{j+\nu }.}" /></span> </p><p>Recall that <i>j</i> was chosen to be any integer between 1 and <i>v</i> inclusive, and this equivalence is true for all such values. Therefore, we have <i>v</i> linear equations, not just one. This system of linear equations can therefore be solved for the coefficients Λ<sub><i>i</i></sub> of the error-location polynomial: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}S_{1}&S_{2}&\cdots &S_{\nu }\\S_{2}&S_{3}&\cdots &S_{\nu +1}\\\vdots &\vdots &\ddots &\vdots \\S_{\nu }&S_{\nu +1}&\cdots &S_{2\nu -1}\end{bmatrix}}{\begin{bmatrix}\Lambda _{\nu }\\\Lambda _{\nu -1}\\\vdots \\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}-S_{\nu +1}\\-S_{\nu +2}\\\vdots \\-S_{\nu +\nu }\end{bmatrix}}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> </mtd> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> <mtd> <mo>⋱<!-- ⋱ --></mo> </mtd> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> </mtd> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mo>⋯<!-- ⋯ --></mo> </mtd> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mo>−<!-- − --></mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>−<!-- − --></mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>+</mo> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mo>⋮<!-- ⋮ --></mo> </mtd> </mtr> <mtr> <mtd> <mo>−<!-- − --></mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>ν<!-- ν --></mi> <mo>+</mo> <mi>ν<!-- ν --></mi> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}S_{1}&S_{2}&\cdots &S_{\nu }\\S_{2}&S_{3}&\cdots &S_{\nu +1}\\\vdots &\vdots &\ddots &\vdots \\S_{\nu }&S_{\nu +1}&\cdots &S_{2\nu -1}\end{bmatrix}}{\begin{bmatrix}\Lambda _{\nu }\\\Lambda _{\nu -1}\\\vdots \\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}-S_{\nu +1}\\-S_{\nu +2}\\\vdots \\-S_{\nu +\nu }\end{bmatrix}}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d2653662fab6b37b318d021d7d56bb4ee067d7b3" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -6.505ex; width:49.16ex; height:14.176ex;" alt="{\displaystyle {\begin{bmatrix}S_{1}&S_{2}&\cdots &S_{\nu }\\S_{2}&S_{3}&\cdots &S_{\nu +1}\\\vdots &\vdots &\ddots &\vdots \\S_{\nu }&S_{\nu +1}&\cdots &S_{2\nu -1}\end{bmatrix}}{\begin{bmatrix}\Lambda _{\nu }\\\Lambda _{\nu -1}\\\vdots \\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}-S_{\nu +1}\\-S_{\nu +2}\\\vdots \\-S_{\nu +\nu }\end{bmatrix}}.}" /></span> The above assumes that the decoder knows the number of errors <i>ν</i>, but that number has not been determined yet. The PGZ decoder does not determine <i>ν</i> directly but rather searches for it by trying successive values. The decoder first assumes the largest value for a trial <i>ν</i> and sets up the linear system for that value. If the equations can be solved (i.e., the matrix determinant is nonzero), then that trial value is the number of errors. If the linear system cannot be solved, then the trial <i>ν</i> is reduced by one and the next smaller system is examined.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Find_the_roots_of_the_error_locator_polynomial">Find the roots of the error locator polynomial</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=22" title="Edit section: Find the roots of the error locator polynomial"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Use the coefficients Λ<sub><i>i</i></sub> found in the last step to build the error location polynomial. The roots of the error location polynomial can be found by exhaustive search. The error locators <i>X<sub>k</sub></i> are the reciprocals of those roots. The order of coefficients of the error location polynomial can be reversed, in which case the roots of that reversed polynomial are the error locators <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle X_{k}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle X_{k}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/33c25229c6989c235f9cbb7908331f6d01d0abfe" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:3.013ex; height:2.509ex;" alt="{\displaystyle X_{k}}" /></span> (not their reciprocals <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle X_{k}^{-1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msubsup> <mi>X</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>k</mi> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msubsup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle X_{k}^{-1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6d660f988c86d5e177544cf19b5a1d46bb526202" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:4.33ex; height:3.343ex;" alt="{\displaystyle X_{k}^{-1}}" /></span>). <a href="/wiki/Chien_search" title="Chien search">Chien search</a> is an efficient implementation of this step. </p> <div class="mw-heading mw-heading4"><h4 id="Calculate_the_error_values">Calculate the error values</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=23" title="Edit section: Calculate the error values"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Once the error locators <i>X<sub>k</sub></i> are known, the error values can be determined. This can be done by direct solution for <i>Y<sub>k</sub></i> in the <a href="#Error_locators_and_error_values">error equations</a> matrix given above, or using the <a href="/wiki/Forney_algorithm" title="Forney algorithm">Forney algorithm</a>. </p> <div class="mw-heading mw-heading4"><h4 id="Calculate_the_error_locations">Calculate the error locations</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=24" title="Edit section: Calculate the error locations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Calculate <i>i<sub>k</sub></i> by taking the log base <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \alpha }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>α<!-- α --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \alpha }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b79333175c8b3f0840bfb4ec41b8072c83ea88d3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.488ex; height:1.676ex;" alt="{\displaystyle \alpha }" /></span> of <i>X<sub>k</sub></i>. This is generally done using a precomputed lookup table. </p> <div class="mw-heading mw-heading4"><h4 id="Fix_the_errors">Fix the errors</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=25" title="Edit section: Fix the errors"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Finally, <i>e</i>(<i>x</i>) is generated from <i>i<sub>k</sub></i> and <i>e<sub>i<sub>k</sub></sub></i> and then is subtracted from <i>r</i>(<i>x</i>) to get the originally sent message <i>s</i>(<i>x</i>), with errors corrected. </p> <div class="mw-heading mw-heading4"><h4 id="Example">Example</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=26" title="Edit section: Example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Consider the Reed–Solomon code defined in <span class="texhtml"><i>GF</i>(929)</span> with <span class="texhtml"><i>α</i> = 3</span> and <span class="texhtml"><i>t</i> = 4</span> (this is used in <a href="/wiki/PDF417" title="PDF417">PDF417</a> barcodes) for a RS(7,3) code. The generator polynomial is <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle g(x)=(x-3)(x-3^{2})(x-3^{3})(x-3^{4})=x^{4}+809x^{3}+723x^{2}+568x+522.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>g</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>−<!-- − --></mo> <mn>3</mn> <mo stretchy="false">)</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo stretchy="false">(</mo> <mi>x</mi> <mo>−<!-- − --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo>+</mo> <mn>809</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <mn>723</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>568</mn> <mi>x</mi> <mo>+</mo> <mn>522.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle g(x)=(x-3)(x-3^{2})(x-3^{3})(x-3^{4})=x^{4}+809x^{3}+723x^{2}+568x+522.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6f2514b3b52bd5b92bf59068fb4c80689ba3bdac" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:76.621ex; height:3.176ex;" alt="{\displaystyle g(x)=(x-3)(x-3^{2})(x-3^{3})(x-3^{4})=x^{4}+809x^{3}+723x^{2}+568x+522.}" /></span> If the message polynomial is <span class="texhtml"><i>p</i>(<i>x</i>) = 3 <i>x</i><sup>2</sup> + 2 <i>x</i> + 1</span>, then a systematic codeword is encoded as follows: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s_{r}(x)=p(x)\,x^{t}{\bmod {g}}(x)=547x^{3}+738x^{2}+442x+455,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mspace width="thinmathspace"></mspace> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> <mrow class="MJX-TeXAtom-ORD"> <mo lspace="thickmathspace" rspace="thickmathspace">mod</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>g</mi> </mrow> </mrow> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>547</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <mn>738</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>442</mn> <mi>x</mi> <mo>+</mo> <mn>455</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s_{r}(x)=p(x)\,x^{t}{\bmod {g}}(x)=547x^{3}+738x^{2}+442x+455,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8313940080cc75627d52234757db415e1b5864a6" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:57.402ex; height:3.176ex;" alt="{\displaystyle s_{r}(x)=p(x)\,x^{t}{\bmod {g}}(x)=547x^{3}+738x^{2}+442x+455,}" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s(x)=p(x)\,x^{t}-s_{r}(x)=3x^{6}+2x^{5}+1x^{4}+382x^{3}+191x^{2}+487x+474.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>p</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mspace width="thinmathspace"></mspace> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> <mo>−<!-- − --></mo> <msub> <mi>s</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>r</mi> </mrow> </msub> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>3</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msup> <mo>+</mo> <mn>2</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msup> <mo>+</mo> <mn>1</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo>+</mo> <mn>382</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <mn>191</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>487</mn> <mi>x</mi> <mo>+</mo> <mn>474.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle s(x)=p(x)\,x^{t}-s_{r}(x)=3x^{6}+2x^{5}+1x^{4}+382x^{3}+191x^{2}+487x+474.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/09a1150b2b337240627d1d9231371e28566b1dc9" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:73.696ex; height:3.176ex;" alt="{\displaystyle s(x)=p(x)\,x^{t}-s_{r}(x)=3x^{6}+2x^{5}+1x^{4}+382x^{3}+191x^{2}+487x+474.}" /></span> Errors in transmission might cause this to be received instead: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle r(x)=s(x)+e(x)=3x^{6}+2x^{5}+123x^{4}+456x^{3}+191x^{2}+487x+474.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>r</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>s</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>+</mo> <mi>e</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>3</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msup> <mo>+</mo> <mn>2</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msup> <mo>+</mo> <mn>123</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo>+</mo> <mn>456</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <mn>191</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>487</mn> <mi>x</mi> <mo>+</mo> <mn>474.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle r(x)=s(x)+e(x)=3x^{6}+2x^{5}+123x^{4}+456x^{3}+191x^{2}+487x+474.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2e6c4b82e155f45b2ef501e6190199def0aaa96d" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:72.377ex; height:3.176ex;" alt="{\displaystyle r(x)=s(x)+e(x)=3x^{6}+2x^{5}+123x^{4}+456x^{3}+191x^{2}+487x+474.}" /></span> The syndromes are calculated by evaluating <i>r</i> at powers of <i>α</i>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S_{1}=r(3^{1})=3\cdot 3^{6}+2\cdot 3^{5}+123\cdot 3^{4}+456\cdot 3^{3}+191\cdot 3^{2}+487\cdot 3+474=732,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mi>r</mi> <mo stretchy="false">(</mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>3</mn> <mo>⋅<!-- ⋅ --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msup> <mo>+</mo> <mn>2</mn> <mo>⋅<!-- ⋅ --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msup> <mo>+</mo> <mn>123</mn> <mo>⋅<!-- ⋅ --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo>+</mo> <mn>456</mn> <mo>⋅<!-- ⋅ --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <mn>191</mn> <mo>⋅<!-- ⋅ --></mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>487</mn> <mo>⋅<!-- ⋅ --></mo> <mn>3</mn> <mo>+</mo> <mn>474</mn> <mo>=</mo> <mn>732</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S_{1}=r(3^{1})=3\cdot 3^{6}+2\cdot 3^{5}+123\cdot 3^{4}+456\cdot 3^{3}+191\cdot 3^{2}+487\cdot 3+474=732,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/6b8d0f1a3c7dfa168b590442f2a5e151c313c0dd" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:80.108ex; height:3.176ex;" alt="{\displaystyle S_{1}=r(3^{1})=3\cdot 3^{6}+2\cdot 3^{5}+123\cdot 3^{4}+456\cdot 3^{3}+191\cdot 3^{2}+487\cdot 3+474=732,}" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle S_{2}=r(3^{2})=637,\quad S_{3}=r(3^{3})=762,\quad S_{4}=r(3^{4})=925,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>=</mo> <mi>r</mi> <mo stretchy="false">(</mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>637</mn> <mo>,</mo> <mspace width="1em"></mspace> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <mo>=</mo> <mi>r</mi> <mo stretchy="false">(</mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>762</mn> <mo>,</mo> <mspace width="1em"></mspace> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> <mo>=</mo> <mi>r</mi> <mo stretchy="false">(</mo> <msup> <mn>3</mn> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo stretchy="false">)</mo> <mo>=</mo> <mn>925</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle S_{2}=r(3^{2})=637,\quad S_{3}=r(3^{3})=762,\quad S_{4}=r(3^{4})=925,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/54861f36824a7bbb4bc62bc5251de0400de9993d" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:59.074ex; height:3.176ex;" alt="{\displaystyle S_{2}=r(3^{2})=637,\quad S_{3}=r(3^{3})=762,\quad S_{4}=r(3^{4})=925,}" /></span> yielding the system <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}732&637\\637&762\end{bmatrix}}{\begin{bmatrix}\Lambda _{2}\\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}-762\\-925\end{bmatrix}}={\begin{bmatrix}167\\004\end{bmatrix}}.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>732</mn> </mtd> <mtd> <mn>637</mn> </mtd> </mtr> <mtr> <mtd> <mn>637</mn> </mtd> <mtd> <mn>762</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mo>−<!-- − --></mo> <mn>762</mn> </mtd> </mtr> <mtr> <mtd> <mo>−<!-- − --></mo> <mn>925</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>167</mn> </mtd> </mtr> <mtr> <mtd> <mn>004</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>.</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}732&637\\637&762\end{bmatrix}}{\begin{bmatrix}\Lambda _{2}\\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}-762\\-925\end{bmatrix}}={\begin{bmatrix}167\\004\end{bmatrix}}.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/33d57ed506100e179e833891349e5be1d8c80e99" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:40.417ex; height:6.176ex;" alt="{\displaystyle {\begin{bmatrix}732&637\\637&762\end{bmatrix}}{\begin{bmatrix}\Lambda _{2}\\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}-762\\-925\end{bmatrix}}={\begin{bmatrix}167\\004\end{bmatrix}}.}" /></span> </p><p>Using <a href="/wiki/Gaussian_elimination" title="Gaussian elimination">Gaussian elimination</a>, <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}001&000\\000&001\end{bmatrix}}{\begin{bmatrix}\Lambda _{2}\\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}329\\821\end{bmatrix}},}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>329</mn> </mtd> </mtr> <mtr> <mtd> <mn>821</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}001&000\\000&001\end{bmatrix}}{\begin{bmatrix}\Lambda _{2}\\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}329\\821\end{bmatrix}},}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f28bf8c1ba3648fd8a9a5587c2776244b8b6a418" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:28.817ex; height:6.176ex;" alt="{\displaystyle {\begin{bmatrix}001&000\\000&001\end{bmatrix}}{\begin{bmatrix}\Lambda _{2}\\\Lambda _{1}\end{bmatrix}}={\begin{bmatrix}329\\821\end{bmatrix}},}" /></span> so <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda (x)=329x^{2}+821x+001,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>329</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>821</mn> <mi>x</mi> <mo>+</mo> <mn>001</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Lambda (x)=329x^{2}+821x+001,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5c66bd001c5521e6bbba9412486ee1f2ae585c7a" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:28.354ex; height:3.176ex;" alt="{\displaystyle \Lambda (x)=329x^{2}+821x+001,}" /></span> with roots <i>x</i><sub>1</sub> = 757 = 3<sup>−3</sup> and <i>x</i><sub>2</sub> = 562 = 3<sup>−4</sup>. The coefficients can be reversed: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R(x)=001x^{2}+821x+329,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>R</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>001</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mn>821</mn> <mi>x</mi> <mo>+</mo> <mn>329</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R(x)=001x^{2}+821x+329,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2e8001cebb693712e871fec865e83a295f0d1125" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:28.505ex; height:3.176ex;" alt="{\displaystyle R(x)=001x^{2}+821x+329,}" /></span> to produce roots 27 = 3<sup>3</sup> and 81 = 3<sup>4</sup> with positive exponents, but typically this isn't used. The logarithm of the inverted roots corresponds to the error locations (right to left, location 0 is the last term in the codeword). </p><p>To calculate the error values, apply the <a href="/wiki/Forney_algorithm" title="Forney algorithm">Forney algorithm</a>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega (x)=S(x)\Lambda (x){\bmod {x}}^{4}=546x+732,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>S</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <msup> <mrow class="MJX-TeXAtom-ORD"> <mo lspace="thickmathspace" rspace="thickmathspace">mod</mo> <mrow class="MJX-TeXAtom-ORD"> <mi>x</mi> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo>=</mo> <mn>546</mn> <mi>x</mi> <mo>+</mo> <mn>732</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Omega (x)=S(x)\Lambda (x){\bmod {x}}^{4}=546x+732,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/bb1a9ce5f00064032eb94974d40a0ebe4d881271" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:40.261ex; height:3.176ex;" alt="{\displaystyle \Omega (x)=S(x)\Lambda (x){\bmod {x}}^{4}=546x+732,}" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda '(x)=658x+821,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msup> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo>′</mo> </msup> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>658</mn> <mi>x</mi> <mo>+</mo> <mn>821</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Lambda '(x)=658x+821,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/e69ccd74df3eac52b38caab416dd9c44931ae68c" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:20.327ex; height:3.009ex;" alt="{\displaystyle \Lambda '(x)=658x+821,}" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle e_{1}=-\Omega (x_{1})/\Lambda '(x_{1})=074,}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo>=</mo> <mo>−<!-- − --></mo> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mo stretchy="false">(</mo> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <msup> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo>′</mo> </msup> <mo stretchy="false">(</mo> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mo>=</mo> <mn>074</mn> <mo>,</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle e_{1}=-\Omega (x_{1})/\Lambda '(x_{1})=074,}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/183a7cf7994678bc5a5c7cce36a4108f995a4f75" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.802ex; height:3.009ex;" alt="{\displaystyle e_{1}=-\Omega (x_{1})/\Lambda '(x_{1})=074,}" /></span> <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle e_{2}=-\Omega (x_{2})/\Lambda '(x_{2})=122.}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>=</mo> <mo>−<!-- − --></mo> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mo stretchy="false">(</mo> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mrow class="MJX-TeXAtom-ORD"> <mo>/</mo> </mrow> <msup> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo>′</mo> </msup> <mo stretchy="false">(</mo> <msub> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo stretchy="false">)</mo> <mo>=</mo> <mn>122.</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle e_{2}=-\Omega (x_{2})/\Lambda '(x_{2})=122.}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/1a3a86f7e53941c95f3c08fa5f77dd2ee23a9b1d" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.802ex; height:3.009ex;" alt="{\displaystyle e_{2}=-\Omega (x_{2})/\Lambda '(x_{2})=122.}" /></span> </p><p>Subtracting <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle e_{1}x^{3}+e_{2}x^{4}=74x^{3}+122x^{4}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> <mo>=</mo> <mn>74</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> <mo>+</mo> <mn>122</mn> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle e_{1}x^{3}+e_{2}x^{4}=74x^{3}+122x^{4}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/21d55fb8e447b2ab77be924dfe23473294aa5638" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:28.403ex; height:3.009ex;" alt="{\displaystyle e_{1}x^{3}+e_{2}x^{4}=74x^{3}+122x^{4}}" /></span> from the received polynomial <i>r</i>(<i>x</i>) reproduces the original codeword <i>s</i>. </p> <div class="mw-heading mw-heading3"><h3 id="Berlekamp–Massey_decoder"><span id="Berlekamp.E2.80.93Massey_decoder"></span>Berlekamp–Massey decoder</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=27" title="Edit section: Berlekamp–Massey decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <a href="/wiki/Berlekamp%E2%80%93Massey_algorithm" title="Berlekamp–Massey algorithm">Berlekamp–Massey algorithm</a> is an alternate iterative procedure for finding the error locator polynomial. During each iteration, it calculates a discrepancy based on a current instance of Λ(<i>x</i>) with an assumed number of errors <i>e</i>: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Delta =S_{i}+\Lambda _{1}\ S_{i-1}+\cdots +\Lambda _{e}\ S_{i-e}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Δ<!-- Δ --></mi> <mo>=</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mtext> </mtext> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> </mrow> </msub> <mtext> </mtext> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>−<!-- − --></mo> <mi>e</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Delta =S_{i}+\Lambda _{1}\ S_{i-1}+\cdots +\Lambda _{e}\ S_{i-e}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5311791419d9158c0c9ccd62b879722d94f2d5b3" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:33.538ex; height:2.509ex;" alt="{\displaystyle \Delta =S_{i}+\Lambda _{1}\ S_{i-1}+\cdots +\Lambda _{e}\ S_{i-e}}" /></span> and then adjusts Λ(<i>x</i>) and <i>e</i> so that a recalculated Δ would be zero. The article <a href="/wiki/Berlekamp%E2%80%93Massey_algorithm" title="Berlekamp–Massey algorithm">Berlekamp–Massey algorithm</a> has a detailed description of the procedure. In the following example, <i>C</i>(<i>x</i>) is used to represent Λ(<i>x</i>). </p> <div class="mw-heading mw-heading4"><h4 id="Example_2">Example</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=28" title="Edit section: Example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Using the same data as the Peterson Gorenstein Zierler example above: </p> <table class="wikitable"> <tbody><tr> <th><i>n</i></th> <th><i>S</i><sub><i>n</i>+1</sub></th> <th><i>d</i></th> <th><i>C</i></th> <th><i>B</i></th> <th><i>b</i></th> <th><i>m</i> </th></tr> <tr> <td>0</td> <td>732</td> <td>732</td> <td>197 <i>x</i> + 1</td> <td>1</td> <td>732</td> <td>1 </td></tr> <tr> <td>1</td> <td>637</td> <td>846</td> <td>173 <i>x</i> + 1</td> <td>1</td> <td>732</td> <td>2 </td></tr> <tr> <td>2</td> <td>762</td> <td>412</td> <td>634 <i>x</i><sup>2</sup> + 173 <i>x</i> + 1</td> <td>173 <i>x</i> + 1</td> <td>412</td> <td>1 </td></tr> <tr> <td>3</td> <td>925</td> <td>576</td> <td>329 <i>x</i><sup>2</sup> + 821 <i>x</i> + 1</td> <td>173 <i>x</i> + 1</td> <td>412</td> <td>2 </td></tr></tbody></table> <p>The final value of <i>C</i> is the error locator polynomial, Λ(<i>x</i>). </p> <div class="mw-heading mw-heading3"><h3 id="Euclidean_decoder">Euclidean decoder</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=29" title="Edit section: Euclidean decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Another iterative method for calculating both the error locator polynomial and the error value polynomial is based on Sugiyama's adaptation of the <a href="/wiki/Extended_Euclidean_algorithm" title="Extended Euclidean algorithm">extended Euclidean algorithm</a> . </p><p>Define <i>S</i>(<i>x</i>), Λ(<i>x</i>), and Ω(<i>x</i>) for <i>t</i> syndromes and <i>e</i> errors: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}S(x)&=S_{t}x^{t-1}+S_{t-1}x^{t-2}+\cdots +S_{2}x+S_{1}\\[1ex]\Lambda (x)&=\Lambda _{e}x^{e}+\Lambda _{e-1}x^{e-1}+\cdots +\Lambda _{1}x+1\\[1ex]\Omega (x)&=\Omega _{e}x^{e}+\Omega _{e-1}x^{e-1}+\cdots +\Omega _{1}x+\Omega _{0}\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="0.73em 0.73em 0.3em" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd> <mi>S</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mtd> <mtd> <mi></mi> <mo>=</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo>+</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mi>x</mi> <mo>+</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mtd> <mtd> <mi></mi> <mo>=</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> </mrow> </msup> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mi>x</mi> <mo>+</mo> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mtd> <mtd> <mi></mi> <mo>=</mo> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> </mrow> </msup> <mo>+</mo> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>e</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msup> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mi>x</mi> <mo>+</mo> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}S(x)&=S_{t}x^{t-1}+S_{t-1}x^{t-2}+\cdots +S_{2}x+S_{1}\\[1ex]\Lambda (x)&=\Lambda _{e}x^{e}+\Lambda _{e-1}x^{e-1}+\cdots +\Lambda _{1}x+1\\[1ex]\Omega (x)&=\Omega _{e}x^{e}+\Omega _{e-1}x^{e-1}+\cdots +\Omega _{1}x+\Omega _{0}\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a84cd05dee4a72d23c59b3f95c4efdf3c8703600" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -5.338ex; width:44.154ex; height:11.843ex;" alt="{\displaystyle {\begin{aligned}S(x)&=S_{t}x^{t-1}+S_{t-1}x^{t-2}+\cdots +S_{2}x+S_{1}\\[1ex]\Lambda (x)&=\Lambda _{e}x^{e}+\Lambda _{e-1}x^{e-1}+\cdots +\Lambda _{1}x+1\\[1ex]\Omega (x)&=\Omega _{e}x^{e}+\Omega _{e-1}x^{e-1}+\cdots +\Omega _{1}x+\Omega _{0}\end{aligned}}}" /></span> </p><p>The key equation is: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Lambda (x)S(x)=Q(x)x^{t}+\Omega (x)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mi>S</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mi>Q</mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msup> <mo>+</mo> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mo stretchy="false">(</mo> <mi>x</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \Lambda (x)S(x)=Q(x)x^{t}+\Omega (x)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4c956ce036d1a84f9edd391c05b086fa77c0215e" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.279ex; height:3.009ex;" alt="{\displaystyle \Lambda (x)S(x)=Q(x)x^{t}+\Omega (x)}" /></span> </p><p>For <i>t</i> = 6 and <i>e</i> = 3: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}\Lambda _{3}S_{6}&x^{8}\\\Lambda _{2}S_{6}+\Lambda _{3}S_{5}&x^{7}\\\Lambda _{1}S_{6}+\Lambda _{2}S_{5}+\Lambda _{3}S_{4}&x^{6}\\S_{6}+\Lambda _{1}S_{5}+\Lambda _{2}S_{4}+\Lambda _{3}S_{3}&x^{5}\\S_{5}+\Lambda _{1}S_{4}+\Lambda _{2}S_{3}+\Lambda _{3}S_{2}&x^{4}\\S_{4}+\Lambda _{1}S_{3}+\Lambda _{2}S_{2}+\Lambda _{3}S_{1}&x^{3}\\S_{3}+\Lambda _{1}S_{2}+\Lambda _{2}S_{1}&x^{2}\\S_{2}+\Lambda _{1}S_{1}&x\\S_{1}\end{bmatrix}}={\begin{bmatrix}Q_{2}x^{8}\\Q_{1}x^{7}\\Q_{0}x^{6}\\0\\0\\0\\\Omega _{2}x^{2}\\\Omega _{1}x\\\Omega _{0}\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>8</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>7</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>5</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> <mtd> <mi>x</mi> </mtd> </mtr> <mtr> <mtd> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>Q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>8</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>Q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>7</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi>Q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>6</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msup> <mi>x</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msup> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mi>x</mi> </mtd> </mtr> <mtr> <mtd> <msub> <mi mathvariant="normal">Ω<!-- Ω --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}\Lambda _{3}S_{6}&x^{8}\\\Lambda _{2}S_{6}+\Lambda _{3}S_{5}&x^{7}\\\Lambda _{1}S_{6}+\Lambda _{2}S_{5}+\Lambda _{3}S_{4}&x^{6}\\S_{6}+\Lambda _{1}S_{5}+\Lambda _{2}S_{4}+\Lambda _{3}S_{3}&x^{5}\\S_{5}+\Lambda _{1}S_{4}+\Lambda _{2}S_{3}+\Lambda _{3}S_{2}&x^{4}\\S_{4}+\Lambda _{1}S_{3}+\Lambda _{2}S_{2}+\Lambda _{3}S_{1}&x^{3}\\S_{3}+\Lambda _{1}S_{2}+\Lambda _{2}S_{1}&x^{2}\\S_{2}+\Lambda _{1}S_{1}&x\\S_{1}\end{bmatrix}}={\begin{bmatrix}Q_{2}x^{8}\\Q_{1}x^{7}\\Q_{0}x^{6}\\0\\0\\0\\\Omega _{2}x^{2}\\\Omega _{1}x\\\Omega _{0}\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/bb62fd828f24b5afa5b907963ae3ab919b116957" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -14.171ex; width:47.225ex; height:29.509ex;" alt="{\displaystyle {\begin{bmatrix}\Lambda _{3}S_{6}&x^{8}\\\Lambda _{2}S_{6}+\Lambda _{3}S_{5}&x^{7}\\\Lambda _{1}S_{6}+\Lambda _{2}S_{5}+\Lambda _{3}S_{4}&x^{6}\\S_{6}+\Lambda _{1}S_{5}+\Lambda _{2}S_{4}+\Lambda _{3}S_{3}&x^{5}\\S_{5}+\Lambda _{1}S_{4}+\Lambda _{2}S_{3}+\Lambda _{3}S_{2}&x^{4}\\S_{4}+\Lambda _{1}S_{3}+\Lambda _{2}S_{2}+\Lambda _{3}S_{1}&x^{3}\\S_{3}+\Lambda _{1}S_{2}+\Lambda _{2}S_{1}&x^{2}\\S_{2}+\Lambda _{1}S_{1}&x\\S_{1}\end{bmatrix}}={\begin{bmatrix}Q_{2}x^{8}\\Q_{1}x^{7}\\Q_{0}x^{6}\\0\\0\\0\\\Omega _{2}x^{2}\\\Omega _{1}x\\\Omega _{0}\end{bmatrix}}}" /></span> </p><p>The middle terms are zero due to the relationship between Λ and syndromes. </p><p>The extended Euclidean algorithm can find a series of polynomials of the form </p> <style data-mw-deduplicate="TemplateStyles:r996643573">.mw-parser-output .block-indent{padding-left:3em;padding-right:0;overflow:hidden}</style><div class="block-indent" style="padding-left: 1.5em;"><i>A</i><sub><i>i</i></sub>(<i>x</i>) <i>S</i>(<i>x</i>) + <i>B</i><sub><i>i</i></sub>(<i>x</i>) <i>x</i><sup><i>t</i></sup> = <i>R</i><sub><i>i</i></sub>(<i>x</i>)</div> <p>where the degree of <i>R</i> decreases as <i>i</i> increases. Once the degree of <i>R</i><sub><i>i</i></sub>(<i>x</i>) < <i>t</i>/2, then </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;"><i>A</i><sub><i>i</i></sub>(<i>x</i>) = Λ(<i>x</i>)</div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;"><i>B</i><sub><i>i</i></sub>(<i>x</i>) = −Q(<i>x</i>)</div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;"><i>R</i><sub><i>i</i></sub>(<i>x</i>) = Ω(<i>x</i>).</div> <p><i>B</i>(<i>x</i>) and <i>Q</i>(<i>x</i>) don't need to be saved, so the algorithm becomes: </p> <pre><i>R</i><sub>−1</sub> := <i>x</i><sup><i>t</i></sup> <i>R</i><sub>0</sub>  := <i>S</i>(<i>x</i>) <i>A</i><sub>−1</sub> := 0 <i>A</i><sub>0</sub>  := 1 <i>i</i> := 0 <b>while</b> degree of <i>R</i><sub><i>i</i></sub> ≥ <i>t</i>/2 <i>i</i> := <i>i</i> + 1 <i>Q</i> := <i>R</i><sub><i>i</i>-2</sub> / <i>R</i><sub><i>i</i>-1</sub> <i>R</i><sub><i>i</i></sub> := <i>R</i><sub><i>i</i>-2</sub> - <i>Q</i> <i>R</i><sub><i>i</i>-1</sub> <i>A</i><sub><i>i</i></sub> := <i>A</i><sub><i>i</i>-2</sub> - <i>Q</i> <i>A</i><sub><i>i</i>-1</sub> </pre> <p>to set low order term of Λ(<i>x</i>) to 1, divide Λ(<i>x</i>) and Ω(<i>x</i>) by <i>A</i><sub><i>i</i></sub>(0): </p> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;">Λ(<i>x</i>) = <i>A</i><sub><i>i</i></sub> / <i>A</i><sub><i>i</i></sub>(0)</div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;">Ω(<i>x</i>) = <i>R</i><sub><i>i</i></sub> / <i>A</i><sub><i>i</i></sub>(0)</div> <p><i>A</i><sub><i>i</i></sub>(0) is the constant (low order) term of A<sub>i</sub>. </p> <div class="mw-heading mw-heading4"><h4 id="Example_3">Example</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=30" title="Edit section: Example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Using the same data as the Peterson–Gorenstein–Zierler example above: </p> <table class="wikitable"> <tbody><tr> <th><i>i</i> </th> <th>R<sub><i>i</i></sub> </th> <th>A<sub><i>i</i></sub> </th></tr> <tr> <td>−1 </td> <td>001 <i>x</i><sup>4</sup> + 000 <i>x</i><sup>3</sup> + 000 <i>x</i><sup>2</sup> + 000 <i>x</i> + 000 </td> <td>000 </td></tr> <tr> <td>0 </td> <td>925 <i>x</i><sup>3</sup> + 762 <i>x</i><sup>2</sup> + 637 <i>x</i> + 732 </td> <td>001 </td></tr> <tr> <td>1 </td> <td>683 <i>x</i><sup>2</sup> + 676 <i>x</i> + 024 </td> <td>697 <i>x</i> + 396 </td></tr> <tr> <td>2 </td> <td>673 <i>x</i> + 596 </td> <td>608 <i>x</i><sup>2</sup> + 704 <i>x</i> + 544 </td></tr></tbody></table> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;">Λ(<i>x</i>) = <i>A</i><sub>2</sub> / 544 = 329 <i>x</i><sup>2</sup> + 821 <i>x</i> + 001</div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r996643573" /><div class="block-indent" style="padding-left: 1.5em;">Ω(<i>x</i>) = <i>R</i><sub>2</sub> / 544 = 546 <i>x</i> + 732</div> <div class="mw-heading mw-heading3"><h3 id="Decoder_using_discrete_Fourier_transform">Decoder using discrete Fourier transform</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=31" title="Edit section: Decoder using discrete Fourier transform"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A discrete Fourier transform can be used for decoding.<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup> To avoid conflict with syndrome names, let <i>c</i>(<i>x</i>) = <i>s</i>(<i>x</i>) the encoded codeword. <i>r</i>(<i>x</i>) and <i>e</i>(<i>x</i>) are the same as above. Define <i>C</i>(<i>x</i>), <i>E</i>(<i>x</i>), and <i>R</i>(<i>x</i>) as the discrete Fourier transforms of <i>c</i>(<i>x</i>), <i>e</i>(<i>x</i>), and <i>r</i>(<i>x</i>). Since <i>r</i>(<i>x</i>) = <i>c</i>(<i>x</i>) + <i>e</i>(<i>x</i>), and since a discrete Fourier transform is a linear operator, <i>R</i>(<i>x</i>) = <i>C</i>(<i>x</i>) + <i>E</i>(<i>x</i>). </p><p>Transform <i>r</i>(<i>x</i>) to <i>R</i>(<i>x</i>) using discrete Fourier transform. Since the calculation for a discrete Fourier transform is the same as the calculation for syndromes, <i>t</i> coefficients of <i>R</i>(<i>x</i>) and <i>E</i>(<i>x</i>) are the same as the syndromes: <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R_{j}=E_{j}=S_{j}=r(\alpha ^{j})\qquad {\text{for }}1\leq j\leq t}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>S</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> <mo>=</mo> <mi>r</mi> <mo stretchy="false">(</mo> <msup> <mi>α<!-- α --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msup> <mo stretchy="false">)</mo> <mspace width="2em"></mspace> <mrow class="MJX-TeXAtom-ORD"> <mtext>for </mtext> </mrow> <mn>1</mn> <mo>≤<!-- ≤ --></mo> <mi>j</mi> <mo>≤<!-- ≤ --></mo> <mi>t</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R_{j}=E_{j}=S_{j}=r(\alpha ^{j})\qquad {\text{for }}1\leq j\leq t}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/487a6e0376f4dcf2c73d687c57c1719c9f62e311" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.005ex; width:39.353ex; height:3.343ex;" alt="{\displaystyle R_{j}=E_{j}=S_{j}=r(\alpha ^{j})\qquad {\text{for }}1\leq j\leq t}" /></span> </p><p>Use <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R_{1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R_{1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/c1d63c96f59d98589d923c4f0b04222feaa7283e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.818ex; height:2.509ex;" alt="{\displaystyle R_{1}}" /></span> through <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R_{t}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R_{t}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/d65b678ee539ac36de96b554af181ac03b7f16a8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.59ex; height:2.509ex;" alt="{\displaystyle R_{t}}" /></span> as syndromes (they're the same) and generate the error locator polynomial using the methods from any of the above decoders. </p><p>Let <i>v</i> = number of errors. Generate <i>E</i>(<i>x</i>) using the known coefficients <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle E_{1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle E_{1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7ac42446bcd2cbb76ec8fe2895635d328da22e26" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.769ex; height:2.509ex;" alt="{\displaystyle E_{1}}" /></span> to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle E_{t}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>t</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle E_{t}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/8e1f5f5ca535e7c0078278861ca5358b1ce80ba3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.541ex; height:2.509ex;" alt="{\displaystyle E_{t}}" /></span>, the error locator polynomial, and these formulas <span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{aligned}E_{0}&=-{\frac {1}{\Lambda _{v}}}(E_{v}+\Lambda _{1}E_{v-1}+\cdots +\Lambda _{v-1}E_{1})\\E_{j}&=-(\Lambda _{1}E_{j-1}+\Lambda _{2}E_{j-2}+\cdots +\Lambda _{v}E_{j-v})&{\text{for }}t<j<n\end{aligned}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mtable columnalign="right left right left right left right left right left right left" rowspacing="3pt" columnspacing="0em 2em 0em 2em 0em 2em 0em 2em 0em 2em 0em" displaystyle="true"> <mtr> <mtd> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> <mtd> <mi></mi> <mo>=</mo> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>v</mi> </mrow> </msub> </mfrac> </mrow> <mo stretchy="false">(</mo> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>v</mi> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>v</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>v</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> </mtr> <mtr> <mtd> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> </mrow> </msub> </mtd> <mtd> <mi></mi> <mo>=</mo> <mo>−<!-- − --></mo> <mo stretchy="false">(</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>−<!-- − --></mo> <mn>2</mn> </mrow> </msub> <mo>+</mo> <mo>⋯<!-- ⋯ --></mo> <mo>+</mo> <msub> <mi mathvariant="normal">Λ<!-- Λ --></mi> <mrow class="MJX-TeXAtom-ORD"> <mi>v</mi> </mrow> </msub> <msub> <mi>E</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>j</mi> <mo>−<!-- − --></mo> <mi>v</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mtd> <mtd> <mrow class="MJX-TeXAtom-ORD"> <mtext>for </mtext> </mrow> <mi>t</mi> <mo><</mo> <mi>j</mi> <mo><</mo> <mi>n</mi> </mtd> </mtr> </mtable> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{aligned}E_{0}&=-{\frac {1}{\Lambda _{v}}}(E_{v}+\Lambda _{1}E_{v-1}+\cdots +\Lambda _{v-1}E_{1})\\E_{j}&=-(\Lambda _{1}E_{j-1}+\Lambda _{2}E_{j-2}+\cdots +\Lambda _{v}E_{j-v})&{\text{for }}t<j<n\end{aligned}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/570f096f29da36ca12bc6b9eaee2672859b725e7" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.838ex; width:61.011ex; height:8.843ex;" alt="{\displaystyle {\begin{aligned}E_{0}&=-{\frac {1}{\Lambda _{v}}}(E_{v}+\Lambda _{1}E_{v-1}+\cdots +\Lambda _{v-1}E_{1})\\E_{j}&=-(\Lambda _{1}E_{j-1}+\Lambda _{2}E_{j-2}+\cdots +\Lambda _{v}E_{j-v})&{\text{for }}t<j<n\end{aligned}}}" /></span> </p><p>Then calculate <i>C</i>(<i>x</i>) = <i>R</i>(<i>x</i>) − <i>E</i>(<i>x</i>) and take the inverse transform (polynomial interpolation) of <i>C</i>(<i>x</i>) to produce <i>c</i>(<i>x</i>). </p> <div class="mw-heading mw-heading3"><h3 id="Decoding_beyond_the_error-correction_bound">Decoding beyond the error-correction bound</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=32" title="Edit section: Decoding beyond the error-correction bound"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <a href="/wiki/Singleton_bound" title="Singleton bound">Singleton bound</a> states that the minimum distance <span class="texhtml mvar" style="font-style:italic;">d</span> of a linear block code of size (<span class="texhtml mvar" style="font-style:italic;">n</span>,<span class="texhtml mvar" style="font-style:italic;">k</span>) is upper-bounded by <span class="texhtml"><i>n</i> - <i>k</i> + 1</span>. The distance <span class="texhtml mvar" style="font-style:italic;">d</span> was usually understood to limit the error-correction capability to <span class="texhtml">⌊(<i>d</i> - 1) / 2⌋</span>. The Reed–Solomon code achieves this bound with equality, and can thus correct up to <span class="texhtml">⌊(<i>n</i> - <i>k</i>) / 2⌋</span> errors. However, this error-correction bound is not exact. </p><p>In 1999, <a href="/wiki/Madhu_Sudan" title="Madhu Sudan">Madhu Sudan</a> and <a href="/wiki/Venkatesan_Guruswami" title="Venkatesan Guruswami">Venkatesan Guruswami</a> at MIT published "Improved Decoding of Reed–Solomon and Algebraic-Geometry Codes" introducing an algorithm that allowed for the correction of errors beyond half the minimum distance of the code.<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> It applies to Reed–Solomon codes and more generally to <a href="/wiki/Algebraic_geometric_code" class="mw-redirect" title="Algebraic geometric code">algebraic geometric codes</a>. This algorithm produces a list of codewords (it is a <a href="/wiki/List-decoding" class="mw-redirect" title="List-decoding">list-decoding</a> algorithm) and is based on interpolation and factorization of polynomials over <span class="texhtml"><i>GF</i>(2<sup><i>m</i></sup>)</span> and its extensions. </p><p>In 2023, building on three exciting<sup class="noprint Inline-Template" style="margin-left:0.1em; white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Manual_of_Style/Words_to_watch#Unsupported_attributions" title="Wikipedia:Manual of Style/Words to watch"><span title="The material near this tag may use weasel words or too-vague attribution. (March 2025)">according to whom?</span></a></i>]</sup> works,<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup> coding theorists showed that Reed-Solomon codes defined over random evaluation points can actually achieve <a href="/wiki/List_decoding" title="List decoding">list decoding</a> capacity (up to <span class="texhtml"><i>n</i> - <i>k</i></span> errors) over linear size alphabets with high probability. However, this result is combinatorial rather than algorithmic.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (March 2025)">citation needed</span></a></i>]</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Soft-decoding">Soft-decoding</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=33" title="Edit section: Soft-decoding"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The algebraic decoding methods described above are hard-decision methods, which means that for every symbol a hard decision is made about its value. For example, a decoder could associate with each symbol an additional value corresponding to the channel <a href="/wiki/Demodulator" class="mw-redirect" title="Demodulator">demodulator</a>'s confidence in the correctness of the symbol. The advent of <a href="/wiki/Low-density_parity-check_code" title="Low-density parity-check code">LDPC</a> and <a href="/wiki/Turbo_code" title="Turbo code">turbo codes</a>, which employ iterated <a href="/wiki/Soft-decision_decoding" class="mw-redirect" title="Soft-decision decoding">soft-decision</a> belief propagation decoding methods to achieve error-correction performance close to the <a href="/wiki/Shannon_limit" class="mw-redirect" title="Shannon limit">theoretical limit</a>, has spurred interest in applying soft-decision decoding to conventional algebraic codes. In 2003, Ralf Koetter and <a href="/wiki/Alexander_Vardy" title="Alexander Vardy">Alexander Vardy</a> presented a polynomial-time soft-decision algebraic list-decoding algorithm for Reed–Solomon codes, which was based upon the work by Sudan and Guruswami.<sup id="cite_ref-22" class="reference"><a href="#cite_note-22"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup> In 2016, Steven J. Franke and Joseph H. Taylor published a novel soft-decision decoder.<sup id="cite_ref-23" class="reference"><a href="#cite_note-23"><span class="cite-bracket">[</span>22<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="MATLAB_example">MATLAB example</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=34" title="Edit section: MATLAB example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading4"><h4 id="Encoder">Encoder</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=35" title="Edit section: Encoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Here we present a simple <a href="/wiki/MATLAB" title="MATLAB">MATLAB</a> implementation for an encoder. </p> <div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span class="linenos" data-line="1"></span><span class="k">function</span><span class="w"> </span>encoded<span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nf">rsEncoder</span><span class="p">(</span>msg, m, prim_poly, n, k<span class="p">)</span> <span class="linenos" data-line="2"></span><span class="w"> </span><span class="c">% RSENCODER Encode message with the Reed-Solomon algorithm</span> <span class="linenos" data-line="3"></span><span class="w"> </span><span class="c">% m is the number of bits per symbol</span> <span class="linenos" data-line="4"></span><span class="w"> </span><span class="c">% prim_poly: Primitive polynomial p(x). Ie for DM is 301</span> <span class="linenos" data-line="5"></span><span class="w"> </span><span class="c">% k is the size of the message</span> <span class="linenos" data-line="6"></span><span class="w"> </span><span class="c">% n is the total size (k+redundant)</span> <span class="linenos" data-line="7"></span><span class="w"> </span><span class="c">% Example: msg = uint8('Test')</span> <span class="linenos" data-line="8"></span><span class="w"> </span><span class="c">% enc_msg = rsEncoder(msg, 8, 301, 12, numel(msg));</span> <span class="linenos" data-line="9"></span> <span class="linenos" data-line="10"></span><span class="w"> </span><span class="c">% Get the alpha</span> <span class="linenos" data-line="11"></span><span class="w"> </span><span class="nb">alpha</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="12"></span> <span class="linenos" data-line="13"></span><span class="w"> </span><span class="c">% Get the Reed-Solomon generating polynomial g(x)</span> <span class="linenos" data-line="14"></span><span class="w"> </span><span class="n">g_x</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">genpoly</span><span class="p">(</span><span class="n">k</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="nb">alpha</span><span class="p">);</span> <span class="linenos" data-line="15"></span> <span class="linenos" data-line="16"></span><span class="w"> </span><span class="c">% Multiply the information by X^(n-k), or just pad with zeros at the end to</span> <span class="linenos" data-line="17"></span><span class="w"> </span><span class="c">% get space to add the redundant information</span> <span class="linenos" data-line="18"></span><span class="w"> </span><span class="n">msg_padded</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">([</span><span class="n">msg</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">k</span><span class="p">)],</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="19"></span> <span class="linenos" data-line="20"></span><span class="w"> </span><span class="c">% Get the remainder of the division of the extended message by the</span> <span class="linenos" data-line="21"></span><span class="w"> </span><span class="c">% Reed-Solomon generating polynomial g(x)</span> <span class="linenos" data-line="22"></span><span class="w"> </span><span class="p">[</span><span class="o">~</span><span class="p">,</span><span class="w"> </span><span class="n">remainder</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">deconv</span><span class="p">(</span><span class="n">msg_padded</span><span class="p">,</span><span class="w"> </span><span class="n">g_x</span><span class="p">);</span> <span class="linenos" data-line="23"></span> <span class="linenos" data-line="24"></span><span class="w"> </span><span class="c">% Now return the message with the redundant information</span> <span class="linenos" data-line="25"></span><span class="w"> </span><span class="n">encoded</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">msg_padded</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">remainder</span><span class="p">;</span> <span class="linenos" data-line="26"></span> <span class="linenos" data-line="27"></span><span class="k">end</span> <span class="linenos" data-line="28"></span> <span class="linenos" data-line="29"></span><span class="c">% Find the Reed-Solomon generating polynomial g(x), by the way this is the</span> <span class="linenos" data-line="30"></span><span class="c">% same as the rsgenpoly function on matlab</span> <span class="linenos" data-line="31"></span><span class="k">function</span><span class="w"> </span>g<span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nf">genpoly</span><span class="p">(</span>k, n, alpha<span class="p">)</span> <span class="linenos" data-line="32"></span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="linenos" data-line="33"></span><span class="w"> </span><span class="c">% A multiplication on the galois field is just a convolution</span> <span class="linenos" data-line="34"></span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">mod</span><span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">k</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">)</span> <span class="linenos" data-line="35"></span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">conv</span><span class="p">(</span><span class="n">g</span><span class="p">,</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="w"> </span><span class="nb">alpha</span><span class="w"> </span><span class="o">.^</span><span class="w"> </span><span class="p">(</span><span class="n">k</span><span class="p">)]);</span> <span class="linenos" data-line="36"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="37"></span><span class="k">end</span> </pre></div> <div class="mw-heading mw-heading4"><h4 id="Decoder">Decoder</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=36" title="Edit section: Decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Now the decoding part: </p> <div class="mw-highlight mw-highlight-lang-matlab mw-content-ltr mw-highlight-lines" dir="ltr"><pre><span></span><span class="linenos" data-line="1"></span><span class="k">function</span><span class="w"> </span><span class="nf">[decoded, error_pos, error_mag, g, S] = rsDecoder</span><span class="p">(</span>encoded, m, prim_poly, n, k<span class="p">)</span> <span class="linenos" data-line="2"></span><span class="w"> </span><span class="c">% RSDECODER Decode a Reed-Solomon encoded message</span> <span class="linenos" data-line="3"></span><span class="w"> </span><span class="c">% Example:</span> <span class="linenos" data-line="4"></span><span class="w"> </span><span class="c">% [dec, ~, ~, ~, ~] = rsDecoder(enc_msg, 8, 301, 12, numel(msg))</span> <span class="linenos" data-line="5"></span><span class="w"> </span><span class="n">max_errors</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">floor</span><span class="p">((</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span> <span class="linenos" data-line="6"></span><span class="w"> </span><span class="n">orig_vals</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">encoded</span><span class="p">.</span><span class="n">x</span><span class="p">;</span> <span class="linenos" data-line="7"></span><span class="w"> </span><span class="c">% Initialize the error vector</span> <span class="linenos" data-line="8"></span><span class="w"> </span><span class="n">errors</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">);</span> <span class="linenos" data-line="9"></span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[];</span> <span class="linenos" data-line="10"></span><span class="w"> </span><span class="n">S</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[];</span> <span class="linenos" data-line="11"></span> <span class="linenos" data-line="12"></span><span class="w"> </span><span class="c">% Get the alpha</span> <span class="linenos" data-line="13"></span><span class="w"> </span><span class="nb">alpha</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="14"></span> <span class="linenos" data-line="15"></span><span class="w"> </span><span class="c">% Find the syndromes (Check if dividing the message by the generator</span> <span class="linenos" data-line="16"></span><span class="w"> </span><span class="c">% polynomial the result is zero)</span> <span class="linenos" data-line="17"></span><span class="w"> </span><span class="n">Synd</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">polyval</span><span class="p">(</span><span class="n">encoded</span><span class="p">,</span><span class="w"> </span><span class="nb">alpha</span><span class="w"> </span><span class="o">.^</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">k</span><span class="p">));</span> <span class="linenos" data-line="18"></span><span class="w"> </span><span class="n">Syndromes</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">trim</span><span class="p">(</span><span class="n">Synd</span><span class="p">);</span> <span class="linenos" data-line="19"></span> <span class="linenos" data-line="20"></span><span class="w"> </span><span class="c">% If all syndromes are zeros (perfectly divisible) there are no errors</span> <span class="linenos" data-line="21"></span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">isempty</span><span class="p">(</span><span class="n">Syndromes</span><span class="p">.</span><span class="n">x</span><span class="p">)</span> <span class="linenos" data-line="22"></span><span class="w"> </span><span class="n">decoded</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">orig_vals</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">);</span> <span class="linenos" data-line="23"></span><span class="w"> </span><span class="n">error_pos</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[];</span> <span class="linenos" data-line="24"></span><span class="w"> </span><span class="n">error_mag</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[];</span> <span class="linenos" data-line="25"></span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[];</span> <span class="linenos" data-line="26"></span><span class="w"> </span><span class="n">S</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Synd</span><span class="p">;</span> <span class="linenos" data-line="27"></span><span class="w"> </span><span class="k">return</span><span class="p">;</span> <span class="linenos" data-line="28"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="29"></span> <span class="linenos" data-line="30"></span><span class="w"> </span><span class="c">% Prepare for the euclidean algorithm (Used to find the error locating</span> <span class="linenos" data-line="31"></span><span class="w"> </span><span class="c">% polynomials)</span> <span class="linenos" data-line="32"></span><span class="w"> </span><span class="n">r0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">max_errors</span><span class="p">)];</span><span class="w"> </span><span class="n">r0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="n">r0</span><span class="p">,</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span><span class="w"> </span><span class="n">r0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">trim</span><span class="p">(</span><span class="n">r0</span><span class="p">);</span> <span class="linenos" data-line="33"></span><span class="w"> </span><span class="n">size_r0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">length</span><span class="p">(</span><span class="n">r0</span><span class="p">);</span> <span class="linenos" data-line="34"></span><span class="w"> </span><span class="n">r1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Syndromes</span><span class="p">;</span> <span class="linenos" data-line="35"></span><span class="w"> </span><span class="n">f0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">([</span><span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">size_r0</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="mi">1</span><span class="p">],</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="36"></span><span class="w"> </span><span class="n">f1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">size_r0</span><span class="p">),</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="37"></span><span class="w"> </span><span class="n">g0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">f1</span><span class="p">;</span><span class="w"> </span><span class="n">g1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">f0</span><span class="p">;</span> <span class="linenos" data-line="38"></span> <span class="linenos" data-line="39"></span><span class="w"> </span><span class="c">% Do the euclidean algorithm on the polynomials r0(x) and Syndromes(x) in</span> <span class="linenos" data-line="40"></span><span class="w"> </span><span class="c">% order to find the error locating polynomial</span> <span class="linenos" data-line="41"></span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="nb">true</span> <span class="linenos" data-line="42"></span><span class="w"> </span><span class="c">% Do a long division</span> <span class="linenos" data-line="43"></span><span class="w"> </span><span class="p">[</span><span class="n">quotient</span><span class="p">,</span><span class="w"> </span><span class="n">remainder</span><span class="p">]</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">deconv</span><span class="p">(</span><span class="n">r0</span><span class="p">,</span><span class="w"> </span><span class="n">r1</span><span class="p">);</span> <span class="linenos" data-line="44"></span><span class="w"> </span><span class="c">% Add some zeros</span> <span class="linenos" data-line="45"></span><span class="w"> </span><span class="n">quotient</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">pad</span><span class="p">(</span><span class="n">quotient</span><span class="p">,</span><span class="w"> </span><span class="nb">length</span><span class="p">(</span><span class="n">g1</span><span class="p">));</span> <span class="linenos" data-line="46"></span> <span class="linenos" data-line="47"></span><span class="w"> </span><span class="c">% Find quotient*g1 and pad</span> <span class="linenos" data-line="48"></span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">conv</span><span class="p">(</span><span class="n">quotient</span><span class="p">,</span><span class="w"> </span><span class="n">g1</span><span class="p">);</span> <span class="linenos" data-line="49"></span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">trim</span><span class="p">(</span><span class="n">c</span><span class="p">);</span> <span class="linenos" data-line="50"></span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">pad</span><span class="p">(</span><span class="n">c</span><span class="p">,</span><span class="w"> </span><span class="nb">length</span><span class="p">(</span><span class="n">g0</span><span class="p">));</span> <span class="linenos" data-line="51"></span> <span class="linenos" data-line="52"></span><span class="w"> </span><span class="c">% Update g as g0-quotient*g1</span> <span class="linenos" data-line="53"></span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">g0</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">c</span><span class="p">;</span> <span class="linenos" data-line="54"></span> <span class="linenos" data-line="55"></span><span class="w"> </span><span class="c">% Check if the degree of remainder(x) is less than max_errors</span> <span class="linenos" data-line="56"></span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">all</span><span class="p">(</span><span class="n">remainder</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="k">end</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">max_errors</span><span class="p">)</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span> <span class="linenos" data-line="57"></span><span class="w"> </span><span class="k">break</span><span class="p">;</span> <span class="linenos" data-line="58"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="59"></span> <span class="linenos" data-line="60"></span><span class="w"> </span><span class="c">% Update r0, r1, g0, g1 and remove leading zeros</span> <span class="linenos" data-line="61"></span><span class="w"> </span><span class="n">r0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">trim</span><span class="p">(</span><span class="n">r1</span><span class="p">);</span><span class="w"> </span><span class="n">r1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">trim</span><span class="p">(</span><span class="n">remainder</span><span class="p">);</span> <span class="linenos" data-line="62"></span><span class="w"> </span><span class="n">g0</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">g1</span><span class="p">;</span><span class="w"> </span><span class="n">g1</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">g</span><span class="p">;</span> <span class="linenos" data-line="63"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="64"></span> <span class="linenos" data-line="65"></span><span class="w"> </span><span class="c">% Remove leading zeros</span> <span class="linenos" data-line="66"></span><span class="w"> </span><span class="n">g</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">trim</span><span class="p">(</span><span class="n">g</span><span class="p">);</span> <span class="linenos" data-line="67"></span> <span class="linenos" data-line="68"></span><span class="w"> </span><span class="c">% Find the zeros of the error polynomial on this galois field</span> <span class="linenos" data-line="69"></span><span class="w"> </span><span class="n">evalPoly</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">polyval</span><span class="p">(</span><span class="n">g</span><span class="p">,</span><span class="w"> </span><span class="nb">alpha</span><span class="w"> </span><span class="o">.^</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">));</span> <span class="linenos" data-line="70"></span><span class="w"> </span><span class="n">error_pos</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="nb">find</span><span class="p">(</span><span class="n">evalPoly</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">),</span><span class="w"> </span><span class="n">m</span><span class="p">);</span> <span class="linenos" data-line="71"></span> <span class="linenos" data-line="72"></span><span class="w"> </span><span class="c">% If no error position is found we return the received work, because</span> <span class="linenos" data-line="73"></span><span class="w"> </span><span class="c">% basically is nothing that we could do and we return the received message</span> <span class="linenos" data-line="74"></span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nb">isempty</span><span class="p">(</span><span class="n">error_pos</span><span class="p">)</span> <span class="linenos" data-line="75"></span><span class="w"> </span><span class="n">decoded</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">orig_vals</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">);</span> <span class="linenos" data-line="76"></span><span class="w"> </span><span class="n">error_mag</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[];</span> <span class="linenos" data-line="77"></span><span class="w"> </span><span class="k">return</span><span class="p">;</span> <span class="linenos" data-line="78"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="79"></span> <span class="linenos" data-line="80"></span><span class="w"> </span><span class="c">% Prepare a linear system to solve the error polynomial and find the error</span> <span class="linenos" data-line="81"></span><span class="w"> </span><span class="c">% magnitudes</span> <span class="linenos" data-line="82"></span><span class="w"> </span><span class="n">size_error</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">length</span><span class="p">(</span><span class="n">error_pos</span><span class="p">);</span> <span class="linenos" data-line="83"></span><span class="w"> </span><span class="n">Syndrome_Vals</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Syndromes</span><span class="p">.</span><span class="n">x</span><span class="p">;</span> <span class="linenos" data-line="84"></span><span class="w"> </span><span class="n">b</span><span class="p">(:,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">Syndrome_Vals</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">size_error</span><span class="p">);</span> <span class="linenos" data-line="85"></span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">idx</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">size_error</span> <span class="linenos" data-line="86"></span><span class="w"> </span><span class="n">e</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">alpha</span><span class="w"> </span><span class="o">.^</span><span class="w"> </span><span class="p">(</span><span class="n">idx</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">error_pos</span><span class="p">.</span><span class="n">x</span><span class="p">));</span> <span class="linenos" data-line="87"></span><span class="w"> </span><span class="n">err</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">e</span><span class="p">.</span><span class="n">x</span><span class="p">;</span> <span class="linenos" data-line="88"></span><span class="w"> </span><span class="n">er</span><span class="p">(</span><span class="n">idx</span><span class="p">,</span><span class="w"> </span><span class="p">:)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">err</span><span class="p">;</span> <span class="linenos" data-line="89"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="90"></span> <span class="linenos" data-line="91"></span><span class="w"> </span><span class="c">% Solve the linear system</span> <span class="linenos" data-line="92"></span><span class="w"> </span><span class="n">error_mag</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">(</span><span class="n">gf</span><span class="p">(</span><span class="n">er</span><span class="p">,</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">)</span><span class="w"> </span><span class="o">\</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">))</span><span class="o">'</span><span class="p">;</span> <span class="linenos" data-line="93"></span><span class="w"> </span><span class="c">% Put the error magnitude on the error vector</span> <span class="linenos" data-line="94"></span><span class="w"> </span><span class="n">errors</span><span class="p">(</span><span class="n">error_pos</span><span class="p">.</span><span class="n">x</span><span class="p">)</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">error_mag</span><span class="p">.</span><span class="n">x</span><span class="p">;</span> <span class="linenos" data-line="95"></span><span class="w"> </span><span class="c">% Bring this vector to the galois field</span> <span class="linenos" data-line="96"></span><span class="w"> </span><span class="n">errors_gf</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="n">errors</span><span class="p">,</span><span class="w"> </span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="97"></span> <span class="linenos" data-line="98"></span><span class="w"> </span><span class="c">% Now to fix the errors just add with the encoded code</span> <span class="linenos" data-line="99"></span><span class="w"> </span><span class="n">decoded_gf</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">encoded</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">errors_gf</span><span class="p">(</span><span class="mi">1</span><span class="p">:</span><span class="n">k</span><span class="p">);</span> <span class="linenos" data-line="100"></span><span class="w"> </span><span class="n">decoded</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">decoded_gf</span><span class="p">.</span><span class="n">x</span><span class="p">;</span> <span class="linenos" data-line="101"></span> <span class="linenos" data-line="102"></span><span class="k">end</span> <span class="linenos" data-line="103"></span> <span class="linenos" data-line="104"></span><span class="c">% Remove leading zeros from Galois array</span> <span class="linenos" data-line="105"></span><span class="k">function</span><span class="w"> </span>gt<span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nf">trim</span><span class="p">(</span>g<span class="p">)</span> <span class="linenos" data-line="106"></span><span class="w"> </span><span class="n">gx</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">g</span><span class="p">.</span><span class="n">x</span><span class="p">;</span> <span class="linenos" data-line="107"></span><span class="w"> </span><span class="n">gt</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="n">gf</span><span class="p">(</span><span class="n">gx</span><span class="p">(</span><span class="nb">find</span><span class="p">(</span><span class="n">gx</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="k">end</span><span class="p">),</span><span class="w"> </span><span class="n">g</span><span class="p">.</span><span class="n">m</span><span class="p">,</span><span class="w"> </span><span class="n">g</span><span class="p">.</span><span class="n">prim_poly</span><span class="p">);</span> <span class="linenos" data-line="108"></span><span class="k">end</span> <span class="linenos" data-line="109"></span> <span class="linenos" data-line="110"></span><span class="c">% Add leading zeros</span> <span class="linenos" data-line="111"></span><span class="k">function</span><span class="w"> </span>xpad<span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nf">pad</span><span class="p">(</span>x, k<span class="p">)</span> <span class="linenos" data-line="112"></span><span class="w"> </span><span class="n">len</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nb">length</span><span class="p">(</span><span class="n">x</span><span class="p">);</span> <span class="linenos" data-line="113"></span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">len</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">k</span> <span class="linenos" data-line="114"></span><span class="w"> </span><span class="n">xpad</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="p">[</span><span class="nb">zeros</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">len</span><span class="p">)</span><span class="w"> </span><span class="n">x</span><span class="p">];</span> <span class="linenos" data-line="115"></span><span class="w"> </span><span class="k">end</span> <span class="linenos" data-line="116"></span><span class="k">end</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Reed_Solomon_original_view_decoders">Reed Solomon original view decoders</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=37" title="Edit section: Reed Solomon original view decoders"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The decoders described in this section use the Reed Solomon original view of a codeword as a sequence of polynomial values where the polynomial is based on the message to be encoded. The same set of fixed values are used by the encoder and decoder, and the decoder recovers the encoding polynomial (and optionally an error locating polynomial) from the received message. </p> <div class="mw-heading mw-heading3"><h3 id="Theoretical_decoder">Theoretical decoder</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=38" title="Edit section: Theoretical decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Reed and Solomon described a theoretical decoder that corrected errors by finding the most popular message polynomial.<sup id="cite_ref-ReedSolomon_1-5" class="reference"><a href="#cite_note-ReedSolomon-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The decoder only knows the set of values <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{1}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{1}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/bbf42ecda092975c9c69dae84e16182ba5fe2e07" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.284ex; height:2.009ex;" alt="{\displaystyle a_{1}}" /></span> to <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle a_{n}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </msub> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle a_{n}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/790f9209748c2dca7ed7b81932c37c02af1dbc31" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.671ex; width:2.448ex; height:2.009ex;" alt="{\displaystyle a_{n}}" /></span> and which encoding method was used to generate the codeword's sequence of values. The original message, the polynomial, and any errors are unknown. A decoding procedure could use a method like Lagrange interpolation on various subsets of n codeword values taken k at a time to repeatedly produce potential polynomials, until a sufficient number of matching polynomials are produced to reasonably eliminate any errors in the received codeword. Once a polynomial is determined, then any errors in the codeword can be corrected, by recalculating the corresponding codeword values. Unfortunately, in all but the simplest of cases, there are too many subsets, so the algorithm is impractical. The number of subsets is the <a href="/wiki/Binomial_coefficient" title="Binomial coefficient">binomial coefficient</a>, <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\textstyle {\binom {n}{k}}={n! \over (n-k)!k!}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="false" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mrow class="MJX-TeXAtom-OPEN"> <mo maxsize="1.2em" minsize="1.2em">(</mo> </mrow> <mfrac linethickness="0"> <mi>n</mi> <mi>k</mi> </mfrac> <mrow class="MJX-TeXAtom-CLOSE"> <mo maxsize="1.2em" minsize="1.2em">)</mo> </mrow> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mrow> <mi>n</mi> <mo>!</mo> </mrow> <mrow> <mo stretchy="false">(</mo> <mi>n</mi> <mo>−<!-- − --></mo> <mi>k</mi> <mo stretchy="false">)</mo> <mo>!</mo> <mi>k</mi> <mo>!</mo> </mrow> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\textstyle {\binom {n}{k}}={n! \over (n-k)!k!}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a36e5f3655c64191556de4752708dedcf6bc830e" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -1.838ex; width:13.222ex; height:4.343ex;" alt="{\textstyle {\binom {n}{k}}={n! \over (n-k)!k!}}" /></span>, and the number of subsets is infeasible for even modest codes. For a <span class="texhtml">(255,249)</span> code that can correct 3 errors, the naïve theoretical decoder would examine 359 billion subsets.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (March 2025)">citation needed</span></a></i>]</sup> </p> <div class="mw-heading mw-heading3"><h3 id="Berlekamp_Welch_decoder">Berlekamp Welch decoder</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=39" title="Edit section: Berlekamp Welch decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Unreferenced_section plainlinks metadata ambox ambox-content ambox-Unreferenced" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">sources</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Reed%E2%80%93Solomon_error_correction" title="Special:EditPage/Reed–Solomon error correction">improve this section</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <span class="date-container"><i>(<span class="date">March 2025</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p>In 1986, a decoder known as the <a href="/wiki/Berlekamp%E2%80%93Welch_algorithm" title="Berlekamp–Welch algorithm">Berlekamp–Welch algorithm</a> was developed as a decoder that is able to recover the original message polynomial as well as an error "locator" polynomial that produces zeroes for the input values that correspond to errors, with time complexity <span class="texhtml"><i>O</i>(<i>n</i><sup>3</sup>)</span>, where <span class="texhtml mvar" style="font-style:italic;">n</span> is the number of values in a message. The recovered polynomial is then used to recover (recalculate as needed) the original message. </p> <div class="mw-heading mw-heading4"><h4 id="Example_4">Example</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=40" title="Edit section: Example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Using RS(7,3), GF(929), and the set of evaluation points <span class="texhtml"><i>a<sub>i</sub></i> = <i>i</i> − 1</span> </p> <dl><dd><span class="texhtml"> <i>a</i> = {0, 1, 2, 3, 4, 5, 6} </span></dd></dl> <p>If the message polynomial is </p> <dl><dd><span class="texhtml"> <i>p</i>(<i>x</i>) = 003<i>x</i><sup>2</sup> + 002<i>x</i> + 001</span></dd></dl> <p>The codeword is </p> <dl><dd><span class="texhtml"> <i>c</i> = {001, 006, 017, 034, 057, 086, 121} </span></dd></dl> <p>Errors in transmission might cause this to be received instead. </p> <dl><dd><span class="texhtml"> <i>b</i> = <i>c</i> + <i>e</i> = {001, 006, 123, 456, 057, 086, 121} </span></dd></dl> <p>The key equation is: </p> <dl><dd><span class="texhtml"><i>b<sub>i</sub>E</i>(<i>a<sub>i</sub></i>) - <i>Q</i>(<i>a<sub>i</sub></i>) = 0</span></dd></dl> <p>Assume maximum number of errors: <span class="texhtml"><i>e</i> = 2</span>. The key equation becomes: </p> <dl><dd><span class="texhtml"><i>b<sub>i</sub></i>(<i>e</i><sub>0</sub> + <i>e</i><sub>1</sub><i>a<sub>i</sub></i>) - (<i>q</i><sub>0</sub> + <i>q</i><sub>1</sub><i>a<sub>i</sub></i> + <i>q</i><sub>2</sub> <i>a</i><span class="nowrap"><span style="display:inline-block;margin-bottom:-0.3em;vertical-align:-0.4em;line-height:1.2em;font-size:80%;text-align:left"><sup style="font-size:inherit;line-height:inherit;vertical-align:baseline">2</sup><br /><sub style="font-size:inherit;line-height:inherit;vertical-align:baseline"><i>i</i></sub></span></span> + <i>q</i><sub>3</sub><i>a</i><span class="nowrap"><span style="display:inline-block;margin-bottom:-0.3em;vertical-align:-0.4em;line-height:1.2em;font-size:80%;text-align:left"><sup style="font-size:inherit;line-height:inherit;vertical-align:baseline">3</sup><br /><sub style="font-size:inherit;line-height:inherit;vertical-align:baseline"><i>i</i></sub></span></span> + <i>q</i><sub>4</sub><i>a</i><span class="nowrap"><span style="display:inline-block;margin-bottom:-0.3em;vertical-align:-0.4em;line-height:1.2em;font-size:80%;text-align:left"><sup style="font-size:inherit;line-height:inherit;vertical-align:baseline">4</sup><br /><sub style="font-size:inherit;line-height:inherit;vertical-align:baseline"><i>i</i></sub></span></span>) = - <i>b<sub>i</sub>a</i><span class="nowrap"><span style="display:inline-block;margin-bottom:-0.3em;vertical-align:-0.4em;line-height:1.2em;font-size:80%;text-align:left"><sup style="font-size:inherit;line-height:inherit;vertical-align:baseline">2</sup><br /><sub style="font-size:inherit;line-height:inherit;vertical-align:baseline"><i>i</i></sub></span></span></span></dd></dl> <p><span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}001&000&928&000&000&000&000\\006&006&928&928&928&928&928\\123&246&928&927&925&921&913\\456&439&928&926&920&902&848\\057&228&928&925&913&865&673\\086&430&928&924&904&804&304\\121&726&928&923&893&713&562\end{bmatrix}}{\begin{bmatrix}e_{0}\\e_{1}\\q_{0}\\q_{1}\\q_{2}\\q_{3}\\q_{4}\end{bmatrix}}={\begin{bmatrix}000\\923\\437\\541\\017\\637\\289\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>006</mn> </mtd> <mtd> <mn>006</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>928</mn> </mtd> </mtr> <mtr> <mtd> <mn>123</mn> </mtd> <mtd> <mn>246</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>927</mn> </mtd> <mtd> <mn>925</mn> </mtd> <mtd> <mn>921</mn> </mtd> <mtd> <mn>913</mn> </mtd> </mtr> <mtr> <mtd> <mn>456</mn> </mtd> <mtd> <mn>439</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>926</mn> </mtd> <mtd> <mn>920</mn> </mtd> <mtd> <mn>902</mn> </mtd> <mtd> <mn>848</mn> </mtd> </mtr> <mtr> <mtd> <mn>057</mn> </mtd> <mtd> <mn>228</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>925</mn> </mtd> <mtd> <mn>913</mn> </mtd> <mtd> <mn>865</mn> </mtd> <mtd> <mn>673</mn> </mtd> </mtr> <mtr> <mtd> <mn>086</mn> </mtd> <mtd> <mn>430</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>924</mn> </mtd> <mtd> <mn>904</mn> </mtd> <mtd> <mn>804</mn> </mtd> <mtd> <mn>304</mn> </mtd> </mtr> <mtr> <mtd> <mn>121</mn> </mtd> <mtd> <mn>726</mn> </mtd> <mtd> <mn>928</mn> </mtd> <mtd> <mn>923</mn> </mtd> <mtd> <mn>893</mn> </mtd> <mtd> <mn>713</mn> </mtd> <mtd> <mn>562</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>923</mn> </mtd> </mtr> <mtr> <mtd> <mn>437</mn> </mtd> </mtr> <mtr> <mtd> <mn>541</mn> </mtd> </mtr> <mtr> <mtd> <mn>017</mn> </mtd> </mtr> <mtr> <mtd> <mn>637</mn> </mtd> </mtr> <mtr> <mtd> <mn>289</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}001&000&928&000&000&000&000\\006&006&928&928&928&928&928\\123&246&928&927&925&921&913\\456&439&928&926&920&902&848\\057&228&928&925&913&865&673\\086&430&928&924&904&804&304\\121&726&928&923&893&713&562\end{bmatrix}}{\begin{bmatrix}e_{0}\\e_{1}\\q_{0}\\q_{1}\\q_{2}\\q_{3}\\q_{4}\end{bmatrix}}={\begin{bmatrix}000\\923\\437\\541\\017\\637\\289\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/f7a266b6f5d5561dc5563555f6b641878dae8942" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -10.671ex; width:58.627ex; height:22.343ex;" alt="{\displaystyle {\begin{bmatrix}001&000&928&000&000&000&000\\006&006&928&928&928&928&928\\123&246&928&927&925&921&913\\456&439&928&926&920&902&848\\057&228&928&925&913&865&673\\086&430&928&924&904&804&304\\121&726&928&923&893&713&562\end{bmatrix}}{\begin{bmatrix}e_{0}\\e_{1}\\q_{0}\\q_{1}\\q_{2}\\q_{3}\\q_{4}\end{bmatrix}}={\begin{bmatrix}000\\923\\437\\541\\017\\637\\289\end{bmatrix}}}" /></span> </p><p>Using <a href="/wiki/Gaussian_elimination" title="Gaussian elimination">Gaussian elimination</a>: </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\begin{bmatrix}001&000&000&000&000&000&000\\000&001&000&000&000&000&000\\000&000&001&000&000&000&000\\000&000&000&001&000&000&000\\000&000&000&000&001&000&000\\000&000&000&000&000&001&000\\000&000&000&000&000&000&001\end{bmatrix}}{\begin{bmatrix}e_{0}\\e_{1}\\q_{0}\\q_{1}\\q_{2}\\q_{3}\\q_{4}\end{bmatrix}}={\begin{bmatrix}006\\924\\006\\007\\009\\916\\003\end{bmatrix}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> <mtd> <mn>000</mn> </mtd> </mtr> <mtr> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>000</mn> </mtd> <mtd> <mn>001</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>e</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>0</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>1</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>2</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>3</mn> </mrow> </msub> </mtd> </mtr> <mtr> <mtd> <msub> <mi>q</mi> <mrow class="MJX-TeXAtom-ORD"> <mn>4</mn> </mrow> </msub> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>[</mo> <mtable rowspacing="4pt" columnspacing="1em"> <mtr> <mtd> <mn>006</mn> </mtd> </mtr> <mtr> <mtd> <mn>924</mn> </mtd> </mtr> <mtr> <mtd> <mn>006</mn> </mtd> </mtr> <mtr> <mtd> <mn>007</mn> </mtd> </mtr> <mtr> <mtd> <mn>009</mn> </mtd> </mtr> <mtr> <mtd> <mn>916</mn> </mtd> </mtr> <mtr> <mtd> <mn>003</mn> </mtd> </mtr> </mtable> <mo>]</mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle {\begin{bmatrix}001&000&000&000&000&000&000\\000&001&000&000&000&000&000\\000&000&001&000&000&000&000\\000&000&000&001&000&000&000\\000&000&000&000&001&000&000\\000&000&000&000&000&001&000\\000&000&000&000&000&000&001\end{bmatrix}}{\begin{bmatrix}e_{0}\\e_{1}\\q_{0}\\q_{1}\\q_{2}\\q_{3}\\q_{4}\end{bmatrix}}={\begin{bmatrix}006\\924\\006\\007\\009\\916\\003\end{bmatrix}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/977104b3920fcbdfe629371a76ae92953c978886" class="mwe-math-fallback-image-display mw-invert skin-invert" aria-hidden="true" style="vertical-align: -10.671ex; width:58.627ex; height:22.343ex;" alt="{\displaystyle {\begin{bmatrix}001&000&000&000&000&000&000\\000&001&000&000&000&000&000\\000&000&001&000&000&000&000\\000&000&000&001&000&000&000\\000&000&000&000&001&000&000\\000&000&000&000&000&001&000\\000&000&000&000&000&000&001\end{bmatrix}}{\begin{bmatrix}e_{0}\\e_{1}\\q_{0}\\q_{1}\\q_{2}\\q_{3}\\q_{4}\end{bmatrix}}={\begin{bmatrix}006\\924\\006\\007\\009\\916\\003\end{bmatrix}}}" /></span> </p><p><br /> </p> <dl><dd><span class="texhtml"> <i>Q</i>(<i>x</i>) = 003<i>x</i><sup>4</sup> + 916<i>x</i><sup>3</sup> + 009<i>x</i><sup>2</sup> + 007<i>x</i> + 006</span></dd> <dd><span class="texhtml"> <i>E</i>(<i>x</i>) = 001<i>x</i><sup>2</sup> + 924<i>x</i> + 006</span></dd></dl> <dl><dd><span class="texhtml"> <style data-mw-deduplicate="TemplateStyles:r1214402035">.mw-parser-output .sfrac{white-space:nowrap}.mw-parser-output .sfrac.tion,.mw-parser-output .sfrac .tion{display:inline-block;vertical-align:-0.5em;font-size:85%;text-align:center}.mw-parser-output .sfrac .num{display:block;line-height:1em;margin:0.0em 0.1em;border-bottom:1px solid}.mw-parser-output .sfrac .den{display:block;line-height:1em;margin:0.1em 0.1em}.mw-parser-output .sr-only{border:0;clip:rect(0,0,0,0);clip-path:polygon(0px 0px,0px 0px,0px 0px);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}</style><span class="sfrac">⁠<span class="tion"><span class="num"><i>Q</i>(<i>x</i>)</span><span class="sr-only">/</span><span class="den"><i>E</i>(<i>x</i>)</span></span>⁠</span> = <i>P</i>(<i>x</i>) = 003<i>x</i><sup>2</sup> + 002<i>x</i> + 001</span></dd></dl> <p>Recalculate <span class="texhtml"> <i>P</i>(<i>x</i>) </span> where <span class="texhtml"> <i>E</i>(<i>x</i>) = 0 : {2, 3} </span> to correct <span class="texhtml mvar" style="font-style:italic;">b</span> resulting in the corrected codeword: </p> <dl><dd><span class="texhtml"> <i>c</i> = {001, 006, 017, 034, 057, 086, 121} </span>}}</dd></dl> <div class="mw-heading mw-heading3"><h3 id="Gao_decoder">Gao decoder</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=41" title="Edit section: Gao decoder"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In 2002, an improved decoder was developed by Shuhong Gao, based on the extended Euclid algorithm.<sup id="cite_ref-gao_6-1" class="reference"><a href="#cite_note-gao-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Example_5">Example</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=42" title="Edit section: Example"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1251242444" /><table class="box-Unreferenced_section plainlinks metadata ambox ambox-content ambox-Unreferenced" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">sources</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Reed%E2%80%93Solomon_error_correction" title="Special:EditPage/Reed–Solomon error correction">improve this section</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <span class="date-container"><i>(<span class="date">March 2025</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <p>Using the same data as the Berlekamp Welch example above: </p> <ul><li><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle R_{-1}=\prod _{i=1}^{n}(x-a_{i})}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <msub> <mi>R</mi> <mrow class="MJX-TeXAtom-ORD"> <mo>−<!-- − --></mo> <mn>1</mn> </mrow> </msub> <mo>=</mo> <munderover> <mo>∏<!-- ∏ --></mo> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow class="MJX-TeXAtom-ORD"> <mi>n</mi> </mrow> </munderover> <mo stretchy="false">(</mo> <mi>x</mi> <mo>−<!-- − --></mo> <msub> <mi>a</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle R_{-1}=\prod _{i=1}^{n}(x-a_{i})}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/2c5ead155b26eb5317b0b981762b50003615c6d1" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -3.005ex; width:18.174ex; height:6.843ex;" alt="{\displaystyle R_{-1}=\prod _{i=1}^{n}(x-a_{i})}" /></span></li> <li><span class="texhtml"> <i>R</i><sub>0</sub> = </span> Lagrange interpolation of {<i>a<sub>i</sub></i>, <i>b</i>(<i>a<sub>i</sub></i>)} for <span class="texhtml"><i>i</i> = 1 to <i>n</i></span></li> <li><span class="texhtml"> <i>A</i><sub>-1</sub> = 0</span></li> <li><span class="texhtml"> <i>A</i><sub>0</sub> = 1</span></li></ul> <table class="wikitable"> <tbody><tr> <th><i>i</i> </th> <th><i>R<sub>i</sub></i> </th> <th><i>A<sub>i</sub></i> </th></tr> <tr> <td>−1 </td> <td>001<i>x</i><sup>7</sup> + 908<i>x</i><sup>6</sup> + 175<i>x</i><sup>5</sup> + 194<i>x</i><sup>4</sup> + 695<i>x</i><sup>3</sup> + 094<i>x</i><sup>2</sup> + 720<i>x</i> + 000 </td> <td>000 </td></tr> <tr> <td>0 </td> <td>055<i>x</i><sup>6</sup> + 440<i>x</i><sup>5</sup> + 497<i>x</i><sup>4</sup> + 904<i>x</i><sup>3</sup> + 424<i>x</i><sup>2</sup> + 472<i>x</i> + 001 </td> <td>001 </td></tr> <tr> <td>1 </td> <td>702<i>x</i><sup>5</sup> + 845<i>x</i><sup>4</sup> + 691<i>x</i><sup>3</sup> + 461<i>x</i><sup>2</sup> + 327<i>x</i> + 237 </td> <td>152 x + 237 </td></tr> <tr> <td>2 </td> <td>266<i>x</i><sup>4</sup> + 086<i>x</i><sup>3</sup> + 798<i>x</i><sup>2</sup> + 311<i>x</i> + 532 </td> <td>708<i>x</i><sup>2</sup> + 176<i>x</i> + 532 </td></tr></tbody></table> <dl><dd><span class="texhtml"> <i>Q</i>(<i>x</i>) = <i>R</i><sub>2</sub> = 266<i>x</i><sup>4</sup> + 086<i>x</i><sup>3</sup> + 798<i>x</i><sup>2</sup> + 311<i>x</i> + 532</span></dd></dl> <dl><dd><span class="texhtml"> <i>E</i>(<i>x</i>) = <i>A</i><sup>2</sup> = 708<i>x</i><sup>2</sup> + 176<i>x</i> + 532</span></dd></dl> <p>divide <i>Q</i>(<i>x</i>) and <i>E</i>(<i>x</i>) by most significant coefficient of <i>E</i>(<i>x</i>) = 708. (Optional)<sup class="noprint Inline-Template" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Please_clarify" title="Wikipedia:Please clarify"><span title="The text near this tag needs further explanation. (March 2025)">further explanation needed</span></a></i>]</sup> </p> <dl><dd><span class="texhtml"> <i>Q</i>(<i>x</i>) = 003<i>x</i><sup>4</sup> + 916<i>x</i><sup>3</sup> + 009<i>x</i><sup>2</sup> + 007<i>x</i> + 006</span></dd> <dd><span class="texhtml"> <i>E</i>(<i>x</i>) = 001<i>x</i><sup>2</sup> + 924<i>x</i> + 006</span></dd></dl> <dl><dd><span class="texhtml"> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1214402035" /><span class="sfrac">⁠<span class="tion"><span class="num"><i>Q</i>(<i>x</i>)</span><span class="sr-only">/</span><span class="den"><i>E</i>(<i>x</i>)</span></span>⁠</span> = <i>P</i>(<i>x</i>) = 003<i>x</i><sup>2</sup> + 002<i>x</i> + 001</span></dd></dl> <p>Recalculate <span class="texhtml"> <i>P</i>(<i>x</i>) </span> where <span class="texhtml"> <i>E</i>(<i>x</i>) = 0 : {2, 3} </span> to correct <span class="texhtml"><i>b</i></span> resulting in the corrected codeword: </p> <dl><dd><span class="texhtml"> <i>c</i> = {001, 006, 017, 034, 057, 086, 121} </span></dd></dl> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=43" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/BCH_code" title="BCH code">BCH code</a></li> <li><a href="/wiki/Berlekamp%E2%80%93Massey_algorithm" title="Berlekamp–Massey algorithm">Berlekamp–Massey algorithm</a></li> <li><a href="/wiki/Berlekamp%E2%80%93Welch_algorithm" title="Berlekamp–Welch algorithm">Berlekamp–Welch algorithm</a></li> <li><a href="/wiki/Chien_search" title="Chien search">Chien search</a></li> <li><a href="/wiki/Cyclic_code" title="Cyclic code">Cyclic code</a></li> <li><a href="/wiki/Folded_Reed%E2%80%93Solomon_code" title="Folded Reed–Solomon code">Folded Reed–Solomon code</a></li> <li><a href="/wiki/Forward_error_correction" class="mw-redirect" title="Forward error correction">Forward error correction</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=44" title="Edit section: Notes"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"> Authors in Andrews et al. (2007), provide simulation results which show that for the same code rate (1/6) turbo codes outperform Reed-Solomon concatenated codes up to 2 dB (<a href="/wiki/Bit_error_rate" title="Bit error rate">bit error rate</a>).<sup id="cite_ref-Andrews,_2007_9-1" class="reference"><a href="#cite_note-Andrews,_2007-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=45" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239543626" /><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-ReedSolomon-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-ReedSolomon_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-ReedSolomon_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-ReedSolomon_1-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-ReedSolomon_1-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-ReedSolomon_1-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-ReedSolomon_1-5"><sup><i><b>f</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFReedSolomon1960" class="citation journal cs1"><a href="/wiki/Irving_S._Reed" title="Irving S. Reed">Reed, Irving S.</a>; <a href="/wiki/Gustave_Solomon" title="Gustave Solomon">Solomon, Gustave</a> (1960). <a rel="nofollow" class="external text" href="https://sites.math.rutgers.edu/~zeilberg/akherim/ReedS1960.pdf">"Polynomial Codes over Certain Finite Fields"</a> <span class="cs1-format">(PDF)</span>. <i>Journal of the Society for Industrial and Applied Mathematics</i>. <b>8</b> (2): <span class="nowrap">300–</span>304. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1137%2F0108018">10.1137/0108018</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+the+Society+for+Industrial+and+Applied+Mathematics&rft.atitle=Polynomial+Codes+over+Certain+Finite+Fields&rft.volume=8&rft.issue=2&rft.pages=%3Cspan+class%3D%22nowrap%22%3E300-%3C%2Fspan%3E304&rft.date=1960&rft_id=info%3Adoi%2F10.1137%2F0108018&rft.aulast=Reed&rft.aufirst=Irving+S.&rft.au=Solomon%2C+Gustave&rft_id=https%3A%2F%2Fsites.math.rutgers.edu%2F~zeilberg%2Fakherim%2FReedS1960.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGorensteinZierler1961" class="citation journal cs1">Gorenstein, D.; Zierler, N. (June 1961). "A class of cyclic linear error-correcting codes in <i>p<sup>m</sup></i> symbols". <i>J. SIAM</i>. <b>9</b> (2): <span class="nowrap">207–</span>214. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1137%2F0109020">10.1137/0109020</a>. <a href="/wiki/JSTOR_(identifier)" class="mw-redirect" title="JSTOR (identifier)">JSTOR</a> <a rel="nofollow" class="external text" href="https://www.jstor.org/stable/2098821">2098821</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=J.+SIAM&rft.atitle=A+class+of+cyclic+linear+error-correcting+codes+in+p%3Csup%3Em%3C%2Fsup%3E+symbols&rft.volume=9&rft.issue=2&rft.pages=%3Cspan+class%3D%22nowrap%22%3E207-%3C%2Fspan%3E214&rft.date=1961-06&rft_id=info%3Adoi%2F10.1137%2F0109020&rft_id=https%3A%2F%2Fwww.jstor.org%2Fstable%2F2098821%23id-name%3DJSTOR&rft.aulast=Gorenstein&rft.aufirst=D.&rft.au=Zierler%2C+N.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-Peterson61-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-Peterson61_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Peterson61_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFPeterson1961" class="citation book cs1">Peterson, W. Wesley (1961). <i>Error-Correcting Codes</i>. MIT Press. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0262160063" title="Special:BookSources/978-0262160063"><bdi>978-0262160063</bdi></a>. <a href="/wiki/OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/859669631">859669631</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Error-Correcting+Codes&rft.pub=MIT+Press&rft.date=1961&rft_id=info%3Aoclcnum%2F859669631&rft.isbn=978-0262160063&rft.aulast=Peterson&rft.aufirst=W.+Wesley&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-Peterson96-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-Peterson96_4-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFPetersonWeldon1996" class="citation book cs1">Peterson, W. Wesley; Weldon, E. J. (1996) [1972]. <a rel="nofollow" class="external text" href="https://books.google.com/books?id=5kfwlFeklx0C&pg=PP11&dq=%229780262160391%22"><i>Error Correcting Codes</i></a> (2nd ed.). MIT Press. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-585-30709-1" title="Special:BookSources/978-0-585-30709-1"><bdi>978-0-585-30709-1</bdi></a>. <a href="/wiki/OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/45727875">45727875</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Error+Correcting+Codes&rft.edition=2nd&rft.pub=MIT+Press&rft.date=1996&rft_id=info%3Aoclcnum%2F45727875&rft.isbn=978-0-585-30709-1&rft.aulast=Peterson&rft.aufirst=W.+Wesley&rft.au=Weldon%2C+E.+J.&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3D5kfwlFeklx0C%26pg%3DPP11%26dq%3D%25229780262160391%2522&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFSugiyamaKasaharaHirasawaNamekawa1975" class="citation journal cs1">Sugiyama, Y.; Kasahara, M.; Hirasawa, S.; Namekawa, T. (1975). <a rel="nofollow" class="external text" href="https://doi.org/10.1016%2FS0019-9958%2875%2990090-X">"A method for solving key equation for decoding Goppa codes"</a>. <i>Information and Control</i>. <b>27</b> (1): <span class="nowrap">87–</span>99. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1016%2FS0019-9958%2875%2990090-X">10.1016/S0019-9958(75)90090-X</a></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Information+and+Control&rft.atitle=A+method+for+solving+key+equation+for+decoding+Goppa+codes&rft.volume=27&rft.issue=1&rft.pages=%3Cspan+class%3D%22nowrap%22%3E87-%3C%2Fspan%3E99&rft.date=1975&rft_id=info%3Adoi%2F10.1016%2FS0019-9958%2875%2990090-X&rft.aulast=Sugiyama&rft.aufirst=Y.&rft.au=Kasahara%2C+M.&rft.au=Hirasawa%2C+S.&rft.au=Namekawa%2C+T.&rft_id=https%3A%2F%2Fdoi.org%2F10.1016%252FS0019-9958%252875%252990090-X&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-gao-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-gao_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-gao_6-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGao2002" class="citation cs2">Gao, Shuhong (January 2002), <a rel="nofollow" class="external text" href="http://www.math.clemson.edu/~sgao/papers/RS.pdf"><i>New Algorithm For Decoding Reed-Solomon Codes</i></a> <span class="cs1-format">(PDF)</span>, Clemson</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=New+Algorithm+For+Decoding+Reed-Solomon+Codes&rft.pub=Clemson&rft.date=2002-01&rft.aulast=Gao&rft.aufirst=Shuhong&rft_id=http%3A%2F%2Fwww.math.clemson.edu%2F~sgao%2Fpapers%2FRS.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span>.</span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFImmink1994" class="citation cs2"><a href="/wiki/Kees_Immink" class="mw-redirect" title="Kees Immink">Immink, K. A. S.</a> (1994), "Reed–Solomon Codes and the Compact Disc", in Wicker, Stephen B.; Bhargava, Vijay K. (eds.), <i>Reed–Solomon Codes and Their Applications</i>, <a href="/wiki/IEEE_Press" class="mw-redirect" title="IEEE Press">IEEE Press</a>, <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-7803-1025-4" title="Special:BookSources/978-0-7803-1025-4"><bdi>978-0-7803-1025-4</bdi></a></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Reed%E2%80%93Solomon+Codes+and+the+Compact+Disc&rft.btitle=Reed%E2%80%93Solomon+Codes+and+Their+Applications&rft.pub=IEEE+Press&rft.date=1994&rft.isbn=978-0-7803-1025-4&rft.aulast=Immink&rft.aufirst=K.+A.+S.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFHagenauerOfferPapke1994" class="citation book cs1">Hagenauer, J.; Offer, E.; Papke, L. (1994). "11. Matching Viterbi Decoders and Reed-Solomon Decoders in a Concatenated System". <i>Reed Solomon Codes and Their Applications</i>. IEEE Press. p. 433. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9780470546345" title="Special:BookSources/9780470546345"><bdi>9780470546345</bdi></a>. <a href="/wiki/OCLC_(identifier)" class="mw-redirect" title="OCLC (identifier)">OCLC</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/oclc/557445046">557445046</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=11.+Matching+Viterbi+Decoders+and+Reed-Solomon+Decoders+in+a+Concatenated+System&rft.btitle=Reed+Solomon+Codes+and+Their+Applications&rft.pages=433&rft.pub=IEEE+Press&rft.date=1994&rft_id=info%3Aoclcnum%2F557445046&rft.isbn=9780470546345&rft.aulast=Hagenauer&rft.aufirst=J.&rft.au=Offer%2C+E.&rft.au=Papke%2C+L.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-Andrews,_2007-9"><span class="mw-cite-backlink">^ <a href="#cite_ref-Andrews,_2007_9-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Andrews,_2007_9-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFAndrewsDivsalarDolinarHamkins2007" class="citation journal cs1">Andrews, K.S.; Divsalar, D.; Dolinar, S.; Hamkins, J.; Jones, C.R.; Pollara, F. (2007). <a rel="nofollow" class="external text" href="https://scholar.archive.org/work/shkuo6oxabbklkfz4d6v4gero4/access/wayback/http://coding.jpl.nasa.gov/~hamkins/publications/journals/2007_11_turbo_LDPC.pdf">"The development of turbo and LDPC codes for deep-space applications"</a> <span class="cs1-format">(PDF)</span>. <i>Proceedings of the IEEE</i>. <b>95</b> (11): <span class="nowrap">2142–</span>56. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FJPROC.2007.905132">10.1109/JPROC.2007.905132</a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:9289140">9289140</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Proceedings+of+the+IEEE&rft.atitle=The+development+of+turbo+and+LDPC+codes+for+deep-space+applications.&rft.volume=95&rft.issue=11&rft.pages=%3Cspan+class%3D%22nowrap%22%3E2142-%3C%2Fspan%3E56&rft.date=2007&rft_id=info%3Adoi%2F10.1109%2FJPROC.2007.905132&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A9289140%23id-name%3DS2CID&rft.aulast=Andrews&rft.aufirst=K.S.&rft.au=Divsalar%2C+D.&rft.au=Dolinar%2C+S.&rft.au=Hamkins%2C+J.&rft.au=Jones%2C+C.R.&rft.au=Pollara%2C+F.&rft_id=https%3A%2F%2Fscholar.archive.org%2Fwork%2Fshkuo6oxabbklkfz4d6v4gero4%2Faccess%2Fwayback%2Fhttp%3A%2F%2Fcoding.jpl.nasa.gov%2F~hamkins%2Fpublications%2Fjournals%2F2007_11_turbo_LDPC.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFLinCostello1983" class="citation book cs1">Lin, Shu; Costello, Daniel J. (1983). <i>Error control coding: fundamentals and applications</i> (Nachdr. ed.). Englewood Cliffs, NJ: Prentice-Hall. p. 171. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-13-283796-5" title="Special:BookSources/978-0-13-283796-5"><bdi>978-0-13-283796-5</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Error+control+coding%3A+fundamentals+and+applications&rft.place=Englewood+Cliffs%2C+NJ&rft.pages=171&rft.edition=Nachdr.&rft.pub=Prentice-Hall&rft.date=1983&rft.isbn=978-0-13-283796-5&rft.aulast=Lin&rft.aufirst=Shu&rft.au=Costello%2C+Daniel+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.mathworks.com/help/comm/ug/bit-error-rate-ber.html#brck0zf">"Analytical Expressions Used in bercoding and BERTool"</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190201172027/https://www.mathworks.com/help/comm/ug/bit-error-rate-ber.html#brck0zf">Archived</a> from the original on 2019-02-01<span class="reference-accessdate">. Retrieved <span class="nowrap">2019-02-01</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Analytical+Expressions+Used+in+bercoding+and+BERTool&rft_id=https%3A%2F%2Fwww.mathworks.com%2Fhelp%2Fcomm%2Fug%2Fbit-error-rate-ber.html%23brck0zf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFPfenderZiegler2004" class="citation cs2">Pfender, Florian; Ziegler, Günter M. (September 2004), <a rel="nofollow" class="external text" href="https://www.ams.org/notices/200408/fea-pfender.pdf">"Kissing Numbers, Sphere Packings, and Some Unexpected Proofs"</a> <span class="cs1-format">(PDF)</span>, <i>Notices of the American Mathematical Society</i>, <b>51</b> (8): <span class="nowrap">873–</span>883, <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080509183217/http://www.ams.org/notices/200408/fea-pfender.pdf">archived</a> <span class="cs1-format">(PDF)</span> from the original on 2008-05-09<span class="reference-accessdate">, retrieved <span class="nowrap">2009-09-28</span></span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Notices+of+the+American+Mathematical+Society&rft.atitle=Kissing+Numbers%2C+Sphere+Packings%2C+and+Some+Unexpected+Proofs&rft.volume=51&rft.issue=8&rft.pages=%3Cspan+class%3D%22nowrap%22%3E873-%3C%2Fspan%3E883&rft.date=2004-09&rft.aulast=Pfender&rft.aufirst=Florian&rft.au=Ziegler%2C+G%C3%BCnter+M.&rft_id=https%3A%2F%2Fwww.ams.org%2Fnotices%2F200408%2Ffea-pfender.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span>. Explains the Delsarte-Goethals-Seidel theorem as used in the context of the error correcting code for <a href="/wiki/Compact_disc" title="Compact disc">compact disc</a>.</span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFPeterson1960" class="citation journal cs1">Peterson, W. (September 1960). "Encoding and error-correction procedures for the Bose-Chaudhuri codes". <i>IEEE Transactions on Information Theory</i>. <b>6</b> (4): <span class="nowrap">459–</span>470. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTIT.1960.1057586">10.1109/TIT.1960.1057586</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Information+Theory&rft.atitle=Encoding+and+error-correction+procedures+for+the+Bose-Chaudhuri+codes&rft.volume=6&rft.issue=4&rft.pages=%3Cspan+class%3D%22nowrap%22%3E459-%3C%2Fspan%3E470&rft.date=1960-09&rft_id=info%3Adoi%2F10.1109%2FTIT.1960.1057586&rft.aulast=Peterson&rft.aufirst=W.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGorensteinZierler1961" class="citation journal cs1">Gorenstein, Daniel; Zierler, Neal (June 1961). "A Class of Error-Correcting Codes in $p^m $ Symbols". <i>Journal of the Society for Industrial and Applied Mathematics</i>. <b>9</b> (2): <span class="nowrap">207–</span>214. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1137%2F0109020">10.1137/0109020</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+the+Society+for+Industrial+and+Applied+Mathematics&rft.atitle=A+Class+of+Error-Correcting+Codes+in+%24p%5Em+%24+Symbols&rft.volume=9&rft.issue=2&rft.pages=%3Cspan+class%3D%22nowrap%22%3E207-%3C%2Fspan%3E214&rft.date=1961-06&rft_id=info%3Adoi%2F10.1137%2F0109020&rft.aulast=Gorenstein&rft.aufirst=Daniel&rft.au=Zierler%2C+Neal&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGilln.d." class="citation web cs1">Gill, John (n.d.). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140630172526/http://web.stanford.edu/class/ee387/handouts/notes7.pdf">"EE387 Notes #7, Handout #28"</a> <span class="cs1-format">(PDF)</span>. Stanford University. Archived from <a rel="nofollow" class="external text" href="http://www.stanford.edu/class/ee387/handouts/notes7.pdf">the original</a> <span class="cs1-format">(PDF)</span> on June 30, 2014<span class="reference-accessdate">. Retrieved <span class="nowrap">April 21,</span> 2010</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=EE387+Notes+%237%2C+Handout+%2328&rft.pub=Stanford+University&rft.aulast=Gill&rft.aufirst=John&rft_id=http%3A%2F%2Fwww.stanford.edu%2Fclass%2Fee387%2Fhandouts%2Fnotes7.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFLinCostello2004" class="citation book cs1">Lin, Shu; Costello, Daniel J. (2004). <i>Error control coding: fundamentals and applications</i> (2. ed.). Upper Saddle River, NJ: Pearson/Prentice Hall. pp. <span class="nowrap">255–</span>262. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0130426727" title="Special:BookSources/978-0130426727"><bdi>978-0130426727</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Error+control+coding%3A+fundamentals+and+applications&rft.place=Upper+Saddle+River%2C+NJ&rft.pages=%3Cspan+class%3D%22nowrap%22%3E255-%3C%2Fspan%3E262&rft.edition=2.&rft.pub=Pearson%2FPrentice+Hall&rft.date=2004&rft.isbn=978-0130426727&rft.aulast=Lin&rft.aufirst=Shu&rft.au=Costello%2C+Daniel+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGuruswamiSudan1999" class="citation cs2">Guruswami, V.; Sudan, M. (September 1999), "Improved decoding of Reed–Solomon codes and algebraic geometry codes", <i><a href="/wiki/IEEE_Transactions_on_Information_Theory" title="IEEE Transactions on Information Theory">IEEE Transactions on Information Theory</a></i>, <b>45</b> (6): <span class="nowrap">1757–</span>1767, <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.115.292">10.1.1.115.292</a></span>, <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F18.782097">10.1109/18.782097</a></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Information+Theory&rft.atitle=Improved+decoding+of+Reed%E2%80%93Solomon+codes+and+algebraic+geometry+codes&rft.volume=45&rft.issue=6&rft.pages=%3Cspan+class%3D%22nowrap%22%3E1757-%3C%2Fspan%3E1767&rft.date=1999-09&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.115.292%23id-name%3DCiteSeerX&rft_id=info%3Adoi%2F10.1109%2F18.782097&rft.aulast=Guruswami&rft.aufirst=V.&rft.au=Sudan%2C+M.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFBrakensiekGopiMakam2023" class="citation book cs1">Brakensiek, Joshua; Gopi, Sivakanth; Makam, Visu (2023-06-02). <a rel="nofollow" class="external text" href="https://doi.org/10.1145/3564246.3585128">"Generic Reed-Solomon Codes Achieve List-Decoding Capacity"</a>. <i>Proceedings of the 55th Annual ACM Symposium on Theory of Computing</i>. STOC 2023. New York, NY, USA: Association for Computing Machinery. pp. <span class="nowrap">1488–</span>1501. <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/2206.05256">2206.05256</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F3564246.3585128">10.1145/3564246.3585128</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-4503-9913-5" title="Special:BookSources/978-1-4503-9913-5"><bdi>978-1-4503-9913-5</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Generic+Reed-Solomon+Codes+Achieve+List-Decoding+Capacity&rft.btitle=Proceedings+of+the+55th+Annual+ACM+Symposium+on+Theory+of+Computing&rft.place=New+York%2C+NY%2C+USA&rft.series=STOC+2023&rft.pages=%3Cspan+class%3D%22nowrap%22%3E1488-%3C%2Fspan%3E1501&rft.pub=Association+for+Computing+Machinery&rft.date=2023-06-02&rft_id=info%3Aarxiv%2F2206.05256&rft_id=info%3Adoi%2F10.1145%2F3564246.3585128&rft.isbn=978-1-4503-9913-5&rft.aulast=Brakensiek&rft.aufirst=Joshua&rft.au=Gopi%2C+Sivakanth&rft.au=Makam%2C+Visu&rft_id=https%3A%2F%2Fdoi.org%2F10.1145%2F3564246.3585128&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGuoZhang2023" class="citation book cs1">Guo, Zeyu; Zhang, Zihan (2023). <a rel="nofollow" class="external text" href="https://doi.org/10.1109/FOCS57990.2023.00019">"Randomly Punctured Reed-Solomon Codes Achieve the List Decoding Capacity over Polynomial-Size Alphabets"</a>. <i>2023 IEEE 64th Annual Symposium on Foundations of Computer Science (FOCS)</i>. FOCS 2023, Santa Cruz, CA, USA, 2023. pp. <span class="nowrap">164–</span>176. <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/2304.01403">2304.01403</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FFOCS57990.2023.00019">10.1109/FOCS57990.2023.00019</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/979-8-3503-1894-4" title="Special:BookSources/979-8-3503-1894-4"><bdi>979-8-3503-1894-4</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=Randomly+Punctured+Reed-Solomon+Codes+Achieve+the+List+Decoding+Capacity+over+Polynomial-Size+Alphabets&rft.btitle=2023+IEEE+64th+Annual+Symposium+on+Foundations+of+Computer+Science+%28FOCS%29&rft.series=FOCS+2023%2C+Santa+Cruz%2C+CA%2C+USA%2C+2023&rft.pages=%3Cspan+class%3D%22nowrap%22%3E164-%3C%2Fspan%3E176&rft.date=2023&rft_id=info%3Aarxiv%2F2304.01403&rft_id=info%3Adoi%2F10.1109%2FFOCS57990.2023.00019&rft.isbn=979-8-3503-1894-4&rft.aulast=Guo&rft.aufirst=Zeyu&rft.au=Zhang%2C+Zihan&rft_id=https%3A%2F%2Fdoi.org%2F10.1109%2FFOCS57990.2023.00019&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFAlrabiahGuruswamiLi2023" class="citation cs2">Alrabiah, Omar; Guruswami, Venkatesan; Li, Ray (2023-08-18), <i>Randomly punctured Reed--Solomon codes achieve list-decoding capacity over linear-sized fields</i>, <a href="/wiki/ArXiv_(identifier)" class="mw-redirect" title="ArXiv (identifier)">arXiv</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://arxiv.org/abs/2304.09445">2304.09445</a></span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Randomly+punctured+Reed--Solomon+codes+achieve+list-decoding+capacity+over+linear-sized+fields&rft.date=2023-08-18&rft_id=info%3Aarxiv%2F2304.09445&rft.aulast=Alrabiah&rft.aufirst=Omar&rft.au=Guruswami%2C+Venkatesan&rft.au=Li%2C+Ray&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-22"><span class="mw-cite-backlink"><b><a href="#cite_ref-22">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFKoetterVardy2003" class="citation journal cs1">Koetter, Ralf; Vardy, Alexander (2003). "Algebraic soft-decision decoding of Reed–Solomon codes". <i><a href="/wiki/IEEE_Transactions_on_Information_Theory" title="IEEE Transactions on Information Theory">IEEE Transactions on Information Theory</a></i>. <b>49</b> (11): <span class="nowrap">2809–</span>2825. <a href="/wiki/CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a> <span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.2021">10.1.1.13.2021</a></span>. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTIT.2003.819332">10.1109/TIT.2003.819332</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Information+Theory&rft.atitle=Algebraic+soft-decision+decoding+of+Reed%E2%80%93Solomon+codes&rft.volume=49&rft.issue=11&rft.pages=%3Cspan+class%3D%22nowrap%22%3E2809-%3C%2Fspan%3E2825&rft.date=2003&rft_id=https%3A%2F%2Fciteseerx.ist.psu.edu%2Fviewdoc%2Fsummary%3Fdoi%3D10.1.1.13.2021%23id-name%3DCiteSeerX&rft_id=info%3Adoi%2F10.1109%2FTIT.2003.819332&rft.aulast=Koetter&rft.aufirst=Ralf&rft.au=Vardy%2C+Alexander&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> <li id="cite_note-23"><span class="mw-cite-backlink"><b><a href="#cite_ref-23">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFFrankeTaylor2016" class="citation journal cs1">Franke, Steven J.; Taylor, Joseph H. (2016). <a rel="nofollow" class="external text" href="http://physics.princeton.edu/pulsar/K1JT/FrankeTaylor_QEX_2016.pdf">"Open Source Soft-Decision Decoder for the JT65 (63,12) Reed–Solomon Code"</a> <span class="cs1-format">(PDF)</span>. <i>QEX</i> (May/June): <span class="nowrap">8–</span>17. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170309134627/http://www.physics.princeton.edu/pulsar/k1jt/FrankeTaylor_QEX_2016.pdf">Archived</a> <span class="cs1-format">(PDF)</span> from the original on 2017-03-09<span class="reference-accessdate">. Retrieved <span class="nowrap">2017-06-07</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=QEX&rft.atitle=Open+Source+Soft-Decision+Decoder+for+the+JT65+%2863%2C12%29+Reed%E2%80%93Solomon+Code&rft.issue=May%2FJune&rft.pages=%3Cspan+class%3D%22nowrap%22%3E8-%3C%2Fspan%3E17&rft.date=2016&rft.aulast=Franke&rft.aufirst=Steven+J.&rft.au=Taylor%2C+Joseph+H.&rft_id=http%3A%2F%2Fphysics.princeton.edu%2Fpulsar%2FK1JT%2FFrankeTaylor_QEX_2016.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=46" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Information_and_tutorials">Information and tutorials</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=47" title="Edit section: Information and tutorials"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFWelch1997" class="citation cs2">Welch, L. R. (1997), <a rel="nofollow" class="external text" href="http://csi.usc.edu/PDF/RSoriginal.pdf"><i>The Original View of Reed–Solomon Codes</i></a> <span class="cs1-format">(PDF)</span>, Lecture Notes</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Original+View+of+Reed%E2%80%93Solomon+Codes&rft.series=Lecture+Notes&rft.date=1997&rft.aulast=Welch&rft.aufirst=L.+R.&rft_id=http%3A%2F%2Fcsi.usc.edu%2FPDF%2FRSoriginal.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFKoetter2005" class="citation cs2">Koetter, Ralf (2005), <a rel="nofollow" class="external text" href="https://web.archive.org/web/20130313033107/http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-451-principles-of-digital-communication-ii-spring-2005/lecture-notes/lecture-10-reed-solomon-codes/"><i>Reed–Solomon Codes</i></a>, MIT Lecture Notes 6.451 (Video), archived from <a rel="nofollow" class="external text" href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-451-principles-of-digital-communication-ii-spring-2005/lecture-notes/lecture-10-reed-solomon-codes/">the original</a> on 2013-03-13</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Reed%E2%80%93Solomon+Codes&rft.series=MIT+Lecture+Notes+6.451+%28Video%29&rft.date=2005&rft.aulast=Koetter&rft.aufirst=Ralf&rft_id=http%3A%2F%2Focw.mit.edu%2Fcourses%2Felectrical-engineering-and-computer-science%2F6-451-principles-of-digital-communication-ii-spring-2005%2Flecture-notes%2Flecture-10-reed-solomon-codes%2F&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></li></ul> <ul><li><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/~guyb/realworld/reedsolomon/reed_solomon_codes.html">Introduction to Reed–Solomon codes: principles, architecture and implementation</a> (CMU)</li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFGeisel1990" class="citation cs2">Geisel, William A. (August 1990), <a rel="nofollow" class="external text" href="https://ntrs.nasa.gov/citations/19900019023"><i>Tutorial on Reed–Solomon Error Correction Coding</i></a>, Technical Memorandum, <a href="/wiki/NASA" title="NASA">NASA</a>, TM-102162</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Tutorial+on+Reed%E2%80%93Solomon+Error+Correction+Coding&rft.series=Technical+Memorandum&rft.pub=NASA&rft.date=1990-08&rft.aulast=Geisel&rft.aufirst=William+A.&rft_id=https%3A%2F%2Fntrs.nasa.gov%2Fcitations%2F19900019023&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFReid1995" class="citation cs2">Reid, Jeff A. (April 1995), <a rel="nofollow" class="external text" href="http://rcgldr.net/misc/ecc.pdf"><i>CRC and Reed Solomon ECC</i></a> <span class="cs1-format">(PDF)</span></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=CRC+and+Reed+Solomon+ECC&rft.date=1995-04&rft.aulast=Reid&rft.aufirst=Jeff+A.&rft_id=http%3A%2F%2Frcgldr.net%2Fmisc%2Fecc.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AReed%E2%80%93Solomon+error+correction" class="Z3988"></span></li></ul> <div class="mw-heading mw-heading3"><h3 id="Implementations">Implementations</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Reed%E2%80%93Solomon_error_correction&action=edit&section=48" title="Edit section: Implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://www.ka9q.net/code/fec/">FEC library in C by Phil Karn (aka KA9Q) includes Reed–Solomon codec, both arbitrary and optimized (223,255) version</a></li> <li><a rel="nofollow" class="external text" href="https://code.google.com/p/rssoft/">Open Source C++ Reed–Solomon Soft Decoding library</a></li> <li><a rel="nofollow" class="external text" href="http://dept.ee.wits.ac.za/~versfeld/research_resources/sourcecode/Errors_And_Erasures_Test.zip">Matlab implementation of errors and-erasures Reed–Solomon decoding</a></li></ul> <!-- NewPP limit report Parsed by mw‐api‐ext.eqiad.main‐67ddd9b55‐g5n6f Cached time: 20250326043814 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.974 seconds Real time usage: 1.205 seconds Preprocessor visited node count: 7913/1000000 Post‐expand include size: 112416/2097152 bytes Template argument size: 13514/2097152 bytes Highest expansion depth: 17/100 Expensive parser function count: 10/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 150108/5000000 bytes Lua time usage: 0.442/10.000 seconds Lua memory usage: 7016367/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 753.696 1 -total 34.09% 256.943 2 Template:Reflist 18.03% 135.869 8 Template:Cite_journal 15.73% 118.519 1 Template:Short_description 11.60% 87.432 2 Template:Pagetype 10.63% 80.130 1 Template:Infobox_code 10.58% 79.711 7 Template:Fix 10.30% 77.665 1 Template:Infobox 9.88% 74.479 45 Template:Math 7.49% 56.462 2 Template:Page_needed --> <!-- Saved in parser cache with key enwiki:pcache:45600:|#|:idhash:canonical and timestamp 20250326043814 and revision id 1282397588. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&type=1x1&usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Reed–Solomon_error_correction&oldid=1282397588">https://en.wikipedia.org/w/index.php?title=Reed–Solomon_error_correction&oldid=1282397588</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Error_detection_and_correction" title="Category:Error detection and correction">Error detection and correction</a></li><li><a href="/wiki/Category:Coding_theory" title="Category:Coding theory">Coding theory</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_matches_Wikidata" title="Category:Short description matches Wikidata">Short description matches Wikidata</a></li><li><a href="/wiki/Category:Wikipedia_articles_needing_page_number_citations_from_March_2025" title="Category:Wikipedia articles needing page number citations from March 2025">Wikipedia articles needing page number citations from March 2025</a></li><li><a href="/wiki/Category:All_articles_with_specifically_marked_weasel-worded_phrases" title="Category:All articles with specifically marked weasel-worded phrases">All articles with specifically marked weasel-worded phrases</a></li><li><a href="/wiki/Category:Articles_with_specifically_marked_weasel-worded_phrases_from_March_2025" title="Category:Articles with specifically marked weasel-worded phrases from March 2025">Articles with specifically marked weasel-worded phrases from March 2025</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_March_2017" title="Category:Articles with unsourced statements from March 2017">Articles with unsourced statements from March 2017</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_March_2025" title="Category:Articles with unsourced statements from March 2025">Articles with unsourced statements from March 2025</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_March_2025" title="Category:Articles needing additional references from March 2025">Articles needing additional references from March 2025</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</a></li><li><a href="/wiki/Category:Wikipedia_articles_needing_clarification_from_March_2025" title="Category:Wikipedia articles needing clarification from March 2025">Wikipedia articles needing clarification from March 2025</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 26 March 2025, at 04:38<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Reed%E2%80%93Solomon_error_correction&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://www.wikimedia.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" lang="en" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">Reed–Solomon error correction</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>21 languages</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="mw-portlet mw-portlet-dock-bottom emptyPortlet" id="p-dock-bottom"> <ul> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.eqiad.main-d6f4c4464-g6rmp","wgBackendResponseTime":367,"wgPageParseReport":{"limitreport":{"cputime":"0.974","walltime":"1.205","ppvisitednodes":{"value":7913,"limit":1000000},"postexpandincludesize":{"value":112416,"limit":2097152},"templateargumentsize":{"value":13514,"limit":2097152},"expansiondepth":{"value":17,"limit":100},"expensivefunctioncount":{"value":10,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":150108,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 753.696 1 -total"," 34.09% 256.943 2 Template:Reflist"," 18.03% 135.869 8 Template:Cite_journal"," 15.73% 118.519 1 Template:Short_description"," 11.60% 87.432 2 Template:Pagetype"," 10.63% 80.130 1 Template:Infobox_code"," 10.58% 79.711 7 Template:Fix"," 10.30% 77.665 1 Template:Infobox"," 9.88% 74.479 45 Template:Math"," 7.49% 56.462 2 Template:Page_needed"]},"scribunto":{"limitreport-timeusage":{"value":"0.442","limit":"10.000"},"limitreport-memusage":{"value":7016367,"limit":52428800}},"cachereport":{"origin":"mw-api-ext.eqiad.main-67ddd9b55-g5n6f","timestamp":"20250326043814","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Reed\u2013Solomon error correction","url":"https:\/\/en.wikipedia.org\/wiki\/Reed%E2%80%93Solomon_error_correction","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1061598","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1061598","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2002-03-23T09:52:05Z","dateModified":"2025-03-26T04:38:02Z","headline":"error-correcting codes"}</script> </body> </html>