Ticket #7226: relax.patch

File relax.patch, 1.2 KB (added by Alex Hagen-Zanker <ahh34@…>, 10 years ago)

patch

  • relax.hpp

     
    5252      D d_u = get(d, u), d_v = get(d, v);
    5353      W w_e = get(w, e);
    5454     
    55       // The redundant gets in the return statements are to ensure that extra
     55      // The redundant nested if statements are to ensure that extra
    5656      // floating-point precision in x87 registers does not lead to relax()
    5757      // returning true when the distance did not actually change.
    5858      if ( compare(combine(d_u, w_e), d_v) ) {
    5959        put(d, v, combine(d_u, w_e));
    60         put(p, v, u);
    61         return compare(get(d, v), d_v);
     60        if(compare(get(d, v), d_v) {
     61          put(p, v, u);
     62          return true;
     63        }
    6264      } else if (is_undirected && compare(combine(d_v, w_e), d_u)) {
    6365        put(d, u, combine(d_v, w_e));
    64         put(p, u, v);
    65         return compare(get(d, u), d_u);
    66       } else
    67         return false;
     66        if(compare(get(d, u), d_u) ){
     67          put(p, u, v);
     68          return true;
     69        }
     70      }
     71      return false;
    6872    }
    6973   
    7074    template <class Graph, class WeightMap,