From Demonstration of quantum volume 64 on a superconducting quantum computing system chapter IV on dynamical decoupling, we read:
When quantum circuits are mapped to physical hardware, not all
physical gates can be performed simultaneously. Gate execution-times
can vary significantly, not only between single- and two-qubit gates,
but also between ...
Your code looks fine - I am afraid you just were out of luck - Bogota appears to have some problems today (24th Oct 2021 as of 11 PM EST). Try switching to a different backend, like ibmq-manila or ibmq-santiago. You can check a list of all backends available to you here.
On a related note, I would sincerely recommend also playing with simpler circuits at ...
IBM Quantum Systems are calibrated daily, and the system properties update once this calibration sequence is complete. It means that your noise model could change on a daily basis.
More information in the documentation:
I expect you get the Noise Model from the calibrated data of the hardware, however I am not sure how often it is updated. I doubt that it is live or even daily.
You can check the noise model by running
noise_model._local_quantum_errors and noise_model._local_readout_errors
device = provider.get_backend('ibmq_armonk')
noise_model = NoiseModel....
Based on the idea given by @Tristan Nemoz, you can do something like this in Qiskit code:
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
from numpy import pi
qreg_q = QuantumRegister(1, 'q')
creg_c = ClassicalRegister(1, 'c')
circuit = QuantumCircuit(qreg_q, creg_c)
For surface codes, the syndrome measurements collapse the errors into either being $X$ or $Z$ errors. All Clifford gates have easy-to-compute commutation relations with $X$ and $Z$ gates. So the idea is not to actually correct the errors, since that would require more quantum operations which are difficult and error-prone, but to simply track the errors and ...
As mentioned by @user47787
This is yet another case of floating-point representation error at the machine level.
This behaviour is language agnostic and has nothing to do with Python or Numpy or Qiskit.
A very old post on stackoverflow discussing this issue - Is Floating Point Math broken ?
Python docs describing the same - Floating Point ...