summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2016-11-27 11:31:30 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-12-04 05:32:08 +0900
commitf03acb9e9a2d6fae22be6288be13ce63fd4f50ea (patch)
tree5b4be4d5168073288a08ba418f391522e33985ce /core
parent4d0d37b6903a65ade442fece35238d1670522df2 (diff)
downloadsubsurface-f03acb9e9a2d6fae22be6288be13ce63fd4f50ea.tar.gz
Fix effective GFs in notes
This patch fixes two bugs: 1) It first computes the effective gradient factors and then composes the notes with the diveplan rather than the other way around. 2) It does not try to fit a line through a single point. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core')
-rw-r--r--core/deco.c2
-rw-r--r--core/planner.c8
2 files changed, 5 insertions, 5 deletions
diff --git a/core/deco.c b/core/deco.c
index 57acfe951..a445c2539 100644
--- a/core/deco.c
+++ b/core/deco.c
@@ -657,7 +657,7 @@ double get_gf(double ambpressure_bar, const struct dive *dive)
double regressiona()
{
- if (sum1) {
+ if (sum1 > 1) {
double avxy = sumxy / sum1;
double avx = (double)sumx / sum1;
double avy = sumy / sum1;
diff --git a/core/planner.c b/core/planner.c
index 488fcb9c4..ccb71c3ea 100644
--- a/core/planner.c
+++ b/core/planner.c
@@ -1362,15 +1362,15 @@ bool plan(struct diveplan *diveplan, char **cached_datap, bool is_planner, bool
} while (!is_final_plan);
plan_add_segment(diveplan, clock - previous_point_time, 0, current_cylinder, po2, false);
- create_dive_from_plan(diveplan, is_planner);
- add_plan_to_notes(diveplan, &displayed_dive, show_disclaimer, error);
- fixup_dc_duration(&displayed_dive.dc);
-
if(prefs.deco_mode == VPMB) {
diveplan->eff_gfhigh = rint(100.0 * regressionb());
diveplan->eff_gflow = rint(100*(regressiona() * first_stop_depth + regressionb()));
}
+ create_dive_from_plan(diveplan, is_planner);
+ add_plan_to_notes(diveplan, &displayed_dive, show_disclaimer, error);
+ fixup_dc_duration(&displayed_dive.dc);
+
free(stoplevels);
free(gaschanges);
free(bottom_cache);