commit 6c54c16f87a0ba72b224e43d4c1909f8bf964324 Author: Jan Bergen Date: Fri May 17 15:26:56 2024 +0200 inital commit diff --git a/bachelorarbeit/.gitignore b/bachelorarbeit/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/bachelorarbeit/.gitignore @@ -0,0 +1 @@ +/target diff --git a/bachelorarbeit/Cargo.lock b/bachelorarbeit/Cargo.lock new file mode 100644 index 0000000..d7359e4 --- /dev/null +++ b/bachelorarbeit/Cargo.lock @@ -0,0 +1,3934 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f90148830dac590fac7ccfe78ec4a8ea404c60f75a24e16407a71f0f40de775" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b" +dependencies = [ + "enumn", + "serde", +] + +[[package]] +name = "accesskit_consumer" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" +dependencies = [ + "accesskit", +] + +[[package]] +name = "accesskit_macos" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2 0.3.0-beta.3.patch-leaks.3", + "once_cell", +] + +[[package]] +name = "accesskit_unix" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f46c18d99ba61ad7123dd13eeb0c104436ab6af1df6a1cd8c11054ed394a08" +dependencies = [ + "accesskit", + "accesskit_consumer", + "async-channel", + "async-once-cell", + "atspi", + "futures-lite 1.13.0", + "once_cell", + "serde", + "zbus", +] + +[[package]] +name = "accesskit_windows" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" +dependencies = [ + "accesskit", + "accesskit_consumer", + "once_cell", + "paste", + "static_assertions", + "windows 0.48.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5284218aca17d9e150164428a0ebc7b955f70e3a9a78b4c20894513aabf98a67" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_unix", + "accesskit_windows", + "winit", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "serde", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "android-activity" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +dependencies = [ + "android-properties", + "bitflags 2.5.0", + "cc", + "cesu8", + "jni", + "jni-sys", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "num_enum", + "thiserror", +] + +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "arboard" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" +dependencies = [ + "clipboard-win", + "log", + "objc2 0.5.1", + "objc2-app-kit", + "objc2-foundation", + "parking_lot", + "x11rb", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" + +[[package]] +name = "ash" +version = "0.37.3+1.3.251" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" +dependencies = [ + "libloading 0.7.4", +] + +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +dependencies = [ + "concurrent-queue", + "event-listener 5.3.0", + "event-listener-strategy 0.5.2", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand 2.1.0", + "futures-lite 2.3.0", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "blocking", + "futures-lite 1.13.0", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +dependencies = [ + "async-lock 3.3.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.3.0", + "parking", + "polling 3.7.0", + "rustix 0.38.34", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +dependencies = [ + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", + "pin-project-lite", +] + +[[package]] +name = "async-once-cell" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb" + +[[package]] +name = "async-process" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +dependencies = [ + "async-io 1.13.0", + "async-lock 2.8.0", + "async-signal", + "blocking", + "cfg-if", + "event-listener 3.1.0", + "futures-lite 1.13.0", + "rustix 0.38.34", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "async-signal" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" +dependencies = [ + "async-io 2.3.2", + "async-lock 3.3.0", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.34", + "signal-hook-registry", + "slab", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atspi" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6059f350ab6f593ea00727b334265c4dfc7fd442ee32d264794bd9bdc68e87ca" +dependencies = [ + "atspi-common", + "atspi-connection", + "atspi-proxies", +] + +[[package]] +name = "atspi-common" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92af95f966d2431f962bc632c2e68eda7777330158bf640c4af4249349b2cdf5" +dependencies = [ + "enumflags2", + "serde", + "static_assertions", + "zbus", + "zbus_names", + "zvariant", +] + +[[package]] +name = "atspi-connection" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c65e7d70f86d4c0e3b2d585d9bf3f979f0b19d635a336725a88d279f76b939" +dependencies = [ + "atspi-common", + "atspi-proxies", + "futures-lite 1.13.0", + "zbus", +] + +[[package]] +name = "atspi-proxies" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6495661273703e7a229356dcbe8c8f38223d697aacfaf0e13590a9ac9977bb52" +dependencies = [ + "atspi-common", + "serde", + "zbus", +] + +[[package]] +name = "autocfg" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" + +[[package]] +name = "bachelorarbeit" +version = "0.1.0" +dependencies = [ + "eframe", + "egui", + "egui_extras", + "egui_plot", + "gauss-quad", + "indicatif", + "nohash-hasher", + "num", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "block-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" +dependencies = [ + "objc-sys 0.3.3", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys 0.1.0-beta.1", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "block2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" +dependencies = [ + "block-sys 0.2.1", + "objc2 0.4.1", +] + +[[package]] +name = "block2" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43ff7d91d3c1d568065b06c899777d1e48dcf76103a672a0adbc238a7f247f1e" +dependencies = [ + "objc2 0.5.1", +] + +[[package]] +name = "blocking" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" +dependencies = [ + "async-channel", + "async-lock 3.3.0", + "async-task", + "futures-io", + "futures-lite 2.3.0", + "piper", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytemuck" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "calloop" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +dependencies = [ + "bitflags 2.5.0", + "log", + "polling 3.7.0", + "rustix 0.38.34", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop", + "rustix 0.38.34", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "cc" +version = "1.0.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "cgl" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" +dependencies = [ + "libc", +] + +[[package]] +name = "clipboard-win" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" +dependencies = [ + "error-code", +] + +[[package]] +name = "cocoa" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +dependencies = [ + "bitflags 1.3.2", + "block", + "cocoa-foundation", + "core-foundation", + "core-graphics", + "foreign-types", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" +dependencies = [ + "bitflags 1.3.2", + "block", + "core-foundation", + "core-graphics-types", + "libc", + "objc", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "com" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" +dependencies = [ + "com_macros", +] + +[[package]] +name = "com_macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" +dependencies = [ + "com_macros_support", + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "com_macros_support" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "unicode-width", + "windows-sys 0.52.0", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading 0.8.3", +] + +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + +[[package]] +name = "ecolor" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20930a432bbd57a6d55e07976089708d4893f3d556cf42a0d79e9e321fa73b10" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "eframe" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020e2ccef6bbcec71dbc542f7eed64a5846fc3076727f5746da8fd307c91bab2" +dependencies = [ + "bytemuck", + "cocoa", + "document-features", + "egui", + "egui-wgpu", + "egui-winit", + "egui_glow", + "glow", + "glutin", + "glutin-winit", + "image", + "js-sys", + "log", + "objc", + "parking_lot", + "percent-encoding", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.1", + "static_assertions", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "winapi", + "winit", +] + +[[package]] +name = "egui" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "584c5d1bf9a67b25778a3323af222dbe1a1feb532190e103901187f92c7fe29a" +dependencies = [ + "accesskit", + "ahash", + "epaint", + "log", + "nohash-hasher", + "serde", +] + +[[package]] +name = "egui-wgpu" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469ff65843f88a702b731a1532b7d03b0e8e96d283e70f3a22b0e06c46cb9b37" +dependencies = [ + "bytemuck", + "document-features", + "egui", + "epaint", + "log", + "thiserror", + "type-map", + "web-time", + "wgpu", + "winit", +] + +[[package]] +name = "egui-winit" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e3da0cbe020f341450c599b35b92de4af7b00abde85624fd16f09c885573609" +dependencies = [ + "accesskit_winit", + "arboard", + "egui", + "log", + "raw-window-handle 0.6.1", + "smithay-clipboard", + "web-time", + "webbrowser", + "winit", +] + +[[package]] +name = "egui_extras" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b78779f35ded1a853786c9ce0b43fe1053e10a21ea3b23ebea411805ce41593" +dependencies = [ + "egui", + "enum-map", + "log", + "mime_guess2", + "serde", +] + +[[package]] +name = "egui_glow" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0e5d975f3c86edc3d35b1db88bb27c15dde7c55d3b5af164968ab5ede3f44ca" +dependencies = [ + "bytemuck", + "egui", + "glow", + "log", + "memoffset 0.9.1", + "wasm-bindgen", + "web-sys", + "winit", +] + +[[package]] +name = "egui_plot" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7854b86dc1c2d352c5270db3d600011daa913d6b554141a03939761323288a1" +dependencies = [ + "egui", +] + +[[package]] +name = "emath" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c3a552cfca14630702449d35f41c84a0d15963273771c6059175a803620f3f" +dependencies = [ + "bytemuck", + "serde", +] + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "enumflags2" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "enumn" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fd000fd6988e73bbe993ea3db9b1aa64906ab88766d654973924340c8cddb42" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "epaint" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b381f8b149657a4acf837095351839f32cd5c4aec1817fc4df84e18d76334176" +dependencies = [ + "ab_glyph", + "ahash", + "bytemuck", + "ecolor", + "emath", + "log", + "nohash-hasher", + "parking_lot", + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "error-code" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.0", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand 2.1.0", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gauss-quad" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0032f2490f690c0e2315268425c3f5407557230ebc265747082d7fd8a57926" +dependencies = [ + "nalgebra", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + +[[package]] +name = "getrandom" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gl_generator" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" +dependencies = [ + "khronos_api", + "log", + "xml-rs", +] + +[[package]] +name = "glow" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "glutin" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746" +dependencies = [ + "bitflags 2.5.0", + "cfg_aliases", + "cgl", + "core-foundation", + "dispatch", + "glutin_egl_sys", + "glutin_glx_sys", + "glutin_wgl_sys", + "icrate", + "libloading 0.8.3", + "objc2 0.4.1", + "once_cell", + "raw-window-handle 0.5.2", + "wayland-sys", + "windows-sys 0.48.0", + "x11-dl", +] + +[[package]] +name = "glutin-winit" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebcdfba24f73b8412c5181e56f092b5eff16671c514ce896b258a0a64bd7735" +dependencies = [ + "cfg_aliases", + "glutin", + "raw-window-handle 0.5.2", + "winit", +] + +[[package]] +name = "glutin_egl_sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77cc5623f5309ef433c3dd4ca1223195347fe62c413da8e2fdd0eb76db2d9bcd" +dependencies = [ + "gl_generator", + "windows-sys 0.48.0", +] + +[[package]] +name = "glutin_glx_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a165fd686c10dcc2d45380b35796e577eacfd43d4660ee741ec8ebe2201b3b4f" +dependencies = [ + "gl_generator", + "x11-dl", +] + +[[package]] +name = "glutin_wgl_sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" +dependencies = [ + "gl_generator", +] + +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.5.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" +dependencies = [ + "log", + "presser", + "thiserror", + "winapi", + "windows 0.52.0", +] + +[[package]] +name = "gpu-descriptor" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +dependencies = [ + "bitflags 2.5.0", + "gpu-descriptor-types", + "hashbrown", +] + +[[package]] +name = "gpu-descriptor-types" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "hassle-rs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" +dependencies = [ + "bitflags 2.5.0", + "com", + "libc", + "libloading 0.8.3", + "thiserror", + "widestring", + "winapi", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hexf-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "icrate" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" +dependencies = [ + "block2 0.3.0", + "dispatch", + "objc2 0.4.1", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", + "png", +] + +[[package]] +name = "indexmap" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "indicatif" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +dependencies = [ + "console", + "instant", + "number_prefix", + "portable-atomic", + "unicode-width", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" + +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "khronos-egl" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" +dependencies = [ + "libc", + "libloading 0.8.3", + "pkg-config", +] + +[[package]] +name = "khronos_api" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.154" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.5", +] + +[[package]] +name = "libredox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +dependencies = [ + "bitflags 2.5.0", + "libc", + "redox_syscall 0.4.1", +] + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" + +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" + +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "metal" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +dependencies = [ + "bitflags 2.5.0", + "block", + "core-graphics-types", + "foreign-types", + "log", + "objc", + "paste", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess2" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "naga" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +dependencies = [ + "bit-set", + "bitflags 2.5.0", + "codespan-reporting", + "hexf-parse", + "indexmap", + "log", + "num-traits", + "rustc-hash", + "spirv", + "termcolor", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "nalgebra" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb2d0de08694bed883320212c18ee3008576bfe8c306f4c3c4a58b4876998be" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ndk" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" +dependencies = [ + "bitflags 2.5.0", + "jni-sys", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.1", + "thiserror", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.5.0+25.2.9519653" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" +dependencies = [ + "jni-sys", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset 0.7.1", +] + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "num" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", + "objc_exception", +] + +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2 0.2.0-alpha.6", + "objc-sys 0.2.0-beta.2", + "objc2-encode 2.0.0-pre.2", +] + +[[package]] +name = "objc2" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +dependencies = [ + "objc-sys 0.3.3", + "objc2-encode 3.0.0", +] + +[[package]] +name = "objc2" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b25e1034d0e636cd84707ccdaa9f81243d399196b8a773946dcffec0401659" +dependencies = [ + "objc-sys 0.3.3", + "objc2-encode 4.0.1", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb79768a710a9a1798848179edb186d1af7e8a8679f369e4b8d201dd2a034047" +dependencies = [ + "block2 0.5.0", + "objc2 0.5.1", + "objc2-core-data", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e092bc42eaf30a08844e6a076938c60751225ec81431ab89f5d1ccd9f958d6c" +dependencies = [ + "block2 0.5.0", + "objc2 0.5.1", + "objc2-foundation", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys 0.2.0-beta.2", +] + +[[package]] +name = "objc2-encode" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" + +[[package]] +name = "objc2-encode" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88658da63e4cc2c8adb1262902cd6af51094df0488b760d6fd27194269c0950a" + +[[package]] +name = "objc2-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfaefe14254871ea16c7d88968c0ff14ba554712a20d76421eec52f0a7fb8904" +dependencies = [ + "block2 0.5.0", + "objc2 0.5.1", +] + +[[package]] +name = "objc_exception" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +dependencies = [ + "cc", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "orbclient" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" +dependencies = [ + "libredox", +] + +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.5.1", + "smallvec", + "windows-targets 0.52.5", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.1.0", + "futures-io", +] + +[[package]] +name = "pkg-config" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 0.38.34", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "presser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro2" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiling" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" + +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "raw-window-handle" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" + +[[package]] +name = "raw-window-handle" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" + +[[package]] +name = "renderdoc-sys" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys 0.4.13", + "windows-sys 0.52.0", +] + +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sctk-adwaita" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + +[[package]] +name = "serde" +version = "1.0.199" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.199" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "serde_repr" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simba" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3fd720c48c53cace224ae62bef1bbff363a70c68c4802a78b5cc6159618176" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "smithay-client-toolkit" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" +dependencies = [ + "bitflags 2.5.0", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.34", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-clipboard" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" +dependencies = [ + "libc", + "smithay-client-toolkit", + "wayland-backend", +] + +[[package]] +name = "smol_str" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +dependencies = [ + "serde", +] + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spirv" +version = "0.3.0+sdk-1.3.268.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" +dependencies = [ + "bitflags 2.5.0", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strict-num" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand 2.1.0", + "rustix 0.38.34", + "windows-sys 0.52.0", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml_datetime" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", +] + +[[package]] +name = "ttf-parser" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" + +[[package]] +name = "type-map" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "deb68604048ff8fa93347f02441e4487594adc20bb8a084f9e564d2b827a0a9f" +dependencies = [ + "rustc-hash", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset 0.9.1", + "tempfile", + "winapi", +] + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-width" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.60", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" + +[[package]] +name = "wayland-backend" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +dependencies = [ + "cc", + "downcast-rs", + "rustix 0.38.34", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +dependencies = [ + "bitflags 2.5.0", + "rustix 0.38.34", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.5.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +dependencies = [ + "rustix 0.38.34", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + +[[package]] +name = "web-sys" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webbrowser" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" +dependencies = [ + "core-foundation", + "home", + "jni", + "log", + "ndk-context", + "objc", + "raw-window-handle 0.5.2", + "url", + "web-sys", +] + +[[package]] +name = "wgpu" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" +dependencies = [ + "arrayvec", + "cfg-if", + "cfg_aliases", + "js-sys", + "log", + "parking_lot", + "profiling", + "raw-window-handle 0.6.1", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-core" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" +dependencies = [ + "arrayvec", + "bit-vec", + "bitflags 2.5.0", + "cfg_aliases", + "codespan-reporting", + "indexmap", + "log", + "naga", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle 0.6.1", + "rustc-hash", + "smallvec", + "thiserror", + "web-sys", + "wgpu-hal", + "wgpu-types", +] + +[[package]] +name = "wgpu-hal" +version = "0.19.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bitflags 2.5.0", + "cfg_aliases", + "core-graphics-types", + "glow", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator", + "gpu-descriptor", + "hassle-rs", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.3", + "log", + "metal", + "naga", + "ndk-sys", + "objc", + "once_cell", + "parking_lot", + "profiling", + "raw-window-handle 0.6.1", + "renderdoc-sys", + "rustc-hash", + "smallvec", + "thiserror", + "wasm-bindgen", + "web-sys", + "wgpu-types", + "winapi", +] + +[[package]] +name = "wgpu-types" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +dependencies = [ + "bitflags 2.5.0", + "js-sys", + "web-sys", +] + +[[package]] +name = "wide" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a1851a719f11d1d2fea40e15c72f6c00de8c142d7ac47c1441cc7e4d0d5bc6" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-implement" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-interface" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.5", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "winit" +version = "0.29.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +dependencies = [ + "ahash", + "android-activity", + "atomic-waker", + "bitflags 2.5.0", + "bytemuck", + "calloop", + "cfg_aliases", + "core-foundation", + "core-graphics", + "cursor-icon", + "icrate", + "js-sys", + "libc", + "log", + "memmap2", + "ndk", + "ndk-sys", + "objc2 0.4.1", + "once_cell", + "orbclient", + "percent-encoding", + "raw-window-handle 0.5.2", + "raw-window-handle 0.6.1", + "redox_syscall 0.3.5", + "rustix 0.38.34", + "sctk-adwaita", + "smithay-client-toolkit", + "smol_str", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", + "web-sys", + "web-time", + "windows-sys 0.48.0", + "x11-dl", + "x11rb", + "xkbcommon-dl", +] + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "x11rb" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname", + "libc", + "libloading 0.8.3", + "once_cell", + "rustix 0.38.34", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" + +[[package]] +name = "xcursor" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" + +[[package]] +name = "xdg-home" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "xkbcommon-dl" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" +dependencies = [ + "bitflags 2.5.0", + "dlib", + "log", + "once_cell", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zbus" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io 1.13.0", + "async-lock 2.8.0", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "byteorder", + "derivative", + "enumflags2", + "event-listener 2.5.3", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix", + "once_cell", + "ordered-stream", + "rand", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "winapi", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.60", +] + +[[package]] +name = "zvariant" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db" +dependencies = [ + "byteorder", + "enumflags2", + "libc", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "3.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", + "syn 1.0.109", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] diff --git a/bachelorarbeit/Cargo.toml b/bachelorarbeit/Cargo.toml new file mode 100644 index 0000000..fc7a84e --- /dev/null +++ b/bachelorarbeit/Cargo.toml @@ -0,0 +1,22 @@ +[package] +name = "bachelorarbeit" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +gauss-quad = "0.1.8" +num = "0.4.2" +egui = "0.27.2" +egui_extras = "0.27.2" +eframe = "0.27.2" +egui_plot = "0.27.2" +indicatif = "0.17.8" +nohash-hasher = "0.2.0" + + +[profile.release] +debug = true +# lto = "fat" +# codegen-units = 1 \ No newline at end of file diff --git a/bachelorarbeit/flamegraph.svg b/bachelorarbeit/flamegraph.svg new file mode 100644 index 0000000..5a996ad --- /dev/null +++ b/bachelorarbeit/flamegraph.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch __cos_fma (1 samples, 0.18%)[[heap]] (3 samples, 0.53%)bachelorarbeit::calc::delta_with_lut (2 samples, 0.35%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)__tan_fma (7 samples, 1.24%)bachelorarbeit::calc::omnes (17 samples, 3.01%)bac..bachelorarbeit::calc::integrate_complex (2 samples, 0.35%)bachelorarbeit::calc::omnes::_{{closure}} (2 samples, 0.35%)bachelorarbeit::calc::omnes_integrand (2 samples, 0.35%)std::f64::<impl f64>::cos (2 samples, 0.35%)bachelorarbeit::calc::phi0 (6 samples, 1.06%)bachelorarbeit::calc::integrate (6 samples, 1.06%)bachelorarbeit::calc::phi0::_{{closure}} (6 samples, 1.06%)bachelorarbeit::calc::phi0_integrand (6 samples, 1.06%)std::f64::<impl f64>::tan (2 samples, 0.35%)[unknown] (35 samples, 6.21%)[unknown]main_arena (4 samples, 0.71%)bachelorarbeit::calc::delta_with_lut (4 samples, 0.71%)bachelorarbeit::calc::Cache::from_file (1 samples, 0.18%)core::iter::traits::iterator::Iterator::collect (1 samples, 0.18%)<std::collections::hash::map::HashMap<K,V,S> as core::iter::traits::collect::FromIterator<(K,V)>>::from_iter (1 samples, 0.18%)<std::collections::hash::map::HashMap<K,V,S> as core::iter::traits::collect::Extend<(K,V)>>::extend (1 samples, 0.18%)<hashbrown::map::HashMap<K,V,S,A> as core::iter::traits::collect::Extend<(K,V)>>::extend (1 samples, 0.18%)core::iter::traits::iterator::Iterator::for_each (1 samples, 0.18%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (1 samples, 0.18%)core::iter::traits::iterator::Iterator::fold (1 samples, 0.18%)core::iter::adapters::map::map_fold::_{{closure}} (1 samples, 0.18%)bachelorarbeit::calc::Cache::from_file::_{{closure}} (1 samples, 0.18%)<alloc::rc::Rc<[T],A> as core::convert::From<alloc::vec::Vec<T,A>>>::from (1 samples, 0.18%)core::intrinsics::copy_nonoverlapping (1 samples, 0.18%)__memcpy_avx_unaligned_erms (1 samples, 0.18%)[unknown] (1 samples, 0.18%)<f64 as core::ops::arith::Add>::add (5 samples, 0.89%)<f64 as core::ops::arith::Div>::div (20 samples, 3.55%)<f64..<f64 as core::ops::arith::Mul>::mul (7 samples, 1.24%)<num_complex::Complex<T> as core::ops::arith::Div>::div (35 samples, 6.21%)<num_com..num_complex::Complex<T>::norm_sqr (3 samples, 0.53%)<f64 as core::ops::arith::Mul>::mul (3 samples, 0.53%)bachelorarbeit::calc::delta_with_lut (1 samples, 0.18%)hashbrown::raw::bitmask::BitMask::lowest_set_bit (1 samples, 0.18%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (2 samples, 0.35%)hashbrown::raw::bitmask::BitMask::remove_lowest_bit (1 samples, 0.18%)hashbrown::raw::RawTable<T,A>::find::_{{closure}} (1 samples, 0.18%)hashbrown::raw::Bucket<T>::as_ref (1 samples, 0.18%)hashbrown::raw::Bucket<T>::as_ptr (1 samples, 0.18%)core::ptr::mut_ptr::<impl *mut T>::sub (1 samples, 0.18%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.18%)bachelorarbeit::calc::delta_with_lut (9 samples, 1.60%)std::collections::hash::map::HashMap<K,V,S>::get (9 samples, 1.60%)hashbrown::map::HashMap<K,V,S,A>::get (9 samples, 1.60%)hashbrown::map::HashMap<K,V,S,A>::get_inner (9 samples, 1.60%)hashbrown::raw::RawTable<T,A>::get (8 samples, 1.42%)hashbrown::raw::RawTable<T,A>::find (7 samples, 1.24%)hashbrown::raw::RawTableInner::find_inner (7 samples, 1.24%)hashbrown::raw::h2 (1 samples, 0.18%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (1 samples, 0.18%)num_complex::Complex<T>::norm_sqr (1 samples, 0.18%)<f64 as core::ops::arith::Mul>::mul (1 samples, 0.18%)std::f64::<impl f64>::cos (6 samples, 1.06%)__cos_fma (6 samples, 1.06%)do_sin (1 samples, 0.18%)std::f64::<impl f64>::powi (1 samples, 0.18%)bachelorarbeit::calc::omnes::_{{closure}} (20 samples, 3.55%)bach..bachelorarbeit::calc::omnes_integrand (20 samples, 3.55%)bach..std::f64::<impl f64>::tan (3 samples, 0.53%)__tan_fma (3 samples, 0.53%)bachelorarbeit::calc::integrate_complex (22 samples, 3.90%)bach..num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (1 samples, 0.18%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (2 samples, 0.35%)bachelorarbeit::calc::omnes (6 samples, 1.06%)hashbrown::raw::bitmask::BitMask::lowest_set_bit (5 samples, 0.89%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (14 samples, 2.48%)<h..hashbrown::raw::bitmask::BitMask::remove_lowest_bit (9 samples, 1.60%)core::cmp::impls::<impl core::cmp::PartialEq for u32>::eq (3 samples, 0.53%)hashbrown::map::equivalent_key::_{{closure}} (20 samples, 3.55%)hash..<Q as hashbrown::Equivalent<K>>::equivalent (20 samples, 3.55%)<Q a..core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (20 samples, 3.55%)core..core::cmp::impls::<impl core::cmp::PartialEq for u64>::eq (17 samples, 3.01%)cor..bachelorarbeit::calc::omnes (1 samples, 0.18%)hashbrown::raw::Bucket<T>::as_ref (4 samples, 0.71%)hashbrown::raw::Bucket<T>::as_ptr (4 samples, 0.71%)core::ptr::mut_ptr::<impl *mut T>::sub (4 samples, 0.71%)core::ptr::mut_ptr::<impl *mut T>::offset (3 samples, 0.53%)hashbrown::raw::RawTable<T,A>::find::_{{closure}} (25 samples, 4.43%)hashb..hashbrown::raw::RawTable<T,A>::bucket (1 samples, 0.18%)hashbrown::raw::Bucket<T>::from_base_index (1 samples, 0.18%)core::ptr::mut_ptr::<impl *mut T>::sub (1 samples, 0.18%)hashbrown::raw::h2 (5 samples, 0.89%)hashbrown::raw::sse2::Group::load (2 samples, 0.35%)core::core_arch::x86::sse2::_mm_loadu_si128 (2 samples, 0.35%)core::intrinsics::copy_nonoverlapping (2 samples, 0.35%)bachelorarbeit::calc::omnes (101 samples, 17.91%)bachelorarbeit::calc::omnesstd::collections::hash::map::HashMap<K,V,S>::get (71 samples, 12.59%)std::collections::h..hashbrown::map::HashMap<K,V,S,A>::get (71 samples, 12.59%)hashbrown::map::Has..hashbrown::map::HashMap<K,V,S,A>::get_inner (65 samples, 11.52%)hashbrown::map::H..hashbrown::raw::RawTable<T,A>::get (61 samples, 10.82%)hashbrown::raw::..hashbrown::raw::RawTable<T,A>::find (61 samples, 10.82%)hashbrown::raw::..hashbrown::raw::RawTableInner::find_inner (61 samples, 10.82%)hashbrown::raw::..hashbrown::raw::sse2::Group::match_byte (3 samples, 0.53%)core::core_arch::x86::sse2::_mm_movemask_epi8 (3 samples, 0.53%)<f64 as core::ops::arith::Add>::add (4 samples, 0.71%)num_complex::Complex<T>::norm_sqr (10 samples, 1.77%)n..<f64 as core::ops::arith::Mul>::mul (6 samples, 1.06%)do_cos (6 samples, 1.06%)do_sin (2 samples, 0.35%)libc_feholdsetround_sse_ctx (1 samples, 0.18%)std::f64::<impl f64>::cos (19 samples, 3.37%)std..__cos_fma (19 samples, 3.37%)__c..libc_feresetround_sse_ctx (2 samples, 0.35%)__ieee754_log_fma (64 samples, 11.35%)__ieee754_log_fma__log (5 samples, 0.89%)std::f64::<impl f64>::ln (70 samples, 12.41%)std::f64::<impl f64..std::sys::log_wrapper (70 samples, 12.41%)std::sys::log_wrapp..std::f64::_<impl f64>::ln::_{{closure}} (70 samples, 12.41%)std::f64::_<impl f6..__log_finite@GLIBC_2.15@plt (1 samples, 0.18%)std::f64::<impl f64>::powi (3 samples, 0.53%)bachelorarbeit::calc::integrate (314 samples, 55.67%)bachelorarbeit::calc::integratebachelorarbeit::calc::phi0::_{{closure}} (304 samples, 53.90%)bachelorarbeit::calc::phi0::_{{closure}}bachelorarbeit::calc::phi0_integrand (304 samples, 53.90%)bachelorarbeit::calc::phi0_integrandstd::f64::<impl f64>::tan (29 samples, 5.14%)std::f..__tan_fma (29 samples, 5.14%)__tan_..libc_feholdsetround_sse_ctx (3 samples, 0.53%)bachelorarbeit::calc::delta_with_lut (2 samples, 0.35%)bachelorarbeit::calc::delta_with_lut (1 samples, 0.18%)hashbrown::raw::bitmask::BitMask::lowest_set_bit (1 samples, 0.18%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (6 samples, 1.06%)hashbrown::raw::bitmask::BitMask::remove_lowest_bit (5 samples, 0.89%)hashbrown::map::equivalent_key::_{{closure}} (22 samples, 3.90%)hash..<Q as hashbrown::Equivalent<K>>::equivalent (22 samples, 3.90%)<Q a..core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (22 samples, 3.90%)core..core::cmp::impls::<impl core::cmp::PartialEq for u64>::eq (22 samples, 3.90%)core..bachelorarbeit::calc::delta_with_lut (4 samples, 0.71%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)hashbrown::raw::RawTable<T,A>::find::_{{closure}} (33 samples, 5.85%)hashbro..hashbrown::raw::Bucket<T>::as_ref (11 samples, 1.95%)h..hashbrown::raw::Bucket<T>::as_ptr (11 samples, 1.95%)h..core::ptr::mut_ptr::<impl *mut T>::sub (11 samples, 1.95%)c..core::ptr::mut_ptr::<impl *mut T>::offset (7 samples, 1.24%)hashbrown::raw::h2 (7 samples, 1.24%)hashbrown::raw::sse2::Group::load (10 samples, 1.77%)h..core::core_arch::x86::sse2::_mm_loadu_si128 (10 samples, 1.77%)c..core::intrinsics::copy_nonoverlapping (10 samples, 1.77%)c..bachelorarbeit::calc::delta_with_lut (83 samples, 14.72%)bachelorarbeit::calc::..std::collections::hash::map::HashMap<K,V,S>::get (79 samples, 14.01%)std::collections::has..hashbrown::map::HashMap<K,V,S,A>::get (79 samples, 14.01%)hashbrown::map::HashM..hashbrown::map::HashMap<K,V,S,A>::get_inner (79 samples, 14.01%)hashbrown::map::HashM..hashbrown::raw::RawTable<T,A>::get (77 samples, 13.65%)hashbrown::raw::RawTa..hashbrown::raw::RawTable<T,A>::find (75 samples, 13.30%)hashbrown::raw::RawT..hashbrown::raw::RawTableInner::find_inner (74 samples, 13.12%)hashbrown::raw::RawT..hashbrown::raw::sse2::Group::match_byte (7 samples, 1.24%)core::core_arch::x86::sse2::_mm_movemask_epi8 (7 samples, 1.24%)bachelorarbeit::calc::omnes (1 samples, 0.18%)num_complex::<impl core::ops::arith::Add<num_complex::Complex<f64>> for f64>::add (1 samples, 0.18%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (9 samples, 1.60%)num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (1 samples, 0.18%)do_cos (9 samples, 1.60%)do_sin (4 samples, 0.71%)libc_feholdsetround_sse_ctx (2 samples, 0.35%)std::f64::<impl f64>::cos (27 samples, 4.79%)std::f..__cos_fma (27 samples, 4.79%)__cos_..libc_feresetround_sse_ctx (3 samples, 0.53%)bachelorarbeit::calc::omnes::_{{closure}} (185 samples, 32.80%)bachelorarbeit::calc::omnes::_{{closure}}bachelorarbeit::calc::omnes_integrand (185 samples, 32.80%)bachelorarbeit::calc::omnes_integrandstd::f64::<impl f64>::tan (59 samples, 10.46%)std::f64::<impl..__tan_fma (59 samples, 10.46%)__tan_fmalibc_feholdsetround_sse_ctx (7 samples, 1.24%)num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (2 samples, 0.35%)bachelorarbeit::calc::integrate_complex (196 samples, 34.75%)bachelorarbeit::calc::integrate_complexnum_complex::opassign::<impl core::ops::arith::AddAssign for num_complex::Complex<T>>::add_assign (8 samples, 1.42%)<f64 as core::ops::arith::AddAssign>::add_assign (8 samples, 1.42%)bachelorarbeit::calc::omnes (1 samples, 0.18%)bachelorarbeit::calc::omnes (198 samples, 35.11%)bachelorarbeit::calc::omnesstd::collections::hash::map::HashMap<K,V,S>::insert (1 samples, 0.18%)hashbrown::map::HashMap<K,V,S,A>::insert (1 samples, 0.18%)hashbrown::raw::RawTable<T,A>::find_or_find_insert_slot (1 samples, 0.18%)hashbrown::raw::RawTableInner::find_or_find_insert_slot_inner (1 samples, 0.18%)hashbrown::raw::RawTableInner::fix_insert_slot (1 samples, 0.18%)hashbrown::raw::RawTableInner::is_bucket_full (1 samples, 0.18%)core::iter::traits::iterator::Iterator::collect (515 samples, 91.31%)core::iter::traits::iterator::Iterator::collect<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (515 samples, 91.31%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (515 samples, 91.31%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (515 samples, 91.31%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (515 samples, 91.31%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extendalloc::vec::Vec<T,A>::extend_trusted (515 samples, 91.31%)alloc::vec::Vec<T,A>::extend_trustedcore::iter::traits::iterator::Iterator::for_each (515 samples, 91.31%)core::iter::traits::iterator::Iterator::for_each<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (515 samples, 91.31%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (515 samples, 91.31%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::foldcore::iter::adapters::map::map_fold::_{{closure}} (515 samples, 91.31%)core::iter::adapters::map::map_fold::_{{closure}}bachelorarbeit::main::_{{closure}} (515 samples, 91.31%)bachelorarbeit::main::_{{closure}}bachelorarbeit::calc::phi0 (515 samples, 91.31%)bachelorarbeit::calc::phi0bachelorarbeit::calc::phi0 (3 samples, 0.53%)__libc_start_main_impl (517 samples, 91.67%)__libc_start_main_impl__libc_start_call_main (517 samples, 91.67%)__libc_start_call_mainstd::rt::lang_start (517 samples, 91.67%)std::rt::lang_startstd::rt::lang_start_internal (517 samples, 91.67%)std::rt::lang_start_internalstd::rt::lang_start::_{{closure}} (517 samples, 91.67%)std::rt::lang_start::_{{closure}}std::sys_common::backtrace::__rust_begin_short_backtrace (517 samples, 91.67%)std::sys_common::backtrace::__rust_begin_short_backtracecore::ops::function::FnOnce::call_once (517 samples, 91.67%)core::ops::function::FnOnce::call_oncebachelorarbeit::main (517 samples, 91.67%)bachelorarbeit::maincore::ptr::drop_in_place<bachelorarbeit::App> (1 samples, 0.18%)core::ptr::drop_in_place<bachelorarbeit::calc::Cache> (1 samples, 0.18%)core::ptr::drop_in_place<std::collections::hash::map::HashMap<u32,(alloc::rc::Rc<[f64]>,alloc::rc::Rc<[f64]>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u32>>>> (1 samples, 0.18%)core::ptr::drop_in_place<hashbrown::map::HashMap<u32,(alloc::rc::Rc<[f64]>,alloc::rc::Rc<[f64]>),core::hash::BuildHasherDefault<nohash_hasher::NoHashHasher<u32>>>> (1 samples, 0.18%)core::ptr::drop_in_place<hashbrown::raw::RawTable<(u32,(alloc::rc::Rc<[f64]>,alloc::rc::Rc<[f64]>))>> (1 samples, 0.18%)<hashbrown::raw::RawTable<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.18%)hashbrown::raw::RawTableInner::drop_inner_table (1 samples, 0.18%)hashbrown::raw::RawTableInner::drop_elements (1 samples, 0.18%)hashbrown::raw::Bucket<T>::drop (1 samples, 0.18%)core::ptr::mut_ptr::<impl *mut T>::drop_in_place (1 samples, 0.18%)core::ptr::drop_in_place<(u32,(alloc::rc::Rc<[f64]>,alloc::rc::Rc<[f64]>))> (1 samples, 0.18%)core::ptr::drop_in_place<(alloc::rc::Rc<[f64]>,alloc::rc::Rc<[f64]>)> (1 samples, 0.18%)core::ptr::drop_in_place<alloc::rc::Rc<[f64]>> (1 samples, 0.18%)<alloc::rc::Rc<T,A> as core::ops::drop::Drop>::drop (1 samples, 0.18%)<alloc::alloc::Global as core::alloc::Allocator>::deallocate (1 samples, 0.18%)alloc::alloc::dealloc (1 samples, 0.18%)__GI___libc_free (1 samples, 0.18%)__GI___munmap (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)[unknown] (1 samples, 0.18%)_start (518 samples, 91.84%)_start_dl_start (1 samples, 0.18%)_dl_start_final (1 samples, 0.18%)_dl_sysdep_start (1 samples, 0.18%)dl_main (1 samples, 0.18%)_dl_map_object_deps (1 samples, 0.18%)_dl_catch_exception (1 samples, 0.18%)openaux (1 samples, 0.18%)_dl_map_object (1 samples, 0.18%)_dl_load_cache_lookup (1 samples, 0.18%)search_cache (1 samples, 0.18%)__cos_fma (1 samples, 0.18%)bachelorarbeit (559 samples, 99.11%)bachelorarbeitmain_arena (3 samples, 0.53%)__tan_fma (2 samples, 0.35%)all (564 samples, 100%)perf-exec (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%)[unknown] (5 samples, 0.89%) \ No newline at end of file diff --git a/bachelorarbeit/flamegraph_btreemap.svg b/bachelorarbeit/flamegraph_btreemap.svg new file mode 100644 index 0000000..da6619e --- /dev/null +++ b/bachelorarbeit/flamegraph_btreemap.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch __cos_fma (1 samples, 0.26%)[[heap]] (2 samples, 0.52%)bachelorarbeit::calc::omnes (1 samples, 0.26%)bachelorarbeit::calc::integrate_complex (1 samples, 0.26%)bachelorarbeit::calc::omnes::_{{closure}} (1 samples, 0.26%)bachelorarbeit::calc::omnes_integrand (1 samples, 0.26%)std::f64::<impl f64>::cos (1 samples, 0.26%)[[stack]] (1 samples, 0.26%)bachelorarbeit::calc::delta_with_lut (1 samples, 0.26%)<std::io::buffered::bufreader::BufReader<R> as std::io::Read>::read (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)__cos_fma (2 samples, 0.52%)bachelorarbeit::calc::delta_with_lut (4 samples, 1.04%)[unknown] (14 samples, 3.64%)[unk..bachelorarbeit::calc::omnes (6 samples, 1.56%)bachelorarbeit::calc::integrate_complex (3 samples, 0.78%)bachelorarbeit::calc::omnes::_{{closure}} (3 samples, 0.78%)bachelorarbeit::calc::omnes_integrand (3 samples, 0.78%)std::f64::<impl f64>::cos (1 samples, 0.26%)bachelorarbeit::calc::integrate (1 samples, 0.26%)bachelorarbeit::calc::phi0::_{{closure}} (1 samples, 0.26%)bachelorarbeit::calc::phi0_integrand (1 samples, 0.26%)bachelorarbeit::calc::omnes (1 samples, 0.26%)bachelorarbeit::calc::integrate_complex (1 samples, 0.26%)bachelorarbeit::calc::omnes::_{{closure}} (1 samples, 0.26%)bachelorarbeit::calc::omnes_integrand (1 samples, 0.26%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (1 samples, 0.26%)bachelorarbeit::calc::phi0 (2 samples, 0.52%)bachelorarbeit::calc::omnes (1 samples, 0.26%)bachelorarbeit::calc::integrate_complex (1 samples, 0.26%)bachelorarbeit::calc::omnes::_{{closure}} (1 samples, 0.26%)bachelorarbeit::calc::omnes_integrand (1 samples, 0.26%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (1 samples, 0.26%)bachelorarbeit::calc::phi0 (1 samples, 0.26%)<f64 as core::ops::arith::Div>::div (4 samples, 1.04%)<f64 as core::ops::arith::Mul>::mul (1 samples, 0.26%)<num_complex::Complex<T> as core::ops::arith::Div>::div (6 samples, 1.56%)num_complex::Complex<T>::norm_sqr (1 samples, 0.26%)<f64 as core::ops::arith::Mul>::mul (1 samples, 0.26%)<num_complex::Complex<T> as num_complex::complex_float::ComplexFloat>::abs (24 samples, 6.23%)<num_com..num_complex::Complex<T>::norm (24 samples, 6.23%)num_comp..<f64 as num_traits::float::Float>::hypot (24 samples, 6.23%)<f64 as ..std::f64::<impl f64>::hypot (24 samples, 6.23%)std::f64..__hypot (24 samples, 6.23%)__hypotkernel (22 samples, 5.71%)kernel[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>::reborrow (1 samples, 0.26%)bachelorarbeit::calc::omnes (1 samples, 0.26%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::descend (2 samples, 0.52%)core::mem::maybe_uninit::MaybeUninit<T>::assume_init_read (2 samples, 0.52%)core::ptr::const_ptr::<impl *const T>::read (2 samples, 0.52%)core::ptr::read (1 samples, 0.26%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,Type>::force (1 samples, 0.26%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>::force (1 samples, 0.26%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (7 samples, 1.82%)<..<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (7 samples, 1.82%)<..<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (7 samples, 1.82%)<..alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,Type>::keys (3 samples, 0.78%)core::cmp::impls::<impl core::cmp::Ord for u32>::cmp (3 samples, 0.78%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)alloc::collections::btree::map::BTreeMap<K,V,A>::get (56 samples, 14.55%)alloc::collections::bt..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (55 samples, 14.29%)alloc::collections::bt..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (52 samples, 13.51%)alloc::collections::..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (52 samples, 13.51%)alloc::collections::..core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (22 samples, 5.71%)core::c..<num_complex::Complex<T> as core::ops::arith::Mul<T>>::mul (1 samples, 0.26%)<f64 as core::ops::arith::Mul>::mul (1 samples, 0.26%)bachelorarbeit::calc::delta_with_lut (2 samples, 0.52%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::descend (4 samples, 1.04%)core::mem::maybe_uninit::MaybeUninit<T>::assume_init_read (4 samples, 1.04%)core::ptr::const_ptr::<impl *const T>::read (4 samples, 1.04%)core::ptr::read (2 samples, 0.52%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,Type>::force (5 samples, 1.30%)bachelorarbeit::calc::delta_with_lut (5 samples, 1.30%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (9 samples, 2.34%)<..<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (9 samples, 2.34%)<..<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (8 samples, 2.08%)<..alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,Type>::keys (1 samples, 0.26%)alloc::collections::btree::map::BTreeMap<K,V,A>::get (58 samples, 15.06%)alloc::collections::btr..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (58 samples, 15.06%)alloc::collections::btr..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (49 samples, 12.73%)alloc::collections:..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (49 samples, 12.73%)alloc::collections:..core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (27 samples, 7.01%)core::cmp..bachelorarbeit::calc::delta_with_lut (61 samples, 15.84%)bachelorarbeit::calc::de..core::f64::<impl f64>::to_bits (1 samples, 0.26%)core::f64::<impl f64>::to_bits::rt_f64_to_u64 (1 samples, 0.26%)num_complex::<impl core::ops::arith::Add<num_complex::Complex<f64>> for f64>::add (1 samples, 0.26%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (7 samples, 1.82%)n..num_complex::Complex<T>::norm_sqr (1 samples, 0.26%)<f64 as core::ops::arith::Add>::add (1 samples, 0.26%)do_cos (4 samples, 1.04%)do_sin (5 samples, 1.30%)std::f64::<impl f64>::cos (13 samples, 3.38%)std..__cos_fma (13 samples, 3.38%)__c..libc_feholdsetround_sse_ctx (2 samples, 0.52%)std::f64::<impl f64>::powi (1 samples, 0.26%)bachelorarbeit::calc::omnes::_{{closure}} (102 samples, 26.49%)bachelorarbeit::calc::omnes::_{{closure}}bachelorarbeit::calc::omnes_integrand (102 samples, 26.49%)bachelorarbeit::calc::omnes_integrandstd::f64::<impl f64>::tan (14 samples, 3.64%)std:..__tan_fma (14 samples, 3.64%)__ta..num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (1 samples, 0.26%)bachelorarbeit::calc::integrate_complex (106 samples, 27.53%)bachelorarbeit::calc::integrate_complexnum_complex::opassign::<impl core::ops::arith::AddAssign for num_complex::Complex<T>>::add_assign (1 samples, 0.26%)<f64 as core::ops::arith::AddAssign>::add_assign (1 samples, 0.26%)bachelorarbeit::calc::omnes (170 samples, 44.16%)bachelorarbeit::calc::omnesbachelorarbeit::calc::omnes (2 samples, 0.52%)do_cos (1 samples, 0.26%)do_sin (2 samples, 0.52%)std::f64::<impl f64>::cos (8 samples, 2.08%)s..__cos_fma (8 samples, 2.08%)_..libc_feresetround_sse_ctx (1 samples, 0.26%)__ieee754_log_fma (20 samples, 5.19%)__ieee..[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)[unknown] (6 samples, 1.56%)__log (2 samples, 0.52%)std::f64::<impl f64>::ln (23 samples, 5.97%)std::f64..std::sys::log_wrapper (23 samples, 5.97%)std::sys..std::f64::_<impl f64>::ln::_{{closure}} (23 samples, 5.97%)std::f64..__log_finite@GLIBC_2.15@plt (1 samples, 0.26%)std::f64::<impl f64>::powi (1 samples, 0.26%)bachelorarbeit::calc::integrate (259 samples, 67.27%)bachelorarbeit::calc::integratebachelorarbeit::calc::phi0::_{{closure}} (254 samples, 65.97%)bachelorarbeit::calc::phi0::_{{closure}}bachelorarbeit::calc::phi0_integrand (253 samples, 65.71%)bachelorarbeit::calc::phi0_integrandstd::f64::<impl f64>::tan (10 samples, 2.60%)st..__tan_fma (10 samples, 2.60%)__..libc_feholdsetround_sse_ctx (1 samples, 0.26%)<num_complex::Complex<T> as core::ops::arith::Mul<T>>::mul (1 samples, 0.26%)<f64 as core::ops::arith::Mul>::mul (1 samples, 0.26%)alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>::reborrow (1 samples, 0.26%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::Internal>,alloc::collections::btree::node::marker::Edge>::descend (3 samples, 0.78%)core::mem::maybe_uninit::MaybeUninit<T>::assume_init_read (3 samples, 0.78%)core::ptr::const_ptr::<impl *const T>::read (3 samples, 0.78%)core::ptr::read (3 samples, 0.78%)alloc::collections::btree::node::Handle<alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>,Type>::force (3 samples, 0.78%)bachelorarbeit::calc::delta_with_lut (3 samples, 0.78%)<core::iter::adapters::enumerate::Enumerate<I> as core::iter::traits::iterator::Iterator>::next (7 samples, 1.82%)<..<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::next (7 samples, 1.82%)<..<core::ptr::non_null::NonNull<T> as core::cmp::PartialEq>::eq (7 samples, 1.82%)<..[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)alloc::collections::btree::node::NodeRef<alloc::collections::btree::node::marker::Immut,K,V,Type>::keys (1 samples, 0.26%)bachelorarbeit::calc::delta_with_lut (54 samples, 14.03%)bachelorarbeit::calc:..alloc::collections::btree::map::BTreeMap<K,V,A>::get (53 samples, 13.77%)alloc::collections::b..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,alloc::collections::btree::node::marker::LeafOrInternal>>::search_tree (52 samples, 13.51%)alloc::collections::..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::search_node (46 samples, 11.95%)alloc::collections..alloc::collections::btree::search::<impl alloc::collections::btree::node::NodeRef<BorrowType,K,V,Type>>::find_key_index (46 samples, 11.95%)alloc::collections..core::cmp::impls::<impl core::cmp::Ord for u64>::cmp (20 samples, 5.19%)core::..num_complex::<impl core::ops::arith::Add<num_complex::Complex<f64>> for f64>::add (3 samples, 0.78%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (11 samples, 2.86%)nu..num_complex::Complex<T>::norm_sqr (2 samples, 0.52%)<f64 as core::ops::arith::Mul>::mul (2 samples, 0.52%)do_cos (4 samples, 1.04%)do_sin (6 samples, 1.56%)std::f64::<impl f64>::cos (16 samples, 4.16%)std::..__cos_fma (16 samples, 4.16%)__cos..libc_feholdsetround_sse_ctx (1 samples, 0.26%)std::f64::<impl f64>::powi (2 samples, 0.52%)bachelorarbeit::calc::omnes::_{{closure}} (96 samples, 24.94%)bachelorarbeit::calc::omnes::_{{closure}}bachelorarbeit::calc::omnes_integrand (96 samples, 24.94%)bachelorarbeit::calc::omnes_integrandstd::f64::<impl f64>::tan (6 samples, 1.56%)__tan_fma (6 samples, 1.56%)num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (1 samples, 0.26%)bachelorarbeit::calc::integrate_complex (99 samples, 25.71%)bachelorarbeit::calc::integrate_complexnum_complex::opassign::<impl core::ops::arith::AddAssign for num_complex::Complex<T>>::add_assign (2 samples, 0.52%)<f64 as core::ops::arith::AddAssign>::add_assign (2 samples, 0.52%)bachelorarbeit::calc::omnes (1 samples, 0.26%)__libc_start_main_impl (362 samples, 94.03%)__libc_start_main_impl__libc_start_call_main (362 samples, 94.03%)__libc_start_call_mainstd::rt::lang_start (362 samples, 94.03%)std::rt::lang_startstd::rt::lang_start_internal (362 samples, 94.03%)std::rt::lang_start_internalstd::rt::lang_start::_{{closure}} (362 samples, 94.03%)std::rt::lang_start::_{{closure}}std::sys_common::backtrace::__rust_begin_short_backtrace (362 samples, 94.03%)std::sys_common::backtrace::__rust_begin_short_backtracecore::ops::function::FnOnce::call_once (362 samples, 94.03%)core::ops::function::FnOnce::call_oncebachelorarbeit::main (362 samples, 94.03%)bachelorarbeit::maincore::iter::traits::iterator::Iterator::collect (360 samples, 93.51%)core::iter::traits::iterator::Iterator::collect<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (360 samples, 93.51%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (360 samples, 93.51%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (360 samples, 93.51%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (360 samples, 93.51%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extendalloc::vec::Vec<T,A>::extend_trusted (360 samples, 93.51%)alloc::vec::Vec<T,A>::extend_trustedcore::iter::traits::iterator::Iterator::for_each (360 samples, 93.51%)core::iter::traits::iterator::Iterator::for_each<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (360 samples, 93.51%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (360 samples, 93.51%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::foldcore::iter::adapters::map::map_fold::_{{closure}} (360 samples, 93.51%)core::iter::adapters::map::map_fold::_{{closure}}bachelorarbeit::main::_{{closure}} (360 samples, 93.51%)bachelorarbeit::main::_{{closure}}bachelorarbeit::calc::phi0 (360 samples, 93.51%)bachelorarbeit::calc::phi0bachelorarbeit::calc::omnes (101 samples, 26.23%)bachelorarbeit::calc::omnesnum_complex::Complex<T>::exp (1 samples, 0.26%)<f64 as num_traits::float::Float>::exp (1 samples, 0.26%)std::f64::<impl f64>::exp (1 samples, 0.26%)__GI___exp (1 samples, 0.26%)__ieee754_exp_fma (1 samples, 0.26%)bachelorarbeit (380 samples, 98.70%)bachelorarbeit_start (363 samples, 94.29%)_start_dl_start (1 samples, 0.26%)_dl_start_final (1 samples, 0.26%)_dl_sysdep_start (1 samples, 0.26%)dl_main (1 samples, 0.26%)_dl_map_object_deps (1 samples, 0.26%)_dl_catch_exception (1 samples, 0.26%)openaux (1 samples, 0.26%)_dl_map_object (1 samples, 0.26%)_dl_map_object_from_fd (1 samples, 0.26%)_dl_map_segments (1 samples, 0.26%)__mmap64 (1 samples, 0.26%)__mmap64 (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)[unknown] (1 samples, 0.26%)all (385 samples, 100%)perf-exec (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%)[unknown] (5 samples, 1.30%) \ No newline at end of file diff --git a/bachelorarbeit/flamegraph_hasmap.svg b/bachelorarbeit/flamegraph_hasmap.svg new file mode 100644 index 0000000..976a83b --- /dev/null +++ b/bachelorarbeit/flamegraph_hasmap.svg @@ -0,0 +1,491 @@ +Flame Graph Reset ZoomSearch <std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (1 samples, 0.09%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (1 samples, 0.09%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (1 samples, 0.09%)[[heap]] (1 samples, 0.09%)__cos_fma (1 samples, 0.09%)__cos_fma (1 samples, 0.09%)[[stack]] (5 samples, 0.47%)bachelorarbeit::calc::delta_with_lut (4 samples, 0.38%)std::collections::hash::map::HashMap<K,V,S>::get (3 samples, 0.28%)hashbrown::map::HashMap<K,V,S,A>::get (3 samples, 0.28%)hashbrown::map::HashMap<K,V,S,A>::get_inner (3 samples, 0.28%)hashbrown::map::make_hash (3 samples, 0.28%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (12 samples, 1.13%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)__cos_fma (1 samples, 0.09%)__tan_fma (2 samples, 0.19%)bachelorarbeit::calc::delta_with_lut (5 samples, 0.47%)bachelorarbeit::calc::integrate_complex (3 samples, 0.28%)bachelorarbeit::calc::omnes::_{{closure}} (3 samples, 0.28%)bachelorarbeit::calc::omnes_integrand (3 samples, 0.28%)std::f64::<impl f64>::cos (2 samples, 0.19%)bachelorarbeit::calc::omnes (21 samples, 1.98%)b..std::collections::hash::map::HashMap<K,V,S>::get (3 samples, 0.28%)hashbrown::map::HashMap<K,V,S,A>::get (3 samples, 0.28%)hashbrown::map::HashMap<K,V,S,A>::get_inner (3 samples, 0.28%)hashbrown::map::make_hash (3 samples, 0.28%)<num_complex::Complex<T> as num_complex::complex_float::ComplexFloat>::abs (3 samples, 0.28%)num_complex::Complex<T>::norm (3 samples, 0.28%)<f64 as num_traits::float::Float>::hypot (3 samples, 0.28%)std::f64::<impl f64>::hypot (3 samples, 0.28%)bachelorarbeit::calc::phi0 (7 samples, 0.66%)bachelorarbeit::calc::integrate (7 samples, 0.66%)bachelorarbeit::calc::phi0::_{{closure}} (7 samples, 0.66%)bachelorarbeit::calc::phi0_integrand (7 samples, 0.66%)std::f64::<impl f64>::tan (1 samples, 0.09%)core::hash::impls::<impl core::hash::Hash for u32>::hash (2 samples, 0.19%)core::hash::Hasher::write_u32 (2 samples, 0.19%)[unknown] (66 samples, 6.21%)[unknown]core::hash::BuildHasher::hash_one (17 samples, 1.60%)core::hash::impls::<impl core::hash::Hash for &T>::hash (7 samples, 0.66%)core::hash::impls::<impl core::hash::Hash for u64>::hash (5 samples, 0.47%)core::hash::Hasher::write_u64 (5 samples, 0.47%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (1 samples, 0.09%)<alloc::rc::Rc<T,A> as core::clone::Clone>::clone (1 samples, 0.09%)bachelorarbeit::calc::phi0 (4 samples, 0.38%)<f64 as core::ops::arith::Add>::add (4 samples, 0.38%)<f64 as core::ops::arith::Div>::div (20 samples, 1.88%)<..<num_complex::Complex<T> as core::ops::arith::Div>::div (27 samples, 2.54%)<n..<f64 as core::ops::arith::Mul>::mul (3 samples, 0.28%)<num_complex::Complex<T> as num_complex::complex_float::ComplexFloat>::abs (93 samples, 8.76%)<num_complex..num_complex::Complex<T>::norm (93 samples, 8.76%)num_complex:..<f64 as num_traits::float::Float>::hypot (93 samples, 8.76%)<f64 as num_..std::f64::<impl f64>::hypot (93 samples, 8.76%)std::f64::<i..__hypot (93 samples, 8.76%)__hypotkernel (79 samples, 7.44%)kernel<num_complex::Complex<T> as core::ops::arith::Mul<T>>::mul (1 samples, 0.09%)<f64 as core::ops::arith::Mul>::mul (1 samples, 0.09%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (1 samples, 0.09%)core::num::<impl u64>::rotate_left (1 samples, 0.09%)core::num::<impl u64>::rotate_left (2 samples, 0.19%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (7 samples, 0.66%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (7 samples, 0.66%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (7 samples, 0.66%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::d_rounds (4 samples, 0.38%)core::num::<impl u64>::wrapping_add (1 samples, 0.09%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (3 samples, 0.28%)core::num::<impl u64>::rotate_left (1 samples, 0.09%)_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (2 samples, 0.19%)hashbrown::map::make_hash (14 samples, 1.32%)core::hash::BuildHasher::hash_one (14 samples, 1.32%)core::hash::impls::<impl core::hash::Hash for &T>::hash (7 samples, 0.66%)core::hash::impls::<impl core::hash::Hash for u64>::hash (7 samples, 0.66%)core::hash::Hasher::write_u64 (7 samples, 0.66%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (7 samples, 0.66%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (7 samples, 0.66%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (7 samples, 0.66%)core::hash::sip::u8to64_le (1 samples, 0.09%)hashbrown::map::equivalent_key::_{{closure}} (5 samples, 0.47%)<Q as hashbrown::Equivalent<K>>::equivalent (5 samples, 0.47%)core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (5 samples, 0.47%)core::cmp::impls::<impl core::cmp::PartialEq for u64>::eq (5 samples, 0.47%)bachelorarbeit::calc::delta_with_lut (21 samples, 1.98%)b..std::collections::hash::map::HashMap<K,V,S>::get (20 samples, 1.88%)s..hashbrown::map::HashMap<K,V,S,A>::get (20 samples, 1.88%)h..hashbrown::map::HashMap<K,V,S,A>::get_inner (20 samples, 1.88%)h..hashbrown::raw::RawTable<T,A>::get (6 samples, 0.56%)hashbrown::raw::RawTable<T,A>::find (6 samples, 0.56%)hashbrown::raw::RawTableInner::find_inner (6 samples, 0.56%)hashbrown::raw::RawTable<T,A>::find::_{{closure}} (6 samples, 0.56%)hashbrown::raw::Bucket<T>::as_ref (1 samples, 0.09%)hashbrown::raw::Bucket<T>::as_ptr (1 samples, 0.09%)core::ptr::mut_ptr::<impl *mut T>::sub (1 samples, 0.09%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.09%)<f64 as core::ops::arith::Add>::add (1 samples, 0.09%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (6 samples, 0.56%)num_complex::Complex<T>::norm_sqr (3 samples, 0.28%)<f64 as core::ops::arith::Mul>::mul (2 samples, 0.19%)do_cos (3 samples, 0.28%)std::f64::<impl f64>::cos (6 samples, 0.56%)__cos_fma (6 samples, 0.56%)do_sin (2 samples, 0.19%)bachelorarbeit::calc::omnes::_{{closure}} (40 samples, 3.77%)bach..bachelorarbeit::calc::omnes_integrand (40 samples, 3.77%)bach..std::f64::<impl f64>::tan (5 samples, 0.47%)__tan_fma (5 samples, 0.47%)bachelorarbeit::calc::integrate_complex (42 samples, 3.95%)bach..num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (2 samples, 0.19%)core::f64::<impl f64>::to_bits (1 samples, 0.09%)core::f64::<impl f64>::to_bits::rt_f64_to_u64 (1 samples, 0.09%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (1 samples, 0.09%)core::hash::BuildHasher::hash_one (1 samples, 0.09%)core::num::<impl u64>::rotate_left (7 samples, 0.66%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (23 samples, 2.17%)<..core::num::<impl u64>::wrapping_add (9 samples, 0.85%)core::num::<impl u64>::rotate_left (33 samples, 3.11%)cor..<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (95 samples, 8.95%)<std::collect..<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (95 samples, 8.95%)<core::hash::..<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (95 samples, 8.95%)<core::hash::..<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::d_rounds (66 samples, 6.21%)<core::h..core::num::<impl u64>::wrapping_add (18 samples, 1.69%)<std::collections::hash::map::RandomState as core::hash::BuildHasher>::build_hasher (14 samples, 1.32%)core::hash::sip::SipHasher13::new_with_keys (8 samples, 0.75%)core::hash::sip::Hasher<S>::new_with_keys (8 samples, 0.75%)core::hash::sip::Hasher<S>::reset (8 samples, 0.75%)_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (1 samples, 0.09%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (14 samples, 1.32%)core::hash::sip::u8to64_le (7 samples, 0.66%)core::intrinsics::copy_nonoverlapping (2 samples, 0.19%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (15 samples, 1.41%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (15 samples, 1.41%)_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (1 samples, 0.09%)core::hash::BuildHasher::hash_one (1 samples, 0.09%)core::hash::impls::<impl core::hash::Hash for u32>::hash (21 samples, 1.98%)c..core::hash::Hasher::write_u32 (21 samples, 1.98%)c..core::num::<impl u32>::to_ne_bytes (2 samples, 0.19%)core::num::<impl u64>::rotate_left (3 samples, 0.28%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (14 samples, 1.32%)core::num::<impl u64>::wrapping_add (6 samples, 0.56%)_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (4 samples, 0.38%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (29 samples, 2.73%)<c..core::hash::sip::u8to64_le (1 samples, 0.09%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (39 samples, 3.67%)<std..<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (39 samples, 3.67%)<cor.._ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (10 samples, 0.94%)hashbrown::map::make_hash (180 samples, 16.95%)hashbrown::map::make_hashcore::hash::BuildHasher::hash_one (180 samples, 16.95%)core::hash::BuildHasher::h..core::hash::impls::<impl core::hash::Hash for &T>::hash (66 samples, 6.21%)core::ha..core::hash::impls::<impl core::hash::Hash for u64>::hash (45 samples, 4.24%)core:..core::hash::Hasher::write_u64 (45 samples, 4.24%)core:..core::num::<impl u64>::to_ne_bytes (6 samples, 0.56%)bachelorarbeit::calc::omnes (1 samples, 0.09%)hashbrown::raw::bitmask::BitMask::lowest_set_bit (1 samples, 0.09%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (7 samples, 0.66%)hashbrown::raw::bitmask::BitMask::remove_lowest_bit (6 samples, 0.56%)hashbrown::raw::ProbeSeq::move_next (1 samples, 0.09%)core::cmp::impls::<impl core::cmp::PartialEq for u32>::eq (6 samples, 0.56%)hashbrown::map::equivalent_key::_{{closure}} (41 samples, 3.86%)hash..<Q as hashbrown::Equivalent<K>>::equivalent (41 samples, 3.86%)<Q a..core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (41 samples, 3.86%)core..core::cmp::impls::<impl core::cmp::PartialEq for u64>::eq (35 samples, 3.30%)cor..hashbrown::raw::Bucket<T>::as_ref (6 samples, 0.56%)hashbrown::raw::Bucket<T>::as_ptr (6 samples, 0.56%)core::ptr::mut_ptr::<impl *mut T>::sub (6 samples, 0.56%)core::ptr::mut_ptr::<impl *mut T>::offset (6 samples, 0.56%)hashbrown::raw::RawTable<T,A>::find::_{{closure}} (49 samples, 4.61%)hashb..hashbrown::raw::RawTable<T,A>::bucket (2 samples, 0.19%)hashbrown::raw::Bucket<T>::from_base_index (2 samples, 0.19%)core::ptr::mut_ptr::<impl *mut T>::sub (2 samples, 0.19%)hashbrown::raw::h2 (30 samples, 2.82%)ha..hashbrown::raw::sse2::Group::load (15 samples, 1.41%)core::core_arch::x86::sse2::_mm_loadu_si128 (15 samples, 1.41%)core::intrinsics::copy_nonoverlapping (15 samples, 1.41%)hashbrown::raw::RawTable<T,A>::get (129 samples, 12.15%)hashbrown::raw::Ra..hashbrown::raw::RawTable<T,A>::find (129 samples, 12.15%)hashbrown::raw::Ra..hashbrown::raw::RawTableInner::find_inner (128 samples, 12.05%)hashbrown::raw::Ra..hashbrown::raw::sse2::Group::match_byte (14 samples, 1.32%)core::core_arch::x86::sse2::_mm_movemask_epi8 (14 samples, 1.32%)bachelorarbeit::calc::omnes (374 samples, 35.22%)bachelorarbeit::calc::omnesstd::collections::hash::map::HashMap<K,V,S>::get (319 samples, 30.04%)std::collections::hash::map::HashMap<K,V,S>::gethashbrown::map::HashMap<K,V,S,A>::get (319 samples, 30.04%)hashbrown::map::HashMap<K,V,S,A>::gethashbrown::map::HashMap<K,V,S,A>::get_inner (319 samples, 30.04%)hashbrown::map::HashMap<K,V,S,A>::get_innerhashbrown::raw::RawTable<T,A>::is_empty (2 samples, 0.19%)hashbrown::raw::RawTable<T,A>::len (2 samples, 0.19%)do_cos (5 samples, 0.47%)do_sin (7 samples, 0.66%)libc_feholdsetround_sse_ctx (2 samples, 0.19%)std::f64::<impl f64>::cos (29 samples, 2.73%)st..__cos_fma (29 samples, 2.73%)__..libc_feresetround_sse_ctx (1 samples, 0.09%)__ieee754_log_fma (74 samples, 6.97%)__ieee754..__log (9 samples, 0.85%)__log_finite@GLIBC_2.15@plt (1 samples, 0.09%)std::f64::<impl f64>::ln (85 samples, 8.00%)std::f64::<..std::sys::log_wrapper (85 samples, 8.00%)std::sys::l..std::f64::_<impl f64>::ln::_{{closure}} (85 samples, 8.00%)std::f64::_..bachelorarbeit::calc::omnes (1 samples, 0.09%)std::collections::hash::map::HashMap<K,V,S>::get (1 samples, 0.09%)hashbrown::map::HashMap<K,V,S,A>::get (1 samples, 0.09%)hashbrown::map::HashMap<K,V,S,A>::get_inner (1 samples, 0.09%)hashbrown::map::make_hash (1 samples, 0.09%)core::hash::BuildHasher::hash_one (1 samples, 0.09%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (1 samples, 0.09%)<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (1 samples, 0.09%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (1 samples, 0.09%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::d_rounds (1 samples, 0.09%)core::num::<impl u64>::wrapping_add (1 samples, 0.09%)[unknown] (1 samples, 0.09%)std::f64::<impl f64>::powi (5 samples, 0.47%)bachelorarbeit::calc::integrate (674 samples, 63.47%)bachelorarbeit::calc::integratebachelorarbeit::calc::phi0::_{{closure}} (669 samples, 62.99%)bachelorarbeit::calc::phi0::_{{closure}}bachelorarbeit::calc::phi0_integrand (665 samples, 62.62%)bachelorarbeit::calc::phi0_integrandstd::f64::<impl f64>::tan (27 samples, 2.54%)st..__tan_fma (27 samples, 2.54%)__..libc_feholdsetround_sse_ctx (1 samples, 0.09%)<num_complex::Complex<T> as core::ops::arith::Mul<T>>::mul (3 samples, 0.28%)<f64 as core::ops::arith::Mul>::mul (3 samples, 0.28%)core::num::<impl u64>::rotate_left (8 samples, 0.75%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (12 samples, 1.13%)core::num::<impl u64>::wrapping_add (2 samples, 0.19%)core::num::<impl u64>::rotate_left (18 samples, 1.69%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::finish (49 samples, 4.61%)<std:..<core::hash::sip::SipHasher13 as core::hash::Hasher>::finish (49 samples, 4.61%)<core..<core::hash::sip::Hasher<S> as core::hash::Hasher>::finish (49 samples, 4.61%)<core..<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::d_rounds (33 samples, 3.11%)<co..core::num::<impl u64>::wrapping_add (9 samples, 0.85%)<std::collections::hash::map::RandomState as core::hash::BuildHasher>::build_hasher (6 samples, 0.56%)core::hash::sip::SipHasher13::new_with_keys (2 samples, 0.19%)core::hash::sip::Hasher<S>::new_with_keys (2 samples, 0.19%)core::hash::sip::Hasher<S>::reset (2 samples, 0.19%)core::num::<impl u64>::rotate_left (2 samples, 0.19%)<core::hash::sip::Sip13Rounds as core::hash::sip::Sip>::c_rounds (9 samples, 0.85%)core::num::<impl u64>::wrapping_add (3 samples, 0.28%)_ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (5 samples, 0.47%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)<core::hash::sip::Hasher<S> as core::hash::Hasher>::write (24 samples, 2.26%)<..core::hash::sip::u8to64_le (3 samples, 0.28%)<std::collections::hash::map::DefaultHasher as core::hash::Hasher>::write (26 samples, 2.45%)<s..<core::hash::sip::SipHasher13 as core::hash::Hasher>::write (26 samples, 2.45%)<c.._ZN81_$LT$std..collections..hash..map..DefaultHasher$u20$as$u20$core..hash..Hasher$GT$5write17h0fbb5d2db9c85b4fE.llvm.9958661498001546512 (2 samples, 0.19%)hashbrown::map::make_hash (83 samples, 7.82%)hashbrown::..core::hash::BuildHasher::hash_one (83 samples, 7.82%)core::hash:..core::hash::impls::<impl core::hash::Hash for &T>::hash (28 samples, 2.64%)co..core::hash::impls::<impl core::hash::Hash for u64>::hash (28 samples, 2.64%)co..core::hash::Hasher::write_u64 (28 samples, 2.64%)co..core::hash::BuildHasher::hash_one (2 samples, 0.19%)bachelorarbeit::calc::delta_with_lut (1 samples, 0.09%)hashbrown::raw::bitmask::BitMask::lowest_set_bit (3 samples, 0.28%)<hashbrown::raw::bitmask::BitMaskIter as core::iter::traits::iterator::Iterator>::next (8 samples, 0.75%)hashbrown::raw::bitmask::BitMask::remove_lowest_bit (5 samples, 0.47%)hashbrown::map::equivalent_key::_{{closure}} (28 samples, 2.64%)ha..<Q as hashbrown::Equivalent<K>>::equivalent (28 samples, 2.64%)<Q..core::cmp::impls::<impl core::cmp::PartialEq<&B> for &A>::eq (28 samples, 2.64%)co..core::cmp::impls::<impl core::cmp::PartialEq for u64>::eq (28 samples, 2.64%)co..hashbrown::raw::RawTable<T,A>::find::_{{closure}} (29 samples, 2.73%)ha..hashbrown::raw::Bucket<T>::as_ref (1 samples, 0.09%)hashbrown::raw::Bucket<T>::as_ptr (1 samples, 0.09%)core::ptr::mut_ptr::<impl *mut T>::sub (1 samples, 0.09%)core::ptr::mut_ptr::<impl *mut T>::offset (1 samples, 0.09%)hashbrown::raw::h2 (11 samples, 1.04%)hashbrown::raw::sse2::Group::load (5 samples, 0.47%)core::core_arch::x86::sse2::_mm_loadu_si128 (5 samples, 0.47%)core::intrinsics::copy_nonoverlapping (5 samples, 0.47%)bachelorarbeit::calc::delta_with_lut (157 samples, 14.78%)bachelorarbeit::calc::d..std::collections::hash::map::HashMap<K,V,S>::get (149 samples, 14.03%)std::collections::has..hashbrown::map::HashMap<K,V,S,A>::get (149 samples, 14.03%)hashbrown::map::HashM..hashbrown::map::HashMap<K,V,S,A>::get_inner (149 samples, 14.03%)hashbrown::map::HashM..hashbrown::raw::RawTable<T,A>::get (61 samples, 5.74%)hashbro..hashbrown::raw::RawTable<T,A>::find (61 samples, 5.74%)hashbro..hashbrown::raw::RawTableInner::find_inner (60 samples, 5.65%)hashbro..hashbrown::raw::sse2::Group::match_byte (7 samples, 0.66%)core::core_arch::x86::sse2::_mm_movemask_epi8 (7 samples, 0.66%)num_complex::<impl core::ops::arith::Add<num_complex::Complex<f64>> for f64>::add (2 samples, 0.19%)<f64 as core::ops::arith::Add>::add (4 samples, 0.38%)num_complex::<impl core::ops::arith::Div<num_complex::Complex<f64>> for f64>::div (53 samples, 4.99%)num_co..num_complex::Complex<T>::norm_sqr (16 samples, 1.51%)<f64 as core::ops::arith::Mul>::mul (12 samples, 1.13%)num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (2 samples, 0.19%)do_cos (11 samples, 1.04%)do_sin (11 samples, 1.04%)std::f64::<impl f64>::cos (30 samples, 2.82%)st..__cos_fma (30 samples, 2.82%)__..libc_feholdsetround_sse_ctx (2 samples, 0.19%)std::f64::<impl f64>::powi (2 samples, 0.19%)bachelorarbeit::calc::omnes::_{{closure}} (289 samples, 27.21%)bachelorarbeit::calc::omnes::_{{closure}}bachelorarbeit::calc::omnes_integrand (289 samples, 27.21%)bachelorarbeit::calc::omnes_integrandstd::f64::<impl f64>::tan (38 samples, 3.58%)std:..__tan_fma (38 samples, 3.58%)__ta..libc_feholdsetround_sse_ctx (2 samples, 0.19%)num_complex::<impl core::ops::arith::Mul<num_complex::Complex<f64>> for f64>::mul (7 samples, 0.66%)bachelorarbeit::calc::integrate_complex (300 samples, 28.25%)bachelorarbeit::calc::integrate_complexnum_complex::opassign::<impl core::ops::arith::AddAssign for num_complex::Complex<T>>::add_assign (2 samples, 0.19%)<f64 as core::ops::arith::AddAssign>::add_assign (2 samples, 0.19%)bachelorarbeit::calc::omnes (5 samples, 0.47%)bachelorarbeit::calc::omnes (306 samples, 28.81%)bachelorarbeit::calc::omnesstd::collections::hash::map::HashMap<K,V,S>::insert (1 samples, 0.09%)hashbrown::map::HashMap<K,V,S,A>::insert (1 samples, 0.09%)hashbrown::raw::RawTable<T,A>::find_or_find_insert_slot (1 samples, 0.09%)hashbrown::raw::RawTable<T,A>::reserve (1 samples, 0.09%)hashbrown::raw::RawTable<T,A>::reserve_rehash (1 samples, 0.09%)hashbrown::raw::RawTableInner::reserve_rehash_inner (1 samples, 0.09%)hashbrown::raw::RawTableInner::resize_inner (1 samples, 0.09%)core::intrinsics::copy_nonoverlapping (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)__libc_start_main_impl (983 samples, 92.56%)__libc_start_main_impl__libc_start_call_main (983 samples, 92.56%)__libc_start_call_mainstd::rt::lang_start (983 samples, 92.56%)std::rt::lang_startstd::rt::lang_start_internal (983 samples, 92.56%)std::rt::lang_start_internalstd::rt::lang_start::_{{closure}} (983 samples, 92.56%)std::rt::lang_start::_{{closure}}std::sys_common::backtrace::__rust_begin_short_backtrace (983 samples, 92.56%)std::sys_common::backtrace::__rust_begin_short_backtracecore::ops::function::FnOnce::call_once (983 samples, 92.56%)core::ops::function::FnOnce::call_oncebachelorarbeit::main (983 samples, 92.56%)bachelorarbeit::maincore::iter::traits::iterator::Iterator::collect (983 samples, 92.56%)core::iter::traits::iterator::Iterator::collect<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter (983 samples, 92.56%)<alloc::vec::Vec<T> as core::iter::traits::collect::FromIterator<T>>::from_iter<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter (983 samples, 92.56%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter::SpecFromIter<T,I>>::from_iter<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter (983 samples, 92.56%)<alloc::vec::Vec<T> as alloc::vec::spec_from_iter_nested::SpecFromIterNested<T,I>>::from_iter<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extend (983 samples, 92.56%)<alloc::vec::Vec<T,A> as alloc::vec::spec_extend::SpecExtend<T,I>>::spec_extendalloc::vec::Vec<T,A>::extend_trusted (982 samples, 92.47%)alloc::vec::Vec<T,A>::extend_trustedcore::iter::traits::iterator::Iterator::for_each (982 samples, 92.47%)core::iter::traits::iterator::Iterator::for_each<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold (982 samples, 92.47%)<core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::fold (982 samples, 92.47%)<core::slice::iter::Iter<T> as core::iter::traits::iterator::Iterator>::foldcore::iter::adapters::map::map_fold::_{{closure}} (982 samples, 92.47%)core::iter::adapters::map::map_fold::_{{closure}}bachelorarbeit::main::_{{closure}} (982 samples, 92.47%)bachelorarbeit::main::_{{closure}}bachelorarbeit::calc::phi0 (982 samples, 92.47%)bachelorarbeit::calc::phi0bachelorarbeit::calc::phi0 (1 samples, 0.09%)bachelorarbeit (1,057 samples, 99.53%)bachelorarbeit_start (984 samples, 92.66%)_start_dl_start (1 samples, 0.09%)_dl_start_final (1 samples, 0.09%)_dl_sysdep_start (1 samples, 0.09%)dl_main (1 samples, 0.09%)_dl_map_object_deps (1 samples, 0.09%)_dl_catch_exception (1 samples, 0.09%)openaux (1 samples, 0.09%)_dl_map_object (1 samples, 0.09%)_dl_map_object_from_fd (1 samples, 0.09%)_dl_map_segments (1 samples, 0.09%)_dl_map_segment (1 samples, 0.09%)__mmap64 (1 samples, 0.09%)__mmap64 (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)[unknown] (1 samples, 0.09%)all (1,062 samples, 100%)perf-exec (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%)[unknown] (5 samples, 0.47%) \ No newline at end of file diff --git a/bachelorarbeit/gauss_quad_lut.morello b/bachelorarbeit/gauss_quad_lut.morello new file mode 100644 index 0000000..165a4f0 Binary files /dev/null and b/bachelorarbeit/gauss_quad_lut.morello differ diff --git a/bachelorarbeit/perf.data b/bachelorarbeit/perf.data new file mode 100644 index 0000000..f41c7bf Binary files /dev/null and b/bachelorarbeit/perf.data differ diff --git a/bachelorarbeit/perf.data.old b/bachelorarbeit/perf.data.old new file mode 100644 index 0000000..2d12b9a Binary files /dev/null and b/bachelorarbeit/perf.data.old differ diff --git a/bachelorarbeit/src/calc.rs b/bachelorarbeit/src/calc.rs new file mode 100644 index 0000000..9ad9825 --- /dev/null +++ b/bachelorarbeit/src/calc.rs @@ -0,0 +1,221 @@ +use core::f64::consts::PI; +use gauss_quad::GaussLegendre; +use std::collections::HashMap; +use std::io; +use std::rc::Rc; + +use crate::gq_storage; // This should be moved to main.rs after new archtitecture (see main.rs TODO) + +pub type Complex = num::complex::Complex; + +const M_ROH: f64 = 0.7736; +const M_PI: f64 = 0.13957; +pub const S0: f64 = 4.0 * M_PI * M_PI; +const M_K: f64 = 0.496; +const B0: f64 = 1.055; +const B1: f64 = 0.15; +const LAMBDA1: f64 = 1.57; +const LAMBDA2: f64 = -1.96; +const LAMBDA_HIGH: f64 = 10.0; +pub const EPSILON: f64 = 1e-15; +const S_MID_CUTOFF: f64 = 1.42 * 1.42; +const INF: f64 = 1e5; + +#[derive(Default)] +pub struct Cache { + pub gauss_quad_lut: HashMap, Rc<[f64]>), nohash_hasher::BuildNoHashHasher>, + pub delta_lut: HashMap>, + pub omnes_lut: HashMap>, nohash_hasher::BuildNoHashHasher> // First key is n, second is s +} + +impl Cache { + pub fn from_file(filepath: &str) -> io::Result { + let me = Cache{ + gauss_quad_lut: gq_storage::deserialize(filepath, |_| true)?.into_iter() + .map(|(roots, weights)| (u32::try_from(roots.len()).unwrap(), (Rc::from(roots), Rc::from(weights)))).collect(), + delta_lut: HashMap::with_hasher(Default::default()), + omnes_lut: HashMap::with_hasher(Default::default()) + }; + Ok(me) + } +} + +// derivated values + +fn lambda_0() -> f64 { + delta((2.0*M_K).powi(2)) +} + +fn delta_mid_cutoff() -> f64 { + delta(S_MID_CUTOFF) +} + +fn atan_shift(x: f64) -> f64 { + let atan_std: f64 = x.atan(); + if atan_std < 0.0 { + atan_std + PI + } else { + atan_std + } +} + +fn integrate f64>(roots: &[f64], weights: &[f64], a:f64, b:f64, mut f: G) -> f64 { + let mut sum: f64 = 0.0; + let mut i: usize = 0; + if roots.len() != weights.len() { + panic!("Error: roots and weights are of different length"); + } + + while i < roots.len() { + sum += weights[i] * f(roots[i]*(b-a)/2.0 + (a+b)/2.0); + i += 1; + } + sum * (b-a)/2.0 +} + +fn integrate_complex Complex>(roots: &[f64], weights: &[f64], a:f64, b:f64, mut f: G) -> Complex { + let mut sum: Complex = Complex::new(0.0,0.0); + let mut i: usize = 0; + if roots.len() != weights.len() { + panic!("Error: roots and weights are of different length"); + } + while i < roots.len() { + sum += weights[i] * f(roots[i]*(b-a)/2.0 + (a+b)/2.0); + i += 1; + } + sum * (b-a)/2.0 +} + +fn omega(s: f64) -> f64 { + let a = s.sqrt(); + let b = (1.05f64.powi(2) - s).sqrt(); + (a - b) / (a + b) +} + +fn k(s: f64) -> f64 { + (s/4.0 - M_PI.powi(2)).sqrt() +} + +pub fn delta_with_lut(cache:&mut Cache, s: f64) -> f64 { + match cache.delta_lut.get(&s.to_bits()) { + Some(val) => { + *val + } + None => { + let val = delta(s); + cache.delta_lut.insert(s.to_bits(), val); + val + } + } +} + +pub fn delta(s: f64) -> f64 { + if s <= 2.0 * M_K { + atan_shift( + (s.sqrt() / (2.0*k(s).powi(3)) + * (M_ROH.powi(2) - s) + * ( (2.0*M_PI.powi(3)) / (M_ROH.powi(2) * s.sqrt()) + B0 + B1 * omega(s)) + ).powi(-1) + ) + } else if s <= S_MID_CUTOFF { + let par = 0.5 * s.sqrt() / M_K - 1.0; + lambda_0() + LAMBDA1 * par + LAMBDA2 * par.powi(2) + } else { + PI + + (delta_mid_cutoff() - PI) + * (LAMBDA_HIGH * LAMBDA_HIGH + S_MID_CUTOFF) + / (LAMBDA_HIGH * LAMBDA_HIGH + s) + } +} + +pub fn omnes_integrand_tan(cache:&mut Cache, s_tick:f64, s:f64) -> Complex { + let sub = s_tick.tan(); + (delta_with_lut(cache, sub) - delta_with_lut(cache, s)) + / ( + sub + * (sub - s + Complex::new(0.0, EPSILON)) + * s_tick.cos().powi(2) + ) +} + +pub fn omnes_integrand(cache:&mut Cache, s_tick:f64, s:f64) -> Complex { + (delta_with_lut(cache, s_tick) - delta_with_lut(cache, s)) + / (s_tick * (s_tick - s + Complex::new(0.0, EPSILON))) +} + +pub fn omnes(cache:&mut Cache, s:f64, n:u32, use_tan: bool) -> Complex { + let roots: Rc<[f64]>; + let weights: Rc<[f64]>; + + if let Some(inner_lut) = cache.omnes_lut.get(&n) { + if let Some(res) = inner_lut.get(&s.to_bits()) { + return *res + } + } + + if !cache.omnes_lut.contains_key(&n) { + cache.omnes_lut.insert(n, HashMap::with_hasher(Default::default())); + } + + match cache.gauss_quad_lut.get_mut(&n) { + Some(gq_values) => { + roots = Rc::clone(&gq_values.0); + weights = Rc::clone(&gq_values.1); + } + None => { + let gq_values = GaussLegendre::nodes_and_weights(n.try_into().unwrap()); + roots = Rc::from(gq_values.0.as_slice()); + weights = Rc::from(gq_values.1.as_slice()); + } + } + + if !cache.gauss_quad_lut.contains_key(&n) { + let gq_values = GaussLegendre::nodes_and_weights(n.try_into().unwrap()); + cache.gauss_quad_lut.insert(n, (Rc::from(gq_values.0), Rc::from(gq_values.1))); + println!("n_omnes={} is not included in the lookup file. Consider generating a new lookup file via the appropriate function in gq_storage.rs", n); + } + + let intgrl = if use_tan { + integrate_complex(&roots, &weights, S0.atan(), PI / 2.0, |s_tick| omnes_integrand_tan(cache, s_tick, s)) + } else { + integrate_complex(&roots, &weights, S0, INF, |s_tick| omnes_integrand(cache, s_tick, s)) + }; + let omnes_res = (s/PI*(intgrl)).exp() * (S0 / Complex::new(S0 - s, -EPSILON)).powf(delta_with_lut(cache, s) / PI); + //cache.omnes_lut.get_mut(&n).unwrap().insert(s.to_bits(), omnes_res); + println!("{:?}", omnes_res); + omnes_res +} + +pub fn phi0_integrand(cache:&mut Cache, x: f64, s: f64, n_omnes:u32, use_tan_omnes: bool) -> f64 { + let x_sub = x.tan().powi(2) + S0; + let omnes_s = omnes(cache, s, n_omnes, use_tan_omnes); + let omnes_x = omnes(cache, x_sub, n_omnes, use_tan_omnes); + (omnes_x / omnes_s).norm_sqr().ln() + / ( (x_sub)* (x_sub-s) ) + / x.cos().powi(2) // Don't use x_sub here, since this term is from tan substitution itself +} + +pub fn phi0(cache:&mut Cache, s: f64, n_omnes: u32, n_phi0: u32, use_tan_omnes: bool, use_tan_phi0: bool, use_xsub: bool) -> f64 { + if !cache.gauss_quad_lut.contains_key(&n_phi0) { + let gq_values = GaussLegendre::nodes_and_weights(n_phi0.try_into().unwrap()); + cache.gauss_quad_lut.insert(n_phi0, (Rc::from(gq_values.0), Rc::from(gq_values.1))); + println!("n_omnes={} is not included in the lookup file. Consider generating a new lookup file via the appropriate function in gq_storage.rs", n_phi0); + } + let (ref roots, ref weights) = cache.gauss_quad_lut.get(&n_phi0).unwrap(); + let (roots, weights) = (Rc::clone(roots), Rc::clone(weights)); + + let analyt = omnes(cache, s, n_omnes, use_tan_omnes).norm_sqr().ln() / S0.sqrt() / 2.0; + let intgrl = s / PI * integrate(&*roots, &*weights, 0.0, PI / 2.0, |x| phi0_integrand(cache,x,s,n_omnes, use_tan_omnes)); + -(s-S0).sqrt() * (intgrl - analyt) +} + +#[allow(unused)] +pub fn bit_pattern_randomness_tester(a:f64, b:f64, n_points: u64) -> Vec{ + let mut modulos = vec![0.0; n_points as usize]; + let x_values: Vec = (0..modulos.len() as u32).map(|x| (f64::from(x) * ((b - a) / f64::from(modulos.len() as u32)) + a).to_bits()).collect(); + for i in 0..x_values.len() { + let val = (x_values[i] % n_points) as usize; + modulos[val] += 1.0; + } + modulos +} diff --git a/bachelorarbeit/src/gq_storage.rs b/bachelorarbeit/src/gq_storage.rs new file mode 100644 index 0000000..77c916c --- /dev/null +++ b/bachelorarbeit/src/gq_storage.rs @@ -0,0 +1,84 @@ +//! This module writes and reads roots and weights of gauss-quad into files, using a dedicated file format. +//! The format works as follows: One u64 is written, indicating the n of the roots and weights that follow +//! (thereby hinting at the number of floats that are following before the next u64, which is 2*n). This is repeated for +//! arbitrary n. + +#![allow(dead_code)] + +use std::{ + fs::File, + io::{self, BufReader, BufWriter, Read, Write, Seek, SeekFrom}, +}; + +use gauss_quad::GaussLegendre; + +/// Writes roots and weights of gauss-quad into a file at `filepath`. params contains roots and weights for multiple n. +pub fn serialize(filepath: &str, params: Vec<(Vec, Vec)>) -> io::Result<()> { + let file = File::create(filepath)?; + let mut file = BufWriter::new(file); + for (roots, weights) in params.iter() { + file.write_all(&u64::try_from(roots.len()).unwrap().to_le_bytes())?; + for root in roots { + file.write_all(&root.to_bits().to_le_bytes())?; + } + for weight in weights { + file.write_all(&weight.to_bits().to_le_bytes())?; + } + } + Ok(()) +} + +pub fn deserialize(filepath: &str, filter: impl Fn(u64) -> bool) -> io::Result, Vec)>> { + let file = File::open(filepath)?; + let mut file = BufReader::new(file); + let mut buf = [0u8; 8]; + + let mut values = Vec::new(); + + 'outer: loop { + let res = file.read(&mut buf)?; + if res < 8 { + break; + } + let n = u64::from_le_bytes(buf); + + // skips stored floats for n that should not be stored + if !filter(n) { + file.seek(SeekFrom::Current(i64::try_from(2*n*8).unwrap())).unwrap(); + continue; + } + + // Stores roots and weights into values Vec + + let mut roots = Vec::new(); + for _ in 0..n { + let res = file.read(&mut buf)?; + if res < 8 { + break 'outer; + } + roots.push(f64::from_bits(u64::from_le_bytes(buf))); + } + + let mut weights = Vec::new(); + for _ in 0..n { + let res = file.read(&mut buf)?; + if res < 8 { + break 'outer; + } + weights.push(f64::from_bits(u64::from_le_bytes(buf))); + } + values.push((roots, weights)); + } + Ok(values) +} + +pub fn fill_with_gauss_quad(n_values: Vec) { + let mut params = Vec::new(); + for i in n_values { + let gq = GaussLegendre::init(usize::try_from(i).unwrap()); + params.push((gq.nodes, gq.weights)); + } + serialize("./gauss_quad_lut.morello", params).unwrap(); + let res = deserialize("./gauss_quad_lut.morello", |_| true); + println!("{:?}", res); +} \ No newline at end of file diff --git a/bachelorarbeit/src/main.rs b/bachelorarbeit/src/main.rs new file mode 100644 index 0000000..dd07f2d --- /dev/null +++ b/bachelorarbeit/src/main.rs @@ -0,0 +1,247 @@ + +// TODO +// - Lookup Table implementieren -> Weights, roots schon früher rausziehen? +// -> Warum macht delta_lut alles langsamer? +// - Omnes auch komplex integrieren (geht nicht mit Integralmethode von gauss-quad) +// - Textfelder und "Berechnen"-Button in UI, um z.B. Wertebereich zu setzen +// - Neue Architketur: struct calculator, das lookups speichert -> In die nötigen Funktionen übergeben. Dadurch kann man omnes auch als single calc machen und trotzdem die Punkte nur einmal berechnen +// - AutoImport ausschalten + + +use egui_plot::{log_grid_spacer, AxisHints, GridInput, GridMark, Legend, Line, Plot}; +use num::complex::ComplexFloat; +use std::time::Instant; + +mod gq_storage; +mod calc; + +struct App { + plot_data: Vec, + plots_available: [String; 6], + calc_cache: calc::Cache, + scaling_type: ScalingType, + a: f64, + b: f64, + n_points: u32, + n_omnes: u32, + n_phi0: u32, + use_tan_omnes: bool, + use_tan_phi0: bool, + use_xsub_phi0: bool +} + +#[derive(Clone)] +struct PlotCurve { + points: Vec<[f64;2]>, + name: String, +} + +impl Default for App { + fn default() -> Self { + App { + plot_data: Vec::default(), + plots_available: ["Delta".to_string(), "Omnes Integrand".to_string(), "Omnes".to_string(), "Phi0 Integrand".to_string(), "Phi0".to_string(), "Prozentueller Fehler".to_string()], + calc_cache: calc::Cache::default(), + scaling_type: ScalingType::default(), + a: calc::S0, + b: 9.0, + n_points: 5000, + n_omnes:1000, + n_phi0:1000, + use_tan_omnes: true, + use_tan_phi0: true, + use_xsub_phi0: true + } + } +} + +#[derive(Debug, Default, PartialEq, Clone, Copy)] +enum ScalingType { + Logarithmic, + #[default] + Linear +} + +impl eframe::App for App { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::CentralPanel::default().show(ctx, |ui| { + let cur_scaling_type = self.scaling_type; + egui::ComboBox::from_label("pick y-scaling").selected_text(format!("{:?}", self.scaling_type)).show_ui(ui, |ui| { + ui.selectable_value(&mut self.scaling_type, ScalingType::Logarithmic, "log10"); + ui.selectable_value(&mut self.scaling_type, ScalingType::Linear, "linear"); + }); + + float_text_edit_singleline(ui, &mut self.a); + float_text_edit_singleline(ui, &mut self.b); + int_text_edit_singleline(ui, &mut self.n_points); + int_text_edit_singleline(ui, &mut self.n_omnes); + int_text_edit_singleline(ui, &mut self.n_phi0); + + ui.checkbox(&mut self.use_tan_omnes, "Use tan()-subst. for Omnes"); + ui.checkbox(&mut self.use_tan_phi0, "Use tan()-subst. for Phi0"); + ui.checkbox(&mut self.use_xsub_phi0, "Use second subst. for Phi0"); + + let button_clear = ui.button("Clear canvas"); + if button_clear.clicked() { + self.plot_data = Vec::new(); + } + + for i in 0..self.plots_available.len() { + let button = ui.button( format!("Calculate {}", self.plots_available[i].clone())); + if button.clicked() { + let x_values: Vec = (0..self.n_points).map(|x| -> f64 {f64::from(x) * ((self.b - self.a) / f64::from(self.n_points)) + self.a}).collect(); + match i { + 0 => { + let y_values_delta:Vec = x_values.iter().map(|&x| calc::delta_with_lut(&mut self.calc_cache, x)).collect(); + self.plot_data.push(PlotCurve { + points: x_values.iter().zip(y_values_delta.iter()).map(|(&x,&y)| [x.powf(0.5),y]).collect(), + name: "Delta".to_string() + }) + } + 1 => { + let y_values_omnes_integrand: Vec = x_values.iter().map(|&x| calc::omnes_integrand(&mut self.calc_cache, x, 100.0).abs()).collect(); + self.plot_data.push(PlotCurve { + points: x_values.iter().zip(y_values_omnes_integrand.iter()).map(|(&x,&y)| [x.powf(0.5),y]).collect(), + name: "Omnes Integrand".to_string() + }) + } + 2 => { + let y_values_omnes: Vec = x_values.iter().map(|&x| calc::omnes(&mut self.calc_cache, x, self.n_omnes, self.use_tan_omnes).abs().powi(2)).collect(); + self.plot_data.push(PlotCurve { + points: x_values.iter().zip(y_values_omnes.iter()).map(|(&x,&y)| [x.powf(0.5),y]).collect(), + name: "Omnes".to_string() + }) + } + 3 => { + let y_values_phi0_integrand: Vec = x_values.iter().map(|&x| calc::phi0_integrand(&mut self.calc_cache, x, 10000.0, self.n_omnes, self.use_tan_omnes)).collect(); + self.plot_data.push(PlotCurve { + points: x_values.iter().zip(y_values_phi0_integrand.iter()).map(|(&x,&y)| [x.powf(0.5),y]).collect(), + name: "Phi0 Integrand".to_string() + }) + } + 4 => { + let t0 = Instant::now(); + let y_values_phi0: Vec = x_values.iter().map(|&x| calc::phi0(&mut self.calc_cache, x, self.n_omnes, self.n_phi0, self.use_tan_omnes, self.use_tan_phi0, self.use_xsub_phi0)).collect(); + println!("{:?}", t0.elapsed()); + self.plot_data.push(PlotCurve { + points: x_values.iter().zip(y_values_phi0.iter()).map(|(&x,&y)| [x.powf(0.5),y]).collect(), + name: "Phi0".to_string() + }) + // let y_values_phi0 = calc::bit_pattern_randomness_tester(self.a, self.b, self.n_points as u64); + // self.plot_data.push(PlotCurve { + // points: (0..self.n_points).zip(y_values_phi0.iter()).map(|(x,&y)| [x as f64,y]).collect(), + // name: "Phi0".to_string() + // }) + } + 5 => { + let y_values_phi0: Vec = x_values.iter().map(|&x| { + let t0 = Instant::now(); + let val = calc::phi0(&mut self.calc_cache, x.powi(2), self.n_omnes, self.n_phi0, self.use_tan_omnes, self.use_tan_phi0, self.use_xsub_phi0) / calc::delta_with_lut(&mut self.calc_cache, x.powi(2)) - 1.0; + println!("time for x = {}: {:?}", x, t0.elapsed()); + val + }).collect(); + self.plot_data.push(PlotCurve { + points: x_values.iter().zip(y_values_phi0.iter()).map(|(&x,&y)| [x,y]).collect(), + name: "Phi0".to_string() + }) + } + 6_usize.. => { + panic!("Not all buttons have been assigned data!"); + } + } + } + } + + if self.scaling_type != cur_scaling_type { + for curve in self.plot_data.iter_mut() { + for [_x,y] in curve.points.iter_mut() { + if self.scaling_type == ScalingType::Linear { + *y = 10.0f64.powf(*y); + } else if self.scaling_type == ScalingType::Logarithmic { + *y = y.log10(); + } + } + } + } + + let plot = Plot::new("my_plot") + .grid_spacing(5.0f32..=300.0f32) + .x_axis_label("sqrt(s) [GeV]") + .y_axis_label("|Omega|^2") + .legend(Legend::default()); + + let plot = match self.scaling_type { + ScalingType::Linear => plot.custom_y_axes(vec![AxisHints::new_y().formatter(|mark, _l, _| scientific_notation(mark.value, false))]), + ScalingType::Logarithmic => {plot.y_grid_spacer(|input| { + let input_exp = GridInput {bounds: (inverse_log_map(input.bounds.0), inverse_log_map(input.bounds.1)), base_step_size: input.base_step_size}; + let lin_gridmarks = (log_grid_spacer(10))(input_exp); + let mut log_gridmarks: Vec = Vec::new(); + for v in lin_gridmarks.iter() { + if v.value - v.value.floor() < 0.9 { + log_gridmarks.push(GridMark{value:log_map(v.value), step_size:v.step_size / 1.14}); + } + } + log_gridmarks + }) + .label_formatter(|_,point| format!("x = {:.5}\ny = {:.5}", point.x, 10.0f64.powf(point.y)).to_string()) + .custom_y_axes(vec![AxisHints::new_y().formatter(|mark, _l, _| scientific_notation(mark.value, true))]) + } + }; + + plot.show(ui, |plot_ui| { + for i in 0..self.plot_data.len() { + plot_ui.line(Line::new(self.plot_data[i].points.clone()).name(self.plot_data[i].name.clone())); // is clone necessary? + } + }); + }); + } +} + +fn main() { + let mut app = App::default(); + app.calc_cache = calc::Cache::from_file("./gauss_quad_lut.morello").unwrap(); + // let x_values: Vec = (0..app.n_points).map(|x| -> f64 {f64::from(x) * ((app.b - app.a) / f64::from(app.n_points)) + app.a}).collect(); + // let t0 = Instant::now(); + // let y_values_phi0: Vec = x_values.iter().map(|&x| calc::phi0(&mut app.calc_cache, x, app.n_omnes, app.n_phi0)).collect(); + // std::hint::black_box(&y_values_phi0); + // println!("{:?}", t0.elapsed()); + + eframe::run_native("Morellus", eframe::NativeOptions::default(), Box::new(|_cc| Box::new(app))).unwrap(); +} + +fn log_map(x:f64) -> f64 { + x.floor() + (1.0 + (x - x.floor()) * 10.0).log10() +} + +fn inverse_log_map(x:f64) -> f64 { + x.floor() + (10f64.powf(x - x.floor()) - 1.0) / 10.0 +} + +fn scientific_notation(x:f64, log:bool) -> String { + if log { + format!("{}*10^{}", format!( + "{:.15}", 10f64.powf(x - x.floor())) + .trim_end_matches('0').trim_end_matches('.').to_string(), + x.floor()).to_string() + } else { + format!("{:.9}", x).trim_end_matches('0').trim_end_matches('.').to_string() + } +} + +fn int_text_edit_singleline(ui: &mut egui::Ui, value: &mut u32) -> egui::Response { + let mut tmp_value = format!("{}", value); + let res = ui.text_edit_singleline(&mut tmp_value); + if let Ok(result) = tmp_value.parse::() { + *value = result; + } + res +} + +fn float_text_edit_singleline(ui: &mut egui::Ui, value: &mut f64) -> egui::Response { + let mut tmp_value = format!("{}", value); + let res = ui.text_edit_singleline(&mut tmp_value); + if let Ok(result) = tmp_value.parse::() { + *value = result; + } + res +} \ No newline at end of file diff --git a/bachelorarbeit/text.txt b/bachelorarbeit/text.txt new file mode 100644 index 0000000..d2f608a --- /dev/null +++ b/bachelorarbeit/text.txt @@ -0,0 +1,19 @@ +BTreeMap: 1.2234s + phi0_integrand: + omnes: 29.30% + get: 22.87% + integrate_complex: 5.01% + delta_with_lut + get: 2.50% + omnes_integrand: 37.98% + delta_with_lut -> get: 22.20% + +HashMap: 1.0767s + phi0_integrand: + omnes: 35.22% + get: 30.40% + integrate_complex: 3.95% + delta_with_lut + get: 1.88% + omnes_integrand: 27.21% + delta_with_lut -> get: 14.03% diff --git a/calc.py b/calc.py new file mode 100644 index 0000000..c445eff --- /dev/null +++ b/calc.py @@ -0,0 +1,34 @@ +import math + +m_e = 9.10938e-31 +e = 1.602e-19 +pi = 3.141592 +epsilon_0 = 8.854e-12 +h_bar = 1.05457e-34 +h=6.626e-34 +c=299792458 +my_B=9.274e-24 +k_B=1.381e-23 +avog=6.022e26 +m_Kalium=39.0983/avog + +def E(n): + return -m_e*e**4 / (2*(4*pi*epsilon_0*h_bar*n)**2) + +def dE(n1,n2): + return -m_e*e**4 / (2*(4*pi*epsilon_0*h_bar)**2) * (1/n2**2 - 1/n1**2) + +def lamb(E1,E2): + return c*h*(E1-E2)**-1 + +# print(E(3)) +# print(E(2)) +# print(lamb(E(3),E(2)-2*my_B*2)*10**9) +Ekin = 3/2*k_B*600 +v_x = math.sqrt(2*Ekin/m_Kalium) +t_acc = 0.2 / v_x +F = my_B * 2 +d = 1/2*F/m_Kalium*t_acc**2 +v_z_end = F/m_Kalium*t_acc +print(v_z_end/v_x) +print(1.492+0.1492) \ No newline at end of file diff --git a/ersterTest.py b/ersterTest.py new file mode 100644 index 0000000..269cc1a --- /dev/null +++ b/ersterTest.py @@ -0,0 +1,280 @@ +import numpy as np +import matplotlib.pyplot as plt +from scipy.special import roots_legendre +import cmath +from time import time + +# constant values (GeV) + +M_roh = 0.7736 +M_pi = 0.13957 +s_0 = 4*M_pi**2 +M_K = 0.496 +B_0 = 1.055 +B_1 = 0.15 +lambda_1 = 1.57 +lambda_2 = -1.96 +lambda_high = 10 +epsilon = 0.000000001 +s_mid_high = 1.42**2 # this is the s value, so it is in GeV^2 + +# derivative values +lambda_0 = 0 # this is fixed by the low energy parametrization: lambda_0 = delta1_low(4M_K**2) (sqrt(s)=2M_K) +delta1_mid_high = 0 # again, this is fixed by the value of delta1_mid at 1.42 GeV (see later in the code) + +# Numerical constants +gl_n_omnes = 100 # number of points used in the Gauss Legendre Integration +gl_n_phi0 = 100 + +gl_lookup = {} +omnes_lookup = {} +delta_lookup = {} + +# Print iterations progress +def printProgressBar (iteration, total, prefix = '', suffix = '', decimals = 1, length = 100, fill = '█', printEnd = "\r"): + """ + Call in a loop to create terminal progress bar + @params: + iteration - Required : current iteration (Int) + total - Required : total iterations (Int) + prefix - Optional : prefix string (Str) + suffix - Optional : suffix string (Str) + decimals - Optional : positive number of decimals in percent complete (Int) + length - Optional : character length of bar (Int) + fill - Optional : bar fill character (Str) + printEnd - Optional : end character (e.g. "\r", "\r\n") (Str) + """ + percent = ("{0:." + str(decimals) + "f}").format(100 * (iteration / float(total))) + filledLength = int(length * iteration // total) + bar = fill * filledLength + '-' * (length - filledLength) + print(f'\r{prefix} |{bar}| {percent}% {suffix}', end = printEnd) + # Print New Line on Complete + if iteration == total: + print() + +''' the standard implementation of arctan gives angles in (-pi/2, pi/2). This gives angles in (0, pi). Note: This doesn't imply a simple shift of all values by pi, but a transposition of the results from (-pi/2, 0) to (pi/2, pi).''' +def arctan_shift(x): + atan_std = np.arctan(x) + if atan_std < 0: + return atan_std + np.pi + return atan_std + +def log_shift(x): + log_std = cmath.log(x) + if log_std.imag < 0: + return 2*np.pi*1j + log_std + else: + return log_std + +def omega(s): + # in this instance, Elena uses s_0**(1/2) = 1.05 GeV, but later she uses s_0 = 4*M_pi**2 + a = np.sqrt(s) + b = np.sqrt(1.05**2 - s) + return (a - b) / (a + b) + + +# ---------------- +# Delta function section +# ---------------- + +def k(s): + return np.sqrt(s/4-M_pi**2) + +def delta1_low(s): + #a = np.sqrt(s) / (2*k(s)**3) * (M_roh**2 - s) * ( (2*M_pi**3) / (M_roh**2*np.sqrt(s)) + B_0 + B_1*omega(s) ) + return arctan_shift((np.sqrt(s) / (2*k(s)**3) * (M_roh**2 - s) * ( (2*M_pi**3)/(M_roh**2*np.sqrt(s)) + B_0 + B_1*omega(s)))**-1) + +def delta1_mid(s): + return lambda_0 + lambda_1 * (0.5*np.sqrt(s) / M_K - 1) + lambda_2 * (0.5*np.sqrt(s) / M_K - 1)**2 + +def delta1_high(s): + return np.pi + (delta1_mid_high - np.pi) * (lambda_high**2 + s_mid_high) / (lambda_high**2 + s) + + +def delta(s): + # if s in delta_lookup: + # return delta_lookup[s] + # if s < (2*M_K)**2: + # delta_lookup[s] = delta1_low(s) + # elif s < s_mid_high: + # delta_lookup[s] = delta1_mid(s) + # else: + # delta_lookup[s] = delta1_high(s) + # return delta_lookup[s] + if s < (2*M_K)**2: + return delta1_low(s) + elif s < s_mid_high: + return delta1_mid(s) + else: + return delta1_high(s) + + +# set cutoff values +lambda_0 = delta1_low((2*M_K)**2) +delta1_mid_high = delta1_mid(s_mid_high) + + +# ---------------- +# Omnes Integral section +# ---------------- + +delta_time = 0 + +def omnes_integrand(s_tick,s): + global delta_time + delta_s_tick = delta(s_tick) + delta_s = delta(s) + return (delta_s_tick - delta_s)/(s_tick*(s_tick-s+epsilon*1j)) + + +def integral_gl(f,s,a,b,n, prog=False): + if n not in gl_lookup: + # print("now calculating roots, weights") + t0 = time() + gl_lookup[n] = roots_legendre(n) + #print("time to calculate roots and weights with n={}: {} seconds".format(n,time() - t0)) + roots, weights = gl_lookup[n] + sum = 0 + for i in range(n): + if prog: + printProgressBar(i,n) + sum += weights[i]*f(roots[i]*(b-a)/2 + (a+b)/2,s) + sum *= (b-a)/2 + return sum + +def subst(f, phi, phi_deriv): + return lambda x,s : f(phi(x),s)*phi_deriv(x) + +def integral_gl_tan_reparam(f,s,a,b,n, prog=False): + return integral_gl(subst(f,np.tan,lambda x : (1 / np.cos(x)**2)),s,np.arctan(a),np.pi / 2,n,prog) + +def omnes(s, a=s_0, inf = 10000000000, optimized = True, n = gl_n_omnes): + if s in omnes_lookup: + return omnes_lookup[s] + elif optimized: + analyt = delta(s) / s * cmath.log(((inf-s-epsilon*1j)*a) / ((a-s-epsilon*1j)*inf)) + res = cmath.exp(s/np.pi*(integral_gl_tan_reparam(omnes_integrand,s,a,inf,n) + analyt)) + #omnes_lookup[s] = res + return res + else: + res = cmath.exp(s/np.pi*(integral_gl(omnes_integrand,s,a,inf,n)+delta(s) / s * cmath.log(((inf-s-epsilon*1j)*a) / ((a-s-epsilon*1j)*inf)))) + #omnes_lookup[s] = res + return res + # A more easily readible version of the formula + # if optimized == True: + # m = integral_gl_tan_reparam(omnes_integrand,s,a,inf,n)- + # else: + # m = integral_gl(omnes_integrand,s,a,inf,n) + # n = ((inf-s-epsilon*1j)*a) / ((a-s-epsilon*1j)*inf) + # p = delta(s) / s * cmath.log(n) + # omnes_lookup[s] = cmath.exp(s/np.pi*(m+p)) + # if s > 0.74**2 and s < 0.76**2: + # print(s, m, n, p, cmath.exp(s/np.pi*(m+p))) + # return cmath.exp(s/np.pi*(m+p)) + +# ---------------- +# Phase reconstruction section +# ---------------- + +def phi0_integrand_bad(s_tick, s): + omnes_s = omnes(s) + omnes_s_tick = omnes(s_tick) + #a = np.log(cmath.polar(omnes_s_tick / omnes_s)[0]**2) + #b = np.sqrt(s_tick - s_0) * s_tick * (s_tick - s) + return np.log(cmath.polar(omnes_s_tick / omnes_s)[0]**2) / (np.sqrt(s_tick - s_0) * s_tick * (s_tick - s)) + +def phi0_integrand(x, s): + omnes_s = omnes(s) + omnes_x = omnes(x**2 + s_0) + + #a = np.log(cmath.polar(omnes_s_tick / omnes_s)[0]**2) + #b = np.sqrt(s_tick - s_0) * s_tick * (s_tick - s) + return 2*np.log(cmath.polar(omnes_x / omnes_s)[0]**2) / ((s_0 + x**2) * (s_0 + x**2 - s)) + +def phi0(s, a=0, inf = 100000, optimized = True, n = gl_n_phi0): + c = np.pi / (s * np.sqrt(s_0)) * np.log(cmath.polar(omnes(s))[0]**2) + + if optimized == True: + integral = integral_gl_tan_reparam(phi0_integrand, s, a, inf, n, False) + else: + integral = integral_gl(phi0_integrand, s, a, inf, n) + return -s * np.sqrt(s-s_0) / (2*np.pi) * (integral - c) + +# ---------------- +# Plotting section +# ---------------- + + +fig, ax = plt.subplots() + +# these are sqrt(s) values, not s +x = np.linspace(s_0**0.5+0.001,3,500) +#x = np.linspace(0.7, 0.85, 500) +x_to_pi2 = np.linspace(np.arctan(s_0)**0.5+0.001,(np.pi/2)**0.5,5000) + +y_delta = [delta(i**2) for i in x] +#y1 = [cmath.polar(omnes_integrand(i**2,0.73))[0]**2 for i in x] +#y2 = [cmath.polar(omnes_integrand(i**2,0.73965))[0]**2 for i in x] +#y3 = [cmath.polar(omnes_integrand(i**2,0.75))[0]**2 for i in x] +#y_omnes_integrand_tan = [cmath.polar(omnes_integrand(np.tan(i**2),2) / np.cos(i**2)**2)[0]**2 for i in x_to_pi)] +#y_omnes_acc = [cmath.polar(omnes(i**2, optimized=True))[0]**2 for i in x] +#y_omnes_best = [cmath.polar(omnes(i**2, inf=10000, n = 10000))[0]**2 for i in x] +#y_phi0_integrand = [phi0_integrand(i**2, 2) for i in x] +#y_phi0_integrand_tan = [phi0_integrand(np.tan(i**2), 0.8)*1/np.cos(i**2)**2 for i in x_to_pi2] +#y_phi0_integrand_tan2 = [phi0_integrand(np.tan(i**2), 10000)*1/np.cos(i**2)**2 for i in x_to_pi2] +#y_phi0_integrand2 = [phi0_integrand(i**2, 0.8035457451490298) for i in x_phi0] + +''' +for n in [10,100,1000,10000]: + print("Phi0 for n_omnes={}, n_phi0={}: {}".format(gl_n_omnes, n, phi0(100**2, n=n))) +''' + +''' +n_values = [10,100,1000,10000,100000] +y_phi0 = [[] for _ in n_values] +for (i_n,n) in enumerate(n_values): + +# for (i,val) in enumerate(x): +# y_phi0[i_n].append(phi0(val**2, n = n)) +# printProgressBar(i,len(x)) + print("Ready with {}".format(n)) + print() +''' +# Test sensitivity of phi0 to n compared to omnes +''' +n_values = np.arange(5, 4000, 25) +y_omnes_n_cmp = [cmath.polar(omnes(0.8**2, n=i))[0]**2 for i in n_values] +y_phi0_n_cmp = [phi0(0.8**2, n=i) for i in n_values] +ax.plot(n_values, y_omnes_n_cmp, label = "omnes") +ax.plot(n_values, y_phi0_n_cmp, label = "phi0") +''' + +ax.plot(x, y_delta, label = r"$\delta$") +#ax.plot(x, y2, label = "delta") +#ax.plot(x, y3, label = "delta") +#ax.plot(x_to_pi2, y_omnes_integrand_tan, label = r"$\Omega$ integrand w/ tan-param.") +#ax.plot(x, y_omnes, label = r'${|\Omega (s)|}^2$') +#ax.plot(x, y_omnes_acc, label = r'${|\Omega (s)|}^2$, reparam') +#ax.plot(x, y_omnes_best, label = r'${|\Omega (s)|}^2$, but best') +#ax.plot(x, y_phi0_integrand, label = r'$\phi_0$ Integrand') +#ax.plot(x_to_pi2, y_phi0_integrand_tan, label = r'$\phi_0$ integrand w/ tan-param.') +#ax.plot(x_to_pi2, y_phi0_integrand_tan2, label = r'$\phi_0$ integrand w/ tan-param, s=10000.') +#ax.plot(x_phi0, y_phi0_integrand2, label = r'$\phi_0$ Integrand2') +#for (i,y) in enumerate(y_phi0): + #ax.plot(x, y, label = r'$\phi_0, n={}$'.format(i)) + +# t0 = time() +# y_phi0 = [phi0(i**2) for i in x] +# ax.plot(x, y_phi0) +# print(time() - t0) + +t0 = time() +print(phi0(10000, n=100)) +print(time() - t0) + +# ax.legend() +# #plt.yscale('log') +# ax.grid(which='major', color='#A4A4A4', linewidth=1) +# ax.grid(which='minor', color='#B5B5B5', linestyle=':', linewidth=0.5) +# ax.minorticks_on() +# plt.show() \ No newline at end of file