continuedfraction.js
v0.0.2
Published
The RAW continued fractions library
Maintainers
Readme
ContinuedFraction.js
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.
Features
- 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
Example
const frac = ContinuedFraction.eval(
ContinuedFraction.fromFraction(3021, 203),
10 // Max Steps
);
console.log(frac.toString()); // → "3021/203"Installation
You can install ContinuedFraction.js via npm:
npm install continuedfraction.jsOr with yarn:
yarn add continuedfraction.jsAlternatively, download or clone the repository:
git clone https://github.com/rawify/ContinuedFraction.jsUsage
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';ContinuedFraction API
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]Methods
| 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 | Evaluate (generalized) continued fraction to a Fraction approximation |
Coding Style
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.
Building the library
After cloning the Git repository run:
npm install
npm run buildCopyright and Licensing
Copyright (c) 2025, Robert Eisele Licensed under the MIT license.
