The R Project SVN R

Rev

Rev 60667 | Rev 67595 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 60667 Rev 60844
Line 44... Line 44...
44
    double sum = 0.0;
44
    double sum = 0.0;
45
    for (R_xlen_t i = 0 ; i < xlength(x) ; i++) {
45
    for (R_xlen_t i = 0 ; i < xlength(x) ; i++) {
46
	if (ix[i] == NA_INTEGER) break;
46
	if (ix[i] == NA_INTEGER) break;
47
	sum += ix[i];
47
	sum += ix[i];
48
	if(sum > INT_MAX || sum < 1 + INT_MIN) { /* INT_MIN is NA_INTEGER */
48
	if(sum > INT_MAX || sum < 1 + INT_MIN) { /* INT_MIN is NA_INTEGER */
49
	    warning(_("Integer overflow in 'cumsum'; use 'cumsum(as.numeric(.))'"));
49
	    warning(_("integer overflow in 'cumsum'; use 'cumsum(as.numeric(.))'"));
50
	    break;
50
	    break;
51
	}
51
	}
52
	is[i] = (int) sum;
52
	is[i] = (int) sum;
53
    }
53
    }
54
    return s;
54
    return s;
Line 173... Line 173...
173
	    break;
173
	    break;
174
	case 2: /* cumprod */
174
	case 2: /* cumprod */
175
	    return ccumprod(t, s);
175
	    return ccumprod(t, s);
176
	    break;
176
	    break;
177
	case 3: /* cummax */
177
	case 3: /* cummax */
-
 
178
	    errorcall(call, _("'cummin' not defined for complex numbers"));
-
 
179
	    break;
178
	case 4: /* cummin */
180
	case 4: /* cummin */
179
	    errorcall(call, _("min/max not defined for complex numbers"));
181
	    errorcall(call, _("'cummax' not defined for complex numbers"));
180
	    break;
182
	    break;
181
	default:
183
	default:
182
	    errorcall(call, _("unknown cumxxx function"));
184
	    errorcall(call, "unknown cumxxx function");
183
	}
185
	}
184
    } else if( ( isInteger(CAR(args)) || isLogical(CAR(args)) ) &&
186
    } else if( ( isInteger(CAR(args)) || isLogical(CAR(args)) ) &&
185
	       PRIMVAL(op) != 2) {
187
	       PRIMVAL(op) != 2) {
186
	PROTECT(t = coerceVector(CAR(args), INTSXP));
188
	PROTECT(t = coerceVector(CAR(args), INTSXP));
187
	n = XLENGTH(t);
189
	n = XLENGTH(t);