123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- //===----------------------------------------------------------------------===//
- //
- // 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.
- //
- //===----------------------------------------------------------------------===//
- // <valarray>
- // template<class T> class valarray;
- // template<class T>
- // valarray<T>
- // log(const valarray<T>& x);
- #include <valarray>
- #include <cassert>
- #include <sstream>
- 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[] = {.5, .75, 1, 3, 7};
- T a3[] = {-6.9314718055994529e-01,
- -2.8768207245178090e-01,
- 0.0000000000000000e+00,
- 1.0986122886681098e+00,
- 1.9459101490553132e+00};
- const unsigned N = sizeof(a1)/sizeof(a1[0]);
- std::valarray<T> v1(a1, N);
- std::valarray<T> v3 = log(v1);
- assert(v3.size() == v1.size());
- for (int i = 0; i < v3.size(); ++i)
- assert(is_about(v3[i], a3[i], 10));
- }
- }
|