s1d.setMaxEvaluations(1000);
final double /* @Real */yb = s1d.solve(function, 1e-6, 0.00, -100.0, 100.0);
final double /* @Real */h1 = (yb - muy_) / (sigmay_ * txy) - rhoxy_ * (x - mux_) / (sigmax_ * txy);
// not sure if evaluate method is equivalent of op overloading -> we have to test it ;-)
double /* @Real */value = /* phi(-w_*h1) */phi.op(-w_ * h1);
for (i = 0; i < size_; i++) {
final double /* @Real */h2 = h1 + Bb_.get(i) * sigmay_ * Math.sqrt(1.0 - rhoxy_ * rhoxy_);
final double /* @Real */kappa = -Bb_.get(i)
* (muy_ - 0.5 * txy * txy * sigmay_ * sigmay_ * Bb_.get(i) + rhoxy_ * sigmay_ * (x - mux_) / sigmax_);