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)
6 // This file is machine generated, do not edit by hand
8 // Polynomial evaluation using second order Horners rule
9 #ifndef BOOST_MATH_TOOLS_RAT_EVAL_18_HPP
10 #define BOOST_MATH_TOOLS_RAT_EVAL_18_HPP
12 namespace boost{ namespace math{ namespace tools{ namespace detail{
14 template <class T, class U, class V>
15 inline V evaluate_rational_c_imp(const T*, const U*, const V&, const std::integral_constant<int, 0>*) BOOST_MATH_NOEXCEPT(V)
17 return static_cast<V>(0);
20 template <class T, class U, class V>
21 inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const std::integral_constant<int, 1>*) BOOST_MATH_NOEXCEPT(V)
23 return static_cast<V>(a[0]) / static_cast<V>(b[0]);
26 template <class T, class U, class V>
27 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 2>*) BOOST_MATH_NOEXCEPT(V)
29 return static_cast<V>((a[1] * x + a[0]) / (b[1] * x + b[0]));
32 template <class T, class U, class V>
33 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 3>*) BOOST_MATH_NOEXCEPT(V)
35 return static_cast<V>(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));
38 template <class T, class U, class V>
39 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 4>*) BOOST_MATH_NOEXCEPT(V)
41 return static_cast<V>((((a[3] * x + a[2]) * x + a[1]) * x + a[0]) / (((b[3] * x + b[2]) * x + b[1]) * x + b[0]));
44 template <class T, class U, class V>
45 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 5>*) BOOST_MATH_NOEXCEPT(V)
51 t[0] = a[4] * x2 + a[2];
52 t[1] = a[3] * x2 + a[1];
53 t[2] = b[4] * x2 + b[2];
54 t[3] = b[3] * x2 + b[1];
57 t[0] += static_cast<V>(a[0]);
58 t[2] += static_cast<V>(b[0]);
61 return (t[0] + t[1]) / (t[2] + t[3]);
68 t[0] = a[0] * z2 + a[2];
69 t[1] = a[1] * z2 + a[3];
70 t[2] = b[0] * z2 + b[2];
71 t[3] = b[1] * z2 + b[3];
74 t[0] += static_cast<V>(a[4]);
75 t[2] += static_cast<V>(b[4]);
78 return (t[0] + t[1]) / (t[2] + t[3]);
82 template <class T, class U, class V>
83 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 6>*) BOOST_MATH_NOEXCEPT(V)
89 t[0] = a[5] * x2 + a[3];
90 t[1] = a[4] * x2 + a[2];
91 t[2] = b[5] * x2 + b[3];
92 t[3] = b[4] * x2 + b[2];
97 t[0] += static_cast<V>(a[1]);
98 t[1] += static_cast<V>(a[0]);
99 t[2] += static_cast<V>(b[1]);
100 t[3] += static_cast<V>(b[0]);
103 return (t[0] + t[1]) / (t[2] + t[3]);
110 t[0] = a[0] * z2 + a[2];
111 t[1] = a[1] * z2 + a[3];
112 t[2] = b[0] * z2 + b[2];
113 t[3] = b[1] * z2 + b[3];
118 t[0] += static_cast<V>(a[4]);
119 t[1] += static_cast<V>(a[5]);
120 t[2] += static_cast<V>(b[4]);
121 t[3] += static_cast<V>(b[5]);
124 return (t[0] + t[1]) / (t[2] + t[3]);
128 template <class T, class U, class V>
129 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 7>*) BOOST_MATH_NOEXCEPT(V)
135 t[0] = a[6] * x2 + a[4];
136 t[1] = a[5] * x2 + a[3];
137 t[2] = b[6] * x2 + b[4];
138 t[3] = b[5] * x2 + b[3];
143 t[0] += static_cast<V>(a[2]);
144 t[1] += static_cast<V>(a[1]);
145 t[2] += static_cast<V>(b[2]);
146 t[3] += static_cast<V>(b[1]);
149 t[0] += static_cast<V>(a[0]);
150 t[2] += static_cast<V>(b[0]);
153 return (t[0] + t[1]) / (t[2] + t[3]);
160 t[0] = a[0] * z2 + a[2];
161 t[1] = a[1] * z2 + a[3];
162 t[2] = b[0] * z2 + b[2];
163 t[3] = b[1] * z2 + b[3];
168 t[0] += static_cast<V>(a[4]);
169 t[1] += static_cast<V>(a[5]);
170 t[2] += static_cast<V>(b[4]);
171 t[3] += static_cast<V>(b[5]);
174 t[0] += static_cast<V>(a[6]);
175 t[2] += static_cast<V>(b[6]);
178 return (t[0] + t[1]) / (t[2] + t[3]);
182 template <class T, class U, class V>
183 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 8>*) BOOST_MATH_NOEXCEPT(V)
189 t[0] = a[7] * x2 + a[5];
190 t[1] = a[6] * x2 + a[4];
191 t[2] = b[7] * x2 + b[5];
192 t[3] = b[6] * x2 + b[4];
197 t[0] += static_cast<V>(a[3]);
198 t[1] += static_cast<V>(a[2]);
199 t[2] += static_cast<V>(b[3]);
200 t[3] += static_cast<V>(b[2]);
205 t[0] += static_cast<V>(a[1]);
206 t[1] += static_cast<V>(a[0]);
207 t[2] += static_cast<V>(b[1]);
208 t[3] += static_cast<V>(b[0]);
211 return (t[0] + t[1]) / (t[2] + t[3]);
218 t[0] = a[0] * z2 + a[2];
219 t[1] = a[1] * z2 + a[3];
220 t[2] = b[0] * z2 + b[2];
221 t[3] = b[1] * z2 + b[3];
226 t[0] += static_cast<V>(a[4]);
227 t[1] += static_cast<V>(a[5]);
228 t[2] += static_cast<V>(b[4]);
229 t[3] += static_cast<V>(b[5]);
234 t[0] += static_cast<V>(a[6]);
235 t[1] += static_cast<V>(a[7]);
236 t[2] += static_cast<V>(b[6]);
237 t[3] += static_cast<V>(b[7]);
240 return (t[0] + t[1]) / (t[2] + t[3]);
244 template <class T, class U, class V>
245 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 9>*) BOOST_MATH_NOEXCEPT(V)
251 t[0] = a[8] * x2 + a[6];
252 t[1] = a[7] * x2 + a[5];
253 t[2] = b[8] * x2 + b[6];
254 t[3] = b[7] * x2 + b[5];
259 t[0] += static_cast<V>(a[4]);
260 t[1] += static_cast<V>(a[3]);
261 t[2] += static_cast<V>(b[4]);
262 t[3] += static_cast<V>(b[3]);
267 t[0] += static_cast<V>(a[2]);
268 t[1] += static_cast<V>(a[1]);
269 t[2] += static_cast<V>(b[2]);
270 t[3] += static_cast<V>(b[1]);
273 t[0] += static_cast<V>(a[0]);
274 t[2] += static_cast<V>(b[0]);
277 return (t[0] + t[1]) / (t[2] + t[3]);
284 t[0] = a[0] * z2 + a[2];
285 t[1] = a[1] * z2 + a[3];
286 t[2] = b[0] * z2 + b[2];
287 t[3] = b[1] * z2 + b[3];
292 t[0] += static_cast<V>(a[4]);
293 t[1] += static_cast<V>(a[5]);
294 t[2] += static_cast<V>(b[4]);
295 t[3] += static_cast<V>(b[5]);
300 t[0] += static_cast<V>(a[6]);
301 t[1] += static_cast<V>(a[7]);
302 t[2] += static_cast<V>(b[6]);
303 t[3] += static_cast<V>(b[7]);
306 t[0] += static_cast<V>(a[8]);
307 t[2] += static_cast<V>(b[8]);
310 return (t[0] + t[1]) / (t[2] + t[3]);
314 template <class T, class U, class V>
315 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 10>*) BOOST_MATH_NOEXCEPT(V)
321 t[0] = a[9] * x2 + a[7];
322 t[1] = a[8] * x2 + a[6];
323 t[2] = b[9] * x2 + b[7];
324 t[3] = b[8] * x2 + b[6];
329 t[0] += static_cast<V>(a[5]);
330 t[1] += static_cast<V>(a[4]);
331 t[2] += static_cast<V>(b[5]);
332 t[3] += static_cast<V>(b[4]);
337 t[0] += static_cast<V>(a[3]);
338 t[1] += static_cast<V>(a[2]);
339 t[2] += static_cast<V>(b[3]);
340 t[3] += static_cast<V>(b[2]);
345 t[0] += static_cast<V>(a[1]);
346 t[1] += static_cast<V>(a[0]);
347 t[2] += static_cast<V>(b[1]);
348 t[3] += static_cast<V>(b[0]);
351 return (t[0] + t[1]) / (t[2] + t[3]);
358 t[0] = a[0] * z2 + a[2];
359 t[1] = a[1] * z2 + a[3];
360 t[2] = b[0] * z2 + b[2];
361 t[3] = b[1] * z2 + b[3];
366 t[0] += static_cast<V>(a[4]);
367 t[1] += static_cast<V>(a[5]);
368 t[2] += static_cast<V>(b[4]);
369 t[3] += static_cast<V>(b[5]);
374 t[0] += static_cast<V>(a[6]);
375 t[1] += static_cast<V>(a[7]);
376 t[2] += static_cast<V>(b[6]);
377 t[3] += static_cast<V>(b[7]);
382 t[0] += static_cast<V>(a[8]);
383 t[1] += static_cast<V>(a[9]);
384 t[2] += static_cast<V>(b[8]);
385 t[3] += static_cast<V>(b[9]);
388 return (t[0] + t[1]) / (t[2] + t[3]);
392 template <class T, class U, class V>
393 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 11>*) BOOST_MATH_NOEXCEPT(V)
399 t[0] = a[10] * x2 + a[8];
400 t[1] = a[9] * x2 + a[7];
401 t[2] = b[10] * x2 + b[8];
402 t[3] = b[9] * x2 + b[7];
407 t[0] += static_cast<V>(a[6]);
408 t[1] += static_cast<V>(a[5]);
409 t[2] += static_cast<V>(b[6]);
410 t[3] += static_cast<V>(b[5]);
415 t[0] += static_cast<V>(a[4]);
416 t[1] += static_cast<V>(a[3]);
417 t[2] += static_cast<V>(b[4]);
418 t[3] += static_cast<V>(b[3]);
423 t[0] += static_cast<V>(a[2]);
424 t[1] += static_cast<V>(a[1]);
425 t[2] += static_cast<V>(b[2]);
426 t[3] += static_cast<V>(b[1]);
429 t[0] += static_cast<V>(a[0]);
430 t[2] += static_cast<V>(b[0]);
433 return (t[0] + t[1]) / (t[2] + t[3]);
440 t[0] = a[0] * z2 + a[2];
441 t[1] = a[1] * z2 + a[3];
442 t[2] = b[0] * z2 + b[2];
443 t[3] = b[1] * z2 + b[3];
448 t[0] += static_cast<V>(a[4]);
449 t[1] += static_cast<V>(a[5]);
450 t[2] += static_cast<V>(b[4]);
451 t[3] += static_cast<V>(b[5]);
456 t[0] += static_cast<V>(a[6]);
457 t[1] += static_cast<V>(a[7]);
458 t[2] += static_cast<V>(b[6]);
459 t[3] += static_cast<V>(b[7]);
464 t[0] += static_cast<V>(a[8]);
465 t[1] += static_cast<V>(a[9]);
466 t[2] += static_cast<V>(b[8]);
467 t[3] += static_cast<V>(b[9]);
470 t[0] += static_cast<V>(a[10]);
471 t[2] += static_cast<V>(b[10]);
474 return (t[0] + t[1]) / (t[2] + t[3]);
478 template <class T, class U, class V>
479 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 12>*) BOOST_MATH_NOEXCEPT(V)
485 t[0] = a[11] * x2 + a[9];
486 t[1] = a[10] * x2 + a[8];
487 t[2] = b[11] * x2 + b[9];
488 t[3] = b[10] * x2 + b[8];
493 t[0] += static_cast<V>(a[7]);
494 t[1] += static_cast<V>(a[6]);
495 t[2] += static_cast<V>(b[7]);
496 t[3] += static_cast<V>(b[6]);
501 t[0] += static_cast<V>(a[5]);
502 t[1] += static_cast<V>(a[4]);
503 t[2] += static_cast<V>(b[5]);
504 t[3] += static_cast<V>(b[4]);
509 t[0] += static_cast<V>(a[3]);
510 t[1] += static_cast<V>(a[2]);
511 t[2] += static_cast<V>(b[3]);
512 t[3] += static_cast<V>(b[2]);
517 t[0] += static_cast<V>(a[1]);
518 t[1] += static_cast<V>(a[0]);
519 t[2] += static_cast<V>(b[1]);
520 t[3] += static_cast<V>(b[0]);
523 return (t[0] + t[1]) / (t[2] + t[3]);
530 t[0] = a[0] * z2 + a[2];
531 t[1] = a[1] * z2 + a[3];
532 t[2] = b[0] * z2 + b[2];
533 t[3] = b[1] * z2 + b[3];
538 t[0] += static_cast<V>(a[4]);
539 t[1] += static_cast<V>(a[5]);
540 t[2] += static_cast<V>(b[4]);
541 t[3] += static_cast<V>(b[5]);
546 t[0] += static_cast<V>(a[6]);
547 t[1] += static_cast<V>(a[7]);
548 t[2] += static_cast<V>(b[6]);
549 t[3] += static_cast<V>(b[7]);
554 t[0] += static_cast<V>(a[8]);
555 t[1] += static_cast<V>(a[9]);
556 t[2] += static_cast<V>(b[8]);
557 t[3] += static_cast<V>(b[9]);
562 t[0] += static_cast<V>(a[10]);
563 t[1] += static_cast<V>(a[11]);
564 t[2] += static_cast<V>(b[10]);
565 t[3] += static_cast<V>(b[11]);
568 return (t[0] + t[1]) / (t[2] + t[3]);
572 template <class T, class U, class V>
573 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 13>*) BOOST_MATH_NOEXCEPT(V)
579 t[0] = a[12] * x2 + a[10];
580 t[1] = a[11] * x2 + a[9];
581 t[2] = b[12] * x2 + b[10];
582 t[3] = b[11] * x2 + b[9];
587 t[0] += static_cast<V>(a[8]);
588 t[1] += static_cast<V>(a[7]);
589 t[2] += static_cast<V>(b[8]);
590 t[3] += static_cast<V>(b[7]);
595 t[0] += static_cast<V>(a[6]);
596 t[1] += static_cast<V>(a[5]);
597 t[2] += static_cast<V>(b[6]);
598 t[3] += static_cast<V>(b[5]);
603 t[0] += static_cast<V>(a[4]);
604 t[1] += static_cast<V>(a[3]);
605 t[2] += static_cast<V>(b[4]);
606 t[3] += static_cast<V>(b[3]);
611 t[0] += static_cast<V>(a[2]);
612 t[1] += static_cast<V>(a[1]);
613 t[2] += static_cast<V>(b[2]);
614 t[3] += static_cast<V>(b[1]);
617 t[0] += static_cast<V>(a[0]);
618 t[2] += static_cast<V>(b[0]);
621 return (t[0] + t[1]) / (t[2] + t[3]);
628 t[0] = a[0] * z2 + a[2];
629 t[1] = a[1] * z2 + a[3];
630 t[2] = b[0] * z2 + b[2];
631 t[3] = b[1] * z2 + b[3];
636 t[0] += static_cast<V>(a[4]);
637 t[1] += static_cast<V>(a[5]);
638 t[2] += static_cast<V>(b[4]);
639 t[3] += static_cast<V>(b[5]);
644 t[0] += static_cast<V>(a[6]);
645 t[1] += static_cast<V>(a[7]);
646 t[2] += static_cast<V>(b[6]);
647 t[3] += static_cast<V>(b[7]);
652 t[0] += static_cast<V>(a[8]);
653 t[1] += static_cast<V>(a[9]);
654 t[2] += static_cast<V>(b[8]);
655 t[3] += static_cast<V>(b[9]);
660 t[0] += static_cast<V>(a[10]);
661 t[1] += static_cast<V>(a[11]);
662 t[2] += static_cast<V>(b[10]);
663 t[3] += static_cast<V>(b[11]);
666 t[0] += static_cast<V>(a[12]);
667 t[2] += static_cast<V>(b[12]);
670 return (t[0] + t[1]) / (t[2] + t[3]);
674 template <class T, class U, class V>
675 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 14>*) BOOST_MATH_NOEXCEPT(V)
681 t[0] = a[13] * x2 + a[11];
682 t[1] = a[12] * x2 + a[10];
683 t[2] = b[13] * x2 + b[11];
684 t[3] = b[12] * x2 + b[10];
689 t[0] += static_cast<V>(a[9]);
690 t[1] += static_cast<V>(a[8]);
691 t[2] += static_cast<V>(b[9]);
692 t[3] += static_cast<V>(b[8]);
697 t[0] += static_cast<V>(a[7]);
698 t[1] += static_cast<V>(a[6]);
699 t[2] += static_cast<V>(b[7]);
700 t[3] += static_cast<V>(b[6]);
705 t[0] += static_cast<V>(a[5]);
706 t[1] += static_cast<V>(a[4]);
707 t[2] += static_cast<V>(b[5]);
708 t[3] += static_cast<V>(b[4]);
713 t[0] += static_cast<V>(a[3]);
714 t[1] += static_cast<V>(a[2]);
715 t[2] += static_cast<V>(b[3]);
716 t[3] += static_cast<V>(b[2]);
721 t[0] += static_cast<V>(a[1]);
722 t[1] += static_cast<V>(a[0]);
723 t[2] += static_cast<V>(b[1]);
724 t[3] += static_cast<V>(b[0]);
727 return (t[0] + t[1]) / (t[2] + t[3]);
734 t[0] = a[0] * z2 + a[2];
735 t[1] = a[1] * z2 + a[3];
736 t[2] = b[0] * z2 + b[2];
737 t[3] = b[1] * z2 + b[3];
742 t[0] += static_cast<V>(a[4]);
743 t[1] += static_cast<V>(a[5]);
744 t[2] += static_cast<V>(b[4]);
745 t[3] += static_cast<V>(b[5]);
750 t[0] += static_cast<V>(a[6]);
751 t[1] += static_cast<V>(a[7]);
752 t[2] += static_cast<V>(b[6]);
753 t[3] += static_cast<V>(b[7]);
758 t[0] += static_cast<V>(a[8]);
759 t[1] += static_cast<V>(a[9]);
760 t[2] += static_cast<V>(b[8]);
761 t[3] += static_cast<V>(b[9]);
766 t[0] += static_cast<V>(a[10]);
767 t[1] += static_cast<V>(a[11]);
768 t[2] += static_cast<V>(b[10]);
769 t[3] += static_cast<V>(b[11]);
774 t[0] += static_cast<V>(a[12]);
775 t[1] += static_cast<V>(a[13]);
776 t[2] += static_cast<V>(b[12]);
777 t[3] += static_cast<V>(b[13]);
780 return (t[0] + t[1]) / (t[2] + t[3]);
784 template <class T, class U, class V>
785 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 15>*) BOOST_MATH_NOEXCEPT(V)
791 t[0] = a[14] * x2 + a[12];
792 t[1] = a[13] * x2 + a[11];
793 t[2] = b[14] * x2 + b[12];
794 t[3] = b[13] * x2 + b[11];
799 t[0] += static_cast<V>(a[10]);
800 t[1] += static_cast<V>(a[9]);
801 t[2] += static_cast<V>(b[10]);
802 t[3] += static_cast<V>(b[9]);
807 t[0] += static_cast<V>(a[8]);
808 t[1] += static_cast<V>(a[7]);
809 t[2] += static_cast<V>(b[8]);
810 t[3] += static_cast<V>(b[7]);
815 t[0] += static_cast<V>(a[6]);
816 t[1] += static_cast<V>(a[5]);
817 t[2] += static_cast<V>(b[6]);
818 t[3] += static_cast<V>(b[5]);
823 t[0] += static_cast<V>(a[4]);
824 t[1] += static_cast<V>(a[3]);
825 t[2] += static_cast<V>(b[4]);
826 t[3] += static_cast<V>(b[3]);
831 t[0] += static_cast<V>(a[2]);
832 t[1] += static_cast<V>(a[1]);
833 t[2] += static_cast<V>(b[2]);
834 t[3] += static_cast<V>(b[1]);
837 t[0] += static_cast<V>(a[0]);
838 t[2] += static_cast<V>(b[0]);
841 return (t[0] + t[1]) / (t[2] + t[3]);
848 t[0] = a[0] * z2 + a[2];
849 t[1] = a[1] * z2 + a[3];
850 t[2] = b[0] * z2 + b[2];
851 t[3] = b[1] * z2 + b[3];
856 t[0] += static_cast<V>(a[4]);
857 t[1] += static_cast<V>(a[5]);
858 t[2] += static_cast<V>(b[4]);
859 t[3] += static_cast<V>(b[5]);
864 t[0] += static_cast<V>(a[6]);
865 t[1] += static_cast<V>(a[7]);
866 t[2] += static_cast<V>(b[6]);
867 t[3] += static_cast<V>(b[7]);
872 t[0] += static_cast<V>(a[8]);
873 t[1] += static_cast<V>(a[9]);
874 t[2] += static_cast<V>(b[8]);
875 t[3] += static_cast<V>(b[9]);
880 t[0] += static_cast<V>(a[10]);
881 t[1] += static_cast<V>(a[11]);
882 t[2] += static_cast<V>(b[10]);
883 t[3] += static_cast<V>(b[11]);
888 t[0] += static_cast<V>(a[12]);
889 t[1] += static_cast<V>(a[13]);
890 t[2] += static_cast<V>(b[12]);
891 t[3] += static_cast<V>(b[13]);
894 t[0] += static_cast<V>(a[14]);
895 t[2] += static_cast<V>(b[14]);
898 return (t[0] + t[1]) / (t[2] + t[3]);
902 template <class T, class U, class V>
903 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 16>*) BOOST_MATH_NOEXCEPT(V)
909 t[0] = a[15] * x2 + a[13];
910 t[1] = a[14] * x2 + a[12];
911 t[2] = b[15] * x2 + b[13];
912 t[3] = b[14] * x2 + b[12];
917 t[0] += static_cast<V>(a[11]);
918 t[1] += static_cast<V>(a[10]);
919 t[2] += static_cast<V>(b[11]);
920 t[3] += static_cast<V>(b[10]);
925 t[0] += static_cast<V>(a[9]);
926 t[1] += static_cast<V>(a[8]);
927 t[2] += static_cast<V>(b[9]);
928 t[3] += static_cast<V>(b[8]);
933 t[0] += static_cast<V>(a[7]);
934 t[1] += static_cast<V>(a[6]);
935 t[2] += static_cast<V>(b[7]);
936 t[3] += static_cast<V>(b[6]);
941 t[0] += static_cast<V>(a[5]);
942 t[1] += static_cast<V>(a[4]);
943 t[2] += static_cast<V>(b[5]);
944 t[3] += static_cast<V>(b[4]);
949 t[0] += static_cast<V>(a[3]);
950 t[1] += static_cast<V>(a[2]);
951 t[2] += static_cast<V>(b[3]);
952 t[3] += static_cast<V>(b[2]);
957 t[0] += static_cast<V>(a[1]);
958 t[1] += static_cast<V>(a[0]);
959 t[2] += static_cast<V>(b[1]);
960 t[3] += static_cast<V>(b[0]);
963 return (t[0] + t[1]) / (t[2] + t[3]);
970 t[0] = a[0] * z2 + a[2];
971 t[1] = a[1] * z2 + a[3];
972 t[2] = b[0] * z2 + b[2];
973 t[3] = b[1] * z2 + b[3];
978 t[0] += static_cast<V>(a[4]);
979 t[1] += static_cast<V>(a[5]);
980 t[2] += static_cast<V>(b[4]);
981 t[3] += static_cast<V>(b[5]);
986 t[0] += static_cast<V>(a[6]);
987 t[1] += static_cast<V>(a[7]);
988 t[2] += static_cast<V>(b[6]);
989 t[3] += static_cast<V>(b[7]);
994 t[0] += static_cast<V>(a[8]);
995 t[1] += static_cast<V>(a[9]);
996 t[2] += static_cast<V>(b[8]);
997 t[3] += static_cast<V>(b[9]);
1002 t[0] += static_cast<V>(a[10]);
1003 t[1] += static_cast<V>(a[11]);
1004 t[2] += static_cast<V>(b[10]);
1005 t[3] += static_cast<V>(b[11]);
1010 t[0] += static_cast<V>(a[12]);
1011 t[1] += static_cast<V>(a[13]);
1012 t[2] += static_cast<V>(b[12]);
1013 t[3] += static_cast<V>(b[13]);
1018 t[0] += static_cast<V>(a[14]);
1019 t[1] += static_cast<V>(a[15]);
1020 t[2] += static_cast<V>(b[14]);
1021 t[3] += static_cast<V>(b[15]);
1024 return (t[0] + t[1]) / (t[2] + t[3]);
1028 template <class T, class U, class V>
1029 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 17>*) BOOST_MATH_NOEXCEPT(V)
1035 t[0] = a[16] * x2 + a[14];
1036 t[1] = a[15] * x2 + a[13];
1037 t[2] = b[16] * x2 + b[14];
1038 t[3] = b[15] * x2 + b[13];
1043 t[0] += static_cast<V>(a[12]);
1044 t[1] += static_cast<V>(a[11]);
1045 t[2] += static_cast<V>(b[12]);
1046 t[3] += static_cast<V>(b[11]);
1051 t[0] += static_cast<V>(a[10]);
1052 t[1] += static_cast<V>(a[9]);
1053 t[2] += static_cast<V>(b[10]);
1054 t[3] += static_cast<V>(b[9]);
1059 t[0] += static_cast<V>(a[8]);
1060 t[1] += static_cast<V>(a[7]);
1061 t[2] += static_cast<V>(b[8]);
1062 t[3] += static_cast<V>(b[7]);
1067 t[0] += static_cast<V>(a[6]);
1068 t[1] += static_cast<V>(a[5]);
1069 t[2] += static_cast<V>(b[6]);
1070 t[3] += static_cast<V>(b[5]);
1075 t[0] += static_cast<V>(a[4]);
1076 t[1] += static_cast<V>(a[3]);
1077 t[2] += static_cast<V>(b[4]);
1078 t[3] += static_cast<V>(b[3]);
1083 t[0] += static_cast<V>(a[2]);
1084 t[1] += static_cast<V>(a[1]);
1085 t[2] += static_cast<V>(b[2]);
1086 t[3] += static_cast<V>(b[1]);
1089 t[0] += static_cast<V>(a[0]);
1090 t[2] += static_cast<V>(b[0]);
1093 return (t[0] + t[1]) / (t[2] + t[3]);
1100 t[0] = a[0] * z2 + a[2];
1101 t[1] = a[1] * z2 + a[3];
1102 t[2] = b[0] * z2 + b[2];
1103 t[3] = b[1] * z2 + b[3];
1108 t[0] += static_cast<V>(a[4]);
1109 t[1] += static_cast<V>(a[5]);
1110 t[2] += static_cast<V>(b[4]);
1111 t[3] += static_cast<V>(b[5]);
1116 t[0] += static_cast<V>(a[6]);
1117 t[1] += static_cast<V>(a[7]);
1118 t[2] += static_cast<V>(b[6]);
1119 t[3] += static_cast<V>(b[7]);
1124 t[0] += static_cast<V>(a[8]);
1125 t[1] += static_cast<V>(a[9]);
1126 t[2] += static_cast<V>(b[8]);
1127 t[3] += static_cast<V>(b[9]);
1132 t[0] += static_cast<V>(a[10]);
1133 t[1] += static_cast<V>(a[11]);
1134 t[2] += static_cast<V>(b[10]);
1135 t[3] += static_cast<V>(b[11]);
1140 t[0] += static_cast<V>(a[12]);
1141 t[1] += static_cast<V>(a[13]);
1142 t[2] += static_cast<V>(b[12]);
1143 t[3] += static_cast<V>(b[13]);
1148 t[0] += static_cast<V>(a[14]);
1149 t[1] += static_cast<V>(a[15]);
1150 t[2] += static_cast<V>(b[14]);
1151 t[3] += static_cast<V>(b[15]);
1154 t[0] += static_cast<V>(a[16]);
1155 t[2] += static_cast<V>(b[16]);
1158 return (t[0] + t[1]) / (t[2] + t[3]);
1162 template <class T, class U, class V>
1163 inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const std::integral_constant<int, 18>*) BOOST_MATH_NOEXCEPT(V)
1169 t[0] = a[17] * x2 + a[15];
1170 t[1] = a[16] * x2 + a[14];
1171 t[2] = b[17] * x2 + b[15];
1172 t[3] = b[16] * x2 + b[14];
1177 t[0] += static_cast<V>(a[13]);
1178 t[1] += static_cast<V>(a[12]);
1179 t[2] += static_cast<V>(b[13]);
1180 t[3] += static_cast<V>(b[12]);
1185 t[0] += static_cast<V>(a[11]);
1186 t[1] += static_cast<V>(a[10]);
1187 t[2] += static_cast<V>(b[11]);
1188 t[3] += static_cast<V>(b[10]);
1193 t[0] += static_cast<V>(a[9]);
1194 t[1] += static_cast<V>(a[8]);
1195 t[2] += static_cast<V>(b[9]);
1196 t[3] += static_cast<V>(b[8]);
1201 t[0] += static_cast<V>(a[7]);
1202 t[1] += static_cast<V>(a[6]);
1203 t[2] += static_cast<V>(b[7]);
1204 t[3] += static_cast<V>(b[6]);
1209 t[0] += static_cast<V>(a[5]);
1210 t[1] += static_cast<V>(a[4]);
1211 t[2] += static_cast<V>(b[5]);
1212 t[3] += static_cast<V>(b[4]);
1217 t[0] += static_cast<V>(a[3]);
1218 t[1] += static_cast<V>(a[2]);
1219 t[2] += static_cast<V>(b[3]);
1220 t[3] += static_cast<V>(b[2]);
1225 t[0] += static_cast<V>(a[1]);
1226 t[1] += static_cast<V>(a[0]);
1227 t[2] += static_cast<V>(b[1]);
1228 t[3] += static_cast<V>(b[0]);
1231 return (t[0] + t[1]) / (t[2] + t[3]);
1238 t[0] = a[0] * z2 + a[2];
1239 t[1] = a[1] * z2 + a[3];
1240 t[2] = b[0] * z2 + b[2];
1241 t[3] = b[1] * z2 + b[3];
1246 t[0] += static_cast<V>(a[4]);
1247 t[1] += static_cast<V>(a[5]);
1248 t[2] += static_cast<V>(b[4]);
1249 t[3] += static_cast<V>(b[5]);
1254 t[0] += static_cast<V>(a[6]);
1255 t[1] += static_cast<V>(a[7]);
1256 t[2] += static_cast<V>(b[6]);
1257 t[3] += static_cast<V>(b[7]);
1262 t[0] += static_cast<V>(a[8]);
1263 t[1] += static_cast<V>(a[9]);
1264 t[2] += static_cast<V>(b[8]);
1265 t[3] += static_cast<V>(b[9]);
1270 t[0] += static_cast<V>(a[10]);
1271 t[1] += static_cast<V>(a[11]);
1272 t[2] += static_cast<V>(b[10]);
1273 t[3] += static_cast<V>(b[11]);
1278 t[0] += static_cast<V>(a[12]);
1279 t[1] += static_cast<V>(a[13]);
1280 t[2] += static_cast<V>(b[12]);
1281 t[3] += static_cast<V>(b[13]);
1286 t[0] += static_cast<V>(a[14]);
1287 t[1] += static_cast<V>(a[15]);
1288 t[2] += static_cast<V>(b[14]);
1289 t[3] += static_cast<V>(b[15]);
1294 t[0] += static_cast<V>(a[16]);
1295 t[1] += static_cast<V>(a[17]);
1296 t[2] += static_cast<V>(b[16]);
1297 t[3] += static_cast<V>(b[17]);
1300 return (t[0] + t[1]) / (t[2] + t[3]);
1307 #endif // include guard