Aaron Fenyes
0abcb995b5
Rust benchmark: rename package
2024-08-13 13:40:33 -07:00
Aaron Fenyes
d864ab5abe
Drop second attempt at static matrices
...
I couldn't get this one working, and the first attempt seems fine.
2024-08-13 13:34:26 -07:00
Aaron Fenyes
fb51e00503
Remove unnecessary type annotations
...
These annotations are only needed for statically sized matrices.
2024-08-13 13:14:54 -07:00
Aaron Fenyes
144bfb8faf
Scala benchmark: use fullLinkJS
output
...
The JavaScript produced by `fullLinkJS` is about twice as fast as the
code produced by `fastLinkJS`.
2024-08-10 21:30:36 -07:00
Aaron Fenyes
27ada6566b
Scala benchmark: step rotation by multiplying
...
This makes the algorithm more consistent with the Rust benchmark.
2024-08-10 19:11:55 -07:00
Aaron Fenyes
3665351e12
Scala benchmark: adjust interface code to match Rust
2024-08-09 15:19:48 -07:00
Aaron Fenyes
14fb6d01f0
Rust benchmark: tidy up a bit
2024-08-09 15:18:13 -07:00
Aaron Fenyes
0b3fe689cd
Rust trial: write benchmark
2024-08-09 15:12:44 -07:00
Aaron Fenyes
6b0fad89dc
Scala trial: write benchmark
2024-08-08 00:26:26 -07:00
Aaron Fenyes
0bd025dd14
Scala trial: clean up Laminar interface
...
Also, drop unused Breeze code in favor of Slash.
2024-08-07 13:40:09 -07:00
Aaron Fenyes
4f30f31686
Rust trial: Make git ignore Cargo.lock
2024-08-07 13:36:48 -07:00
Aaron Fenyes
c376fcdad8
Hack together a "Hello, world" in Scala with Laminar
2024-08-07 13:32:12 -07:00
Aaron Fenyes
244f222eb0
Move the engine into a module
2024-07-29 13:14:32 -07:00
Aaron Fenyes
42bdfabd91
Rust trial: port interface to Sycamore
...
Now we have a reactive web app written entirely in Rust. The Trunk build
tool compiles it to WebAssembly and generates a little JavaScript glue.
2024-07-29 05:30:16 -07:00
Aaron Fenyes
12abef4076
Trial a Rust engine powering a Civet interface
...
Write a basic web app with a Rust engine, compiled to WebAssembly,
powering a Civet interface. Do linear algebra in the engine using
the `nalgebra` crate.
2024-07-28 21:10:04 -07:00
Aaron Fenyes
d7dbee4c05
Stow algebraic engine prototype
...
We're using the Gram matrix engine for the next stage of development,
so the algebraic engine shouldn't be at the top level anymore.
2024-07-28 20:50:04 -07:00
Aaron Fenyes
9d69a900e2
Irisawa hexlet: use Abe's terminology in comments
...
Abe uses the names "sun" and "moon" for what Wikipedia calls the nucleus
spheres.
2024-07-18 03:39:41 -07:00
Aaron Fenyes
8a77cd7484
Irisawa hexlet: drop unviable approach
...
The approach in the deleted file can't work, because the "sun" and
"moon" spheres can't be placed arbitrarily.
2024-07-18 03:21:46 -07:00
Aaron Fenyes
a26f1e3927
Add Irisawa hexlet example
...
Hat tip Romy, who sent me the article on sangaku that led me to this
problem.
2024-07-18 03:16:57 -07:00
Aaron Fenyes
19a4d49497
Clean up example formatting
2024-07-18 01:48:05 -07:00
Aaron Fenyes
71c10adbdd
Overlapping pyramids: drop outdated comment
2024-07-18 01:12:49 -07:00
Aaron Fenyes
33c09917d0
Correct scope of guess constants
2024-07-18 01:05:13 -07:00
Aaron Fenyes
b24dcc9af8
Report success correctly when step limit is reached
2024-07-18 01:04:40 -07:00
Aaron Fenyes
b040bbb7fe
Drop old code from examples
2024-07-18 00:50:48 -07:00
Aaron Fenyes
9007c8bc7c
Circles in triangle: jiggle the guess
2024-07-18 00:49:09 -07:00
Aaron Fenyes
a7f9545a37
Circles in triangle: correct frozen variables
...
Since the self-product of the point at infinity is left unspecified, the
first three components can vary without violating any constraints. To
keep the point at infinity where it's supposed to be, we freeze all of
its components.
2024-07-18 00:43:00 -07:00
Aaron Fenyes
3764fde2f6
Clean up formatting of notes
2024-07-18 00:27:10 -07:00
Aaron Fenyes
24dae6807b
Clarify notes on tangency
2024-07-18 00:16:23 -07:00
Aaron Fenyes
74c7f64b0c
Correct sign of normal in plane utility
...
Clarify the relevant notes too.
2024-07-18 00:03:12 -07:00
Aaron Fenyes
d0340c0b65
Correct point utility again
...
The balance between the light cone basis vectors was wrong, throwing the
point's coordinates off by a factor of two.
2024-07-17 23:37:28 -07:00
Aaron Fenyes
69a704d414
Use notes' sign convention for light cone basis
2024-07-17 23:07:34 -07:00
Aaron Fenyes
01f44324c1
Tetrahedron radius ratio: find radius ratio
2024-07-17 22:45:17 -07:00
Aaron Fenyes
96ffc59642
Tetrahedron radius ratio: tweak guess
...
Jiggle the vertex guesses. Put the circumscribed sphere guess on-shell.
2024-07-17 19:01:34 -07:00
Aaron Fenyes
a02b76544a
Tetrahedron radius ratio: add circumscribed sphere
2024-07-17 18:55:36 -07:00
Aaron Fenyes
6e719f9943
Tetrahedron radius ratio: correct vertex guesses
2024-07-17 18:27:58 -07:00
Aaron Fenyes
d51d43f481
Correct point utility
2024-07-17 18:27:22 -07:00
Aaron Fenyes
6d233b5ee9
Tetrahedron radius ratio: correct signs
2024-07-17 18:08:36 -07:00
Aaron Fenyes
5abd4ca6e1
Revert "Give spheres positive radii in examples"
...
This reverts commit 4728959ae0
, which
actually gave the spheres negative radii! I got confused by the sign
convention differences between the notes and the engine.
2024-07-17 17:49:43 -07:00
Aaron Fenyes
ea640f4861
Start tetrahedron radius ratio example
...
Add the vertices of the tetrahedron to the `sphere-in-tetrahedron`
example.
2024-07-17 17:33:32 -07:00
Aaron Fenyes
4728959ae0
Give spheres positive radii in examples
...
This changes the meaning of `indep_val` in the overlapping pyramids
example, so we adjust `indep_val` to get a nice-looking construction.
2024-07-17 17:22:33 -07:00
Aaron Fenyes
2038103d80
Write examples directly in light cone basis
2024-07-17 15:37:14 -07:00
Aaron Fenyes
bde42ebac0
Switch engine to light cone basis
2024-07-17 14:30:43 -07:00
Aaron Fenyes
e6cf08a9b3
Make tetrahedron faces planar
2024-07-15 23:54:59 -07:00
Aaron Fenyes
7c77481f5e
Don't constrain self-product of frozen vector
2024-07-15 23:39:05 -07:00
Aaron Fenyes
1ce609836b
Implement frozen variables
2024-07-15 22:11:54 -07:00
Aaron Fenyes
b185fd4b83
Switch to backtracking Newton's method in Optim
...
This performs much better than the trust region Newton's method for the
actual `circles-in-triangle` problem. (The trust region method performs
better for the simplified problem produced by the conversion bug.)
2024-07-15 15:52:38 -07:00
Aaron Fenyes
94e0d321d5
Switch back to BigFloat precision in examples
2024-07-15 14:31:30 -07:00
Aaron Fenyes
53d8c38047
Preserve explicit zeros in Gram matrix conversion
...
In previous commits, the `circles-in-triangle` example converged much
more slowly in BigFloat precision than in Float64 precision. This
turned out to be a sign of a bug in the Float64 computation: converting
the Gram matrix using `Float64.()` dropped the explicit zeros, removing
many constraints and making the problem much easier to solve. This
commit corrects the Gram matrix conversion. The Float64 search now
solves the same problem as the BigFloat search, with comparable
performance.
2024-07-15 14:08:57 -07:00
Aaron Fenyes
7b3efbc385
Clean up backtracking gradient descent code
...
Drop experimental singularity handling strategies. Reduce the default
tolerance to within 64-bit floating point precision. Report success.
2024-07-15 13:15:15 -07:00
Aaron Fenyes
25b09ebf92
Sketch backtracking Newton's method
...
This code is a mess, but I'm committing it to record a working state
before I start trying to clean up.
2024-07-15 11:32:04 -07:00