time-to-botec/squiggle/node_modules/@stdlib/math/base/tools/fibpoly
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00
..
docs feat: add the node modules 2022-12-03 12:44:49 +00:00
lib feat: add the node modules 2022-12-03 12:44:49 +00:00
package.json feat: add the node modules 2022-12-03 12:44:49 +00:00
README.md feat: add the node modules 2022-12-03 12:44:49 +00:00

Fibonacci Polynomial

Evaluate a Fibonacci polynomial.

A Fibonacci polynomial is expressed according to the following recurrence relation

Fibonacci polynomial.

Alternatively, if F(n,k) is the coefficient of x^k in F_n(x), then

Combinatoric interpretation of a Fibonacci polynomial.

where

Fibonacci polynomial coefficients.

We can extend Fibonacci polynomials to negative n using the identity

NegaFibonacci polynomial.

Usage

var fibpoly = require( '@stdlib/math/base/tools/fibpoly' );

fibpoly( n, x )

Evaluates a Fibonacci polynomial at a value x.

var v = fibpoly( 5, 2.0 ); // => 2^4 + 3*2^2 + 1
// returns 29.0

fibpoly.factory( n )

Uses code generation to generate a function for evaluating a Fibonacci polynomial.

var polyval = fibpoly.factory( 5 );

var v = polyval( 1.0 ); // => 1^4 + 3*1^2 + 1
// returns 5.0

v = polyval( 2.0 ); // => 2^4 + 3*2^2 + 1
// returns 29.0

Notes

  • For hot code paths, a compiled function will be more performant than fibpoly().
  • While code generation can boost performance, its use may be problematic in browser contexts enforcing a strict content security policy (CSP). If running in or targeting an environment with a CSP, avoid using code generation.

Examples

var fibpoly = require( '@stdlib/math/base/tools/fibpoly' );

var i;

// Compute the negaFibonacci and Fibonacci numbers...
for ( i = -77; i < 78; i++ ) {
    console.log( 'F_%d = %d', i, fibpoly( i, 1.0 ) );
}