[libc++] Get rid of <sstream> in the valarray tests
authorLouis Dionne <ldionne@apple.com>
Mon, 19 Oct 2020 20:51:33 +0000 (16:51 -0400)
committerLouis Dionne <ldionne@apple.com>
Tue, 20 Oct 2020 22:15:57 +0000 (18:15 -0400)
20 files changed:
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
libcxx/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/valarray_helper.h [new file with mode: 0644]

index 1d670245f64c52d44ba1b7fa571d2c3a37471d24..ce2d92b27b0e6eb3ef444c8ac0650e5ee01d99ab 100644 (file)
 
 #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**)
 {
index e11a40cdf283c26a29d6da9e63e7a53d09f86bf5..e8d467b529f0c79119ce24de0be4da55cb568781 100644 (file)
 
 #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**)
 {
index 12d33c03feba331664225fcae6139a7c00a7731f..bebc40f705a33afa4432d8a8ecbe78a811e07734 100644 (file)
 
 #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**)
 {
index 1195b765681b19eb3ad43dc283939bec54430626..b8be2546992293d5286dadca136685fdc998e84e 100644 (file)
 
 #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**)
 {
index c670aba31df8c4e1eb3bc44679580a0fc3311f42..4cba88bb66cc387f7241379709c1c7b9d6745192 100644 (file)
 
 #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**)
 {
index a491c255047b3c41fc3f0ed1bd6975b144c76da3..daf1b2caeb68df72dfa72625d8315b3d65f11555 100644 (file)
 
 #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**)
 {
index e5faa7edaac4875b871a7f1be8131f52c0819272..d9e85e44620346487f59b05bab073adaa3155b9a 100644 (file)
 
 #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**)
 {
index e3d8006897c547bee606e6a1b4005ad2a3858764..7ecde1b300d6ddec19875d995eb0adcd2803e845 100644 (file)
 
 #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**)
 {
index 68456ca2260d19187fabcf7347537165134bd1b1..6df76666e092ba7d857b4e98b2d3eeb89ccef396 100644 (file)
 
 #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**)
 {
index 1550eb16477ff6d96d95bb496e42ca1bc5a8ad98..b644e0f4e8f34824b9ae1e4e1039c6f9d013be45 100644 (file)
 
 #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**)
 {
index 36d69b5c61b77c7c397d56a17091d6e65b9b7a8f..da6619500dec4bb6191a6afab58a8b1139b3198a 100644 (file)
 
 #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**)
 {
index e2e92a2f0b71900db2e031fc88d54a19653ec715..4f1d7262661f36f9238fd5c514521997ca030513 100644 (file)
 
 #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**)
 {
index 145ce85ecb4dd007fe93f23fa494b76376ef4f94..4a7502bfecb0d7070bad4e4c0aed9b63f319aa25 100644 (file)
 
 #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**)
 {
index 799ac1cf81e6c835e292c0327904b8f3b7157121..019984b70f188f62153d777ffec0c35dec9fdb87 100644 (file)
 
 #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**)
 {
index f713b9f9aafce386642824c0f0fcff5ee438b287..1a619b6a7a42fcb01c1f253c7e8865b65fef895f 100644 (file)
 
 #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**)
 {
index 0691735ee4a4cc31d1ecfcee3fc93d05c6db26bf..cf9ff467d13781cc4f03aa0ce8448a36813a7ae5 100644 (file)
 
 #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**)
 {
index 9d7fc721205125a17901f90006e34185f96b8ab4..d4e71dd00a5389e5e612485faf63f6461bece686 100644 (file)
 
 #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**)
 {
index 6d87fd88f9913a2c0c501a9912d201fa3372ef1e..3d60fc9f93f547837b10d9066297b1fdc6ffe17c 100644 (file)
 
 #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**)
 {
index 20006550d2f3e94e9fe21e23d7e38d23aa3cf481..fe6566dbed0a2a72d43e268b399039d5f822ac51 100644 (file)
 
 #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 (file)
index 0000000..d68dac0
--- /dev/null
@@ -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 */