summaryrefslogtreecommitdiffstats
path: root/mathfuncs_log.h
diff options
context:
space:
mode:
Diffstat (limited to 'mathfuncs_log.h')
-rw-r--r--mathfuncs_log.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/mathfuncs_log.h b/mathfuncs_log.h
index 8d99a62..0a40eec 100644
--- a/mathfuncs_log.h
+++ b/mathfuncs_log.h
@@ -31,14 +31,23 @@ namespace vecmathlib {
realvec_t r;
switch (sizeof(real_t)) {
case 4:
+#ifdef VML_HAVE_FP_CONTRACT
// float, error=5.98355642684398209498469870525e-9
r = RV(0.410981538282433293325329456838);
r = fma(r, y2, RV(0.402155483172044562892705980539));
r = fma(r, y2, RV(0.57755014627178237959721643293));
r = fma(r, y2, RV(0.96178780600659929206930296869));
r = fma(r, y2, RV(2.88539012786343587248965772685));
+#else
+ //flaot, error=2.25468184051947656525068987795e-7
+ r = RV(0.498866687070343238590910977481);
+ r = fma(r, y2, RV(0.57002741193682764193895550312));
+ r = fma(r, y2, RV(0.96200215034262628756932169194));
+ r = fma(r, y2, RV(2.88538850388042106595516956395));
+#endif
break;
case 8:
+#ifdef VML_HAVE_FP_CONTRACT
// double, error=9.45037202901655672811489051683e-17
r = RV(0.259935726478127940817401224248);
r = fma(r, y2, RV(0.140676370079882918464564658472));
@@ -50,6 +59,17 @@ namespace vecmathlib {
r = fma(r, y2, RV(0.57707801621733949207376840932));
r = fma(r, y2, RV(0.96179669392666302667713134701));
r = fma(r, y2, RV(2.88539008177792581277410991327));
+#else
+ // double, error=1.21820548287702216975532695788e-13
+ r = RV(0.293251364683280430617251942017);
+ r = fma(r, y2, RV(0.201364223624519571276587631354));
+ r = fma(r, y2, RV(0.264443947645547871780098560836));
+ r = fma(r, y2, RV(0.320475051320227723946459855458));
+ r = fma(r, y2, RV(0.412202612052105347480086431555));
+ r = fma(r, y2, RV(0.57707794741938820005328259256));
+ r = fma(r, y2, RV(0.96179669445173881282808321929));
+ r = fma(r, y2, RV(2.88539008177676567117601117274));
+#endif
break;
default:
__builtin_unreachable();
OpenPOWER on IntegriCloud