text: //////////////////////////////////////////////////////////////////////////////
  ///   Copyright 2003 and onward LASMEA UMR 6602 CNRS/U.B.P Clermont-Ferrand
  ///   Copyright 2009 and onward 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
  //////////////////////////////////////////////////////////////////////////////
  #define NT2_UNIT_MODULE "nt2 predicates toolbox - is_not_greater_equal/simd Mode"
  
  //////////////////////////////////////////////////////////////////////////////
  // Test behavior of predicates components in simd mode
  //////////////////////////////////////////////////////////////////////////////
  /// created  by jt the 21/02/2011
  /// modified by jt the 18/03/2011
  #include <nt2/sdk/memory/is_aligned.hpp>
  #include <nt2/sdk/memory/aligned_type.hpp>
  #include <nt2/sdk/memory/load.hpp>
  #include <nt2/sdk/memory/buffer.hpp>
  #include <boost/type_traits/is_same.hpp>
  #include <nt2/sdk/functor/meta/call.hpp>
  #include <nt2/sdk/unit/tests.hpp>
  #include <nt2/sdk/unit/module.hpp>
  #include <nt2/sdk/constant/real.hpp>
  #include <nt2/sdk/constant/infinites.hpp>
  #include <nt2/include/functions/max.hpp>
  #include <nt2/toolbox/predicates/include/is_not_greater_equal.hpp>
  
  NT2_TEST_CASE_TPL ( is_not_greater_equal_real__2_0,  NT2_REAL_TYPES)
  {
    using nt2::is_not_greater_equal;
    using nt2::tag::is_not_greater_equal_;
    using nt2::load; 
    using nt2::simd::native;
    using nt2::meta::cardinal_of;
    typedef NT2_SIMD_DEFAULT_EXTENSION  ext_t;
    typedef typename nt2::meta::upgrade<T>::type   u_t;
    typedef native<T,ext_t>                        n_t;
    typedef n_t                                     vT;
    typedef typename nt2::meta::as_integer<T>::type iT;
    typedef native<iT,ext_t>                       ivT;
    typedef typename nt2::meta::call<is_not_greater_equal_(vT,vT)>::type r_t;
    typedef typename nt2::meta::call<is_not_greater_equal_(T,T)>::type sr_t;
    typedef typename nt2::meta::scalar_of<r_t>::type ssr_t;
  
    // random verifications
    static const uint32_t NR = NT2_NB_RANDOM_TEST;
    {
      NT2_CREATE_BUF(tab_a0,T, NR, T(-10000), T(10000));
      NT2_CREATE_BUF(tab_a1,T, NR, T(-10000), T(10000));
      double ulp0, ulpd ; ulpd=ulp0=0.0;
      for(uint32_t j = 0; j < NR/cardinal_of<n_t>::value; j++)
        {
          vT a0 = load<vT>(&tab_a0[0],j);
          vT a1 = load<vT>(&tab_a1[0],j);
          r_t v = is_not_greater_equal(a0,a1);
          for(int i = 0; i< cardinal_of<n_t>::value; i++)
          {
            int k = i+j*cardinal_of<n_t>::value;
            NT2_TEST_EQUAL( v[i]!=0,ssr_t(nt2::is_not_greater_equal(tab_a0[k],tab_a1[k])));
          }
        }
      
    }
  } // end of test for real_
  