gen changing names of parameters, screwing up my formula, causing errors.


    May 02 2014 | 8:00 am
    i type this in to codebox:
    round(num) { b = abs(num); a = ceil(b - 1); a = b - a;
    if(a >= .5){ b = ceil(b); } else{ b = floor(b); }
    if(num < 0){ num = -b; } else{ num = b; }
    return num; }
    out1 = round(in1/in2)*in2;
    i get this in "code" tab:
    round(num) { b = abs(b); a = ceil(b - 1); a_1 = b - a; if(a_1 >= 0.5) { b = ceil(b); } else { b = floor(b); } if(b < 0) { b = -b; } return b; }
    expr_2 = round(in1 / in2) * in2; out1 = expr_2;
    notice num is not even passed into the function.
    whyyyyyy? :( btw,

    • May 03 2014 | 12:51 am
      it's obviously gen not liking the fact im using the same variable multiple times or something. so there's a formula that gen doesn't mind:
      round(num) { rounded=0.0; pos = abs(num); up = ceil(pos); down = floor(pos);
      checkup = up - pos; checkdown = pos - down;
      if(checkup rounded = up; } else{ rounded = down; }
      return sign(num)*rounded; }
      out1 = round(in1/in2)*in2;
    • May 06 2014 | 8:42 pm
      This is definitely a bug. Thanks for the example. Here's a slight modification to the code that will compiler properly:
      round(num) { b = abs(num); a = ceil(b - 1); a = b-a; if(a > 0.5) { b = ceil(b); } else { b = floor(b); }
      res = 0; if(num < 0) { res = -b; } else { res = b; } return res; }
    • May 12 2014 | 10:02 pm
      another problem
      x=1;
      y=2;
      x,y=y,x;
      out1 = x;
      out2 = y;
      
      turns into
      expr_1 = 2;
      expr_2 = 2;
      out2 = expr_2;
      out1 = expr_1;
      notice how both outputs are now equal to 2.