1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnant// The LLVM Compiler Infrastructure 4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// 8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant//===----------------------------------------------------------------------===// 9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// <valarray> 11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template<class T> class valarray; 13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// template<class T> 15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// valarray<T> 16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant// sinh(const valarray<T>& x); 17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <valarray> 19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <cassert> 20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant#include <sstream> 21a9bcd3dae859f02ab496d175d50840f43a2d4ed2Stephan T. Lavavej#include <cstddef> 22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantbool is_about(double x, double y, int p) 24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::ostringstream o; 26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant o.precision(p); 27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant scientific(o); 28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant o << x; 29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::string a = o.str(); 30bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant o.str(""); 31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant o << y; 32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant return a == o.str(); 33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantint main() 36bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant{ 37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant { 38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant typedef double T; 39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant T a1[] = {-.9, -.5, 0., .5, .75}; 40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant T a3[] = {-1.0265167257081753e+00, 41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant -5.2109530549374738e-01, 42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 0.0000000000000000e+00, 43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 5.2109530549374738e-01, 44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant 8.2231673193582999e-01}; 45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant const unsigned N = sizeof(a1)/sizeof(a1[0]); 46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::valarray<T> v1(a1, N); 47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant std::valarray<T> v3 = sinh(v1); 48bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(v3.size() == v1.size()); 49a9bcd3dae859f02ab496d175d50840f43a2d4ed2Stephan T. Lavavej for (std::size_t i = 0; i < v3.size(); ++i) 50bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant assert(is_about(v3[i], a3[i], 10)); 51bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant } 52bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant} 53