<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" xmlns:md="http://cnx.rice.edu/mdml/0.4" id="id2255528">
  <name>Program 2: Second Order Goertzel Algorithm</name>
  <metadata>
  <md:version>1.2</md:version>
  <md:created>2008/05/28 12:05:33 GMT-5</md:created>
  <md:revised>2008/09/02 10:50:39.368 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="cburrus">
      <md:firstname>C.</md:firstname>
      <md:othername>Sidney</md:othername>
      <md:surname>Burrus</md:surname>
      <md:email>csb@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="cburrus">
      <md:firstname>C.</md:firstname>
      <md:othername>Sidney</md:othername>
      <md:surname>Burrus</md:surname>
      <md:email>csb@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="dcwill">
      <md:firstname>Daniel</md:firstname>
      <md:othername>Collins</md:othername>
      <md:surname>Williamson</md:surname>
      <md:email>dwilliamson1285@gmail.com</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist>
    <md:keyword>DFT</md:keyword>
    <md:keyword>FFT</md:keyword>
    <md:keyword>Goertzel</md:keyword>
  </md:keywordlist>

  <md:abstract>Second Order Goertzel Algorithm</md:abstract>
</metadata>
  <content>
    <section id="uid1">
      <name>Second Order Goertzel Algorithm</name>
      <para id="id2255549">Below is the program for a second order Goertzel algorithm.</para>
      <figure id="uid2" orient="horizontal">
        <code type="block">C----------------------------------------------
C   GOERTZEL'S  DFT  ALGORITHM
C   Second order, input inorder
C   C. S. BURRUS,   SEPT 1983
C---------------------------------------------
    SUBROUTINE DFT(X,Y,A,B,N)
    REAL X(260), Y(260), A(260), B(260)
C
    Q = 6.283185307179586/N
    DO 20 J = 1, N
       C  = COS(Q*(J-1))
       S  = SIN(Q*(J-1))
       CC = 2*C
       A2 = 0
       B2 = 0
       A1 = X(1)
       B1 = Y(1)
       DO 30 I = 2, N
          T  = A1
          A1 = CC*A1 - A2 + X(I)
          A2 = T
          T  = B1
          B1 = CC*B1 - B2 + Y(I)
          B2 = T
30     CONTINUE
       A(J) = C*A1 - A2 - S*B1
       B(J) = C*B1 - B2 + S*A1
20  CONTINUE
C
    RETURN
    END
</code>
        <caption>Second Order Goertzel Algorithm</caption>
      </figure>
    </section>
  </content>
  <bib:file/>
</document>
