iterContinuedFraction
Evaluate the terms of a continued fraction.
A generalized continued fraction has the form
If a_i = 1
for all i
, the above expression reduces to a simple continued fraction.
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 returnsNaN
. If non-numeric iterated values are possible, you are advised to provide aniterator
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 );