DiscretizedAsset
Posted by andrea.odetti-2 on Nov 04, 2002; 4:03am
URL: http://quantlib.414.s1.nabble.com/DiscretizedAsset-tp2293.html
About DiscretizedAssets operation, I've written something like this, but I
would prefer it to be in the base class QuantLib::DiscretizedAsset
of course, these are not all useful math operations, but it is very easy to
add new ones
what do you think about?
bye
***************************************************************************
class GeneralDiscretized : public QuantLib::DiscretizedAsset {
public:
GeneralDiscretized(const QuantLib::Handle<QuantLib::NumericalMethod>&
method)
: QuantLib::DiscretizedAsset(method) {}
void reset(QuantLib::Size size) {
values_ = QuantLib::Array(size, 0.0);
}
GeneralDiscretized& operator=(double value) {
values_ = QuantLib::Array(values_.size(), value);
return *this;
}
GeneralDiscretized& operator+=(double value) {
values_ += value;
return *this;
}
GeneralDiscretized& operator-=(double value) {
values_ -= value;
return *this;
}
GeneralDiscretized& operator*=(double value) {
values_ *= value;
return *this;
}
GeneralDiscretized& operator/=(double value) {
values_ /= value;
return *this;
}
GeneralDiscretized& operator+=(QuantLib::DiscretizedAsset &asset) {
QuantLib::Array &valori = asset.values();
if (time_ != asset.time() || values_.size() != valori.size())
errore("Slices differenti!");
values_ += valori;
return *this;
}
GeneralDiscretized& operator-=(QuantLib::DiscretizedAsset &asset) {
QuantLib::Array &valori = asset.values();
if (time_ != asset.time() || values_.size() != valori.size())
errore("Slices differenti!");
values_ -= valori;
return *this;
}
GeneralDiscretized& max(QuantLib::DiscretizedAsset &asset) {
QuantLib::Array &valori = asset.values();
if (time_ != asset.time() || values_.size() != valori.size())
errore("Slices differenti!");
for (int i = 0; i < values_.size(); i++)
values_[i] = MAX(values_[i], valori[i]);
return *this;
}
GeneralDiscretized& max(double value) {
for (int i = 0; i < values_.size(); i++)
values_[i] = MAX(values_[i], value);
return *this;
}
};
----------------------------------------------------------------------------------------------------------------------------------------
La presente comunicazione è destinata esclusivamente al soggetto indicato
più sopra quale destinatario o ad eventuali altri soggetti autorizzati a
riceverla. Essa contiene informazioni strettamente confidenziali e
riservate, la cui comunicazione o diffusione a terzi è proibita, salvo che
non sia stata espressamente autorizzata.
Se avete ricevuto questa comunicazione per errore, Vi preghiamo di darne
immediata comunicazione al mittente e di cancellarne ogni evidenza dai
Vostri supporti.
----------------------------------------------------------------------------------------------------------------------------------------