Posted by
Andreas Spengler-2 on
URL: http://quantlib.414.s1.nabble.com/Compilation-problems-with-SUN-CC-tp12581p12586.html
Also in ql/models/marketmodels/models
*** capletcoterminalalphacalibration.cpp.orig Fri Feb 20 15:11:46 2009
--- capletcoterminalalphacalibration.cpp Fri Feb 20 15:12:00 2009
***************
*** 128,134 ****
std::vector<std::vector<Volatility> > newVols;
std::vector<Volatility> theseNewVols(numberOfRates);
std::vector<Volatility> firstRateVols(numberOfRates);
! firstRateVols[0] = sqrt(displacedSwapVariances[0]->variances()[0]);
std::vector<Volatility> secondRateVols(numberOfRates);
std::vector<Real> correlations(numberOfRates);
newVols.push_back(firstRateVols);
--- 128,134 ----
std::vector<std::vector<Volatility> > newVols;
std::vector<Volatility> theseNewVols(numberOfRates);
std::vector<Volatility> firstRateVols(numberOfRates);
! firstRateVols[0] =
std::sqrt(displacedSwapVariances[0]->variances()[0]);
std::vector<Volatility> secondRateVols(numberOfRates);
std::vector<Real> correlations(numberOfRates);
newVols.push_back(firstRateVols);
***************
*** 146,152 ****
const std::vector<Real>& var =
displacedSwapVariances[i+1]->variances();
for (Size j =0; j < i+2; ++j)
! secondRateVols[j] = sqrt(var[j]);
for (Size k=0; k < i+1; k++) {
Real correlation=0.0;
--- 146,152 ----
const std::vector<Real>& var =
displacedSwapVariances[i+1]->variances();
for (Size j =0; j < i+2; ++j)
! secondRateVols[j] = std::sqrt(var[j]);
for (Size k=0; k < i+1; k++) {
Real correlation=0.0;
----------------------------------------------------------------------------
*** capletcoterminalperiodic.cpp.orig Fri Feb 20 15:09:51 2009
--- capletcoterminalperiodic.cpp Fri Feb 20 15:10:05 2009
***************
*** 151,157 ****
for (Size i=0; i < numberBigRates; ++i)
{
! modelSwaptionVols[i] =
sqrt(swaptionTotCovariance[i][i]/periodsmm->evolution().rateTimes()[i]);
Real scale = marketSwaptionVols[i]/modelSwaptionVols[i];
scalingFactors[i] *= scale; // since applied to vol
--- 151,157 ----
for (Size i=0; i < numberBigRates; ++i)
{
! modelSwaptionVols[i] =
std::sqrt(swaptionTotCovariance[i][i]/periodsmm->evolution().rateTimes()[i]);
Real scale = marketSwaptionVols[i]/modelSwaptionVols[i];
scalingFactors[i] *= scale; // since applied to vol
***************
*** 162,168 ****
for (Size i=0; i < numberBigRates; ++i)
modelSwaptionVolsMatrix[iterationsDone][i] =
modelSwaptionVols[i];
! periodSwaptionRmsError =
sqrt(totalSwaptionError/numberBigRates);
errorImprovement = previousError -periodSwaptionRmsError;
previousError = periodSwaptionRmsError;
}
--- 162,168 ----
for (Size i=0; i < numberBigRates; ++i)
modelSwaptionVolsMatrix[iterationsDone][i] =
modelSwaptionVols[i];
! periodSwaptionRmsError =
std::sqrt(totalSwaptionError/numberBigRates);
errorImprovement = previousError -periodSwaptionRmsError;
previousError = periodSwaptionRmsError;
}
---------------------------------------------------------------------------
*** capletcoterminalswaptioncalibration.cpp.orig Fri Feb 20
15:07:52 2009
--- capletcoterminalswaptioncalibration.cpp Fri Feb 20 15:08:29 2009
***************
*** 134,140 ****
for (Size j=0; j<numberOfRates; ++j)
for (Size k=0; k < CovarianceSwapPseudos[i].columns();
++k)
CovarianceSwapPseudos[i][j][k] *=
! sqrt(swapTimeInhomogeneousVariances[i][j]);
CovarianceSwapMarginalCovs[i] = CovarianceSwapPseudos[i] *
transpose(CovarianceSwapPseudos[i]);
--- 134,140 ----
for (Size j=0; j<numberOfRates; ++j)
for (Size k=0; k < CovarianceSwapPseudos[i].columns();
++k)
CovarianceSwapPseudos[i][j][k] *=
!
std::sqrt(swapTimeInhomogeneousVariances[i][j]);
CovarianceSwapMarginalCovs[i] = CovarianceSwapPseudos[i] *
transpose(CovarianceSwapPseudos[i]);
***************
*** 162,168 ****
for (Size k=0; k<numberOfFactors; ++k)
correlation += thisPseudo[i-1][k]*thisPseudo[i][k];
almostTotCovariance[i] += correlation *
! sqrt(swapTimeInhomogeneousVariances[j][i] *
swapTimeInhomogeneousVariances[j][i-1]);
}
if (i>0) {
--- 162,168 ----
for (Size k=0; k<numberOfFactors; ++k)
correlation += thisPseudo[i-1][k]*thisPseudo[i][k];
almostTotCovariance[i] += correlation *
! std::sqrt(swapTimeInhomogeneousVariances[j][i] *
swapTimeInhomogeneousVariances[j][i-1]);
}
if (i>0) {
***************
*** 171,177 ****
for (Size k=0; k<numberOfFactors; ++k)
correlation += thisPseudo[i-1][k]*thisPseudo[i][k];
leftCovariance[i] = correlation *
! sqrt(swapTimeInhomogeneousVariances[j][i] *
swapTimeInhomogeneousVariances[j][i-1]);
}
}
--- 171,177 ----
for (Size k=0; k<numberOfFactors; ++k)
correlation += thisPseudo[i-1][k]*thisPseudo[i][k];
leftCovariance[i] = correlation *
! std::sqrt(swapTimeInhomogeneousVariances[j][i] *
swapTimeInhomogeneousVariances[j][i-1]);
}
}
***************
*** 260,272 ****
// pick up the minimum vol for the caplet
root = minimum;
} else if (lowestRoot) {
! root = (-linearPart-sqrt(disc))/(2.0*quadraticPart);
} else {
if (minimum>1.0)
! root = (-linearPart-sqrt(disc))/(2.0*quadraticPart);
else {
rightUsed = true;
! root = (-linearPart+sqrt(disc))/(2.0*quadraticPart);
}
}
--- 260,272 ----
// pick up the minimum vol for the caplet
root = minimum;
} else if (lowestRoot) {
! root = (-linearPart-std::sqrt(disc))/(2.0*quadraticPart);
} else {
if (minimum>1.0)
! root =
(-linearPart-std::sqrt(disc))/(2.0*quadraticPart);
else {
rightUsed = true;
! root =
(-linearPart+std::sqrt(disc))/(2.0*quadraticPart);
}
}
***************
*** 274,280 ****
Real varianceToFind = totVariance[i]-varianceFound;
Real mult =
varianceToFind/swapTimeInhomogeneousVariances[i][i];
if (mult<=0.0 && rightUsed) {
! root = (-linearPart-sqrt(disc))/(2.0*quadraticPart);
varianceFound = root*root*almostTotVariance[i];
varianceToFind = totVariance[i]-varianceFound;
mult = varianceToFind/swapTimeInhomogeneousVariances[i][i];
--- 274,280 ----
Real varianceToFind = totVariance[i]-varianceFound;
Real mult =
varianceToFind/swapTimeInhomogeneousVariances[i][i];
if (mult<=0.0 && rightUsed) {
! root = (-linearPart-std::sqrt(disc))/(2.0*quadraticPart);
varianceFound = root*root*almostTotVariance[i];
varianceToFind = totVariance[i]-varianceFound;
mult = varianceToFind/swapTimeInhomogeneousVariances[i][i];
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev