-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
57 lines (43 loc) · 1.05 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
var BigNumber = require('bignumber.js');
var Decimal = require('decimal.js');
var lib = process.argv[2];
var isNative = lib !== 'big' && lib !== 'dec';
var decimalPlaces = process.argv[3] && parseInt(process.argv[3])|| 20;
BigNumber.config({ DECIMAL_PLACES: decimalPlaces})
var const108 = getNumber(108);
var const815 = getNumber(815);
var const1500 = getNumber(1500);
var const4 = getNumber(4);
var const4d25 = getNumber(17/4); // 4.25
function getNumber(number) {
if (lib === 'big') {
return new BigNumber(number);
} else if (lib === 'dec') {
return new Decimal(number);
} else {
return number;
}
}
function f(y, z) {
if (isNative) {
return 108 - (815-1500/z)/y;
}
return const108.minus(const815.minus(const1500.dividedBy(z)).dividedBy(y));
}
function x(i) {
if (i === 0) {
return const4;
}
if (i === 1) {
return const4d25;
}
return f(x(i-1), x(i-2));
}
function calc() {
var table = [];
var N = 30;
for (var i = 0; i < N; i++) {
console.log('%d\t%d', i, x(i));
}
}
calc();