--- trunk/gadget/conversionindex.cc 2014/02/10 17:09:07 1 +++ trunk/gadget/conversionindex.cc 2015/04/29 12:55:30 2 @@ -169,3 +169,36 @@ } } } + + + +void ConversionIndex::interpolateLengths(DoubleVector& Vf, const double* Vc, int size) { + + if (!interpolate) + handle.logMessage(LOGFAIL, "Error in conversionindex - cannot interpolate between lengthgroups"); + + int i; + if (samedl) { + if (minlength > 0) + for (i = 0; i < minlength; i++) + Vf[i] = Vc[0]; + + for (i = minlength; i < maxlength; i++) + Vf[i] = Vc[i + offset]; + + //int size = sizeof(Vc)/sizeof(double*); + + if (maxlength < Vf.Size()) + for (i = maxlength; i < Vf.Size(); i++) + Vf[i] = Vc[size - 1]; + + } else { + for (i = 0; i < Vf.Size(); i++) { + if (isEqual(iratio[i], -1.0)) + Vf[i] = Vc[ipos[i]]; + else + Vf[i] = (Vc[ipos[i]] * (1.0 - iratio[i])) + (Vc[ipos[i] + 1] * iratio[i]); + } + } + +}