Example #1
0
 bool compareArraysNeg(
     const Array1 &a1, const std::string &a1_name,
     const Array2 &a2, const std::string &a2_name,
     FancyOStream &out
     )
 {
   bool success = true;
   out << "Comparing " << a1_name << " == -(" << a2_name << ") ... ";
   const int n = a1.size();
   // Compare sizes
   if (as<int>(a2.size()) != n) {
     out << "\nError, "<<a1_name<<".size() = "<<a1.size()<<" == " 
       << a2_name<<".size() = "<<a2.size()<<" : failed!\n";
     return false;
   }
   // Compare elements
   for( int i = 0; i < n; ++i ) {
     const bool result = ( a1[i] == -a2[i] ); // Tests C::operator[](i) const
     if (!result) {
       out << "\nError, "<<a1_name<<"["<<i<<"] = "<<a1[i]<<" == -("
         << a2_name<<"["<<i<<"]) = -("<<a2[i]<<"): failed!\n";
       success = false;
     }
   }
   if (success) {
     out << "passed\n";
   }
   return success;
 }
bool Teuchos::compareFloatingArrays(
  const Array1 &a1, const std::string &a1_name,
  const Array2 &a2, const std::string &a2_name,
  const ScalarMag &tol,
  Teuchos::FancyOStream &out
  )
{
  using Teuchos::as;
  bool success = true;

  out << "Comparing " << a1_name << " == " << a2_name << " ... ";

  const int n = a1.size();

  // Compare sizes
  if (as<int>(a2.size()) != n) {
    out << "\nError, "<<a1_name<<".size() = "<<a1.size()<<" == " 
        << a2_name<<".size() = "<<a2.size()<<" : failed!\n";
    return false;
  }
  
  // Compare elements
  for( int i = 0; i < n; ++i ) {
    const ScalarMag err = relErr( a1[i], a2[i] );
    if ( err > tol ) {
      out
        <<"\nError, relErr("<<a1_name<<"["<<i<<"],"
        <<a2_name<<"["<<i<<"]) = relErr("<<a1[i]<<","<<a2[i]<<") = "
        <<err<<" <= tol = "<<tol<<": failed!\n";
      success = false;
    }
  }
  if (success) {
    out << "passed\n";
  }

  return success;

}