View | Details | Raw Unified
Collapse All | Expand All

(-) sqlite-3.4.0/test/expr.test (+13 lines)
 Lines 1153-1163    Link Here 
      case OP_Multiply:    b *= a;       break;
      case OP_Multiply:    b *= a;       break;
      case OP_Divide: {
      case OP_Divide: {
        if( a==0 ) goto divide_by_zero;
        if( a==0 ) goto divide_by_zero;
        /* Dividing the largest possible negative 64-bit integer (1<<63) by 
        ** -1 returns an integer to large to store in a 64-bit data-type. On
        ** some architectures, the value overflows to (1<<63). On others,
        ** a SIGFPE is issued. The following statement normalizes this
        ** behaviour so that all architectures behave as if integer 
        ** overflow occured.
        */
        if( a==-1 && b==(1<<63) ) a = 1;
        b /= a;
        b /= a;
        break;
        break;
      }
      }
      default: {
      default: {
        if( a==0 ) goto divide_by_zero;
        if( a==0 ) goto divide_by_zero;
        if( a==-1 ) a = 1;
        b %= a;
        b %= a;
        break;
        break;
      }
      }
 Lines 1184-1189    Link Here 
        i64 ia = (i64)a;
        i64 ia = (i64)a;
        i64 ib = (i64)b;
        i64 ib = (i64)b;
        if( ia==0 ) goto divide_by_zero;
        if( ia==0 ) goto divide_by_zero;
        if( ia==-1 ) ia = 1;
        b = ib % ia;
        b = ib % ia;
        break;
        break;
      }
      }
 Lines 139-144    Link Here 
test_expr expr-1.104 {i1=0} {(-9223372036854775808.0 % -1)} 0.0
test_expr expr-1.104 {i1=0} {(-9223372036854775808.0 % -1)} 0.0
test_expr expr-1.105 {i1=0} {(-9223372036854775808.0 / -1)>1} 1
test_expr expr-1.105 {i1=0} {(-9223372036854775808.0 / -1)>1} 1
test_expr expr-1.106 {i1=0} {(1<<63)/-1} -9223372036854775808
test_expr expr-1.107 {i1=0} {(1<<63)%-1} 0
test_expr expr-2.1 {r1=1.23, r2=2.34} {r1+r2} 3.57
test_expr expr-2.1 {r1=1.23, r2=2.34} {r1+r2} 3.57
test_expr expr-2.2 {r1=1.23, r2=2.34} {r1-r2} -1.11
test_expr expr-2.2 {r1=1.23, r2=2.34} {r1-r2} -1.11
test_expr expr-2.3 {r1=1.23, r2=2.34} {r1*r2} 2.8782
test_expr expr-2.3 {r1=1.23, r2=2.34} {r1*r2} 2.8782