~ubuntu-branches/ubuntu/saucy/merkaartor/saucy

« back to all changes in this revision

Viewing changes to include/builtin-boost/boost/math/tools/detail/rational_horner1_3.hpp

Tags: upstream-0.15.3+svn20934
ImportĀ upstreamĀ versionĀ 0.15.3+svn20934

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 Horners rule
 
9
#ifndef BOOST_MATH_TOOLS_POLY_RAT_3_HPP
 
10
#define BOOST_MATH_TOOLS_POLY_RAT_3_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*, const U*, 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
   if(x <= 1)
 
30
     return static_cast<V>((a[1] * x + a[0]) / (b[1] * x + b[0]));
 
31
   else
 
32
   {
 
33
      V z = 1 / x;
 
34
      return static_cast<V>((a[0] * z + a[1]) / (b[0] * z + b[1]));
 
35
   }
 
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_<3>*)
 
40
{
 
41
   if(x <= 1)
 
42
     return static_cast<V>(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));
 
43
   else
 
44
   {
 
45
      V z = 1 / x;
 
46
      return static_cast<V>(((a[0] * z + a[1]) * z + a[2]) / ((b[0] * z + b[1]) * z + b[2]));
 
47
   }
 
48
}
 
49
 
 
50
 
 
51
}}}} // namespaces
 
52
 
 
53
#endif // include guard
 
54