# Re: gr\_firdes.cc/firdes.cc - window functions - flawe

**URL:** <https://www.ruby-forum.com/t/re-gr-firdes-cc-firdes-cc-window-functions-flawe/246400>\
**Category:** GNU Radio\
**Created:** [October 7, 2013, 6:50pm UTC](https://www.ruby-forum.com/t/re-gr-firdes-cc-firdes-cc-window-functions-flawe/246400 "2013-10-07T18:50:37Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sadaf\_N](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@Sadaf\_N](https://www.ruby-forum.com/u/Sadaf_N)\
**Post date:** [October 7, 2013, 6:50pm UTC](https://www.ruby-forum.com/t/re-gr-firdes-cc-firdes-cc-window-functions-flawe/246400/1 "2013-10-07T18:50:37Z")

</div>

$ git diff v3.6.3 HEAD gr-filter/lib/firdes.cc (but modified since you  
remain @ v3.6.3)

diff --git a/gr-filter/lib/firdes.cc b/gr-filter/lib/firdes.cc  
index 5c3320d…d55a4ba 100644  
— a/gr-filter/lib/firdes.cc  
+++ b/gr-filter/lib/firdes.cc  
@@ -746,6 +746,7 @@ namespace gr {  
case WIN\_RECTANGULAR:  
for(int n = 0; n \< ntaps; n++)  
taps[n] = 1;

- 

```
   break;

 case WIN_HAMMING:
  for(int n = 0; n < ntaps; n++)

```

@@ -774,16 +775,13 @@ namespace gr {  
double IBeta = 1.0/Izero(beta);  
double inm1 = 1.0/((double)(ntaps));  
double temp;

- 

```
    //fprintf(stderr, "IBeta = %g; inm1 = %g\n", IBeta, inm1);

```

- 

```
    for(int i=0; i<ntaps; i++) {

```

- 

```
      temp = i * inm1;

```

- 

```
      //fprintf(stderr, "temp = %g\n", temp);

```

- 

```
      taps[i] = Izero(beta*sqrt(1.0-temp*temp)) * IBeta;

```

- 

```
      //fprintf(stderr, "taps[%d] = %g\n", i, taps[i]);

```

- 

```
    }

```

- 

```
    for(int i= 0; i<ntaps; i++) {

```

- 

```
       temp = 2*i*inm1 - 1;

```

- 

```
       taps[i] = Izero(beta*sqrt(1.0-temp*temp)) * IBeta;

```

- 

```
     }
  }

```

- 

```
 break;

```

- 

```
  break;

 default:
  throw std::out_of_range("firdes:window: type out of range");

```

@@ -804,7 +802,7 @@ namespace gr {  
throw std::out\_of\_range(“firdes check failed: 0 \< fa \<=  
sampling\_freq / 2”);

```
   if(transition_width <= 0)

```

- 

```
  throw std::out_of_range("gr_dirdes check failed: 

```

transition\_width \>  
0");

- 

```
  throw std::out_of_range("gr_firdes check failed: 

```

transition\_width \>  
0");  
}

```
 void

```

… but don’t make the #include file changes in your v3.6.3 and you  
should  
change the version number (VERSION\_INFO\_MAINT\_VERSION) in CMakeLists.txt

---

<div class="post-metadata">

**Author:** ![KB3CSSChris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/48db29/32.png) [@KB3CSSChris](https://www.ruby-forum.com/u/KB3CSSChris)\
**Post date:** [October 8, 2013, 8:26pm UTC](https://www.ruby-forum.com/t/re-gr-firdes-cc-firdes-cc-window-functions-flawe/246400/2 "2013-10-08T20:26:33Z")

</div>

Hi Tom and Chris,

Thanks for your detailed guidance on this. I’ll try this out.

Bob
