From 61b9a7258a7693d7f3674a5a1daf7b036ff1d382 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 6 Sep 2015 18:46:46 +0000 Subject: Import libc++ 3.7.0 release (r246257). --- .../valarray.transcend/tan_valarray.pass.cpp | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp (limited to 'test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp') diff --git a/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp b/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp new file mode 100644 index 0000000000000..021dbc4d77545 --- /dev/null +++ b/test/std/numerics/numarray/valarray.nonmembers/valarray.transcend/tan_valarray.pass.cpp @@ -0,0 +1,51 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +// + +// template class valarray; + +// template +// valarray +// tan(const valarray& x); + +#include +#include +#include + +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(); +} + +int main() +{ + { + typedef double T; + T a1[] = {-.9, -.5, 0., .5, .75}; + T a3[] = {-1.2601582175503390e+00, + -5.4630248984379048e-01, + 0.0000000000000000e+00, + 5.4630248984379048e-01, + 9.3159645994407259e-01}; + const unsigned N = sizeof(a1)/sizeof(a1[0]); + std::valarray v1(a1, N); + std::valarray v3 = tan(v1); + assert(v3.size() == v1.size()); + for (int i = 0; i < v3.size(); ++i) + assert(is_about(v3[i], a3[i], 10)); + } +} -- cgit v1.2.3