# continued-fraction > [Continued fraction][continued-fraction] approximation.
## Usage ```javascript 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][es6-generator]. By default, the function computes
Continued fraction without leading b_0 term
Using an ES6 [Generator object][es6-generator]: ```javascript // 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: ```javascript // 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**: `integer` denoting the maximum number of times the supplied generator object will be called. Default: `1000000`. - **tolerance**: `number` primitive specifying the used tolerance to assess convergence. Default: `2.22e-16`. - **keep**: `boolean` primitive indicating whether to keep the `b0` term in the continued fraction. Default: `false`. To evaluate
Continued fraction with leading b_0 term
set the `keep` option to `true`. ```javascript 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. ```javascript 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. ```javascript 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 ```javascript 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 ); ```