/* See {dsm_gamma.h} */ /* Last edited on 2016-04-12 13:25:52 by stolfilocal */ #define _GNU_SOURCE #include #include #include #include #include #include double dsm_gamma_pick_parameter(const char *p_name, double p_given, double p_file, double p_default, bool_t verbose) { demand(! isnan(p_default), "invalid default"); double p; if (! isnan(p_given)) { p = p_given; if (verbose && (! isnan(p_file)) && (p_given != p_file)) { fprintf(stderr, "file %s (= %.4f) overriden\n", p_name, p_file); } } else if (!isnan(p_file)) { p = p_file; if (verbose) { fprintf(stderr, "using file %s = %.4f\n", p_name, p_file); } } else { p = p_default; if (verbose) { fprintf(stderr, "using default %s = %.4f\n", p_name, p_default); } } demand(p > 0.0, "invalid parameter value"); return p; } double dsm_gamma_arg_parse(argparser_t *pp, const char *keyword) { double gamma = NAN; if (argparser_keyword_present(pp, (char *)keyword)) { gamma = argparser_get_next_double(pp, dsm_gamma_MIN, dsm_gamma_MAX); } return gamma; }