function range1(start, stop, step, from, to) {
if(from) {
var value = start;
}
else {
var value = start + step;
}
var length = Math.max(Math.ceil((stop - value) / step), 0);
if(to && (stop % step === start % step)) {
++length;
}
var array = Array(length);
for(var i = 0; i < length; i++, value += step) {
array[i] = value;
}
return array;
};
function range2(start, stop, step, from, to) {
var array = [];
for(var i = from ? start : start + step, l = to ? stop + 1 : stop; i < l; i += step) {
array.push(i);
}
return array;
};
function range3(start, stop, step, from, to) {
var length = (stop - start) / step;
if(length > 100) {
if(from) {
var value = start;
}
else {
var value = start + step;
}
length = Math.max(Math.ceil(length), 0);
if(to && (stop % step === start % step)) {
++length;
}
var array = Array(length);
for(var i = 0; i < length; i++, value += step) {
array[i] = value;
}
}
else {
var array = [];
for(var i = from ? start : start + step, l = to ? stop + 1 : stop; i < l; i += step) {
array.push(i);
}
}
return array;
};