Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion general/g.region/printwindow.c
Original file line number Diff line number Diff line change
Expand Up @@ -622,7 +622,10 @@ void print_window(struct Cell_head *window, int print_flag, int flat_flag,
double convergence;

if (G_projection() == PROJECTION_XY)
convergence = NAN;
// GCC 5.4.0 says 0./0. is -nan
// Clang 3.8.0 says 0./0. is nan
// I stick to -nan in msvc too. But this has to rechecked.
sscanf("-nan", "%lf", &convergence);
else if (G_projection() == PROJECTION_LL)
convergence = 0.0;
else {
Expand Down
2 changes: 1 addition & 1 deletion lib/btree2/kdtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ int kdtree_knn(struct kdtree *t, double *c, int *uid, double *d, int k,
if (skip)
sn.uid = *skip;

maxdist = INFINITY;
sscanf("inf", "%lf", &maxdist);
found = 0;

/* go down */
Expand Down
12 changes: 9 additions & 3 deletions lib/vector/Vlib/box.c
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,9 @@ int Vect_get_line_box(struct Map_info *Map, int line, struct bound_box *Box)

Line = Plus->Line[line];
if (Line == NULL) { /* dead */
Box->N = Box->S = Box->E = Box->W = Box->T = Box->B = NAN;
double nan_val;
sscanf("-nan", "%lf", &nan_val);
Box->N = Box->S = Box->E = Box->W = Box->T = Box->B = nan_val;
return 0;
}

Expand Down Expand Up @@ -311,7 +313,9 @@ int Vect_get_area_box(struct Map_info *Map, int area, struct bound_box *Box)
Area = Plus->Area[area];

if (Area == NULL) { /* dead */
Box->N = Box->S = Box->E = Box->W = Box->T = Box->B = NAN;
double nan_val;
sscanf("-nan", "%lf", &nan_val);
Box->N = Box->S = Box->E = Box->W = Box->T = Box->B = nan_val;
return 0;
}

Expand Down Expand Up @@ -357,7 +361,9 @@ int Vect_get_isle_box(struct Map_info *Map, int isle, struct bound_box *Box)
Isle = Plus->Isle[isle];

if (Isle == NULL) { /* dead */
Box->N = Box->S = Box->E = Box->W = Box->T = Box->B = NAN;
double nan_val;
sscanf("-nan", "%lf", &nan_val);
Box->N = Box->S = Box->E = Box->W = Box->T = Box->B = nan_val;
return 0;
}

Expand Down
3 changes: 2 additions & 1 deletion raster/r.in.bin/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,8 @@ int main(int argc, char *argv[])
const char *outpre;
char output[GNAME_MAX];
const char *title;
double null_val = NAN;
double null_val;
sscanf("-nan", "%lf", &null_val);
int is_fp;
int is_signed;
int bytes, hbytes;
Expand Down
4 changes: 3 additions & 1 deletion raster/r.in.lidar/info.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,9 @@ int scan_bounds(LASReaderH LAS_reader, int shell_style, int extents, int update,
first = TRUE;

/* init to nan in case no points are found */
min_x = max_x = min_y = max_y = min_z = max_z = NAN;
double nan_val;
sscanf("-nan", "%lf", &nan_val);
min_x = max_x = min_y = max_y = min_z = max_z = nan_val;

G_verbose_message(_("Scanning data ..."));

Expand Down
12 changes: 6 additions & 6 deletions raster/r.li/r.li.padrange/padrange.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,8 @@ int calculate(int fd, struct area_entry *ad, double *result)
(((NS_DIST1 + NS_DIST2) / 2) / hd.rows);

/* get min and max patch size */
min = INFINITY;
max = -INFINITY;
sscanf("inf", "%lf", &min); /* inf */
sscanf("-inf", "%lf", &max); /* -inf */
for (old_pid = 1; old_pid <= pid; old_pid++) {
if (pst[old_pid].count > 0) {
area_p = cell_size_m * pst[old_pid].count / 10000;
Expand Down Expand Up @@ -561,8 +561,8 @@ int calculateD(int fd, struct area_entry *ad, double *result)
(((NS_DIST1 + NS_DIST2) / 2) / hd.rows);

/* get min and max patch size */
min = INFINITY;
max = -INFINITY;
sscanf("inf", "%lf", &min); /* inf */
sscanf("-inf", "%lf", &max); /* -inf */
for (old_pid = 1; old_pid <= pid; old_pid++) {
if (pst[old_pid].count > 0) {
area_p = cell_size_m * pst[old_pid].count / 10000;
Expand Down Expand Up @@ -805,8 +805,8 @@ int calculateF(int fd, struct area_entry *ad, double *result)
(((NS_DIST1 + NS_DIST2) / 2) / hd.rows);

/* get min and max patch size */
min = INFINITY;
max = -INFINITY;
sscanf("inf", "%lf", &min); /* inf */
sscanf("-inf", "%lf", &max); /* -inf */
for (old_pid = 1; old_pid <= pid; old_pid++) {
if (pst[old_pid].count > 0) {
area_p = cell_size_m * pst[old_pid].count / 10000;
Expand Down
6 changes: 4 additions & 2 deletions raster/r.out.gdal/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -998,6 +998,8 @@ int nodataval_check(double nodataval, GDALDataType datatype)

double set_default_nodata_value(GDALDataType datatype, double min, double max)
{
double nan_val;
sscanf("-nan", "%lf", &nan_val);
switch (datatype) {
case GDT_Byte:
if (max < TYPE_BYTE_MAX)
Expand Down Expand Up @@ -1043,11 +1045,11 @@ double set_default_nodata_value(GDALDataType datatype, double min, double max)

case GDT_Float32:
case GDT_CFloat32:
return NAN;
return nan_val;

case GDT_Float64:
case GDT_CFloat64:
return NAN;
return nan_val;

default:
return 0;
Expand Down
4 changes: 2 additions & 2 deletions raster/r.series.accumulate/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,8 +171,8 @@ int main(int argc, char *argv[])
if (G_parser(argc, argv))
exit(EXIT_FAILURE);

lo = -INFINITY;
hi = INFINITY;
sscanf("-inf", "%lf", &lo);
sscanf("inf", "%lf", &hi);
method = METHOD_GDD;
if (G_strncasecmp(parm.method->answer, "gdd", 3) == 0)
method = METHOD_GDD;
Expand Down
4 changes: 2 additions & 2 deletions raster/r.series/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@ int main(int argc, char *argv[])
threaded = nprocs > 1;
#endif

lo = -INFINITY;
hi = INFINITY;
sscanf("-inf", "%lf", &lo);
sscanf("inf", "%lf", &hi);
if (parm.range->answer) {
lo = atof(parm.range->answers[0]);
hi = atof(parm.range->answers[1]);
Expand Down
4 changes: 2 additions & 2 deletions raster/r.univar/r3.univar_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -198,8 +198,8 @@ int main(int argc, char *argv[])
/* table field separator */
zone_info.sep = G_option_to_separator(param.separator);

dmin = NAN;
dmax = NAN;
sscanf("-nan", "%lf", &dmin); /* set to nan as default */
sscanf("-nan", "%lf", &dmax); /* set to nan as default */
zone_info.min = 0;
zone_info.max = 0;
zone_info.n_zones = 0;
Expand Down
25 changes: 16 additions & 9 deletions raster/r.univar/stats.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ univar_stat *create_univar_stat_struct(int map_type, int n_perc)
univar_stat *stats;
int i;
int n_zones = zone_info.n_zones;
double nan_val;
sscanf("-nan", "%lf", &nan_val);

if (n_zones == 0)
n_zones = 1;
Expand All @@ -31,8 +33,8 @@ univar_stat *create_univar_stat_struct(int map_type, int n_perc)
for (i = 0; i < n_zones; i++) {
stats[i].sum = 0.0;
stats[i].sumsq = 0.0;
stats[i].min = NAN;
stats[i].max = NAN;
stats[i].min = nan_val; /* set to nan as default */
stats[i].max = nan_val; /* set to nan as default */
stats[i].n_perc = n_perc;
if (n_perc > 0)
stats[i].perc = (double *)G_malloc(n_perc * sizeof(double));
Expand Down Expand Up @@ -108,6 +110,8 @@ int print_stats(univar_stat *stats, enum OutputFormat format)
}

int z, n_zones = zone_info.n_zones;
double nan_val;
sscanf("-nan", "%lf", &nan_val);

if (n_zones == 0)
n_zones = 1;
Expand Down Expand Up @@ -136,8 +140,9 @@ int print_stats(univar_stat *stats, enum OutputFormat format)
stdev = sqrt(variance);
var_coef = (stdev / mean) * 100.; /* perhaps stdev/fabs(mean) ? */

if (stats[z].n == 0)
stats[z].sum = stats[z].sum_abs = NAN;
if (stats[z].n == 0) {
stats[z].sum = stats[z].sum_abs = nan_val;
}
snprintf(sum_str, sizeof(sum_str), "%.15g", stats[z].sum);
G_trim_decimal(sum_str);

Expand Down Expand Up @@ -272,9 +277,9 @@ int print_stats(univar_stat *stats, enum OutputFormat format)
quartile_perc = (double *)G_calloc(stats[z].n_perc, sizeof(double));

if (stats[z].n == 0) {
quartile_25 = median = quartile_75 = NAN;
quartile_25 = median = quartile_75 = nan_val;
for (i = 0; i < stats[z].n_perc; i++)
quartile_perc[i] = NAN;
quartile_perc[i] = nan_val;
}
else {
for (i = 0; i < stats[z].n_perc; i++) {
Expand Down Expand Up @@ -510,6 +515,8 @@ int print_stats_table(univar_stat *stats)
{
unsigned int i;
int z, n_zones = zone_info.n_zones;
double nan_val;
sscanf("-nan", "%lf", &nan_val);

if (n_zones == 0)
n_zones = 1;
Expand Down Expand Up @@ -584,7 +591,7 @@ int print_stats_table(univar_stat *stats)
var_coef = (stdev / mean) * 100.; /* perhaps stdev/fabs(mean) ? */

if (stats[z].n == 0)
stats[z].sum = stats[z].sum_abs = NAN;
stats[z].sum = stats[z].sum_abs = nan_val;

if (zone_info.n_zones) {
int z_cat = z + zone_info.min;
Expand Down Expand Up @@ -632,9 +639,9 @@ int print_stats_table(univar_stat *stats)
quartile_perc = (double *)G_calloc(stats[z].n_perc, sizeof(double));

if (stats[z].n == 0) {
quartile_25 = median = quartile_75 = NAN;
quartile_25 = median = quartile_75 = nan_val;
for (i = 0; i < stats[z].n_perc; i++)
quartile_perc[i] = NAN;
quartile_perc[i] = nan_val;
}
else {
for (i = 0; i < stats[z].n_perc; i++) {
Expand Down
4 changes: 3 additions & 1 deletion raster3d/r3.in.lidar/info.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,9 @@ int scan_bounds(LASReaderH LAS_reader, int shell_style, int extents, int update,
first = TRUE;

/* init to nan in case no points are found */
min_x = max_x = min_y = max_y = min_z = max_z = NAN;
double nan_val;
sscanf("-nan", "%lf", &nan_val);
min_x = max_x = min_y = max_y = min_z = max_z = nan_val;

G_verbose_message(_("Scanning data ..."));

Expand Down
4 changes: 2 additions & 2 deletions vector/v.cluster/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ int main(int argc, char *argv[])
c[2] = 0.0;
n = 0;
sum = sumsq = 0;
min = INFINITY;
sscanf("inf", "%lf", &min);
max = 0;
kd = G_malloc(minpnts * sizeof(double));
ki = G_malloc(minpnts * sizeof(int));
Expand Down Expand Up @@ -462,7 +462,7 @@ int main(int argc, char *argv[])
c[2] = 0.0;
n = 0;
sum = sumsq = 0;
min = INFINITY;
sscanf("inf", "%lf", &min);
max = 0;
kd = G_malloc(minpnts * sizeof(double));
ki = G_malloc(minpnts * sizeof(int));
Expand Down
4 changes: 3 additions & 1 deletion vector/v.distance/distance.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ int get_line_box(const struct line_pnts *Points, struct bound_box *box)
int i;

if (Points->n_points == 0) {
box->E = box->W = box->N = box->S = box->T = box->B = NAN;
double nan_val;
sscanf("-nan", "%lf", &nan_val);
box->E = box->W = box->N = box->S = box->T = box->B = nan_val;
return 0;
}

Expand Down
2 changes: 1 addition & 1 deletion vector/v.voronoi/skeleton.c
Original file line number Diff line number Diff line change
Expand Up @@ -533,7 +533,7 @@ int tie_up(void)
IPoints[i]);
}

distmin = INFINITY;
sscanf("inf", "%lf", &distmin);
xmin = x;
ymin = y;

Expand Down
Loading