|  | ||
|---|---|---|
| .. | ||
| docs | ||
| lib | ||
| package.json | ||
| README.md | ||
continued-fraction
Continued fraction approximation.
Usage
var continuedFraction = require( '@stdlib/math/base/tools/continued-fraction' );
continuedFraction( generator[, options ] )
Evaluates the continued fraction described by the supplied generator argument. generator can be either a function which returns an array with two elements, the a and b terms of the fraction, or an ES6 Generator object. By default, the function computes
Using an ES6 Generator object:
// Continued fraction for (e-1)^(-1):
var gen = generator();
var out = continuedFraction( gen );
// returns ~0.582
function* generator() {
    var i = 0;
    while ( true ) {
        i += 1;
        yield [ i, i ];
    }
}
Alternatively, one can use a closure to achieve the same goal:
// Continued fraction for (e-1)^(-1):
var gen = generator();
var out = continuedFraction( gen );
// returns ~0.582
function generator() {
    var i = 0;
    return gen;
    function gen() {
        i += 1;
        return [ i, i ];
    }
}
The function accepts the following options:
- maxIter: integerdenoting the maximum number of times the supplied generator object will be called. Default:1000000.
- tolerance: numberprimitive specifying the used tolerance to assess convergence. Default:2.22e-16.
- keep: booleanprimitive indicating whether to keep theb0term in the continued fraction. Default:false.
To evaluate
set the keep option to true.
var out = continuedFraction( generator(), {
    'keep': true
});
// returns ~1.718
function generator() {
    var i = 0;
    return gen;
    function gen() {
        i += 1;
        return [ i, i ];
    }
}
To change the maximum number of iterations, set the maxIter option.
var out = continuedFraction( generator(), {
    'maxIter': 10
});
// returns ~0.582
function generator() {
    var i = 0;
    return gen;
    function gen() {
        i += 1;
        return [ i, i ];
    }
}
The default tolerance of 2.22e-16 to assess convergence can be changed via the tolerance option.
var out = continuedFraction( generator(), {
    'tolerance': 1e-1
});
// returns ~0.579
function generator() {
    var i = 0;
    return gen;
    function gen() {
        i += 1;
        return [ i, i ];
    }
}
Examples
var continuedFraction = require( '@stdlib/math/base/tools/continued-fraction' );
var out;
function* generator() {
    while ( true ) {
        yield [ 1, 1 ];
    }
}
function closure() {
    var ones = [ 1, 1 ];
    return gen;
    function gen() {
        return ones;
    }
}
out = continuedFraction( generator(), {
    'keep': true
});
console.log( 'Golden ratio (generator): %d,', out );
out = continuedFraction( closure(), {
    'keep': true
});
console.log( 'Golden ratio (closure): %d', out );