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; }