~tsarev/boostdc/cmake

« back to all changes in this revision

Viewing changes to boost/boost/math/tools/detail/polynomial_horner3_5.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
 
// Unrolled polynomial evaluation using second order Horners rule
9
 
#ifndef BOOST_MATH_TOOLS_POLY_EVAL_5_HPP
10
 
#define BOOST_MATH_TOOLS_POLY_EVAL_5_HPP
11
 
 
12
 
namespace boost{ namespace math{ namespace tools{ namespace detail{
13
 
 
14
 
template <class T, class V>
15
 
inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<0>*)
16
 
{
17
 
   return static_cast<V>(0);
18
 
}
19
 
 
20
 
template <class T, class V>
21
 
inline V evaluate_polynomial_c_imp(const T* a, const V&, const mpl::int_<1>*)
22
 
{
23
 
   return static_cast<V>(a[0]);
24
 
}
25
 
 
26
 
template <class T, class V>
27
 
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<2>*)
28
 
{
29
 
   return static_cast<V>(a[1] * x + a[0]);
30
 
}
31
 
 
32
 
template <class T, class V>
33
 
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<3>*)
34
 
{
35
 
   return static_cast<V>((a[2] * x + a[1]) * x + a[0]);
36
 
}
37
 
 
38
 
template <class T, class V>
39
 
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<4>*)
40
 
{
41
 
   return static_cast<V>(((a[3] * x + a[2]) * x + a[1]) * x + a[0]);
42
 
}
43
 
 
44
 
template <class T, class V>
45
 
inline V evaluate_polynomial_c_imp(const T* a, const V& x, const mpl::int_<5>*)
46
 
{
47
 
   V x2 = x * x;
48
 
   V t[2];
49
 
   t[0] = static_cast<V>(a[4] * x2 + a[2]);
50
 
   t[1] = static_cast<V>(a[3] * x2 + a[1]);
51
 
   t[0] *= x2;
52
 
   t[0] += static_cast<V>(a[0]);
53
 
   t[1] *= x;
54
 
   return t[0] + t[1];
55
 
}
56
 
 
57
 
 
58
 
}}}} // namespaces
59
 
 
60
 
#endif // include guard
61