Currently you can use either:
BOOST_TEST_REQUIRE( output == outputDesired, boost::test_tools::per_element() );
BOOST_TEST_REQUIRE( output == outputDesired, boost::test_tools::tolerance( 1e-12f ) );
But you cannot use both.
What is the preferred way to compare collections (e.g. vectors) of floating point values?
This is a common use case for testing numeric algorithms: Check results of optimized version vs. naive implementation.