Adjust data type in qsimh tests to fix numerical comparison failures#1014
Adjust data type in qsimh tests to fix numerical comparison failures#1014mhucka wants to merge 3 commits intoquantumlib:mainfrom
Conversation
When running this on a Debian-based Linux system, I get errors that appear to be due to numerical precision issues. It seems that some uses of `float` in tests/run_qsimh_tests.cc need to be `double`'s in order to resolve them. <details><summary>Output from `make run-cxx-tests`</summary> [----------] Global test environment set-up. [----------] 2 tests from RunQSimHTest [ RUN ] RunQSimHTest.QSimHRunner [ OK ] RunQSimHTest.QSimHRunner (0 ms) [ RUN ] RunQSimHTest.CirqGates run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0062986763761138931, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.13179841637611389, std::real(expected_results[i]) evaluates to 0.12549974, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.035221514014434824, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.18351143598556519, std::imag(expected_results[i]) evaluates to 0.21873295000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.039959894224624634, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.13104191422462463, std::real(expected_results[i]) evaluates to -0.09108202, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.016947779936487196, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.059335622936487198, std::imag(expected_results[i]) evaluates to 0.042387843000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0020535411359024064, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.1089613288640976, std::real(expected_results[i]) evaluates to 0.11101487, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.040648414013576495, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.10513428598642349, std::imag(expected_results[i]) evaluates to -0.14578269999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0007721670914077744, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.078953877091407776, std::real(expected_results[i]) evaluates to 0.078181710000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.019585073881120685, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.048383396118879318, std::imag(expected_results[i]) evaluates to 0.067968470000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011808277813796994, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.110350102186203, std::real(expected_results[i]) evaluates to -0.12215838, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0096730519777417177, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.0046784980222582817, std::imag(expected_results[i]) evaluates to -0.014351549999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.069353073088378903, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12083339691162109, std::real(expected_results[i]) evaluates to 0.19018647, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.043380597480964678, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23392610251903534, std::imag(expected_results[i]) evaluates to -0.27730670000000002, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.040031763882503513, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.03641984611749649, std::real(expected_results[i]) evaluates to 0.076451610000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.060284535233764647, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.10916924476623535, std::imag(expected_results[i]) evaluates to 0.16945378, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.038641317763442984, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.17788019776344299, std::real(expected_results[i]) evaluates to -0.13923888000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0012541888537597745, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23595666885375977, std::imag(expected_results[i]) evaluates to -0.23470247999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.032922524468345649, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.12519289553165436, std::real(expected_results[i]) evaluates to -0.15811542000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.023803132880516054, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.20950256288051605, std::imag(expected_results[i]) evaluates to 0.18569943, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0013214931310653599, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12399865686893463, std::real(expected_results[i]) evaluates to 0.12532014999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.031921336637306202, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.21107946336269379, std::imag(expected_results[i]) evaluates to -0.24300079999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.017829032430412291, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.029023930430412292, std::real(expected_results[i]) evaluates to 0.011194898, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.049390020930862422, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.38205882906913757, std::imag(expected_results[i]) evaluates to -0.43144884999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.057924614963035581, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.23875011503696442, std::real(expected_results[i]) evaluates to -0.29667473, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.034402516216230396, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.017195183783769608, std::imag(expected_results[i]) evaluates to 0.051597700000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011055804096990109, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0062863389030098915, std::real(expected_results[i]) evaluates to 0.017342143000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.048772305901031487, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.30701917409896851, std::imag(expected_results[i]) evaluates to 0.35579147999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.02939495521213531, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.18562756478786469, std::real(expected_results[i]) evaluates to 0.21502251999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071854889099082941, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.010201945900917053, std::imag(expected_results[i]) evaluates to 0.082056834999999995, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0015646991005611385, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.049259629100561142, std::real(expected_results[i]) evaluates to -0.047694930000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071878572646076208, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.067620165646076202, std::imag(expected_results[i]) evaluates to 0.0042584069999999996, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.012822937002029411, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.22708609700202942, std::real(expected_results[i]) evaluates to -0.21426316000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:230: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.061513482502587799, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.012811013497412205, std::imag(expected_results[i]) evaluates to -0.074324496000000004, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0062987508819198623, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.13179849088191986, std::real(expected_results[i]) evaluates to 0.12549974, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.035221558717918405, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.1835113912820816, std::imag(expected_results[i]) evaluates to 0.21873295000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.039959119364242554, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.13104113936424255, std::real(expected_results[i]) evaluates to -0.09108202, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.016947519166166304, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.059335362166166306, std::imag(expected_results[i]) evaluates to 0.042387843000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0020537870050621049, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.1089610829949379, std::real(expected_results[i]) evaluates to 0.11101487, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.04064924847860335, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.10513345152139664, std::imag(expected_results[i]) evaluates to -0.14578269999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.00077265882972717137, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.078954368829727173, std::real(expected_results[i]) evaluates to 0.078181710000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.019585386805505756, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.048383083194494247, std::imag(expected_results[i]) evaluates to 0.067968470000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011808218209152219, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.11035016179084778, std::real(expected_results[i]) evaluates to -0.12215838, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0096731106510639184, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.0046784393489360809, std::imag(expected_results[i]) evaluates to -0.014351549999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.069352864472122189, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12083360552787781, std::real(expected_results[i]) evaluates to 0.19018647, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.043379882225227373, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23392681777477264, std::imag(expected_results[i]) evaluates to -0.27730670000000002, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.04003150311218262, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.036420106887817383, std::real(expected_results[i]) evaluates to 0.076451610000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.060284907762794493, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.10916887223720551, std::imag(expected_results[i]) evaluates to 0.16945378, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.038640796222801199, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.17787967622280121, std::real(expected_results[i]) evaluates to -0.13923888000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0012538759293747037, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23595635592937469, std::imag(expected_results[i]) evaluates to -0.23470247999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.032923224822921759, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.12519219517707825, std::real(expected_results[i]) evaluates to -0.15811542000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.023802447427101137, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.20950187742710114, std::imag(expected_results[i]) evaluates to 0.18569943, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0013214707793235692, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12399867922067642, std::real(expected_results[i]) evaluates to 0.12532014999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.031922543631362904, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.21107825636863708, std::imag(expected_results[i]) evaluates to -0.24300079999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.017829078996541022, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.029023976996541023, std::real(expected_results[i]) evaluates to 0.011194898, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.049390378558731074, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.38205847144126892, std::imag(expected_results[i]) evaluates to -0.43144884999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.057924167928199766, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.23875056207180023, std::real(expected_results[i]) evaluates to -0.29667473, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.034402588859391216, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.017195111140608788, std::imag(expected_results[i]) evaluates to 0.051597700000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011055638321571828, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0062865046784281731, std::real(expected_results[i]) evaluates to 0.017342143000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.048771680052261346, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.30701979994773865, std::imag(expected_results[i]) evaluates to 0.35579147999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.029394985014457697, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.1856275349855423, std::real(expected_results[i]) evaluates to 0.21502251999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071854763370535368, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.010202071629464626, std::imag(expected_results[i]) evaluates to 0.082056834999999995, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.001564751254625317, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.04925968125462532, std::real(expected_results[i]) evaluates to -0.047694930000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071878796163494116, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.06762038916349411, std::imag(expected_results[i]) evaluates to 0.0042584069999999996, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:242: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.012822340955581657, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.22708550095558167, std::real(expected_results[i]) evaluates to -0.21426316000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:243: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.061513255259879593, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.012811240740120411, std::imag(expected_results[i]) evaluates to -0.074324496000000004, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0062987359807586685, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.13179847598075867, std::real(expected_results[i]) evaluates to 0.12549974, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.035221543816757211, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.1835114061832428, std::imag(expected_results[i]) evaluates to 0.21873295000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.03995929817817688, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.13104131817817688, std::real(expected_results[i]) evaluates to -0.09108202, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.016947526616746901, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.059335369616746902, std::imag(expected_results[i]) evaluates to 0.042387843000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0020534964324188248, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.10896137356758118, std::real(expected_results[i]) evaluates to 0.11101487, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.04064895790596007, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.10513374209403992, std::imag(expected_results[i]) evaluates to -0.14578269999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.00077255452159881444, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.078954264521598816, std::real(expected_results[i]) evaluates to 0.078181710000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.01958532720086098, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.048383142799139023, std::imag(expected_results[i]) evaluates to 0.067968470000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011808352319602963, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.11035002768039703, std::real(expected_results[i]) evaluates to -0.12215838, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0096731064601123327, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.0046784435398876667, std::imag(expected_results[i]) evaluates to -0.014351549999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.06935300603315353, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12083346396684647, std::real(expected_results[i]) evaluates to 0.19018647, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.043379643806648271, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23392705619335175, std::imag(expected_results[i]) evaluates to -0.27730670000000002, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.04003159996973038, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.036420010030269623, std::real(expected_results[i]) evaluates to 0.076451610000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.060284714047698973, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.10916906595230103, std::imag(expected_results[i]) evaluates to 0.16945378, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.038640960135574332, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.17787984013557434, std::real(expected_results[i]) evaluates to -0.13923888000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0012543676676941007, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23595684766769409, std::imag(expected_results[i]) evaluates to -0.23470247999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.032922986404342658, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.12519243359565735, std::real(expected_results[i]) evaluates to -0.15811542000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.023802521932907106, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.2095019519329071, std::imag(expected_results[i]) evaluates to 0.18569943, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.001321679395580283, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12399847060441971, std::real(expected_results[i]) evaluates to 0.12532014999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.031922543631362904, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.21107825636863708, std::imag(expected_results[i]) evaluates to -0.24300079999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.017828892732026098, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0290237907320261, std::real(expected_results[i]) evaluates to 0.011194898, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.049390050733184809, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.38205879926681519, std::imag(expected_results[i]) evaluates to -0.43144884999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.057924257335166929, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.23875047266483307, std::real(expected_results[i]) evaluates to -0.29667473, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.034402518078875545, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.017195181921124458, std::imag(expected_results[i]) evaluates to 0.051597700000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011055618298136474, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0062865247018635273, std::real(expected_results[i]) evaluates to 0.017342143000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.048771858866195672, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.30701962113380432, std::imag(expected_results[i]) evaluates to 0.35579147999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.029395014816780085, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.18562750518321991, std::real(expected_results[i]) evaluates to 0.21502251999999999, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071854823906502718, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.010202011093497276, std::imag(expected_results[i]) evaluates to 0.082056834999999995, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0015646991005611385, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.049259629100561142, std::real(expected_results[i]) evaluates to -0.047694930000000003, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071878803614074713, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.067620396614074707, std::imag(expected_results[i]) evaluates to 0.0042584069999999996, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:255: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.01282262407764434, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.22708578407764435, std::real(expected_results[i]) evaluates to -0.21426316000000001, and 2e-6 evaluates to 1.9999999999999999e-06. run_qsimh_test.cc:256: Failure The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.061513230114170078, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.012811265885829926, std::imag(expected_results[i]) evaluates to -0.074324496000000004, and 2e-6 evaluates to 1.9999999999999999e-06. [ FAILED ] RunQSimHTest.CirqGates (174 ms) [----------] 2 tests from RunQSimHTest (175 ms total) [----------] Global test environment tear-down [==========] 2 tests from 1 test suite ran. (175 ms total) [ PASSED ] 1 test. [ FAILED ] 1 test, listed below: [ FAILED ] RunQSimHTest.CirqGates 1 FAILED TEST gmake[1]: *** [Makefile:81: run-cxx-tests] Error 1 </details>
There was a problem hiding this comment.
Code Review
This pull request addresses test failures caused by numerical precision issues by changing the floating-point type from float to double in tests/run_qsimh_test.cc. The change is correct in fixing the test failures. However, the current implementation forces the use of the non-vectorized SimulatorBasic, which can lead to a performance degradation in the tests. I've suggested an alternative approach that maintains the performance benefits of vectorized simulators (AVX/SSE) while still using double precision, in line with the project's style guide on performance and vectorization.
sergeisakov
left a comment
There was a problem hiding this comment.
It's not related to numerical precision issues. It's probably a g++ bug. For instance, the test passes if one omits either the -flto=auto flag or AVX related flags. The root cause of test failure is that the last Schmidt decomposition matrix for the XXPowGate gate (lines 715-730 in gates_cirq.h) is computed incorrectly.
| @@ -28,6 +28,7 @@ | |||
| #include "../lib/io.h" | |||
| #include "../lib/run_qsimh.h" | |||
| #include "../lib/simmux.h" | |||
There was a problem hiding this comment.
I think you can delete this line.
When running tests on a Debian-based Linux system with g++ (Debian 15.2.0-3) 15.2.0, I get errors that appear to be due to numerical precision issues. It seems that some uses of
floatin tests/run_qsimh_tests.cc need to bedouble's in order to resolve them.Output from `make run-cxx-tests`
[----------] Global test environment set-up. [----------] 2 tests from RunQSimHTest [ RUN ] RunQSimHTest.QSimHRunner [ OK ] RunQSimHTest.QSimHRunner (0 ms) [ RUN ] RunQSimHTest.CirqGates run_qsimh_test.cc:229: Failure The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0062986763761138931, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.13179841637611389, std::real(expected_results[i]) evaluates to 0.12549974, and 2e-6 evaluates to 1.9999999999999999e-06.run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.035221514014434824, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.18351143598556519, std::imag(expected_results[i]) evaluates to 0.21873295000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.039959894224624634, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.13104191422462463, std::real(expected_results[i]) evaluates to -0.09108202, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.016947779936487196, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.059335622936487198, std::imag(expected_results[i]) evaluates to 0.042387843000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0020535411359024064, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.1089613288640976, std::real(expected_results[i]) evaluates to 0.11101487, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.040648414013576495, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.10513428598642349, std::imag(expected_results[i]) evaluates to -0.14578269999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0007721670914077744, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.078953877091407776, std::real(expected_results[i]) evaluates to 0.078181710000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.019585073881120685, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.048383396118879318, std::imag(expected_results[i]) evaluates to 0.067968470000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011808277813796994, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.110350102186203, std::real(expected_results[i]) evaluates to -0.12215838, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0096730519777417177, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.0046784980222582817, std::imag(expected_results[i]) evaluates to -0.014351549999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.069353073088378903, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12083339691162109, std::real(expected_results[i]) evaluates to 0.19018647, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.043380597480964678, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23392610251903534, std::imag(expected_results[i]) evaluates to -0.27730670000000002, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.040031763882503513, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.03641984611749649, std::real(expected_results[i]) evaluates to 0.076451610000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.060284535233764647, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.10916924476623535, std::imag(expected_results[i]) evaluates to 0.16945378, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.038641317763442984, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.17788019776344299, std::real(expected_results[i]) evaluates to -0.13923888000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0012541888537597745, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23595666885375977, std::imag(expected_results[i]) evaluates to -0.23470247999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.032922524468345649, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.12519289553165436, std::real(expected_results[i]) evaluates to -0.15811542000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.023803132880516054, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.20950256288051605, std::imag(expected_results[i]) evaluates to 0.18569943, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0013214931310653599, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12399865686893463, std::real(expected_results[i]) evaluates to 0.12532014999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.031921336637306202, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.21107946336269379, std::imag(expected_results[i]) evaluates to -0.24300079999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.017829032430412291, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.029023930430412292, std::real(expected_results[i]) evaluates to 0.011194898, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.049390020930862422, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.38205882906913757, std::imag(expected_results[i]) evaluates to -0.43144884999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.057924614963035581, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.23875011503696442, std::real(expected_results[i]) evaluates to -0.29667473, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.034402516216230396, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.017195183783769608, std::imag(expected_results[i]) evaluates to 0.051597700000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011055804096990109, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0062863389030098915, std::real(expected_results[i]) evaluates to 0.017342143000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.048772305901031487, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.30701917409896851, std::imag(expected_results[i]) evaluates to 0.35579147999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.02939495521213531, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.18562756478786469, std::real(expected_results[i]) evaluates to 0.21502251999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071854889099082941, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.010201945900917053, std::imag(expected_results[i]) evaluates to 0.082056834999999995, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0015646991005611385, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.049259629100561142, std::real(expected_results[i]) evaluates to -0.047694930000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071878572646076208, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.067620165646076202, std::imag(expected_results[i]) evaluates to 0.0042584069999999996, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:229: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.012822937002029411, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.22708609700202942, std::real(expected_results[i]) evaluates to -0.21426316000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:230: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.061513482502587799, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.012811013497412205, std::imag(expected_results[i]) evaluates to -0.074324496000000004, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0062987508819198623, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.13179849088191986, std::real(expected_results[i]) evaluates to 0.12549974, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.035221558717918405, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.1835113912820816, std::imag(expected_results[i]) evaluates to 0.21873295000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.039959119364242554, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.13104113936424255, std::real(expected_results[i]) evaluates to -0.09108202, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.016947519166166304, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.059335362166166306, std::imag(expected_results[i]) evaluates to 0.042387843000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0020537870050621049, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.1089610829949379, std::real(expected_results[i]) evaluates to 0.11101487, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.04064924847860335, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.10513345152139664, std::imag(expected_results[i]) evaluates to -0.14578269999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.00077265882972717137, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.078954368829727173, std::real(expected_results[i]) evaluates to 0.078181710000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.019585386805505756, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.048383083194494247, std::imag(expected_results[i]) evaluates to 0.067968470000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011808218209152219, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.11035016179084778, std::real(expected_results[i]) evaluates to -0.12215838, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0096731106510639184, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.0046784393489360809, std::imag(expected_results[i]) evaluates to -0.014351549999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.069352864472122189, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12083360552787781, std::real(expected_results[i]) evaluates to 0.19018647, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.043379882225227373, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23392681777477264, std::imag(expected_results[i]) evaluates to -0.27730670000000002, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.04003150311218262, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.036420106887817383, std::real(expected_results[i]) evaluates to 0.076451610000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.060284907762794493, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.10916887223720551, std::imag(expected_results[i]) evaluates to 0.16945378, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.038640796222801199, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.17787967622280121, std::real(expected_results[i]) evaluates to -0.13923888000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0012538759293747037, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23595635592937469, std::imag(expected_results[i]) evaluates to -0.23470247999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.032923224822921759, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.12519219517707825, std::real(expected_results[i]) evaluates to -0.15811542000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.023802447427101137, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.20950187742710114, std::imag(expected_results[i]) evaluates to 0.18569943, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0013214707793235692, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12399867922067642, std::real(expected_results[i]) evaluates to 0.12532014999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.031922543631362904, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.21107825636863708, std::imag(expected_results[i]) evaluates to -0.24300079999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.017829078996541022, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.029023976996541023, std::real(expected_results[i]) evaluates to 0.011194898, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.049390378558731074, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.38205847144126892, std::imag(expected_results[i]) evaluates to -0.43144884999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.057924167928199766, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.23875056207180023, std::real(expected_results[i]) evaluates to -0.29667473, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.034402588859391216, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.017195111140608788, std::imag(expected_results[i]) evaluates to 0.051597700000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011055638321571828, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0062865046784281731, std::real(expected_results[i]) evaluates to 0.017342143000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.048771680052261346, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.30701979994773865, std::imag(expected_results[i]) evaluates to 0.35579147999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.029394985014457697, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.1856275349855423, std::real(expected_results[i]) evaluates to 0.21502251999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071854763370535368, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.010202071629464626, std::imag(expected_results[i]) evaluates to 0.082056834999999995, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.001564751254625317, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.04925968125462532, std::real(expected_results[i]) evaluates to -0.047694930000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071878796163494116, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.06762038916349411, std::imag(expected_results[i]) evaluates to 0.0042584069999999996, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:242: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.012822340955581657, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.22708550095558167, std::real(expected_results[i]) evaluates to -0.21426316000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:243: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.061513255259879593, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.012811240740120411, std::imag(expected_results[i]) evaluates to -0.074324496000000004, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0062987359807586685, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.13179847598075867, std::real(expected_results[i]) evaluates to 0.12549974, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.035221543816757211, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.1835114061832428, std::imag(expected_results[i]) evaluates to 0.21873295000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.03995929817817688, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.13104131817817688, std::real(expected_results[i]) evaluates to -0.09108202, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.016947526616746901, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.059335369616746902, std::imag(expected_results[i]) evaluates to 0.042387843000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0020534964324188248, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.10896137356758118, std::real(expected_results[i]) evaluates to 0.11101487, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.04064895790596007, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.10513374209403992, std::imag(expected_results[i]) evaluates to -0.14578269999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.00077255452159881444, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.078954264521598816, std::real(expected_results[i]) evaluates to 0.078181710000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.01958532720086098, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.048383142799139023, std::imag(expected_results[i]) evaluates to 0.067968470000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011808352319602963, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.11035002768039703, std::real(expected_results[i]) evaluates to -0.12215838, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0096731064601123327, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.0046784435398876667, std::imag(expected_results[i]) evaluates to -0.014351549999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.06935300603315353, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12083346396684647, std::real(expected_results[i]) evaluates to 0.19018647, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.043379643806648271, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23392705619335175, std::imag(expected_results[i]) evaluates to -0.27730670000000002, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.04003159996973038, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.036420010030269623, std::real(expected_results[i]) evaluates to 0.076451610000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.060284714047698973, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.10916906595230103, std::imag(expected_results[i]) evaluates to 0.16945378, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.038640960135574332, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.17787984013557434, std::real(expected_results[i]) evaluates to -0.13923888000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.0012543676676941007, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.23595684766769409, std::imag(expected_results[i]) evaluates to -0.23470247999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.032922986404342658, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.12519243359565735, std::real(expected_results[i]) evaluates to -0.15811542000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.023802521932907106, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.2095019519329071, std::imag(expected_results[i]) evaluates to 0.18569943, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.001321679395580283, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.12399847060441971, std::real(expected_results[i]) evaluates to 0.12532014999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.031922543631362904, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.21107825636863708, std::imag(expected_results[i]) evaluates to -0.24300079999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.017828892732026098, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0290237907320261, std::real(expected_results[i]) evaluates to 0.011194898, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.049390050733184809, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.38205879926681519, std::imag(expected_results[i]) evaluates to -0.43144884999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.057924257335166929, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.23875047266483307, std::real(expected_results[i]) evaluates to -0.29667473, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.034402518078875545, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.017195181921124458, std::imag(expected_results[i]) evaluates to 0.051597700000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.011055618298136474, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.0062865247018635273, std::real(expected_results[i]) evaluates to 0.017342143000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.048771858866195672, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.30701962113380432, std::imag(expected_results[i]) evaluates to 0.35579147999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.029395014816780085, which exceeds 2e-6, where std::real(results[i]) evaluates to 0.18562750518321991, std::real(expected_results[i]) evaluates to 0.21502251999999999, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071854823906502718, which exceeds 2e-6, where std::imag(results[i]) evaluates to 0.010202011093497276, std::imag(expected_results[i]) evaluates to 0.082056834999999995, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.0015646991005611385, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.049259629100561142, std::real(expected_results[i]) evaluates to -0.047694930000000003, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.071878803614074713, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.067620396614074707, std::imag(expected_results[i]) evaluates to 0.0042584069999999996, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:255: Failure
The difference between std::real(results[i]) and std::real(expected_results[i]) is 0.01282262407764434, which exceeds 2e-6, where std::real(results[i]) evaluates to -0.22708578407764435, std::real(expected_results[i]) evaluates to -0.21426316000000001, and 2e-6 evaluates to 1.9999999999999999e-06.
run_qsimh_test.cc:256: Failure
The difference between std::imag(results[i]) and std::imag(expected_results[i]) is 0.061513230114170078, which exceeds 2e-6, where std::imag(results[i]) evaluates to -0.012811265885829926, std::imag(expected_results[i]) evaluates to -0.074324496000000004, and 2e-6 evaluates to 1.9999999999999999e-06.
[ FAILED ] RunQSimHTest.CirqGates (174 ms)
[----------] 2 tests from RunQSimHTest (175 ms total)
[----------] Global test environment tear-down
[==========] 2 tests from 1 test suite ran. (175 ms total) [ PASSED ] 1 test.
[ FAILED ] 1 test, listed below:
[ FAILED ] RunQSimHTest.CirqGates
1 FAILED TEST
gmake[1]: *** [Makefile:81: run-cxx-tests] Error 1