text: //==============================================================================
  //         Copyright 2003 - 2011 LASMEA UMR 6602 CNRS/Univ. Clermont II
  //         Copyright 2009 - 2011 LRI    UMR 8623 CNRS/Univ Paris Sud XI
  //
  //          Distributed under the Boost Software License, Version 1.0.
  //                 See accompanying file LICENSE.txt or copy at
  //                     http://www.boost.org/LICENSE_1_0.txt
  //==============================================================================
  #ifndef NT2_TOOLBOX_TRIGONOMETRIC_FUNCTIONS_SIMD_COMMON_FAST_SIN_HPP_INCLUDED
  #define NT2_TOOLBOX_TRIGONOMETRIC_FUNCTIONS_SIMD_COMMON_FAST_SIN_HPP_INCLUDED
  #include <nt2/toolbox/trigonometric/functions/fast_sin.hpp>
  #include <nt2/sdk/meta/as_floating.hpp>
  #include <nt2/sdk/simd/meta/is_real_convertible.hpp>
  #include <nt2/sdk/meta/strip.hpp>
  #include <nt2/toolbox/trigonometric/functions/simd/common/impl/trigo.hpp>
  
  /////////////////////////////////////////////////////////////////////////////
  // Implementation when type A0 is arithmetic_
  /////////////////////////////////////////////////////////////////////////////
  namespace nt2 { namespace ext
  {
    NT2_FUNCTOR_IMPLEMENTATION( nt2::tag::fast_sin_, boost::simd::tag::simd_
                              , (A0)(X)
                              , ((simd_<arithmetic_<A0>,X>))
                              )
    {
      typedef typename meta::as_floating<A0>::type result_type;
      NT2_FUNCTOR_CALL(1)
      {
        return is_nez(a0);
      }
    };
  } }
  
  
  /////////////////////////////////////////////////////////////////////////////
  // Implementation when type A0 is floating_
  /////////////////////////////////////////////////////////////////////////////
  namespace nt2 { namespace ext
  {
    NT2_FUNCTOR_IMPLEMENTATION( nt2::tag::fast_sin_, boost::simd::tag::simd_
                              , (A0)(X)
                              , ((simd_<floating_<A0>,X>))
                              )
    {
      typedef A0  result_type;
      NT2_FUNCTOR_CALL(1)
        {
       return impl::trig_base<A0,radian_tag,  tag::simd_type, clipped_pio4_>::sina(a0);
        }
    };
  } }
  
  
  #endif
  