@johnhenry/math 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -42,7 +42,7 @@ export { SpecialOperator } from "./SpecialOperator.ts";
42
42
  export * as Statistics from "./Statistics.ts";
43
43
  export { StringEvaluator } from "./StringEvaluator.ts";
44
44
  export { Structure, type StructureOptions } from "./Structure.ts";
45
- export { type Assumption, type BinaryFuncName, type CmpOp, DegenerateOdeError, type DifferentiationStep, type Expr, FUNCTION_NAMES, type FuncName, InfiniteSolutionsError, IntegrationSingularityError, NoClosedFormError, NonLinearSystemError, NotIntegrableError, NotSeparableError, type OdeClosedFormResult, ProductNotDifferentiableError, SeriesDivergesError, SingularSystemError, Symbolic, SystemDidNotConvergeError, UndeclaredVariableError, } from "./Symbolic.ts";
45
+ export { type Assumption, type BinaryFuncName, type CmpOp, DegenerateOdeError, type DifferentiationStep, type Expr, FUNCTION_NAMES, type FuncName, InfiniteSolutionsError, IntegrationSingularityError, NoClosedFormError, NonLinearSystemError, NotIntegrableError, NotSeparableError, type OdeClosedFormResult, type ParseOptions, ProductNotDifferentiableError, SeriesDivergesError, SingularSystemError, Symbolic, SystemDidNotConvergeError, UndeclaredVariableError, } from "./Symbolic.ts";
46
46
  export { Type, TypeTag } from "./Type.ts";
47
47
  export { Utilities } from "./Utilities.ts";
48
48
  export { Vec4 } from "./Vec4.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,sFAAsF;AACtF,4EAA4E;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,2EAA2E;AAC3E,yEAAyE;AACzE,wEAAwE;AACxE,OAAO,EAAE,SAAS,EAAiB,uBAAuB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpG,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,2BAA2B,EAC3B,YAAY,EACZ,OAAO,GACR,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAGL,aAAa,EACb,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAA2B,MAAM,4BAA4B,CAAC;AAC5F,wBAAwB;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAEL,iBAAiB,EACjB,UAAU,IAAI,WAAW,EACzB,IAAI,IAAI,KAAK,EACb,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EAEf,YAAY,IAAI,aAAa,GAC9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAc,WAAW,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAa,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAEL,YAAY,GAKb,MAAM,mBAAmB,CAAC;AAC3B,wCAAwC;AACxC,OAAO,EAGL,UAAU,GAKX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,gCAAgC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,oBAAoB,EAEpB,WAAW,EACX,YAAY,EAGZ,WAAW,EACX,YAAY,EACZ,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAGL,UAAU,GAGX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAiC,SAAS,EAAgB,MAAM,gBAAgB,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,gBAAgB;AAChB,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,kCAAkC;AAClC,OAAO,EAAE,SAAS,EAAyB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAIL,kBAAkB,EAGlB,cAAc,EAEd,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EAGjB,6BAA6B,EAC7B,mBAAmB,EACnB,mBAAmB,EACnB,QAAQ,EACR,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,cAAc;AACd,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,iBAAiB;AACjB,OAAO,EAAe,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@johnhenry/math",
3
- "version": "0.0.3",
3
+ "version": "0.1.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
package/src/DualNumber.ts CHANGED
@@ -25,6 +25,16 @@ export class DualNumber {
25
25
  return new DualNumber(x, 1);
26
26
  }
27
27
 
28
+ /**
29
+ * Builds a dual number whose value may be outside the function's domain. A
30
+ * NaN value (e.g. `log` of a negative) makes the derivative NaN too, rather
31
+ * than leaving a finite-looking derivative (`x.deriv / x.value`) next to a
32
+ * meaningless value.
33
+ */
34
+ private static domain(value: number, deriv: number): DualNumber {
35
+ return new DualNumber(value, Number.isNaN(value) ? Number.NaN : deriv);
36
+ }
37
+
28
38
  private static lift(x: DualNumber | number): DualNumber {
29
39
  return x instanceof DualNumber ? x : new DualNumber(x, 0);
30
40
  }
@@ -62,7 +72,7 @@ export class DualNumber {
62
72
  // general formula entirely rather than let it hit that indeterminate
63
73
  // form (issue #74).
64
74
  if (n === 0) return new DualNumber(1, 0);
65
- return new DualNumber(this.value ** n, n * this.value ** (n - 1) * this.deriv);
75
+ return DualNumber.domain(this.value ** n, n * this.value ** (n - 1) * this.deriv);
66
76
  }
67
77
 
68
78
  static sin(x: DualNumber): DualNumber {
@@ -80,11 +90,11 @@ export class DualNumber {
80
90
  return new DualNumber(e, e * x.deriv);
81
91
  }
82
92
  static log(x: DualNumber): DualNumber {
83
- return new DualNumber(Math.log(x.value), x.deriv / x.value);
93
+ return DualNumber.domain(Math.log(x.value), x.deriv / x.value);
84
94
  }
85
95
  static sqrt(x: DualNumber): DualNumber {
86
96
  const s = Math.sqrt(x.value);
87
- return new DualNumber(s, x.deriv / (2 * s));
97
+ return DualNumber.domain(s, x.deriv / (2 * s));
88
98
  }
89
99
 
90
100
  /** The derivative of `f` at `x`, evaluated exactly via dual numbers. */
@@ -59,6 +59,12 @@ export interface Placement3D {
59
59
 
60
60
  const v3 = (x: number, y: number, z = 0): Vec3 => ({ x, y, z });
61
61
  const asPoint = (p: Vector<number>): Vec3 => ({ x: p.x as number, y: p.y as number, z: p.z as number });
62
+ const isFinitePoint = (p: Vec3): boolean => Number.isFinite(p.x) && Number.isFinite(p.y) && Number.isFinite(p.z);
63
+ /** A triangle face, or `null` when any vertex is NaN / infinite (so the surface breaks there instead of drawing garbage). */
64
+ const finiteFace = (a: Vector<number>, b: Vector<number>, c: Vector<number>): Face | null => {
65
+ const face: Face = [asPoint(a), asPoint(b), asPoint(c)];
66
+ return face.every(isFinitePoint) ? face : null;
67
+ };
62
68
 
63
69
  export class Graph3DUtils {
64
70
  /** Sample `binaryOperation` over a 2D grid, returning a matrix of results. */
@@ -222,6 +228,8 @@ export class Graph3DUtils {
222
228
  /**
223
229
  * Build a surface mesh from a grid (matrix) of points, as two triangle
224
230
  * sweeps with distinct materials (bug fix: the first sweep now uses `alpha1`).
231
+ * Triangles touching a NaN or infinite vertex are omitted, so the surface
232
+ * breaks into pieces around them.
225
233
  */
226
234
  static pointMatrixToMesh3D(
227
235
  vector: Vector<Vector<Vector<number>>>,
@@ -239,11 +247,12 @@ export class Graph3DUtils {
239
247
  for (let i = 0; i < width - 1; i++) {
240
248
  for (let j = 0; j < height - 1; j++) {
241
249
  if (at(i, j) && vector[i + 1] && at(i, j + 1)) {
242
- faces1.push([
243
- asPoint(at(i, j) as Vector<number>),
244
- asPoint(at(i + 1, j) as Vector<number>),
245
- asPoint(at(i, j + 1) as Vector<number>),
246
- ]);
250
+ const face = finiteFace(
251
+ at(i, j) as Vector<number>,
252
+ at(i + 1, j) as Vector<number>,
253
+ at(i, j + 1) as Vector<number>,
254
+ );
255
+ if (face) faces1.push(face);
247
256
  }
248
257
  }
249
258
  }
@@ -252,11 +261,12 @@ export class Graph3DUtils {
252
261
  for (let i = 1; i < width; i++) {
253
262
  for (let j = 1; j < height; j++) {
254
263
  if (at(i, j) && vector[i - 1] && at(i, j - 1)) {
255
- faces2.push([
256
- asPoint(at(i, j) as Vector<number>),
257
- asPoint(at(i - 1, j) as Vector<number>),
258
- asPoint(at(i, j - 1) as Vector<number>),
259
- ]);
264
+ const face = finiteFace(
265
+ at(i, j) as Vector<number>,
266
+ at(i - 1, j) as Vector<number>,
267
+ at(i, j - 1) as Vector<number>,
268
+ );
269
+ if (face) faces2.push(face);
260
270
  }
261
271
  }
262
272
  }
package/src/GraphUtils.ts CHANGED
@@ -98,7 +98,10 @@ export class GraphUtils {
98
98
  return [...points].map((p) => GraphUtils.barPlacement(p, barWidth));
99
99
  }
100
100
 
101
- /** A poly-line path through the given points. */
101
+ /**
102
+ * A poly-line path through the given points. Points with a non-finite x or y
103
+ * (NaN, +/-Infinity) are skipped and split the line into separate segments.
104
+ */
102
105
  static vectorToCurve(
103
106
  points: Vector<Vector<number>>,
104
107
  thickness = 0,
@@ -112,13 +115,18 @@ export class GraphUtils {
112
115
  ): Path2D {
113
116
  const stroke: StrokeStyle = { thickness, color, alpha, pixelHinting, scaleMode, caps, joints, miterLimit };
114
117
  const commands: PathCommand[] = [];
115
- if (points.length > 0) {
116
- const first = point(points[0] as Vector<number>);
117
- commands.push({ op: "moveTo", x: first.x, y: first.y });
118
- for (let i = 1; i < points.length; i++) {
119
- const pt = point(points[i] as Vector<number>);
120
- commands.push({ op: "lineTo", x: pt.x, y: pt.y });
118
+ // A NaN or +/-Infinity coordinate (a pole, a domain error) breaks the path: the
119
+ // run before it ends, and the next finite point starts a new run with `moveTo`
120
+ // rather than a `lineTo` drawn through the gap.
121
+ let penDown = false;
122
+ for (let i = 0; i < points.length; i++) {
123
+ const pt = point(points[i] as Vector<number>);
124
+ if (!Number.isFinite(pt.x) || !Number.isFinite(pt.y)) {
125
+ penDown = false;
126
+ continue;
121
127
  }
128
+ commands.push({ op: penDown ? "lineTo" : "moveTo", x: pt.x, y: pt.y });
129
+ penDown = true;
122
130
  }
123
131
  return { stroke, commands };
124
132
  }