discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] gr_frequency_modulator_fc.cc: unknown function tr


From: Krzysztof Kamieniecki
Subject: Re: [Discuss-gnuradio] gr_frequency_modulator_fc.cc: unknown function trunc()
Date: Mon, 7 Mar 2005 08:34:00 -0500
User-agent: Internet Messaging Program (IMP) 3.2.2

I think the problem is that trunc is not part of the C++ standard. It is
officially part of C99 so we could link in that library.

This is the macro I would suggest, since int only goes to ~2 billion :)
Also I would prefer a function call because <insert standard disclaimer about x
being evaluated twice>

#define trunc(x) ((x >= 0) ? floor(x) : ceil(x))


Quoting Berndt Josef Wulf <address@hidden>:
> G'day,
> 
> thanks for supplying the man page on trunc(). This function is indeed missing
> 
> in NetBSD - not sure why.
> 
> Anyhow, I think I've found a solution that works and may be acceptable for 
> inclusion into the source tree for platforms that lack this functionality. 
> Find patch below that checks for trunc() and if not found includes a simple 
> macro definition.
> 
> --- configure.ac.orig   2005-03-07 22:10:37.000000000 +1030
> +++ configure.ac        2005-03-07 22:26:59.000000000 +1030
> @@ -102,6 +102,7 @@
>  AC_CHECK_LIB(m, sincosf,[AC_DEFINE([HAVE_SINCOSF],[1],[Define to 1 if your 
> system has `sincosf'.])])
>  AC_CHECK_LIB(m, sinf, [AC_DEFINE([HAVE_SINF],[1],[Define to 1 if your system
> 
> has `sinf'.])])
>  AC_CHECK_LIB(m, cosf, [AC_DEFINE([HAVE_COSF],[1],[Define to 1 if your system
> 
> has `cosf'.])])
> +AC_CHECK_LIB(m, trunc, [AC_DEFINE([HAVE_TRUNC],[1],[Define to 1 if your 
> systemhas no `trunc'.])])
> 
>  GR_CHECK_SHM_OPEN
> 
> --- src/lib/general/gr_frequency_modulator_fc.cc.orig   2005-03-07 
> 22:17:55.000000000 +1030
> +++ src/lib/general/gr_frequency_modulator_fc.cc        2005-03-07 
> 22:27:25.000000000 +1030
> @@ -29,6 +29,9 @@
>  #include <gr_sincos.h>
>  #include <math.h>
> 
> +#ifndef HAVE_TRUNC
> +#define trunc(x) (double) ((int) (x + (x >= 0.0 ? -0.5 : 0.5)))
> +#endif
> 
>  gr_frequency_modulator_fc_sptr gr_make_frequency_modulator_fc (double 
> sensitivity)
>  {
> 
> 
> 73, Berndt
> VK5ABN
> 
> On Mon, 7 Mar 2005 02:47 pm, kilian wrote:
> > Hi,
> >
> > not having NetBSD available I can only show you what man trunc tells me
> > under Linux:
> > -----------------------------------------------------------
> > NAME
> >        trunc, truncf, truncl - round to integer, towards zero
> >
> > SYNOPSIS
> >        #include <math.h>
> >
> >        double trunc(double x);
> >        float truncf(float x);
> >        long double truncl(long double x);
> >
> >        Compile with -std=c99; link with -lm.
> >
> > DESCRIPTION
> >        These  functions  round x to the nearest integer not larger in
> > absolute
> >        value.
> >
> > RETURN VALUE
> >        The rounded integer value.  If x is integral, infinite or NaN, x
> > itself
> >        is returned.
> >
> > ERRORS
> >        None.
> >
> > CONFORMING TO
> >        C99.
> >
> > SEE ALSO
> >        ceil(3), floor(3), lrint(3), nearbyint(3), rint(3), round(3)
> >
> > --------------------------------------------------------------------------
> >
> > You may very well find truncf() under NetBSD although checking for it
> > here:
> >
> >  http://netbsd.gw.com/cgi-bin/man-cgi?math+3+NetBSD-current
> >
> > didn't help me find it. However there is rint() but it rounds to the
> > nearest integer. You could spin your own trunc() I suppose.
> >
> 
> 
> _______________________________________________
> Discuss-gnuradio mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]