Skip to content
  • Paul Zimmermann's avatar
    392b3f09
    replace tgammaf by the CORE-MATH implementation · 392b3f09
    Paul Zimmermann authored
    
    
    The CORE-MATH implementation is correctly rounded (for any rounding mode).
    This can be checked by exhaustive tests in a few minutes since there are
    less than 2^32 values to check against for example GNU MPFR.
    This patch also adds some bench values for tgammaf.
    
    Tested on x86_64 and x86 (cfarm26).
    
    With the initial GNU libc code it gave on an Intel(R) Core(TM) i7-8700:
    
          "tgammaf": {
           "": {
            "duration": 3.50188e+09,
            "iterations": 2e+07,
            "max": 602.891,
            "min": 65.1415,
            "mean": 175.094
           }
          }
    
    With the new code:
    
          "tgammaf": {
           "": {
            "duration": 3.30825e+09,
            "iterations": 5e+07,
            "max": 211.592,
            "min": 32.0325,
            "mean": 66.1649
           }
          }
    
    With the initial GNU libc code it gave on cfarm26 (i686):
    
      "tgammaf": {
       "": {
        "duration": 3.70505e+09,
        "iterations": 6e+06,
        "max": 2420.23,
        "min": 243.154,
        "mean": 617.509
       }
      }
    
    With the new code:
    
      "tgammaf": {
       "": {
        "duration": 3.24497e+09,
        "iterations": 1.8e+07,
        "max": 1238.15,
        "min": 101.155,
        "mean": 180.276
       }
      }
    
    Signed-off-by: default avatarAlexei Sibidanov <sibid@uvic.ca>
    Signed-off-by: default avatarPaul Zimmermann <Paul.Zimmermann@inria.fr>
    
    Changes in v2:
        - include <math.h> (fix the linknamespace failures)
        - restored original benchtests/strcoll-inputs/filelist#en_US.UTF-8 file
        - restored original wrapper code (math/w_tgammaf_compat.c),
          except for the dealing with the sign
        - removed the tgammaf/float entries in all libm-test-ulps files
        - address other comments from Joseph Myers
          (https://sourceware.org/pipermail/libc-alpha/2024-July/158736.html
    
    )
    
    Changes in v3:
        - pass NULL argument for signgam from w_tgammaf_compat.c
        - use of math_narrow_eval
        - added more comments
    
    Changes in v4:
        - initialize local_signgam to 0 in math/w_tgamma_template.c
        - replace sysdeps/ieee754/dbl-64/gamma_productf.c by dummy file
    
    Changes in v5:
        - do not mention local_signgam any more in math/w_tgammaf_compat.c
        - initialize local_signgam to 1 instead of 0 in w_tgamma_template.c
          and added comment
    
    Changes in v6:
        - pass NULL as 2nd argument of __ieee754_gammaf_r in
          w_tgammaf_compat.c, and check for NULL in e_gammaf_r.c
    
    Changes in v7:
        - added Signed-off-by line for Alexei Sibidanov (author of the code)
    
    Changes in v8:
        - added Signed-off-by line for Paul Zimmermann (submitted of the patch)
    
    Changes in v9:
        - address comments from review by Adhemerval Zanella
    Reviewed-by: default avatarAdhemerval Zanella <adhemerval.zanella@linaro.org>
    392b3f09
    replace tgammaf by the CORE-MATH implementation
    Paul Zimmermann authored
    
    
    The CORE-MATH implementation is correctly rounded (for any rounding mode).
    This can be checked by exhaustive tests in a few minutes since there are
    less than 2^32 values to check against for example GNU MPFR.
    This patch also adds some bench values for tgammaf.
    
    Tested on x86_64 and x86 (cfarm26).
    
    With the initial GNU libc code it gave on an Intel(R) Core(TM) i7-8700:
    
          "tgammaf": {
           "": {
            "duration": 3.50188e+09,
            "iterations": 2e+07,
            "max": 602.891,
            "min": 65.1415,
            "mean": 175.094
           }
          }
    
    With the new code:
    
          "tgammaf": {
           "": {
            "duration": 3.30825e+09,
            "iterations": 5e+07,
            "max": 211.592,
            "min": 32.0325,
            "mean": 66.1649
           }
          }
    
    With the initial GNU libc code it gave on cfarm26 (i686):
    
      "tgammaf": {
       "": {
        "duration": 3.70505e+09,
        "iterations": 6e+06,
        "max": 2420.23,
        "min": 243.154,
        "mean": 617.509
       }
      }
    
    With the new code:
    
      "tgammaf": {
       "": {
        "duration": 3.24497e+09,
        "iterations": 1.8e+07,
        "max": 1238.15,
        "min": 101.155,
        "mean": 180.276
       }
      }
    
    Signed-off-by: default avatarAlexei Sibidanov <sibid@uvic.ca>
    Signed-off-by: default avatarPaul Zimmermann <Paul.Zimmermann@inria.fr>
    
    Changes in v2:
        - include <math.h> (fix the linknamespace failures)
        - restored original benchtests/strcoll-inputs/filelist#en_US.UTF-8 file
        - restored original wrapper code (math/w_tgammaf_compat.c),
          except for the dealing with the sign
        - removed the tgammaf/float entries in all libm-test-ulps files
        - address other comments from Joseph Myers
          (https://sourceware.org/pipermail/libc-alpha/2024-July/158736.html
    
    )
    
    Changes in v3:
        - pass NULL argument for signgam from w_tgammaf_compat.c
        - use of math_narrow_eval
        - added more comments
    
    Changes in v4:
        - initialize local_signgam to 0 in math/w_tgamma_template.c
        - replace sysdeps/ieee754/dbl-64/gamma_productf.c by dummy file
    
    Changes in v5:
        - do not mention local_signgam any more in math/w_tgammaf_compat.c
        - initialize local_signgam to 1 instead of 0 in w_tgamma_template.c
          and added comment
    
    Changes in v6:
        - pass NULL as 2nd argument of __ieee754_gammaf_r in
          w_tgammaf_compat.c, and check for NULL in e_gammaf_r.c
    
    Changes in v7:
        - added Signed-off-by line for Alexei Sibidanov (author of the code)
    
    Changes in v8:
        - added Signed-off-by line for Paul Zimmermann (submitted of the patch)
    
    Changes in v9:
        - address comments from review by Adhemerval Zanella
    Reviewed-by: default avatarAdhemerval Zanella <adhemerval.zanella@linaro.org>
Loading