Skip to content

Commit 59f6589

Browse files
committed
fix #42 spread works correctly in negative direction
1 parent 9dd2e4a commit 59f6589

File tree

6 files changed

+24
-25
lines changed

6 files changed

+24
-25
lines changed

build/ts.bundle.js

Lines changed: 4 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/ts.es5.js

Lines changed: 5 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/ts.es5.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "total-serialism",
3-
"version": "2.10.1",
3+
"version": "2.10.2",
44
"description": "A set of methods for the generation and transformation of number sequences useful in algorithmic composition",
55
"main": "index.js",
66
"scripts": {

src/gen-basic.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,17 @@ function spreadFloat(len=1, lo=1, hi){
5656
if (hi === undefined){ var t=lo, lo=0, hi=t; }
5757
// calculate the range
5858
let r = hi - lo;
59-
// lo is actual lowest value
60-
lo = Math.min(lo, hi);
6159
// len is minimum of 1 or length of array
6260
len = size(len);
6361
if (len === 1){ return [lo]; }
6462
// stepsize
65-
let s = Math.abs(r) / len;
63+
let s = r / len;
6664
// generate array
6765
let arr = [];
6866
for (let i=0; i<len; i++){
6967
arr[i] = i * s + lo;
7068
}
71-
return (r < 0)? arr.reverse() : arr;
69+
return arr;
7270
}
7371
exports.spreadFloat = spreadFloat;
7472
exports.spreadF = spreadFloat;
@@ -97,18 +95,16 @@ function spreadExpFloat(len=1, lo=1, hi, exp=1){
9795
if (hi === undefined){ var t=lo, lo=0, hi=t; }
9896
// calculate the range
9997
let r = hi - lo;
100-
// lo is actual lowest value
101-
lo = Math.min(lo, hi);
10298
// len is minimum of 1
10399
len = size(len);
104100
// len = Math.max(1, len);
105101
if (len === 1){ return [lo]; }
106102
// generate array
107103
let arr = [];
108104
for (let i=0; i<len; i++){
109-
arr[i] = Math.pow((i / len), exp) * Math.abs(r) + lo;
105+
arr[i] = Math.pow((i / len), exp) * r + lo;
110106
}
111-
return (r < 0)? arr.reverse() : arr;
107+
return arr;
112108
}
113109
exports.spreadFloatExp = spreadExpFloat; // deprecated
114110
exports.spreadExpFloat = spreadExpFloat;

test/serialism.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ function testGenerative(){
9797
test("Gen.spread(6, -12, 3)", () => {
9898
expect(Gen.spread(6, -12, 3)).toStrictEqual([-12, -10, -7, -5, -2, 0]);
9999
});
100+
test("Gen.spread(6, 0, -6)", () => {
101+
expect(Gen.spread(6, 0, -6)).toStrictEqual([0, -1, -2, -3, -4, -5]);
102+
});
100103

101104
test("Gen.spreadFloat()", () => {
102105
expect(Gen.spreadFloat()).toStrictEqual([0]);
@@ -113,6 +116,9 @@ function testGenerative(){
113116
test("Gen.spreadFloat(4, -1, 1)", () => {
114117
expect(Gen.spreadFloat(4, -1, 1)).toStrictEqual([-1, -0.5, 0, 0.5]);
115118
});
119+
test("Gen.spreadFloat(4, 0, -1)", () => {
120+
expect(Gen.spreadFloat(4, 0, -1)).toStrictEqual([0, -0.25, -0.5, -0.75]);
121+
});
116122

117123
test("Gen.spreadInc()", () => {
118124
expect(Gen.spreadInc()).toStrictEqual([0]);
@@ -161,6 +167,9 @@ function testGenerative(){
161167
test("Gen.spreadExpF(12, 0, 10, 0.5)", () => {
162168
expect(Gen.spreadExpF(12, 0, 10, 0.5)).toStrictEqual([0, 2.8867513459481287, 4.08248290463863, 5, 5.773502691896257, 6.454972243679028, 7.0710678118654755, 7.637626158259733, 8.16496580927726, 8.660254037844386, 9.128709291752768, 9.574271077563381]);
163169
});
170+
test("Gen.spreadExpF(4, 0, -1)", () => {
171+
expect(Gen.spreadExpF(4, 0, -1)).toStrictEqual([0, -0.25, -0.5, -0.75]);
172+
});
164173
test("Gen.spreadIncExpF(12, 0, 10, 0.5)", () => {
165174
expect(Gen.spreadIncExpF(12, 0, 10, 0.5)).toStrictEqual([0, 3.0151134457776365, 4.264014327112209, 5.222329678670935, 6.030226891555273, 6.74199862463242, 7.385489458759964, 7.977240352174656, 8.528028654224418, 9.04534033733291, 9.534625892455924, 10]);
166175
});

0 commit comments

Comments
 (0)