cuelang.org/go@v0.13.0/cue/testdata/basicrewrite/002_arithmetic.txtar (about) 1 #name: arithmetic 2 #evalPartial 3 -- in.cue -- 4 i1: 1 & int 5 i2: 2 & int 6 7 sum: -1 + +2 // 1 8 div1: 2.0 / 3 * 6 // 4 9 div2: 2 / 3 * 6 // 4 10 div3: 1.00 / 1.00 11 divZero: 1.0 / 0 12 div00: 0 / 0 13 b: 1 != 4 14 add: div1 + 1.0 15 16 idiv00: 0 div 0 17 imod00: 0 mod 0 18 iquo00: 0 quo 0 19 irem00: 0 rem 0 20 21 v1: 1.0T / 2.0 22 v2: 2.0 == 2 23 v3: 2.0 / 3.0 24 v5: i1 div i2 25 26 e0: 2 + "a" 27 // these are now all alloweed 28 // e1: 2.0 / i1 29 // e2: i1 / 2.0 30 // e3: 3.0 % i2 31 // e4: i1 % 2.0 32 e5: 1.0 div 2 33 e6: 2 rem 2.0 34 e7: 2 quo 2.0 35 e8: 1.0 mod 1 36 -- out/def -- 37 i1: 1 38 i2: 2 39 sum: 1 40 div1: 4.00000000000000000000000 41 div2: 4.00000000000000000000000 42 div3: 1. 43 divZero: _|_ // division by zero 44 div00: _|_ // division undefined 45 b: true 46 add: 5.00000000000000000000000 47 idiv00: _|_ // division by zero 48 imod00: _|_ // division by zero 49 iquo00: _|_ // division by zero 50 irem00: _|_ // division by zero 51 v1: 5.0000000000e+11 52 v2: true 53 v3: 0.666666666666666666666667 54 v5: 0 55 e0: _|_ // invalid operation 2 + "a" (mismatched types int and string) 56 // these are now all alloweed 57 // e1: 2.0 / i1 58 // e2: i1 / 2.0 59 // e3: 3.0 % i2 60 // e4: i1 % 2.0 61 e5: _|_ // invalid operation 1.0 div 2 (mismatched types float and int) 62 e6: _|_ // invalid operation 2 rem 2.0 (mismatched types int and float) 63 e7: _|_ // invalid operation 2 quo 2.0 (mismatched types int and float) 64 e8: _|_ // invalid operation 1.0 mod 1 (mismatched types float and int) 65 -- out/legacy-debug -- 66 <0>{i1: 1, i2: 2, sum: 1, div1: 4.00000000000000000000000, div2: 4.00000000000000000000000, div3: 1., divZero: _|_((1.0 / 0):division by zero), div00: _|_((0 / 0):division undefined), b: true, add: 5.00000000000000000000000, idiv00: _|_((0 div 0):division by zero), imod00: _|_((0 mod 0):division by zero), iquo00: _|_((0 quo 0):division by zero), irem00: _|_((0 rem 0):division by zero), v1: 5.0000000000e+11, v2: true, v3: 0.666666666666666666666667, v5: 0, e0: _|_((2 + "a"):invalid operation 2 + "a" (mismatched types int and string)), e5: _|_((1.0 div 2):invalid operation 1.0 div 2 (mismatched types float and int)), e6: _|_((2 rem 2.0):invalid operation 2 rem 2.0 (mismatched types int and float)), e7: _|_((2 quo 2.0):invalid operation 2 quo 2.0 (mismatched types int and float)), e8: _|_((1.0 mod 1):invalid operation 1.0 mod 1 (mismatched types float and int))} 67 -- out/compile -- 68 --- in.cue 69 { 70 i1: (1 & int) 71 i2: (2 & int) 72 sum: (-1 + +2) 73 div1: ((2.0 / 3) * 6) 74 div2: ((2 / 3) * 6) 75 div3: (1.00 / 1.00) 76 divZero: (1.0 / 0) 77 div00: (0 / 0) 78 b: (1 != 4) 79 add: (〈0;div1〉 + 1.0) 80 idiv00: (0 div 0) 81 imod00: (0 mod 0) 82 iquo00: (0 quo 0) 83 irem00: (0 rem 0) 84 v1: (1000000000000 / 2.0) 85 v2: (2.0 == 2) 86 v3: (2.0 / 3.0) 87 v5: (〈0;i1〉 div 〈0;i2〉) 88 e0: (2 + "a") 89 e5: (1.0 div 2) 90 e6: (2 rem 2.0) 91 e7: (2 quo 2.0) 92 e8: (1.0 mod 1) 93 } 94 -- out/eval/stats -- 95 Leaks: 0 96 Freed: 24 97 Reused: 22 98 Allocs: 2 99 Retain: 0 100 101 Unifications: 24 102 Conjuncts: 26 103 Disjuncts: 24 104 -- out/eval -- 105 Errors: 106 divZero: failed arithmetic: division by zero: 107 ./in.cue:8:10 108 div00: failed arithmetic: division undefined: 109 ./in.cue:9:10 110 idiv00: division by zero: 111 ./in.cue:13:9 112 imod00: division by zero: 113 ./in.cue:14:9 114 iquo00: division by zero: 115 ./in.cue:15:9 116 irem00: division by zero: 117 ./in.cue:16:9 118 e0: invalid operands 2 and "a" to '+' (type int and string): 119 ./in.cue:23:5 120 ./in.cue:23:9 121 e5: invalid operands 1.0 and 2 to 'div' (type float and int): 122 ./in.cue:29:5 123 ./in.cue:29:13 124 e6: invalid operands 2 and 2.0 to 'rem' (type int and float): 125 ./in.cue:30:5 126 ./in.cue:30:11 127 e7: invalid operands 2 and 2.0 to 'quo' (type int and float): 128 ./in.cue:31:5 129 ./in.cue:31:11 130 e8: invalid operands 1.0 and 1 to 'mod' (type float and int): 131 ./in.cue:32:5 132 ./in.cue:32:13 133 134 Result: 135 (_|_){ 136 // [eval] 137 i1: (int){ 1 } 138 i2: (int){ 2 } 139 sum: (int){ 1 } 140 div1: (float){ 4.000000000000000000000000000000000 } 141 div2: (float){ 4.000000000000000000000000000000000 } 142 div3: (float){ 1.0 } 143 divZero: (_|_){ 144 // [eval] divZero: failed arithmetic: division by zero: 145 // ./in.cue:8:10 146 } 147 div00: (_|_){ 148 // [eval] div00: failed arithmetic: division undefined: 149 // ./in.cue:9:10 150 } 151 b: (bool){ true } 152 add: (float){ 5.000000000000000000000000000000000 } 153 idiv00: (_|_){ 154 // [eval] idiv00: division by zero: 155 // ./in.cue:13:9 156 } 157 imod00: (_|_){ 158 // [eval] imod00: division by zero: 159 // ./in.cue:14:9 160 } 161 iquo00: (_|_){ 162 // [eval] iquo00: division by zero: 163 // ./in.cue:15:9 164 } 165 irem00: (_|_){ 166 // [eval] irem00: division by zero: 167 // ./in.cue:16:9 168 } 169 v1: (float){ 5.0E+11 } 170 v2: (bool){ true } 171 v3: (float){ 0.6666666666666666666666666666666667 } 172 v5: (int){ 0 } 173 e0: (_|_){ 174 // [eval] e0: invalid operands 2 and "a" to '+' (type int and string): 175 // ./in.cue:23:5 176 // ./in.cue:23:9 177 } 178 e5: (_|_){ 179 // [eval] e5: invalid operands 1.0 and 2 to 'div' (type float and int): 180 // ./in.cue:29:5 181 // ./in.cue:29:13 182 } 183 e6: (_|_){ 184 // [eval] e6: invalid operands 2 and 2.0 to 'rem' (type int and float): 185 // ./in.cue:30:5 186 // ./in.cue:30:11 187 } 188 e7: (_|_){ 189 // [eval] e7: invalid operands 2 and 2.0 to 'quo' (type int and float): 190 // ./in.cue:31:5 191 // ./in.cue:31:11 192 } 193 e8: (_|_){ 194 // [eval] e8: invalid operands 1.0 and 1 to 'mod' (type float and int): 195 // ./in.cue:32:5 196 // ./in.cue:32:13 197 } 198 }