+ if (i < nr-2) {
+ val = entry[-2].val + 2*entry[-1].val + 3*entry[0].val + 2*entry[1].val + entry[2].val;
+ entry->smoothed = (val+4) / 9;
+ }
+ /* vertical velocity in mm/sec */
+ if (entry[0].sec - entry[-1].sec) {
+ val = (entry[0].val - entry[-1].val) / (entry[0].sec - entry[-1].sec);
+ if (val < -304) /* ascent faster than -60ft/min */
+ entry->velocity = CRAZY;
+ else if (val < -152) /* above -30ft/min */
+ entry->velocity = FAST;
+ else if (val < -76) /* -15ft/min */
+ entry->velocity = MODERATE;
+ else if (val < -25) /* -5ft/min */
+ entry->velocity = SLOW;
+ else if (val < 25) /* very hard to find data, but it appears that the recommendations
+ for descent are usually about 2x ascent rate; still, we want
+ stable to mean stable */
+ entry->velocity = STABLE;
+ else if (val < 152) /* between 5 and 30ft/min is considered slow */
+ entry->velocity = SLOW;
+ else if (val < 304) /* up to 60ft/min is moderate */
+ entry->velocity = MODERATE;
+ else if (val < 507) /* up to 100ft/min is fast */
+ entry->velocity = FAST;
+ else /* more than that is just crazy - you'll blow your ears out */
+ entry->velocity = CRAZY;
+ } else
+ entry->velocity = STABLE;