@@ -119,6 +119,52 @@ BOOST_AUTO_TEST_CASE(testSimpleCalc) {
119119 }
120120}
121121
122+ BOOST_AUTO_TEST_CASE (testSimpleCalcWithDoublePrecision) {
123+ ComputeEnvironmentFixture fixture;
124+ const std::size_t n = 1024 ;
125+ for (auto const & d : ComputeEnvironment::instance ().getAvailableDevices ()) {
126+ BOOST_TEST_MESSAGE (" testing simple calc (double precision) on device '" << d << " '." );
127+ ComputeEnvironment::instance ().selectContext (d);
128+ auto & c = ComputeEnvironment::instance ().context ();
129+
130+ if (!c.supportsDoublePrecision ()) {
131+ BOOST_TEST_MESSAGE (" device does not support double precision - skipping the test for this device." );
132+ continue ;
133+ }
134+
135+ BOOST_TEST_MESSAGE (" do first calc" );
136+
137+ double dblPrecNumber = 1.29382757483823819 ;
138+
139+ ComputeContext::Settings settings;
140+ settings.useDoublePrecision = true ;
141+ auto [id, _] = c.initiateCalculation (n, 0 , 0 , settings);
142+ std::vector<double > rx (n, dblPrecNumber);
143+ auto x = c.createInputVariable (&rx[0 ]);
144+ auto y = c.createInputVariable (dblPrecNumber);
145+ auto z = c.applyOperation (RandomVariableOpCode::Add, {x, y});
146+ auto w = c.applyOperation (RandomVariableOpCode::Mult, {z, z});
147+ c.declareOutputVariable (w);
148+ std::vector<std::vector<double >> output (1 , std::vector<double >(n));
149+ c.finalizeCalculation (output);
150+ for (auto const & v : output.front ()) {
151+ BOOST_CHECK_CLOSE (v, (dblPrecNumber + dblPrecNumber) * (dblPrecNumber + dblPrecNumber), 1.0E-15 );
152+ }
153+
154+ BOOST_TEST_MESSAGE (" do second calc using same kernel" );
155+
156+ c.initiateCalculation (n, id, 0 );
157+ std::vector<double > rx2 (n, dblPrecNumber);
158+ c.createInputVariable (&rx2[0 ]);
159+ c.createInputVariable (dblPrecNumber);
160+ std::vector<std::vector<double >> output2 (1 , std::vector<double >(n));
161+ c.finalizeCalculation (output2);
162+ for (auto const & v : output2.front ()) {
163+ BOOST_CHECK_CLOSE (v, (dblPrecNumber + dblPrecNumber) * (dblPrecNumber + dblPrecNumber), 1.0E-15 );
164+ }
165+ }
166+ }
167+
122168BOOST_AUTO_TEST_CASE (testLargeCalc) {
123169 ComputeEnvironmentFixture fixture;
124170
0 commit comments