38 BOOST_CHECK_CLOSE( system.
NormalizeX( 512345678 ), 12.345678, 1e-9 );
39 BOOST_CHECK_CLOSE( system.
NormalizeY( 698765433 ), -1.234567, 1e-9 );
40 BOOST_CHECK_CLOSE( system.
DenormalizeX( 12.345678 ), 512345678.0, 1e-9 );
41 BOOST_CHECK_CLOSE( system.
DenormalizeY( -1.234567 ), 698765433.0, 1e-9 );
94 std::vector<std::chrono::microseconds> samples;
96 for(
int run = 0; run < 20; ++run )
98 auto start = std::chrono::steady_clock::now();
100 GCS::VEC_pD unknowns;
102 for(
int i = 0; i < 128; ++i )
108 for(
int relation = 0; relation < 64; ++relation )
109 system.
Solver().addConstraintEqual( unknowns[relation * 2],
110 unknowns[relation * 2 + 1], relation + 1 );
112 system.
Solver().declareUnknowns( unknowns );
113 system.
Solver().initSolution();
114 int solveResult = system.
Solver().solve();
115 BOOST_CHECK( solveResult == GCS::Success || solveResult == GCS::Converged );
116 system.
Solver().applySolution();
117 samples.push_back( std::chrono::duration_cast<std::chrono::microseconds>(
118 std::chrono::steady_clock::now() - start ) );
121 std::sort( samples.begin(), samples.end() );
122 std::chrono::microseconds p95 = samples[18];
123 BOOST_TEST_MESSAGE(
"128-parameter/64-relation solve p95: " << p95.count() <<
" us" );
124 BOOST_CHECK_LE( p95.count(), 16000 );
130 auto start = std::chrono::steady_clock::now();
132 GCS::VEC_pD unknowns;
134 for(
int i = 0; i < 1024; ++i )
140 for(
int relation = 0; relation < 512; ++relation )
141 system.
Solver().addConstraintEqual( unknowns[relation * 2],
142 unknowns[relation * 2 + 1], relation + 1 );
144 system.
Solver().declareUnknowns( unknowns );
145 system.
Solver().initSolution();
146 int solveResult = system.
Solver().solve();
147 BOOST_CHECK( solveResult == GCS::Success || solveResult == GCS::Converged );
148 system.
Solver().applySolution();
149 auto elapsed = std::chrono::duration_cast<std::chrono::microseconds>(
150 std::chrono::steady_clock::now() - start );
151 BOOST_TEST_MESSAGE(
"1024-parameter/512-relation solve: " << elapsed.count() <<
" us" );
BOOST_CHECK_EQUAL(result, "25.4")