LinearInterpolationAlongPolyline::LinearInterpolationAlongPolyline( const GeoLib::Polyline& ply, const std::vector<std::size_t>& vec_interpolate_point_ids, const std::vector<double>& vec_interpolate_point_values, const double search_length, const double default_value) : _ply(ply), _interpolation(createInterpolation(ply, vec_interpolate_point_ids, vec_interpolate_point_values)), _search_length(search_length), _default_value(default_value) {}
void SabrInterpolatedSmileSection::performCalculations() const { forwardValue_ = forward_->value(); vols_.clear(); actualStrikes_.clear(); // we populate the volatilities, skipping the invalid ones for (Size i=0; i<volHandles_.size(); ++i) { if (volHandles_[i]->isValid()) { if (hasFloatingStrikes_) { actualStrikes_.push_back(forwardValue_ + strikes_[i]); vols_.push_back(atmVolatility_->value() + volHandles_[i]->value()); } else { actualStrikes_.push_back(strikes_[i]); vols_.push_back(volHandles_[i]->value()); } } } // we are recreating the sabrinterpolation object unconditionnaly to // avoid iterator invalidation createInterpolation(); sabrInterpolation_->update(); }