Data update
This commit is contained in:
parent
72eb4943cb
commit
4d5544505c
2347 changed files with 62432 additions and 16731 deletions
|
|
@ -0,0 +1,90 @@
|
|||
class Pt {
|
||||
static bCoeff = 7;
|
||||
|
||||
constructor(x, y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
static zero() {
|
||||
return new Pt(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);
|
||||
}
|
||||
|
||||
isZero() {
|
||||
// same threshold logic as Java version
|
||||
return this.x > 1e20 || this.x < -1e20;
|
||||
}
|
||||
|
||||
static fromY(y) {
|
||||
// cbrt(pow(y,2) - bCoeff)
|
||||
return new Pt(Math.cbrt(Math.pow(y, 2) - Pt.bCoeff), y);
|
||||
}
|
||||
|
||||
dbl() {
|
||||
if (this.isZero()) {
|
||||
return this;
|
||||
}
|
||||
const L = (3 * this.x * this.x) / (2 * this.y);
|
||||
const x2 = Math.pow(L, 2) - 2 * this.x;
|
||||
const y2 = L * (this.x - x2) - this.y;
|
||||
return new Pt(x2, y2);
|
||||
}
|
||||
|
||||
neg() {
|
||||
return new Pt(this.x, -this.y);
|
||||
}
|
||||
|
||||
plus(q) {
|
||||
// point doubling?
|
||||
if (this.x === q.x && this.y === q.y) {
|
||||
return this.dbl();
|
||||
}
|
||||
// handle "point at infinity"
|
||||
if (this.isZero()) {
|
||||
return q;
|
||||
}
|
||||
if (q.isZero()) {
|
||||
return this;
|
||||
}
|
||||
const L = (q.y - this.y) / (q.x - this.x);
|
||||
const xx = Math.pow(L, 2) - this.x - q.x;
|
||||
const yy = L * (this.x - xx) - this.y;
|
||||
return new Pt(xx, yy);
|
||||
}
|
||||
|
||||
mult(n) {
|
||||
let r = Pt.zero();
|
||||
let p = this;
|
||||
// binary double-and-add
|
||||
for (let i = 1; i <= n; i <<= 1) {
|
||||
if (i & n) {
|
||||
r = r.plus(p);
|
||||
}
|
||||
p = p.dbl();
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
toString() {
|
||||
if (this.isZero()) {
|
||||
return "Zero";
|
||||
}
|
||||
// format with 3 decimal places, dot as decimal separator
|
||||
return `(${this.x.toFixed(3)},${this.y.toFixed(3)})`;
|
||||
}
|
||||
}
|
||||
|
||||
// Equivalent of the Java `main` method
|
||||
(function main() {
|
||||
const a = Pt.fromY(1);
|
||||
const b = Pt.fromY(2);
|
||||
console.log(`a = ${a}`);
|
||||
console.log(`b = ${b}`);
|
||||
const c = a.plus(b);
|
||||
console.log(`c = a + b = ${c}`);
|
||||
const d = c.neg();
|
||||
console.log(`d = -c = ${d}`);
|
||||
console.log(`c + d = ${c.plus(d)}`);
|
||||
console.log(`a + b + d = ${a.plus(b).plus(d)}`);
|
||||
console.log(`a * 12345 = ${a.mult(12345)}`);
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue