Here I only test the functions I added on top of math.js, because I'm assuming math.js is ok. I use the assert function, which acts just like eq when things are equal, but throws an error when they aren't, so it's easy to catch a failure.
Besides acting as regression tests, they're also examples of how to use the functions.
Some of these are a function of one to three angles (because no symbolic evaluation available.) I generate random angles to verify. If you want to try different angles, you can click on the visible equations to get the buttons, then click on Re-evaluate to get new random values.
First we test \(\left| \Psi \right\rangle\).
Then we verify the others. They're defined like this, as functions of ket, in the code, but at least this is more visually verifiable.
Define three unique states and use them to test if they're routed by perm as expected for all the permutations of three qubits.
First let's make sure qcc puts the internal gates in the right place.
Then how about if there is a 2-qubit internal gate involved.
And now test to see if control gates are working under a few conditions.
Or we can build some controlled gates.