Commit graph

85 commits

Author SHA1 Message Date
sheaf 7b1dcefd46 Migrate waargonaut -> {aeson, aeson-pretty, hermes-json} 2024-10-23 14:49:42 +02:00
sheaf 60287fbf7e Require GTK >= 4.10 2024-10-23 14:49:22 +02:00
sheaf 2e05731ffa add visible/locked layer icons 2024-10-20 17:49:10 +02:00
sheaf 5adcb34de6 synchronise brush widget change across selection 2024-10-19 15:51:45 +02:00
sheaf c1d6dd4151 brush list view: first steps 2024-10-09 16:57:08 +02:00
sheaf 24f182feec add stroke layer view 2024-09-27 23:36:33 +02:00
sheaf 0eb0724dde Refactors in preparation for stroke hierarchy 2024-09-27 17:21:24 +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 e64ce375d2 housekeeping 2024-07-29 13:39:13 +02:00
sheaf 56939ce01a GTK 4.14 compatibility 2024-05-28 10:24:47 +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 ac9deb968a Clean up benchmarking component 2024-04-22 22:11:07 +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 2289468a84 Fixes and restructuring 2024-02-28 17:20:34 +01:00
sheaf 6b658acedd Restructure project & update bounds 2024-02-17 13:58:40 +01:00
sheaf 96aa38b3c3 improve rotations in interval arithmetic
Computing a rotation in interval arithmetic can lose tightness.
Instead of computing

   a cos phi + b sin phi

which doesn't account for the difference in phase in the two sinusoids,
it is better to use

  sqrt (a² + b²) * cos ( phi - atan2(a,b) )

which correctly estimates the maximum amplitude of the sum to be
sqrt(a²+b²) instead of abs(a) + abs(b).

This seems to worsen the performance of the interval Newton method
at the moment, possibly due to the complexity of the new formula,
which involves computing atan(b/a). Further investigation is needed.
2023-05-14 21:38:25 +02:00
sheaf 7db3cbef33 more work into observability 2023-03-13 22:09:15 +01:00
sheaf 52420a1169 experiment: FMA backend for interval arithmetic
also includes the start of a way to observe which equations
are being solved, which should help with improving the performance of
the interval Newton method
2023-03-12 19:15:58 +01:00
sheaf cd6b7368f8 Update cabal.project for GHC 9.6 2023-02-09 17:53:25 +01:00
sheaf 8ac22b4738 some optimisations 2023-01-29 04:03:36 +01:00
sheaf 4174d9b5b6 rejigging 2023-01-28 01:26:47 +01:00
sheaf 236055b4ca do the interval brush stroking at degree 3 2023-01-21 15:24:08 +01:00
sheaf 25d738b252 more WIP with TH now 2023-01-20 16:34:04 +01:00
sheaf c7cd6c2a1c WIP on monomial bases 2023-01-16 02:31:31 +01:00
sheaf 684550a795 implement intervallic brushes 2023-01-13 23:10:06 +01:00
sheaf 09c1bdd948 continue interval arithmetic integration 2023-01-13 15:23:33 +01:00
sheaf a4e9c1cf32 preparation for interval arithmetic 2023-01-13 06:32:34 +01:00
sheaf 8fc5e6c9b8 compute brush strokes using the envelope equation 2023-01-11 15:26:12 +01:00
sheaf 671dae5474 use R2 instead of Point2D & Vector2D 2023-01-09 04:27:08 +01:00
sheaf 22820b328d more cabal file cleanups 2023-01-09 02:54:42 +01:00
sheaf cca4558985 put all colours into a separate CSS file 2023-01-08 21:12:00 +01:00
sheaf 5bd4e7f4cf framework for brush differentiation 2023-01-08 17:16:14 +01:00
sheaf 4e5c848883 kill off brush EDSL 2022-12-11 02:33:34 +01:00
sheaf 066a4e653f more GHC 9.4 build fixes 2022-12-04 17:25:44 +01:00
sheaf bcd38ed791 clean up build steps & instructions 2022-12-04 15:52:29 +01:00
sheaf c80fdac30a switch to using eigen instead of hmatrix 2022-06-17 16:21:52 +02:00
sheaf 4e15380c7e use diagrams to parse MetaFont paths 2022-02-13 17:30:54 +01:00
sheaf 64e45f126b Refactor module hierarchy, use internal records 2022-02-11 22:05:13 +01:00
sheaf 5ff935b4b2 update render & select for new brush manipulation 2021-05-24 17:37:26 +02:00
sheaf 7431e8ba67 compute roots of envelope equation 2021-05-15 23:27:21 +02:00
sheaf c64a4140c4 fix orientation of brush joins 2021-05-10 23:51:05 +02:00
sheaf b46dc2a140 start reworking brush stroking 2021-05-10 18:02:42 +02:00
sheaf 1b0382f3b0 Switch to GTK4 2021-04-21 15:08:33 +00:00
sheaf b32499cc68 GHC 9.0 compatibility 2021-02-23 13:16:26 +01:00
sheaf ab3a12c983 use assertions instead of errors, minor linting 2020-11-15 06:28:48 +01:00
sheaf 1e4bb4bddc implement a basic brush store
* each stroke stores the brushes it uses by reference,
    so that one can interactively edit brushes
    and see the strokes be updated in real-time
  * when writing to a file, we retrive the brush code
    from the reference, and include that information statically
2020-11-14 23:32:23 +01:00
sheaf 393ef6f06e Implement programmable brush framework 2020-11-12 17:34:46 +00:00
sheaf 58ca70c1bd optimise root-finding functions
* use PrimArray to represent polynomials
  * add some strictness annotations
  * turn on some optimisation flags
  * use quadratic formula for quadratic polynomials
2020-09-19 00:43:07 +02:00