Re: regression in tgamma?

Corinna Vinschen via Newlib <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
Paul,

could you please send patches in `git format-patch' format?
Even with `patch -p1', the below patch doesn't apply cleanly.


Thanks,
Corinna

On Dec 18 07:36, Paul Zimmermann wrote:
>        Hi Jeff,
> 
> > I have modified er_lgamma.c, erf_lgamma.c, w_tgamma.c, wf_tgamma.c based on
> > code changes in picolibc.
> > I did not add the new ___ieee754_ sub-functions and instead modified the
> > existing code assuming that the function
> > was called with *signgam = 0.  We can always do a merge from picolibc in the
> > future.
> > 
> > With the new code, the test runs as expected.
> > 
> > Paul, please confirm before tomorrow.
> 
> version b2f3d59 fails to compile on my x86_64 machine:
> 
> ../../../../../newlib/libm/math/w_tgamma.c: In function ‘tgamma’:
> ../../../../../newlib/libm/math/w_tgamma.c:38:6: error: ‘errno’ undeclared (first use in this function)
>    38 |      errno = EDOM;
>       |      ^~~~~
> ../../../../../newlib/libm/math/w_tgamma.c:19:1: note: ‘errno’ is defined in header ‘<errno.h>’; did you forget to ‘#include <errno.h>’?
>    18 | #include "fdlibm.h"
>   +++ |+#include <errno.h>
> 
> ../../../../../newlib/libm/math/w_tgamma.c:38:6: note: each undeclared identifier is reported only once for each function it appears in
>    38 |      errno = EDOM;
>       |      ^~~~~
> ../../../../../newlib/libm/math/w_tgamma.c:38:14: error: ‘EDOM’ undeclared (first use in this function)
>    38 |      errno = EDOM;
>       |              ^~~~
> ../../../../../newlib/libm/math/w_tgamma.c:40:14: error: ‘ERANGE’ undeclared (first use in this function)
>    40 |      errno = ERANGE;
>       |              ^~~~~~
> 
> It does after the following changes:
> 
> diff --git a/newlib/libm/math/w_tgamma.c b/newlib/libm/math/w_tgamma.c
> index 0f90dd4c6..52d5d71d3 100644
> --- a/newlib/libm/math/w_tgamma.c
> +++ b/newlib/libm/math/w_tgamma.c
> @@ -16,6 +16,7 @@
>   */
>  
>  #include "fdlibm.h"
> +#include <errno.h>
>  
>  #ifndef _DOUBLE_IS_32BITS
>  
> diff --git a/newlib/libm/math/wf_tgamma.c b/newlib/libm/math/wf_tgamma.c
> index 80aacf757..504cb4c29 100644
> --- a/newlib/libm/math/wf_tgamma.c
> +++ b/newlib/libm/math/wf_tgamma.c
> @@ -15,6 +15,7 @@
>  
>  #include "math.h"
>  #include "fdlibm.h"
> +#include <errno.h>
>  
>  #ifdef __STDC__
>         float tgammaf(float x)
> @@ -34,7 +35,6 @@
>             errno = EDOM;
>           else if (finite(x))
>             errno = ERANGE;
> -       }
>         return y;
>  #endif
>  }
> 
> and my small test program gives:
> 
> zimmerma@tomate:/tmp/newlib-cygwin$ ./a.out 
> x=-0x0p+0 y=-inf
> x=-0x1.53f198fe3b278p+7 y=0x1.fd6d312572d9cp-1015
> 
> which is ok. I'll do some further tests.
> 
> Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.