~tsarev/boostdc/cmake

« back to all changes in this revision

Viewing changes to boost/boost/math/tools/detail/rational_horner2_8.hpp

  • Committer: bigmuscle
  • Date: 2010-05-08 08:47:15 UTC
  • Revision ID: svn-v4:5fb55d53-692c-0410-a46a-e90ab66e00ee:trunk:497
removed old boost version

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
//
6
 
//  This file is machine generated, do not edit by hand
7
 
 
8
 
// Polynomial evaluation using second order Horners rule
9
 
#ifndef BOOST_MATH_TOOLS_RAT_EVAL_8_HPP
10
 
#define BOOST_MATH_TOOLS_RAT_EVAL_8_HPP
11
 
 
12
 
namespace boost{ namespace math{ namespace tools{ namespace detail{
13
 
 
14
 
template <class T, class U, class V>
15
 
inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<0>*)
16
 
{
17
 
   return static_cast<V>(0);
18
 
}
19
 
 
20
 
template <class T, class U, class V>
21
 
inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<1>*)
22
 
{
23
 
   return static_cast<V>(a[0]) / static_cast<V>(b[0]);
24
 
}
25
 
 
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 mpl::int_<2>*)
28
 
{
29
 
   return static_cast<V>((a[1] * x + a[0]) / (b[1] * x + b[0]));
30
 
}
31
 
 
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 mpl::int_<3>*)
34
 
{
35
 
   return static_cast<V>(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));
36
 
}
37
 
 
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 mpl::int_<4>*)
40
 
{
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]));
42
 
}
43
 
 
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 mpl::int_<5>*)
46
 
{
47
 
   if(x <= 1)
48
 
   {
49
 
      V x2 = x * x;
50
 
      return static_cast<V>(((a[4] * x2 + a[2]) * x2 + a[0] + (a[3] * x2 + a[1]) * x) / ((b[4] * x2 + b[2]) * x2 + b[0] + (b[3] * x2 + b[1]) * x));
51
 
   }
52
 
   else
53
 
   {
54
 
      V z = 1 / x;
55
 
      V z2 = 1 / (x * x);
56
 
      return static_cast<V>(((a[0] * z2 + a[2]) * z2 + a[4] + (a[1] * z2 + a[3]) * z) / ((b[0] * z2 + b[2]) * z2 + b[4] + (b[1] * z2 + b[3]) * z));
57
 
   }
58
 
}
59
 
 
60
 
template <class T, class U, class V>
61
 
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<6>*)
62
 
{
63
 
   if(x <= 1)
64
 
   {
65
 
      V x2 = x * x;
66
 
      return static_cast<V>((((a[5] * x2 + a[3]) * x2 + a[1]) * x + (a[4] * x2 + a[2]) * x2 + a[0]) / (((b[5] * x2 + b[3]) * x2 + b[1]) * x + (b[4] * x2 + b[2]) * x2 + b[0]));
67
 
   }
68
 
   else
69
 
   {
70
 
      V z = 1 / x;
71
 
      V z2 = 1 / (x * x);
72
 
      return static_cast<V>((((a[0] * z2 + a[2]) * z2 + a[4]) * z + (a[1] * z2 + a[3]) * z2 + a[5]) / (((b[0] * z2 + b[2]) * z2 + b[4]) * z + (b[1] * z2 + b[3]) * z2 + b[5]));
73
 
   }
74
 
}
75
 
 
76
 
template <class T, class U, class V>
77
 
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<7>*)
78
 
{
79
 
   if(x <= 1)
80
 
   {
81
 
      V x2 = x * x;
82
 
      return static_cast<V>((((a[6] * x2 + a[4]) * x2 + a[2]) * x2 + a[0] + ((a[5] * x2 + a[3]) * x2 + a[1]) * x) / (((b[6] * x2 + b[4]) * x2 + b[2]) * x2 + b[0] + ((b[5] * x2 + b[3]) * x2 + b[1]) * x));
83
 
   }
84
 
   else
85
 
   {
86
 
      V z = 1 / x;
87
 
      V z2 = 1 / (x * x);
88
 
      return static_cast<V>((((a[0] * z2 + a[2]) * z2 + a[4]) * z2 + a[6] + ((a[1] * z2 + a[3]) * z2 + a[5]) * z) / (((b[0] * z2 + b[2]) * z2 + b[4]) * z2 + b[6] + ((b[1] * z2 + b[3]) * z2 + b[5]) * z));
89
 
   }
90
 
}
91
 
 
92
 
template <class T, class U, class V>
93
 
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<8>*)
94
 
{
95
 
   if(x <= 1)
96
 
   {
97
 
      V x2 = x * x;
98
 
      return static_cast<V>(((((a[7] * x2 + a[5]) * x2 + a[3]) * x2 + a[1]) * x + ((a[6] * x2 + a[4]) * x2 + a[2]) * x2 + a[0]) / ((((b[7] * x2 + b[5]) * x2 + b[3]) * x2 + b[1]) * x + ((b[6] * x2 + b[4]) * x2 + b[2]) * x2 + b[0]));
99
 
   }
100
 
   else
101
 
   {
102
 
      V z = 1 / x;
103
 
      V z2 = 1 / (x * x);
104
 
      return static_cast<V>(((((a[0] * z2 + a[2]) * z2 + a[4]) * z2 + a[6]) * z + ((a[1] * z2 + a[3]) * z2 + a[5]) * z2 + a[7]) / ((((b[0] * z2 + b[2]) * z2 + b[4]) * z2 + b[6]) * z + ((b[1] * z2 + b[3]) * z2 + b[5]) * z2 + b[7]));
105
 
   }
106
 
}
107
 
 
108
 
 
109
 
}}}} // namespaces
110
 
 
111
 
#endif // include guard
112