1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _STLP_DO_IMPORT_CSTD_FUNCTIONS
2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <limits>
4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <cmath>
5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//We also test math functions imported from stdlib.h or
6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//defined in cstdlib
7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <cstdlib>
8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "math_aux.h"
10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "cppunit/cppunit_proxy.h"
11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//This test purpose is to check the right import of math.h C symbols
13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//into the std namespace so we do not use the using namespace std
14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//specification
15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// TestCase class
18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass CMathTest : public CPPUNIT_NS::TestCase
20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST_SUITE(CMathTest);
22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (STLPORT) && !defined (_STLP_USE_NAMESPACES)
23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_IGNORE;
24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST(import_checks);
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_TEST_SUITE_END();
27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  protected:
29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    void import_checks();
30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott};
31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick ScottCPPUNIT_TEST_SUITE_REGISTRATION(CMathTest);
33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// tests implementation
36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott//
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid CMathTest::import_checks()
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (STLPORT) || defined (_STLP_USE_NAMESPACES)
40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int int_val = -1;
41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  long long_val = -1l;
42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  float float_val = -1.0f;
43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  double double_val = -1.0;
44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_NO_LONG_DOUBLE)
45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  long double long_double_val = -1.0l;
46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::abs(int_val), -int_val) );
49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::abs(long_val), -long_val) );
50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::labs(long_val), -long_val) );
51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::abs(float_val), -float_val) );
52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::abs(double_val), -double_val) );
53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_NO_LONG_DOUBLE)
54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::abs(long_double_val), -long_double_val) );
55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::fabs(float_val), -float_val) );
58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::fabs(double_val), -double_val) );
59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_NO_LONG_DOUBLE)
60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::fabs(long_double_val), -long_double_val) );
61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  std::div_t div_res = std::div(3, 2);
64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( div_res.quot == 1 );
65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( div_res.rem == 1 );
66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  std::ldiv_t ldiv_res = std::ldiv(3l, 2l);
67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( ldiv_res.quot == 1l );
68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( ldiv_res.rem == 1l );
69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  ldiv_res = std::div(3l, 2l);
70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( ldiv_res.quot == 1l );
71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( ldiv_res.rem == 1l );
72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  std::srand(2);
74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  int rand_val = std::rand();
75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( rand_val >= 0 && rand_val <= RAND_MAX );
76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::floor(1.5), 1.0) );
78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::ceil(1.5), 2.0) );
79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::fmod(1.5, 1.0), 0.5) );
80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sqrt(4.0), 2.0) );
81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::pow(2.0, 2), 4.0) );
82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  /*
83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   * Uncomment the following to check that it generates an ambiguous call
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   * as there is no Standard pow(int, int) function only pow(double, int),
85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   * pow(float, int) and some others...
86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   * If it do not generate a compile time error it should at least give
87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   * the good result.
88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott   */
89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  //CPPUNIT_CHECK( are_equals(std::pow(10, -2), 0.01) );
90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::pow(10.0, -2), 0.01) );
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::exp(0.0), 1.0) );
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::log(std::exp(1.0)), 1.0) );
93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::log10(100.0), 2.0) );
94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_WIN64)
95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::modf(100.5, &double_val), 0.5) );
96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(double_val, 100.0) );
97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  double_val = std::frexp(8.0, &int_val);
99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(double_val * std::pow(2.0, int_val), 8.0) );
100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::ldexp(1.0, 2), 4.0) );
101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::cos(std::acos(1.0)), 1.0) );
102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sin(std::asin(1.0)), 1.0) );
103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tan(std::atan(1.0)), 1.0) );
104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tan(std::atan2(1.0, 1.0)), 1.0) );
105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::cosh(0.0), 1.0) );
106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sinh(0.0), 0.0) );
107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64)
108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tanh(0.0), 0.0) );
109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::floor(1.5f), 1.0f) );
112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::ceil(1.5f), 2.0f) );
113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::fmod(1.5f, 1.0f), 0.5f) );
114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sqrt(4.0f), 2.0f) );
115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::pow(2.0f, 2), 4.0f) );
116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::exp(0.0f), 1.0f) );
117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::log(std::exp(1.0f)), 1.0f) );
118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::log10(100.0f), 2.0f) );
119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_WIN64)
120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::modf(100.5f, &float_val), 0.5f) );
121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(float_val, 100.0f) );
122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  float_val = std::frexp(8.0f, &int_val);
124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(float_val * std::pow(2.0f, int_val), 8.0f) );
125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::ldexp(1.0f, 2), 4.0f) );
126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::cos(std::acos(1.0f)), 1.0f) );
127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sin(std::asin(1.0f)), 1.0f) );
128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tan(std::atan(1.0f)), 1.0f) );
129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tan(std::atan2(1.0f, 1.0f)), 1.0f) );
130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::cosh(0.0f), 1.0f) );
131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sinh(0.0f), 0.0f) );
132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64)
133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tanh(0.0f), 0.0f) );
134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_NO_LONG_DOUBLE)
137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::floor(1.5l), 1.0l) );
138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::ceil(1.5l), 2.0l) );
139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::fmod(1.5l, 1.0l), 0.5l) );
140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sqrt(4.0l), 2.0l) );
141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::pow(2.0l, 2), 4.0l) );
142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::exp(0.0l), 1.0l) );
143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::log(std::exp(1.0l)), 1.0l) );
144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::log10(100.0l), 2.0l) );
145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_WIN64)
146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::modf(100.5l, &long_double_val), 0.5l) );
147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(long_double_val, 100.0l) );
148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  long_double_val = std::frexp(8.0l, &int_val);
150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(long_double_val * std::pow(2.0l, int_val), 8.0l) );
151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::ldexp(1.0l, 2), 4.0l) );
152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::cos(std::acos(1.0l)), 1.0l) );
153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sin(std::asin(1.0l)), 1.0l) );
154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tan(0.0l), 0.0l) );
155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::atan(0.0l), 0.0l) );
156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::atan2(0.0l, 1.0l), 0.0l) );
157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::cosh(0.0l), 1.0l) );
158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sinh(0.0l), 0.0l) );
159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    if !defined (STLPORT) || !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_M_AMD64)
160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::tanh(0.0l), 0.0l) );
161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    endif
162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sqrt(std::sqrt(std::sqrt(256.0))), 2.0) );
165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sqrt(std::sqrt(std::sqrt(256.0f))), 2.0f) );
166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_NO_LONG_DOUBLE)
167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  CPPUNIT_CHECK( are_equals(std::sqrt(std::sqrt(std::sqrt(256.0l))), 2.0l) );
168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott}
171