Warning: session_start(): open(/var/lib/php/sessions/sess_1eprnenuf0ar66n4cn765vesqn, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass CompressToInterpolatedDoubleArray {
// raw data to compress (integers)
int[] data;
// output
InterpolatedDoubleArray result;
// internal
new IntBuffer indices;
new DoubleBuffer values;
*(int[] *data) {}
InterpolatedDoubleArray get() {
int iData = 0;
while (iData < data.length) {
int startValue = data[iData];
// see how far the straight line goes from iData
DoubleRange totalSlopeRange = null;
int jData; // our straight line ends at jData-1
for (jData = iData+1; jData < data.length; jData++) {
double x = data[jData], h = jData-iData;
DoubleRange xRange = doubleRange(x-0.5, x+0.5);
DoubleRange slopeRange = doubleRange(xRange.start/h, xRange.end/h);
if (totalSlopeRange == null)
totalSlopeRange = slopeRange;
else {
slopeRange = intersectRanges(slopeRange, totalSlopeRange);
if (empty(slopeRange))
break;
else
totalSlopeRange = slopeRange;
}
}
printVars(+iData, +jData, +totalSlopeRange);
indices.add(iData);
values.add(data[iData]);
iData = jData;
}
ret result = new InterpolatedDoubleArray(indices.toArrayNonNull(), values.toArrayNonNull());
}
}