~vcs-imports/goffice/master

« back to all changes in this revision

Viewing changes to goffice/math/go-math.c

  • Committer: Morten Welinder
  • Date: 2023-11-21 04:47:05 UTC
  • Revision ID: git-v1:9eef06fa56fbe66ee8590d94b708315d57be8064
go_add_epsilon: leave infinites alone as claimed

Show diffs side-by-side

added added

removed removed

Lines of Context:
203
203
double
204
204
go_add_epsilon (double x)
205
205
{
 
206
        if (!go_finite (x) || x == 0)
 
207
                return x;
206
208
#ifdef HAVE_NEXTAFTER
207
 
        return x == 0 ? x : nextafter (x, go_pinf);
 
209
        return nextafter (x, go_pinf);
208
210
#else
209
 
        if (!go_finite (x) || x == 0)
210
 
                return x;
211
 
        else if (x < 0)
 
211
        if (x < 0)
212
212
                return 0 - go_sub_epsilon(-x);
213
213
        else {
214
214
                int e;
229
229
double
230
230
go_sub_epsilon (double x)
231
231
{
 
232
        if (!go_finite (x) || x == 0)
 
233
                return x;
232
234
#ifdef HAVE_NEXTAFTER
233
 
        return x == 0 ? x : nextafter (x, go_ninf);
 
235
        return nextafter (x, go_ninf);
234
236
#else
235
 
        if (!go_finite (x) || x == 0)
236
 
                return x;
237
 
        else if (x < 0)
 
237
        if (x < 0)
238
238
                return 0 - go_add_epsilon(-x);
239
239
        else {
240
240
                int e;
424
424
}
425
425
 
426
426
 
427
 
/*
428
 
 * go_strtod: A sane strtod.
 
427
/**
 
428
 * go_strtod:
429
429
 * @s: string to convert
430
430
 * @end: (out) (transfer none) (optional): pointer to end of string.
431
431
 *
686
686
}
687
687
 
688
688
 
689
 
/*
690
 
 * go_strtold: A sane strtold.
 
689
/**
 
690
 * go_strtold:
691
691
 * @s: string to convert
692
692
 * @end: (out) (transfer none) (optional): pointer to end of string.
693
693
 *
757
757
                }
758
758
                g_string_append_c (tmp, *s++);
759
759
        }
 
760
        errno = 0;
760
761
        res = strtold (tmp->str, NULL);
761
762
        save_errno = errno;
762
763
        g_string_free (tmp, TRUE);
775
776
long double
776
777
go_add_epsilonl (long double x)
777
778
{
 
779
        if (!go_finitel (x) || x == 0)
 
780
                return x;
778
781
#ifdef HAVE_NEXTAFTERL
779
 
        return x == 0 ? x : nextafterl (x, go_pinfl);
 
782
        return nextafterl (x, go_pinfl);
780
783
#else
781
 
        if (!go_finitel (x) || x == 0)
782
 
                return x;
783
 
        else if (x < 0)
 
784
        if (x < 0)
784
785
                return 0 - go_sub_epsilonl(-x);
785
786
        else {
786
787
                int e;
801
802
long double
802
803
go_sub_epsilonl (long double x)
803
804
{
 
805
        if (!go_finitel (x) || x == 0)
 
806
                return x;
804
807
#ifdef HAVE_NEXTAFTERL
805
808
        return x == 0 ? x : nextafterl (x, go_ninfl);
806
809
#else
807
 
        if (!go_finitel (x) || x == 0)
808
 
                return x;
809
 
        else if (x < 0)
 
810
        if (x < 0)
810
811
                return 0 - go_add_epsilonl(-x);
811
812
        else {
812
813
                int e;