Commit graph

194 commits

Author SHA1 Message Date
sheaf bb9b381cb5 workaround for TH linking bugs 2024-09-06 13:08:40 +02:00
sheaf 9ff25a25aa cleanups 2024-08-29 01:46:50 +02:00
sheaf 2bae92dc5e more SIMD experiments 2024-08-29 00:26:19 +02:00
sheaf ed8720555f improve D to use Nat for domain 2024-08-05 17:49:04 +02:00
sheaf 5f98165276 WIP: SIMD experiments 2024-08-01 21:36:44 +02:00
sheaf e64ce375d2 housekeeping 2024-07-29 13:39:13 +02:00
sheaf 7bb28f8c96 brush widget UI: don't allow 0 width or height 2024-05-28 10:36:26 +02:00
sheaf 56939ce01a GTK 4.14 compatibility 2024-05-28 10:24:47 +02:00
sheaf 300fbf92c0 fixes to brush widget UI 2024-05-25 17:04:08 +02:00
sheaf 77a36e1f0b add more info to cusps benchmark output 2024-05-25 12:41:10 +02:00
sheaf af66b3b5ac update bounds for GHC 9.10 2024-05-23 11:17:36 +02:00
sheaf 91ac61e3cd WIP: add Walter's LP approach to interval Newton 2024-05-23 11:04:17 +02:00
sheaf 1ec2af6dcc WIP: add brush widget UI 2024-05-21 19:40:22 +02:00
sheaf 2a21980ffc Fix issues in withTangent & strictlyParallel function 2024-04-29 19:35:53 +02:00
sheaf 63b9703faf UI tweaks 2024-04-25 21:53:53 +02:00
sheaf c89fba7fd2 Improve specialisation + add degree computation 2024-04-25 21:53:27 +02:00
sheaf 6450859e3c Bench with & without box(1)-consistency algorithm 2024-04-24 02:04:13 +02:00
sheaf 17df43c5d7 Commentary in tearDropBrushFn 2024-04-24 01:47:01 +02:00
sheaf 32ce7c38bb Add some commentary to Gauss-Seidel function 2024-04-24 01:30:24 +02:00
sheaf a59f1695fb Sprinkle in a bit of unicode 2024-04-24 01:03:46 +02:00
sheaf edba0416aa Add complete interval-union Gauss–Seidel step method 2024-04-24 00:13:06 +02:00
sheaf ac9deb968a Clean up benchmarking component 2024-04-22 22:11:07 +02:00
sheaf 0c54de8b1c Update Eigen to expose unsafeCoeff 2024-04-22 20:12:31 +02:00
sheaf d797abc5e4 Modularise root isolation algorithms
Different root isolation algorithms now live in separate modules,
and are all instances of the RootIsolationAlgorithm typeclass.

This separates the algorithmic code from the top-level driver code
in Math.Root.Isolation.
2024-04-22 20:06:03 +02:00
sheaf b1df0d04e6 Always run Gauss-Seidel at tiny sizes to rule out fake solutions 2024-04-22 01:52:29 +02:00
sheaf 0e59d85143 Use 'n choose k' to choose Gauss-Seidel dimensions 2024-04-21 21:15:07 +02:00
sheaf 0e6b9a822b Documentation in root isolation module 2024-04-21 20:35:35 +02:00
sheaf 8009983b37 Slight refactor of bisection dimension choosing logic 2024-04-21 20:10:37 +02:00
sheaf ced714987e Implement adaptive shaving algorithm 2024-04-21 18:09:21 +02:00
sheaf 01fdd9a126 Improve robustness of quadratic equation solver
Based on ideas from the paper
  "The Ins and Outs of Solving Quadratic Equations with Floating-Point Arithmetic"
    (Frédéric Goualard, 2023)

Could still be improved further, but I think this is acceptable for now.
2024-04-21 14:19:37 +02:00
sheaf 1338d7ddbe Improve intervallic rotation computations
This commit bakes in a certain kind of representation for brush strokes:

  c(t,s) = p(t) + R(theta(t)) b(t,s)

This representation allows us to cancel out some rotation terms when
computing the envelope equation, improving the efficiency of the
cusp-finding methods.
2024-04-20 18:28:41 +02:00
sheaf 2b167f594a Make it easier to switch between 2 and 3-dim
This commit makes it easier to switch between the 2-dim and 3-dim
formulations of the cusp-finding problem. This is still work in progress,
trying to improve the performance of the cusp-finding algorithms.
2024-04-18 21:33:55 +02:00
sheaf 0160081e80 Further modularisation of root isolation code
The code is now generic over the dimension. There is a slight performance
loss that I need to investigate; perhaps some things are not getting
specialised? Maybe it is better to be more explicit about staging and
splice in the functions with fixed dimensions.
2024-04-18 20:14:19 +02:00
sheaf 131753da82 Split off root-isolation algorithms into Math.Root.Isolation 2024-04-17 20:41:21 +02:00
sheaf bd468fcf82 start modularising cusp finding code 2024-04-05 17:48:53 +02:00
sheaf 55470d1f0e make cusp-finding algorithm choice more configurable 2024-04-03 18:46:08 +02:00
sheaf a183475985 Cusp finding: implement bound consistency improvement 2024-03-14 21:50:34 +01:00
sheaf 61671dc280 Implement box(1) consistency check for cusp finding 2024-03-13 18:00:37 +01:00
sheaf 60ebf7886f Split up succFP etc into separate module 2024-03-11 14:09:54 +01:00
sheaf 34c129d72a Add tests and fix MonomialBasis D3A3 instance 2024-03-08 15:35:39 +01:00
sheaf cebfeb0b7a Fix some more issues with interval recip 2024-03-06 16:07:21 +01:00
sheaf 2289468a84 Fixes and restructuring 2024-02-28 17:20:34 +01:00
sheaf 26cfdada8f Fix extendedRecip (negative infinity) 2024-02-24 19:37:34 +01:00
sheaf d1b3765335 Split out benchmark for cusp finding 2024-02-23 17:03:28 +01:00
sheaf b70f7ba133 Add mechanisms to log envelope equation data 2024-02-19 16:46:09 +01:00
sheaf 6b658acedd Restructure project & update bounds 2024-02-17 13:58:40 +01:00
sheaf 1368825103 improve outline computation using divMod' 2024-01-08 11:31:18 +01:00
sheaf f10fbd9810 remove traces & minor cleanups 2024-01-06 18:18:14 +01:00
sheaf 326487942e fix orientation computation 2023-08-30 17:40:47 +02:00
sheaf 92efc4127c add teardrop shaped brush 2023-07-15 16:40:59 +02:00