[v3] Add powf bench tests

Message ID 3f0cba63-6a0a-833d-b60e-a8d2829496b3@us.ibm.com
State Committed
Delegated to: Joseph Myers
Headers

Commit Message

Paul A. Clarke June 13, 2017, 8:56 p.m. UTC
  Add powf() bench test with input which covers these cases:
- positive base to positive exponent
- exponent 0
- negative base to even exponent
- exponent 1
- exponent -1
- squared
- squareroot
- 1 to negative exponent
- -1 to negative exponent
- base 0
- -1 to even exponent
- small base
- small exponent

2017-06-12  Paul A. Clarke  <pc@us.ibm.com>

	* benchtests/Makefile (bench-math): Add powf.
	* benchtests/powf-inputs: New file.
---
Changes in v3:
Rectified incorrect input values, adjusted value set to better map to a more common and expected result space, combined separate bench cases into one case, all per Joseph's review (Thanks!).

Changes in v2:
Joseph caught me being lazy by using the input for pow tests, which often results in bad/uninteresting input data.  (Good catch!)  I've now created a new input file which covers a lot of the special cases and the fairly generic case as well.

 benchtests/Makefile    |   2 +-
 benchtests/powf-inputs | 331 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 332 insertions(+), 1 deletion(-)
 create mode 100644 benchtests/powf-inputs
  

Comments

Joseph Myers June 14, 2017, 3:23 p.m. UTC | #1
This patch version is OK.
  
Tulio Magno Quites Machado Filho June 20, 2017, 12:55 p.m. UTC | #2
Paul Clarke <pc@us.ibm.com> writes:

> Add powf() bench test with input which covers these cases:
> - positive base to positive exponent
> - exponent 0
> - negative base to even exponent
> - exponent 1
> - exponent -1
> - squared
> - squareroot
> - 1 to negative exponent
> - -1 to negative exponent
> - base 0
> - -1 to even exponent
> - small base
> - small exponent
>
> 2017-06-12  Paul A. Clarke  <pc@us.ibm.com>
>
> 	* benchtests/Makefile (bench-math): Add powf.
> 	* benchtests/powf-inputs: New file.

Pushed as 52256ccccef8.
  

Patch

diff --git a/benchtests/Makefile b/benchtests/Makefile
index 7f5fda5..f49e9a0 100644
--- a/benchtests/Makefile
+++ b/benchtests/Makefile
@@ -23,7 +23,7 @@  subdir := benchtests
 include ../Makeconfig
 bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 log log2 \
 	      modf pow rint sin sincos sinh sqrt tan tanh fmin fmax fminf \
-	      fmaxf
+	      fmaxf powf
 
 bench-pthread := pthread_once
 
diff --git a/benchtests/powf-inputs b/benchtests/powf-inputs
new file mode 100644
index 0000000..d137da7
--- /dev/null
+++ b/benchtests/powf-inputs
@@ -0,0 +1,331 @@ 
+## args: float:float
+## ret: float
+## includes: math.h
+# positive base to positive exponent
+0x1p-126, 0x0p+0
+0x1p-126, 0x1.d1745ep+0
+0x1p-126, 0x1.d1745ep+1
+0x1p-126, 0x1.5d1746p+2
+0x1p-126, 0x1.d1745ep+2
+0x1p-126, 0x1.22e8bap+3
+0x1p-126, 0x1.5d1746p+3
+0x1p-126, 0x1.9745dp+3
+0x1p-126, 0x1.d1745ep+3
+0x1p-126, 0x1.05d174p+4
+0x1p-126, 0x1.22e8bap+4
+0x1p-126, 0x1.4p+4
+0x1.d1745ep+2, 0x0p+0
+0x1.d1745ep+2, 0x1.d1745ep+0
+0x1.d1745ep+2, 0x1.d1745ep+1
+0x1.d1745ep+2, 0x1.5d1746p+2
+0x1.d1745ep+2, 0x1.d1745ep+2
+0x1.d1745ep+2, 0x1.22e8bap+3
+0x1.d1745ep+2, 0x1.5d1746p+3
+0x1.d1745ep+2, 0x1.9745dp+3
+0x1.d1745ep+2, 0x1.d1745ep+3
+0x1.d1745ep+2, 0x1.05d174p+4
+0x1.d1745ep+2, 0x1.22e8bap+4
+0x1.d1745ep+2, 0x1.4p+4
+0x1.d1745ep+3, 0x0p+0
+0x1.d1745ep+3, 0x1.d1745ep+0
+0x1.d1745ep+3, 0x1.d1745ep+1
+0x1.d1745ep+3, 0x1.5d1746p+2
+0x1.d1745ep+3, 0x1.d1745ep+2
+0x1.d1745ep+3, 0x1.22e8bap+3
+0x1.d1745ep+3, 0x1.5d1746p+3
+0x1.d1745ep+3, 0x1.9745dp+3
+0x1.d1745ep+3, 0x1.d1745ep+3
+0x1.d1745ep+3, 0x1.05d174p+4
+0x1.d1745ep+3, 0x1.22e8bap+4
+0x1.d1745ep+3, 0x1.4p+4
+0x1.5d1746p+4, 0x0p+0
+0x1.5d1746p+4, 0x1.d1745ep+0
+0x1.5d1746p+4, 0x1.d1745ep+1
+0x1.5d1746p+4, 0x1.5d1746p+2
+0x1.5d1746p+4, 0x1.d1745ep+2
+0x1.5d1746p+4, 0x1.22e8bap+3
+0x1.5d1746p+4, 0x1.5d1746p+3
+0x1.5d1746p+4, 0x1.9745dp+3
+0x1.5d1746p+4, 0x1.d1745ep+3
+0x1.5d1746p+4, 0x1.05d174p+4
+0x1.5d1746p+4, 0x1.22e8bap+4
+0x1.5d1746p+4, 0x1.4p+4
+0x1.d1745ep+4, 0x0p+0
+0x1.d1745ep+4, 0x1.d1745ep+0
+0x1.d1745ep+4, 0x1.d1745ep+1
+0x1.d1745ep+4, 0x1.5d1746p+2
+0x1.d1745ep+4, 0x1.d1745ep+2
+0x1.d1745ep+4, 0x1.22e8bap+3
+0x1.d1745ep+4, 0x1.5d1746p+3
+0x1.d1745ep+4, 0x1.9745dp+3
+0x1.d1745ep+4, 0x1.d1745ep+3
+0x1.d1745ep+4, 0x1.05d174p+4
+0x1.d1745ep+4, 0x1.22e8bap+4
+0x1.d1745ep+4, 0x1.4p+4
+0x1.22e8bap+5, 0x0p+0
+0x1.22e8bap+5, 0x1.d1745ep+0
+0x1.22e8bap+5, 0x1.d1745ep+1
+0x1.22e8bap+5, 0x1.5d1746p+2
+0x1.22e8bap+5, 0x1.d1745ep+2
+0x1.22e8bap+5, 0x1.22e8bap+3
+0x1.22e8bap+5, 0x1.5d1746p+3
+0x1.22e8bap+5, 0x1.9745dp+3
+0x1.22e8bap+5, 0x1.d1745ep+3
+0x1.22e8bap+5, 0x1.05d174p+4
+0x1.22e8bap+5, 0x1.22e8bap+4
+0x1.22e8bap+5, 0x1.4p+4
+0x1.5d1746p+5, 0x0p+0
+0x1.5d1746p+5, 0x1.d1745ep+0
+0x1.5d1746p+5, 0x1.d1745ep+1
+0x1.5d1746p+5, 0x1.5d1746p+2
+0x1.5d1746p+5, 0x1.d1745ep+2
+0x1.5d1746p+5, 0x1.22e8bap+3
+0x1.5d1746p+5, 0x1.5d1746p+3
+0x1.5d1746p+5, 0x1.9745dp+3
+0x1.5d1746p+5, 0x1.d1745ep+3
+0x1.5d1746p+5, 0x1.05d174p+4
+0x1.5d1746p+5, 0x1.22e8bap+4
+0x1.5d1746p+5, 0x1.4p+4
+0x1.9745dp+5, 0x0p+0
+0x1.9745dp+5, 0x1.d1745ep+0
+0x1.9745dp+5, 0x1.d1745ep+1
+0x1.9745dp+5, 0x1.5d1746p+2
+0x1.9745dp+5, 0x1.d1745ep+2
+0x1.9745dp+5, 0x1.22e8bap+3
+0x1.9745dp+5, 0x1.5d1746p+3
+0x1.9745dp+5, 0x1.9745dp+3
+0x1.9745dp+5, 0x1.d1745ep+3
+0x1.9745dp+5, 0x1.05d174p+4
+0x1.9745dp+5, 0x1.22e8bap+4
+0x1.9745dp+5, 0x1.4p+4
+0x1.d1745ep+5, 0x0p+0
+0x1.d1745ep+5, 0x1.d1745ep+0
+0x1.d1745ep+5, 0x1.d1745ep+1
+0x1.d1745ep+5, 0x1.5d1746p+2
+0x1.d1745ep+5, 0x1.d1745ep+2
+0x1.d1745ep+5, 0x1.22e8bap+3
+0x1.d1745ep+5, 0x1.5d1746p+3
+0x1.d1745ep+5, 0x1.9745dp+3
+0x1.d1745ep+5, 0x1.d1745ep+3
+0x1.d1745ep+5, 0x1.05d174p+4
+0x1.d1745ep+5, 0x1.22e8bap+4
+0x1.d1745ep+5, 0x1.4p+4
+0x1.05d174p+6, 0x0p+0
+0x1.05d174p+6, 0x1.d1745ep+0
+0x1.05d174p+6, 0x1.d1745ep+1
+0x1.05d174p+6, 0x1.5d1746p+2
+0x1.05d174p+6, 0x1.d1745ep+2
+0x1.05d174p+6, 0x1.22e8bap+3
+0x1.05d174p+6, 0x1.5d1746p+3
+0x1.05d174p+6, 0x1.9745dp+3
+0x1.05d174p+6, 0x1.d1745ep+3
+0x1.05d174p+6, 0x1.05d174p+4
+0x1.05d174p+6, 0x1.22e8bap+4
+0x1.05d174p+6, 0x1.4p+4
+0x1.22e8bap+6, 0x0p+0
+0x1.22e8bap+6, 0x1.d1745ep+0
+0x1.22e8bap+6, 0x1.d1745ep+1
+0x1.22e8bap+6, 0x1.5d1746p+2
+0x1.22e8bap+6, 0x1.d1745ep+2
+0x1.22e8bap+6, 0x1.22e8bap+3
+0x1.22e8bap+6, 0x1.5d1746p+3
+0x1.22e8bap+6, 0x1.9745dp+3
+0x1.22e8bap+6, 0x1.d1745ep+3
+0x1.22e8bap+6, 0x1.05d174p+4
+0x1.22e8bap+6, 0x1.22e8bap+4
+0x1.22e8bap+6, 0x1.4p+4
+0x1.4p+6, 0x0p+0
+0x1.4p+6, 0x1.d1745ep+0
+0x1.4p+6, 0x1.d1745ep+1
+0x1.4p+6, 0x1.5d1746p+2
+0x1.4p+6, 0x1.d1745ep+2
+0x1.4p+6, 0x1.22e8bap+3
+0x1.4p+6, 0x1.5d1746p+3
+0x1.4p+6, 0x1.9745dp+3
+0x1.4p+6, 0x1.d1745ep+3
+0x1.4p+6, 0x1.05d174p+4
+0x1.4p+6, 0x1.22e8bap+4
+0x1.4p+6, 0x1.4p+4
+# name: exponent 0
+-0x1.fffffep+127, 0x0p+0
+-0x1.333332p+127, 0x0p+0
+-0x1.999998p+125, 0x0p+0
+0x1.999998p+125, 0x0p+0
+0x1.333332p+127, 0x0p+0
+0x1.fffffep+127, 0x0p+0
+# negative base to even exponent
+-0x1.4p+2, -0x1.8p+3
+-0x1.4p+2, -0x1p+3
+-0x1.4p+2, -0x1p+2
+-0x1.4p+2, 0x0p+0
+-0x1.4p+2, 0x1p+2
+-0x1.4p+2, 0x1p+3
+-0x1.4p+2, 0x1.8p+3
+-0x1.1p+2, -0x1.8p+3
+-0x1.1p+2, -0x1p+3
+-0x1.1p+2, -0x1p+2
+-0x1.1p+2, 0x0p+0
+-0x1.1p+2, 0x1p+2
+-0x1.1p+2, 0x1p+3
+-0x1.1p+2, 0x1.8p+3
+-0x1.bffffep+1, -0x1.8p+3
+-0x1.bffffep+1, -0x1p+3
+-0x1.bffffep+1, -0x1p+2
+-0x1.bffffep+1, 0x0p+0
+-0x1.bffffep+1, 0x1p+2
+-0x1.bffffep+1, 0x1p+3
+-0x1.bffffep+1, 0x1.8p+3
+-0x1.6p+1, -0x1.8p+3
+-0x1.6p+1, -0x1p+3
+-0x1.6p+1, -0x1p+2
+-0x1.6p+1, 0x0p+0
+-0x1.6p+1, 0x1p+2
+-0x1.6p+1, 0x1p+3
+-0x1.6p+1, 0x1.8p+3
+-0x1p+1, -0x1.8p+3
+-0x1p+1, -0x1p+3
+-0x1p+1, -0x1p+2
+-0x1p+1, 0x0p+0
+-0x1p+1, 0x1p+2
+-0x1p+1, 0x1p+3
+-0x1p+1, 0x1.8p+3
+-0x1.4p+0, -0x1.8p+3
+-0x1.4p+0, -0x1p+3
+-0x1.4p+0, -0x1p+2
+-0x1.4p+0, 0x0p+0
+-0x1.4p+0, 0x1p+2
+-0x1.4p+0, 0x1p+3
+-0x1.4p+0, 0x1.8p+3
+-0x1p-1, -0x1.8p+3
+-0x1p-1, -0x1p+3
+-0x1p-1, -0x1p+2
+-0x1p-1, 0x0p+0
+-0x1p-1, 0x1p+2
+-0x1p-1, 0x1p+3
+-0x1p-1, 0x1.8p+3
+# exponent 1
+-0x1.fffffep+127, 0x1p+0
+-0x1.333332p+127, 0x1p+0
+-0x1.999998p+125, 0x1p+0
+0x1.999998p+125, 0x1p+0
+0x1.333332p+127, 0x1p+0
+0x1.fffffep+127, 0x1p+0
+# exponent -1
+-0x1.fffffep+127, -0x1p+0
+-0x1.333332p+127, -0x1p+0
+-0x1.999998p+125, -0x1p+0
+0x1.999998p+125, -0x1p+0
+0x1.333332p+127, -0x1p+0
+0x1.fffffep+127, -0x1p+0
+# squared
+-0x1.fffffep+63, 0x1p+1
+-0x1.333332p+63, 0x1p+1
+-0x1.999998p+61, 0x1p+1
+0x1.999998p+61, 0x1p+1
+0x1.333332p+63, 0x1p+1
+0x1.fffffep+63, 0x1p+1
+# squareroot
+0x0p+0, 0x1p-1
+0x1.999998p+125, 0x1p-1
+0x1.999998p+126, 0x1p-1
+0x1.333332p+127, 0x1p-1
+0x1.999998p+127, 0x1p-1
+0x1.fffffep+127, 0x1p-1
+# 1 to negative exponent
+0x1p+0, -0x1.fffffep+127
+0x1p+0, -0x1.999998p+127
+0x1p+0, -0x1.333332p+127
+0x1p+0, -0x1.999998p+126
+0x1p+0, -0x1.999998p+125
+# -1 to negative exponent
+-0x1p+0, -0x1.fffffep+127
+-0x1p+0, -0x1.999998p+127
+-0x1p+0, -0x1.333332p+127
+-0x1p+0, -0x1.999998p+126
+-0x1p+0, -0x1.999998p+125
+# base 0
+0x0p+0, 0x0p+0
+0x0p+0, 0x1.fffffep+126
+0x0p+0, 0x1.fffffep+127
+# -1 to even exponent
+-0x1p+0, -0x1.8p+3
+-0x1p+0, -0x1p+3
+-0x1p+0, -0x1p+2
+-0x1p+0, 0x0p+0
+-0x1p+0, 0x1p+2
+-0x1p+0, 0x1p+3
+-0x1p+0, 0x1.8p+3
+# small base
+0x1.fffffp-1, -0x1.d22a5p+22
+0x1.fffffp-1, -0x1.17b2fcp+22
+0x1.fffffp-1, -0x1.74eea4p+20
+0x1.fffffp-1, 0x1.74eebp+20
+0x1.fffffp-1, 0x1.17b2fcp+22
+0x1.fffffp-1, 0x1.d22a5p+22
+0x1.fffff8p-1, -0x1.d22a5p+22
+0x1.fffff8p-1, -0x1.17b2fcp+22
+0x1.fffff8p-1, -0x1.74eea4p+20
+0x1.fffff8p-1, 0x1.74eebp+20
+0x1.fffff8p-1, 0x1.17b2fcp+22
+0x1.fffff8p-1, 0x1.d22a5p+22
+0x1p+0, -0x1.d22a5p+22
+0x1p+0, -0x1.17b2fcp+22
+0x1p+0, -0x1.74eea4p+20
+0x1p+0, 0x1.74eebp+20
+0x1p+0, 0x1.17b2fcp+22
+0x1p+0, 0x1.d22a5p+22
+0x1.000004p+0, -0x1.d22a5p+22
+0x1.000004p+0, -0x1.17b2fcp+22
+0x1.000004p+0, -0x1.74eea4p+20
+0x1.000004p+0, 0x1.74eebp+20
+0x1.000004p+0, 0x1.17b2fcp+22
+0x1.000004p+0, 0x1.d22a5p+22
+0x1.000008p+0, -0x1.d22a5p+22
+0x1.000008p+0, -0x1.17b2fcp+22
+0x1.000008p+0, -0x1.74eea4p+20
+0x1.000008p+0, 0x1.74eebp+20
+0x1.000008p+0, 0x1.17b2fcp+22
+0x1.000008p+0, 0x1.d22a5p+22
+0x1.00001p+0, -0x1.d22a5p+22
+0x1.00001p+0, -0x1.17b2fcp+22
+0x1.00001p+0, -0x1.74eea4p+20
+0x1.00001p+0, 0x1.74eebp+20
+0x1.00001p+0, 0x1.17b2fcp+22
+0x1.00001p+0, 0x1.d22a5p+22
+# small exponent
+0x1p-126, -0x1p-32
+0x1p-126, -0x1.333334p-33
+0x1p-126, -0x1.99999cp-35
+0x1p-126, 0x1.9999ap-35
+0x1p-126, 0x1.333334p-33
+0x1p-126, 0x1p-32
+0x1.999998p+29, -0x1p-32
+0x1.999998p+29, -0x1.333334p-33
+0x1.999998p+29, -0x1.99999cp-35
+0x1.999998p+29, 0x1.9999ap-35
+0x1.999998p+29, 0x1.333334p-33
+0x1.999998p+29, 0x1p-32
+0x1.999998p+30, -0x1p-32
+0x1.999998p+30, -0x1.333334p-33
+0x1.999998p+30, -0x1.99999cp-35
+0x1.999998p+30, 0x1.9999ap-35
+0x1.999998p+30, 0x1.333334p-33
+0x1.999998p+30, 0x1p-32
+0x1.333332p+31, -0x1p-32
+0x1.333332p+31, -0x1.333334p-33
+0x1.333332p+31, -0x1.99999cp-35
+0x1.333332p+31, 0x1.9999ap-35
+0x1.333332p+31, 0x1.333334p-33
+0x1.333332p+31, 0x1p-32
+0x1.999998p+31, -0x1p-32
+0x1.999998p+31, -0x1.333334p-33
+0x1.999998p+31, -0x1.99999cp-35
+0x1.999998p+31, 0x1.9999ap-35
+0x1.999998p+31, 0x1.333334p-33
+0x1.999998p+31, 0x1p-32
+0x1.fffffep+31, -0x1p-32
+0x1.fffffep+31, -0x1.333334p-33
+0x1.fffffep+31, -0x1.99999cp-35
+0x1.fffffep+31, 0x1.9999ap-35
+0x1.fffffep+31, 0x1.333334p-33
+0x1.fffffep+31, 0x1p-32