A lightweight JavaScript library sitting on the shoulders of Fraction.js for generating and evaluating standard and generalized continued fractions. It is built with generator-based sequences and convergent recurrences for fast execution.
- Generate the simple continued‑fraction expansion of √N
- Convert any real number or rational to its continued‑fraction
- Infinite generators for classic constants: φ (golden ratio), e, π, 4/π
- Evaluate (simple or generalized) continued fractions to a
Fraction
const frac = ContinuedFraction.eval(
ContinuedFraction.fromFraction(3021, 203),
10 // Max Steps
);
console.log(frac.toString()); // → "3021/203"
You can install ContinuedFraction.js
via npm:
npm install continuedfraction.js
Or with yarn:
yarn add continuedfraction.js
Alternatively, download or clone the repository:
git clone https://github.com/rawify/ContinuedFraction.js
Include the continuedfraction.min.js
file in your project:
<script src="path/to/continuedfraction.min.js"></script>
<script>
var x = ContinuedFraction.sqrt(2);
</script>
Or in a Node.js project:
const ContinuedFraction = require('continuedfraction.js');
or
import ContinuedFraction from 'continuedfraction.js';
Import the static utility class and use its generators and evaluator:
// 1) Continued‑fraction terms of √23
const sqrtGen = ContinuedFraction.sqrt(23);
console.log(sqrtGen.next().value); // 4
console.log(sqrtGen.next().value); // 1, 3, 1, 8, …
// 2) Continued‑fraction of a decimal
let cnt = 0;
for (let piCf of ContinuedFraction.fromNumber(Math.PI)) {
console.log(piCf);
if (cnt++ >= 10) break;
}
// 3) Golden ratio φ terms
const phiGen = ContinuedFraction.PHI();
console.log(phiGen.next().value); // 1, and forever 1…
// 4) Evaluate the first 10 terms of e’s CF to a Fraction
const approxE = ContinuedFraction.eval(ContinuedFraction.E, 10);
console.log(approxE.toString()); // e ≈ “193/71”
// 5) Generalized CF for π, 4/π
const genPi = ContinuedFraction.PI();
console.log(genPi.next().value); // { a: 3, b: 0 }
console.log(genPi.next().value); // { a: 6, b: 1 }
// 6) Continued‑fraction from two integers
const halfCf = ContinuedFraction.fromFraction(1, 2);
console.log([...halfCf]); // [0, 2]
Method | Signature | Description |
---|---|---|
sqrt(N: number) |
Generator<number> |
Simple CF terms of √N |
fromNumber(n) |
Generator<number> |
CF terms of any real via Fraction.js |
fromFraction(a, b) |
Generator<number> |
CF terms of the rational a/b |
PHI() |
Generator<number> |
Infinite 1’s for the golden ratio |
FOUR_OVER_PI() |
Generator<CFTerm> |
Generalized CF terms for 4/π |
PI() |
Generator<CFTerm> |
Generalized CF terms for π |
E() |
Generator<number> |
CF expansion of e |
eval(generator, steps) |
`(Generator | () => Generator, steps?: number) ⇒ Fraction` |
As every library I publish, ContinuedFraction is also built to be as small as possible after compressing it with Google Closure Compiler in advanced mode. Thus the coding style orientates a little on maxing-out the compression rate. Please make sure you keep this style if you plan to extend the library.
After cloning the Git repository run:
npm install
npm run build
Copyright (c) 2025, Robert Eisele Licensed under the MIT license.