Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Nov 2005 00:41:46 +0000 (UTC)
From:      Bruce Evans <bde@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/lib/msun/src e_sinhf.c
Message-ID:  <200511130041.jAD0fkew061237@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
bde         2005-11-13 00:41:46 UTC

  FreeBSD src repository

  Modified files:
    lib/msun/src         e_sinhf.c 
  Log:
  Fixed some magic numbers.
  
  The threshold for not being tiny was too small.  Use the usual 2**-12
  threshold.  This change is not just an optimization, since the general
  code that we fell into has accuracy problems even for tiny x.  Avoiding
  it fixes 2*1366 args with errors of more than 1 ulp, with a maximum
  error of 1.167 ulps.
  
  The magic number 22 is log(DBL_EPSILON)/2 plus slop.  This is bogus
  for float precision.  Use 9 (~log(FLT_EPSILON)/2 plus less slop than
  for double precision).  The code for handling the interval
  [2**-28, 9_was_22] has accuracy problems even for [9, 22], so this
  change happens to fix errors of more than 1 ulp in about 2*17000
  cases.  It leaves such errors in about 2*1074000 cases, with a max
  error of 1.242 ulps.
  
  The threshold for switching from returning exp(x)/2 to returning
  exp(x/2)^2/2 was a little smaller than necessary.  As for coshf(),
  This was not quite harmless since the exp(x/2)^2/2 case is inaccurate,
  and fixing it avoids accuracy problems in 2*6 cases, leaving problems
  in 2*19997 cases.
  
  Fixed naming errors in pseudo-code in comments.
  
  Revision  Changes    Path
  1.8       +6 -6      src/lib/msun/src/e_sinhf.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511130041.jAD0fkew061237>