Subversion Repositories Applications.papyrus

Rev

Rev 1372 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1372 Rev 1422
1
/*
1
/*
2
	Copyright (c) 2004-2006, The Dojo Foundation
2
	Copyright (c) 2004-2006, The Dojo Foundation
3
	All Rights Reserved.
3
	All Rights Reserved.
4
 
4
 
5
	Licensed under the Academic Free License version 2.1 or above OR the
5
	Licensed under the Academic Free License version 2.1 or above OR the
6
	modified BSD license. For more information on Dojo licensing, see:
6
	modified BSD license. For more information on Dojo licensing, see:
7
 
7
 
8
		http://dojotoolkit.org/community/licensing.shtml
8
		http://dojotoolkit.org/community/licensing.shtml
9
*/
9
*/
-
 
10
 
-
 
11
 
10
 
12
 
11
dojo.provide("dojo.math");
13
dojo.provide("dojo.math");
12
dojo.math.degToRad = function (x) {
14
dojo.math.degToRad = function (x) {
13
	return (x * Math.PI) / 180;
15
	return (x * Math.PI) / 180;
14
};
16
};
15
dojo.math.radToDeg = function (x) {
17
dojo.math.radToDeg = function (x) {
16
	return (x * 180) / Math.PI;
18
	return (x * 180) / Math.PI;
17
};
19
};
18
dojo.math.factorial = function (n) {
20
dojo.math.factorial = function (n) {
19
	if (n < 1) {
21
	if (n < 1) {
20
		return 0;
22
		return 0;
21
	}
23
	}
22
	var retVal = 1;
24
	var retVal = 1;
23
	for (var i = 1; i <= n; i++) {
25
	for (var i = 1; i <= n; i++) {
24
		retVal *= i;
26
		retVal *= i;
25
	}
27
	}
26
	return retVal;
28
	return retVal;
27
};
29
};
28
dojo.math.permutations = function (n, k) {
30
dojo.math.permutations = function (n, k) {
29
	if (n == 0 || k == 0) {
31
	if (n == 0 || k == 0) {
30
		return 1;
32
		return 1;
31
	}
33
	}
32
	return (dojo.math.factorial(n) / dojo.math.factorial(n - k));
34
	return (dojo.math.factorial(n) / dojo.math.factorial(n - k));
33
};
35
};
34
dojo.math.combinations = function (n, r) {
36
dojo.math.combinations = function (n, r) {
35
	if (n == 0 || r == 0) {
37
	if (n == 0 || r == 0) {
36
		return 1;
38
		return 1;
37
	}
39
	}
38
	return (dojo.math.factorial(n) / (dojo.math.factorial(n - r) * dojo.math.factorial(r)));
40
	return (dojo.math.factorial(n) / (dojo.math.factorial(n - r) * dojo.math.factorial(r)));
39
};
41
};
40
dojo.math.bernstein = function (t, n, i) {
42
dojo.math.bernstein = function (t, n, i) {
41
	return (dojo.math.combinations(n, i) * Math.pow(t, i) * Math.pow(1 - t, n - i));
43
	return (dojo.math.combinations(n, i) * Math.pow(t, i) * Math.pow(1 - t, n - i));
42
};
44
};
43
dojo.math.gaussianRandom = function () {
45
dojo.math.gaussianRandom = function () {
44
	var k = 2;
46
	var k = 2;
45
	do {
47
	do {
46
		var i = 2 * Math.random() - 1;
48
		var i = 2 * Math.random() - 1;
47
		var j = 2 * Math.random() - 1;
49
		var j = 2 * Math.random() - 1;
48
		k = i * i + j * j;
50
		k = i * i + j * j;
49
	} while (k >= 1);
51
	} while (k >= 1);
50
	k = Math.sqrt((-2 * Math.log(k)) / k);
52
	k = Math.sqrt((-2 * Math.log(k)) / k);
51
	return i * k;
53
	return i * k;
52
};
54
};
53
dojo.math.mean = function () {
55
dojo.math.mean = function () {
54
	var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
56
	var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
55
	var mean = 0;
57
	var mean = 0;
56
	for (var i = 0; i < array.length; i++) {
58
	for (var i = 0; i < array.length; i++) {
57
		mean += array[i];
59
		mean += array[i];
58
	}
60
	}
59
	return mean / array.length;
61
	return mean / array.length;
60
};
62
};
61
dojo.math.round = function (number, places) {
63
dojo.math.round = function (number, places) {
62
	if (!places) {
64
	if (!places) {
63
		var shift = 1;
65
		var shift = 1;
64
	} else {
66
	} else {
65
		var shift = Math.pow(10, places);
67
		var shift = Math.pow(10, places);
66
	}
68
	}
67
	return Math.round(number * shift) / shift;
69
	return Math.round(number * shift) / shift;
68
};
70
};
69
dojo.math.sd = dojo.math.standardDeviation = function () {
71
dojo.math.sd = dojo.math.standardDeviation = function () {
70
	var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
72
	var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
71
	return Math.sqrt(dojo.math.variance(array));
73
	return Math.sqrt(dojo.math.variance(array));
72
};
74
};
73
dojo.math.variance = function () {
75
dojo.math.variance = function () {
74
	var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
76
	var array = dojo.lang.isArray(arguments[0]) ? arguments[0] : arguments;
75
	var mean = 0, squares = 0;
77
	var mean = 0, squares = 0;
76
	for (var i = 0; i < array.length; i++) {
78
	for (var i = 0; i < array.length; i++) {
77
		mean += array[i];
79
		mean += array[i];
78
		squares += Math.pow(array[i], 2);
80
		squares += Math.pow(array[i], 2);
79
	}
81
	}
80
	return (squares / array.length) - Math.pow(mean / array.length, 2);
82
	return (squares / array.length) - Math.pow(mean / array.length, 2);
81
};
83
};
82
dojo.math.range = function (a, b, step) {
84
dojo.math.range = function (a, b, step) {
83
	if (arguments.length < 2) {
85
	if (arguments.length < 2) {
84
		b = a;
86
		b = a;
85
		a = 0;
87
		a = 0;
86
	}
88
	}
87
	if (arguments.length < 3) {
89
	if (arguments.length < 3) {
88
		step = 1;
90
		step = 1;
89
	}
91
	}
90
	var range = [];
92
	var range = [];
91
	if (step > 0) {
93
	if (step > 0) {
92
		for (var i = a; i < b; i += step) {
94
		for (var i = a; i < b; i += step) {
93
			range.push(i);
95
			range.push(i);
94
		}
96
		}
95
	} else {
97
	} else {
96
		if (step < 0) {
98
		if (step < 0) {
97
			for (var i = a; i > b; i += step) {
99
			for (var i = a; i > b; i += step) {
98
				range.push(i);
100
				range.push(i);
99
			}
101
			}
100
		} else {
102
		} else {
101
			throw new Error("dojo.math.range: step must be non-zero");
103
			throw new Error("dojo.math.range: step must be non-zero");
102
		}
104
		}
103
	}
105
	}
104
	return range;
106
	return range;
105
};
107
};
106
 
108