CINXE.COM
View source for Discrete Hartley transform - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-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-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-not-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>View source for Discrete Hartley transform - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-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-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-not-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":true,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat": "dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"9ede2ecc-660f-42c5-b11a-96022d3854c6","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Discrete_Hartley_transform","wgTitle":"Discrete Hartley transform","wgCurRevisionId":1137518711,"wgRevisionId":0,"wgArticleId":206210,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"edit","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Discrete_Hartley_transform","wgRelevantArticleId":206210,"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":20000,"wgRelatedArticlesCompat":[],"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","skins.vector.search.codex.styles": "ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.charinsert.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.action.edit.collapsibleFooter","site","mediawiki.page.ready","jquery.makeCollapsible","skins.vector.js","ext.centralNotice.geoIP","ext.charinsert","ext.gadget.ReferenceTooltips","ext.gadget.charinsert","ext.gadget.extra-toolbar-buttons","ext.gadget.refToolbar","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.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession", "wikibase.sidebar.tracking"];</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.charinsert.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&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.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="View source for Discrete Hartley transform - 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/Discrete_Hartley_transform"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Discrete_Hartley_transform&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/Discrete_Hartley_transform"> <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="//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-Discrete_Hartley_transform rootpage-Discrete_Hartley_transform skin-vector-2022 action-edit"><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" > <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> </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/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_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=Discrete+Hartley+transform&returntoquery=action%3Dedit" 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=Discrete+Hartley+transform&returntoquery=action%3Dedit" 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/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_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=Discrete+Hartley+transform&returntoquery=action%3Dedit" 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=Discrete+Hartley+transform&returntoquery=action%3Dedit" 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> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <h1 id="firstHeading" class="firstHeading mw-first-heading">View source for Discrete Hartley transform</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="This article exist only in this language. Add the article for other 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-0" 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">Add languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></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/Discrete_Hartley_transform" 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:Discrete_Hartley_transform" 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="vector-tab-noicon mw-list-item"><a href="/wiki/Discrete_Hartley_transform"><span>Read</span></a></li><li id="ca-edit" class="selected vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Discrete_Hartley_transform&action=edit" title="Edit this page"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Discrete_Hartley_transform&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="vector-more-collapsible-item mw-list-item"><a href="/wiki/Discrete_Hartley_transform"><span>Read</span></a></li><li id="ca-more-edit" class="selected vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Discrete_Hartley_transform&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=Discrete_Hartley_transform&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/Discrete_Hartley_transform" 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/Discrete_Hartley_transform" 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="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Discrete_Hartley_transform&action=info" title="More information about this page"><span>Page information</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%2Fw%2Findex.php%3Ftitle%3DDiscrete_Hartley_transform%26action%3Dedit"><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%2Fw%2Findex.php%3Ftitle%3DDiscrete_Hartley_transform%26action%3Dedit"><span>Download QR code</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 id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1006531" 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> <div id="contentSub"><div id="mw-content-subtitle">← <a href="/wiki/Discrete_Hartley_transform" title="Discrete Hartley transform">Discrete Hartley transform</a></div></div> <div id="mw-content-text" class="mw-body-content"><p>You do not have permission to edit this page, for the following reasons: </p> <ul class="permissions-errors"><li class="mw-permissionerror-blockedtext"> <div id="mw-blocked-text" style="border: 1px solid #AAA; background-color: var(--background-color-warning-subtle, ivory); color: inherit; padding: 1.5em; width: 100%; box-sizing: border-box;"> <div style="text-align: center;"><span style="font-size: 26px;"><span typeof="mw:File"><a href="/wiki/File:Stop_hand_nuvola.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/en/thumb/f/f1/Stop_hand_nuvola.svg/50px-Stop_hand_nuvola.svg.png" decoding="async" width="50" height="50" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/f1/Stop_hand_nuvola.svg/75px-Stop_hand_nuvola.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/f1/Stop_hand_nuvola.svg/100px-Stop_hand_nuvola.svg.png 2x" data-file-width="240" data-file-height="240" /></a></span><b> This IP address has been <a href="/wiki/Wikipedia:Blocking_policy" title="Wikipedia:Blocking policy">blocked</a> from <i>editing</i> Wikipedia.</b></span><br /><span style="font-size: 18px;">This does not affect your ability to <i>read</i> Wikipedia pages.</span></div><div class="paragraphbreak" style="margin-top:0.5em"></div><b>Most people who see this message have done nothing wrong.</b> Some kinds of blocks restrict editing from specific service providers or telecom companies in response to recent abuse or vandalism, and can sometimes affect other users who are unrelated to that abuse. Review the information below for assistance if you do not believe that you have done anything wrong.<div class="paragraphbreak" style="margin-top:0.5em"></div> <p>The IP address or range 8.222.128.0/17 has been <a href="/wiki/Wikipedia:Blocking_policy" title="Wikipedia:Blocking policy">blocked</a> by <a href="/wiki/User:L235" title="User:L235">L235</a> for the following reason(s): </p> <div style="padding:10px; background:var(--background-color-base, white); color:inherit; border:1px #666 solid;"> <div class="user-block colocation-webhost" style="margin-bottom: 0.5em; background-color: #ffefd5; border: 1px solid #AAA; padding: 0.7em;"> <figure class="mw-halign-left" typeof="mw:File"><span><img src="//upload.wikimedia.org/wikipedia/commons/thumb/5/53/Server-multiple.svg/40px-Server-multiple.svg.png" decoding="async" width="40" height="57" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/5/53/Server-multiple.svg/60px-Server-multiple.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/5/53/Server-multiple.svg/80px-Server-multiple.svg.png 2x" data-file-width="744" data-file-height="1052" /></span><figcaption></figcaption></figure><b>The <a href="/wiki/IP_address" title="IP address">IP address</a> that you are currently using has been blocked because it is believed to be a <a href="/wiki/Web_hosting_service" title="Web hosting service">web host provider</a> or <a href="/wiki/Colocation_centre" title="Colocation centre">colocation provider</a>.</b> To prevent abuse, <a href="/wiki/Wikipedia:Open_proxies" title="Wikipedia:Open proxies">web hosts and colocation providers may be blocked</a> from editing Wikipedia. <div style="border-top: 1px solid #AAA; clear: both">You will not be able to edit Wikipedia using a web host or colocation provider because it hides your IP address, much like a <a href="/wiki/Wikipedia:Open_proxies" title="Wikipedia:Open proxies">proxy</a> or <a href="/wiki/Virtual_private_network" title="Virtual private network">VPN</a>. <p><b>We recommend that you attempt to use another connection to edit.</b> For example, if you use a proxy or VPN to connect to the internet, turn it off when editing Wikipedia. If you edit using a mobile connection, try using a Wi-Fi connection, and vice versa. If you are using a corporate internet connection, switch to a different Wi-Fi network. If you have a Wikipedia account, please log in. </p><p>If you do not have any other way to edit Wikipedia, you will need to <a href="/wiki/Wikipedia:IP_block_exemption#Requesting_and_granting_exemption" title="Wikipedia:IP block exemption">request an IP block exemption</a>. </p> <style data-mw-deduplicate="TemplateStyles:r1214851843">.mw-parser-output .hidden-begin{box-sizing:border-box;width:100%;padding:5px;border:none;font-size:95%}.mw-parser-output .hidden-title{font-weight:bold;line-height:1.6;text-align:left}.mw-parser-output .hidden-content{text-align:left}@media all and (max-width:500px){.mw-parser-output .hidden-begin{width:auto!important;clear:none!important;float:none!important}}</style><div class="hidden-begin mw-collapsible mw-collapsed" style=""><div class="hidden-title skin-nightmode-reset-color" style="text-align:center;">How to appeal if you are confident that your connection does not use a colocation provider's IP address:</div><div class="hidden-content mw-collapsible-content" style=""> If you are confident that you are not using a web host, you may <a href="/wiki/Wikipedia:Appealing_a_block" title="Wikipedia:Appealing a block">appeal this block</a> by adding the following text on your <a href="/wiki/Help:Talk_pages" title="Help:Talk pages">talk page</a>: <code>{{<a href="/wiki/Template:Unblock" title="Template:Unblock">unblock</a>|reason=Caught by a colocation web host block but this host or IP is not a web host. My IP address is _______. <i>Place any further information here.</i> ~~~~}}</code>. <b>You must fill in the blank with your IP address for this block to be investigated.</b> Your IP address can be determined <span class="plainlinks"><b><a class="external text" href="https://en.wikipedia.org/wiki/Wikipedia:Get_my_IP_address?withJS=MediaWiki:Get-my-ip.js">here</a></b></span>. Alternatively, if you wish to keep your IP address private you can use the <a href="/wiki/Wikipedia:Unblock_Ticket_Request_System" title="Wikipedia:Unblock Ticket Request System">unblock ticket request system</a>. There are several reasons you might be editing using the IP address of a web host or colocation provider (such as if you are using VPN software or a business network); please use this method of appeal only if you think your IP address is in fact not a web host or colocation provider.</div></div> <p><span class="sysop-show" style="font-size: 85%;"><span style="border:#707070 solid 1px;background-color:#ffe0e0;padding:2px"><b>Administrators:</b></span> The <a href="/wiki/Wikipedia:IP_block_exemption" title="Wikipedia:IP block exemption">IP block exemption</a> user right should only be applied to allow users to edit using web host in exceptional circumstances, and requests should usually be directed to the functionaries team via email. If you intend to give the IPBE user right, a <a href="/wiki/Wikipedia:CheckUser" title="Wikipedia:CheckUser">CheckUser</a> needs to take a look at the account. This can be requested most easily at <a href="/wiki/Wikipedia:SPI#Quick_CheckUser_requests" class="mw-redirect" title="Wikipedia:SPI">SPI Quick Checkuser Requests</a>. <b>Unblocking</b> an IP or IP range with this template <b>is highly discouraged</b> without at least contacting the blocking administrator.</span> </p> </div></div> </div> <p>This block will expire on 18:23, 24 August 2026. Your current IP address is 8.222.208.146. </p> <div class="paragraphbreak" style="margin-top:0.5em"></div><div style="font-size: 16px;"> <p>Even when blocked, you will <i>usually</i> still be able to edit your <a href="/wiki/Special:MyTalk" title="Special:MyTalk">user talk page</a>, as well as <a href="/wiki/Wikipedia:Emailing_users" title="Wikipedia:Emailing users">email</a> administrators and other editors. </p> </div> <div class="paragraphbreak" style="margin-top:0.5em"></div><div style="font-size: 16px;"> <p>For information on how to proceed, please read the <b><a href="/wiki/Wikipedia:Appealing_a_block#Common_questions" title="Wikipedia:Appealing a block">FAQ for blocked users</a></b> and the <a href="/wiki/Wikipedia:Appealing_a_block" title="Wikipedia:Appealing a block">guideline on block appeals</a>. The <a href="/wiki/Wikipedia:Guide_to_appealing_blocks" title="Wikipedia:Guide to appealing blocks">guide to appealing blocks</a> may also be helpful. </p> </div> <p>Other useful links: <a href="/wiki/Wikipedia:Blocking_policy" title="Wikipedia:Blocking policy">Blocking policy</a> · <a href="/wiki/Help:I_have_been_blocked" title="Help:I have been blocked">Help:I have been blocked</a> </p> </div></li><li class="mw-permissionerror-globalblocking-blockedtext-range"> <div id="mw-blocked-text" style="border: 1px solid #AAA; background-color: var(--background-color-warning-subtle, ivory); color: inherit; padding: 1.5em; width: 100%; box-sizing: border-box;"> <div style="text-align: center;"><span style="font-size: 26px;"><span typeof="mw:File"><a href="/wiki/File:Stop_hand_nuvola.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/en/thumb/f/f1/Stop_hand_nuvola.svg/50px-Stop_hand_nuvola.svg.png" decoding="async" width="50" height="50" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/f1/Stop_hand_nuvola.svg/75px-Stop_hand_nuvola.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/f1/Stop_hand_nuvola.svg/100px-Stop_hand_nuvola.svg.png 2x" data-file-width="240" data-file-height="240" /></a></span><b> This IP address range has been <a href="https://meta.wikimedia.org/wiki/Global_blocks" class="extiw" title="m:Global blocks">globally blocked</a>.</b></span><br /><span style="font-size: 18px;">This does not affect your ability to <i>read</i> Wikipedia pages.</span></div><div class="paragraphbreak" style="margin-top:0.5em"></div><b>Most people who see this message have done nothing wrong.</b> Some kinds of blocks restrict editing from specific service providers or telecom companies in response to recent abuse or vandalism, and can sometimes affect other users who are unrelated to that abuse. Review the information below for assistance if you do not believe that you have done anything wrong.<div class="paragraphbreak" style="margin-top:0.5em"></div><div class="paragraphbreak" style="margin-top:0.5em"></div> <p>This block affects editing on all Wikimedia wikis. </p><p>The IP address or range 8.222.128.0/17 has been globally <a href="/wiki/Wikipedia:Blocking_policy" title="Wikipedia:Blocking policy">blocked</a> by <a href="/wiki/User:Jon_Kolbert" title="User:Jon Kolbert">Jon Kolbert</a> for the following reason(s): </p> <div style="padding:10px; background:var(--background-color-base, white); color:inherit; border:1px #666 solid;"> <p><a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/NOP" class="extiw" title="m:Special:MyLanguage/NOP">Open proxy/Webhost</a>: See the <a href="https://meta.wikimedia.org/wiki/WM:OP/H" class="extiw" title="m:WM:OP/H">help page</a> if you are affected </p> </div> <p>This block will expire on 15:12, 27 August 2028. Your current IP address is 8.222.208.146. </p> <div class="paragraphbreak" style="margin-top:0.5em"></div><div style="font-size: 16px;"> <p>Even while globally blocked, you will <i>usually</i> still be able to edit pages on <a href="https://meta.wikimedia.org/wiki/" class="extiw" title="m:">Meta-Wiki</a>. </p> </div> <div class="paragraphbreak" style="margin-top:0.5em"></div><div style="font-size: 16px;"> <p>If you believe you were blocked by mistake, you can find additional information and instructions in the <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/No_open_proxies" class="extiw" title="m:Special:MyLanguage/No open proxies">No open proxies</a> global policy. Otherwise, to discuss the block please <a href="https://meta.wikimedia.org/wiki/Steward_requests/Global" class="extiw" title="m:Steward requests/Global">post a request for review on Meta-Wiki</a>. You could also send an email to the <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Stewards" class="extiw" title="m:Special:MyLanguage/Stewards">stewards</a> <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/VRT" class="extiw" title="m:Special:MyLanguage/VRT">VRT</a> queue at <kbd>stewards@wikimedia.org</kbd> including all above details. </p> </div> <p>Other useful links: <a href="https://meta.wikimedia.org/wiki/Global_blocks" class="extiw" title="m:Global blocks">Global blocks</a> · <a href="/wiki/Help:I_have_been_blocked" title="Help:I have been blocked">Help:I have been blocked</a> </p> </div></li></ul><hr /> <div id="viewsourcetext">You can view and copy the source of this page:</div><textarea readonly="" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" class="mw-editfont-monospace" lang="en" dir="ltr" name="wpTextbox1">{{Short description|Fourier-related mathematical transform}} A '''discrete Hartley transform (DHT)''' is a [[Fourier-related transform]] of discrete, periodic data similar to the [[discrete Fourier transform]] (DFT), with analogous applications in signal processing and related fields. Its main distinction from the DFT is that it transforms real inputs to real outputs, with no intrinsic involvement of [[complex number]]s. Just as the DFT is the discrete analogue of the continuous [[Fourier transform]] (FT), the DHT is the discrete analogue of the continuous [[Hartley transform]] (HT), introduced by [[Ralph V. L. Hartley]] in 1942.<ref name="Hartley_1942"/> Because there are fast algorithms for the DHT analogous to the [[fast Fourier transform]] (FFT), the DHT was originally proposed by [[Ronald N. Bracewell]] in 1983<ref name="Bracewell_1983"/> as a more efficient computational tool in the common case where the data are purely real. It was subsequently argued, however, that specialized FFT algorithms for real inputs or outputs can ordinarily be found with slightly fewer operations than any corresponding algorithm for the DHT. == Definition == Formally, the discrete Hartley transform is a linear, invertible [[function (mathematics)|function]] ''H'': '''R'''<sup>''n''</sup> → '''R'''<sup>''n''</sup> (where '''R''' denotes the set of [[real number]]s). The ''N'' real numbers ''x''<sub>0</sub>, ..., ''x''<sub>''N''−1</sub> are transformed into the ''N'' real numbers ''H''<sub>0</sub>, ..., ''H''<sub>''N''−1</sub> according to the formula :<math>H_k = \sum_{n=0}^{N-1} x_n \operatorname{cas} \left( \frac{2 \pi}{N} n k \right) = \sum_{n=0}^{N-1} x_n \left[ \cos \left( \frac{2 \pi}{N} n k \right) + \sin \left( \frac{2 \pi}{N} n k \right) \right] \quad \quad k = 0, \dots, N-1 .</math> The combination <math>\cos(z) + \sin(z)</math> <math>= \sqrt{2} \cos\left(z-\frac\pi 4\right)</math> is sometimes denoted <!--[[cas (mathematics)]] redirects to this page-->'''{{math|cas(''z'')}}''', and should not be confused with {{math|1=[[cis (mathematics)|cis(''z'')]] = ''e<sup>iz</sup>'' = cos(''z'') + ''i''&thinsp;sin(''z'')}}, or {{math|1=''e''<sup>−''iz''</sup> = cis(−''z'')}} which appears in the DFT definition (where ''i'' is the [[imaginary unit]]). As with the DFT, the overall scale factor in front of the transform and the sign of the sine term are a matter of convention. Although these conventions occasionally vary between authors, they do not affect the essential properties of the transform. == Properties == The transform can be interpreted as the multiplication of the vector (''x''<sub>0</sub>, ...., ''x''<sub>''N''−1</sub>) by an ''N''-by-''N'' [[matrix (math)|matrix]]; therefore, the discrete Hartley transform is a [[linear operator]]. The matrix is invertible; the inverse transformation, which allows one to recover the ''x<sub>n</sub>'' from the ''H<sub>k</sub>'', is simply the DHT of ''H<sub>k</sub>'' multiplied by 1/''N''. That is, the DHT is its own inverse ([[Involution (mathematics)|involutory]]), up to an overall scale factor. The DHT can be used to compute the DFT, and vice versa. For real inputs ''x<sub>n</sub>'', the DFT output ''X''<sub>''k''</sub> has a real part (''H''<sub>''k''</sub> + ''H''<sub>''N−k''</sub>)/2 and an imaginary part (''H''<sub>''N−k''</sub> − ''H<sub>k</sub>'')/2. Conversely, the DHT is equivalent to computing the DFT of ''x<sub>n</sub>'' multiplied by 1&thinsp;+&thinsp;''i'', then taking the real part of the result. As with the DFT, a cyclic [[convolution]] '''z''' = '''x'''∗'''y''' of two vectors '''x''' = (''x<sub>n</sub>'') and '''y''' = (''y<sub>n</sub>'') to produce a vector '''z''' = (''z<sub>n</sub>''), all of length ''N'', becomes a simple operation after the DHT. In particular, suppose that the vectors '''X''', '''Y''', and '''Z''' denote the DHT of '''x''', '''y''', and '''z''' respectively. Then the elements of '''Z''' are given by: :<math> \begin{matrix} Z_k & = & \left[ X_k \left( Y_k + Y_{N-k} \right) + X_{N-k} \left( Y_k - Y_{N-k} \right) \right] / 2 \\ Z_{N-k} & = & \left[ X_{N-k} \left( Y_k + Y_{N-k} \right) - X_k \left( Y_k - Y_{N-k} \right) \right] / 2 \end{matrix} </math> where we take all of the vectors to be periodic in ''N'' (''X<sub>N</sub>'' = ''X''<sub>0</sub>, et cetera). Thus, just as the DFT transforms a convolution into a pointwise multiplication of complex numbers (''pairs'' of real and imaginary parts), the DHT transforms a convolution into a simple combination of ''pairs'' of real frequency components. The inverse DHT then yields the desired vector '''z'''. In this way, a fast algorithm for the DHT (see below) yields a fast algorithm for convolution. (This is slightly more expensive than the corresponding procedure for the DFT, not including the costs of the transforms below, because the pairwise operation above requires 8 real-arithmetic operations compared to the 6 of a complex multiplication. This count doesn't include the division by 2, which can be absorbed e.g. into the 1/''N'' normalization of the inverse DHT.) == Fast algorithms == Just as for the DFT, evaluating the DHT definition directly would require O(''N''<sup>2</sup>) arithmetical operations (see [[Big O notation]]). There are fast algorithms similar to the FFT, however, that compute the same result in only O(''N'' log ''N'') operations. Nearly every FFT algorithm, from [[Cooley–Tukey FFT algorithm|Cooley–Tukey]] to [[Prime-factor FFT algorithm|prime-factor]] to Winograd (1985)<ref name="Sorensen_1985"/> to [[Bruun's FFT algorithm|Bruun's]] (1993),<ref name="Bini-Bozzo_1993"/> has a direct analogue for the discrete Hartley transform. (However, a few of the more exotic FFT algorithms, such as the QFT, have not yet been investigated in the context of the DHT.) In particular, the DHT analogue of the Cooley–Tukey algorithm is commonly known as the '''fast Hartley transform''' (FHT) algorithm, and was first described by Bracewell in 1984.<ref name="Bracewell_1984"/> This FHT algorithm, at least when applied to [[power of two|power-of-two]] sizes ''N'', is the subject of the United States [[software patent|patent]] number 4,646,256, issued in 1987 to [[Stanford University]]. Stanford placed this patent in the public domain in 1994 (Bracewell, 1995).<ref name="Bracewell_1995"/> As mentioned above, DHT algorithms are typically slightly less efficient (in terms of the number of [[floating-point]] operations) than the corresponding DFT algorithm (FFT) specialized for real inputs (or outputs). This was first argued by Sorensen et al. (1987)<ref name="Sorensen_1987"/> and Duhamel & [[Martin Vetterli|Vetterli]] (1987).<ref name="Duhamel-Vetterli_1987"/> The latter authors obtained what appears to be the lowest published operation count for the DHT of power-of-two sizes, employing a split-radix algorithm (similar to the [[split-radix FFT algorithm|split-radix FFT]]) that breaks a DHT of length ''N'' into a DHT of length ''N''/2 and two real-input DFTs (''not'' DHTs) of length ''N''/4. In this way, they argued that a DHT of power-of-two length can be computed with, at best, 2 more additions than the corresponding number of arithmetic operations for the real-input DFT. On present-day computers, performance is determined more by [[CPU cache|cache]] and [[CPU pipeline]] considerations than by strict operation counts, and a slight difference in arithmetic cost is unlikely to be significant. Since FHT and real-input FFT algorithms have similar computational structures, neither appears to have a substantial ''a priori'' speed advantage ({{ill|Miodrag Popović (engineer){{!}}Popović|sr|Миодраг Поповић (електротехничар)}} and Šević, 1994).<ref name="Popović-Šević_1994"/> As a practical matter, highly optimized real-input FFT libraries are available from many sources (e.g. from CPU vendors such as [[Intel]]), whereas highly optimized DHT libraries are less common. On the other hand, the redundant computations in FFTs due to real inputs are more difficult to eliminate for large [[prime number|prime]] ''N'', despite the existence of O(''N'' log ''N'') complex-data algorithms for such cases, because the redundancies are hidden behind intricate permutations and/or phase rotations in those algorithms. In contrast, a standard prime-size FFT algorithm, [[Rader's FFT algorithm|Rader's algorithm]], can be directly applied to the DHT of real data for roughly a factor of two less computation than that of the equivalent complex FFT (Frigo and Johnson, 2005).<ref name="Frigo-Johnson_2005"/> On the other hand, a non-DHT-based adaptation of Rader's algorithm for real-input DFTs is also possible (Chu & [[Charles Sidney Burrus|Burrus]], 1982).<ref name="Chu-Burrus_1982"/> == Multi-Dimensional Discrete Hartley Transform (MD-DHT) == The rD-DHT (MD-DHT with "r" dimensions) is given by <math>X(k_1,k_2,...,k_r)=\sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} \dots \sum_{n_r=0}^{N_r-1} x(n_1,n_2,...,n_r){\rm cas}(\frac{2\pi n_1 k_1}{N_1}+\dots +\frac{2\pi n_r k_r}{N_r}),</math> with <math>k_i = 0,1,\ldots, N_i-1</math> and where <math>{\rm cas}(x)=\cos(x)+\sin(x).</math> Similar to the 1-D case, as a real and symmetric transform, the MD-DHT is simpler than the MD-DFT. For one, the inverse DHT is identical to the forward transform, with the addition of a scaling factor; [[File:Img DHT prop2.png|centre|frameless|400x400px]] and second, since the kernel is real, it avoids the computational complexity of [[complex number]]s. Additionally, the DFT is directly obtainable from the DHT by a simple additive operation (Bracewell, 1983).<ref name="Bracewell_1983"/> The MD-DHT is widely used in areas like image and optical signal processing. Specific applications include computer vision, high-definition television, and teleconferencing, areas that process or analyze motion images (Zeng, 2000).<ref name="Zeng-Bi-Leyman_2000"/> === Fast algorithms for the MD-DHT === As computing speed keeps increasing, bigger multidimensional problems become computationally feasible, requiring the need for fast multidimensional algorithms. Three such algorithms follow. In pursuit of separability for efficiency, we consider the following transform (Bracewell, 1983),<ref name="Bracewell_1983"/> <math>\hat{X}(k_1,k_2,...,k_r)=\sum_{n_1=0}^{N_1-1} \sum_{n_2=0}^{N_2-1} \dots \sum_{n_r=0}^{N_r-1} x(n_1,n_2,...,n_r){\rm cas}(\frac{2\pi n_1 k_1}{N_1}) \dots {\rm cas}(\frac{2\pi n_r k_r}{N_r}).</math> It was shown in Bortfeld (1995),<ref name="Bortfeld-Dinter_1995"/> that the two can be related by a few additions. For example, in 3-D, <math>X(k_1,k_2,k_3) = \frac{1}{2} [\hat{X}(k_1,k_2,-k_3)+\hat{X}(k_1,-k_2,k_3)+\hat{X}(-k_1,k_2,k_3)-\hat{X}(-k_1,-k_2,-k_3)].</math> For <math>\hat{X}</math>, row-column algorithms can then be implemented. This technique is commonly used due to the simplicity of such R-C algorithms, but they are not optimized for general M-D spaces. Other fast algorithms have been developed, such as radix-2, radix-4, and split radix. For example, Boussakta (2000)<ref name="Boussakta_2000"/> developed the 3-D vector radix, <math>X(k_1,k_2,...,k_r)=\sum_{n_1=0}^{N-1} \sum_{n_2=0}^{N-1}\sum_{n_r=0}^{N-1} x(n_1,n_2,n_3){\rm cas}(\frac{2\pi}{N}(n_1 k_1+n_2 k_2 +n_3 k_3))</math> <math>=\sum_{n_1:even}\sum_{n_2:even}\sum_{n_3:even}+\sum_{n_1:even}\sum_{n_2:even}\sum_{n_3:odd}+\sum_{n_1:even}\sum_{n_2:odd}\sum_{n_3:even}</math> <math>+\sum_{n_1:even}\sum_{n_2:odd}\sum_{n_3:odd}+\sum_{n_1:odd}\sum_{n_2:even}\sum_{n_3:even}+\sum_{n_1:odd}\sum_{n_2:even}\sum_{n_3:odd}</math> <math>+\sum_{n_1:odd}\sum_{n_2:odd}\sum_{n_3:even}+\sum_{n_1:odd}\sum_{n_2:odd}\sum_{n_3:odd}.</math> It was also presented in Boussakta (2000)<ref name="Boussakta_2000"/> that this 3D-vector radix algorithm takes <math>(\frac{7}{4})N^3 \log_2 N</math> multiplications and <math>(\frac{31}{8})N^3 \log_2 N</math> additions compared to <math>3N^3 \log_2 N</math> multiplications and <math>(\frac{9}{2})N^3 \log_2 N+3N^2</math> additions from the row-column approach. The drawback is that the implementation of these radix-type of algorithms is hard to generalize for signals of arbitrary dimensions. Number theoretic transforms have also been used for solving the MD-DHT, since they perform extremely fast convolutions. In Boussakta (1988),<ref name="Boussakta_1988"/> it was shown how to decompose the MD-DHT transform into a form consisting of convolutions: For the 2-D case (the 3-D case is also covered in the stated reference), <math>X(k,l)=\sum_{n=0}^{N-1} \sum_{m=0}^{M-1}x(n,m){\rm cas}(\frac{2\pi nk}{N}+\frac{2\pi ml}{M}),\;</math> <math>k=0,1,\ldots ,N-1</math> , <math>l=0,1,\ldots,M-1</math> can be decomposed into 1-D and 2-D circular convolutions as follows, <math>X(k,l)=\begin{cases} X_1(k,0) \\ X_2(0,l) \\ X_3(k,l)\end{cases}</math> where <math>X_1(k,0)=\sum_{n=0}^{N-1} (\sum_{m=0}^{M-1}x(n,m)){\rm cas}(\frac{2\pi nk}{N}),\;</math> <math>k=0,1,\ldots,N-1</math> <math>X_2(0,l)=\sum_{m=0}^{M-1} (\sum_{n=0}^{N-1}x(n,m)){\rm cas}(\frac{2\pi ml}{M}),\;</math> <math>l=1,2,\dots, M-1</math> <math>X_3(k,l)=\sum_{n=0}^{N-1} \sum_{m=0}^{M-1}x(n,m){\rm cas}(\frac{2\pi nk}{N}+\frac{2\pi ml}{M})\;,</math> <math>k=1,2,\ldots, N-1</math> <math>l=1,2,\ldots,M-1.</math> Developing <math>X_3</math> further, <math>X_3(k,l)=\sum_{n=0}^{N-1}x(n,0){\rm cas}(\frac{2\pi nk}{N})+\sum_{m=1}^{M-1} x(0,m){\rm cas}(\frac{2\pi ml}{M})</math> <math>+\sum_{n=1}^{N-1} \sum_{m=1}^{M-1}x(n,m){\rm cas}(\frac{2\pi nk}{N}+\frac{2\pi ml}{M}).</math> At this point we present the Fermat number transform (FNT). The t<sup>th</sup> [[Fermat number]] is given by <math>F_t=2^b+1</math>, with <math>b=2^t</math>. The well known Fermat numbers are for <math>t=0,1,2,3,4,5,6</math> (<math>F_t</math> is prime for <math>0\le t \le 4</math>), (Boussakta, 1988).<ref name="Boussakta_1988"/> The Fermat number transform is given by <math>X(k,l)=\sum_{n=0}^{N-1} \sum_{m=0}^{M-1}x(n,m)\alpha_{1}^{nk}\alpha_{2}^{ml} \mod F_t</math> with <math>k=0,\ldots, N-1, l=0,\ldots,M-1</math>. <math>\alpha_1</math> and <math>\alpha_2</math> are roots of unity of order <math>N</math> and <math>M</math> respectively <math>(\alpha_{1}^{N}=\alpha_{2}^{M}=1 \mod F_t)</math>. Going back to the decomposition, the last term for <math>X_3(k,l)</math> will be denoted as <math>X_4(k,l)</math>, then <math>X_4(k,l)=\sum_{n=1}^{N-1} \sum_{m=1}^{M-1}x(n,m){\rm cas}(\frac{2\pi nk}{N}+\frac{2\pi ml}{M}),</math> <math>k=1,2,\ldots,N-1</math> <math>l=1,2,\ldots,M-1.</math> If <math>g_1</math> and <math>g_2</math> are [[Primitive root modulo n|primitive roots]] of <math>N</math> and <math>M</math> (which are guaranteed to exist if <math>M</math> and <math>N</math> are [[Prime number|prime]]) then <math>g_1</math> and <math>g_2</math> map <math>(n,m)</math> to <math>(g_1^{n}\mod N, g_2^m\mod M).</math> So, mapping <math>n,m,k</math> and <math>l</math> to <math>g_1^{-n},g_2^{-m}, g_1^k</math> and <math>g_2^l</math>, one gets the following, <math>X_4(g_1^k,g_2^l)=\sum_{n=0}^{N-2} \sum_{m=0}^{M-2}x(g_1^{-n},g_2^{-m}){\rm cas}(\frac{2\pi g_1^{ (-n+k)}}{N}+\frac{2\pi g_2^{(-m+l)}}{M}),</math> <math>k=0,1,\ldots,N-2</math> <math>l=0,1,\ldots,M-2</math>. Which is now a [[circular convolution]]. With <math>Y(k,l)=X_4(g_1^k,g_2^l)</math>, <math>y(n,m)=x(g_1^{-n},g_2^{-m})</math>, and <math>h(n,m)={\rm cas}(\frac{2\pi g_1^n}{N}+\frac{2\pi g_2^m}{M})</math>, one has <math>Y(k,l)=\sum_{n=0}^{N-2} \sum_{m=0}^{M-2}y(n,m)h(<k-n>_N,<l-m>_M)</math> <math>Y(k,l)=FNT^{-1} \{FNT[y(n,m)]\otimes FNT[h(n,m)]</math> where <math>\otimes</math> denotes term by term multiplication. It was also stated in (Boussakta, 1988)<ref name="Boussakta_1988"/> that this algorithm reduces the number of multiplications by a factor of 8–20 over other DHT algorithms at a cost of a slight increase in the number of shift and add operations, which are assumed to be simpler than multiplications. The drawback of this algorithm is the constraint that each dimension of the transform has a [[Primitive root modulo n|primitive root]]. ==References== {{reflist|refs= <ref name="Hartley_1942">{{cite journal |author-link=Ralph Hartley |author-last=Hartley |author-first=Ralph V. L. |title=A More Symmetrical Fourier Analysis Applied to Transmission Problems |journal=[[Proceedings of the IRE]] |volume=30 |issue=3 |pages=144–150 |date=March 1942 |doi=10.1109/JRPROC.1942.234333|s2cid=51644127 }}</ref> <ref name="Bracewell_1983">{{cite journal |author-link=Ronald N. Bracewell |author-last=Bracewell |author-first=Ronald N. |title=Discrete Hartley Transform |journal=[[Journal of the Optical Society of America]] |volume=73 |issue=12 |pages=1832–1835 |date=1983 |doi=10.1364/josa.73.001832|s2cid=120611904 }}</ref> <ref name="Bracewell_1984">{{cite journal |author-link=Ronald N. Bracewell |author-last=Bracewell |author-first=Ronald N. |title=The Fast Hartley Transform |journal=[[Proceedings of the IEEE]] |volume=72 |issue=8 |pages=1010–1018 |date=1984 |doi=10.1109/proc.1984.12968|s2cid=21988816 }}</ref> <ref name="Bracewell_1995">{{cite journal |author-link=Ronald N. Bracewell |author-last=Bracewell |author-first=Ronald N. |title=Computing with the Hartley Transform |journal=Computers in Physics |volume=9 |issue=4 |pages=373–379 |date=1995 |doi=10.1063/1.168534|bibcode=1995ComPh...9..373B |doi-access=free }}</ref> <ref name="Sorensen_1985">{{cite journal |author-first1=Henrik V. |author-last1=Sorensen |author-first2=Douglas L. |author-last2=Jones |author-link2=Douglas L. Jones |author-first3=Charles Sidney |author-last3=Burrus |author-link3=Charles Sidney Burrus |author-first4=Michael T. |author-last4=Heideman |title=On computing the discrete Hartley transform |journal=IEEE Transactions on Acoustics, Speech, and Signal Processing |volume=ASSP-33 |issue=4 |pages=1231–1238 |date=1985}}</ref> <ref name="Bini-Bozzo_1993">{{cite journal |author-first1=Dario Andrea |author-last1=Bini |author-first2=Enrico |author-last2=Bozzo |title=Fast discrete transform by means of eigenpolynomials |journal=[[Computers & Mathematics with Applications]] |volume=26 |issue=9 |pages=35–52 |date=1993 |doi=10.1016/0898-1221(93)90004-f|doi-access=free }}</ref> <ref name="Sorensen_1987">{{cite journal |author-first1=Henrik V. |author-last1=Sorensen |author-first2=Douglas L. |author-last2=Jones |author-link2=Douglas L. Jones |author-first3=Michael T. |author-last3=Heideman |author-first4=Charles Sidney |author-last4=Burrus |author-link4=Charles Sidney Burrus |title=Real-valued fast Fourier transform algorithms |journal=IEEE Transactions on Acoustics, Speech, and Signal Processing |volume=ASSP-35 |issue=6 |pages=849–863 |date=1987}}</ref> <ref name="Duhamel-Vetterli_1987">{{cite journal |author-first1=Pierre |author-last1=Duhamel |author-first2=Martin |author-last2=Vetterli |author-link2=Martin Vetterli |title=Improved Fourier and Hartley transform algorithms: application to cyclic convolution of real data |journal=IEEE Transactions on Acoustics, Speech, and Signal Processing |volume=ASSP-35 |pages=818–824 |date=1987}}</ref> <ref name="Popović-Šević_1994">{{cite journal |author-first1=Миодраг [Miodrag] |author-last1=Поповић [Popović] |author-link1=:sr:Миодраг Поповић (електротехничар) |author-first2=Dragutin |author-last2=Šević |title=A new look at the comparison of the fast Hartley and Fourier transforms |journal=[[IEEE Transactions on Signal Processing]] |volume=42 |issue=8 |pages=2178–2182 |date=1994 |doi=10.1109/78.301854|bibcode=1994ITSP...42.2178P }}</ref> <ref name="Frigo-Johnson_2005">{{cite journal |author-first1=Matteo |author-last1=Frigo |author-first2=Steven G. |author-last2=Johnson |title=The Design and Implementation of FFTW3 |url=http://fftw.org/fftw-paper-ieee.pdf |journal=[[Proceedings of the IEEE]] |volume=93 |issue=2 |pages=216–231 |date=2005 |doi=10.1109/jproc.2004.840301 |citeseerx=10.1.1.66.3097|s2cid=6644892 }}}</ref> <ref name="Chu-Burrus_1982">{{cite journal |author-first1=Shuni |author-last1=Chu |author-first2=Charles Sidney |author-last2=Burrus |author-link2=Charles Sidney Burrus |title=A prime factor FTT <nowiki>[</nowiki>''sic''<nowiki>]</nowiki> algorithm using distributed arithmetic |journal=IEEE Transactions on Acoustics, Speech, and Signal Processing |volume=30 |issue=2 |pages=217–227 |date=1982 |doi=10.1109/tassp.1982.1163875}}</ref> <ref name="Bortfeld-Dinter_1995">{{cite journal |author-first1=Thomas |author-last1=Bortfeld |author-first2=Wolfgang |author-last2=Dinter |title=Calculation of Multidimensional Hartley Transforms Using One-Dimensional Fourier Transforms |journal=[[IEEE Transactions on Signal Processing]] |volume=43 |issue=5 |pages=1306–1310 |date=1995 |doi=10.1109/78.382424|bibcode=1995ITSP...43.1306B }}</ref> <ref name="Boussakta_1988">{{cite journal |author-first1=Said |author-last1=Boussakta |author-first2=Alan G. J. |author-last2=Holt |title=Fast Multidimensional Discrete Hartley Transform using Fermat Number Transform |journal= IEE Proceedings G - Electronic Circuits and Systems |volume=135 |issue=6 |pages=235–237 |date=1988 |doi=10.1049/ip-g-1.1988.0036}}</ref> <ref name="Boussakta_2000">{{cite journal |author-first1=Said |author-last1=Boussakta |author-first2=Osama |author-last2=Alshibami |title=Fast Algorithm for the 3-D Discrete Hartley Transform |journal=[[International Conference on Acoustics, Speech, and Signal Processing|International Conference on Acoustics, Speech, and Signal Processing '00]]|number=4 |pages=2302–2305 |date=2000}}</ref> <ref name="Zeng-Bi-Leyman_2000">{{cite journal |author-first1=Yonghang |author-last1=Zeng |author-first2=Guoan |author-last2=Bi |author-first3=Abdul Rahim |author-last3=Leyman |title=Polynomial Transform Algorithms for Multidimensional Discrete Hartley Transform |journal=[[IEEE International Symposium on Circuits and Systems]] |number=V |pages=517–520 |date=2000}}</ref> }} == Further reading == * {{cite book |author-link=Ronald N. Bracewell |author-last=Bracewell |author-first=Ronald N. |title=The Hartley Transform |publisher=[[Oxford University Press]] |date=1986 |edition=1 |isbn=978-0-19503969-6}} * {{cite journal |author-first1=Said |author-last1=Boussakta |author-first2=Alan G. J. |author-last2=Holt |title=Fast Multidimensional Discrete Hartley Transform using Fermat Number Transform |journal= IEE Proceedings G - Electronic Circuits and Systems |volume=135 |issue=6 |pages=235–237 |date=1988 |doi=10.1049/ip-g-1.1988.0036}} * {{cite journal |author-first1=Jonathan |author-last1=Hong |author-first2=Martin |author-last2=Vetterli |author-link2=Martin Vetterli |author-first3=Pierre |author-last3=Duhamel |title=Basefield transforms with the convolution property |journal=[[Proceedings of the IEEE]] |volume=82 |issue=3 |pages=400–412 |date=1994 |doi=10.1109/5.272145|url=https://infoscience.epfl.ch/record/33890/files/HongVD94.pdf }} * {{cite journal |author-first=Mark A. |author-last=O'Neill |author-link=Mark A. O'Neill |title=Faster than Fast Fourier |journal=[[BYTE]] |volume=13 |issue=4 |pages=293–300 |date=1988}} * {{cite journal |first1=Kraig J. |last1=Olnejniczak |first2=Gerald T. |last2=Heydt |title=Scanning the Special Section on the Hartley transform |journal=[[Proceedings of the IEEE]] |volume=82 |pages=372–380 |date=March 1994}} (NB. Contains extensive bibliography.) [[Category:Discrete transforms]] [[Category:Fourier analysis]] </textarea><div class="templatesUsed"><div class="mw-templatesUsedExplanation"><p><span id="templatesused">Pages transcluded onto the current version of this page<span class="posteditwindowhelplinks"> (<a href="/wiki/Help:Transclusion" title="Help:Transclusion">help</a>)</span>:</span> </p></div><ul> <li><a href="/wiki/Template:Cite_book" title="Template:Cite book">Template:Cite book</a> (<a href="/w/index.php?title=Template:Cite_book&action=edit" title="Template:Cite book">view source</a>) (protected)</li><li><a href="/wiki/Template:Cite_journal" title="Template:Cite journal">Template:Cite journal</a> (<a href="/w/index.php?title=Template:Cite_journal&action=edit" title="Template:Cite journal">view source</a>) (protected)</li><li><a href="/wiki/Template:Ill" class="mw-redirect" title="Template:Ill">Template:Ill</a> (<a href="/w/index.php?title=Template:Ill&action=edit" class="mw-redirect" title="Template:Ill">view source</a>) (template editor protected)</li><li><a href="/wiki/Template:Interlanguage_link" title="Template:Interlanguage link">Template:Interlanguage link</a> (<a href="/w/index.php?title=Template:Interlanguage_link&action=edit" title="Template:Interlanguage link">view source</a>) (template editor protected)</li><li><a href="/wiki/Template:Main_other" title="Template:Main other">Template:Main other</a> (<a href="/w/index.php?title=Template:Main_other&action=edit" title="Template:Main other">view source</a>) (protected)</li><li><a href="/wiki/Template:Math" title="Template:Math">Template:Math</a> (<a href="/w/index.php?title=Template:Math&action=edit" title="Template:Math">view source</a>) (template editor protected)</li><li><a href="/wiki/Template:Pagetype" title="Template:Pagetype">Template:Pagetype</a> (<a href="/w/index.php?title=Template:Pagetype&action=edit" title="Template:Pagetype">view source</a>) (protected)</li><li><a href="/wiki/Template:Reflist" title="Template:Reflist">Template:Reflist</a> (<a href="/w/index.php?title=Template:Reflist&action=edit" title="Template:Reflist">view source</a>) (protected)</li><li><a href="/wiki/Template:Reflist/styles.css" title="Template:Reflist/styles.css">Template:Reflist/styles.css</a> (<a href="/w/index.php?title=Template:Reflist/styles.css&action=edit" title="Template:Reflist/styles.css">view source</a>) (protected)</li><li><a href="/wiki/Template:SDcat" title="Template:SDcat">Template:SDcat</a> (<a href="/w/index.php?title=Template:SDcat&action=edit" title="Template:SDcat">view source</a>) (protected)</li><li><a href="/wiki/Template:Separated_entries" title="Template:Separated entries">Template:Separated entries</a> (<a href="/w/index.php?title=Template:Separated_entries&action=edit" title="Template:Separated entries">view source</a>) (template editor protected)</li><li><a href="/wiki/Template:Short_description" title="Template:Short description">Template:Short description</a> (<a href="/w/index.php?title=Template:Short_description&action=edit" title="Template:Short description">view source</a>) (protected)</li><li><a href="/wiki/Template:Short_description/lowercasecheck" title="Template:Short description/lowercasecheck">Template:Short description/lowercasecheck</a> (<a href="/w/index.php?title=Template:Short_description/lowercasecheck&action=edit" title="Template:Short description/lowercasecheck">view source</a>) (protected)</li><li><a href="/wiki/Module:Arguments" title="Module:Arguments">Module:Arguments</a> (<a href="/w/index.php?title=Module:Arguments&action=edit" title="Module:Arguments">view source</a>) (protected)</li><li><a href="/wiki/Module:Check_for_unknown_parameters" title="Module:Check for unknown parameters">Module:Check for unknown parameters</a> (<a href="/w/index.php?title=Module:Check_for_unknown_parameters&action=edit" title="Module:Check for unknown parameters">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1" title="Module:Citation/CS1">Module:Citation/CS1</a> (<a href="/w/index.php?title=Module:Citation/CS1&action=edit" title="Module:Citation/CS1">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/COinS" title="Module:Citation/CS1/COinS">Module:Citation/CS1/COinS</a> (<a href="/w/index.php?title=Module:Citation/CS1/COinS&action=edit" title="Module:Citation/CS1/COinS">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/Configuration" title="Module:Citation/CS1/Configuration">Module:Citation/CS1/Configuration</a> (<a href="/w/index.php?title=Module:Citation/CS1/Configuration&action=edit" title="Module:Citation/CS1/Configuration">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/Date_validation" title="Module:Citation/CS1/Date validation">Module:Citation/CS1/Date validation</a> (<a href="/w/index.php?title=Module:Citation/CS1/Date_validation&action=edit" title="Module:Citation/CS1/Date validation">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/Identifiers" title="Module:Citation/CS1/Identifiers">Module:Citation/CS1/Identifiers</a> (<a href="/w/index.php?title=Module:Citation/CS1/Identifiers&action=edit" title="Module:Citation/CS1/Identifiers">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/Utilities" title="Module:Citation/CS1/Utilities">Module:Citation/CS1/Utilities</a> (<a href="/w/index.php?title=Module:Citation/CS1/Utilities&action=edit" title="Module:Citation/CS1/Utilities">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/Whitelist" title="Module:Citation/CS1/Whitelist">Module:Citation/CS1/Whitelist</a> (<a href="/w/index.php?title=Module:Citation/CS1/Whitelist&action=edit" title="Module:Citation/CS1/Whitelist">view source</a>) (protected)</li><li><a href="/wiki/Module:Citation/CS1/styles.css" title="Module:Citation/CS1/styles.css">Module:Citation/CS1/styles.css</a> (<a href="/w/index.php?title=Module:Citation/CS1/styles.css&action=edit" title="Module:Citation/CS1/styles.css">view source</a>) (protected)</li><li><a href="/wiki/Module:Disambiguation/templates" title="Module:Disambiguation/templates">Module:Disambiguation/templates</a> (<a href="/w/index.php?title=Module:Disambiguation/templates&action=edit" title="Module:Disambiguation/templates">view source</a>) (protected)</li><li><a href="/wiki/Module:Pagetype" title="Module:Pagetype">Module:Pagetype</a> (<a href="/w/index.php?title=Module:Pagetype&action=edit" title="Module:Pagetype">view source</a>) (protected)</li><li><a href="/wiki/Module:Pagetype/config" title="Module:Pagetype/config">Module:Pagetype/config</a> (<a href="/w/index.php?title=Module:Pagetype/config&action=edit" title="Module:Pagetype/config">view source</a>) (protected)</li><li><a href="/wiki/Module:Pagetype/disambiguation" class="mw-redirect" title="Module:Pagetype/disambiguation">Module:Pagetype/disambiguation</a> (<a href="/w/index.php?title=Module:Pagetype/disambiguation&action=edit" class="mw-redirect" title="Module:Pagetype/disambiguation">view source</a>) (protected)</li><li><a href="/wiki/Module:Pagetype/rfd" title="Module:Pagetype/rfd">Module:Pagetype/rfd</a> (<a href="/w/index.php?title=Module:Pagetype/rfd&action=edit" title="Module:Pagetype/rfd">view source</a>) (protected)</li><li><a href="/wiki/Module:Pagetype/setindex" title="Module:Pagetype/setindex">Module:Pagetype/setindex</a> (<a href="/w/index.php?title=Module:Pagetype/setindex&action=edit" title="Module:Pagetype/setindex">view source</a>) (protected)</li><li><a href="/wiki/Module:Pagetype/softredirect" title="Module:Pagetype/softredirect">Module:Pagetype/softredirect</a> (<a href="/w/index.php?title=Module:Pagetype/softredirect&action=edit" title="Module:Pagetype/softredirect">view source</a>) (protected)</li><li><a href="/wiki/Module:SDcat" title="Module:SDcat">Module:SDcat</a> (<a href="/w/index.php?title=Module:SDcat&action=edit" title="Module:SDcat">view source</a>) (protected)</li><li><a href="/wiki/Module:Separated_entries" title="Module:Separated entries">Module:Separated entries</a> (<a href="/w/index.php?title=Module:Separated_entries&action=edit" title="Module:Separated entries">view source</a>) (protected)</li><li><a href="/wiki/Module:String" title="Module:String">Module:String</a> (<a href="/w/index.php?title=Module:String&action=edit" title="Module:String">view source</a>) (protected)</li><li><a href="/wiki/Module:TableTools" title="Module:TableTools">Module:TableTools</a> (<a href="/w/index.php?title=Module:TableTools&action=edit" title="Module:TableTools">view source</a>) (protected)</li><li><a href="/wiki/Module:Wikitext_Parsing" title="Module:Wikitext Parsing">Module:Wikitext Parsing</a> (<a href="/w/index.php?title=Module:Wikitext_Parsing&action=edit" title="Module:Wikitext Parsing">view source</a>) (protected)</li><li><a href="/wiki/Module:Yesno" title="Module:Yesno">Module:Yesno</a> (<a href="/w/index.php?title=Module:Yesno&action=edit" title="Module:Yesno">view source</a>) (protected)</li></ul></div><p id="mw-returnto">Return to <a href="/wiki/Discrete_Hartley_transform" title="Discrete Hartley transform">Discrete Hartley transform</a>.</p> <!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&useformat=desktop" 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/wiki/Discrete_Hartley_transform">https://en.wikipedia.org/wiki/Discrete_Hartley_transform</a>"</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> </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=Discrete_Hartley_transform&action=edit&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://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></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"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-5c59558b9d-hxnl4","wgBackendResponseTime":262,"wgPageParseReport":{"limitreport":{"cputime":"0.056","walltime":"0.078","ppvisitednodes":{"value":418,"limit":1000000},"postexpandincludesize":{"value":17740,"limit":2097152},"templateargumentsize":{"value":6556,"limit":2097152},"expansiondepth":{"value":9,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":469,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 54.672 1 -total"," 99.87% 54.599 2 Template:Blocked_text"," 41.56% 22.719 2 Template:Replace"," 40.03% 21.885 1 Template:Colocationwebhost"," 36.21% 19.795 1 Template:Hidden"," 16.38% 8.956 1 Template:Tlx"," 14.37% 7.858 1 Template:Hidden_begin"," 2.30% 1.257 1 MediaWiki:Wikimedia-globalblocking-blockedtext-mistake"," 2.21% 1.207 1 MediaWiki:Wikimedia-globalblocking-blockedtext-mistake-email-steward"," 2.02% 1.104 1 Template:Hidden_end"]},"scribunto":{"limitreport-timeusage":{"value":"0.011","limit":"10.000"},"limitreport-memusage":{"value":1043347,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-5c59558b9d-hxnl4","timestamp":"20241130201546","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>