[libcxx-commits] [libcxx] 9339ab3 - [libc++] Get rid of <sstream> in the valarray tests

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Tue Oct 20 15:16:08 PDT 2020


Author: Louis Dionne
Date: 2020-10-20T18:15:57-04:00
New Revision: 9339ab30fbe4d564f570f38205aca683f2fbaffc

URL: https://github.com/llvm/llvm-project/commit/9339ab30fbe4d564f570f38205aca683f2fbaffc
DIFF: https://github.com/llvm/llvm-project/commit/9339ab30fbe4d564f570f38205aca683f2fbaffc.diff

LOG: [libc++] Get rid of <sstream> in the valarray tests

Added: 
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/valarray_helper.h

Modified: 
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
    libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
index 1d670245f64c..ce2d92b27b0e 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/acos_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
index e11a40cdf283..e8d467b529f0 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/asin_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
index 12d33c03feba..bebc40f705a3 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
index 1195b765681b..b8be25469922 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_valarray_value.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
index c670aba31df8..4cba88bb66cc 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan2_value_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
index a491c255047b..daf1b2caeb68 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/atan_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
index e5faa7edaac4..d9e85e446203 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cos_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
index e3d8006897c5..7ecde1b300d6 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/cosh_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
index 68456ca2260d..6df76666e092 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/exp_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
index 1550eb16477f..b644e0f4e8f3 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log10_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
index 36d69b5c61b7..da6619500dec 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/log_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
index e2e92a2f0b71..4f1d7262661f 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
index 145ce85ecb4d..4a7502bfecb0 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_valarray_value.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
index 799ac1cf81e6..019984b70f18 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/pow_value_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
index f713b9f9aafc..1a619b6a7a42 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sin_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
index 0691735ee4a4..cf9ff467d137 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sinh_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
index 9d7fc7212051..d4e71dd00a53 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/sqrt_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
index 6d87fd88f991..3d60fc9f93f5 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp
index 20006550d2f3..fe6566dbed0a 100644
--- a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tanh_valarray.pass.cpp
@@ -16,22 +16,10 @@
 
 #include <valarray>
 #include <cassert>
-#include <sstream>
 #include <cstddef>
 
 #include "test_macros.h"
-
-bool is_about(double x, double y, int p)
-{
-    std::ostringstream o;
-    o.precision(p);
-    scientific(o);
-    o << x;
-    std::string a = o.str();
-    o.str("");
-    o << y;
-    return a == o.str();
-}
+#include "valarray_helper.h"
 
 int main(int, char**)
 {

diff  --git a/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/valarray_helper.h b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/valarray_helper.h
new file mode 100644
index 000000000000..d68dac071c68
--- /dev/null
+++ b/libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/valarray_helper.h
@@ -0,0 +1,18 @@
+#ifndef LIBCPP_TEST_VALARRAY_HELPER_H
+#define LIBCPP_TEST_VALARRAY_HELPER_H
+
+#include <cmath>
+
+// Returns whether `x` and `y` are equal, up to the given number of
+// significant digits after the decimal.
+//
+// Specifically, we look whether `abs(x - y) < epsilon`, where epsilon
+// is `(1 / 10)^p`, assuming p is the number of digits we care about.
+// This means we're basically looking whether `abs(x - y)` is less
+// than `0.00..001` for some number of digits.
+inline bool is_about(double x, double y, int significant_digits) {
+    double epsilon = std::pow(1.0 / 10.0, significant_digits);
+    return std::abs(x - y) < epsilon;
+}
+
+#endif /* LIBCPP_TEST_VALARRAY_HELPER */


        


More information about the libcxx-commits mailing list