generate_rational_test.cpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. // (C) Copyright John Maddock 2007.
  2. // Use, modification and distribution are subject to the
  3. // Boost Software License, Version 1.0. (See accompanying file
  4. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #define BOOST_MATH_POLY_METHOD 0
  6. #define BOOST_MATH_RATIONAL_METHOD 0
  7. #include <boost/random.hpp>
  8. #include <boost/math/tools/rational.hpp>
  9. #include <iostream>
  10. #include <fstream>
  11. #include "mp_t.hpp"
  12. int main()
  13. {
  14. using namespace boost::math;
  15. using namespace boost::math::tools;
  16. static const unsigned max_order = 20;
  17. std::cout << std::scientific << std::setprecision(40);
  18. boost::mt19937 rnd;
  19. boost::variate_generator<
  20. boost::mt19937,
  21. boost::uniform_int<> > gen(rnd, boost::uniform_int<>(1, 12));
  22. for(unsigned i = 1; i < max_order; ++i)
  23. {
  24. std::vector<int> coef;
  25. for(unsigned j = 0; j < i; ++j)
  26. {
  27. coef.push_back(gen());
  28. }
  29. std::cout << std::scientific;
  30. std::cout <<
  31. " //\n"
  32. " // Polynomials of order " << i-1 << "\n"
  33. " //\n"
  34. " static const U n" << i << "c[" << i << "] = { ";
  35. for(unsigned j = 0; j < i; ++j)
  36. {
  37. if(j)
  38. std::cout << ", ";
  39. std::cout << coef[j];
  40. }
  41. std::cout << " };\n";
  42. std::cout <<
  43. " static const boost::array<U, " << i << "> n" << i << "a = { ";
  44. for(unsigned j = 0; j < i; ++j)
  45. {
  46. if(j)
  47. std::cout << ", ";
  48. std::cout << coef[j];
  49. }
  50. std::cout << " };\n";
  51. mp_t r1 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.125), i);
  52. mp_t r2 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.25), i);
  53. mp_t r3 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.75), i);
  54. mp_t r4 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(1) - mp_t(1) / 64, i);
  55. mp_t r5 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(6.5), i);
  56. mp_t r6 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(10247.25), i);
  57. std::cout <<
  58. " BOOST_CHECK_CLOSE(\n"
  59. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(0.125), " << i << "),\n"
  60. " static_cast<T>(" << r1 << "L),\n"
  61. " tolerance);\n";
  62. std::cout <<
  63. " BOOST_CHECK_CLOSE(\n"
  64. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(0.25), " << i << "),\n"
  65. " static_cast<T>(" << r2 << "L),\n"
  66. " tolerance);\n";
  67. std::cout <<
  68. " BOOST_CHECK_CLOSE(\n"
  69. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(0.75), " << i << "),\n"
  70. " static_cast<T>(" << r3 << "L),\n"
  71. " tolerance);\n";
  72. std::cout <<
  73. " BOOST_CHECK_CLOSE(\n"
  74. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f), " << i << "),\n"
  75. " static_cast<T>(" << r4 << "L),\n"
  76. " tolerance);\n";
  77. if(fabs(r5) < tools::max_value<float>())
  78. std::cout <<
  79. " BOOST_CHECK_CLOSE(\n"
  80. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(6.5), " << i << "),\n"
  81. " static_cast<T>(" << r5 << "L),\n"
  82. " tolerance);\n";
  83. if(fabs(r6) < tools::max_value<float>())
  84. std::cout <<
  85. " BOOST_CHECK_CLOSE(\n"
  86. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(10247.25), " << i << "),\n"
  87. " static_cast<T>(" << r6 << "L),\n"
  88. " tolerance);\n\n";
  89. std::cout <<
  90. " BOOST_CHECK_CLOSE(\n"
  91. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(0.125)),\n"
  92. " static_cast<T>(" << r1 << "L),\n"
  93. " tolerance);\n";
  94. std::cout <<
  95. " BOOST_CHECK_CLOSE(\n"
  96. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(0.25)),\n"
  97. " static_cast<T>(" << r2 << "L),\n"
  98. " tolerance);\n";
  99. std::cout <<
  100. " BOOST_CHECK_CLOSE(\n"
  101. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(0.75)),\n"
  102. " static_cast<T>(" << r3 << "L),\n"
  103. " tolerance);\n";
  104. std::cout <<
  105. " BOOST_CHECK_CLOSE(\n"
  106. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  107. " static_cast<T>(" << r4 << "L),\n"
  108. " tolerance);\n";
  109. if(fabs(r5) < tools::max_value<float>())
  110. std::cout <<
  111. " BOOST_CHECK_CLOSE(\n"
  112. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(6.5)),\n"
  113. " static_cast<T>(" << r5 << "L),\n"
  114. " tolerance);\n";
  115. if(fabs(r6) < tools::max_value<float>())
  116. std::cout <<
  117. " BOOST_CHECK_CLOSE(\n"
  118. " boost::math::tools::evaluate_polynomial(n" << i << "c, static_cast<T>(10247.25)),\n"
  119. " static_cast<T>(" << r6 << "L),\n"
  120. " tolerance);\n\n";
  121. std::cout <<
  122. " BOOST_CHECK_CLOSE(\n"
  123. " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast<T>(0.125)),\n"
  124. " static_cast<T>(" << r1 << "L),\n"
  125. " tolerance);\n";
  126. std::cout <<
  127. " BOOST_CHECK_CLOSE(\n"
  128. " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast<T>(0.25)),\n"
  129. " static_cast<T>(" << r2 << "L),\n"
  130. " tolerance);\n";
  131. std::cout <<
  132. " BOOST_CHECK_CLOSE(\n"
  133. " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast<T>(0.75)),\n"
  134. " static_cast<T>(" << r3 << "L),\n"
  135. " tolerance);\n";
  136. std::cout <<
  137. " BOOST_CHECK_CLOSE(\n"
  138. " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  139. " static_cast<T>(" << r4 << "L),\n"
  140. " tolerance);\n";
  141. if(fabs(r5) < tools::max_value<float>())
  142. std::cout <<
  143. " BOOST_CHECK_CLOSE(\n"
  144. " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast<T>(6.5)),\n"
  145. " static_cast<T>(" << r5 << "L),\n"
  146. " tolerance);\n";
  147. if(fabs(r6) < tools::max_value<float>())
  148. std::cout <<
  149. " BOOST_CHECK_CLOSE(\n"
  150. " boost::math::tools::evaluate_polynomial(n" << i << "a, static_cast<T>(10247.25)),\n"
  151. " static_cast<T>(" << r6 << "L),\n"
  152. " tolerance);\n\n";
  153. r1 = boost::math::tools::evaluate_even_polynomial(&coef[0], mp_t(0.125), i);
  154. r2 = boost::math::tools::evaluate_even_polynomial(&coef[0], mp_t(0.25), i);
  155. r3 = boost::math::tools::evaluate_even_polynomial(&coef[0], mp_t(0.75), i);
  156. r4 = boost::math::tools::evaluate_even_polynomial(&coef[0], mp_t(1) - mp_t(1) / 64, i);
  157. r5 = boost::math::tools::evaluate_even_polynomial(&coef[0], mp_t(6.5), i);
  158. r6 = boost::math::tools::evaluate_even_polynomial(&coef[0], mp_t(10247.25), i);
  159. std::cout <<
  160. " BOOST_CHECK_CLOSE(\n"
  161. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(0.125), " << i << "),\n"
  162. " static_cast<T>(" << r1 << "L),\n"
  163. " tolerance);\n";
  164. std::cout <<
  165. " BOOST_CHECK_CLOSE(\n"
  166. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(0.25), " << i << "),\n"
  167. " static_cast<T>(" << r2 << "L),\n"
  168. " tolerance);\n";
  169. std::cout <<
  170. " BOOST_CHECK_CLOSE(\n"
  171. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(0.75), " << i << "),\n"
  172. " static_cast<T>(" << r3 << "L),\n"
  173. " tolerance);\n";
  174. std::cout <<
  175. " BOOST_CHECK_CLOSE(\n"
  176. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f), " << i << "),\n"
  177. " static_cast<T>(" << r4 << "L),\n"
  178. " tolerance);\n";
  179. if(fabs(r5) < tools::max_value<float>())
  180. std::cout <<
  181. " BOOST_CHECK_CLOSE(\n"
  182. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(6.5f), " << i << "),\n"
  183. " static_cast<T>(" << r5 << "L),\n"
  184. " tolerance);\n";
  185. if(fabs(r6) < tools::max_value<float>())
  186. std::cout <<
  187. " BOOST_CHECK_CLOSE(\n"
  188. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(10247.25f), " << i << "),\n"
  189. " static_cast<T>(" << r6 << "L),\n"
  190. " tolerance);\n\n";
  191. std::cout <<
  192. " BOOST_CHECK_CLOSE(\n"
  193. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(0.125)),\n"
  194. " static_cast<T>(" << r1 << "L),\n"
  195. " tolerance);\n";
  196. std::cout <<
  197. " BOOST_CHECK_CLOSE(\n"
  198. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(0.25)),\n"
  199. " static_cast<T>(" << r2 << "L),\n"
  200. " tolerance);\n";
  201. std::cout <<
  202. " BOOST_CHECK_CLOSE(\n"
  203. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(0.75)),\n"
  204. " static_cast<T>(" << r3 << "L),\n"
  205. " tolerance);\n";
  206. std::cout <<
  207. " BOOST_CHECK_CLOSE(\n"
  208. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  209. " static_cast<T>(" << r4 << "L),\n"
  210. " tolerance);\n";
  211. if(fabs(r5) < tools::max_value<float>())
  212. std::cout <<
  213. " BOOST_CHECK_CLOSE(\n"
  214. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(6.5f)),\n"
  215. " static_cast<T>(" << r5 << "L),\n"
  216. " tolerance);\n";
  217. if(fabs(r6) < tools::max_value<float>())
  218. std::cout <<
  219. " BOOST_CHECK_CLOSE(\n"
  220. " boost::math::tools::evaluate_even_polynomial(n" << i << "c, static_cast<T>(10247.25f)),\n"
  221. " static_cast<T>(" << r6 << "L),\n"
  222. " tolerance);\n\n";
  223. std::cout <<
  224. " BOOST_CHECK_CLOSE(\n"
  225. " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast<T>(0.125)),\n"
  226. " static_cast<T>(" << r1 << "L),\n"
  227. " tolerance);\n";
  228. std::cout <<
  229. " BOOST_CHECK_CLOSE(\n"
  230. " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast<T>(0.25)),\n"
  231. " static_cast<T>(" << r2 << "L),\n"
  232. " tolerance);\n";
  233. std::cout <<
  234. " BOOST_CHECK_CLOSE(\n"
  235. " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast<T>(0.75)),\n"
  236. " static_cast<T>(" << r3 << "L),\n"
  237. " tolerance);\n";
  238. std::cout <<
  239. " BOOST_CHECK_CLOSE(\n"
  240. " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  241. " static_cast<T>(" << r4 << "L),\n"
  242. " tolerance);\n";
  243. if(fabs(r5) < tools::max_value<float>())
  244. std::cout <<
  245. " BOOST_CHECK_CLOSE(\n"
  246. " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast<T>(6.5f)),\n"
  247. " static_cast<T>(" << r5 << "L),\n"
  248. " tolerance);\n";
  249. if(fabs(r6) < tools::max_value<float>())
  250. std::cout <<
  251. " BOOST_CHECK_CLOSE(\n"
  252. " boost::math::tools::evaluate_even_polynomial(n" << i << "a, static_cast<T>(10247.25f)),\n"
  253. " static_cast<T>(" << r6 << "L),\n"
  254. " tolerance);\n\n";
  255. if(i > 1)
  256. {
  257. r1 = boost::math::tools::evaluate_odd_polynomial(&coef[0], mp_t(0.125), i);
  258. r2 = boost::math::tools::evaluate_odd_polynomial(&coef[0], mp_t(0.25), i);
  259. r3 = boost::math::tools::evaluate_odd_polynomial(&coef[0], mp_t(0.75), i);
  260. r4 = boost::math::tools::evaluate_odd_polynomial(&coef[0], mp_t(1) - mp_t(1) / 64, i);
  261. r5 = boost::math::tools::evaluate_odd_polynomial(&coef[0], mp_t(6.5), i);
  262. r6 = boost::math::tools::evaluate_odd_polynomial(&coef[0], mp_t(10247.25), i);
  263. std::cout <<
  264. " BOOST_CHECK_CLOSE(\n"
  265. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(0.125), " << i << "),\n"
  266. " static_cast<T>(" << r1 << "L),\n"
  267. " tolerance);\n";
  268. std::cout <<
  269. " BOOST_CHECK_CLOSE(\n"
  270. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(0.25), " << i << "),\n"
  271. " static_cast<T>(" << r2 << "L),\n"
  272. " tolerance);\n";
  273. std::cout <<
  274. " BOOST_CHECK_CLOSE(\n"
  275. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(0.75), " << i << "),\n"
  276. " static_cast<T>(" << r3 << "L),\n"
  277. " tolerance);\n";
  278. std::cout <<
  279. " BOOST_CHECK_CLOSE(\n"
  280. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f), " << i << "),\n"
  281. " static_cast<T>(" << r4 << "L),\n"
  282. " tolerance);\n";
  283. if(fabs(r5) < tools::max_value<float>())
  284. std::cout <<
  285. " BOOST_CHECK_CLOSE(\n"
  286. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(6.5f), " << i << "),\n"
  287. " static_cast<T>(" << r5 << "L),\n"
  288. " tolerance);\n";
  289. if(fabs(r6) < tools::max_value<float>())
  290. std::cout <<
  291. " BOOST_CHECK_CLOSE(\n"
  292. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(10247.25f), " << i << "),\n"
  293. " static_cast<T>(" << r6 << "L),\n"
  294. " tolerance);\n\n";
  295. std::cout <<
  296. " BOOST_CHECK_CLOSE(\n"
  297. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(0.125)),\n"
  298. " static_cast<T>(" << r1 << "L),\n"
  299. " tolerance);\n";
  300. std::cout <<
  301. " BOOST_CHECK_CLOSE(\n"
  302. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(0.25)),\n"
  303. " static_cast<T>(" << r2 << "L),\n"
  304. " tolerance);\n";
  305. std::cout <<
  306. " BOOST_CHECK_CLOSE(\n"
  307. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(0.75)),\n"
  308. " static_cast<T>(" << r3 << "L),\n"
  309. " tolerance);\n";
  310. std::cout <<
  311. " BOOST_CHECK_CLOSE(\n"
  312. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  313. " static_cast<T>(" << r4 << "L),\n"
  314. " tolerance);\n";
  315. if(fabs(r5) < tools::max_value<float>())
  316. std::cout <<
  317. " BOOST_CHECK_CLOSE(\n"
  318. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(6.5f)),\n"
  319. " static_cast<T>(" << r5 << "L),\n"
  320. " tolerance);\n";
  321. if(fabs(r6) < tools::max_value<float>())
  322. std::cout <<
  323. " BOOST_CHECK_CLOSE(\n"
  324. " boost::math::tools::evaluate_odd_polynomial(n" << i << "c, static_cast<T>(10247.25f)),\n"
  325. " static_cast<T>(" << r6 << "L),\n"
  326. " tolerance);\n\n";
  327. std::cout <<
  328. " BOOST_CHECK_CLOSE(\n"
  329. " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast<T>(0.125)),\n"
  330. " static_cast<T>(" << r1 << "L),\n"
  331. " tolerance);\n";
  332. std::cout <<
  333. " BOOST_CHECK_CLOSE(\n"
  334. " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast<T>(0.25)),\n"
  335. " static_cast<T>(" << r2 << "L),\n"
  336. " tolerance);\n";
  337. std::cout <<
  338. " BOOST_CHECK_CLOSE(\n"
  339. " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast<T>(0.75)),\n"
  340. " static_cast<T>(" << r3 << "L),\n"
  341. " tolerance);\n";
  342. std::cout <<
  343. " BOOST_CHECK_CLOSE(\n"
  344. " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  345. " static_cast<T>(" << r4 << "L),\n"
  346. " tolerance);\n";
  347. if(fabs(r5) < tools::max_value<float>())
  348. std::cout <<
  349. " BOOST_CHECK_CLOSE(\n"
  350. " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast<T>(6.5f)),\n"
  351. " static_cast<T>(" << r5 << "L),\n"
  352. " tolerance);\n";
  353. if(fabs(r6) < tools::max_value<float>())
  354. std::cout <<
  355. " BOOST_CHECK_CLOSE(\n"
  356. " boost::math::tools::evaluate_odd_polynomial(n" << i << "a, static_cast<T>(10247.25f)),\n"
  357. " static_cast<T>(" << r6 << "L),\n"
  358. " tolerance);\n\n";
  359. }
  360. r1 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.125), i);
  361. r2 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.25), i);
  362. r3 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.75), i);
  363. r4 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(1) - mp_t(1) / 64, i);
  364. r5 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(6.5), i);
  365. r6 = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(10247.25), i);
  366. coef.clear();
  367. for(unsigned j = 0; j < i; ++j)
  368. {
  369. coef.push_back(gen());
  370. }
  371. std::cout <<
  372. " //\n"
  373. " // Rational functions of order " << i-1 << "\n"
  374. " //\n"
  375. " static const U d" << i << "c[" << i << "] = { ";
  376. for(unsigned j = 0; j < i; ++j)
  377. {
  378. if(j)
  379. std::cout << ", ";
  380. std::cout << coef[j];
  381. }
  382. std::cout << " };\n";
  383. std::cout <<
  384. " static const boost::array<U, " << i << "> d" << i << "a = { ";
  385. for(unsigned j = 0; j < i; ++j)
  386. {
  387. if(j)
  388. std::cout << ", ";
  389. std::cout << coef[j];
  390. }
  391. std::cout << " };\n";
  392. mp_t r1d = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.125), i);
  393. mp_t r2d = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.25), i);
  394. mp_t r3d = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(0.75), i);
  395. mp_t r4d = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(1) - mp_t(1) / 64, i);
  396. mp_t r5d = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(6.5), i);
  397. mp_t r6d = boost::math::tools::evaluate_polynomial(&coef[0], mp_t(10247.25), i);
  398. std::cout <<
  399. " BOOST_CHECK_CLOSE(\n"
  400. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(0.125), " << i << "),\n"
  401. " static_cast<T>(" << r1/r1d << "L),\n"
  402. " tolerance);\n";
  403. std::cout <<
  404. " BOOST_CHECK_CLOSE(\n"
  405. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(0.25), " << i << "),\n"
  406. " static_cast<T>(" << r2/r2d << "L),\n"
  407. " tolerance);\n";
  408. std::cout <<
  409. " BOOST_CHECK_CLOSE(\n"
  410. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(0.75), " << i << "),\n"
  411. " static_cast<T>(" << r3/r3d << "L),\n"
  412. " tolerance);\n";
  413. std::cout <<
  414. " BOOST_CHECK_CLOSE(\n"
  415. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f), " << i << "),\n"
  416. " static_cast<T>(" << r4/r4d << "L),\n"
  417. " tolerance);\n";
  418. if(fabs(r5/r5d) < tools::max_value<float>())
  419. std::cout <<
  420. " BOOST_CHECK_CLOSE(\n"
  421. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(6.5f), " << i << "),\n"
  422. " static_cast<T>(" << r5/r5d << "L),\n"
  423. " tolerance);\n";
  424. if(fabs(r6/r6d) < tools::max_value<float>())
  425. std::cout <<
  426. " BOOST_CHECK_CLOSE(\n"
  427. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(10247.25f), " << i << "),\n"
  428. " static_cast<T>(" << r6/r6d << "L),\n"
  429. " tolerance);\n\n";
  430. std::cout <<
  431. " BOOST_CHECK_CLOSE(\n"
  432. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(0.125)),\n"
  433. " static_cast<T>(" << r1/r1d << "L),\n"
  434. " tolerance);\n";
  435. std::cout <<
  436. " BOOST_CHECK_CLOSE(\n"
  437. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(0.25)),\n"
  438. " static_cast<T>(" << r2/r2d << "L),\n"
  439. " tolerance);\n";
  440. std::cout <<
  441. " BOOST_CHECK_CLOSE(\n"
  442. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(0.75)),\n"
  443. " static_cast<T>(" << r3/r3d << "L),\n"
  444. " tolerance);\n";
  445. std::cout <<
  446. " BOOST_CHECK_CLOSE(\n"
  447. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  448. " static_cast<T>(" << r4/r4d << "L),\n"
  449. " tolerance);\n";
  450. if(fabs(r5/r5d) < tools::max_value<float>())
  451. std::cout <<
  452. " BOOST_CHECK_CLOSE(\n"
  453. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(6.5f)),\n"
  454. " static_cast<T>(" << r5/r5d << "L),\n"
  455. " tolerance);\n";
  456. if(fabs(r6/r6d) < tools::max_value<float>())
  457. std::cout <<
  458. " BOOST_CHECK_CLOSE(\n"
  459. " boost::math::tools::evaluate_rational(n" << i << "c, d" << i << "c, static_cast<T>(10247.25f)),\n"
  460. " static_cast<T>(" << r6/r6d << "L),\n"
  461. " tolerance);\n\n";
  462. std::cout <<
  463. " BOOST_CHECK_CLOSE(\n"
  464. " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast<T>(0.125)),\n"
  465. " static_cast<T>(" << r1/r1d << "L),\n"
  466. " tolerance);\n";
  467. std::cout <<
  468. " BOOST_CHECK_CLOSE(\n"
  469. " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast<T>(0.25)),\n"
  470. " static_cast<T>(" << r2/r2d << "L),\n"
  471. " tolerance);\n";
  472. std::cout <<
  473. " BOOST_CHECK_CLOSE(\n"
  474. " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast<T>(0.75)),\n"
  475. " static_cast<T>(" << r3/r3d << "L),\n"
  476. " tolerance);\n";
  477. std::cout <<
  478. " BOOST_CHECK_CLOSE(\n"
  479. " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast<T>(1.0f - 1.0f/64.0f)),\n"
  480. " static_cast<T>(" << r4/r4d << "L),\n"
  481. " tolerance);\n";
  482. if(fabs(r5/r5d) < tools::max_value<float>())
  483. std::cout <<
  484. " BOOST_CHECK_CLOSE(\n"
  485. " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast<T>(6.5f)),\n"
  486. " static_cast<T>(" << r5/r5d << "L),\n"
  487. " tolerance);\n";
  488. if(fabs(r6/r6d) < tools::max_value<float>())
  489. std::cout <<
  490. " BOOST_CHECK_CLOSE(\n"
  491. " boost::math::tools::evaluate_rational(n" << i << "a, d" << i << "a, static_cast<T>(10247.25f)),\n"
  492. " static_cast<T>(" << r6/r6d << "L),\n"
  493. " tolerance);\n\n";
  494. }
  495. return 0;
  496. }