A computer implemented method for mitigating errors caused by noise in an algorithm executed using a quantum information processor, wherein the algorithm is configured to simulate a fermionic system and comprises a target quantum circuit for implementing at least a part of the algorithm, and wherein the method comprises: identifying a plurality of fermionic linear optics, FLO, circuits, wherein each FLO circuit of the plurality of FLO circuits approximates the target quantum circuit; for each FLO, circuit of the plurality of FLO circuits: executing, one or more times using the quantum information processor, that FLO circuit to determine a first value of an observable; and classically simulating that FLO circuit to determine a second value of the observable; establishing a training set comprising a plurality of tuples, each tuple comprising: a set of one or more parameters for defining a FLO circuit of the plurality of FLO circuits; the corresponding first value of the observable determined for that FLO circuit; and the corresponding second value of the observable determined for that FLO circuit; determining, using the training set, a noise inversion function; executing, one or more times using the quantum information processor, the target quantum circuit for implementing at least a part of the algorithm to determine a noisy value of an observable; applying the noise inversion function to the noisy value; and determining, from the output of the noise inversion function, a corrected value of the observable. identifying a plurality of fermionic linear optics, FLO, circuits, wherein each FLO circuit of the plurality of FLO circuits approximates the target quantum circuit; for each FLO, circuit of the plurality of FLO circuits: executing, one or more times using the quantum information processor, that FLO circuit to determine a first value of an observable; and classically simulating that FLO circuit to determine a second value of the observable; executing, one or more times using the quantum information processor, that FLO circuit to determine a first value of an observable; and classically simulating that FLO circuit to determine a second value of the observable; establishing a training set comprising a plurality of tuples, each tuple comprising: a set of one or more parameters for defining a FLO circuit of the plurality of FLO circuits; the corresponding first value of the observable determined for that FLO circuit; and the corresponding second value of the observable determined for that FLO circuit; a set of one or more parameters for defining a FLO circuit of the plurality of FLO circuits; the corresponding first value of the observable determined for that FLO circuit; and the corresponding second value of the observable determined for that FLO circuit; determining, using the training set, a noise inversion function; executing, one or more times using the quantum information processor, the target quantum circuit for implementing at least a part of the algorithm to determine a noisy value of an observable; applying the noise inversion function to the noisy value; and determining, from the output of the noise inversion function, a corrected value of the observable.