private void matchWeibull(double mean, Weibull w) {
    myC2vCDF.setRange(0.0, myMaxC2v);
    boolean flag = true;
    do {
      double c2v = myC2vCDF.getValue();
      myWFunction.setC2v(c2v);
      findBracket();
      myZeroFinder.setInterval(myWFunction, myAlphaNeg, myAlphaPos);
      myZeroFinder.setInitialPoint((myAlphaNeg + myAlphaPos) / 2.0);

      myZeroFinder.evaluate();
      double shape = myZeroFinder.getResult();
      double scale = mean / Gamma.gammaFunction(1.0 + 1.0 / shape);
      w.setScale(scale);
      w.setShape(shape);
      if (myZeroFinder.hasConverged()) flag = true;
      else flag = false;
    } while (flag == false);
  }