question: public double forwardTimeEvolution ( int x , int y , double t ) { if ( t < 0 ) { throw new IllegalArgumentException ( "Cannot go backwards in time: t=" + t ) ; } double m [ ] = { getForwardRate ( 0 , 1 ) , getForwardRate ( 1 , 0 ) } ; double mt = m [ 0 ] + m [ 1 ] ; if ( y == x ) { return ( m [ x ] * Math . exp ( - mt * t ) + m [ 1 - x ] ) / mt ; } else { return m [ x ] * ( 1.0 - Math . exp ( - mt * t ) ) / mt ; } }
target:  The probability of ending in state y after time t, conditional on starting in state x, according to the forward evolution matrix.