MCPcopy Create free account
hub / github.com/QuEST-Kit/QuEST / assertMatrixIsHermitian

Function assertMatrixIsHermitian

quest/src/core/validation.cpp:2459–2474  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2457// type T can be CompMatr1, CompMatr2, CompMatr, DiagMatr1, DiagMatr2, DiagMatr, FullStateDiagMatr
2458template <class T>
2459void assertMatrixIsHermitian(T matr, const char* caller) {
2460
2461 // validate both stack and heap matrices have been correctly initialised
2462 validate_matrixFields(matr, caller);
2463
2464 // validate heap matrices have ever written to their GPU memories (if exists)
2465 if constexpr (util_isHeapMatrixType<T>())
2466 validate_matrixIsSynced(matr, caller);
2467
2468 // avoid superfluous expensive hermiticity check below (do not overwrite matr.isApproxHermitian)
2469 if (isNumericalValidationDisabled())
2470 return;
2471
2472 // may overwrite matr.isApproxHermitian of heap matrices, otherwise ignores epsilon
2473 assertThat(util_isHermitian(matr, global_validationEpsilon), report::MATRIX_NOT_HERMITIAN, caller);
2474}
2475void validate_matrixIsHermitian(CompMatr1 m, const char* caller) { assertMatrixIsHermitian(m, caller); }
2476void validate_matrixIsHermitian(CompMatr2 m, const char* caller) { assertMatrixIsHermitian(m, caller); }
2477void validate_matrixIsHermitian(CompMatr m, const char* caller) { assertMatrixIsHermitian(m, caller); }

Callers 1

Calls 5

validate_matrixFieldsFunction · 0.85
validate_matrixIsSyncedFunction · 0.85
assertThatFunction · 0.85
util_isHermitianFunction · 0.85

Tested by

no test coverage detected