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  }