iterContinuedFraction

Evaluate the terms of a continued fraction.

A generalized continued fraction has the form

x equals b 0 plus ContinuedFraction a 1 Over b 1 plus StartFraction a 2 Over b 2 plus StartFraction a 3 Over b 3 plus StartFraction a 4 Over b 4 plus ellipsis

If a_i = 1 for all i, the above expression reduces to a simple continued fraction.

x equals b 0 plus ContinuedFraction 1 Over b 1 plus StartFraction 1 Over b 2 plus StartFraction 1 Over b 3 plus StartFraction 1 Over b 4 plus ellipsis

where the values b_i are called the coefficients or terms of the continued fraction.

Usage

var iterContinuedFraction = require( '@stdlib/math/iter/utils/continued-fraction' );

iterContinuedFraction( iterator[, options] )

Evaluates the terms of a continued fraction.

var array2iterator = require( '@stdlib/array/to-iterator' );

var arr = array2iterator( [ 3, 4, 12, 4 ] );

var v = iterContinuedFraction( arr );
// returns ~3.245

The function supports the following options:

  • iter: maximum number of iterations. Default: 1e308.
  • tol: tolerance at which to terminate further evaluation of the continued fraction. Default: floating-point epsilon.

To explicitly cap the maximum number of iterations, set the iter option.

var array2iterator = require( '@stdlib/array/to-iterator' );

var arr = array2iterator( [ 3, 4, 12, 4 ] );

var opts = {
    'iter': 2
};
var v = iterContinuedFraction( arr, opts );
// returns 3.25

The function terminates continued fraction evaluation once the difference between continued fraction approximations is sufficiently small. The default tolerance is floating-point epsilon (~2.22e-16). Once an update to a continued fraction approximation is less than or equal to this tolerance, the function terminates evaluation. To adjust the tolerance (e.g., to return a rough approximation), set the tol option.

var iterContinuedFractionSeq = require( '@stdlib/math/iter/sequences/continued-fraction' );

var opts = {
    'tol': 1.0e-7
};
var it = iterContinuedFractionSeq( 3.141592653589793, opts );
// returns <Object>

var v = iterContinuedFraction( it );
// returns ~3.14159292

Notes

  • If an iterated value is non-numeric (including NaN), the function returns NaN. If non-numeric iterated values are possible, you are advised to provide an iterator which type checks and handles non-numeric values accordingly.

Examples

var iterContinuedFractionSeq = require( '@stdlib/math/iter/sequences/continued-fraction' );
var PI = require( '@stdlib/constants/float64/pi' );
var iterContinuedFraction = require( '@stdlib/math/iter/utils/continued-fraction' );

// Create an iterator for returning the list of continued fraction terms:
var it = iterContinuedFractionSeq( PI );

// Reconstitute the original value:
var v = iterContinuedFraction( it );
// returns <number>

console.log( 'Value: %d.', v );
Did you find this page helpful?