Exemple #1
0
template<int axis,int d> bool axis_less_degenerate(const Tuple<int,Vector<Quantized,d>> a, const Tuple<int,Vector<Quantized,d>> b) {
  struct F { static void eval(RawArray<mp_limb_t> result, RawArray<const Vector<Exact<1>,d>> X) {
    mpz_set(result,X[1][axis]-X[0][axis]);
  }};
  const typename Point<d>::type X[2] = {a,b};
  return perturbed_sign(F::eval,1,asarray(X));
}
Exemple #2
0
static void perturbed_ratio_test() {
  typedef Vector<Quantized,2> EV;
  for (const int power : vec(1,2))
    for (const int index : range(20)) {
      nasty_power = power;
      nasty_index = index;
      Vector<const exact::Perturbed2,2> X(exact::Perturbed2(index,EV()),exact::Perturbed2(index+1,EV(perturbation<2>(7,index+1))));
      Vector<Quantized,1> result;
      const bool s = perturbed_ratio(asarray(result),nasty_ratio,2+power,asarray(X),power==2);
      GEODE_ASSERT(result.x==(power==1?X.y.value().x:abs(X.y.value().x)));
      GEODE_ASSERT(s==perturbed_sign(nasty_denominator,1+power,asarray(X)));
    }
}