0031-dc.sh (2807B)
1 #!/bin/sh 2 3 tmp=$$.tmp 4 5 trap 'rm -f $tmp' EXIT 6 trap 'exit $?' HUP INT TERM 7 8 # Test % command: modulo (remainder) 9 # Note: scale (k) persists between operations, so we reset it explicitly 10 cat <<EOF >$tmp 11 test 1: 12 1 13 test 2: 14 1 15 test 3: 16 2 17 test 4: 18 0 19 test 5: 20 2 21 test 6: 22 0 23 test 7: 24 0 25 test 8: 26 3 27 test 9: 28 -1 29 test 10: 30 1 31 test 11: 32 -1 33 test 12: 34 -1 35 test 13: 36 1 37 test 14: 38 -1 39 test 15: 40 0 41 test 16: 42 0 43 test 17: 44 0 45 test 18: 46 1 47 test 19: 48 1 49 test 20: 50 1 51 test 21: 52 99 53 test 22: 54 0 55 test 23: 56 0 57 test 24: 58 0 59 test 25: 60 1 61 test 26: 62 789 63 test 27: 64 4 65 test 28: 66 0 67 test 29: 68 1 69 test 30: 70 0 71 test 31: 72 1 73 test 32: 74 0 75 test 33: 76 0 77 test 34: 78 0 79 test 35: 80 0 81 test 36: 82 7 83 test 37: 84 1 85 test 38: 86 15 87 test 39: 88 0 89 test 40: 90 1 91 test 41: 92 0 93 test 42: 94 0 95 test 43: 96 0 97 test 44: 98 1.5 99 test 45: 100 0 101 test 46: 102 0 103 test 47: 104 0 105 test 48: 106 0 107 test 49: 108 0 109 test 50: 110 0 111 test 51: 112 0 113 test 52: 114 0 115 test 53: 116 0 117 test 54: 118 .001 119 test 55: 120 .01 121 test 56: 122 .01 123 test 57: 124 0 125 test 58: 126 .02 127 test 59: 128 -.01 129 test 60: 130 .01 131 test 61: 132 -.01 133 test 62: 134 .0001 135 test 63: 136 .0002 137 test 64: 138 .0005 139 test 65: 140 0 141 test 66: 142 .005 143 test 67: 144 .0050 145 test 68: 146 0 147 EOF 148 149 $EXEC ../dc <<EOF | diff -u $tmp - 150 [test 1:]pc 0k 7 3%p 151 [test 2:]pc 0k 10 3%p 152 [test 3:]pc 0k 100 7%p 153 [test 4:]pc 0k 15 5%p 154 [test 5:]pc 0k 17 5%p 155 [test 6:]pc 0k 0 5%p 156 [test 7:]pc 0k 5 5%p 157 [test 8:]pc 0k 3 7%p 158 [test 9:]pc 0k _7 3%p 159 [test 10:]pc 0k 7 _3%p 160 [test 11:]pc 0k _7 _3%p 161 [test 12:]pc 0k _10 3%p 162 [test 13:]pc 0k 10 _3%p 163 [test 14:]pc 0k _10 _3%p 164 [test 15:]pc 0k 1 1%p 165 [test 16:]pc 0k 2 2%p 166 [test 17:]pc 0k 3 3%p 167 [test 18:]pc 0k 1 2%p 168 [test 19:]pc 0k 1 10%p 169 [test 20:]pc 0k 1 100%p 170 [test 21:]pc 0k 99 100%p 171 [test 22:]pc 0k 5 1%p 172 [test 23:]pc 0k 100 1%p 173 [test 24:]pc 0k _5 1%p 174 [test 25:]pc 0k 1000000 999999%p 175 [test 26:]pc 0k 123456789 1000%p 176 [test 27:]pc 0k 99999999999 7%p 177 [test 28:]pc 0k 12345678901234567890 9%p 178 [test 29:]pc 0k 99999999999999999999 2%p 179 [test 30:]pc 0k 99999999999999999999 3%p 180 [test 31:]pc 0k 99999999999999999999 99999999999999999998%p 181 [test 32:]pc 0k 99999999999999999999 99999999999999999999%p 182 [test 33:]pc 0k 8 2%p 183 [test 34:]pc 0k 8 4%p 184 [test 35:]pc 0k 16 8%p 185 [test 36:]pc 0k 15 8%p 186 [test 37:]pc 0k 17 8%p 187 [test 38:]pc 0k 255 16%p 188 [test 39:]pc 0k 256 16%p 189 [test 40:]pc 0k 257 16%p 190 [test 41:]pc 0k 7.5 2.5%p 191 [test 42:]pc 0k 1.5 .5%p 192 [test 43:]pc 0k 3.75 1.25%p 193 [test 44:]pc 0k 7.5 3%p 194 [test 45:]pc 0k 4.5 1.5%p 195 [test 46:]pc 0k 2.5 .5%p 196 [test 47:]pc 0k _7.5 2.5%p 197 [test 48:]pc 0k 7.5 _2.5%p 198 [test 49:]pc 0k _7.5 _2.5%p 199 [test 50:]pc 0k _1.5 .5%p 200 [test 51:]pc 0k 1.5 _.5%p 201 [test 52:]pc 0k _1.5 _.5%p 202 [test 53:]pc 0k .001 .001%p 203 [test 54:]pc 0k .01 .003%p 204 [test 55:]pc 2k 7 3%p 205 [test 56:]pc 2k 10 3%p 206 [test 57:]pc 2k 17 5%p 207 [test 58:]pc 2k 22 7%p 208 [test 59:]pc 2k _7 3%p 209 [test 60:]pc 2k 7 _3%p 210 [test 61:]pc 2k _7 _3%p 211 [test 62:]pc 4k 1 3%p 212 [test 63:]pc 4k 2 3%p 213 [test 64:]pc 4k 10 7%p 214 [test 65:]pc 2k 1.5 .5%p 215 [test 66:]pc 2k 3.5 1.5%p 216 [test 67:]pc 2k 7.25 2.25%p 217 [test 68:]pc 2k 10.5 3.5%p 218 EOF