-
-
Notifications
You must be signed in to change notification settings - Fork 804
/
Copy pathindex.js
62 lines (54 loc) · 1.18 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
'use strict';
var randu = require( '@stdlib/random/base/randu' );
var round = require( '@stdlib/math/base/special/round' );
var Float64Array = require( '@stdlib/array/float64' );
var evalpoly = require( './../lib' );
var polyval;
var coef;
var sign;
var eqn;
var v;
var i;
// Create an array of random coefficients...
coef = new Float64Array( 10 );
for ( i = 0; i < coef.length; i++ ) {
if ( randu() < 0.5 ) {
sign = -1.0;
} else {
sign = 1.0;
}
coef[ i ] = sign * round( randu()*100.0 );
}
eqn = toStr( coef );
console.log( 'f(x) = %s', eqn );
// Evaluate the polynomial at random values...
for ( i = 0; i < 100; i++ ) {
v = randu() * 100.0;
console.log( 'f(%d) = %d', v, evalpoly( coef, v ) );
}
// Generate an `evalpoly` function...
polyval = evalpoly.factory( coef );
console.log( '\nf(x) = %s', eqn );
for ( i = 0; i < 100; i++ ) {
v = (randu()*100.0) - 50.0;
console.log( 'f(%d) = %d', v, polyval( v ) );
}
function toStr( coef ) {
var str;
var c;
var n;
var i;
n = coef.length;
str = coef[ n-1 ] + 'x^' + n;
for ( i = n-2; i >= 0; i-- ) {
c = coef[ i ];
if ( c < 0 ) {
c = -c;
str += ' - ';
} else {
str += ' + ';
}
str += c + 'x^' + i;
}
return str;
}