1 /* inexactify.c - PSPP test program.
2 Copyright (C) 2006 Free Software Foundation, Inc.
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
9 This program is distributed in the hope that it will be useful, but
10 WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 /* Replaces insignificant digits by # to facilitate textual
26 comparisons. Not a perfect solution to the general-purpose
27 comparison problem, because rounding that affects earlier
28 digits can still cause differences. */
32 bool in_quotes = false;
33 bool in_exponent = false;
45 in_quotes = !in_quotes;
49 else if (in_quotes && !in_exponent)
51 if (strchr ("+dDeE", c) != NULL || (c == '-' && digits))
53 else if (strchr ("0123456789}JKLMNOPQR", c) != NULL)
55 if (digits || c >= '1')
58 c = isdigit (c) ? '#' : '@';