00001 /* -*- c++ -*- */ 00002 /* 00003 * Copyright 2003,2005 Free Software Foundation, Inc. 00004 * 00005 * This file is part of GNU Radio 00006 * 00007 * GNU Radio is free software; you can redistribute it and/or modify 00008 * it under the terms of the GNU General Public License as published by 00009 * the Free Software Foundation; either version 3, or (at your option) 00010 * any later version. 00011 * 00012 * GNU Radio is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 * GNU General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU General Public License 00018 * along with GNU Radio; see the file COPYING. If not, write to 00019 * the Free Software Foundation, Inc., 51 Franklin Street, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00023 /* 00024 * mathematical odds and ends. 00025 */ 00026 00027 #ifndef _GR_MATH_H_ 00028 #define _GR_MATH_H_ 00029 00030 #include <gr_complex.h> 00031 00032 long gr_gcd (long m, long n); 00033 00034 // returns a non-zero value if value is "not-a-number" (NaN), and 0 otherwise 00035 int gr_isnan (double value); 00036 00037 // returns a non-zero value if the value of x has its sign bit set. 00038 // 00039 // This is not the same as `x < 0.0', because IEEE 754 floating point 00040 // allows zero to be signed. The comparison `-0.0 < 0.0' is false, but 00041 // `gr_signbit (-0.0)' will return a nonzero value. 00042 00043 int gr_signbit (double x); 00044 00060 float gr_fast_atan2f(float y, float x); 00061 00062 static inline float gr_fast_atan2f(gr_complex z) 00063 { 00064 return gr_fast_atan2f(z.imag(), z.real()); 00065 } 00066 00067 #endif /* _GR_MATH_H_ */