| # Data file for mpc_strtoc. |
| # |
| # Copyright (C) 2009 INRIA |
| # |
| # This file is part of GNU MPC. |
| # |
| # GNU MPC is free software; you can redistribute it and/or modify it under |
| # the terms of the GNU Lesser General Public License as published by the |
| # Free Software Foundation; either version 3 of the License, or (at your |
| #o ption) any later version. |
| # |
| # GNU MPC is distributed in the hope that it will be useful, but WITHOUT ANY |
| # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for |
| # more details. |
| # |
| # You should have received a copy of the GNU Lesser General Public License |
| # along with this program. If not, see http://www.gnu.org/licenses/ . |
| # |
| # The format respects the parameter order in function prototype as follow: |
| # |
| # INEX_RE INEX_IM PREC_ROP_RE ROP_RE PREC_ROP_IM ROP_IM "NSTRING" "RSTRING" BASE RND_RE RND_IM |
| # |
| # The string NSTRING is considered as a complex number rop = rop1 + i*rop2 |
| # written in base BASE. The remainder of the string, i.e. non-whitespace |
| # characters being not part of the number, is equal to RSTRING. |
| # |
| # ROP_RE is checked against rop1 rounded to the precision PREC_ROP_RE |
| # in the direction RND_RE |
| # ROP_IM is checked against rop2 rounded to the precision PREC_ROP_IM |
| # in the direction RND_IM |
| # INEX_RE is the ternary value for the real part with the following notation: |
| # "?" ternary value not checked |
| # "!" function should return error indicator -1 |
| # "+" if ROP_RE is greater than the exact mathematical result |
| # "0" if ROP_RE is exactly the mathematical result |
| # "-" if ROP_RE is less than the exact mathematical result |
| # (m.m. INEX_IM) |
| # rounding modes notation: |
| # "N" is rounding to nearest |
| # "Z" is rounding towards zero |
| # "U" is rounding towards plus infinity |
| # "D" is rounding towards minus infinity |
| # Use prefixes "0b" for values in base two, "0x" for values in base sixteen, |
| # no prefix for value in base ten. |
| # In all bases, "nan" is NaN, "inf" is infinity; |
| # The sign of the result is checked with "+inf", "-inf", "-0", or "+0". |
| |
| # invalid base |
| ! ! 53 nan 53 nan "(1 1)" "(1 1)" 99 N N |
| ! ! 53 nan 53 nan "(1 1)" "(1 1)" 1 N N |
| |
| # invalid strings |
| ! ! 53 nan 53 nan "" "" 10 N N |
| ! ! 53 nan 53 nan "non" "non" 10 N N |
| ! ! 53 nan 53 nan "NON" "NON" 10 N N |
| ! ! 53 nan 53 nan "N A N" "N A N" 10 N N |
| ! ! 53 nan 53 nan "(1) 1" "(1) 1" 10 N N #no imaginary part |
| ! ! 53 nan 53 nan "." "." 10 N N |
| ! ! 53 nan 53 nan ". 1" ". 1" 10 N N #no space allowed here |
| ! ! 53 nan 53 nan "+ 1" "+ 1" 2 N N #no space allowed here |
| ! ! 53 nan 53 nan "+3 " "+3 " 2 N N #invalid digit |
| ! ! 53 nan 53 nan "+ INF " "+ INF " 10 N N #no space allowed here |
| ! ! 53 nan 53 nan "( +INF)" "( +INF)" 10 N N |
| ! ! 53 nan 53 nan "(1 +1 " "(1 +1 " 10 N N |
| ! ! 53 nan 53 nan "(1+1)" "(1+1)" 10 N N |
| ! ! 53 nan 53 nan "(1 + 1)" "(1 + 1)" 10 N N |
| ! ! 53 nan 53 nan "(@nan@(quiet)" "(@nan@(quiet)" 10 N N |
| ! ! 53 nan 53 nan "zero" "zero" 10 N N |
| ! ! 53 nan 53 nan "&^+" "&^+" 10 N N |
| ! ! 53 nan 53 nan "i" "i" 18 N N |
| ! ! 53 nan 53 nan "I" "I" 18 N N |
| ! ! 53 nan 53 nan "z" "z" 35 N N |
| ! ! 53 nan 53 nan "Z" "Z" 35 N N |
| ! ! 53 nan 53 nan "(i 0)" "(i 0)" 18 N N |
| ! ! 53 nan 53 nan "(I 0)" "(I 0)" 18 N N |
| ! ! 53 nan 53 nan "(z 0)" "(z 0)" 35 N N |
| ! ! 53 nan 53 nan "(Z 0)" "(Z 0)" 35 N N |
| ! ! 53 nan 53 nan "(0 i)" "(0 i)" 18 N N |
| ! ! 53 nan 53 nan "(0 I)" "(0 I)" 18 N N |
| ! ! 53 nan 53 nan "(0 z)" "(0 z)" 35 N N |
| ! ! 53 nan 53 nan "(0 Z)" "(0 Z)" 35 N N |
| |
| # special values |
| 0 0 53 nan 53 +0 "nan" "" 10 N N |
| 0 0 53 +nan 53 +0 "+NAN" "" 10 N N |
| 0 0 53 nan 53 +0 " @NAN@ " " " 10 N N |
| 0 0 53 nan 53 nan "(@nan@(QUIET) nan)" "" 10 N N |
| 0 0 53 nan 53 +0 "@nan@(quiet" "(quiet" 10 N N |
| 0 0 53 nan 53 +0 "NaN((keep out))" "((keep out))" 10 N N |
| 0 0 53 nan 53 +0 "nan(0 1)" "(0 1)" 10 N N |
| 0 0 53 nan 53 +0 "nan(0-1)" "(0-1)" 10 N N |
| 0 0 53 nan 53 +0 "nan(0_1)" "" 10 N N |
| 0 0 53 nan 53 +0 " nan nan nan nan" " nan nan nan" 10 N N |
| 0 0 53 inf 53 +0 "inf" "" 10 N N |
| 0 0 53 -inf 53 +0 "-inf" "" 10 N N |
| 0 0 53 +inf 53 +0 " infinity" "" 10 N N |
| 0 0 53 +inf 53 +0 "+INF x" " x" 10 N N |
| 0 0 53 +0 53 +inf "(0 +inf)" "" 10 N N |
| 0 0 53 +0 53 +inf " (+0 INF) " " " 10 N N |
| 0 0 53 +0 53 -inf "(0 -infinity)" "" 10 N N |
| 0 0 53 +0 53 -inf " (+0 -INF)" "" 10 N N |
| 0 0 53 -inf 53 -0 " (-@inf@ -0)" "" 10 N N |
| 0 0 53 +inf 53 nan "(+inf nan(9u137)) " " " 10 N N |
| 0 0 53 nan 53 +0 "NaN + inf" " + inf" 10 N N |
| |
| # pure real argument |
| 0 0 53 +0 53 +0 "0" "" 10 N N |
| 0 0 53 +0 53 +0 "00000" "" 10 N N |
| 0 0 53 +0 53 +0 "+0" "" 10 N N |
| 0 0 53 -0 53 +0 "-0" "" 10 N N |
| 0 0 53 +1 53 +0 "1" "" 10 N N |
| 0 0 53 +1 53 +0 "001" "" 10 N N |
| 0 0 53 +1 53 +0 "1 +1" " +1" 10 N N |
| 0 0 53 +1 53 +0 "1a" "a" 10 N N |
| 0 0 53 +1 53 +0 "1e-" "e-" 10 N N |
| 0 0 53 +1 53 +0 "1+2" "+2" 10 N N |
| - 0 53 +0x9D70A3D70A3D7p-51 53 +0 "(+1.23 0.0)" "" 10 N N |
| 0 0 53 -10 53 +0 "(-10. 0000) " " " 10 N N |
| 0 0 53 +0x5p-3 53 -0 "(.625 -0)" "" 10 N N |
| - 0 53 +0x14E718D7D7625Ap+612 53 +0 "(1e200 0)" "" 10 N N |
| 0 0 53 +0x7530 53 +0 " (3e+4 0)" "" 10 N N |
| - 0 53 +0x10C6F7A0B5ED8Dp-73 53 +0 ".5e-6" "" 10 N N |
| - 0 53 +0x1B1C1E0D914133p-83 53 +0 "(7.89E-10 0)" "" 10 N N |
| + 0 53 -0x7B426FAB61F00Cp+56 53 +0 " -25@+32" "" 10 N N |
| 0 0 53 -25 53 +0 "-25p+32" "p+32" 10 N N |
| 0 0 53 +43981 53 +0 "0xabcd" "" 16 N N |
| 0 0 53 +0 53 +0 "0xabcd" "xabcd" 10 N N #no prefix in base ten |
| 0 0 53 +2 53 +0 "+0b010" "" 2 N N |
| 0 0 53 +0 53 +0 "+0b010" "b010" 10 N N #no prefix in base ten |
| 0 0 53 +1 53 +0 "1*i" "*i" 10 N N |
| 0 0 53 +18 53 +0 "i*i" "*i" 20 N N |
| 0 0 53 18 53 0 "i" "" 19 N N |
| 0 0 53 35 53 0 "z" "" 36 N N |
| 0 0 53 35 53 0 "Z" "" 36 N N |
| |
| # pure imaginary argument |
| 0 0 53 +0 53 +1 "(0 1)" "" 10 N N |
| 0 0 53 +0 53 +1 "(0 +1)" "" 20 N N |
| 0 0 53 -0 53 -1 " (-0 -1)" "" 10 N N |
| 0 0 53 -0 53 -2 "(-0 -2) " " " 10 N N |
| 0 0 53 +0 53 +2 "(+0 2)" "" 10 N N |
| 0 0 53 +0 53 +17 "(0 h)" "" 20 N N |
| 0 0 53 +0 53 +18 "(0 i)" "" 20 N N |
| 0 + 53 +0 53 -0x14F800008637BDp-44 "(0 -33.55000005e+1)" "" 10 N Z |
| 0 + 53 +0 53 -0xA1765976008AFp-401 "(+0 -.550000E-105) " " " 10 N U |
| 0 0 53 0 53 18 "(0 i)" "" 19 N N |
| 0 0 53 0 53 18 "(0 I)" "" 19 N N |
| 0 0 53 0 53 35 "(0 z)" "" 36 N N |
| 0 0 53 0 53 35 "(0 Z)" "" 36 N N |
| |
| # complex argument |
| 0 0 53 +1 53 +1 "( 1 +1)" "" 10 N N |
| 0 0 53 +1 53 +1 " (1 +1) " " " 10 N N |
| 0 0 53 +7 53 +14 "(7 14)" "" 10 N N |
| 0 0 53 +17 53 +1 "(+17 1)" "" 10 N N |
| 0 0 53 +27 53 +1 " (+17 +1)" "" 20 N N |
| 0 0 53 -18 53 -1 "(-i -1)" "" 20 N N |
| 0 0 53 +18 53 -1 "(i -1)" "" 20 N N |
| 0 0 53 -18 53 +1 "(-i +1)" "" 20 N N |
| 0 0 53 +18 53 +18 "(i +i)" "" 20 N N |
| 0 0 53 -14643 53 +20328 "(-bar foo)" "" 36 N N |
| 0 0 53 -1647190 53 -512315 "(-zaza -azaz)" "" 36 N N |
| 0 0 53 +0b1010 53 +0xabcd "(0b1010 +0xabcd)" "" 0 N N #base autodetection |
| 0 0 53 +0xabcd 53 +0b1010 "(+0xa.bcd@+3 0b.101p4)" "" 0 N N #base autodetection |
| |
| # white space before the closing ')' |
| 0 0 53 +1 53 +1 "( 1 +1 )1" "1" 10 N N |