( DFT_Test)

( Test data)  

( n ...)
: addwf_const FLOAT npts @ 0 DO DUP I waveform F+! LOOP DROP ;

: addwf_sin(wx)     ( w...)
  FLOAT npts @ 0 DO DUP I npts @ xk F* FSIN  ( Sin{w*f{xk}} )
                  I waveform F+! 
                 LOOP DROP ;

: addwf_cos(wx)     ( w...)
  FLOAT npts @ 0 DO DUP I npts @  xk F* FCOS  ( Cos{w*f{xk}} )
                  I waveform F+! 
                 LOOP DROP ;

: mult_waveform ( factor FP, ....)
   FLOAT npts @ 0 DO DUP I waveform @ F*      ( value*factor)
                   I waveform !
                 LOOP DROP ;


( Test1 - all Cosines  - Real)
: just_cosine   ( f1,f2 ...)
        fullscreen_std zero_waveform 
        1 addwf_cos(wx)
        10 mult_waveform
        see_waveform zero_Cn DFT view_Cn TFD ;

: 2*cosine
        fullscreen_std zero_waveform 
        2 addwf_cos(wx)
        10 mult_waveform
        see_waveform zero_Cn DFT view_Cn TFD ;

: 4*cosine
        fullscreen_std zero_waveform 
        4 addwf_cos(wx)
        10 mult_waveform
        see_waveform zero_Cn DFT view_Cn TFD ;

: square_pulse  ( square waveform - 1 pulse)
    fullscreen_std zero_waveform
    20 0 DO 10 FLOAT I waveform F+! LOOP
    see_waveform zero_Cn DFT view_Cn TFD ;

: spike  ( spike)
    fullscreen_std zero_waveform
    10 FLOAT 30 waveform F+!
    see_waveform zero_Cn DFT view_Cn TFD ;

: just_sine ( all Sines)
     fullscreen_std zero_waveform
     1 addwf_sin(wx)
    10 mult_waveform
    see_waveform zero_Cn DFT view_Cn TFD ;

: sin+cos+level
     fullscreen_std zero_waveform 
     1 addwf_sin(wx)
     1 addwf_cos(wx)
     1 addwf_const 5 mult_waveform
     see_waveform zero_Cn DFT view_Cn TFD ;


